
<!doctype html>
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if IE 9 ]> <html class="ie9 no-js"> <![endif]-->
<!-- [if (gt IE 9)|!(IE)]><! -->
<html class="no-js">
  <!-- <![endif] -->
  <head><meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">
    <meta name="apple-itunes-app" content="app-id=1576832504">
  
  <!-- Title and description -->
 
     
      <title>MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru</title>
    
    
      <meta name="description" content="Rekomendasi situs slot777 online MI77 kini hadir sebagai link permainan putaran terlengkap paling baru dengan koleksi game slot terbaru yang menghadirkan akses cepat dan stabil serta pengalaman bermain modern yang diperbarui setiap hari.">
    <link rel="amphtml" href="https://rave-reviews.pages.dev/" />
    <link rel="canonical" href="https://www.houseonthehillaustin.com/home/rave-reviews/">
    <!-- /snippets/social-meta-tags.liquid -->


  <meta property="og:type" content="product">
  <meta property="og:title" content="MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru">
  
    <meta property="og:image" content="https://i.ibb.co/HfX5MwBj/slotmi77.webp">
    <meta property="og:image:secure_url" content="https://i.ibb.co/HfX5MwBj/slotmi77.webp">
  
    <meta property="og:image" content="https://i.ibb.co/HfX5MwBj/slotmi77.webp">
    <meta property="og:image:secure_url" content="https://i.ibb.co/HfX5MwBj/slotmi77.webp">
  
    <meta property="og:image" content="https://i.ibb.co/HfX5MwBj/slotmi77.webp">
    <meta property="og:image:secure_url" content="https://i.ibb.co/HfX5MwBj/slotmi77.webp">
  
  <meta property="og:description" content="Rekomendasi situs slot777 online MI77 kini hadir sebagai link permainan putaran terlengkap paling baru dengan koleksi game slot terbaru yang menghadirkan akses cepat dan stabil serta pengalaman bermain modern yang diperbarui setiap hari.">
  <meta property="og:price:amount" content="277,700">
  <meta property="og:price:currency" content="IDR">

<meta property="og:url" content="https://www.houseonthehillaustin.com/home/rave-reviews/">
<meta property="og:site_name" content="MI77">



  <meta name="twitter:site" content="@outerbloom">


  <meta name="twitter:card" content="summary">


  <meta name="twitter:title" content="MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru">
  <meta name="twitter:description" content="Rekomendasi situs slot777 online MI77 kini hadir sebagai link permainan putaran terlengkap paling baru dengan koleksi game slot terbaru yang menghadirkan akses cepat dan stabil serta pengalaman bermain modern yang diperbarui setiap hari.">
  <meta name="twitter:image" content="https://i.ibb.co/HfX5MwBj/slotmi77.webp">
  <meta name="twitter:image:width" content="600">
  <meta name="twitter:image:height" content="600">



      <link rel="shortcut icon" href="https://i.ibb.co/B5gCWF8T/iconnyami77.png" type="image/png">
    
    <meta name="theme-color" content="#212121">
    <link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700&family=Poppins&display=swap" rel="stylesheet">
    
    <link href="//outerbloom.com/cdn/shop/t/138/assets/custom-styles.css?v=94643080714485117621752652418" rel="stylesheet" type="text/css" media="all" />
    
    <link rel="stylesheet" href="//outerbloom.com/cdn/shop/t/138/assets/wishlist-styles.css?v=26657665320743256831769518695">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css"><script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
    <script
      src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js"
      integrity="sha512-57oZ/vW8ANMjR/KQ6Be9v/+/h6bq9/l3f0Oc7vn6qMqyhvPd1cvKBRWWpzu0QoneImqr2SkmO4MSqU+RpHom3Q=="
      crossorigin="anonymous"
      referrerpolicy="no-referrer"
    ></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js" async="async"></script>
    <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script><!-- Facebook Pixel Code -->
    <script>
      !function(f,b,e,v,n,t,s)
      {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
      n.callMethod.apply(n,arguments):n.queue.push(arguments)};
      if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
      n.queue=[];t=b.createElement(e);t.async=!0;
      t.src=v;s=b.getElementsByTagName(e)[0];
      s.parentNode.insertBefore(t,s)}(window, document,'script',
      'https://connect.facebook.net/en_US/fbevents.js');
      fbq('init', '165971065669324');
      fbq('track', 'PageView');
    </script>
    <noscript
      ><img
        height="1"
        width="1"
        style="display:none"
        src="https://www.facebook.com/tr?id=165971065669324&ev=PageView&noscript=1"
    ></noscript>
    <!-- End Facebook Pixel Code -->

    <!-- Google G4 Script - Disabled by developer (William) to prioritize Mobile App tracking -->
    <!--
      Global site tag (gtag.js) - Google Analytics --
          <script async src="https://www.googletagmanager.com/gtag/js?id=G-X26HYP4083"></script>
          <script>
            window.dataLayer = window.dataLayer || [];
            function gtag(){dataLayer.push(arguments);}
            gtag('js', new Date());
  
            gtag('config', 'G-X26HYP4083');
          </script>
      <!-- Global site tag (gtag.js) - Google Analytics
    -->
    
    
  
    <script src="//cdnjs.cloudflare.com/ajax/libs/vissense/0.9.0/vissense.js" defer></script>
  
    <!-- Bing UET -->
    <script>
      (function(w,d,t,r,u)
      {
          var f,n,i;
          w[u]=w[u]||[],f=function()
          {
              var o={ti:"343051754", tm:"shpfy_ui", enableAutoSpaTracking: true};
              o.q=w[u],w[u]=new UET(o),w[u].push("pageLoad")
          },
          n=d.createElement(t),n.src=r,n.async=1,n.onload=n.onreadystatechange=function()
          {
              var s=this.readyState;
              s&&s!=="loaded"&&s!=="complete"||(f(),n.onload=n.onreadystatechange=null)
          },
          i=d.getElementsByTagName(t)[0],i.parentNode.insertBefore(n,i)
      })
      (window,document,"script","//bat.bing.com/bat.js","uetq");
    </script>
    <script>
      window.uetq = window.uetq || [];
      window.uetq.push('event', '', {"revenue_value":0,"currency":"IDR"});
    </script>
    <!-- End Bing UET -->
  
    <!-- Microsoft Clarity -->
    <script type="text/javascript">
      (function(c,l,a,r,i,t,y){
          c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
          t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
          y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
      })(window, document, "clarity", "script", "h7rbxqry9k");
    </script>
    <!-- End Microsoft Clarity -->

    <!-- Apollo Script - Tracking Visitor -->
    <script>
      function initApollo(){var n=Math.random().toString(36).substring(7),o=document.createElement("script");
      o.src="https://assets.apollo.io/micro/website-tracker/tracker.iife.js?nocache="+n,o.async=!0,o.defer=!0,
      o.onload=function(){window.trackingFunctions.onLoad({appId:"68805f12b2074b001d43bfd8"})},
      document.head.appendChild(o)}initApollo();
    </script>
    <!-- End Apollo Script - Tracking Visitor -->


<link href="//outerbloom.com/cdn/shop/t/138/assets/combine.min.css?v=36663939493595550161770794813" rel="stylesheet" type="text/css" media="all" />

<link href="//outerbloom.com/cdn/shop/t/138/assets/font-awesome.css?v=132324219581463622051752652421" rel="stylesheet" type="text/css" media="all" />
<link rel="stylesheet" href="//code.jquery.com/ui/1.13.0/themes/base/jquery-ui.min.css">

<script src="//code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<script src="//outerbloom.com/cdn/shop/t/138/assets/combine.js?v=140218079523075729301752652421" type="text/javascript"></script>
<script src="//code.jquery.com/ui/1.13.0/jquery-ui.min.js"></script>
    <script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/15896833/digital_wallets/dialog">
<link rel="alternate" type="application/json+oembed" href="https://www.houseonthehillaustin.com/home/rave-reviews/.oembed">
<script async="async" src="/checkouts/internal/preloads.js?locale=en-ID"></script>
<script id="shopify-features" type="application/json">{"accessToken":"d2e176e59f6658d5056234d6249b3ab4","betas":["rich-media-storefront-analytics"],"domain":"outerbloom.com","predictiveSearch":true,"shopId":15896833,"locale":"en"}</script>
<script>var Shopify = Shopify || {};
Shopify.shop = "outerbloom1.myshopify.com";
Shopify.locale = "en";
Shopify.currency = {"active":"IDR","rate":"1.0"};
Shopify.country = "ID";
Shopify.theme = {"name":"web-outerbloom-shopify\/main","id":153139282135,"schema_name":null,"schema_version":null,"theme_store_id":null,"role":"main"};
Shopify.theme.handle = "null";
Shopify.theme.style = {"id":null,"handle":null};
Shopify.cdnHost = "outerbloom.com/cdn";
Shopify.routes = Shopify.routes || {};
Shopify.routes.root = "/";</script>
<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
<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>
<script id="shop-js-analytics" type="application/json">{"pageType":"product"}</script>
<script defer="defer" async type="module" src="//outerbloom.com/cdn/shopifycloud/shop-js/modules/v2/client.init-shop-cart-sync_D6mOgvqp.en.esm.js"></script>
<script defer="defer" async type="module" src="//outerbloom.com/cdn/shopifycloud/shop-js/modules/v2/chunk.common_D09lIwZG.en.esm.js"></script>
<script defer="defer" async type="module" src="//outerbloom.com/cdn/shopifycloud/shop-js/modules/v2/chunk.modal_CMCqeMIe.en.esm.js"></script>
<script type="module">
  await import("//outerbloom.com/cdn/shopifycloud/shop-js/modules/v2/client.init-shop-cart-sync_D6mOgvqp.en.esm.js");
await import("//outerbloom.com/cdn/shopifycloud/shop-js/modules/v2/chunk.common_D09lIwZG.en.esm.js");
await import("//outerbloom.com/cdn/shopifycloud/shop-js/modules/v2/chunk.modal_CMCqeMIe.en.esm.js");

  window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});

</script>
<script>(function() {
  var isLoaded = false;
  function asyncLoad() {
    if (isLoaded) return;
    isLoaded = true;
    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"];
    for (var i = 0; i < urls.length; i++) {
      var s = document.createElement('script');
      s.type = 'text/javascript';
      s.async = true;
      s.src = urls[i];
      var x = document.getElementsByTagName('script')[0];
      x.parentNode.insertBefore(s, x);
    }
  };
  if(window.attachEvent) {
    window.attachEvent('onload', asyncLoad);
  } else {
    window.addEventListener('load', asyncLoad, false);
  }
})();</script>
<script id="__st">var __st={"a":15896833,"offset":25200,"reqid":"c74d6991-0fd2-48e3-ae7e-d2db8399c649-1772506322","pageurl":"outerbloom.com\/collections\/buket-bunga\/products\/signature-midnight-kiss-bouquet-classic","u":"0e5e92e78dde","p":"product","rtyp":"product","rid":8262739886295};</script>
<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
<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>
<script integrity="sha256-4kQ18oKyAcykRKYeNunJcIwy7WH5gtpwJnB7kiuLZ1E=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//outerbloom.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-a0a9edcb.js" crossorigin="anonymous"></script>
<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)}};
</script>
<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
  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);
</script>
<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})}}));
</script>

<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
    <!-- /snippets/oldIE-js.liquid -->


<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js" type="text/javascript"></script>
<script src="//outerbloom.com/cdn/shop/t/138/assets/respond.min.js?v=52248677837542619231752652418" type="text/javascript"></script>
<link href="//outerbloom.com/cdn/shop/t/138/assets/respond-proxy.html" id="respond-proxy" rel="respond-proxy" />
<link href="//outerbloom.com/search?q=142e9156869335090161dced0ac98b64" id="respond-redirect" rel="respond-redirect" />
<script src="//outerbloom.com/search?q=142e9156869335090161dced0ac98b64" type="text/javascript"></script>
<![endif]-->



  
    
  <link href="https://cdn.shopify.com/extensions/019b5a94-a328-79ac-9b0a-d9abe0913c8c/bitbybit-google-signin-136/assets/app.css" rel="stylesheet" type="text/css" media="all">
<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
<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>
<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: ["2dca8a86","5476ea20","ed8389fc"],webPixelsConfigList: [{"id":"1830486231","configuration":"{\"pixelCode\":\"CECQHERC77UA05ON51U0\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"22e92c2ad45662f435e4801458fb78cc","type":"APP","apiClientId":4383523,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["3b5414a6"]},{"id":"870383831","configuration":"{\"accountID\":\"outerbloom1\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"e049d423f49471962495acbe58da1904","type":"APP","apiClientId":32196493313,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"824574167","configuration":"{\"shop\":\"outerbloom1.myshopify.com\", \"backend\": \"api.bitbybit.studio\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"36fb07b4b7984e6df0ea813e1dcb19ee","type":"APP","apiClientId":28314632193,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"521994455","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\",\\\"GT-NFDPL5Q\\\"],\\\"target_country\\\":\\\"ID\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/RHfSCK6og9gZEMHe74Yp\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/YjjSCKiog9gZEMHe74Yp\\\"]},{\\\"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":"6f66f96a6f31ee0647c0d9c1a938f888","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"236060887","configuration":"{\"pixel_id\":\"165971065669324\",\"pixel_type\":\"facebook_pixel\",\"metaapp_system_user_token\":\"-\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"ca16bc87fe92b6042fbaa3acc2fbdaa6","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"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":277700.0,"currencyCode":"IDR"},"product":{"title":"MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru","vendor":"Outerbloom","id":"8262739886295","untranslatedTitle":"MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru","url":"\/products\/signature-midnight-kiss-bouquet-classic","type":"Bunga Outerbloom"},"id":"48262696042711","image":{"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-classic-Bouquet-Innocent-Pink.jpg?v=1771038360"},"sku":"[C]OBIBUN1236","title":"Innocent Pink","untranslatedTitle":"Innocent Pink"},{"price":{"amount":335000.0,"currencyCode":"IDR"},"product":{"title":"MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru","vendor":"Outerbloom","id":"8262739886295","untranslatedTitle":"MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru","url":"\/products\/signature-midnight-kiss-bouquet-classic","type":"Bunga Outerbloom"},"id":"48262693257431","image":{"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6.jpg?v=1771038360"},"sku":"[C]OBIBUN1205","title":"Fiery Red","untranslatedTitle":"Fiery Red"}],"purchasingCompany":null},},"https://outerbloom.com/cdn","3c1f2529w4065d210p03530cb8m151179d6",{"modern":"","legacy":""},{"shopId":"15896833","storefrontBaseUrl":"https:\/\/outerbloom.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"2dca8a86\", \"5476ea20\", \"ed8389fc\"]","isMerchantRequest":"false","hashVersion":"3c1f2529w4065d210p03530cb8m151179d6","publish":"custom","events":"[[\"page_viewed\",{}],[\"product_viewed\",{\"productVariant\":{\"price\":{\"amount\":277700.0,\"currencyCode\":\"IDR\"},\"product\":{\"title\":\"MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru\",\"vendor\":\"Outerbloom\",\"id\":\"8262739886295\",\"untranslatedTitle\":\"MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru\",\"url\":\"\/products\/signature-midnight-kiss-bouquet-classic\",\"type\":\"Bunga Outerbloom\"},\"id\":\"48262696042711\",\"image\":{\"src\":\"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-classic-Bouquet-Innocent-Pink.jpg?v=1771038360\"},\"sku\":\"[C]OBIBUN1236\",\"title\":\"Innocent Pink\",\"untranslatedTitle\":\"Innocent Pink\"}}]]"});</script><script>
  window.ShopifyAnalytics = window.ShopifyAnalytics || {};
  window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
  window.ShopifyAnalytics.meta.currency = 'IDR';
  var meta = {"product":{"id":8262739886295,"gid":"gid:\/\/shopify\/Product\/8262739886295","vendor":"Outerbloom","type":"Bunga Outerbloom","handle":"signature-midnight-kiss-bouquet-classic","variants":[{"id":48262696042711,"price":27770000,"name":"MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru - Innocent Pink","public_title":"Innocent Pink","sku":"[C]OBIBUN1236"},{"id":48262693257431,"price":33500000,"name":"MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru - Fiery Red","public_title":"Fiery Red","sku":"[C]OBIBUN1205"}],"remote":false},"page":{"pageType":"product","resourceType":"product","resourceId":8262739886295,"requestId":"c74d6991-0fd2-48e3-ae7e-d2db8399c649-1772506322"}};
  for (var attr in meta) {
    window.ShopifyAnalytics.meta[attr] = meta[attr];
  }
</script>
<script class="analytics">
  (function () {
    var customDocumentWrite = function(content) {
      var jquery = null;

      if (window.jQuery) {
        jquery = window.jQuery;
      } else if (window.Checkout && window.Checkout.$) {
        jquery = window.Checkout.$;
      }

      if (jquery) {
        jquery('body').append(content);
      }
    };

    var hasLoggedConversion = function(token) {
      if (token) {
        return document.cookie.indexOf('loggedConversion=' + token) !== -1;
      }
      return false;
    }

    var setCookieIfConversion = function(token) {
      if (token) {
        var twoMonthsFromNow = new Date(Date.now());
        twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);

        document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
      }
    }

    var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
    if (trekkie.integrations) {
      return;
    }
    trekkie.methods = [
      'identify',
      'page',
      'ready',
      'track',
      'trackForm',
      'trackLink'
    ];
    trekkie.factory = function(method) {
      return function() {
        var args = Array.prototype.slice.call(arguments);
        args.unshift(method);
        trekkie.push(args);
        return trekkie;
      };
    };
    for (var i = 0; i < trekkie.methods.length; i++) {
      var key = trekkie.methods[i];
      trekkie[key] = trekkie.factory(key);
    }
    trekkie.load = function(config) {
      trekkie.config = config || {};
      trekkie.config.initialDocumentCookie = document.cookie;
      var first = document.getElementsByTagName('script')[0];
      var script = document.createElement('script');
      script.type = 'text/javascript';
      script.onerror = function(e) {
        var scriptFallback = document.createElement('script');
        scriptFallback.type = 'text/javascript';
        scriptFallback.onerror = function(error) {
                var Monorail = {
      produce: function produce(monorailDomain, schemaId, payload) {
        var currentMs = new Date().getTime();
        var event = {
          schema_id: schemaId,
          payload: payload,
          metadata: {
            event_created_at_ms: currentMs,
            event_sent_at_ms: currentMs
          }
        };
        return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
      },
      sendRequest: function sendRequest(endpointUrl, payload) {
        // Try the sendBeacon API
        if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
          var blobData = new window.Blob([payload], {
            type: 'text/plain'
          });

          if (window.navigator.sendBeacon(endpointUrl, blobData)) {
            return true;
          } // sendBeacon was not successful

        } // XHR beacon

        var xhr = new XMLHttpRequest();

        try {
          xhr.open('POST', endpointUrl);
          xhr.setRequestHeader('Content-Type', 'text/plain');
          xhr.send(payload);
        } catch (e) {
          console.log(e);
        }

        return false;
      },
      isIos12: function isIos12() {
        return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
      }
    };
    Monorail.produce('monorail-edge.shopifysvc.com',
      'trekkie_storefront_load_errors/1.1',
      {shop_id: 15896833,
      theme_id: 153139282135,
      app_name: "storefront",
      context_url: window.location.href,
      source_url: "//outerbloom.com/cdn/s/trekkie.storefront.eaf01eafdeaab02c121702cfbc61d1098a26bab9.min.js"});

        };
        scriptFallback.async = true;
        scriptFallback.src = '//outerbloom.com/cdn/s/trekkie.storefront.eaf01eafdeaab02c121702cfbc61d1098a26bab9.min.js';
        first.parentNode.insertBefore(scriptFallback, first);
      };
      script.async = true;
      script.src = '//outerbloom.com/cdn/s/trekkie.storefront.eaf01eafdeaab02c121702cfbc61d1098a26bab9.min.js';
      first.parentNode.insertBefore(script, first);
    };
    trekkie.load(
      {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":15896833,"isMerchantRequest":null,"themeId":153139282135,"themeCityHash":"11250444734202683250","contentLanguage":"en","currency":"IDR","eventMetadataId":"676ca60e-28d0-43d5-a650-089833f32911"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["65f19447","b5387b81"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}}
    );

    var loaded = false;
    trekkie.ready(function() {
      if (loaded) return;
      loaded = true;

      window.ShopifyAnalytics.lib = window.trekkie;

      var originalDocumentWrite = document.write;
      document.write = customDocumentWrite;
      try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
      document.write = originalDocumentWrite;

      window.ShopifyAnalytics.lib.page(null,{"pageType":"product","resourceType":"product","resourceId":8262739886295,"requestId":"c74d6991-0fd2-48e3-ae7e-d2db8399c649-1772506322","shopifyEmitted":true});

      var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
      var token = match? match[1]: undefined;
      if (!hasLoggedConversion(token)) {
        setCookieIfConversion(token);
        window.ShopifyAnalytics.lib.track("Viewed Product",{"currency":"IDR","variantId":48262696042711,"productId":8262739886295,"productGid":"gid:\/\/shopify\/Product\/8262739886295","name":"MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru - Innocent Pink","price":"277700.00","sku":"[C]OBIBUN1236","brand":"Outerbloom","variant":"Innocent Pink","category":"Bunga Outerbloom","nonInteraction":true,"remote":false},undefined,undefined,{"shopifyEmitted":true});
      window.ShopifyAnalytics.lib.track("monorail:\/\/trekkie_storefront_viewed_product\/1.1",{"currency":"IDR","variantId":48262696042711,"productId":8262739886295,"productGid":"gid:\/\/shopify\/Product\/8262739886295","name":"MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru - Innocent Pink","price":"277700.00","sku":"[C]OBIBUN1236","brand":"Outerbloom","variant":"Innocent Pink","category":"Bunga Outerbloom","nonInteraction":true,"remote":false,"referer":"https:\/\/outerbloom.com\/collections\/buket-bunga\/products\/signature-midnight-kiss-bouquet-classic"});
      }
    });


        var eventsListenerScript = document.createElement('script');
        eventsListenerScript.async = true;
        eventsListenerScript.src = "//outerbloom.com/cdn/shopifycloud/storefront/assets/shop_events_listener-3da45d37.js";
        document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);

})();</script>
  <script>
  if (!window.ga || (window.ga && typeof window.ga !== 'function')) {
    window.ga = function ga() {
      (window.ga.q = window.ga.q || []).push(arguments);
      if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
        window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"});
      }
      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.");
    };
    if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
      window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"});
    }
  }
</script>
<script
  defer
  src="https://outerbloom.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.2.0.min.js"
  data-application="storefront-renderer"
  data-shop-id="15896833"
  data-render-region="gcp-asia-southeast1"
  data-page-type="product"
  data-theme-instance-id="153139282135"
  data-theme-name=""
  data-theme-version=""
  data-monorail-region="shop_domain"
  data-resource-timing-sampling-rate="10"
  data-shs="true"
  data-shs-beacon="true"
  data-shs-export-with-fetch="true"
  data-shs-logs-sample-rate="1"
  data-shs-beacon-endpoint="https://outerbloom.com/api/collect"
></script>
</head><body
    data-template="product"
    id="signature-midnight-kiss-bouquet-classic"
    class="template-product template-product"
  >
    <!-- Google Tag Manager (noscript) -->
    <noscript
      ><iframe
        src="https://www.googletagmanager.com/ns.html?id=GTM-MF9VVZX"
        height="0"
        width="0"
        style="display:none;visibility:hidden"
      ></iframe
    ></noscript>
    <!-- End Google Tag Manager (noscript) -->

    

    <div class="header-wrapper">
      
      <div id="shopify-section-NotifBar" class="shopify-section m-0">

<style>
  :root {--topbar-bg: #a89b90;}
  #notification {z-index: 99;width: 100%;transition: top 0.2s ease-in-out;}
  #notification.promo-up {top: -48px!important;}
  .promo-bg {width: 100%;padding: 6px 0;background-color: #a89b90;}
  .notification__message p {margin: 0;color: #f3f0e3;font-size: 14px!important;}
  .notification__message p a {text-decoration: underline;color: #ffffff;}
  @media (max-width: 991px){
    .notification__message p {font-size: 14px!important;}
  }
</style>
<input id="clearCookie" class="hide" type="button" value="Delete Cookie" />
<div id="notification" class="promo-down promo-bg pl-2 pr-2" data-text="3-days-only-get-25k-off-with-code-eidhome25-valid-until-5-march-min-purchase-of-500k">
  <div class="page-width notification__inner ">
    
    
    <div class="notification__message text-center">
      <p><strong>Platform Penyedia Game Slot777 Online Terlengkap Saat Ini</strong></p>
    </div>
  </div>
</div>




</div>
      <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=90475746808702572881770794809" rel="stylesheet" type="text/css" media="all" />


<header>
  <div class="container">
    <div class="header-container row justify-content-between pl-lg-0 pr-lg-0">
      <div class="header-icons header-icon-left col-3">
        <div id="menu-hamburger" class="d-lg-none">
          <svg xmlns="http://www.w3.org/2000/svg" width="16" height="10" viewBox="0 0 16 10" fill="none">
  <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="#212121"/>
</svg>

        </div>
        <div id="search-trigger" class="search-icon">
          <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
  <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="#212121"/>
</svg>

        </div>
      </div>

      <div class="logo col-6 text-center">
<img src="https://i.ibb.co/v4sY0dJx/logonyami77.png" alt="MI77" width="200" height="50" layout="fixed"></img>
      </div>

      <div class="header-icon-right header-icons col-3">
        <div class="icon icon-account-header d-none d-lg-block">
          <a href="/account">
            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="21" viewBox="0 0 20 21" fill="none">
  <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="#212121" stroke-linecap="round"/>
  <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="#212121" stroke-linecap="round"/>
</svg>

          </a>
        </div>
        <div class="icon icon-wishlist-header">
          <a href="/pages/wishlist">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none">
  <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.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="#212121"/>
</svg>

            
          </a>
        </div>
        <div class="icon icon-cart-header">
          <a href="/cart">
            <svg xmlns="http://www.w3.org/2000/svg" width="22" height="21" viewBox="0 0 22 21" fill="none">
  <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="#212121" stroke-linecap="round"/>
  <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="#212121"/>
</svg>

            <span class="cart-count">0</span>
          </a>
        </div>
      </div>
    </div>
  </div>
</header>

<nav class="nav-header">
  <div class="nav-account-mobile row m-0 d-lg-none">
    <div class="col-6 welcome-cust p-0">
      
        Hi Outerbloomer!
      
    </div>
    
      <div class="col-6 login-register text-right p-0">
        <a href="https://rave-reviews.pages.dev/">Log In</a> | <a href="https://rave-reviews.pages.dev/">Sign Up</a>
      </div>
    
  </div>
  <ul class="nav-menu container">
    
      <li id="new-arrival" class="">
        <a href="https://www.houseonthehillaustin.com/home/rave-reviews/">
          <span>MI77</span>
          
        </a>
        
      </li>
    
      <li id="flowers" class=" has-child">
        <a href="https://www.houseonthehillaustin.com/home/rave-reviews/">
          <span>MI 77</span>
          
        <span class="chevron-right d-lg-none">
          <svg width="8" height="12" viewBox="0 0 8 12" fill="none" xmlns="http://www.w3.org/2000/svg">
            <path d="M1 1L6 6L1 11" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
          </svg>
        </span>
          
        </a>
        
          <div class="megamenu with-images">
        <div class="container">
          <div class="menulinks">
            <ul class="dropdown-menu child m-0 three-links five-links">
          </div>
        </div>
          </div>
        
      </li>
    
      <li id="cakes-gifts" class=" has-child">
        <a href="https://www.houseonthehillaustin.com/home/rave-reviews/">
          <span>MI77 DAFTAR</span>
          
        <span class="chevron-right d-lg-none">
          <svg width="8" height="12" viewBox="0 0 8 12" fill="none" xmlns="http://www.w3.org/2000/svg">
            <path d="M1 1L6 6L1 11" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
          </svg>
        </span>
          
        </a>
        
          <div class="megamenu">
        <div class="container">
          <div class="menulinks">
            <ul class="dropdown-menu child m-0 five-links">
        </div>
          </div>
        
      </li>
    
      <li id="bunga-papan" class=" has-child">
        <a href="https://www.houseonthehillaustin.com/home/rave-reviews/">
          <span>MI77 LOGIN</span>
          
        <span class="chevron-right d-lg-none">
          <svg width="8" height="12" viewBox="0 0 8 12" fill="none" xmlns="http://www.w3.org/2000/svg">
            <path d="M1 1L6 6L1 11" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
          </svg>
        </span>
          
        </a>
        
          <div class="megamenu">
        <div class="container">
          <div class="menulinks">
            <ul class="dropdown-menu child m-0 five-links">
          
          </div>
        
      </li>
    
      <li id="occasions" class=" has-child">
        <a href="https://www.houseonthehillaustin.com/home/rave-reviews/">
          <span>LINK MI77</span>
          
        <span class="chevron-right d-lg-none">
          <svg width="8" height="12" viewBox="0 0 8 12" fill="none" xmlns="http://www.w3.org/2000/svg">
            <path d="M1 1L6 6L1 11" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
          </svg>
        </span>
          
        </a>
        
          <div class="megamenu">
        <div class="container">
          <div class="menulinks">
            <ul class="dropdown-menu child m-0 five-links">
          </div>
        
      </li>
    
      <li id="locations" class=" has-child">
        <a href="https://www.houseonthehillaustin.com/home/rave-reviews/">
          <span>MI77 SLOT</span>
          
        <span class="chevron-right d-lg-none">
          <svg width="8" height="12" viewBox="0 0 8 12" fill="none" xmlns="http://www.w3.org/2000/svg">
            <path d="M1 1L6 6L1 11" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
          </svg>
        </span>
          
        </a>
        
          <div class="megamenu">
        <div class="container">
          <div class="menulinks">
            <ul class="dropdown-menu child m-0 five-links">
          </div>
        
      </li>
    
  </ul>
</nav>
<div class="overlay-nav">
  <!-- Mobile Close Button in Overlay -->
  <button id="nav-close" class="nav-close-btn d-lg-none">
    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path d="M18 6L6 18M6 6L18 18" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
    </svg>
  </button>
</div>

<script>
  if ($(window).width() < 992) {
    // Level 1 menu accordion (main menu items)
    $(".nav-menu .has-child > a").click(function(e){
      e.preventDefault()
      const parentLi = $(this).parent()
      const isCurrentlyOpen = parentLi.hasClass("menu-open")
      
      // Close all other open menus (accordion behavior)
      $(".nav-menu .has-child").not(parentLi).removeClass("menu-open")
      $(".nav-menu .megamenu").not($(this).next(".megamenu")).slideUp()
      
      // Toggle current menu
      if (isCurrentlyOpen) {
        parentLi.removeClass("menu-open")
        $(this).next(".megamenu").slideUp()
      } else {
        parentLi.addClass("menu-open")
        $(this).next(".megamenu").slideDown()
      }
    })

    // Level 2 menu accordion (submenu items with grandchildren)
    $(document).on('click', '.dropdown-menu .has-submenu > a', function(e){
      e.preventDefault()
      const parentLi = $(this).parent()
      const isCurrentlyOpen = parentLi.hasClass("submenu-open")
      const grandchild = $(this).next(".grandchild")
      
      // Close all other open submenus in the same dropdown (accordion behavior)
      parentLi.siblings('.has-submenu').removeClass("submenu-open")
      parentLi.siblings('.has-submenu').find('.grandchild').slideUp()
      parentLi.siblings('.has-submenu').find('.chevron-right').css('transform', 'rotate(0deg)')
      
      // Toggle current submenu
      if (isCurrentlyOpen) {
        parentLi.removeClass("submenu-open")
        grandchild.slideUp()
        $(this).find('.chevron-right').css('transform', 'rotate(0deg)')
      } else {
        parentLi.addClass("submenu-open")
        grandchild.slideDown()
        $(this).find('.chevron-right').css('transform', 'rotate(90deg)')
      }
    })

    $("#menu-hamburger").click(function(e){
      e.preventDefault()
      $("body").toggleClass("nav_open")
    })
    
    // Handle close button click
    $("#nav-close").click(function(e){
      e.preventDefault()
      $("body").removeClass("nav_open")
      // Close all open menus when close button is clicked
      $(".nav-menu .has-child").removeClass("menu-open")
      $(".nav-menu .megamenu").slideUp()
      $(".dropdown-menu .has-submenu").removeClass("submenu-open")
      $(".dropdown-menu .grandchild").slideUp()
      $(".dropdown-menu .chevron-right").css('transform', 'rotate(0deg)')
    })
  }

  $(".overlay-nav").click(function(e){
      e.preventDefault()
      $("body").removeClass("nav_open")
      // Close all open menus when overlay is clicked
      $(".nav-menu .has-child").removeClass("menu-open")
      $(".nav-menu .megamenu").slideUp()
      $(".dropdown-menu .has-submenu").removeClass("submenu-open")
      $(".dropdown-menu .grandchild").slideUp()
      $(".dropdown-menu .chevron-right").css('transform', 'rotate(0deg)')
  })

  // Update cart count
  function updateCartCount() {
    fetch('/cart.js')
      .then(response => response.json())
      .then(cart => {
        const cartCount = cart.item_count;
        const cartCountEl = $('.cart-count');
        
        if (cartCount > 0) {
          cartCountEl.text(cartCount).show();
        } else {
          cartCountEl.hide();
        }
      })
      .catch(error => console.error('Error fetching cart:', error));
  }

  // Initialize cart count on page load
  $(document).ready(function() {
    updateCartCount();
    
    // Listen for cart changes
    document.addEventListener('cart-updated', updateCartCount);
  });
</script>


</div>

      <div id="shopify-section-search-popup" class="shopify-section m-0"><style>
  #search-trigger {
    cursor: pointer;
  }
  #search-popup {
    display: none;
    position: fixed;
    left: 0;
    width: 100%;
    top: 0;
    height: 100%;
    justify-content: center;
    z-index: 9999;
    background: rgb(196 196 196 / 30%);
  }
  #search-input {
    align-self: center;
    width: 100%;
    height: 80px;
    position: absolute;
    top: 0;
    border-bottom: 0.5px solid #A3A3A3;
    background-color: #fff;
  }
  #search-input * {
    align-self: center;
  }
  #search-type {
    width: 100%;
    border: none;
    padding-right: 20px;
    padding-left: 20px;
    font-size: 16px;
    color: #757575;
  }
  #search-btn {
    font-size: 16px;
    font-weight: 500;
  }
  #search-result {
    background-color: #fff;
    min-height: 490px;
    width: 100%;
    padding-top: 80px;
  }
  #search-result .container {
    padding: 20px 40px;
  }
  body.search-popup-open {
  /* .search-popup-open */
    overflow: hidden;
  }
  .search-popup-open #loc_delivery {
    display: none
  }
  .search-header svg {
    display: none;
    cursor: pointer;
  }
  .wrapper-search-popup {
    max-height: calc(100vh - 150px);
    overflow-y: auto;
    overflow-x: hidden;
  }

  .group-recommend {
    padding: 20px 40px;
  }

  .resultsearch {
    display: none;
  }
  .results { padding: 20px 40px }
  .resultsearch label {
    font-weight: 600;
    padding-bottom: 20px;
    display: block;
    margin-bottom: 20px;
    border-bottom: 1px solid #AAAAAA;
  }

  ul.result_collection {
    overflow: auto;
  }

  .skeleton-loader {
    padding: 10px 0;
  }

  .skeleton-item {
    height: 20px;
    background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
    background-size: 200% 100%;
    animation: loading 1.5s infinite;
    margin-bottom: 12px;
    border-radius: 4px;
  }

  .skeleton-product-card {
    display: flex;
    flex-direction: column;
    margin-bottom: 15px;
  }

  .skeleton-product-image {
    width: 100%;
    aspect-ratio: 1;
    background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
    background-size: 200% 100%;
    animation: loading 1.5s infinite;
    border-radius: 4px;
    margin-bottom: 10px;
  }

  .skeleton-product-title {
    height: 16px;
    background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
    background-size: 200% 100%;
    animation: loading 1.5s infinite;
    border-radius: 4px;
    margin-bottom: 8px;
  }

  .skeleton-product-price {
    height: 14px;
    width: 60%;
    background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
    background-size: 200% 100%;
    animation: loading 1.5s infinite;
    border-radius: 4px;
  }

  @keyframes loading {
    0% {
      background-position: 200% 0;
    }
    100% {
      background-position: -200% 0;
    }
  }

  ul.result_product {
    max-height: 400px;
    overflow: auto;
    list-style: none;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 15px;
  }

  ul.result_product li.item {
    margin-bottom: 0;
  }

  ul.result_product .item_url {
    display: block;
    text-decoration: none;
    color: inherit;
  }

  ul.result_product .product-card-search {
    display: flex;
    flex-direction: row;
    height: 100%;
    text-transform: uppercase;
    text-align: left;
    gap: 12px;
  }

  ul.result_product .product-image-search {
    width: 100px;
    height: 100px;
    flex-shrink: 0;
    object-fit: cover;
  }

  ul.result_product .product-info-search {
    display: flex;
    flex-direction: column;
    justify-content: center;
    flex: 1;
  }

  ul.result_product .product-title-search {
    font-size: 14px;
    line-height: 1.4;
    margin-bottom: 8px;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
  }

  ul.result_product .product-price-search {
    font-size: 13px;
    color: #666;
    font-weight: 500;
  }

  .group-promotion ul {
    margin: 0;
  }
  .group-promotion li {
    list-style: none;
    margin-bottom: 12px;
  }
  .group-promotion li a {
    color: inherit;
  }

  .group-recent {
    position: relative;
    padding: 20px 40px;
  }
  .group-recent ul {
    margin: 0;
  }
  .group-recent li {
    list-style: none;
    display: inline-block;
    margin-right: 60px;
  }
  .group-recent li a {
    color: inherit;
  }

  .last-search svg {
    width: 20px;
    vertical-align: middle;
  }
  ul.last-search a {
    vertical-align: middle;
    padding: 0 10px;
  }
  ul.last-search li span {
    cursor: pointer;
  }
  .delete-all-history {
    position: absolute;
    top: 25px;
    right: 40px;
    text-decoration: underline;
    color: #e11d1d;
    cursor: pointer;
    font-size: 12px;
  }

  form.search.search-modal__form {
    position: relative;
  }

  button.search__button svg {
    width: 25px;
    color: #495057;
    fill: #757582;
  }

  button.search__button.field__button {
    position: absolute;
    top: 50%;
    margin-top: -12px;
  }

  .close-search {
    display: none;
    position: absolute;
    right: 65px;
    top: 10px;
    cursor: pointer;
  }

  .site-overlay {
    position: fixed;
    top: 0;
    width: 100vw;
    height: 100vh;
    z-index: 1000;
    background: #0000005c;
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
    transition: all .3s linear;
    display: block !important;
  }

  .search-popup-open .site-overlay {
    opacity: 1;
    visibility: visible;
    pointer-events: all;
    z-index: -1;
    cursor: pointer;
  }

  @media (min-width: 991px) {
    .group-recent ul {
      column-count: 3;
    }
    .group-promotion li a {
      font-size: 12px;
      font-weight: 400;
    }
    .group-recent li a {
      font-size: 12px;
      font-weight: 400;
    }
    ul.result_product {
      grid-template-columns: repeat(3, 1fr);
      gap: 20px;
    }
  }

  .moreresult {
    padding: 10px 40px;
    border-top: 1px solid #AAAAAA;
  }
  .moreresult * {
    align-self: center;
  }
  .moreresult p {
    margin: 0;
    font-size: 12px !important;
  }
  .moreresult svg {
    width: 13px;
  }

  @media (max-width: 992px) {
    .icon-key-mobile {
        height: auto!important;
        width: 10px!important;
    }
    body.grid-view.search-popup-open .products {
      -ms-flex: 0 0 100%!important;
      flex: 0 0 100%!important;
      max-width: 100%!important;
    }
    button.search__button svg {
      width: 20px;
    }
    #search-result {
      padding-left: 0;
      padding-right: 0;
    }
    #search-result {
      padding-top: 55px;
    }
    #search-input {
      height: 55px;
    }
    .group-recommend {
      padding: 20px;
    }
    
    #search-type, #search-btn {
      font-size: 12px;
    }
    #search-input {
        height: 40px;
    }
    #search-result {
      padding-top: 40px;
    }
    .close-search {
      right: 50px;
      top: 6px;
    }
    #search-input svg {
      width: 15px;
    }
    .result_product li a {
      font-size: 12px;
    }
    ul.result_product li img {
      width: 110px !important;
    }
    .resultsearch label {
      font-size: 14px;
      margin-bottom: 15px;
      padding-bottom: 15px;
    }
    #search-input .container {
      padding: 0 20px;
    }
    #search-type {
      font-size: 14px;
    }
    #search-btn {
      font-size: 12px;
      text-decoration: underline;
    }
    .results {
      padding: 15px;
    }
    .group-recommend h3 {
      font-size: 16px;
    }
    .products .card-body {
      padding: 8px 0px 10px;
    }
    .moreresult {
      padding: 10px 20px;
    }    
    ul.result_product {
      grid-template-columns: repeat(1, 1fr);
      gap: 10px;
    }
    ul.result_product .product-image-search {
      width: 80px;
      height: 80px;
    }
    ul.result_product .product-card-search {
      gap: 10px;
    }
    ul.result_product .product-title-search {
      font-size: 12px;
      margin-bottom: 6px;
    }
    ul.result_product .product-price-search {
      font-size: 11px;
    }  
    .group-promotion li a {
      font-size: 14px;
    }
    ul.result_collection {
      max-height: 200px;
    }
  }
</style>
<div id="search-popup">
  <div id="search-input" class="row">
    <div class="container w-100">
      <form
        action="/search"
        method="get"
        role="search"
        class="search search-modal__form d-flex justify-content-between"
      >
        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
  <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="#212121"/>
</svg>

        <input type="hidden" name="type" value="product">
        <input
          type="text"
          id="search-type"
          name="q"
          class="search-popup"
          placeholder="Gifts that linger: Uncover treasures for cherished moments."
        >
        <div class="close-search"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none">
  <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"/>
</svg>
</div>
        <button id="search-btn">Search</button>
      </form>
    </div>
  </div>
  <div id="search-result" class="m-auto">
    <div class="container p-0">
      <div class="group-promotion">
        <div class="resultsearch">
          <div class="row results">
            <div class="col-12 col-lg-3 mb-3 mb-lg-0">
              <label>SUGGESTIONS</label>
              <ul class="result_collection"></ul>
            </div>
            <div class="col-12 col-lg-9">
              <label>PRODUCTS</label>
              <ul class="result_product"></ul>
            </div>
          </div>
          <div class="d-flex moreresult m-0">
            <p>Search for<span></span></p>
            <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>icon-arrow-right</title>
<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>
</svg>
          </div>
        </div>
      </div>
      <div class="group-recent hide">
        <h3>RECENT SEARCH</h3>
        <span class="delete-all-history">Hapus riwayat</span>
        <ul class="last-search"></ul>
      </div>
      <div class="group-recommend">
        <h3>YOU MAY ALSO LIKE</h3>
        
        
          <div class="row popup-recommend c-products-grid infinite-case product-multi-">
            <div class="swiper-wrapper justify-content-between" style="margin-left:1px;">
              
                
                  <div class="swiper-slide card">
                    



<div class="products" data-lazy="false">
  <div class="bg-products">
    <button type="button" class="wishlist-toggle" data-wishlist-button data-product-handle="nibbl-the-jam-that-stole-breakfast">
      <div class="wishlist-icon-wrapper">
  <svg class="wishlist-icon-outline" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:block;">
    <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.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="#212121"/>
  </svg>
  <svg class="wishlist-icon-filled" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:none;">
    <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.8125Z" fill="#640000"/>
  </svg>
</div>
    </button>
    <a href="https://www.houseonthehillaustin.com/home/rave-reviews//products/nibbl-the-jam-that-stole-breakfast">
      
      <div class="product-card-img-container p-0 position-relative">
        
        <img class="product-card-img"  lazy="false" src="//outerbloom.com/cdn/shop/files/The-Jam-That-Stole-Breakfast_350x.jpg?v=1761737780" data-src="//outerbloom.com/cdn/shop/files/The-Jam-That-Stole-Breakfast_350x.jpg?v=1761737780" alt="Nibbl The Jam That Stole Breakfast" height="200" width="200">
        
      </div>
      <div class="card-body product-card-info">
        <h5 class="h5 mb-0">
          Nibbl The Jam That Stole Breakfast
        </h5>
        <div class="product-card-price">
          
          <div class="product-price-sale">
            <s class="product-card-price-before card-money">Rp 155.000</s>
            <span class="product-card-discount small">	
              (-45%)
            </span> 	
          </div>
          
          
          
          <div class="price-discount">
            <h4 class="product-card-price-after card-money">Rp 85.000</h4>
          </div>
          
          
          
          
          
        </div>
        
      </div>
    </a>
  </div>
  
   
  <div class="wishlist-tooltip" style="display:none;">
    <a href="/account/login">Please login to save to wishlist</a>
  </div>
</div>

                  </div>
                
              
                
                  <div class="swiper-slide card">
                    



<div class="products" data-lazy="false">
  <div class="bg-products">
    <button type="button" class="wishlist-toggle" data-wishlist-button data-product-handle="nibbl-choco-nutocalypse">
      <div class="wishlist-icon-wrapper">
  <svg class="wishlist-icon-outline" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:block;">
    <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.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="#212121"/>
  </svg>
  <svg class="wishlist-icon-filled" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:none;">
    <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.8125Z" fill="#640000"/>
  </svg>
</div>
    </button>
    <a href="https://www.houseonthehillaustin.com/home/rave-reviews//products/nibbl-choco-nutocalypse">
      
      <div class="product-card-img-container p-0 position-relative">
        
        <img class="product-card-img"  lazy="false" src="//outerbloom.com/cdn/shop/files/Choco-Nutocalypse_b93c4d9f-8210-4454-9b3f-419d0040ff31_350x.jpg?v=1761789600" data-src="//outerbloom.com/cdn/shop/files/Choco-Nutocalypse_b93c4d9f-8210-4454-9b3f-419d0040ff31_350x.jpg?v=1761789600" alt="Nibbl Choco Nutocalypse" height="200" width="200">
        
      </div>
      <div class="card-body product-card-info">
        <h5 class="h5 mb-0">
          Nibbl Choco Nutocalypse
        </h5>
        <div class="product-card-price">
          
          <div class="product-price-sale">
            <s class="product-card-price-before card-money">Rp 155.000</s>
            <span class="product-card-discount small">	
              (-45%)
            </span> 	
          </div>
          
          
          
          <div class="price-discount">
            <h4 class="product-card-price-after card-money">Rp 85.000</h4>
          </div>
          
          
          
          
          
        </div>
        
      </div>
    </a>
  </div>
  
   
  <div class="wishlist-tooltip" style="display:none;">
    <a href="/account/login">Please login to save to wishlist</a>
  </div>
</div>

                  </div>
                
              
                
                  <div class="swiper-slide card">
                    



<div class="products" data-lazy="false">
  <div class="bg-products">
    <button type="button" class="wishlist-toggle" data-wishlist-button data-product-handle="nibbl-pistachio-promises-at-3am">
      <div class="wishlist-icon-wrapper">
  <svg class="wishlist-icon-outline" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:block;">
    <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.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="#212121"/>
  </svg>
  <svg class="wishlist-icon-filled" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:none;">
    <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.8125Z" fill="#640000"/>
  </svg>
</div>
    </button>
    <a href="https://www.houseonthehillaustin.com/home/rave-reviews//products/nibbl-pistachio-promises-at-3am">
      
      <div class="product-card-img-container p-0 position-relative">
        
        <img class="product-card-img"  lazy="false" src="//outerbloom.com/cdn/shop/files/Pistachio-Promises-at-3AM_8d54b983-3e48-4377-90a0-fdf078746a00_350x.jpg?v=1761789808" data-src="//outerbloom.com/cdn/shop/files/Pistachio-Promises-at-3AM_8d54b983-3e48-4377-90a0-fdf078746a00_350x.jpg?v=1761789808" alt="Nibbl Pistachio Promises at 3AM" height="200" width="200">
        
      </div>
      <div class="card-body product-card-info">
        <h5 class="h5 mb-0">
          Nibbl Pistachio Promises at 3AM
        </h5>
        <div class="product-card-price">
          
          <div class="product-price-sale">
            <s class="product-card-price-before card-money">Rp 195.000</s>
            <span class="product-card-discount small">	
              (-49%)
            </span> 	
          </div>
          
          
          
          <div class="price-discount">
            <h4 class="product-card-price-after card-money">Rp 99.000</h4>
          </div>
          
          
          
          
          
        </div>
        
      </div>
    </a>
  </div>
  
   
  <div class="wishlist-tooltip" style="display:none;">
    <a href="/account/login">Please login to save to wishlist</a>
  </div>
</div>

                  </div>
                
              
                
                  <div class="swiper-slide card">
                    



<div class="products" data-lazy="false">
  <div class="bg-products">
    <button type="button" class="wishlist-toggle" data-wishlist-button data-product-handle="nibbl-winter-spice-everything-nice">
      <div class="wishlist-icon-wrapper">
  <svg class="wishlist-icon-outline" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:block;">
    <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.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="#212121"/>
  </svg>
  <svg class="wishlist-icon-filled" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:none;">
    <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.8125Z" fill="#640000"/>
  </svg>
</div>
    </button>
    <a href="https://www.houseonthehillaustin.com/home/rave-reviews//products/nibbl-winter-spice-everything-nice">
      
      <div class="product-card-img-container p-0 position-relative">
        
        <img class="product-card-img"  lazy="false" src="//outerbloom.com/cdn/shop/files/Winter-Spice-_-Everything-Nice_9ae0c558-6322-442f-b1ed-4f4325f2367a_350x.jpg?v=1761789428" data-src="//outerbloom.com/cdn/shop/files/Winter-Spice-_-Everything-Nice_9ae0c558-6322-442f-b1ed-4f4325f2367a_350x.jpg?v=1761789428" alt="Nibbl Winter Spice &amp; Everything Nice" height="200" width="200">
        
      </div>
      <div class="card-body product-card-info">
        <h5 class="h5 mb-0">
          Nibbl Winter Spice & Everything Nice
        </h5>
        <div class="product-card-price">
          
          <div class="product-price-sale">
            <s class="product-card-price-before card-money">Rp 195.000</s>
            <span class="product-card-discount small">	
              (-56%)
            </span> 	
          </div>
          
          
          
          <div class="price-discount">
            <h4 class="product-card-price-after card-money">Rp 85.000</h4>
          </div>
          
          
          
          
          
        </div>
        
      </div>
    </a>
  </div>
  
   
  <div class="wishlist-tooltip" style="display:none;">
    <a href="/account/login">Please login to save to wishlist</a>
  </div>
</div>

                  </div>
                
              
                
                  <div class="swiper-slide card">
                    



<div class="products" data-lazy="false">
  <div class="bg-products">
    <button type="button" class="wishlist-toggle" data-wishlist-button data-product-handle="nibbl-say-cheese-regret-nothing">
      <div class="wishlist-icon-wrapper">
  <svg class="wishlist-icon-outline" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:block;">
    <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.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="#212121"/>
  </svg>
  <svg class="wishlist-icon-filled" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:none;">
    <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.8125Z" fill="#640000"/>
  </svg>
</div>
    </button>
    <a href="https://www.houseonthehillaustin.com/home/rave-reviews//products/nibbl-say-cheese-regret-nothing">
      
      <div class="product-card-img-container p-0 position-relative">
        
        <img class="product-card-img"  lazy="false" src="//outerbloom.com/cdn/shop/files/Say-Cheese-Regret-Nothing_8a57e2b8-dfd8-4ba1-a120-21756e5dc193_350x.jpg?v=1761789423" data-src="//outerbloom.com/cdn/shop/files/Say-Cheese-Regret-Nothing_8a57e2b8-dfd8-4ba1-a120-21756e5dc193_350x.jpg?v=1761789423" alt="Nibbl Say Cheese, Regret Nothing" height="200" width="200">
        
      </div>
      <div class="card-body product-card-info">
        <h5 class="h5 mb-0">
          Nibbl Say Cheese, Regret Nothing
        </h5>
        <div class="product-card-price">
          
          <div class="product-price-sale">
            <s class="product-card-price-before card-money">Rp 195.000</s>
            <span class="product-card-discount small">	
              (-56%)
            </span> 	
          </div>
          
          
          
          <div class="price-discount">
            <h4 class="product-card-price-after card-money">Rp 85.000</h4>
          </div>
          
          
          
          
          
        </div>
        
      </div>
    </a>
  </div>
  
   
  <div class="wishlist-tooltip" style="display:none;">
    <a href="/account/login">Please login to save to wishlist</a>
  </div>
</div>

                  </div>
                
              
                
                  <div class="swiper-slide card">
                    



<div class="products" data-lazy="false">
  <div class="bg-products">
    <button type="button" class="wishlist-toggle" data-wishlist-button data-product-handle="nibbl-berry-affair">
      <div class="wishlist-icon-wrapper">
  <svg class="wishlist-icon-outline" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:block;">
    <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.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="#212121"/>
  </svg>
  <svg class="wishlist-icon-filled" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:none;">
    <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.8125Z" fill="#640000"/>
  </svg>
</div>
    </button>
    <a href="https://www.houseonthehillaustin.com/home/rave-reviews//products/nibbl-berry-affair">
      
      <div class="product-card-img-container p-0 position-relative">
        
        <img class="product-card-img"  lazy="false" src="//outerbloom.com/cdn/shop/files/Berry-Affair_350x.jpg?v=1761738335" data-src="//outerbloom.com/cdn/shop/files/Berry-Affair_350x.jpg?v=1761738335" alt="Nibbl Berry Affair" height="200" width="200">
        
      </div>
      <div class="card-body product-card-info">
        <h5 class="h5 mb-0">
          Nibbl Berry Affair
        </h5>
        <div class="product-card-price">
          
          <div class="product-price-sale">
            <s class="product-card-price-before card-money">Rp 155.000</s>
            <span class="product-card-discount small">	
              (-45%)
            </span> 	
          </div>
          
          
          
          <div class="price-discount">
            <h4 class="product-card-price-after card-money">Rp 85.000</h4>
          </div>
          
          
          
          
          
        </div>
        
      </div>
    </a>
  </div>
  
   
  <div class="wishlist-tooltip" style="display:none;">
    <a href="/account/login">Please login to save to wishlist</a>
  </div>
</div>

                  </div>
                
              
                
                  <div class="swiper-slide card">
                    



<div class="products" data-lazy="false">
  <div class="bg-products">
    <button type="button" class="wishlist-toggle" data-wishlist-button data-product-handle="nibbl-chocolate-after-dark">
      <div class="wishlist-icon-wrapper">
  <svg class="wishlist-icon-outline" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:block;">
    <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.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="#212121"/>
  </svg>
  <svg class="wishlist-icon-filled" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:none;">
    <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.8125Z" fill="#640000"/>
  </svg>
</div>
    </button>
    <a href="https://www.houseonthehillaustin.com/home/rave-reviews//products/nibbl-chocolate-after-dark">
      
      <div class="product-card-img-container p-0 position-relative">
        
        <img class="product-card-img"  lazy="false" src="//outerbloom.com/cdn/shop/files/Chocolate-After-Dark_350x.jpg?v=1761737267" data-src="//outerbloom.com/cdn/shop/files/Chocolate-After-Dark_350x.jpg?v=1761737267" alt="Nibbl Chocolate After Dark" height="200" width="200">
        
      </div>
      <div class="card-body product-card-info">
        <h5 class="h5 mb-0">
          Nibbl Chocolate After Dark
        </h5>
        <div class="product-card-price">
          
          <div class="product-price-sale">
            <s class="product-card-price-before card-money">Rp 125.000</s>
            <span class="product-card-discount small">	
              (-32%)
            </span> 	
          </div>
          
          
          
          <div class="price-discount">
            <h4 class="product-card-price-after card-money">Rp 85.000</h4>
          </div>
          
          
          
          
          
        </div>
        
      </div>
    </a>
  </div>
  
   
  <div class="wishlist-tooltip" style="display:none;">
    <a href="/account/login">Please login to save to wishlist</a>
  </div>
</div>

                  </div>
                
              
                
                  <div class="swiper-slide card">
                    



<div class="products" data-lazy="false">
  <div class="bg-products">
    <button type="button" class="wishlist-toggle" data-wishlist-button data-product-handle="nibbl-the-whole-d-mn-thing">
      <div class="wishlist-icon-wrapper">
  <svg class="wishlist-icon-outline" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:block;">
    <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.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="#212121"/>
  </svg>
  <svg class="wishlist-icon-filled" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:none;">
    <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.8125Z" fill="#640000"/>
  </svg>
</div>
    </button>
    <a href="https://www.houseonthehillaustin.com/home/rave-reviews//products/nibbl-the-whole-d-mn-thing">
      
      <div class="product-card-img-container p-0 position-relative">
        
        <img class="product-card-img"  lazy="false" src="//outerbloom.com/cdn/shop/files/The-Whole-Dmn-Thing_350x.jpg?v=1761737233" data-src="//outerbloom.com/cdn/shop/files/The-Whole-Dmn-Thing_350x.jpg?v=1761737233" alt="Nibbl The Whole D*mn Thing" height="200" width="200">
        
      </div>
      <div class="card-body product-card-info">
        <h5 class="h5 mb-0">
          Nibbl The Whole D*mn Thing
        </h5>
        <div class="product-card-price">
          
          <div class="product-price-sale">
            <s class="product-card-price-before card-money">Rp 440.000</s>
            <span class="product-card-discount small">	
              (-35%)
            </span> 	
          </div>
          
          
          
          <div class="price-discount">
            <h4 class="product-card-price-after card-money">Rp 277.700</h4>
          </div>
          
          
          
          
          
        </div>
        
      </div>
    </a>
  </div>
  
   
  <div class="wishlist-tooltip" style="display:none;">
    <a href="/account/login">Please login to save to wishlist</a>
  </div>
</div>

                  </div>
                
              
                
                  <div class="swiper-slide card">
                    



<div class="products" data-lazy="false">
  <div class="bg-products">
    <button type="button" class="wishlist-toggle" data-wishlist-button data-product-handle="the-jade-bouquet">
      <div class="wishlist-icon-wrapper">
  <svg class="wishlist-icon-outline" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:block;">
    <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.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="#212121"/>
  </svg>
  <svg class="wishlist-icon-filled" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:none;">
    <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.8125Z" fill="#640000"/>
  </svg>
</div>
    </button>
    <a href="https://www.houseonthehillaustin.com/home/rave-reviews//products/the-jade-bouquet">
      
      <div class="product-card-img-container p-0 position-relative">
        
        <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">
        
      </div>
      <div class="card-body product-card-info">
        <h5 class="h5 mb-0">
          The Jade Bouquet
        </h5>
        <div class="product-card-price">
          
          <div class="product-price-sale">
            <s class="product-card-price-before card-money">Rp 435.000</s>
            <span class="product-card-discount small">	
              (-34%)
            </span> 	
          </div>
          
          
          
          <div class="price-discount">
            <h4 class="product-card-price-after card-money">Rp 277.700</h4>
          </div>
          
          
          
          
          
        </div>
        
      </div>
    </a>
  </div>
  
   
  <div class="wishlist-tooltip" style="display:none;">
    <a href="/account/login">Please login to save to wishlist</a>
  </div>
</div>

                  </div>
                
              
                
                  <div class="swiper-slide card">
                    



<div class="products" data-lazy="false">
  <div class="bg-products">
    <button type="button" class="wishlist-toggle" data-wishlist-button data-product-handle="the-selena-bouquet">
      <div class="wishlist-icon-wrapper">
  <svg class="wishlist-icon-outline" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:block;">
    <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.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="#212121"/>
  </svg>
  <svg class="wishlist-icon-filled" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:none;">
    <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.8125Z" fill="#640000"/>
  </svg>
</div>
    </button>
    <a href="https://www.houseonthehillaustin.com/home/rave-reviews//products/the-selena-bouquet">
      
      <div class="product-card-img-container p-0 position-relative">
        
        <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">
        
      </div>
      <div class="card-body product-card-info">
        <h5 class="h5 mb-0">
          The Selena Bouquet
        </h5>
        <div class="product-card-price">
          
          <div class="product-price-sale">
            <s class="product-card-price-before card-money">Rp 335.000</s>
            <span class="product-card-discount small">	
              (-29%)
            </span> 	
          </div>
          
          
          
          <div class="price-discount">
            <h4 class="product-card-price-after card-money">Rp 235.000</h4>
          </div>
          
          
          
          
          
        </div>
        
      </div>
    </a>
  </div>
  
   
  <div class="wishlist-tooltip" style="display:none;">
    <a href="/account/login">Please login to save to wishlist</a>
  </div>
</div>

                  </div>
                
              
            </div>
          </div>
        
      </div>
    </div>
  </div>

  <div class="site-overlay" style="display: none"></div>
</div>
<script>
  
  var swiper = new Swiper('.popup-recommend', {
      slidesPerView : 4, 
      spaceBetween: 30,
      lazy: true ,                            
      speed: 300,
      breakpoints: {
        // when window width is <= 576px
        576: {
        	slidesPerView: 2,
     	 	spaceBetween: 10,
            freeMode: true,
            resistance : true,
            resistanceRatio : 0,
			freeModeMomentumRatio : 0.45,
            freeModeMomentumVelocityRatio : 1.5
        },
    	768: {
     	 	slidesPerView: 2,
     	 	spaceBetween: 10
   		 },
    	992: {
      		slidesPerView: 3,
      		spaceBetween: 20
    	}
  	}
  });

  const searchContainer = $("#search-popup")
  const searchInput = $(".search-popup")
  const result_collection = $('.result_collection')
  const result_product = $('.result_product')
  const resultsearch = $('.resultsearch')
  const resultrecommend = $(".group-recommend")
  const moreresult = $(".moreresult")

  searchInput.keyup(function(){
    const input = $(this).val()
    moreresult.find("p span").text(` “${input}”`)
    if(input.length > 2) {
      $(".close-search").show()
      const url = `https://outerbloom.com/search/suggest.json?resources[limit]=10&resources[limit_scope]=each&resources[type]=collection,product&q=${input}`
      $.ajax({
        type: 'GET',
        url,
        beforeSend: function() {
            // setting a timeout
            // $(placeholder).addClass('loading');
        },
        success: async function(response) {
            resultsearch.show()
            resultrecommend.hide()
            result_collection.html("")
            result_product.html("")
            const collections = response.resources.results.collections
            const products = response.resources.results.products
            let collection_length = collections.length
            let product_length = products.length

            async function getCollectionProductCount(handle) {
              try {
                const collectionUrl = `https://outerbloom.com/collections/${handle}.json`
                const response = await fetch(collectionUrl)
                if (response.ok) {
                  const data = await response.json()
                  return data.collection.products_count ? data.collection.products_count : 0
                }
                return 0
              } catch (error) {
                console.log('Error fetching collection product count:', error)
                return 0
              }
            }

            // Show skeleton loader for suggestions
            const skeletonHTML = `
              <div class="skeleton-loader">
                <div class="skeleton-item" style="width: 80%;"></div>
                <div class="skeleton-item" style="width: 90%;"></div>
                <div class="skeleton-item" style="width: 75%;"></div>
                <div class="skeleton-item" style="width: 85%;"></div>
                <div class="skeleton-item" style="width: 70%;"></div>
              </div>
            `
            result_collection.html(skeletonHTML)

            // Show skeleton loader for products (3 cards on desktop, 2 on mobile)
            const productSkeletonHTML = `
              <li class="skeleton-product-card">
                <div class="skeleton-product-image"></div>
                <div class="skeleton-product-title"></div>
                <div class="skeleton-product-price"></div>
              </li>
              <li class="skeleton-product-card">
                <div class="skeleton-product-image"></div>
                <div class="skeleton-product-title"></div>
                <div class="skeleton-product-price"></div>
              </li>
              <li class="skeleton-product-card">
                <div class="skeleton-product-image"></div>
                <div class="skeleton-product-title"></div>
                <div class="skeleton-product-price"></div>
              </li>
              <li class="skeleton-product-card">
                <div class="skeleton-product-image"></div>
                <div class="skeleton-product-title"></div>
                <div class="skeleton-product-price"></div>
              </li>
              <li class="skeleton-product-card">
                <div class="skeleton-product-image"></div>
                <div class="skeleton-product-title"></div>
                <div class="skeleton-product-price"></div>
              </li>
              <li class="skeleton-product-card">
                <div class="skeleton-product-image"></div>
                <div class="skeleton-product-title"></div>
                <div class="skeleton-product-price"></div>
              </li>
            `
            result_product.html(productSkeletonHTML)

            // Render products immediately (without waiting for collections)
            setTimeout(() => {
              result_product.html('')
              let productCount = 0
              for(let i=0; i<product_length && productCount < 6; i++){
                const product = products[i]
                const title = product.title
                const url = product.url
                const image = product.featured_image.url
                const vendor = product.vendor
                const price = product.price
                const formattedPrice = new Intl.NumberFormat('id-ID', { style: 'currency', currency: 'IDR', minimumFractionDigits: 0 }).format(price)
                
                // Filter out excluded products
                if(vendor === 'AIA' || vendor === 'AXA' || vendor === 'WOM Finance') continue
                if(title.includes('Extra Shipping Cost') || title.includes('[US]') || title.includes('Rp')) continue
                
                const html_product = `
                  <li class="item" data-vendor="${vendor}">
                    <a href="${url}" class="item_url" data-type="product" data-title="${title}" data-url="${url}">
                      <div class="product-card-search">
                        <img src="${image}" alt="${title}" class="product-image-search">
                        <div class="product-info-search">
                          <div class="product-title-search">${title}</div>
                          <div class="product-price-search">${formattedPrice}</div>
                        </div>
                      </div>
                    </a>
                  </li>
                `
                result_product.append(html_product)
                productCount++
              }
            }, 100)

            // Collect unique collections first
            const addedTitles = new Set()
            const addedHandles = new Set()
            const validCollections = []
            
            for(let i=0; i<collection_length && validCollections.length < 10; i++){
              const title = collections[i].title
              const titleLower = title.toLowerCase()
              const handle = collections[i].handle
              const url = collections[i].url
              
              // Skip if title or handle already added, or if title includes excluded terms
              if(addedTitles.has(titleLower) || addedHandles.has(handle)) continue
              if(title.includes('AIA') || title.includes('AXA') || title.includes('WOM') || title.includes('Upsell')) continue
              
              const count = await getCollectionProductCount(handle)
              
              // Only add if collection has products
              if(count > 0) {
                validCollections.push({ title, url })
                addedTitles.add(titleLower)
                addedHandles.add(handle)
              }
            }

            // Clear skeleton and render all collections at once
            result_collection.html('')
            validCollections.forEach(collection => {
              const html_collection = `
                <li class="item" data-title="${collection.title}">
                  <a href="${collection.url}" data-type="collection" class="item_url" data-title="${collection.title}" data-url="${collection.url}">${collection.title}</a>
                </li>
              `
              result_collection.append(html_collection)
            })
        },
        error: function(xhr) { // if error occured
            alert("Error occured.please try again");
        },
        complete: function(response) {
            // $(placeholder).removeClass('loading');
        },
        dataType: 'JSON'
      });
    } else {
      result_collection.html("")
      result_product.html("")
      
      resultsearch.hide()
      resultrecommend.show()
    }
  })

  moreresult.click(function(){
    $("#search-btn").trigger("click");
  })

  $(".close-search").click(function(){
    $(this).hide()
    searchInput.val("")
    searchInput.focus()
    resultsearch.hide()
    resultrecommend.show()
  })

  function setCookie(name,value,days) {
    var expires = "";
    if (days) {
      var date = new Date();
      date.setTime(date.getTime() + (days*24*60*60*1000));
      expires = "; expires=" + date.toUTCString();
    }
    document.cookie = name + "=" + (value || "")  + expires + "; path=/";
  }
  function getCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
      var c = ca[i];
      while (c.charAt(0)==' ') c = c.substring(1,c.length);
      if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
  }
  let last_search_name = []
  let last_search_url = []
  $(".group-recent").hide()
  if(getCookie("last_search_name") != null && getCookie("last_search_url") != null){
    if(getCookie("last_search_name") != "" && getCookie("last_search_url") != ""){
      $(".group-recent").show()
      last_search_name = getCookie("last_search_name");
      last_search_url = getCookie("last_search_url");
      const arrName = last_search_name.substring(1).split(',').reverse()
      const arrUrl = last_search_url.substring(1).split(',').reverse()
      console.log(arrName, 'Array Name')
      console.log(arrUrl, 'Array Url')
      let length = arrName.length
      if(arrName.length > 5) {
        length = 5
      }
      for(let n=0;n<length;n++){
        let html2 = `<li><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title/><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"/><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"/></svg><a href="${arrUrl[n]}">${arrName[n]}</a><span data-title="${arrName[n]}" data-url="${arrUrl[n]}"></span></li>`
        $(".group-recent ul").append(html2)
      }
    }
  }
  console.log(last_search_name, 'Name')
  console.log(last_search_url, 'url')
  
  resultsearch.delegate(".item a", "click", function(){
    let name = [last_search_name]
    let url = [last_search_url]
    name.push($(this).attr('data-title'))
    url.push($(this).attr('data-url'))
    setCookie("last_search_name",name,7);
    setCookie("last_search_url",url,7);
  })
  
  $(".delete-all-history").click(function() {
    setCookie("last_search_name",null,0);
    setCookie("last_search_url",null,0);
    $(".last-search").hide();
    setTimeout(function(){
      location.reload();
    }, 500);
  })
  
  $("#search-trigger").click(function(){
    search_open()
  })
  $(".icon-search-mobile").click(function(){
    search_open()
  })
  $(".search-header svg").click(function(){
    search_close()
  })
  $(".icon-key-mobile").click(function(){
    search_close()
  })

  function search_open() {
    $("body").addClass("search-popup-open")
    $("#nav-mobile-icon, .search-header label, .icon-search-mobile").hide()
    $("#search-popup, .search-header svg, .icon-key-mobile").show()
    $(".search-popup").focus()
    $('.popup-recommend')[0].swiper.update();
  }
  function search_close() {
    $("body").removeClass("search-popup-open")
    $("#nav-mobile-icon, .search-header label, .icon-search-mobile").show()
    $("#search-popup, .search-header svg, .icon-key-mobile").hide()
    searchInput.val("")
    resultsearch.hide()
    resultrecommend.show()
  }

  $(".site-overlay").click(function(){
    search_close()
  })
</script>

</div>
    </div>

    <div id="PageContainer" class="is-moved-by-drawerx">
      <main class="main-content pt-0" role="main">
        
          <div id="breadcrumbProduct" class="d-none d-lg-block">
            <style>
  #breadcrumbProduct {
    padding: 20px 0;
  }
  #breadcrumbProduct ul {
      display: flex;
      padding: 0;
      list-style: none;
      margin: 0;
      gap: 12px;
  }
  #breadcrumbProduct ul li {
    text-transform: uppercase;
    margin: 0;
    font-size: 12px;
}
  #breadcrumbProduct ul li a {
    color: #757575;
  }

  #breadcrumbProduct ul li svg {
    width: 10px;
    height: 10px;
    padding: 0;
    color: #757575;
    vertical-align: middle;
  }
</style>
<div class="container">
  <ul role="navigation" aria-label="breadcrumbs">
    <li><a href="/">Home</a></li>
    <li><svg class="icon icon-chevron-right" xmlns="http://www.w3.org/2000/svg" width="7" height="10" viewBox="0 0 7 10" fill="none">
    <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"/>
</svg></li>
    
      
        <li>
          <a href="https://www.houseonthehillaustin.com/home/rave-reviews/">MI77</a>
        </li>
        <li><svg class="icon icon-chevron-right" xmlns="http://www.w3.org/2000/svg" width="7" height="10" viewBox="0 0 7 10" fill="none">
    <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"/>
</svg></li>
      
      <li>MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru</li>
    
  </ul>
</div>

          </div>
        

        
<div id="shopify-section-Product" class="shopify-section product-section mt-0"><link href="//outerbloom.com/cdn/shop/t/138/assets/product.css?v=124213504851328585011771028916" rel="stylesheet" type="text/css" media="all" />




<!-- /templates/product.liquid -->


<!-- <div itemscope itemtype="http://schema.org/Product"> -->






<div class="product-bunga-outerbloom" data-product-type="">
  <meta itemprop="url" content="https://www.houseonthehillaustin.com/home/rave-reviews/">
  <meta itemprop="image" content="https://i.ibb.co/HfX5MwBj/slotmi77.webp&width=600">

  
  
  <input id="data-sku" type="hidden" value="[C]OBIBUN1236">
  <div class="product-single">
    <div id="product-top" class="container">
      <div class="row bg-card product-sticky">
        <div id="product-image" class="col-lg-7 text-center">
          <div class="product-image">
            <div class="row no-gutters">
  
  <div id="product-featured-image" class="row w-100">
    
      <div id="thumb-image-product" class="col-lg-2 col-12 d-none d-lg-block">
        
        <div class="swiper-container gallery-thumbs" style="min-height: 500px">
          <ul class="list-unstyled slider swiper-wrapper slider-nav ProductThumbs thumbnails" id="ProductThumbsx">

                  <li class="swiper-slide" data-type="image">
                    <a
                      href="files/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6.jpg"
                      data-standard="https://i.ibb.co/HfX5MwBj/slotmi77.webp&width=600"
                      data-image="files/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6.jpg"
                      data-position="1"
                      class="product-single__thumbnail"
                    >
                      <img
                        class="lazyload w-100"
                        src="https://i.ibb.co/HfX5MwBj/slotmi77.webp"
                        alt="MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru"
                        width=""
                        height=""
                      >
                    </a>
                  </li>
                
              
            

                  <li class="swiper-slide" data-type="image">
                    <a
                      href="files/Signature-Midnight-Kiss-classic-Bouquet-Innocent-Pink.jpg"
                      data-standard="https://i.ibb.co/HfX5MwBj/slotmi77.webp?v=1771038360&width=600"
                      data-image="files/Signature-Midnight-Kiss-classic-Bouquet-Innocent-Pink.jpg"
                      data-position="2"
                      class="product-single__thumbnail"
                    >
                      <img
                        class="lazyload w-100"
                        src="https://i.ibb.co/HfX5MwBj/slotmi77.webp?v=1771038360&width=160"
                        alt="MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru"
                        width=""
                        height=""
                      >
                    </a>
                  </li>
                
              
            

                  <li class="swiper-slide" data-type="image">
                    <a
                      href="files/Signature-Midnight-Kiss-Bouquet---Classic_3_6db09e1a-75b0-4554-9330-12f5c9948793.jpg"
                      data-standard="//outerbloom.com/cdn/shop/files/Signature-Midnight-Kiss-Bouquet---Classic_3_6db09e1a-75b0-4554-9330-12f5c9948793.jpg?v=1770108424&width=600"
                      data-image="files/Signature-Midnight-Kiss-Bouquet---Classic_3_6db09e1a-75b0-4554-9330-12f5c9948793.jpg"
                      data-position="3"
                      class="product-single__thumbnail"
                    >
                      <img
                        class="lazyload w-100"
                        src="https://i.ibb.co/HfX5MwBj/slotmi77.webp"
                        alt="MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru"
                        width=""
                        height=""
                      >
                    </a>
                  </li>
                
              
            

                  <li class="swiper-slide" data-type="image">
                    <a
                      href="files/Signature-Midnight-Kiss-Bouquet---Classic_4_5ebf5419-e9a7-4948-966b-4ecbf7b47cec.jpg"
                      data-standard="//outerbloom.com/cdn/shop/files/Signature-Midnight-Kiss-Bouquet---Classic_4_5ebf5419-e9a7-4948-966b-4ecbf7b47cec.jpg?v=1770108424&width=600"
                      data-image="files/Signature-Midnight-Kiss-Bouquet---Classic_4_5ebf5419-e9a7-4948-966b-4ecbf7b47cec.jpg"
                      data-position="4"
                      class="product-single__thumbnail"
                    >
                      <img
                        class="lazyload w-100"
                        src="https://i.ibb.co/HfX5MwBj/slotmi77.webp"
                        alt="MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru"
                        width=""
                        height=""
                      >
                    </a>
                  </li>
                
              
            
          </ul>
        </div>
        
      </div>
    
    <div
      id="featured-image-product"
      class="col-lg-10 col-12 d-none d-lg-block"
    >
      <div class="swiper-container gallery-top">
        <div class="swiper-slide product-single__image">
          
<div class="position-relative product-single__photos slider slider-for" id="ProductPhoto">
  

  <div class="easyzoom easyzoom--overlay easyzoom--with-thumbnails">
    <a href="https://i.ibb.co/HfX5MwBj/slotmi77.webp">
      <img
        src="//outerbloom.com/cdn/shop/files/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6_750x.jpg?v=1771038360"
        alt="MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru"
        id="ProductPhotoImg"
        class="lazyload"
      >
      
    </a>
  </div>
    
  
</div>

        </div>
        <div class="swiper-slide product-single__video" style="display: none">
          <video
            src="https://cdn.shopify.com/videos/c/vp/05d379ea115d41c2bd0f7d08b1496bd9/05d379ea115d41c2bd0f7d08b1496bd9.HD-1080p-7.2Mbps-24002195.mp4"
            playsinline
            loop
            muted
          ></video>
        </div>
      </div>
    </div>
  </div>

  <div id="featured-image-product2" class="col-12 d-lg-none">
    <div class="swiper-container gallery-mobile">
      <ul class="swiper-wrapper">
<li class="swiper-slide img">
              
                <img
                  class="swiper-lazy"
                  src="//outerbloom.com/cdn/shop/t/138/assets/thumbnail-logo.png?v=77423356358717317971752652420"
                  data-src="//outerbloom.com/cdn/shop/files/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6_large.jpg?v=1771038360"
                  alt="MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru"
                  width=""
                  height=""
                >
              
            </li>
          
        
<li class="swiper-slide img">
              
                <img
                  class="swiper-lazy"
                  src="//outerbloom.com/cdn/shop/t/138/assets/thumbnail-logo.png?v=77423356358717317971752652420"
                  data-src="//outerbloom.com/cdn/shop/files/Signature-Midnight-Kiss-classic-Bouquet-Innocent-Pink_large.jpg?v=1771038360"
                  alt="MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru"
                  width=""
                  height=""
                >
              
            </li>
          
        
<li class="swiper-slide img">
              
                <img
                  class="swiper-lazy"
                  src="//outerbloom.com/cdn/shop/t/138/assets/thumbnail-logo.png?v=77423356358717317971752652420"
                  data-src="//outerbloom.com/cdn/shop/files/Signature-Midnight-Kiss-Bouquet---Classic_3_6db09e1a-75b0-4554-9330-12f5c9948793_large.jpg?v=1770108424"
                  alt="MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru"
                  width=""
                  height=""
                >
              
            </li>
          
        
<li class="swiper-slide img">
              
                <img
                  class="swiper-lazy"
                  src="//outerbloom.com/cdn/shop/t/138/assets/thumbnail-logo.png?v=77423356358717317971752652420"
                  data-src="//outerbloom.com/cdn/shop/files/Signature-Midnight-Kiss-Bouquet---Classic_4_5ebf5419-e9a7-4948-966b-4ecbf7b47cec_large.jpg?v=1770108424"
                  alt="MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru"
                  width=""
                  height=""
                >
              
            </li>
          
        
      </ul>
      
        <div class="swiper-button-prev"><svg class="icon icon-chevron-left" xmlns="http://www.w3.org/2000/svg" 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>
        <div class="swiper-button-next"><svg class="icon icon-chevron-right" xmlns="http://www.w3.org/2000/svg" width="7" height="10" viewBox="0 0 7 10" fill="none">
    <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"/>
</svg></div>

        <!-- Add Pagination -->
        <div class="swiper-pagination"></div>
      
    </div>
  </div>

  <div class="product-m-pageleb-video col-12 text-center d-lg-none">
    <!-- product video -->
    <style>
      .view-video{display:block; margin:auto; padding:5px 10px;font-size:16px;font-weight:bold;border:2px solid #212121;background:#fff;}
      .view-video .icon-play{fill:#212121;vertical-align: middle;}
      .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;}
      .close-video{position:absolute;right:9px; top:8%;z-index:2;padding:5px;}
      .close-video .icon{width:30px;height:30px;}
      /*responsive iframe */
      .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);}
      .video-container iframe {position: absolute;top:60%;left: 0;width: 100%;height: 100%;}

      .youtube {
        background-color: #000;
        margin-bottom: 30px;
        position: relative;
        padding-top: 56.25%;
        overflow: hidden;
        cursor: pointer;
        width: 100%;
      }
      .swiper-slide .youtube {
        max-width: 480px;
      }
      .youtube img {
        width: 100%;
        top: -16.82%;
        left: 0;
        opacity: 0.7;
      }
      .youtube .play-button {
        width: 90px;
        height: 60px;
        background-color: #333;
        box-shadow: 0 0 30px rgba( 0,0,0,0.6 );
        z-index: 1;
        opacity: 0.8;
        border-radius: 6px;
      }
      .youtube .play-button:before {
        content: "";
        border-style: solid;
        border-width: 15px 0 15px 26.0px;
        border-color: transparent transparent transparent #fff;
      }
      .youtube img,
      .youtube .play-button {
        cursor: pointer;
      }
      .youtube img,
      .youtube iframe,
      .youtube .play-button,
      .youtube .play-button:before {
        position: absolute;
      }
      .youtube .play-button,
      .youtube .play-button:before {
        top: 50%;
        left: 50%;
        transform: translate3d( -50%, -50%, 0 );
      }
      .youtube iframe {
        height: 100%;
        width: 100%;
        top: 0;
        left: 0;
      }
    </style>

    
  </div>
</div>
<script>
  if ($(window).width() < 991) {
    var direction = 'horizontal'
  } else {
    var direction = 'vertical'
    $(".gallery-thumbs").height($("#ProductPhotoImg").height())
  }
  var swiper = new Swiper('.gallery-thumbs', {
    
    direction,
    slidesPerView: 4.5,
    spaceBetween: 12,
    navigation: {
      nextEl: '.swiper-button-next',
      prevEl: '.swiper-button-prev',
    }
  });
  
  var swiper = new Swiper('.gallery-mobile', {
    //loop: true,
    lazy: true,
    speed: 300,
    resistance : true,
    resistanceRatio : 0,
    freeModeMomentumRatio : 0.45,
    freeModeMomentumVelocityRatio : 1.5,
    navigation: {
      nextEl: '.swiper-button-next',
      prevEl: '.swiper-button-prev',
    },
    pagination: {
      el: '.swiper-pagination'
    },
    useCSS3Transforms: false,
    loop: false,
    on: {
      init: function () {
        console.log('swiper initialized');
        var currentVideo =  $("[data-swiper-slide-index=" + this.realIndex + "]").find("video");
        currentVideo.trigger('play');
      },
    },
  });

  /* GET ALL VIDEOS */
  var sliderVideos = $(".swiper-slide video");
  
  /* SWIPER API - Event will be fired after animation to other slide (next or previous) */
  swiper.on('slideChange', function () {
    console.log('slide changed');
    /* stop all videos  */
    sliderVideos.each(function( index ) {
      this.currentTime = 0;
    });
  
    /* SWIPER GET CURRENT AND PREV SLIDE (AND The VIDEO INSIDE) */
    var prevVideo =  $(`[data-swiper-slide-index="${this.previousIndex}]"`).find("video");
    var currentVideo =  $(`[data-swiper-slide-index="${this.realIndex}"]`).find("video");
    prevVideo.trigger('stop');
    currentVideo.trigger('play');
  });
  

  $("[data-video]").click(function(){
    const file = $(this).data("video")
    $(".product-single__video").show()
    $(".product-single__image").hide()
    $(".product-single__video").find("video").attr("src", file)
    $(".product-single__video").find("video")[0].play();
  })
  $("[data-image]").click(function(){
    $(".product-single__video").hide()
    $(".product-single__image").show()
    $(".product-single__video").find("video")[0].pause();
  })

  $("#product-image .swiper-slide").each(function(){
    let width = $(this).width()
    $(this).height(width)
  })

  $(window).resize(function() {
    $("#product-image .swiper-slide").each(function(){
      let width = $(this).width()
      $(this).height(width)
    })
  })
</script>

          </div>
          
        </div>
        <div id="product-meta" class="col-lg-5 p-0">
          <div class="product-meta">
            <style>
  .product-meta--review {margin-top:10px}
  .freeship * {font-size: 14px !important;font-style: normal;}
</style>
<h1 itemprop="name" class="mb-2">MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru</h1>

<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
  <meta itemprop="priceCurrency" content="IDR">

  <link itemprop="availability" href="https://schema.org/InStock">
  <script
    type="text/javascript"
    src="//platform-api.sharethis.com/js/sharethis.js#property=5acdc0aa3ef3c0001396fd50&product=custom-share-buttons"
    async="async"
  ></script>
  

  

  <span class="visually-hidden">Translation missing: en.products.general.regular_price</span>
  
    <span class="visually-hidden">Translation missing: en.products.general.sale_price</span>
  
  <div class="row no-gutters mb-3">
    <span
      id="ProductPrice"
      class="h2 ProductPrice"
      itemprop="price"
      content="277700"
    >
      Rp 277.700
    </span>
    <div class="discount-product-detail">
      <p id="ComparePrice" class="ComparePrice mt-2 mt-lg-0">
        Rp 645.000
      </p>
      <span class=" tag-discount">
        
          
          <span id="newDiscount" class="product-tag persentase-discount hide"> 
      (56%)
      </span><br>
        
      </span>
    </div>
  </div>

  <div class="row no-gutters meta-sds">
    <div class="col-12 mb-2 mb-lg-0 stock-info">
      
      
      <span
        id="ProductStock-Product"
        class="product-single__stock mb-2 hide"
      >
        
          
            
              
              Barang dikirim pada 
            
          
        
      </span>

      <style>
    .short-desc-desktop {
        margin-bottom: 2rem;
    }
    .short-desc ul li:nth-child(n + 4) {
        display: none;
    }
    .short-desc ul li.showList:nth-child(n + 4) {
        display: list-item;
    }
    label.more {
        display: none;
    }
    label.more.showMe {
        display: block;
        font-size: 12px;
        text-transform: uppercase;
        font-weight: 700;
        cursor: pointer;
    }
</style>

    <div class="short-desc-desktop d-none d-lg-block">
        <div class="short-desc">
            <ul data-mce-fragment="1">
<li data-mce-fragment="1"><strong data-mce-fragment="1">Layanan Live Chat 24 Jam Non Stop</strong></li>
<li data-mce-fragment="1"><strong data-mce-fragment="1">Transaksi Mudah Cepat & Praktis</strong></li>
<li data-mce-fragment="1"><strong data-mce-fragment="1">Pilihan Permainan Terlengkap Gampang Menang</strong></li>

        </div>
        <label class="more">Show More →</label>
    </div>


<script>
    var liCount;
    $(document).ready(function () {
        $(".short-desc ul").each(function() {
            liCount = $(this).children("li").length;
            if (liCount > 3) {
                $(this).parent(".short-desc").next(".more").addClass("showMe");
            }
        });

        $(".more").click(function () {
            //$(".short-desc").find("li").addClass("showList");
            // $(this).hide();
            $("#product-desc").find("ul").show()
            $('html, body').animate({
                scrollTop: $("#product-desc").offset().top - 250
            }, 2000);
            $("#product-desc").css("height","auto");
            $("#more_content").remove();
            $(".product-spec").append("<div id='less_content' class='readmore'><span class='less_content'>Less</span></div>")
        });
    });
</script>

      
        
  
    

























<style>
  .c-pdp-product-info__service--active {
    font-size: 12px;
    padding-left: 10px;
    text-align: left;
    max-width: 550px;
    margin: auto;
  }
  .c-pdp-product-info__service--active li {
    list-style: disc;
  }
  .c-pdp-product-info {
    background-color: #f5f5f5;
    padding: 12px;
    margin: 0;
  }
  .freeship em {
    font-style: italic;
    font-size: 12px !important;
  }
</style>

<script>
  $(document).ready(function(){
    if ( $(".c-pdp-product-info__service li").length == 1 ) {
      $(".c-pdp-product-info__service").addClass("no-bullet");
      $(".c-pdp-product-info__service li").addClass("no-bullets");
    }
  });
</script>

  



  

  


      
    </div>
  </div>

  <div id="purchaseProduct">
  
    <div class="delivery-method-section mb-4">
      <h4 class="fw-600 text-uppercase mb-15">Delivery Method</h4>
      <div class="delivery-method-buttons d-flex gap-2">
        <button type="button" 
                class="delivery-method-btn active" 
                data-method="Delivery"
                style="flex: 1; padding: 12px 24px; border: 1px solid #212121; font-weight: 700; text-transform: uppercase; transition: all 0.3s ease; background-color: #EEEEEE; color: #212121; cursor: pointer;">
          Delivery
        </button>
        <button type="button" 
                class="delivery-method-btn" 
                data-method="Pickup"
                style="flex: 1; padding: 12px 24px; border: 1px solid #212121; font-weight: 400; text-transform: uppercase; transition: all 0.3s ease; background-color: #ffffff; color: #212121; cursor: pointer;">
          Pickup At ITC Kuningan
        </button>
      </div>
      <input type="hidden" id="selectedShippingMethod" value="Delivery">
      
      <!-- Pickup Location Info (hidden by default) -->
      <div id="pickupLocationInfo" class="pickup-location-info" style="display: none; margin-top: 16px; padding: 16px; background-color: #f8f8f8; border: 1px solid #e0e0e0;">
        <h5 style="font-size: 14px; font-weight: 600; margin-bottom: 12px; text-transform: uppercase; color: #212121;">Pickup Location</h5>
        <div style="font-size: 14px; line-height: 1.6; color: #212121;">
          <p style="margin: 0 0 8px 0;"><strong>ITC Kuningan Mall</strong></p>
          <p style="margin: 0 0 8px 0;">Lantai 9 unit 4B<br/>Jl. Prof. DR. Satrio No.18, RT.11/RW.4, Kuningan, Karet Kuningan, Kecamatan Setiabudi, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12940</p>
          <p style="margin: 0;"><strong>Pickup Hours:</strong> 10:00 - 16:00</p>
        </div>
      </div>
    </div>
  
  
  
    
      


  
  
  
  
    
      
      
      <style>
        label[for="product-select-option-0"] { display: none; }
        #product-select-option-0 { display: none; }
        #product-select-option-0 + .custom-style-select-box { display: none !important; }
      </style>
      <script>
        $(window).load(function() { $('.selector-wrapper:eq(0)').hide(); });
      </script>
      
      
    
  
  
    <div
      id="variantVariants"
      class="swatch swatch-Variants clearfix"
      data-option-index="0"
    >
      <div class="header header-swatch bold">
        <strong>Variants</strong>
      </div>
      
      
        
        
        
          
          
          
          <div
            data-label="swatch-0-innocent-pink"
            data-value="Innocent Pink"
            class="p-0 swatch-element innocent-pink available"
          >
            
            <input
              data-text=""
              id="swatch-0-innocent-pink"
              class="variant-swatch"
              type="radio"
              name="option-0"
              value="Innocent Pink"
              
                checked
              
              
            >
            
              <label
                for="swatch-0-innocent-pink"
                data-src="//outerbloom.com/cdn/shop/files/Signature-Midnight-Kiss-classic-Bouquet-Innocent-Pink_800x.jpg"
                data-index="1"
              >
                
                
                  <span class="d-block">Innocent Pink</span>
                
                <img class="crossed-out" src="//outerbloom.com/cdn/shop/t/138/assets/soldout.png?v=169392025580765019841752652421">
              </label>
            
          </div>
        
        
          <script>
            jQuery('.swatch[data-option-index="0"] .innocent-pink').removeClass('soldout').addClass('available').find(':radio').removeAttr('disabled');
          </script>
        
      
        
        
        
          
          
          
          <div
            data-label="swatch-0-fiery-red"
            data-value="Fiery Red"
            class="p-0 swatch-element fiery-red available"
          >
            
            <input
              data-text=""
              id="swatch-0-fiery-red"
              class="variant-swatch"
              type="radio"
              name="option-0"
              value="Fiery Red"
              
              
            >
            
              <label
                for="swatch-0-fiery-red"
                data-src="//outerbloom.com/cdn/shop/files/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6_800x.jpg"
                data-index="2"
              >
                
                
                  <span class="d-block">Fiery Red</span>
                
                <img class="crossed-out" src="//outerbloom.com/cdn/shop/t/138/assets/soldout.png?v=169392025580765019841752652421">
              </label>
            
          </div>
        
        
          <script>
            jQuery('.swatch[data-option-index="0"] .fiery-red').removeClass('soldout').addClass('available').find(':radio').removeAttr('disabled');
          </script>
        
      
      
      <!-- Add swatch change handler for hash URL update -->
      <script>
        jQuery(document).ready(function($) {
          // Store product data for variant availability checking
          var productData = {"id":8262739886295,"title":"MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru","handle":"signature-midnight-kiss-bouquet-classic","description":"\u003cul data-mce-fragment=\"1\"\u003e\n\u003cli data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003eLayanan Live Chat 24 Jam Non Stop\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003eTransaksi Mudah Cepat & Praktis\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003ePilihan Permainan Terlengkap Gampang Menang\u003c\/strong\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp data-mce-fragment=\"1\"\u003eBerikan Pilihan Permainan Terlengkap Gampang Menang dengan “MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru”. Layanan Live Chat 24 Jam Non Stop, yang melambangkan perasaan cinta dan kasih sayang. Dirangkai indah dan dibalut dengan\u003cspan data-mce-fragment=\"1\"\u003e \u003c\/span\u003e\u003cem data-mce-fragment=\"1\"\u003ewrapping paper\u003c\/em\u003e, lalu dihias dengan pita grosgrain premium yang mempermanis tampilannya. Koleksi buket bunga bernuansa warna merah dan hitam ini cocok untuk momen perayaan hari Valentine yang membawa kebahagiaan!\u003c\/p\u003e\n\u003ctable data-mce-fragment=\"1\" width=\"100%\"\u003e\n\u003ctbody data-mce-fragment=\"1\"\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd data-mce-fragment=\"1\"\u003eSKU\u003c\/td\u003e\n\u003ctd data-mce-fragment=\"1\"\u003eOBIBUN1205\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd data-mce-fragment=\"1\"\u003eIsi\u003c\/td\u003e\n\u003ctd data-mce-fragment=\"1\"\u003e6 tangkai Mawar impor dan Caspea\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e","published_at":"2026-01-19T15:47:15+07:00","created_at":"2024-02-03T15:27:33+07:00","vendor":"Outerbloom","type":"Bunga Outerbloom","tags":["Bekasi","Bogor","Brand_Outerbloom","Buket Bunga","Bunga","Bunga Jakarta","card","Depok","engagement","formdate","Fresh Flower","Fresh Inhouse","icon-card","icon-fresh","icon-sameday","Inhouse","jakarta","Jenis_Bunga Mawar","just because","MonSatBuketInhouse","newborn","Pengiriman_Bekasi","Pengiriman_Depok","Pengiriman_Jakarta","Pengiriman_Tangerang","pickup-itcinhouse","ship-inhouse","sorry","Style_Classic","Style_Modern","takeoutselfpickup","Tangerang","thank you","Untuk_Anniversary","Untuk_Congratulations","Untuk_Hari Raya","Untuk_Valentine","Untuk_Wisuda","uploadfotocard","upsell","upsell-inhouse","Warna_Red"],"price":27770000,"price_min":27770000,"price_max":33500000,"available":true,"price_varies":true,"compare_at_price":64500000,"compare_at_price_min":64500000,"compare_at_price_max":64500000,"compare_at_price_varies":false,"variants":[{"id":48262696042711,"title":"Innocent Pink","option1":"Innocent Pink","option2":null,"option3":null,"sku":"[C]OBIBUN1236","requires_shipping":true,"taxable":true,"featured_image":{"id":45491844448471,"product_id":8262739886295,"position":2,"created_at":"2026-02-03T15:46:56+07:00","updated_at":"2026-02-14T10:06:00+07:00","alt":null,"width":850,"height":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-classic-Bouquet-Innocent-Pink.jpg?v=1771038360","variant_ids":[48262696042711]},"available":true,"name":"MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru - Innocent Pink","public_title":"Innocent Pink","options":["Innocent Pink"],"price":27770000,"weight":0,"compare_at_price":64500000,"inventory_quantity":0,"inventory_management":"shopify","inventory_policy":"continue","barcode":"","featured_media":{"alt":null,"id":36968089354455,"position":2,"preview_image":{"aspect_ratio":1.0,"height":850,"width":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-classic-Bouquet-Innocent-Pink.jpg?v=1771038360"}},"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":48262693257431,"title":"Fiery Red","option1":"Fiery Red","option2":null,"option3":null,"sku":"[C]OBIBUN1205","requires_shipping":true,"taxable":true,"featured_image":{"id":39970442182871,"product_id":8262739886295,"position":1,"created_at":"2024-02-03T15:40:15+07:00","updated_at":"2026-02-14T10:06:00+07:00","alt":null,"width":850,"height":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6.jpg?v=1771038360","variant_ids":[48262693257431]},"available":true,"name":"MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru - Fiery Red","public_title":"Fiery Red","options":["Fiery Red"],"price":33500000,"weight":0,"compare_at_price":64500000,"inventory_quantity":0,"inventory_management":"shopify","inventory_policy":"continue","barcode":"","featured_media":{"alt":null,"id":32593157062871,"position":1,"preview_image":{"aspect_ratio":1.0,"height":850,"width":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6.jpg?v=1771038360"}},"requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6.jpg?v=1771038360","\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-classic-Bouquet-Innocent-Pink.jpg?v=1771038360","\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_3_6db09e1a-75b0-4554-9330-12f5c9948793.jpg?v=1770108424","\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_4_5ebf5419-e9a7-4948-966b-4ecbf7b47cec.jpg?v=1770108424"],"featured_image":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6.jpg?v=1771038360","options":["Variants"],"media":[{"alt":null,"id":32593157062871,"position":1,"preview_image":{"aspect_ratio":1.0,"height":850,"width":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6.jpg?v=1771038360"},"aspect_ratio":1.0,"height":850,"media_type":"image","src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6.jpg?v=1771038360","width":850},{"alt":null,"id":36968089354455,"position":2,"preview_image":{"aspect_ratio":1.0,"height":850,"width":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-classic-Bouquet-Innocent-Pink.jpg?v=1771038360"},"aspect_ratio":1.0,"height":850,"media_type":"image","src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-classic-Bouquet-Innocent-Pink.jpg?v=1771038360","width":850},{"alt":null,"id":32593157095639,"position":3,"preview_image":{"aspect_ratio":1.0,"height":850,"width":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_3_6db09e1a-75b0-4554-9330-12f5c9948793.jpg?v=1770108424"},"aspect_ratio":1.0,"height":850,"media_type":"image","src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_3_6db09e1a-75b0-4554-9330-12f5c9948793.jpg?v=1770108424","width":850},{"alt":null,"id":32593157128407,"position":4,"preview_image":{"aspect_ratio":1.0,"height":850,"width":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_4_5ebf5419-e9a7-4948-966b-4ecbf7b47cec.jpg?v=1770108424"},"aspect_ratio":1.0,"height":850,"media_type":"image","src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_4_5ebf5419-e9a7-4948-966b-4ecbf7b47cec.jpg?v=1770108424","width":850}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cul data-mce-fragment=\"1\"\u003e\n\u003cli data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003eLayanan Live Chat 24 Jam Non Stop\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003eTransaksi Mudah Cepat & Praktis\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003ePilihan Permainan Terlengkap Gampang Menang\u003c\/strong\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp data-mce-fragment=\"1\"\u003eBerikan Pilihan Permainan Terlengkap Gampang Menang dengan “MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru”. Layanan Live Chat 24 Jam Non Stop, yang melambangkan perasaan cinta dan kasih sayang. Dirangkai indah dan dibalut dengan\u003cspan data-mce-fragment=\"1\"\u003e \u003c\/span\u003e\u003cem data-mce-fragment=\"1\"\u003ewrapping paper\u003c\/em\u003e, lalu dihias dengan pita grosgrain premium yang mempermanis tampilannya. Koleksi buket bunga bernuansa warna merah dan hitam ini cocok untuk momen perayaan hari Valentine yang membawa kebahagiaan!\u003c\/p\u003e\n\u003ctable data-mce-fragment=\"1\" width=\"100%\"\u003e\n\u003ctbody data-mce-fragment=\"1\"\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd data-mce-fragment=\"1\"\u003eSKU\u003c\/td\u003e\n\u003ctd data-mce-fragment=\"1\"\u003eOBIBUN1205\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd data-mce-fragment=\"1\"\u003eIsi\u003c\/td\u003e\n\u003ctd data-mce-fragment=\"1\"\u003e6 tangkai Mawar impor dan Caspea\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e"};
          
          
          // Handle first option changes to update available second options
          $('.swatch[data-option-index="0"] input[type="radio"]').on('change', function() {
            // Update single-option-selector first
            var optionValue = $(this).val();
            var $selector = $('.single-option-selector').eq(0);
            if ($selector.length > 0) {
              $selector.val(optionValue).trigger('change');
            }
            
            // Then update available variant options
            updateAvailableVariantOptions();
          });
          
          // Function to update available vase options based on selected variant
          function updateAvailableVariantOptions() {
            var selectedVariant = $('.swatch[data-option-index="0"] input[type="radio"]:checked').val();
            
            if (!selectedVariant) return;
            
            // Get available vase options for the selected variant
            var availableVases = getAvailableVasesForVariant(selectedVariant);
            
            // Update vase swatch visibility and availability
            $('.swatch[data-option-index="1"] .swatch-element').each(function() {
              var vaseValue = $(this).data('value');
              var $input = $(this).find('input[type="radio"]');
              var $label = $(this).find('label');
              
              if (availableVases.includes(vaseValue)) {
                // Show and enable this vase option
                $(this).show().removeClass('soldout unavailable').addClass('available');
                $input.prop('disabled', false);
                $label.removeClass('disabled');
              } else {
                // Hide or disable this vase option
                $(this).hide().removeClass('available').addClass('unavailable');
                $input.prop('disabled', true).prop('checked', false);
                $label.addClass('disabled');
              }
            });
            
            // Auto-select first available vase if none is selected
            var $checkedVase = $('.swatch[data-option-index="1"] input[type="radio"]:checked:enabled');
            if ($checkedVase.length === 0) {
              var $firstAvailable = $('.swatch[data-option-index="1"] input[type="radio"]:enabled').first();
              if ($firstAvailable.length > 0) {
                $firstAvailable.prop('checked', true).trigger('change');
              }
            }
          }
          
          // Function to get available vases for a specific variant
          function getAvailableVasesForVariant(variantValue) {
            var availableVases = [];
            
            // Loop through all product variants to find matching vases
            if (productData && productData.variants) {
              productData.variants.forEach(function(variant) {
                if (variant.available && variant.option1 === variantValue) {
                  var vaseOption = variant.option2;
                  if (vaseOption && !availableVases.includes(vaseOption)) {
                    availableVases.push(vaseOption);
                  }
                }
              });
            }
            
            return availableVases;
          }
          
          // Initialize vase options on page load
          setTimeout(function() {
            updateAvailableVariantOptions();
          }, 100);
          
        });
      </script>
    </div>
  


    
  


<style>
  .select2-results__option[aria-disabled] {
    display: none;
  }

  .towel-bordir {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-around;
  }

  /* iOS Mobile specific styles */
  @media screen and (max-width: 768px) {
    .ios .form-group-variant .variant-metafield {
      display: block !important;
      width: 100% !important;
      padding: 12px 16px !important;
      border: 1px solid #212121 !important;
      background: #fff !important;
      font-size: 16px !important; /* Prevents zoom on iOS */
      -webkit-appearance: none !important;
      -moz-appearance: none !important;
      appearance: none !important;
      background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6,9 12,15 18,9'%3e%3c/polyline%3e%3c/svg%3e") !important;
      background-repeat: no-repeat !important;
      background-position: right 12px center !important;
      background-size: 16px !important;
      color: #333 !important;
      min-height: 44px !important; /* iOS minimum touch target */
    }

    .ios .form-group-variant .variant-metafield:focus {
      outline: none !important;
      border-color: #007AFF !important;
      box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.1) !important;
    }

    .ios .form-group-variant .variant-metafield option {
      padding: 12px 16px !important;
      font-size: 16px !important;
      color: #333 !important;
      background: #fff !important;
    }

    .ios .form-group-variant .variant-metafield option:checked {
      background: #007AFF !important;
      color: #fff !important;
    }

    .ios .form-group-variant .variant-metafield option:disabled {
      color: #999 !important;
      background: #f5f5f5 !important;
    }

    /* Hide Select2 on iOS mobile for this specific element */
    .ios .form-group-variant .select2-container {
      display: none !important;
    }

    /* Ensure label styling on iOS */
    .ios .form-group-variant label {
      font-size: 14px !important;
      font-weight: 600 !important;
      color: #333 !important;
      margin-bottom: 8px !important;
    }
  }

  /* Non-iOS mobile styles */
  @media screen and (max-width: 768px) {
    body:not(.ios) .form-group-variant .variant-metafield {
      display: block !important;
      width: 1px !important;
      padding: 0 !important;
      border-color: #fff !important;
    }
  }
</style>




<script>
  // Detect iOS and add class to body
  function detectIOS() {
    const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
    if (isIOS) {
      document.body.classList.add('ios');
      
      // Initialize native select for iOS on variant metafields
      setTimeout(function() {
        initIOSVariantMetafields();
      }, 100);
    }
    return isIOS;
  }

  function initIOSVariantMetafields() {
    const isIOS = document.body.classList.contains('ios');
    if (!isIOS) return;

    // Find all variant metafield selects
    const variantSelects = document.querySelectorAll('.form-group-variant .variant-metafield');
    
    variantSelects.forEach(function(select) {
      // Destroy Select2 if it exists
      if ($(select).hasClass('select2-hidden-accessible')) {
        $(select).select2('destroy');
      }
      
      // Remove Select2 classes
      select.classList.remove('select2-hidden-accessible');
      
      // Show the native select
      select.style.display = 'block';
      select.style.width = '100%';
      
      // Add iOS specific event listeners
      select.addEventListener('focus', function() {
        this.style.borderColor = '#007AFF';
        this.style.boxShadow = '0 0 0 3px rgba(0, 122, 255, 0.1)';
      });
      
      select.addEventListener('blur', function() {
        this.style.borderColor = '#ddd';
        this.style.boxShadow = 'none';
        
        // Clear error styling when field loses focus (if it has value)
        if (this.value && this.value !== '') {
          const fieldContainer = this.closest('.form-group-variant');
          if (fieldContainer) {
            fieldContainer.classList.remove('field-error');
            const existingError = fieldContainer.querySelector('.error-message');
            if (existingError) {
              existingError.remove();
            }
          }
        }
      });
      
      select.addEventListener('change', function() {
        // Trigger any existing change handlers
        $(this).trigger('change');
        
        // Clear error styling when value changes (if it has value)
        if (this.value && this.value !== '') {
          const fieldContainer = this.closest('.form-group-variant');
          if (fieldContainer) {
            fieldContainer.classList.remove('field-error');
            const existingError = fieldContainer.querySelector('.error-message');
            if (existingError) {
              existingError.remove();
            }
          }
        }
      });
    });
  }

  // Run detection on page load
  document.addEventListener('DOMContentLoaded', function() {
    detectIOS();
  });

  // Also run immediately in case DOM is already loaded
  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', detectIOS);
  } else {
    detectIOS();
  }

  
  
  
</script>






<select
  name="id[]"
  id="productSelect"
  class="product-single__variants ignore hide"
>
  
    
      
      <option
        
          selected="selected"
        
        data-sku="[C]OBIBUN1236"
        value="48262696042711"
      >
        Innocent Pink
      </option>

    
  
    
      
      <option
        
        data-sku="[C]OBIBUN1205"
        value="48262693257431"
      >
        Fiery Red
      </option>

    
  
</select>



































































































<script src="//outerbloom.com/cdn/shop/t/138/assets/jquery.magnific-popup.min.js?v=184369421263510081681752652422" type="text/javascript"></script>

<script>
  $('.size-chart-open-popup').magnificPopup({
    type:'inline',
    midClick: true
  });
</script>

  
  
  
  <div class="upload-image-preview">
    
    
    
    
    
    <style>
  .file-dnd * {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
  }
  .file-dnd {
    width: 100%;
    height: 250px;
    border: 1px solid #ddd;
    border-radius: 10px;
    padding: 15px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    /* box-shadow: 0px 2px 10px 2px rgba(0,0,0,0.05); */
    margin: auto;
  }
  .file-dnd input {
    display: none;
  }
  .file-dnd .before-upload {
    border: 1px dashed #888;
    flex: 1;
    border-radius: 5px;
    display: flex;
    justify-content: center;
    align-items: center;
    text-align: center;
    cursor: pointer;
  }
  .file-dnd .before-upload > div {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
  }
  .file-dnd .before-upload > div h4 {
    width: 150px;
  }
  .file-dnd .before-upload > div p {
    font-size: 12px !important;
    color: #555;
  }
  .file-dnd.active .before-upload {
    border: 1px solid #5750d9;
    background-color: #f5f5ff;
  }
  .file-dnd .after-upload {
    position: relative;
    display: none;
  }
  .file-dnd .after-upload img {
    width: 100%;
    border-radius: 5px;
    max-height: 180px;
    object-fit: contain;
    display: block;
  }
  .file-dnd .after-upload .clear-btn {
    position: absolute;
    top: 10px;
    right: 10px;
    background: rgba(0, 0, 0, 0.5);
    width: 15px;
    height: 15px;
    text-align: center;
    line-height: 15px;
    border-radius: 50%;
    color: #fff;
    cursor: pointer;
    font-size: 14px;
  }
</style>
<div
  class="file-dnd mb-3"
  
    style="display: none"
  
>
  <label for="upload-photo">Upload your Photo:</label>
  <input type="file" id="upload-photo" accept="image/*">
  <input type="hidden" data-properties="Photo">
  <div class="before-upload">
    <div>
      <svg id="surface1" xmlns="http://www.w3.org/2000/svg" width="33.053" height="41.719" viewBox="0 0 33.053 41.719">
  <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>
  <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>
  <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>
</svg>

      <h4>Drag & Drop Photo file or Browse</h4>
      <p>Supports: JPEG, PNG, GIF, TIFF</p>
    </div>
  </div>
  <div class="after-upload">
    <div class="clear-btn">&times;</div>
    <img src="" width="" height="">
  </div>
</div>
<script>

  function applyDndFile(el) {
    const parent = document.querySelector(".file-dnd")
    const beforeUploadEl = el.querySelector(".before-upload")
    const afterUploadEl = el.querySelector(".after-upload")
    const inputFile = el.querySelector("input[type=file]")
    const imagePreview = el.querySelector(".after-upload img")
    const clearBtn = el.querySelector(".after-upload .clear-btn")
    const inputProps = parent.querySelector("[data-properties]");

    async function upload(name, uri, type) {
      try {
        const filename = name.split('.')[0]
        let formData = new FormData(); 
        formData.append("file", uri);
        const response = await fetch(`https://app.asmaraku.com/api/upload?name=${filename}&dir=gift&type=${type}&shop=outerbloom1.myshopify.com`, {
          method: "POST", 
          body: formData
        })
        if(response) {
          const res = await response.json()
          return res
        }
      } catch(err){
        console.log(err)
      }
    }

    function showImagePreview(img) {
      if(img){
        const blobUrl = URL.createObjectURL(img)
        imagePreview.src = blobUrl
        afterUploadEl.style.display = "block"
        beforeUploadEl.style.display = "none"
      }
    }

    beforeUploadEl.addEventListener("click", (e) => {
      e.preventDefault()
      inputFile.click()
    })

    inputFile.addEventListener("change", async (e) => {
      e.preventDefault()
      showImagePreview(e.target.files[0])
      var uploadData = await upload(e.target.files[0].name, e.target.files[0], e.target.files[0].type)
      inputProps.value = uploadData?.url
    })

    clearBtn.addEventListener("click", (e) => {
      afterUploadEl.style.display = "none"
      beforeUploadEl.style.display = "flex"
      inputProps.value = ""
    })

    beforeUploadEl.addEventListener("dragover", (e) => {
      e.preventDefault()
      el.classList.add("active")
    })

    beforeUploadEl.addEventListener("dragleave", (e) => {
      e.preventDefault()
      el.classList.remove("active")
    })

    beforeUploadEl.addEventListener("drop", async (e) => {
      e.preventDefault()
      el.classList.remove("active")
      showImagePreview(e.dataTransfer.files[0])
      var uploadData = await upload(e.dataTransfer.files[0].name, e.dataTransfer.files[0], e.dataTransfer.files[0].type)
      console.log(uploadData)
      inputProps.value = uploadData?.url
    })
  }

  applyDndFile(document.querySelector(".file-dnd"))

  $(document).ready(function(){
    $(".variant-swatch").change(function(){
      const v = $(this).val().toLowerCase()
      const list = ["photo", "custom one side", "custom two side"]
      if(list.some(item => v.includes(item))) return $(".file-dnd").show()
      $(".file-dnd").hide()
      $(".file-dnd").find("[data-properties]").val("")
      $(".after-upload").hide()
      $(".before-upload").css("display", "flex")
    })
  })
</script>

  </div>
  
    
    <div class="delivery-city mb-4">
  <h4 class="fw-600 text-uppercase mb-15">Delivery City</h4>
  <div class="row justify-content-between m-0">
    <select id="cities" class="form-control" required>
      <option value="">Choose Delivery City</option>
    </select>
  </div>
</div>

<style>
  /* Native select styling for #cities */
  #cities {
    width: 100%;
    padding: 10px 35px 10px 12px;
    font-size: 14px;
    border: 1px solid #ccc;
    background-color: #fff;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e") !important;
    background-repeat: no-repeat !important;
    background-position: right 10px center !important;
    background-size: 12px !important;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    cursor: pointer;
  }

  #cities {
    /* Menghilangkan panah di Chrome, Safari, dan Firefox */
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
  }
  
  /* Hide default arrow in IE */
  #cities:-ms-expand {
    display: none;
  }
  
  #cities:focus {
    border-color: #212121;
    outline: none;
    box-shadow: 0 0 0 2px rgba(33, 33, 33, 0.1);
  }
  
  #cities:hover {
    border-color: #999;
  }
  
  #cities option {
    padding: 10px;
  }
</style>

<script>
  // Cities dropdown uses native HTML select
</script>

    
  <div id="row-delivery-date" class="row m-0 mb-3">
    <h4 class="fw-600 text-uppercase col-12 p-0 mb-15">Delivery Date</h4>
    <div id="deliveryDate" class="m-0"></div>
    <div id="deliveryDateFull">
      <div class="">
        <input
          type="text"
          id="full-date"
          class="date-full calendarbutton btn steps-btn btn-date-time mb-0"
          value="Full Calendar"
        >
        <label for="full-date"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>icon-arrow-right</title>
<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>
</svg></label>
      </div>
      <button class="btnChangeDeliveryDate hide">Change Delivery Date</button>
    </div>
    <div class="form-group p-0">
      <input type="text" id="propDeliveryDate" required class="hide">
    </div>
  </div>
  
    <p id="noteDeliveryDate" class="mb-3"></p>
  
  
    <div id="row-delivery-time" class="row m-0 mb-3">
      <h4 class="fw-600 text-uppercase col-12 p-0 mb-15">Delivery Time</h4>
      <div id="deliveryTime" class="d-flex w-100 m-0"></div>
      <div class="form-group p-0">
        <input type="text" id="propDeliveryTime" class="hide" required>
      </div>
    </div>
  


  
  
  <div id="personalizeBtn">
    
    
    
    
    <button id="btnPurchase"
      class="btn text-uppercase w-100 fw-400"
      
      
    >
      
        MAKE IT PERSONAL ➔
      
    </button>
    <div class="button-share-wishlist d-flex justify-content-around mt-3">
      <div class="button-share text-center">
        <p id="shareButton" class="d-flex gap-2"><span>SHARE</span><svg xmlns="http://www.w3.org/2000/svg" width="15" height="13" viewBox="0 0 15 13" fill="none">
  <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="#212121"/>
</svg>
</p>
      </div>
      <div class="button-wishlist text-center">
        <button type="button" id="wishButton" class="d-flex gap-2 wishlist-toggle" data-wishlist-button data-product-handle="signature-midnight-kiss-bouquet-classic" style="background: none; border: none; cursor: pointer; padding: 0; color: inherit; align-items: center; justify-content: center;">
          <span>WISHLIST</span>
          <div class="wishlist-icon-wrapper" style="display: flex; align-items: center; justify-content: center; width: 16px; height: 22px;">
            <svg class="wishlist-icon-outline" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:block;">
              <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.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="#212121"/>
            </svg>
            <svg class="wishlist-icon-filled" xmlns="http://www.w3.org/2000/svg" width="24" height="21" viewBox="0 0 24 21" fill="none" style="display:none;">
              <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.8125Z" fill="#640000"/>
            </svg>
          </div>
        </button>
      </div>
    </div>
  </div>
</div>
<div class="purchasePopup purchasePopupSpotify" style="display: none;">
  <div class="purchaseArea">
    <div class="sectionPurchase sectionPurchaseSpotify">
      <div class="wrapperPurchase">
        <div class="headerPurchase">
          <h3>personalize spotify photo print</h3>
          <a class="close-purchase-popup">
            <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none">
              <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>
            </svg>
          </a>
        </div>
        <div class="contentPurchase">
          <div class="spotifyAddons"></div>
        </div>

        <div class="purchase-button btn-addon row m-0" style="display: none;">
          <div class="col-12 col-lg-2 text-left mb-2 p-0">
            <button class="back-purchase-button back-addon text-uppercase">
              <svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="http://www.w3.org/2000/svg">
                <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>
              </svg>
              <span>Back</span>
            </button>
          </div>
          <div class="col-12 col-lg-10 text-right" style="display: flex;justify-content: end;gap: 20px;">
            <button class="btn next-purchase-button next-addon text-uppercase">
              <span>continue without add-ons</span>
            </button>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

<style>
  #PBarNextFrameWrapper {
    display: none;
  }
  #backgroundPopup {
    display: none;
    position: fixed;
    _position: absolute;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    background: rgb(117 117 117 / 24%);
    z-index: 1;
  }
  .sectionPurchase {
    height: 100%;
    position: relative;
    max-width: 1344px;
    background-color: #fff;
    padding: 0;
    overflow: hidden; /* Changed from auto to hidden */
    display: flex;
    flex-direction: column;
  }
  .sectionPurchase.purchaseAddonSpotify {
    max-width: 1070px!important;
    max-height: 765px!important;
  }
  .sectionPurchaseBoard {
    max-width: 872px!important;
    max-height: 821px!important;
  }
  .purchaseAddonSpotify .btn-action {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    display: flex;
    gap: 10px;
  }
  .wrapperPurchase {
    position: relative;
    height: 100%;
    display: flex;
    flex-direction: column;
  }
  
  /* New styles for scrollable content and sticky button */
  .purchase-content {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 20px;
  }
  
  .purchase-button-wrapper {
    position: sticky;
    bottom: 0;
    background-color: #fff;
    border-top: 1px solid #e0e0e0;
    padding: 15px 0;
    margin-top: auto;
    z-index: 10;
  }
  
  .purchasePopup {
    display: none;
    position: fixed;
    background: rgb(117 117 117 / 24%);
    z-index: 999;
    padding: 40px;
    font-size: 13px;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }
  .popupPurchaseClose{
    font-size:14px;
    line-height:14px;
    right:45px;
    top:45px;
    position:absolute;
    color:#6fa5fd;
    font-weight:700;
    display:block;
    cursor: pointer;
  }

  .headerPurchase {
    margin-bottom: 30px;
    display: flex;
    justify-content: space-between;
  }

  .headerPurchase h3 {
    font-size: 16px;
    text-transform: uppercase;
  }

  .sectionPurchaseBoard .headerPurchase {
    margin-bottom: 15px;
  }

  .sectionPurchaseBoard .formAddressPurchase {
    padding-top: 0;
  }

  .purchaseArea {
    position: relative;
    height: 100%;
  }

  .purchaseArea h4 {
    width: 100%;
    font-size: 12px;
    font-weight: 600;
    margin-bottom: 10px;
    text-transform: uppercase;
  }

  .menuPurchase {
    margin-bottom: 30px;
  }

  .menuPurchase ul {
    list-style-type: none;
    margin: 0;
  }

  .menuPurchase ul li {
    display: inline-block;
    border: 1px solid #212121;
    padding: 5px 20px;
    margin-right: 5px;
    margin-bottom: 10px;
    font-size: 12px;
    font-weight: 400;
  }

  .menuPurchase ul li:hover, .menuPurchase ul li.selected {
    background-color: #212121;
    color: #ffffff;
  }

  .contentPurchase h5 {
      font-size: 12px;
      margin-bottom: 10px;
      font-weight: 400;
      overflow: hidden;
  }

  /* Card */

  #itemCards {
    max-height: 430px;
    overflow: auto;
  }

  .item-cards {
      width: 100%;
  }
  .item-card.selected {
      border: 1px solid #212121;
  }
  .item-card:hover {
      border: 1px solid #C4C4C4;
  }
  .item-cards .item-card {
    position: relative;
    width: calc(33% - 10px);
    max-width: calc(33% - 10px);
    flex: 0 0 calc(33% - 10px);
    margin-bottom: 20px;
  }
  .item-cards .item-card label,
  .item-addons .item-addon label {
      position: absolute;
      left: 0;
      width: 100%;
      height: 100%;
  }
  .item-cards .item-card .card-image img,
  .item-addons .item-addon .card-image img {
      display: block;
      width: 100%;
  }
  .item-card .card-meta,
  .item-addon .card-meta {
      padding: 10px 5px 5px;
  }
  .item-card.selected .card-meta,
  .item-addon.selected .card-meta,
  .item-card.selected .card-qty {
      background-color: #212121;
      color: #fff;
      visibility: visible!important;
  }
  .item-card:hover .card-meta,
  .item-addon:hover .card-meta,
  .item-card:hover .card-qty {
      background-color: #C4C4C4;
      color: #fff;
      visibility: visible!important;
  }
  .item-cards .item-card p,
  .item-addons .item-addon p {
    font-size: 12px !important;
    margin: 0;
    font-weight: 600;
  }
  .item-card .card-meta input,
  .item-addon .card-meta input {
      display: none;
  }
  .item-cards .item-card h5,
  .item-addons .item-addon h5 {
    font-size: 14px;
  }

  @media (max-width: 768px) {
    .item-cards .item-card {
        width: calc(50% - 10px);
        max-width: calc(50% - 10px);
        flex: 0 0 calc(50% - 10px);
        margin-bottom: 0;
    }
  }

  .card-qty {
    display: flex;
    padding: 5px;
    visibility: hidden;
    background-color: #fff !important;
    z-index: 999;
  }
  .card-qty a {
    border-width: 1px;
    width: 30%;
    cursor: pointer;
    text-align: center;
    align-self: center;
    height: 28px;
    display: block;
    position: relative;
  }
  .card-qty a svg {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    text-align: center;
  }
  input.btn-qty {
    border-width: 0px;
    border-radius: 0;
    background-color: #fff;
    -webkit-appearance: none;
    box-shadow: none !important;
    -webkit-box-shadow: none !important;
    -moz-box-shadow: none!important;
    width: 40%;
    border-left: 1px solid #c4c4c4;
    border-right: 1px solid #c4c4c4;
    padding: 0;
  }

  .sectionPurchaseBoard #itemAddons .item-card {
    width: calc(20% - 15px);
    max-width: calc(20% - 15px);
    flex: 0 0 calc(20% - 15px);
  }

  .purchase-button {
    width: 100%;
    padding: 0; /* Reset padding as it's now handled by wrapper */
    margin: 0;
  }

  .sectionPurchaseBoard .purchase-button {
    margin-top: 0 !important; /* Reset margin */
  }

  .back-purchase-button, .back-spotify {
      width: 139px;
      border: 1px solid;
      height: 43px;
  }
  .purchase-button .btn {
    width: 297px;
    height: 43px;
    background-color: #212121;
    color: #ffffff;
  }
  .purchase-button .btn[disabled] {
    background-color: #EEEEEE;
  }
  .back-purchase-button svg, .back-spotify svg {
    align-self: center;
    vertical-align: middle;
    margin-right: 10px;
  }

  #purchaseProduct .row .error {
    font-size: 12px !important;
    color: rgb(231, 76, 60);
    margin-top: 5px;
  }

  .reviewCardPurchase {
    max-width: 448px;
    float: right;
  }

  .addonsPurchase .addon-item {display: flex;justify-content: space-between;}
  .addon-item * {align-self: center;font-size: 12px;}
  .addon-itm-title {width: 360px;}
  .addon-itm-line-price {color: #757575;width: 80px;justify-content: space-between;display: flex;}

  .propsAddonSpotify p {
    margin: 0;
    display: flex;
    font-size: 12px !important;
    margin-bottom: 5px;
  }
  .propsAddonSpotify p span:first-child {
    text-transform: uppercase;
    font-weight: 600;
    -ms-flex: 0 0 150px;
    flex: 0 0 150px;
    max-width: 150px;
  }

  .addonsPurchase .addons {
    max-height: 250px;
    overflow: auto;
  }

  .btn .loading:after {
    content: "";
    display: inline-block;
    width: 20px;
    height: 20px;
    padding: 3px;
    aspect-ratio: 1;
    border-radius: 50%;
    background: #FFFFFF;
    --_m: conic-gradient(#0000 10%, #212121), linear-gradient(#212121 0 0) content-box;
    -webkit-mask: var(--_m);
    mask: var(--_m);
    -webkit-mask-composite: source-out;
    mask-composite: subtract;
    animation: l3 1s infinite linear;
    margin: auto;
    vertical-align: middle;
    margin-left: 10px;
  }

  #qrcode img, #qrcode canvas {
    width: 50px;
    position: absolute;
    top: 12px;
    left: 16px;
  }

  .t-preview {
    position: absolute;
    top: 17px;
    left: 75px;
  }
  .t-preview p {
    margin: 0;
    font-size: 12px !important;
  }
  .t-preview .h3 {
    font-size: 16px !important;
    margin-bottom: 5px;
    font-weight: 600;
  }
  .scanCard {
    width: 100%;
    border: 1px solid;
    height: 76px;
    background-color: #fff;
  }
  .scanCard > div > img {
    position: absolute;
    right: 0;
    width: 55px;
  }

  @keyframes l3 {
    100% {
      transform: rotate(1turn);
    }
  }

  @media (min-width: 991px) {
    .sectionPurchase {
      height: 100%;
      position: relative;
      max-width: 1344px;
      background-color: #fff;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
    }
    .headerPurchase h3 {
      font-size: 20px;
    }
    .purchaseArea h4 {
      font-size: 16px;
    }

    .menuPurchase ul li {
        font-size: 16px;
    }
    
    .contentPurchase {
      margin-bottom: 30px;
    }
    .contentPurchase h5 {
      font-size: 16px;
    }

    .item-cards .item-card p,
    .item-addons .item-addon p {
      font-size: 16px !important;
    }

    .cards {
      float: right;
      width: 400px;
    }

    .item-cards .item-card {
      width: calc(25% - 30px);
      max-width: calc(25% - 30px);
      flex: 0 0 calc(25% - 30px);
      margin-right: 30px;
    }

      #itemAddons .item-card {
        position: relative;
        width: calc(16% - 40px);
        max-width: calc(16% - 40px);
        flex: 0 0 calc(16% - 40px);
      }
      
    .purchase-button-wrapper {
        padding: 10px 20px;
    }
  }

  @media (max-width: 1200px) {
    .item-cards .item-card {
      width: calc(33% - 30px);
      max-width: calc(33% - 30px);
      flex: 0 0 calc(33% - 30px);
    }
  }

  @media (max-width: 992px) {
    .purchasePopup {
      padding: 0;
    }
    .item-cards .item-card h5,
    .item-addons .item-addon h5 {
      max-height: 30px;
    }

    .back-purchase-button, .back-spotify, .next-purchase-button {
        width: 100%;
    }
    .addon-itm-title {
      width: 300px;
    }
    .addon-itm-line-price {
      margin-right: 10px;
    }
    .t-preview {
      top: 10px;
    }

    .card-qty a {
      height: 15px;
    }
    
    .purchase-button-wrapper {
      padding: 15px;
    }
  }

  @media (max-width: 576px) {
    .purchase-button .btn {
        width: 100%!important;
    }
    .purchase-button > .col-12 {
      padding-left: 0;
      padding-right: 0;
    }
  }
</style>


<div class="purchasePopup">
  <div class="purchaseArea">
    
      <div class="sectionPurchase purchasePersonalize">
        <div class="wrapperPurchase">
          <div class="purchase-content">
            <div class="headerPurchase">
  <h3 class="text-uppercase">
    
      MAKE IT PERSONAL ➔
    
  </h3>
  <a class="close-purchase-popup">
  <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none">
    <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"/>
  </svg>
</a>

</div>
<div class="contentPurchase">
  <div class="row">
    
      <div class="col-12 col-lg-7">
        <div class="menuPurchase">
          <h4 class="text-uppercase">choose your occasion</h4>
          <ul>
            
              <li
                class="item-occassion selected"
                data-occassion="greeting-card-all"
                
              >
                General
              </li>
            
              <li
                class="item-occassion"
                data-occassion="greeting-card-birthday"
                
              >
                Birthday
              </li>
            
              <li
                class="item-occassion"
                data-occassion="greeting-card-anniversary"
                
              >
                Anniversary
              </li>
            
              <li
                class="item-occassion"
                data-occassion="greeting-card-newborn"
                
              >
                Newborn
              </li>
            
              <li
                class="item-occassion"
                data-occassion="greeting-card-wedding"
                
              >
                Wedding
              </li>
            
              <li
                class="item-occassion"
                data-occassion="greeting-card-graduation"
                
              >
                Graduation
              </li>
            
              <li
                class="item-occassion"
                data-occassion="greeting-card-mothers-day"
                
              >
                Mother's Day
              </li>
            
              <li
                class="item-occassion"
                data-occassion="greeting-card-valentine"
                
              >
                Valentine
              </li>
            
              <li
                class="item-occassion"
                data-occassion="greeting-card-others"
                
                  style="display: none"
                
              >
                Others
              </li>
            
          </ul>
        </div>
        <div id="chooseCard">
          <h4 class="text-uppercase">choose your card design</h4>
          <div
            id="itemCards"
            class="item-cards d-flex mb-4"
          >
            <div class="row m-0 items-card w-100">
              <p style="margin: 50px auto;text-align: center;font-size: 13px !important;">
                There are no card items available.<br>
                Please choose an occasion above
              </p>
            </div>
          </div>
        </div>
      </div>
      <div class="col-12 col-lg-5">
        <div class="cards">
          <h4 class="mb-2">Personalize your Message</h4>
          
            <label class="font-weight-bold label-attach-foto"
              >Create a lasting memory. Attach a special photo or a video to cherish forever.</label
            >
          
          

<style>
  #greetingCard label {display: inline-block;color: #212121;margin-bottom: .5rem;font-size: 14px;font-weight: 400!Important;}
  
  
  /* Character counter positioning */
  .form-group.has-counter {
    position: relative;
  }
  
  .limit {
    position: absolute;
    top: 4px;
    right: -30px;
    font-size: 11px;
    color: #999;
    background: rgba(255, 255, 255, 0.9);
    padding: 2px 6px;
    border-radius: 3px;
    z-index: 10;
    pointer-events: none;
  }
  
  .form-group.has-counter input,
  .form-group.has-counter textarea {
    padding-right: 0px;
  }
  
  /* Prefix selector styles */
  .prefix-selector-wrapper {
    margin: 5px 0;
  }
  
  .prefix-selector-wrapper label {
    display: inline-block;
    margin-right: 10px;
    vertical-align: middle;
  }
  
  .prefix-selector {
    border: none;
    font-size: 12px;
    background: white;
    cursor: pointer;
    width: auto;
    max-width: 200px;
    padding: 5px;
    padding-right: 25px;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background-image: url('data:image/svg+xml;charset=UTF-8,%3Csvg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"%3E%3Cpath fill="%23333" d="M6 9L1 4h10z"/%3E%3C/svg%3E');
    background-repeat: no-repeat;
    background-position: right 5px center;
    background-size: 12px;
    vertical-align: middle;
  }
  
  .label-prefix {
    cursor: pointer;
    user-select: none;
    -webkit-user-select: none;
  }
  
  .label-prefix.hidden {
    display: none!important;
  }
</style>
<div id="greetingCard">
  
    <div class="greetingCard">
      <div class="steps-card-preview d-flex align-items-center justify-content-center">
        
          <div class="case-img-preview">
  <div class="remove-image" style="display: none">
    <svg class="icon icon-close" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>icon-close</title>
<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>
</svg>
  </div>
  <div class="btn-upload">
    <div>
      <img class="preview-image" src="" alt="" class="img" style="display: none">
    </div>
    <div class="icon-upload">
      <button type="button">
        <img class="ajax-loader" src="//outerbloom.com/cdn/shop/t/138/assets/ajax-loader.gif?v=41356863302472015721752652421" style="display: none">
        <div class="placeholder-image" onclick="">
          <label for="input-foto" onclick=""
            ><img src="//outerbloom.com/cdn/shop/t/138/assets/icon-media_60x.png?v=142273593979200676731752652420" width="" height="" alt=""
          ></label>
          <div class="button-empty-state" onclick="">
            <label for="input-foto" onclick="" class="btn btn-upload-image">
              <svg xmlns="http://www.w3.org/2000/svg" width="16" height="17" viewBox="0 0 16 17" fill="none">
                <path d="M0.75 16.75H15.25C15.6635 16.75 16 16.4135 16 16V1.5C16 1.0865 15.6635 0.75 15.25 0.75H0.75C0.3365 0.75 0 1.0865 0 1.5V16C0 16.4135 0.3365 16.75 0.75 16.75ZM0.5 1.5C0.5 1.4337 0.526339 1.37011 0.573223 1.32322C0.620107 1.27634 0.683696 1.25 0.75 1.25H15.25C15.3163 1.25 15.3799 1.27634 15.4268 1.32322C15.4737 1.37011 15.5 1.4337 15.5 1.5V16C15.5 16.0663 15.4737 16.1299 15.4268 16.1768C15.3799 16.2237 15.3163 16.25 15.25 16.25H0.75C0.683696 16.25 0.620107 16.2237 0.573223 16.1768C0.526339 16.1299 0.5 16.0663 0.5 16V1.5Z" fill="black"/>
                <path d="M10.25 7C10.8015 7 11.25 6.5515 11.25 6C11.25 5.4485 10.8015 5 10.25 5C9.6985 5 9.25 5.4485 9.25 6C9.25 6.5515 9.6985 7 10.25 7ZM10.25 5.5C10.349 5.4999 10.4459 5.52918 10.5283 5.58414C10.6106 5.6391 10.6749 5.71726 10.7128 5.80874C10.7507 5.90021 10.7607 6.00089 10.7414 6.09802C10.7221 6.19515 10.6744 6.28438 10.6044 6.35441C10.5344 6.42443 10.4452 6.47211 10.348 6.49141C10.2509 6.5107 10.1502 6.50075 10.0587 6.46281C9.96726 6.42486 9.8891 6.36063 9.83414 6.27825C9.77918 6.19587 9.7499 6.09903 9.75 6C9.75 5.7245 9.974 5.5 10.25 5.5Z" fill="black"/>
                <path d="M2.25 13.25H13.75C13.8163 13.25 13.8799 13.2237 13.9268 13.1768C13.9737 13.1299 14 13.0663 14 13V3C14 2.9337 13.9737 2.87011 13.9268 2.82322C13.8799 2.77634 13.8163 2.75 13.75 2.75H2.25C2.1837 2.75 2.12011 2.77634 2.07322 2.82322C2.02634 2.87011 2 2.9337 2 3V13C2 13.0663 2.02634 13.1299 2.07322 13.1768C2.12011 13.2237 2.1837 13.25 2.25 13.25ZM2.5 12.75V9.931C2.511 9.923 2.5235 9.9185 2.5335 9.9085L5.0915 7.3505C5.15698 7.28802 5.244 7.25317 5.3345 7.25317C5.425 7.25317 5.51202 7.28802 5.5775 7.3505L9.338 11.111C9.38419 11.1572 9.44662 11.1835 9.51194 11.1842C9.57725 11.185 9.64027 11.1601 9.6875 11.115L11.6205 9.279C11.6834 9.21542 11.7688 9.17902 11.8582 9.17762C11.9477 9.17622 12.0341 9.20992 12.099 9.2715L13.5 10.7975L13.5005 10.798V12.75H2.5ZM13.5 3.25V10.059L12.4595 8.926C12.3816 8.84733 12.2888 8.78493 12.1866 8.74244C12.0844 8.69995 11.9747 8.67822 11.864 8.6785H11.8635C11.7536 8.67802 11.6447 8.69924 11.543 8.74094C11.4414 8.78264 11.3489 8.844 11.271 8.9215L9.519 10.5855L5.931 6.997C5.6115 6.678 5.0565 6.6785 4.738 6.997L2.5 9.2355V3.25H13.5Z" fill="black"/>
              </svg>
              <span>Upload Image</span>
            </label>
            <label for="input-video" onclick="" class="btn btn-upload-video">
              <svg xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17" fill="none">
                <path d="M4.5 0.75H1.5C1.0655 0.75 0.75 1.0655 0.75 1.5V16C0.75 16.4345 1.0655 16.75 1.5 16.75H18.5C18.9345 16.75 19.25 16.4345 19.25 16V1.5C19.25 1.0655 18.9345 0.75 18.5 0.75H4.5ZM1.25 16V1.5C1.25 1.3435 1.3435 1.25 1.5 1.25H4.25V16.25H1.5C1.3435 16.25 1.25 16.1565 1.25 16ZM4.75 16.25V1.25H15.25V16.25H4.75ZM18.75 1.5V16C18.75 16.1565 18.6565 16.25 18.5 16.25H15.75V1.25H18.5C18.6565 1.25 18.75 1.3435 18.75 1.5Z" fill="black"/>
                <path d="M8.1385 5.792C8.10082 5.76682 8.057 5.75235 8.01173 5.75015C7.96646 5.74795 7.92145 5.75809 7.8815 5.7795C7.84169 5.80093 7.80844 5.83275 7.78528 5.87158C7.76213 5.91041 7.74993 5.95479 7.75 6V12C7.75002 12.0452 7.76231 12.0896 7.78556 12.1284C7.8088 12.1672 7.84213 12.1989 7.882 12.2203C7.92187 12.2416 7.96678 12.2517 8.01195 12.2496C8.05712 12.2474 8.10085 12.2331 8.1385 12.208L12.6385 9.208C12.6727 9.18517 12.7008 9.15424 12.7202 9.11795C12.7396 9.08167 12.7498 9.04115 12.7498 9C12.7498 8.95885 12.7396 8.91833 12.7202 8.88205C12.7008 8.84576 12.6727 8.81483 12.6385 8.792L8.1385 5.792ZM8.25 11.533V6.467L12.0495 9L8.25 11.533ZM3.25 4.75H2.25C2.1837 4.75 2.12011 4.77634 2.07322 4.82322C2.02634 4.87011 2 4.9337 2 5C2 5.0663 2.02634 5.12989 2.07322 5.17678C2.12011 5.22366 2.1837 5.25 2.25 5.25H3.25C3.3163 5.25 3.37989 5.22366 3.42678 5.17678C3.47366 5.12989 3.5 5.0663 3.5 5C3.5 4.9337 3.47366 4.87011 3.42678 4.82322C3.37989 4.77634 3.3163 4.75 3.25 4.75ZM2.25 3.25H3.25C3.3163 3.25 3.37989 3.22366 3.42678 3.17678C3.47366 3.12989 3.5 3.0663 3.5 3C3.5 2.9337 3.47366 2.87011 3.42678 2.82322C3.37989 2.77634 3.3163 2.75 3.25 2.75H2.25C2.1837 2.75 2.12011 2.77634 2.07322 2.82322C2.02634 2.87011 2 2.9337 2 3C2 3.0663 2.02634 3.12989 2.07322 3.17678C2.12011 3.22366 2.1837 3.25 2.25 3.25ZM3.25 6.75H2.25C2.1837 6.75 2.12011 6.77634 2.07322 6.82322C2.02634 6.87011 2 6.9337 2 7C2 7.0663 2.02634 7.12989 2.07322 7.17678C2.12011 7.22366 2.1837 7.25 2.25 7.25H3.25C3.3163 7.25 3.37989 7.22366 3.42678 7.17678C3.47366 7.12989 3.5 7.0663 3.5 7C3.5 6.9337 3.47366 6.87011 3.42678 6.82322C3.37989 6.77634 3.3163 6.75 3.25 6.75ZM3.25 8.75H2.25C2.1837 8.75 2.12011 8.77634 2.07322 8.82322C2.02634 8.87011 2 8.9337 2 9C2 9.0663 2.02634 9.12989 2.07322 9.17678C2.12011 9.22366 2.1837 9.25 2.25 9.25H3.25C3.3163 9.25 3.37989 9.22366 3.42678 9.17678C3.47366 9.12989 3.5 9.0663 3.5 9C3.5 8.9337 3.47366 8.87011 3.42678 8.82322C3.37989 8.77634 3.3163 8.75 3.25 8.75ZM3.25 10.75H2.25C2.1837 10.75 2.12011 10.7763 2.07322 10.8232C2.02634 10.8701 2 10.9337 2 11C2 11.0663 2.02634 11.1299 2.07322 11.1768C2.12011 11.2237 2.1837 11.25 2.25 11.25H3.25C3.3163 11.25 3.37989 11.2237 3.42678 11.1768C3.47366 11.1299 3.5 11.0663 3.5 11C3.5 10.9337 3.47366 10.8701 3.42678 10.8232C3.37989 10.7763 3.3163 10.75 3.25 10.75ZM3.25 12.75H2.25C2.1837 12.75 2.12011 12.7763 2.07322 12.8232C2.02634 12.8701 2 12.9337 2 13C2 13.0663 2.02634 13.1299 2.07322 13.1768C2.12011 13.2237 2.1837 13.25 2.25 13.25H3.25C3.3163 13.25 3.37989 13.2237 3.42678 13.1768C3.47366 13.1299 3.5 13.0663 3.5 13C3.5 12.9337 3.47366 12.8701 3.42678 12.8232C3.37989 12.7763 3.3163 12.75 3.25 12.75ZM3.25 14.75H2.25C2.1837 14.75 2.12011 14.7763 2.07322 14.8232C2.02634 14.8701 2 14.9337 2 15C2 15.0663 2.02634 15.1299 2.07322 15.1768C2.12011 15.2237 2.1837 15.25 2.25 15.25H3.25C3.3163 15.25 3.37989 15.2237 3.42678 15.1768C3.47366 15.1299 3.5 15.0663 3.5 15C3.5 14.9337 3.47366 14.8701 3.42678 14.8232C3.37989 14.7763 3.3163 14.75 3.25 14.75ZM16.75 5.25H17.75C17.8163 5.25 17.8799 5.22366 17.9268 5.17678C17.9737 5.12989 18 5.0663 18 5C18 4.9337 17.9737 4.87011 17.9268 4.82322C17.8799 4.77634 17.8163 4.75 17.75 4.75H16.75C16.6837 4.75 16.6201 4.77634 16.5732 4.82322C16.5263 4.87011 16.5 4.9337 16.5 5C16.5 5.0663 16.5263 5.12989 16.5732 5.17678C16.6201 5.22366 16.6837 5.25 16.75 5.25ZM16.75 3.25H17.75C17.8163 3.25 17.8799 3.22366 17.9268 3.17678C17.9737 3.12989 18 3.0663 18 3C18 2.9337 17.9737 2.87011 17.9268 2.82322C17.8799 2.77634 17.8163 2.75 17.75 2.75H16.75C16.6837 2.75 16.6201 2.77634 16.5732 2.82322C16.5263 2.87011 16.5 2.9337 16.5 3C16.5 3.0663 16.5263 3.12989 16.5732 3.17678C16.6201 3.22366 16.6837 3.25 16.75 3.25ZM16.75 7.25H17.75C17.8163 7.25 17.8799 7.22366 17.9268 7.17678C17.9737 7.12989 18 7.0663 18 7C18 6.9337 17.9737 6.87011 17.9268 6.82322C17.8799 6.77634 17.8163 6.75 17.75 6.75H16.75C16.6837 6.75 16.6201 6.77634 16.5732 6.82322C16.5263 6.87011 16.5 6.9337 16.5 7C16.5 7.0663 16.5263 7.12989 16.5732 7.17678C16.6201 7.22366 16.6837 7.25 16.75 7.25ZM16.75 9.25H17.75C17.8163 9.25 17.8799 9.22366 17.9268 9.17678C17.9737 9.12989 18 9.0663 18 9C18 8.9337 17.9737 8.87011 17.9268 8.82322C17.8799 8.77634 17.8163 8.75 17.75 8.75H16.75C16.6837 8.75 16.6201 8.77634 16.5732 8.82322C16.5263 8.87011 16.5 8.9337 16.5 9C16.5 9.0663 16.5263 9.12989 16.5732 9.17678C16.6201 9.22366 16.6837 9.25 16.75 9.25ZM16.75 11.25H17.75C17.8163 11.25 17.8799 11.2237 17.9268 11.1768C17.9737 11.1299 18 11.0663 18 11C18 10.9337 17.9737 10.8701 17.9268 10.8232C17.8799 10.7763 17.8163 10.75 17.75 10.75H16.75C16.6837 10.75 16.6201 10.7763 16.5732 10.8232C16.5263 10.8701 16.5 10.9337 16.5 11C16.5 11.0663 16.5263 11.1299 16.5732 11.1768C16.6201 11.2237 16.6837 11.25 16.75 11.25ZM16.75 13.25H17.75C17.8163 13.25 17.8799 13.2237 17.9268 13.1768C17.9737 13.1299 18 13.0663 18 13C18 12.9337 17.9737 12.8701 17.9268 12.8232C17.8799 12.7763 17.8163 12.75 17.75 12.75H16.75C16.6837 12.75 16.6201 12.7763 16.5732 12.8232C16.5263 12.8701 16.5 12.9337 16.5 13C16.5 13.0663 16.5263 13.1299 16.5732 13.1768C16.6201 13.2237 16.6837 13.25 16.75 13.25ZM17.75 14.75H16.75C16.6837 14.75 16.6201 14.7763 16.5732 14.8232C16.5263 14.8701 16.5 14.9337 16.5 15C16.5 15.0663 16.5263 15.1299 16.5732 15.1768C16.6201 15.2237 16.6837 15.25 16.75 15.25H17.75C17.8163 15.25 17.8799 15.2237 17.9268 15.1768C17.9737 15.1299 18 15.0663 18 15C18 14.9337 17.9737 14.8701 17.9268 14.8232C17.8799 14.7763 17.8163 14.75 17.75 14.75Z" fill="black"/>
              </svg>
              <span>Upload Video</span>
            </label>
          </div>
        </div>
      </button>
    </div>
  </div>
</div>

          
<div class="case-video-preview">
  <div class="d-flex justify-content-between">
    <p>Add video to make it more special (optional)</p>
    <button class="remove-media" style="display: none">
      <svg class="icon icon-close" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>icon-close</title>
<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>
</svg>
    </button>
    <label id="label-input-video" for="input-video" onclick style="">
      <img class="ajax-loader" src="//outerbloom.com/cdn/shop/t/138/assets/ajax-loader.gif?v=41356863302472015721752652421" style="display: none;vertical-align: middle;"/>
      <span><img src="//outerbloom.com/cdn/shop/t/138/assets/icon-upload-video_icon.png?v=10584829661837769631752652419"/><span>Upload Video</span></span>
    </label>
  </div>
</div>

        
      </div>
      <div class="steps-card-input">
        
          <div class="prefix-selector-wrapper">
            <label for="prefixSelector" class="font-weight-bold m-0">Prefix:</label>
            <select id="prefixSelector" class="prefix-selector">
              <option value="">None</option>
              <option value="Dear" selected>Dear</option>
              <option value="To">To</option>
              <option value="Hi">Hi</option>
            </select>
          </div>
          <div class="form-group mr-auto form-group-half form-recipient has-counter d-flex">
            <label for="" class="font-weight-bold m-0 pr-1 label-prefix" style="border-bottom: 1px solid #212121;">Dear</label>
            <input
              type="text"
              id="recipientNameInput"
              class="form-control has-limit"
              data-properties="penerima"
              placeholder="RECIPIENT NAME"
              maxlength="30"
              
            >
            <small class="limit text-muted">(30)</small>
          </div>
          <div class="form-group custom-card mb-2 has-counter">
            <textarea
              data-properties="ucapan"
              class="form-control has-limit"
              rows="6"
              placeholder="Write your special message here.."
              maxlength="300"
              ></textarea>
            <small class="limit text-muted">(300)</small>
            
              <!--
                <a href="#" data-card-occassion="all">
                  <div class="rectangle-promo-code">
                    <span class="promo-code-link">Get ideas</span>
                  </div>
                </a>
              -->
            
            
            <button id="msgCard">Template Message</button>
          </div>

          <div class="hide">
            <input type="hidden" value="" id="note_id" name="note_id" style="top: 0px;">
            <input type="hidden" value="" id="note_btn_id" name="note_btn_id">
          </div>

          <div class="form-group ml-auto mt-3 text-right form-group-half position-relative has-counter">
            <label for="" class="font-weight-bold d-none">Yours Sincerely,</label>
            <input
              id="senderCard"
              type="text"
              class="form-control text-right has-limit"
              data-properties="pengirim"
              placeholder="SENDER NAME"
              maxlength="30"
            >
            <small class="limit text-muted">(30)</small>
          </div>
        
      </div>
    </div>
  
</div>
<script>
  async function getFetch(url) {
    const response = await fetch(url);
    const result = await response.json();
    return result;
  }
  $(document).ready(function(){
    // Prefix selector functionality
    var prefixOptions = ['Dear', 'To', 'Hi'];
    var isUpdatingPrefix = false;

    function getNameWithoutPrefix(value) {
      var trimmed = value.trim();
      for (var i = 0; i < prefixOptions.length; i++) {
        var prefix = prefixOptions[i];
        if (trimmed.toLowerCase().indexOf(prefix.toLowerCase() + ' ') === 0) {
          return trimmed.substring(prefix.length);
        }
      }
      return trimmed;
    }

    function detectPrefix(value) {
      var trimmed = value.trim();
      for (var i = 0; i < prefixOptions.length; i++) {
        var prefix = prefixOptions[i];
        if (trimmed.toLowerCase().indexOf(prefix.toLowerCase() + ' ') === 0) {
          return prefix;
        }
      }
      return '';
    }

    function applyPrefixToInput(prefix) {
      var recipientInput = $('#recipientNameInput');
      var nameOnly = getNameWithoutPrefix(recipientInput.val());

      if (!nameOnly) {
        recipientInput.val('');
        return;
      }

      if (prefix === '') {
        recipientInput.val(nameOnly);
      } else {
        recipientInput.val(prefix + ' ' + nameOnly);
      }
    }

    $('#prefixSelector').on('change', function() {
      var selectedPrefix = $(this).val();
      var recipientInput = $('#recipientNameInput');
      var labelPrefix = $('.label-prefix');

      isUpdatingPrefix = true;
      applyPrefixToInput(selectedPrefix);
      isUpdatingPrefix = false;

      // Update label-prefix text and visibility
      if (selectedPrefix === '') {
        labelPrefix.addClass('hidden');
        labelPrefix.text('');
      } else {
        labelPrefix.text(selectedPrefix).removeClass('hidden');
      }

      recipientInput.focus();
    });
    
    // Click label-prefix to open selector
    $('.label-prefix').on('click', function() {
      $('#prefixSelector').focus().click();
    });
    
    // Initialize label-prefix based on current selector value
    var initialPrefix = $('#prefixSelector').val();
    if (initialPrefix === '') {
      $('.label-prefix').addClass('hidden');
    } else {
      $('.label-prefix').text(initialPrefix);
    }

    $('#recipientNameInput').on('input', function() {
      if (isUpdatingPrefix) {
        return;
      }

      var currentValue = $(this).val();

      // If input is cleared, reset prefix to None
      if (!currentValue) {
        isUpdatingPrefix = true;
        $('#prefixSelector').val('');
        isUpdatingPrefix = false;
        return;
      }
    });

    // Initialize prefix selector based on current value
    $('#prefixSelector').val('Dear');
    
    $('textarea.has-limit, input.has-limit').keyup(function () {
      max = this.getAttribute("maxlength");
      var len = $(this).val().length;
      var limit = $(this).siblings(".limit");
      if (len >= max) {
        alert('you have reached the limit');
      } else {
        var char = max - len;
        limit.text('('+char+')');
      }
    });

    // Limit textarea to maximum 6 lines
    $('[data-properties=ucapan]').on('input keydown paste', function(e) {
      var textarea = $(this);
      var lines = textarea.val().split('\n');
      
      // Check if trying to add more than 6 lines
      if (lines.length > 6) {
        // Prevent adding new line if already at 6 lines
        if (e.type === 'keydown' && e.keyCode === 13) {
          e.preventDefault();
          return false;
        }
        // Trim to 6 lines if pasting content
        if (e.type === 'paste' || e.type === 'input') {
          var limitedText = lines.slice(0, 6).join('\n');
          textarea.val(limitedText);
        }
      }
      
      // Update character counter after line limit check
      var max = this.getAttribute("maxlength");
      var len = $(this).val().length;
      var limit = $(this).siblings(".limit");
      var char = max - len;
      limit.text('('+char+')');
    });

    var text_max=150;
    var msg_text="";
    $('#previewMsg').html(msg_text);
    $('[data-properties=ucapan]').keyup(function(){
      var text_length=$(this).val().length;
      var msg_text=$(this).val();
      $('#previewMsg').html(msg_text);
    });

    var note_btn_text = [
      [0,'Try Another'],
      [1,'One More Time'],
      [2,'Almost There'],
      [3,'Next']
    ];
    $("#greetingCard").delegate("#show_note", "click", async function(event){
      event.preventDefault();

      const source = await getFetch(`https://outerbloom.com/cdn/shop/t/87/assets/greeting_card.json?v=${new Date()}`)

      const occassion = $("#show_note").attr("data-card-occassion")

      let {data} = source.find((el) => el.name === occassion);
      
      var notes = data;

      const getRandomIntegerInclusive = (min, max) => {
        min = Math.ceil(min)
        max = Math.floor(max)
      
        return Math.floor(Math.random() * (max - min + 1)) + min
      }
      
      const idx = getRandomIntegerInclusive(0, data.length - 1)
      
      var note=notes[idx];

      $('#note_id').val(idx);
      $('[data-properties], #msgDelivery').val(note);
      var text_length=$(this).val().length;
      $('#previewMsg').html(note);
      var idx_2=parseInt($('#note_btn_id').val());
      if(isNaN(idx_2)){
        idx_2=0;
      }else{
        idx_2++;
        idx_2=idx_2%note_btn_text.length;
      }
      $('#note_btn_id').val(idx_2);
      var note_btn=note_btn_text[idx_2][1];
      $('#note_btn').text(note_btn);
    });
  });
</script>

        </div>
      </div>
    
  </div>
</div>

          </div>
          <div class="purchase-button-wrapper">
            <div class="purchase-button btn-card row m-0">
  <div class="col-12 col-lg-2 text-left mb-2 p-0">
    
  </div>
  <div class="btn-next-card col-12 col-lg-10 text-right">
    
    
      
        <button id="skip-card" style="align-self: center;text-decoration: underline">
          <span> USE BLANK CARD  </span>
        </button>
      
    
    <button
      
        
          id="save-card"
        
      
      class="btn next-purchase-button text-uppercase"
      
        disabled
      
    >
      <span>SAVE & PERSONALIZE GIFT</span>
    </button>
  </div>
</div>

          </div>
        </div>
      </div>
    
    
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
        
        
    
      <div
        class="sectionPurchase purchaseAddon hide"
        data-section="addon"
      >
        <div class="wrapperPurchase">
          <div class="purchase-content">
            <style>
  .item-card[data-qty="0"] { display: none; }
  .item-card[data-id="8835692069079"] {
    display: none;
  }
  
  
  /* Mobile horizontal scroll styles for add-ons */
  @media (max-width: 768px) {
    #itemAddons {
      overflow-x: auto;
      overflow-y: hidden;
      -webkit-overflow-scrolling: touch; /* smooth scrolling on iOS */
      scrollbar-width: none; /* Firefox */
      -ms-overflow-style: none; /* IE 10+ */
    }
    
    #itemAddons::-webkit-scrollbar {
      display: none; /* Chrome, Safari, Opera */
    }
    
    #itemAddons .row {
      flex-wrap: nowrap !important;
      width: max-content !important;
      gap: 15px !important;
      margin: 0 !important;
      padding: 0 15px;
    }
    
    #itemAddons .item-card {
      flex: 0 0 auto;
      min-width: 120px;
      max-width: 120px;
    }
  }
  
  /* Desktop version keeps original layout */
  @media (min-width: 769px) {
    #itemAddons .row {
      flex-wrap: wrap;
    }
  }
</style>
<div class="headerPurchase">
  <h3>Make It More Special with Add-Ons!</h3>
  <a class="close-purchase-popup">
  <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none">
    <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"/>
  </svg>
</a>

</div>
<div class="contentPurchase">
  <div class="regulerAddons">
    <div class="menuPurchase">
      <ul>
        
        

        
        <li class="item-addon selected" data-count="" data-addon="upsell-inhouse">
          All
        </li>
        
        
          
          
          
            <li class="item-addon" data-count="18" data-addon="upsell-jewelry">
              Jewelry
            </li>
          
        
          
          
          
            <li class="item-addon" data-count="2" data-addon="upsell-cuddlemate">
              Cuddlemate
            </li>
          
        
          
          
          
            <li class="item-addon" data-count="1" data-addon="upsell-diffuser">
              Diffuser
            </li>
          
        
          
          
          
            <li class="item-addon" data-count="1" data-addon="upsell-candle">
              Candle
            </li>
          
        
          
          
          
        
          
          
          
            <li class="item-addon" data-count="1" data-addon="upsell-beverage">
              Beverage
            </li>
          
        
          
          
          
        
          
          
          
            <li class="item-addon" data-count="8" data-addon="upsell-cookies">
              Cookies
            </li>
          
        
        
      </ul>
    </div>
    <div id="chooseCard">
      <h4 class="text-uppercase">choose your add-ons you like to include</h4>
      <div
        id="itemAddons"
        class="item-cards d-flex mb-4"
      >
        <div class="row m-0 gap-20 w-100">
          <p>No Item available</p>
        </div>
      </div>
    </div>
  </div>
  <!-- <div class="spotifyAddons"></div> -->
</div>

          </div>
          <div class="purchase-button-wrapper">
            <div class="purchase-button btn-addon row m-0">
  <div class="col-12 col-lg-2 text-left mb-2 p-0">
    
      <button class="back-purchase-button back-addon text-uppercase">
        <svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="http://www.w3.org/2000/svg">
          <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>
    
  </div>
  <div class="btn-next-card col-12 col-lg-10 text-right">
    
    
      
    
    <button
      
      class="btn next-purchase-button next-addon text-uppercase"
      
    >
      <span>continue without add-ons</span>
    </button>
  </div>
</div>

          </div>
        </div>
      </div>
    
    
      <div
        class="sectionPurchase purchaseAddress hide"
        data-section="address"
      >
        <div class="wrapperPurchase">
          <div class="purchase-content">
            <div class="headerPurchase">
  <h3>
    Complete Your Order
  </h3>
  <a class="close-purchase-popup">
  <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none">
    <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"/>
  </svg>
</a>

</div>

<!-- Select2 CSS -->
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />

<style>
  /* Custom Select2 Styling to match form inputs */
  .select2-container--default .select2-selection--single {
    height: 43px !important;
    border-radius: 0 !important;
    padding: 0 !important;
    background-color: #fff !important;
    border-color: #212121 !important;
  }
  
  .select2-container--default .select2-selection--single .select2-selection__rendered {
    line-height: 43px !important;
    padding-left: 16px !important;
    padding-right: 40px !important;
    color: #212121 !important;
    font-size: 14px !important;
  }
  
  .select2-container--default .select2-selection--single .select2-selection__placeholder {
    color: #212121 !important;
    font-style: normal;
  }
  
  .select2-container--default .select2-selection--single .select2-selection__arrow {
    display: none;
    height: 48px !important;
    right: 10px !important;
  }
  
  .select2-container--default.select2-container--open .select2-selection--single {
    border-color: #212121 !important;
  }
  
  .select2-dropdown {
    border: 1px solid #E5E5E5 !important;
    border-radius: 0 !important;
    border-top: none !important;
    overflow: hidden;
    padding-bottom: 70px;
  }
  
  .select2-container--default .select2-results__option {
    padding: 12px 16px !important;
    font-size: 14px !important;
  }
  
  .select2-container--default .select2-results__option--highlighted[aria-selected] {
    background-color: #f5f5f5 !important;
    color: #212121 !important;
  }
  
  .select2-container--default .select2-results__option[aria-selected=true] {
    background-color: #212121 !important;
    color: #fff !important;
  }
  
  .select2-search--dropdown .select2-search__field {
    border: 1px solid #E5E5E5 !important;
    border-radius: 0 !important;
    padding: 10px 16px !important;
    font-size: 14px !important;
  }
  
  .select2-search--dropdown .select2-search__field:focus {
    border-color: #212121 !important;
    outline: none !important;
  }
  
  /* Match with form-control styling */
  .select2-container {
    width: 100% !important;
  }
  
  .select2-container--default .select2-selection--single:focus {
    outline: none !important;
  }

  #zipSelectPopup {
    display: none;
  }
  
  /* Mobile Full-Screen Popup for Zip Selection */
  @media (max-width: 991px) {
    #zipSelectPopup {
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background: #fff;
      z-index: 10000;
      overflow: hidden;
    }
    
    .zip-popup-header {
      padding: 16px 20px;
      border-bottom: 1px solid #E5E5E5;
      display: flex;
      justify-content: space-between;
      align-items: center;
      background: #fff;
      position: sticky;
      top: 0;
      z-index: 10001;
    }
    
    .zip-popup-header h4 {
      margin: 0;
      font-size: 16px;
      font-weight: 600;
      color: #212121;
    }
    
    .zip-popup-close {
      background: none;
      border: none;
      font-size: 28px;
      color: #666;
      cursor: pointer;
      padding: 0;
      width: 40px;
      height: 40px;
      display: flex;
      align-items: center;
      justify-content: center;
      line-height: 1;
    }
    
    .zip-popup-search {
      padding: 16px 20px;
      border-bottom: 1px solid #E5E5E5;
      background: #fff;
      position: sticky;
      top: 57px;
      z-index: 10001;
    }
    
    .zip-popup-search input {
      width: 100%;
      padding: 12px 16px;
      border: 1px solid #E5E5E5;
      border-radius: 4px;
      font-size: 14px;
    }
    
    .zip-popup-search input:focus {
      outline: none;
      border-color: #212121;
    }
    
    .zip-popup-list {
      height: calc(100% - 130px);
      overflow-y: auto;
      padding: 0;
      -webkit-overflow-scrolling: touch;
    }
    
    .zip-popup-list-item {
      padding: 16px 20px;
      border-bottom: 1px solid #f5f5f5;
      cursor: pointer;
      font-size: 14px;
      color: #212121;
      background: #fff;
      transition: background-color 0.2s;
    }
    
    .zip-popup-list-item:active {
      background-color: #f5f5f5;
    }
    
    .zip-popup-list-item.selected {
      background-color: #212121;
      color: #fff;
    }
    
    .zip-popup-list-item:last-child {
      border-bottom: none;
    }
    
    /* Hide select arrow on mobile */
    #zip {
      -webkit-appearance: none;
      -moz-appearance: none;
      appearance: none;
      background-image: none;
      cursor: pointer;
      font-size: 14px;
      padding-right: 16px;
    }
  }
</style>

<!-- Mobile Zip Popup -->
<div id="zipSelectPopup">
  <div class="zip-popup-header">
    <h4>Select Postal Code / Area</h4>
    <button type="button" class="zip-popup-close">&times;</button>
  </div>
  <div class="zip-popup-search">
    <input type="text" id="zipPopupSearch" placeholder="Search by postal code or area...">
  </div>
  <div class="zip-popup-list" id="zipPopupList"></div>
</div>

<div class="contentPurchase">
  <div class="row">
    <div class="col-12 col-lg-7 position-relative">
      <div class="addressPurchase">
        
          <h4 class="text-uppercase">recipient delivery address</h4>
          <p>Share the delivery address to send your heartfelt blooms straight to their door.</p>
        
        
        <!-- Pickup Location Details (hidden by default, shown when pickup is selected) -->
        <div id="pickupLocationDetails" class="pickup-location-details" style="display: none; padding: 20px; background-color: #f8f8f8; border: 1px solid #e0e0e0; margin-bottom: 20px;">
          <h5 style="font-size: 16px; font-weight: 600; margin-bottom: 16px; text-transform: uppercase; color: #212121;">Pickup Location</h5>
          <div style="font-size: 14px; line-height: 1.8; color: #212121;">
            <p style="margin: 0 0 12px 0;"><strong>ITC Kuningan Mall</strong></p>
            <p style="margin: 0 0 12px 0;">Lantai 9 unit 4B<br/>Jl. Prof. DR. Satrio No.18, RT.11/RW.4, Kuningan, Karet Kuningan, Kecamatan Setiabudi, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12940</p>
            <p style="margin: 0 0 12px 0;"><strong>Pickup Hours:</strong> 10:00 - 16:00</p>
            <p style="margin: 0; padding: 12px; background-color: #fff3cd; border-left: 4px solid #ffc107; font-size: 13px;">
              <strong>Note:</strong> Please bring your order confirmation when picking up your items.
            </p>
          </div>
        </div>
        
        <div class="formAddressPurchase row">
          <div class="col-12">
            <form>
              <div class="form-group row mb-2 mb-lg-4">
                <div class="col-6 position-relative">
                  <input id="first_name" type="text" class="form-control input__field" placeholder="" required>
                  <label for="first_name" class="input__label">First Name<span>*</span></label>
                </div>
                <div class="col-6 position-relative">
                  <input id="last_name" type="text" class="form-control input__field" placeholder="" required>
                  <label for="last_name" class="input__label">Last Name<span>*</span></label>
                </div>
                <input type="hidden" data-properties="nama-penerima">
              </div>
              
              <div class="form-group row mb-2 mb-lg-4 form-address">
                <div class="col-6 position-relative">
                  <input
                    id="recipient_number"
                    type="text"
                    data-properties="telepon-penerima"
                    class="form-control input__field"
                    placeholder=""
                    required
                  >
                  <label for="recipient_number" class="input__label">Recipient number<span>*</span></label>
                </div>
                <div class="col-6 position-relative">
                  <input
                    id="company"
                    type="text"
                    data-properties="company"
                    class="form-control input__field"
                    placeholder=""
                  >
                  <label for="company" class="input__label">Company (Optional)</label>
                </div>
              </div>
              <div class="form-group row mb-2 mb-lg-4 form-address">
                <div class="col-6 position-relative">
                  <input
                    id="province"
                    type="text"
                    class="form-control input__field"
                    placeholder=""
                    value="Jakarta"
                    data-properties="province"
                    readonly
                  >
                  <label for="province" class="input__label">Province</label>
                </div>
                <div class="col-6 position-relative">
                  <select id="zip" class="form-control select-search" required></select>
                </div>
              </div>
              <div class="form-group row mb-2 mb-lg-4 form-address">
                <div class="col-12 position-relative">
                  <input
                    id="streetAddress"
                    type="text"
                    class="form-control input__field"
                    placeholder="Jl. Example No.123 RT.01 RW.02"
                    required
                  >
                  <label for="streetAddress" class="input__label" style="top: 12px;left: 16px;font-size: 12px;color: #212121;transform: translateY(-7px);padding: 0 5px;">Street Address<span>*</span></label>
                    
                  
                </div>
              </div>
              <div class="form-group row position-relative mb-2 mb-lg-4 form-address hide">
                <div class="col-12">
                  <textarea
                    id="delivery_address"
                    data-properties="alamat-penerima"
                    class="form-control input__field col-12"
                    placeholder=""
                    required
                    readonly
                  ></textarea>
                  <label for="delivery_address" class="input__label">Delivery Address<span>*</span></label>
                </div>
              </div>
            </form>
          </div>
        </div>
      </div>
      <div class="addonsPurchase">
        <h4 class="text-uppercase">add-ons</h4>
        <div class="addons">
          <p>No Add-Ons</p>
          <!--
            <button class="add-addon">
              <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none">
                <path d="M5.5 6.5H0V5.5H5.5V0H6.5V5.5H12V6.5H6.5V12H5.5V6.5Z" fill="black"/>
              </svg>
              <span>Enhance my moment with Add-ons</span>
            </button>
          -->
        </div>
      </div>
    </div>
    
      <div class="col-12 col-lg-5 row m-0 justify-content-end">
        <div class="reviewCardPurchase">
          <h4 class="text-uppercase">review your greeting card</h4>
          <p>You can edit the greeting card to ensure your words perfectly express your love.</p>
          <div class="cardPreview">
            <!-- Card preview structure -->
            <div class="card-preview-container" style="display: none;">
              <!-- Card design preview (with or without photo) -->
              <div class="card-preview-wrapper">
                <!-- Top Section (50% height) -->
                <div class="card-top-section">
                  <!-- Layout for when NO photo is uploaded -->
                  <div class="no-photo-layout">
                    <div class="qr-text">
                      <p class="qr-title">A<br/>special message</p>
                      <p class="qr-subtitle">for <span class="recipient-qr-text">Munying</span>!</p>
                    </div>
                    <div class="qr-code-container">
                      <div class="qr-placeholder">QR</div>
                    </div>
                    <div class="qr-scan-text">
                      <p>Scan for the surprise</p>
                    </div>
                  </div>
                  
                  <!-- Layout for when photo IS uploaded -->
                  <div class="with-photo-layout" style="display: none;">
                    <div class="photo-container">
                      <img class="card-preview-photo" src="" alt="Card photo" width="300" height="200">
                      <div class="photo-qr-overlay hide hidden">
                        <div class="qr-code-small">
                          <div class="qr-placeholder-small">QR</div>
                        </div>
                        <div class="photo-qr-text">
                          <p>Scan for a special message for you</p>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
                
                <!-- Divider Line -->
                <div class="card-divider"></div>
                
                <!-- Bottom Section (50% height) -->
                <div class="card-bottom-section">
                  <!-- Recipient name -->
                  <div class="card-recipient-name">
                    <span class="recipient-text"></span>
                  </div>
                  
                  <!-- Card message -->
                  <div class="card-message-section">
                    <div class="card-message-text"></div>
                  </div>
                  
                  <!-- Sender name -->
                  <div class="card-sender-name">
                    <span class="sender-text"></span>
                  </div>
                </div>
              </div>
            </div>
            
            <!-- Empty state -->
            <div class="card-empty-state">
              <div style="text-align: center; padding: 40px 20px; color: #999; border: 1px dashed #ddd; border-radius: 8px;">
                <p style="margin: 0; font-size: 14px;">Your greeting card preview will appear here</p>
                <p style="margin: 5px 0 0 0; font-size: 12px;">Complete the greeting card section to see the preview</p>
              </div>
            </div>
          </div>
        </div>
        <div class="scanCard mt-3 hide">
          <div class="position-relative">
            <div id="qrcode"></div>
            <div class="t-preview">
              <p class="h3">preview your moment</p>
              <p>Scan this barcode on OUTERBLOOM’s mobile application</p>
            </div>
          </div>
        </div>
      </div>
    
  </div>
</div>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>

<script>
document.addEventListener('DOMContentLoaded', function() {
  // Detect iOS
  var isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
  
  if (isIOS) {
    document.querySelector('.formAddressPurchase').classList.add('ios');
    
    // iOS specific fixes
    var inputs = document.querySelectorAll('.formAddressPurchase .input__field');
    
    inputs.forEach(function(input) {
      // Force enable touch events on iOS
      input.style.webkitUserSelect = 'text';
      input.style.webkitTouchCallout = 'default';
      input.style.pointerEvents = 'auto';
      input.style.touchAction = 'manipulation';
      
      // Add explicit touch event listeners for iOS
      input.addEventListener('touchstart', function(e) {
        e.stopPropagation();
        this.focus();
      }, { passive: false });
      
      input.addEventListener('touchend', function(e) {
        e.preventDefault();
        e.stopPropagation();
        this.focus();
        this.click();
      }, { passive: false });
      
      // Force focus on tap for iOS
      input.addEventListener('click', function(e) {
        e.stopPropagation();
        if (document.activeElement !== this) {
          this.focus();
        }
      });
    });
    
    // Fix for label overlapping on iOS
    var labels = document.querySelectorAll('.formAddressPurchase .input__label');
    labels.forEach(function(label) {
      label.style.pointerEvents = 'none';
      label.addEventListener('touchstart', function(e) {
        e.preventDefault();
        var input = this.parentNode.querySelector('.input__field');
        if (input) {
          input.focus();
        }
      });
    });
  }
  
  // Handle input state for all browsers, especially iOS
  var inputs = document.querySelectorAll('.input__field');
  
  inputs.forEach(function(input) {
    // Handle input events
    input.addEventListener('input', function() {
      if (this.value.trim() !== '') {
        this.classList.add('has-value');
      } else {
        this.classList.remove('has-value');
      }
    });
    
    // Handle focus
    input.addEventListener('focus', function() {
      this.classList.add('focused');
      // iOS specific: ensure input is visible
      if (isIOS) {
        setTimeout(function() {
          input.scrollIntoView({ behavior: 'smooth', block: 'center' });
        }, 300);
      }
    });
    
    // Handle blur
    input.addEventListener('blur', function() {
      this.classList.remove('focused');
      if (this.value.trim() !== '') {
        this.classList.add('has-value');
      } else {
        this.classList.remove('has-value');
      }
    });
    
    // Initial check for pre-filled values
    if (input.value.trim() !== '') {
      input.classList.add('has-value');
    }
  });
  
  // Additional iOS fixes
  if (isIOS) {
    // Prevent iOS Safari from adding default styling
    document.addEventListener('touchstart', function() {}, { passive: true });
    
    // Fix viewport issues on iOS
    var viewport = document.querySelector('meta[name=viewport]');
    if (viewport) {
      viewport.setAttribute('content', 
        'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no'
      );
    }
  }
  
  // Card Preview functionality
  function updateCardPreview() {
    // Get data from greeting card inputs ONLY from #greetingCard or .greetingCard area
    const greetingCardArea = $('#greetingCard, .greetingCard');
    
    const recipientName = greetingCardArea.find('[data-properties="penerima"]').val() || '';
    const senderName = greetingCardArea.find('[data-properties="pengirim"]').val() || 
                       greetingCardArea.find('[data-properties="kartu-nama-pengirim"]').val() || 
                       greetingCardArea.find('#senderCard').val() || '-';
    const cardMessage = greetingCardArea.find('[data-properties="ucapan"]').val() || 
                        greetingCardArea.find('#kartu-ucapan').val() || '-';
    const photoUrl = $('#properties-photo').val();
    const videoUrl = greetingCardArea.find('#properties-video').val() || '';
    const qrId = greetingCardArea.find('#properties-qrId').val() || '';
    
    // Get preview elements
    const cardContainer = $('.card-preview-container');
    const emptyState = $('.card-empty-state');
    const recipientText = $('.recipient-text');
    const recipientQrText = $('.recipient-qr-text');
    const senderText = $('.sender-text');
    const messageText = $('.card-message-text');
    const noPhotoLayout = $('.no-photo-layout');
    const withPhotoLayout = $('.with-photo-layout');
    const previewPhoto = $('.card-preview-photo');
    const qrContainer = $('.qr-code-container');
    const qrContainerSmall = $('.qr-code-small');
    
    // Check if we have any card content
    const hasContent = (recipientName && recipientName.trim() !== '' && recipientName.trim() !== ' ') || 
                       (senderName !== '' && senderName !== '-') || 
                       (cardMessage !== '' && cardMessage !== '-') ||
                       (photoUrl && photoUrl !== '' && photoUrl !== '-') ||
                       (videoUrl && videoUrl !== '' && videoUrl !== '-');
    
    if (hasContent) {
      // Show card preview, hide empty state
      cardContainer.show();
      emptyState.hide();
      
      // Update recipient name in bottom section with prefix
      let recipientDisplay = '';
      if (recipientName && recipientName.trim() !== '' && recipientName.trim() !== ' ' && recipientName.trim() !== '-') {
        const prefix = $('.label-prefix').text().trim() || '';
        const trimmedName = recipientName.trim();
        recipientDisplay = prefix + (trimmedName ? ' ' + trimmedName : '');
      }
      recipientText.text(recipientDisplay);
      
      // Update recipient name in QR section (for no-photo layout) - use first name only or full name
      let recipientQrDisplay = '';
      if (recipientName && recipientName.trim() !== '' && recipientName.trim() !== ' ' && recipientName.trim() !== '-') {
        recipientQrDisplay = recipientName.trim().split(' ')[0];
      }
      recipientQrText.text(recipientQrDisplay);
      
      // Update sender name  
      const senderDisplay = (senderName !== '' && senderName !== '-') ? senderName : '';
      senderText.text(senderDisplay);
      
      // Update message
      const messageDisplay = (cardMessage !== '' && cardMessage !== '-') ? 
        cardMessage : '';
      messageText.text(messageDisplay);
      
      // Handle photo display and layout switching
      if (photoUrl && photoUrl !== '' && photoUrl !== '-') {
        // Show photo layout, hide no-photo layout
        noPhotoLayout.hide();
        withPhotoLayout.show();
        previewPhoto.attr('src', photoUrl);
        
        // Generate QR code for photo layout
        if (qrId && qrId !== '' && qrId !== '-') {
          qrContainerSmall.html('');
          try {
            var qrCode = new QRCode(qrContainerSmall[0], {
              text: `https://moment.outerbloom.com/${qrId}`,
              width: 40,
              height: 40,
              colorDark: "#333333",
              colorLight: "#ffffff",
              correctLevel: QRCode.CorrectLevel.L,
            });
          } catch(e) {
            qrContainerSmall.html('<div class="qr-placeholder-small">QR</div>');
          }
        } else {
          qrContainerSmall.html('<div class="qr-placeholder-small">QR</div>');
        }
      } else {
        // Show no-photo layout, hide photo layout
        withPhotoLayout.hide();
        noPhotoLayout.show();
        
        // Generate QR code for no-photo layout
        if (qrId && qrId !== '' && qrId !== '-') {
          qrContainer.html('');
          try {
            var qrCode = new QRCode(qrContainer[0], {
              text: `https://moment.outerbloom.com/${qrId}`,
              width: 80,
              height: 80,
              colorDark: "#333333",
              colorLight: "#ffffff",
              correctLevel: QRCode.CorrectLevel.L,
            });
          } catch(e) {
            qrContainer.html('<div class="qr-placeholder">QR</div>');
          }
        } else {
          qrContainer.html('<div class="qr-placeholder">QR</div>');
        }
      }
    } else {
      // Show empty state, hide card preview
      cardContainer.hide();
      emptyState.show();
    }
  }
  
  // Listen for changes in greeting card fields ONLY from #greetingCard or .greetingCard area
  $(document).on('input change keyup', '#greetingCard [data-properties="penerima"], #greetingCard [data-properties="ucapan"], #greetingCard [data-properties="pengirim"], #greetingCard [data-properties="kartu-nama-pengirim"], #greetingCard #senderCard, #greetingCard #kartu-ucapan, #greetingCard #properties-photo, #greetingCard #properties-video, #greetingCard #properties-qrId, .greetingCard [data-properties="penerima"], .greetingCard [data-properties="ucapan"], .greetingCard [data-properties="pengirim"], .greetingCard [data-properties="kartu-nama-pengirim"], .greetingCard #senderCard, .greetingCard #kartu-ucapan, .greetingCard #properties-photo, .greetingCard #properties-video, .greetingCard #properties-qrId', function() {
    setTimeout(updateCardPreview, 100); // Small delay to allow value updates
  });
  
  // Listen for custom events from greeting card section
  $(document).on('cardDataUpdated', function() {
    updateCardPreview();
  });
  
  // Listen for btn-next-card click using delegate
  $(document).on('click', '.btn-next-card .btn', function() {
    console.log('btn-next-card clicked, updating card preview...');
    updateCardPreview();
  });
  
  // Initial card preview update
  $(document).ready(function() {
    setTimeout(updateCardPreview, 1000); // Delay to ensure all fields are initialized
    
    // Update preview when moving to purchase address step
    if ($('.purchaseAddress').length && !$('.purchaseAddress').hasClass('hide')) {
      updateCardPreview();
    }
  });
  
  // Auto-fill delivery address from input fields
  window.updateDeliveryAddress = function() {
    const selectedMethod = $('#selectedShippingMethod').val();
    if (selectedMethod === 'Pickup') {
      const pickupAddress = "ITC Kuningan, Mall, Lantai 9 unit 4B, Jl. Prof. DR. Satrio No.18";
      const pickupZipCode = "12940 - Karet Kuningan";
      
      const deliveryAddressTextarea = $('#delivery_address');
      
      // Set delivery address
      if (deliveryAddressTextarea.val() !== pickupAddress) {
        deliveryAddressTextarea.val(pickupAddress);
        deliveryAddressTextarea.addClass('has-value');
        deliveryAddressTextarea.trigger('change');
        $('#properties-kodepos').val(pickupZipCode);
      }
      
      return;
    }

    const streetAddress = $('#streetAddress').val().trim();
    const zipValue = $('#zip').val() || ''; // Format: "12345-Kelurahan-Kecamatan"
    const province = $('#province').val().trim();
    
    // Parse zip value
    let postalCode = '';
    let kelurahan = '';
    let kecamatan = '';
    
    if (zipValue) {
      const zipParts = zipValue.split('-');
      postalCode = zipParts[0] || ''; // zip.split('-')[0]
      kelurahan = zipParts[1] || '';   // zip.split('-')[1]
      kecamatan = zipParts[2] || '';   // zip.split('-')[2]
    }
    
    // Build address string with format: [streetAddress], [kelurahan], [kecamatan], [province], [postalCode], Indonesia
    let addressParts = [];
    
    if (streetAddress) addressParts.push(streetAddress);
    if (kelurahan) addressParts.push(kelurahan);
    if (kecamatan) addressParts.push(kecamatan);
    if (province) addressParts.push(province);
    if (postalCode) addressParts.push(postalCode);
    addressParts.push('Indonesia');
    
    const fullAddress = addressParts.join(', ');
    
    // Update delivery address textarea
    const deliveryAddressTextarea = $('#delivery_address');
    deliveryAddressTextarea.val(fullAddress);
    
    // Update has-value class for label animation
    if (fullAddress && fullAddress !== 'Indonesia') {
      deliveryAddressTextarea.addClass('has-value');
    } else {
      deliveryAddressTextarea.removeClass('has-value');
    }
    
    // Trigger change event
    deliveryAddressTextarea.trigger('change');
  }
  
  // Initialize Select2 for postal code select
  function initZipSearch() {
    // Only initialize Select2 on desktop (screen width > 992px)
    if ($(window).width() > 992) {
      $('#zip').select2({
        placeholder: 'Search by postal code or area',
        allowClear: false,
        width: '100%',
        matcher: function(params, data) {
          // If there are no search terms, return all of the data
          if ($.trim(params.term) === '') {
            return data;
          }

          // Do not display the item if there is no 'text' property
          if (typeof data.text === 'undefined') {
            return null;
          }

          // `params.term` should be the term that is used for searching
          // `data.text` is the text that is displayed for the data object
          if (data.text.toLowerCase().indexOf(params.term.toLowerCase()) > -1 ||
              data.id.toLowerCase().indexOf(params.term.toLowerCase()) > -1) {
            var modifiedData = $.extend({}, data, true);
            return modifiedData;
          }

          // Return `null` if the term does not match the data
          return null;
        }
      });

      // Handle select change to update delivery address
      $('#zip').on('change', function() {
        updateDeliveryAddress();
      });
    } else {
      // On mobile (<991px), use custom popup instead of native select
      var $zipSelect = $('#zip');
      var $popup = $('#zipSelectPopup');
      var $popupList = $('#zipPopupList');
      var $popupSearch = $('#zipPopupSearch');
      var isPopupOpen = false;
      var isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
      
      // Populate popup list with options from select
      function populatePopupList(filterText = '') {
        $popupList.empty();
        
        $zipSelect.find('option').each(function() {
          var $option = $(this);
          var value = $option.val();
          var text = $option.text();
          
          // Skip empty/placeholder options
          if (!value || value === '') return;
          
          // Filter based on search text
          if (filterText && 
              text.toLowerCase().indexOf(filterText.toLowerCase()) === -1 && 
              value.toLowerCase().indexOf(filterText.toLowerCase()) === -1) {
            return;
          }
          
          var $item = $('<div class="zip-popup-list-item"></div>')
            .attr('data-value', value)
            .text(text);
          
          // Mark selected item
          if (value === $zipSelect.val()) {
            $item.addClass('selected');
          }
          
          $popupList.append($item);
        });
      }
      
      // Function to open popup
      function openPopup() {
        if (isPopupOpen) return;
        
        isPopupOpen = true;
        populatePopupList();
        $popup.css('display', 'block').hide().fadeIn(200);
        $('body').css('overflow', 'hidden');
        
        // iOS needs more delay for focus
        var focusDelay = isIOS ? 500 : 250;
        setTimeout(function() {
          $popupSearch.focus();
        }, focusDelay);
      }
      
      // Function to close popup
      function closePopup() {
        if (!isPopupOpen) return;
        
        isPopupOpen = false;
        $popup.fadeOut(200);
        $('body').css('overflow', '');
        $popupSearch.val('');
      }
      
      // iOS specific handling
      if (isIOS) {
        // For iOS, use only touchstart with proper event handling
        $zipSelect.on('touchstart', function(e) {
          e.preventDefault();
          e.stopPropagation();
          e.stopImmediatePropagation();
          
          if (!isPopupOpen) {
            openPopup();
          }
          
          return false;
        });
        
        // Prevent other events on iOS to avoid double triggering
        $zipSelect.on('click focus mousedown', function(e) {
          e.preventDefault();
          e.stopPropagation();
          e.stopImmediatePropagation();
          return false;
        });
      } else {
        // For Android and other mobile devices
        // Use touchstart as primary event to prevent native dropdown
        $zipSelect.on('touchstart', function(e) {
          e.preventDefault();
          e.stopPropagation();
          e.stopImmediatePropagation();
          
          if (!isPopupOpen) {
            openPopup();
          }
          
          return false;
        });
        
        // Also prevent click and other events to ensure native dropdown doesn't show
        $zipSelect.on('click focus mousedown touchend', function(e) {
          e.preventDefault();
          e.stopPropagation();
          e.stopImmediatePropagation();
          return false;
        });
      }
      
      // Search functionality
      $popupSearch.on('input', function() {
        populatePopupList($(this).val());
      });
      
      // Track touch movement to differentiate scroll from tap
      var touchStartY = 0;
      var touchMoved = false;
      
      // Track touch start
      $popupList.on('touchstart', '.zip-popup-list-item', function(e) {
        touchStartY = e.originalEvent.touches[0].clientY;
        touchMoved = false;
      });
      
      // Track touch movement
      $popupList.on('touchmove', '.zip-popup-list-item', function(e) {
        var touchY = e.originalEvent.touches[0].clientY;
        if (Math.abs(touchY - touchStartY) > 10) {
          touchMoved = true;
        }
      });
      
      // Handle option selection - only if not scrolling
      $popupList.on('touchend', '.zip-popup-list-item', function(e) {
        e.preventDefault();
        e.stopPropagation();
        
        // Only select if user didn't scroll
        if (!touchMoved) {
          var selectedValue = $(this).attr('data-value');
          $zipSelect.val(selectedValue).trigger('change');
          closePopup();
          updateDeliveryAddress();
        }
      });
      
      // Also handle click for desktop testing
      $popupList.on('click', '.zip-popup-list-item', function(e) {
        e.preventDefault();
        e.stopPropagation();
        
        var selectedValue = $(this).attr('data-value');
        $zipSelect.val(selectedValue).trigger('change');
        closePopup();
        updateDeliveryAddress();
      });
      
      // Prevent scroll from closing popup - apply to all touch events
      $popupList.on('touchstart touchmove touchend scroll', function(e) {
        e.stopPropagation();
      });
      
      // Prevent search input touch from closing popup
      $popupSearch.on('touchstart touchmove touchend click', function(e) {
        e.stopPropagation();
      });
      
      // Prevent header touch from closing popup (except close button)
      $('.zip-popup-header').on('touchstart touchmove touchend click', function(e) {
        if (!$(e.target).hasClass('zip-popup-close')) {
          e.stopPropagation();
        }
      });
      
      // Close popup handlers
      $('.zip-popup-close').on('click touchend', function(e) {
        e.preventDefault();
        e.stopPropagation();
        closePopup();
      });
      
      // Prevent touchmove on popup content from bubbling up
      $('.zip-popup-content').on('touchstart touchmove touchend', function(e) {
        e.stopPropagation();
      });
      
      // Close on background tap only - but not on any touch inside content
      $popup.on('touchend', function(e) {
        // Only close if touching popup background directly, not content
        if ($(e.target).is('#zipSelectPopup')) {
          e.preventDefault();
          closePopup();
        }
      });
    }
  }
  
  // Listen for changes in address fields
  $(document).on('input change', '#streetAddress, #zip, #province', function() {
    updateDeliveryAddress();
  });
  
  // Initial update on page load
  $(document).ready(function() {
    setTimeout(updateDeliveryAddress, 500);
    
    // Initialize zip search after select is populated
    setTimeout(initZipSearch, 600);
  });
});
</script>
          </div>
          <div class="purchase-button-wrapper">
            <div class="purchase-button btn-address row m-0">
  <div class="col-12 col-lg-2 text-left mb-2 p-0">
    
      <button class="back-purchase-button back-address text-uppercase">
        <svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="http://www.w3.org/2000/svg">
          <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>
    
  </div>
  <div class="btn-next-card col-12 col-lg-10 text-right">
    
      <!--
        <button class="back-purchase-button back-address text-uppercase mr-lg-2 mb-2 mb-lg-0">
          <svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="http://www.w3.org/2000/svg">
            <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
      
        id="addtocart-card"
      
      class="btn  next-address text-uppercase"
      
    >
      <span>add to cart</span>
    </button>
  </div>
</div>

          </div>
        </div>
      </div>
    
  </div>
</div>
<div id="backgroundPopup"></div>



<input
  data-index="1"
  type="hidden"
  id="properties-delivery-date"
  name="properties[Delivery Date]"
  value="-"
>
<input
  data-index="2"
  type="hidden"
  id="properties-delivery-time"
  name="properties[Delivery Time]"
  value="-"
>
<input
  data-index="4"
  type="hidden"
  id="properties-nama-penerima"
  name="properties[Nama Penerima]"
  value="-"
>
<input
  data-index="5"
  type="hidden"
  id="properties-alamat-penerima"
  name="properties[Alamat Penerima]"
  value="-"
>
<input
  data-index="6"
  type="hidden"
  id="properties-kodepos"
  name="properties[Kodepos]"
  value="-"
>
<input data-index="7" type="hidden" id="properties-telepon-penerima" name="properties[Telepon Penerima]">

  <input
    data-index="8"
    type="hidden"
    id="properties-kartu-nama-penerima"
    name="properties[Kartu Nama Penerima]"
    value="-"
  >
  <input
    data-index="9"
    type="hidden"
    id="properties-kartu-ucapan"
    name="properties[Kartu Ucapan]"
    value="-"
  >



  <input
    data-index="10"
    type="hidden"
    id="properties-kartu-nama-pengirim"
    name="properties[Kartu Nama Pengirim]"
    value="-"
  >



  <input
    data-index="11"
    type="hidden"
    id="properties-photo"
    name="properties[Foto]"
    value="-"
  >
  <input
    id="input-foto"
    type="file"
    class="customFile"
    accept="image/*"
    style="position: absolute;top:40%;display:none;"
  >
  <input
    data-index="12"
    type="hidden"
    id="properties-video"
    name="properties[Video]"
    value="-"
  >
  <input
    id="input-video"
    type="file"
    class="customFileVideo"
    accept="video/*"
    style="position: absolute;top:40%;display:none;"
  >
  <input data-index="13" type="hidden" id="properties-qrId" name="properties[QR Code]" value="">













<!-- Additional Shipping -->
<input type="hidden" id="properties-kota-pengiriman-province" name="properties[Province]">
<input
  type="hidden"
  id="properties-kota-pengiriman-country"
  name="properties[Country]"
  value="Indonesia"
>
<input type="hidden" id="properties-shipping" name="properties[Shipping]">

<input type="hidden" id="properties-time" name="properties[Time]">
<input type="hidden" id="properties-card" name="properties[Card]">
<input type="hidden" id="properties-addons" name="properties[Addons]">

<input
  type="hidden"
  id="properties-company"
  name="properties[Company]"
  value=""
>
<script>
  
  $(document).ready(function(){
    
    var text_max_papan1=150;
    var msg_text_papan1="";
    $('#kartu-ucapan-ucapan').keyup(function(){
      var text_length_papan1=$('#kartu-ucapan-ucapan').val().length;
      var msg_text_papan1=$('#kartu-ucapan-ucapan').val();
    });

    var notes_papan1 = [
      
      [0,"Happy Wedding (nama & nama)."],[1,"Congratulations lovebirds (nama & nama)."],[2,"Selamat berbahagia (nama & nama)."],[3,"Selamat menempuh hidup baru (nama & nama)."]
      
    ];
    $('#show_note_papan1').click(function(event){
      event.preventDefault();
      var idx_papan1=parseInt($('#note_id_papan1').val());
      if(isNaN(idx_papan1)){
        idx_papan1=0;
      }else{
        idx_papan1++;
        idx_papan1=idx_papan1%notes_papan1.length;
      }
      var note_papan1=notes_papan1[idx_papan1][1];
      $('#note_id_papan1').val(idx_papan1);
      $('#kartu-ucapan-papan, #properties-kartu-pesan, #properties-kartu-ucapan').val(note_papan1);
      $('#msgDelivery').val(note_papan1);

      var text_length_papan1=$('#kartu-ucapan-papan').val().length;
      var idx_2_papan1=parseInt($('#note_btn_id_papan1').val());
      if(isNaN(idx_2_papan1)){
        idx_2_papan1=0;
      }else{
        idx_2_papan1++;
        //idx_2_papan1=idx_2_papan1%note_btn_text_papan1.length;
      }
      $('#note_btn_id_papan1').val(idx_2_papan1);
      //var note_btn=note_btn_text[idx_2][1];
      //$('#note_btn').text(note_btn);
      $(this).parents(".sectionPurchase").find(".next-purchase-button").attr("disabled", false)
    });

    var text_max_papan2=150;
    var msg_text_papan2="";
    $('#kartu-ucapan-ucapan').keyup(function(){
      var text_length_papan2=$('#kartu-ucapan-ucapan').val().length;
      var msg_text_papan2=$('#kartu-ucapan-ucapan').val();
    });

    var notes_papan2 = [
      
      [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)."]
      
    ];
    $('#show_note_papan2').click(function(event){
      event.preventDefault();
      var idx_papan2=parseInt($('#note_id_papan2').val());
      if(isNaN(idx_papan2)){
        idx_papan2=0;
      }else{
        idx_papan2++;
        idx_papan2=idx_papan2%notes_papan2.length;
      }
      var note_papan2=notes_papan2[idx_papan2][1];
      $('#note_id_papan2').val(idx_papan2);
      $('#kartu-ucapan-papan, #properties-kartu-pesan, #properties-kartu-ucapan').val(note_papan2);
      $('#msgDelivery').val(note_papan2);
      var text_length_papan2=$('#kartu-ucapan-papan').val().length;
      var idx_2_papan2=parseInt($('#note_btn_id_papan2').val());
      if(isNaN(idx_2_papan2)){
        idx_2_papan2=0;
      }else{
        idx_2_papan2++;
        //idx_2_papan1=idx_2_papan1%note_btn_text_papan1.length;
      }
      $('#note_btn_id_papan2').val(idx_2_papan2);
      //var note_btn=note_btn_text[idx_2][1];
      //$('#note_btn').text(note_btn);
      $(this).parents(".sectionPurchase").find(".next-purchase-button").attr("disabled", false)
    });

    var text_max_papan3=150;
    var msg_text_papan3="";
    $('#kartu-ucapan-ucapan').keyup(function(){
      var text_length_papan3=$('#kartu-ucapan-ucapan').val().length;
      var msg_text_papan3=$('#kartu-ucapan-ucapan').val();
    });

    var notes_papan3 = [
      
      [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)."]
      
    ];
    $('#show_note_papan3').click(function(event){
      event.preventDefault();
      var idx_papan3=parseInt($('#note_id_papan3').val());
      if(isNaN(idx_papan3)){
        idx_papan3=0;
      }else{
        idx_papan3++;
        idx_papan3=idx_papan3%notes_papan3.length;
      }
      var note_papan3=notes_papan3[idx_papan3][1];
      $('#note_id_papan3').val(idx_papan3);
      $('#kartu-ucapan-papan, #properties-kartu-pesan, #properties-kartu-ucapan').val(note_papan3);
      $('#msgDelivery').val(note_papan3);
      var text_length_papan3=$('#kartu-ucapan-papan').val().length;
      var idx_2_papan3=parseInt($('#note_btn_id_papan3').val());
      if(isNaN(idx_2_papan3)){
        idx_2_papan3=0;
      }else{
        idx_2_papan3++;
        //idx_2_papan1=idx_2_papan1%note_btn_text_papan1.length;
      }
      $('#note_btn_id_papan3').val(idx_2_papan3);
      //var note_btn=note_btn_text[idx_2][1];
      //$('#note_btn').text(note_btn);
      $(this).parents(".sectionPurchase").find(".next-purchase-button").attr("disabled", false)
    });

    var text_max_papan4=150;
    var msg_text_papan4="";
    $('#kartu-ucapan-ucapan').keyup(function(){
      var text_length_papan4=$('#kartu-ucapan-ucapan').val().length;
      var msg_text_papan4=$('#kartu-ucapan-ucapan').val();
    });

    $('#show_note_papan4').click(function(event){
      var notes_papan4 = [
        [0,"Here’s to you—steadier, stronger and better every day."],
        [1,"Warmest wishes for a speedy recovery!"],
        [2,"Dengan ucapan terhangat, semoga lekas membaik dan semakin pulih setiap harinya ya."],
        [3,"Semoga lekas sembuh untuk kembali beraktivitas dan berkarya."]
      ];
      event.preventDefault();
      var idx_papan4=parseInt($('#note_id_papan4').val());
      console.log(idx_papan4, 'idx_papan4')
      if(isNaN(idx_papan4)){
        idx_papan4=0;
      }else{
        idx_papan4++;
        idx_papan4=idx_papan4%notes_papan4.length;
      }
      var note_papan4=notes_papan4[idx_papan4][1];
      $('#note_id_papan4').val(idx_papan4);
      $('#kartu-ucapan-papan, #properties-kartu-ucapan, #properties-kartu-pesan').val(note_papan4);
      console.log(note_papan4, 'note_papan4')
      var text_length_papan4=$('#kartu-ucapan-papan').val().length;
      var idx_2_papan4=parseInt($('#note_btn_id_papan4').val());
      if(isNaN(idx_2_papan4)){
        idx_2_papan4=0;
      }else{
        idx_2_papan4++;
        //idx_2_papan1=idx_2_papan1%note_btn_text_papan1.length;
      }
      $('#note_btn_id_papan4').val(idx_2_papan4);
      
      $(this).parents(".sectionPurchase").find(".next-purchase-button").attr("disabled", false)
    });

    /*
    $("#jenisPapan").change(function(){
      $( "select option:selected").each(function(){
        if($(this).attr("value")=="Happy Wedding"){
          $("#suggest-messages a").hide();
          $("#show_note_papan1").show();
          $("#kartu-ucapan-papan").val("");
        }
        if($(this).attr("value")=="Congratulations"){
          $("#suggest-messages a").hide();
          $("#show_note_papan2").show();
          $("#kartu-ucapan-papan").val("");
        }
        if($(this).attr("value")=="Duka Cita"){
          $("#suggest-messages a").hide();
          $("#show_note_papan3").show();
          $("#kartu-ucapan-papan").val("");
        }
      });
    }).change();
    */

    

    

    $(".variant-metafield").each(function(){
      const t = $(this)
      const id = t.attr("id")
      const target = $(`[data-select=${id}]`)
      t.on('select2:selecting', function(e) {
        const data = e.params.args.data
        target.val(data.text)
      });
    })
  })
</script>

<div id="popupCart">
  <div class="container">
    <div class="wrapperPopupCart">
      <div class="headerPopupCart">
        <div class="d-flex pl-5 pr-5 p-4">
          <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
            <path d="M5.55008 11.3076L0.580078 6.33761L1.29408 5.62461L5.55008 9.88061L14.7061 0.724609L15.4191 1.43861L5.55008 11.3076Z" fill="black"/>
          </svg>
          <span>item added to your cart</span>
        </div>
        <a class="close-purchase-popup">
  <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none">
    <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"/>
  </svg>
</a>

      </div>
      <div class="contentPopupCart">
        <div class="pl-5 pr-5 p-4">
          <div class="itemContent row m-0 justify-content-between">
            <div class="col-2 align-self-center">
              
              <img
                class="d-block"
                width="80"
                src="//outerbloom.com/cdn/shop/files/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6_80x.jpg?v=1771038360"
              >
            </div>
            <div class="col-10 align-self-center">
              <div class="row pl-3">
                <div class="col-12 col-lg-7">
                  <span class="titleCartPopup text-uppercase">MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru</span>
                  <div class="cart-popup-quantity mt-2">
                    <div class="quantity-selector" data-popup-item="true">
                      <button type="button" class="qty-minus" data-action="minus">
                        −
                      </button>
                      <input 
                        type="text" 
                        class="qty-input" 
                        value="1" 
                        min="1" 
                        readonly
                      >
                      <button type="button" class="qty-plus" data-action="plus">
                        +
                      </button>
                    </div>
                  </div>
                </div>
                <div class="d-flex justify-content-end col-12 col-lg-5">
                  <span class="deleteCartPopup hide">Delete</span>
                  <span class="lineCartPrice align-self-center">Rp 277.700</span>
                </div>
              </div>
            </div>
          </div>
          <div class="itemProperties">
            
              <div class="propDeliver">
                <h4>delivery option detail</h4>
                <p>
                  <span>delivery city</span>
                  <span class="propDeliveryCity">jakarta</span>
                </p>
                <p>
                  <span>delivery date</span>
                  <span class="propDeliveryDate">24/03/2025</span>
                </p>
                <p>
                  <span>delivery time</span>
                  <span class="propDeliveryTime">Afternoon | 13:00 - 18:00</span>
                </p>
              </div>
              <div class="propAddress">
                <h4>delivery option detail</h4>
                <p>
                  <span>RECIPIENT NAME</span>
                  <span class="propDeliveryName">jane doe</span>
                </p>
                <p>
                  <span>delivery address</span>
                  <span class="propDeliveryAddress"
                    >Jl. Gatot Subroto No. 25, RT.2/RW.4, Kuningan Barat, Kecamatan Mampang Prapatan, Kota Jakarta
                    Selatan, Daerah Khusus Ibukota Jakarta 12710, Indonesia</span
                  >
                </p>
                <p>
                  <span>recipient phone number</span>
                  <span class="propDeliveryPhone">(+62) 812-3456-7890</span>
                </p>
                <p>
                  <span>PROVINCE</span>
                  <span class="propDeliveryProv">Jakarta</span>
                </p>
                <p>
                  <span>postal code</span>
                  <span class="propDeliveryZip">12710</span>
                </p>
                
                
              </div>
            
          </div>
          <div class="itemAddonCart">
            <div class="toggleAddonCart d-flex justify-content-between">
              <h4>add-ons (0)</h4>
              <svg xmlns="http://www.w3.org/2000/svg" width="5" height="9" viewBox="0 0 5 9" fill="none">
                <path d="M1.0128 0.84668L4.78613 4.62001L1.0128 8.39335L0.546133 7.92001L3.84613 4.62001L0.546133 1.32001L1.0128 0.84668Z" fill="black"/>
              </svg>
            </div>
            <div class="wrapperItemAddonCart"></div>
          </div>
          
        </div>
      </div>
      <div class="footerPopupCart">
        <div class="row m-0 pl-5 pr-5 p-4">
          <a class="btn btnViewCart w-100 text-uppercase text-center" href="/cart">View Cart</a>
          <a class="btn btnViewCheckout w-100 text-uppercase text-center" href="/checkout"><span>Checkout</span></a>
          <a class="btnContinueShopping w-100 text-center" href="/">Continue shopping</a>
        </div>
      </div>
    </div>
  </div>
</div>

<style>
  /* Quantity Selector in Cart Popup */
  .cart-popup-quantity .quantity-selector {
    display: inline-flex;
    align-items: center;
    border: 1px solid #D1D1D1;
    border-radius: 2px;
    overflow: hidden;
    background: white;
    max-width: 140px;
  }

  .cart-popup-quantity .quantity-selector button {
    width: 32px;
    height: 32px;
    border: none;
    background: white;
    cursor: pointer;
    font-size: 16px;
    font-weight: 400;
    color: #424242;
    transition: all 0.2s ease;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
  }

  .cart-popup-quantity .quantity-selector button:hover {
    background: #F5F5F5;
    color: #212121;
  }

  .cart-popup-quantity .quantity-selector button:active {
    background: #E0E0E0;
  }

  .cart-popup-quantity .quantity-selector button:disabled {
    opacity: 0.4;
    cursor: not-allowed;
    background: white;
  }

  .cart-popup-quantity .quantity-selector input {
    width: 50px;
    height: 32px;
    border: none;
    border-left: 1px solid #D1D1D1;
    border-right: 1px solid #D1D1D1;
    text-align: center;
    font-size: 13px;
    font-weight: 500;
    color: #212121;
    -moz-appearance: textfield;
    background: white;
    padding: 0;
  }

  .cart-popup-quantity .quantity-selector input::-webkit-outer-spin-button,
  .cart-popup-quantity .quantity-selector input::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
  }

  .cart-popup-quantity .quantity-selector input:focus {
    outline: none;
  }
</style>

<script>
  // Function to update popup cart quantity
  window.updatePopupCartQuantity = function() {
    let itemKey = '';
    let currentProductId = 48262696042711;
    
    // Get current cart and update popup display
    fetch(window.Shopify.routes.root + 'cart.js')
      .then(response => response.json())
      .then(cart => {
        if(cart.items && cart.items.length > 0) {
          // Find the item that matches current product variant
          const matchingItem = cart.items.find(item => 
            item.product_id === 8262739886295 || 
            item.variant_id === currentProductId
          );
          
          if(matchingItem) {
            itemKey = matchingItem.key;
            
            // Display current total quantity in popup (including what was already in cart)
            const totalQty = matchingItem.quantity;
            $("#popupCart .qty-input").val(totalQty);
            
            // Store itemKey for later use
            $("#popupCart .quantity-selector").attr("data-item-key", itemKey);
            
            // Update the price display to reflect total quantity
            const basePrice = 27770000;
            const newPrice = basePrice * totalQty;
            const formattedPrice = new Intl.NumberFormat('id-ID', {
              style: 'currency',
              currency: 'IDR',
              minimumFractionDigits: 0
            }).format(newPrice / 100);
            $(".lineCartPrice").text(formattedPrice);
          }
        }
      })
      .catch(error => {
        console.error('Error fetching cart:', error);
      });
  };

  $(document).ready(function(){
    // Initialize on page load
    updatePopupCartQuantity();
    
    // Quantity Selector Handler for Cart Popup
    $("#popupCart .quantity-selector button").on("click", function(e){
      e.preventDefault();
      const $button = $(this);
      const $selector = $button.closest(".quantity-selector");
      const $input = $selector.find(".qty-input");
      const action = $button.data("action");
      const itemKey = $selector.attr("data-item-key");
      let currentQty = parseInt($input.val());
      
      if(action === "minus" && currentQty > 1) {
        currentQty--;
      } else if(action === "plus") {
        currentQty++;
      }
      
      // Update the input value
      $input.val(currentQty);
      
      // Update the line price display
      const basePrice = 27770000;
      const newPrice = basePrice * currentQty;
      const formattedPrice = new Intl.NumberFormat('id-ID', {
        style: 'currency',
        currency: 'IDR',
        minimumFractionDigits: 0
      }).format(newPrice / 100);
      $(".lineCartPrice").text(formattedPrice);
      
      // Disable buttons while updating
      $selector.find("button").prop("disabled", true);
      
      // Update cart directly with the new total quantity
      fetch(window.Shopify.routes.root + 'cart/change.js', {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({
          id: itemKey,
          quantity: currentQty
        })
      })
      .then(response => response.json())
      .then(data => {
        // Re-enable buttons
        $selector.find("button").prop("disabled", false);
        
        // Update CartJS if available
        if(typeof CartJS !== 'undefined') {
          CartJS.init(data);
        }
        
        console.log('Cart updated successfully', data);
      })
      .catch(error => {
        console.error('Error updating cart:', error);
        $selector.find("button").prop("disabled", false);
      });
    });
  });
</script>


<style>
  .field-error .variant-metafield {
    border-color: #e74c3c !important;
    box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.25) !important;
  }
  
  .field-error .form-control {
    border-color: #e74c3c !important;
    box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.25) !important;
  }
  
  .field-error select {
    border-color: #e74c3c !important;
    box-shadow: 0 0 0 0.2rem rgba(231, 76, 60, 0.25) !important;
  }
  
  .error-message {
    display: block;
    width: 100%;
    margin-top: 0.25rem;
    font-size: 0.875em;
    color: #e74c3c;
  }
  
  #btnPurchase:disabled {
    opacity: 0.7;
    pointer-events: none;
  }

  /* Wishlist button styling */
  #wishButton {
    font-size: 14px;
    font-weight: 400;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    transition: opacity 0.2s ease;
  }

  #wishButton:hover {
    opacity: 0.8;
  }

  #wishButton:disabled {
    opacity: 0.5;
    pointer-events: none;
  }

  .wishlist-icon-wrapper svg {
    flex-shrink: 0;
    width: 16px;
  }

  /* iOS specific error styling */
  @media screen and (max-width: 768px) {
    .ios .field-error .variant-metafield {
      border-color: #e74c3c !important;
      box-shadow: 0 0 0 3px rgba(231, 76, 60, 0.1) !important;
    }
  }

  /* Shipping Method Section Styling */
  .delivery-method-section h4 {
    font-size: 16px;
    font-weight: 500;
    margin-bottom: 12px;
    color: #212121;
  }

  .delivery-method-buttons {
    display: flex;
    gap: 8px;
  }

  .delivery-method-btn {
    flex: 1;
    padding: 12px 24px;
    border: 1px solid #212121;
    font-weight: 400;
    text-transform: uppercase;
    transition: all 0.3s ease;
    cursor: pointer;
    font-size: 14px;
    letter-spacing: 0.5px;
  }

  .delivery-method-btn:not(.active) {
    background-color: #ffffff;
    color: #212121;
    font-weight: 400;
  }

  .delivery-method-btn:not(.active):hover {
    opacity: 0.8;
  }

  .delivery-method-btn.active {
    background-color: #EEEEEE;
    color: #212121;
    font-weight: 700;
  }

  @media screen and (max-width: 576px) {
    .delivery-method-buttons {
      flex-direction: column;
    }
    
    .delivery-method-btn {
      width: 100%;
    }
  }
</style>

<script>
  const shareButton = document.getElementById('shareButton');

  shareButton.addEventListener('click', () => {
    if (navigator.share) {
      navigator.share({
        title: "MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru",
        url: "/products/signature-midnight-kiss-bouquet-classic",
        text: 'Check out this page!'
      })
      .then(() => console.log('Successful share'))
      .catch((error) => console.log('Error sharing', error));
    } else {
      alert('Web Share API is not supported in this browser.');
    }
  });

  // Inventory validation function
  function checkInventoryStatus() {
    const productSelect = document.getElementById('productSelect');
    const purchaseButton = document.querySelector('#personalizeBtn button');
    
    if (!productSelect || !purchaseButton) return;

    const selectedVariantId = productSelect.value;
    
    // Get variant data from Shopify
    fetch(`/products/signature-midnight-kiss-bouquet-classic.js`)
      .then(response => response.json())
      .then(product => {
        const selectedVariant = product.variants.find(variant => variant.id == selectedVariantId);
        
        if (selectedVariant) {
          const isOutOfStock = selectedVariant.inventory_quantity <= 0 && 
                               selectedVariant.inventory_management === 'shopify' && 
                               selectedVariant.inventory_policy !== 'continue';
          
          if (isOutOfStock) {
            purchaseButton.disabled = true;
            purchaseButton.textContent = 'Out of Stock';
            purchaseButton.setAttribute('data-out-of-stock', 'true');
            purchaseButton.style.backgroundColor = '#cccccc';
            purchaseButton.style.cursor = 'not-allowed';
          } else {
            // Check if button was disabled due to other conditions
            
            
            
            
            
            
            
            
            const isOtherDisabled = false || false || false;
            
            if (!isOtherDisabled) {
              purchaseButton.disabled = false;
              purchaseButton.textContent = 'MAKE IT PERSONAL ➔';
              purchaseButton.removeAttribute('data-out-of-stock');
              purchaseButton.style.backgroundColor = '';
              purchaseButton.style.cursor = '';
            }
          }
        }
      })
      .catch(error => {
        console.error('Error checking inventory:', error);
      });
  }

  // Validate variant metafields function - make it globally accessible
  window.validateVariantMetafields = function(showErrors = false) {
    const purchaseButton = document.querySelector('#personalizeBtn button');
    const variantMetafields = document.querySelectorAll('.variant-metafield[required]');
    
    if (!purchaseButton) return true;

    let allFieldsValid = true;
    let hasEmptyFields = false;
    let firstErrorField = null;

    // Check all required variant metafields
    variantMetafields.forEach(function(field) {
      const fieldValue = field.value ? field.value.trim() : '';
      const fieldContainer = field.closest('.form-group-variant');
      
      // Remove existing error styling
      if (fieldContainer) {
        fieldContainer.classList.remove('field-error');
        const existingError = fieldContainer.querySelector('.error-message');
        if (existingError) {
          existingError.remove();
        }
      }
      
      if (!fieldValue || fieldValue === '' || fieldValue === 'Choose ' + field.getAttribute('data-properties')) {
        allFieldsValid = false;
        hasEmptyFields = true;
        
        // Store the first error field for scrolling - ensure it's a valid DOM element
        if (!firstErrorField && field && field.nodeType === 1) {
          firstErrorField = field;
          console.log('First error field stored:', field, 'Type:', field.tagName, 'Value:', field.value);
        }
        
        // Only add error styling if showErrors is true (when button is clicked)
        if (showErrors && fieldContainer) {
          fieldContainer.classList.add('field-error');
          
          // Add error message
          const errorMessage = document.createElement('div');
          errorMessage.className = 'error-message';
          errorMessage.style.color = '#e74c3c';
          errorMessage.style.fontSize = '12px';
          errorMessage.style.marginTop = '4px';
          errorMessage.textContent = 'This field is required';
          fieldContainer.appendChild(errorMessage);
        }
      }
    });

    // Auto scroll to first error field if showing errors
    if (showErrors && !allFieldsValid) {
      console.log('Scrolling to purchaseProduct section due to validation errors');
      setTimeout(function() {
        // Primary method: scroll to purchaseProduct container
        try {
          const purchaseProductSection = document.getElementById('purchaseProduct');
          if (purchaseProductSection && typeof purchaseProductSection.scrollIntoView === 'function') {
            console.log('Scrolling to purchaseProduct section');
            purchaseProductSection.scrollIntoView({ 
              behavior: 'smooth', 
              block: 'start',
              inline: 'nearest' 
            });
            
            // Focus the first error field after scroll
            setTimeout(function() {
              if (firstErrorField) {
                try {
                  console.log('Focusing first error field:', firstErrorField.tagName, firstErrorField.id || firstErrorField.className);
                  if (typeof firstErrorField.focus === 'function') {
                    firstErrorField.focus();
                    
                    // For select elements, try to trigger the dropdown
                    if (firstErrorField.tagName && firstErrorField.tagName.toLowerCase() === 'select') {
                      setTimeout(function() {
                        if (typeof firstErrorField.click === 'function') {
                          firstErrorField.click();
                        }
                      }, 100);
                    }
                  }
                } catch (focusError) {
                  console.warn('Error during field focus:', focusError);
                }
              }
            }, 300); // Wait for scroll to complete
          } else {
            // Fallback: try alternative selectors
            const fallbackSelectors = ['#purchaseProduct', '.product-meta', 'main', '.form-group-variant'];
            let scrolled = false;
            
            for (let selector of fallbackSelectors) {
              if (!scrolled) {
                const element = document.querySelector(selector);
                if (element && typeof element.scrollIntoView === 'function') {
                  console.log('Fallback scroll to:', selector);
                  element.scrollIntoView({ 
                    behavior: 'smooth', 
                    block: 'start' 
                  });
                  scrolled = true;
                  break;
                }
              }
            }
          }
        } catch (error) {
          console.warn('Auto scroll failed, trying alternative method:', error);
          // Ultimate fallback: manual scroll to top of page
          try {
            window.scrollTo({
              top: 0,
              behavior: 'smooth'
            });
          } catch (finalError) {
            console.warn('All scroll methods failed:', finalError);
          }
        }
      }, 150); // Delay to ensure DOM is stable
    }

    // Check inventory status as well
    const isOutOfStock = purchaseButton.getAttribute('data-out-of-stock') === 'true';
    
    // Check other disabled conditions
    
    
    
    
    
    
    
    
    const isOtherDisabled = false || false || false;

    // Update button state only for inventory and other conditions, not for variant metafields
    if (isOutOfStock || isOtherDisabled) {
      purchaseButton.disabled = true;
      
      if (isOutOfStock) {
        purchaseButton.textContent = 'Out of Stock';
        purchaseButton.style.backgroundColor = '#cccccc';
      }
      
      purchaseButton.style.cursor = 'not-allowed';
    } else {
      purchaseButton.disabled = false;
      purchaseButton.textContent = 'MAKE IT PERSONAL ➔';
      purchaseButton.style.backgroundColor = '';
      purchaseButton.style.color = '';
      purchaseButton.style.cursor = '';
    }
    
    return allFieldsValid;
  }

  // Check inventory on page load and setup event listeners
  document.addEventListener('DOMContentLoaded', function() {
    checkInventoryStatus();
    window.validateVariantMetafields(false); // Don't show errors on page load
    
    // Shipping Method Toggle Functionality
    const shippingMethodButtons = document.querySelectorAll('.delivery-method-btn');
    const selectedMethodInput = document.getElementById('selectedShippingMethod');

    shippingMethodButtons.forEach(function(button) {
      button.addEventListener('click', function() {
        const isCurrentlyActive = this.classList.contains('active');
        const method = this.getAttribute('data-method');
        
        // Remove active class from all buttons
        shippingMethodButtons.forEach(function(btn) {
          btn.classList.remove('active');
          btn.style.backgroundColor = '#ffffff';
          btn.style.color = '#212121';
          btn.style.fontWeight = '400';
        });

        // If button was not active, make it active (select)
        if (!isCurrentlyActive) {
          this.classList.add('active');
          this.style.backgroundColor = '#EEEEEE';
          this.style.color = '#212121';
          this.style.fontWeight = '700';
          
          // Update hidden input value
          if (selectedMethodInput) {
            selectedMethodInput.value = method;
          }
          
          // Handle pickup-specific functionality
          if (method === 'Pickup') {
            handlePickupMode();
          } else {
            handleDeliveryMode();
          }
          
          console.log('Delivery method selected:', method);
        } else {
          // Unselect - clear hidden input value and revert to delivery mode
          if (selectedMethodInput) {
            selectedMethodInput.value = '';
          }
          handleDeliveryMode();
          console.log('Delivery method unselected');
        }
      });
    });
    
    // Function to handle pickup mode
    function handlePickupMode() {
      // 1. Auto-select Jakarta and disable city dropdown
      const citySelect = document.getElementById('cities');
      if (citySelect) {
        // Set value to Jakarta
        citySelect.value = 'Jakarta';
        citySelect.disabled = true;
        citySelect.style.backgroundColor = '#f5f5f5';
        citySelect.style.cursor = 'not-allowed';
        citySelect.style.opacity = '0.6';
        
        // Trigger change event to update any dependent fields
        const event = new Event('change', { bubbles: true });
        citySelect.dispatchEvent(event);
      }
      
      // 2. Show pickup location info (in delivery method section)
      const pickupLocationInfo = document.getElementById('pickupLocationInfo');
      if (pickupLocationInfo) {
        pickupLocationInfo.style.display = 'block';
      }
      
      // 2b. Show pickup location details (in address section)
      const pickupLocationDetails = document.getElementById('pickupLocationDetails');
      if (pickupLocationDetails) {
        pickupLocationDetails.style.display = 'block';
      }
      
      // 3. Hide address form and remove required attributes
      const formAddressPurchase = document.querySelector('.formAddressPurchase');
      if (formAddressPurchase) {
        formAddressPurchase.style.display = 'none';
        
        // Remove required from all inputs in the form
        const requiredInputs = formAddressPurchase.querySelectorAll('[required]');
        requiredInputs.forEach(function(input) {
          input.removeAttribute('required');
          input.setAttribute('data-was-required', 'true'); // Mark for restoration
        });
      }
      
      // 4. Trigger date restrictions based on product tags
      window.applyPickupDateRestrictions = true;
      
      // Apply restrictions to existing date buttons immediately
      const deliveryDateElement = document.getElementById('deliveryDate');
      if (deliveryDateElement) {
        console.log('Applying pickup date restrictions immediately to existing buttons');
        applyPickupDateRestrictionsLocal(deliveryDateElement);
      }
      
      // 5. Hide full calendar (except for pickup-itcinhouse)
      const isPickupInhouse = true;
      const deliveryDateFull = document.getElementById('deliveryDateFull');
      if (deliveryDateFull && !isPickupInhouse) {
        deliveryDateFull.style.display = 'none';
      }

      // 5b. Hide row-delivery-time (except for pickup-itcinhouse)
      const rowDeliveryTime = document.getElementById('row-delivery-time');
      if (rowDeliveryTime) {
        rowDeliveryTime.style.display = 'none';

        // 5c. Make delivery time not required (except for pickup-itcinhouse)
        if (propDeliveryTime) {
          propDeliveryTime.removeAttribute('required');
          propDeliveryTime.value = '-';
        }
        const propertiesDeliveryTime = document.getElementById('properties-delivery-time');
        if (propertiesDeliveryTime) {
          propertiesDeliveryTime.removeAttribute('required');
          propertiesDeliveryTime.value = '-';
        }
      }

      // 6. Update address for pickup
      if (typeof window.updateDeliveryAddress === 'function') {
        window.updateDeliveryAddress();
      }
    }
    
    // Local function to apply pickup date restrictions
    function applyPickupDateRestrictionsLocal(deliveryDateElement) {
      if (!deliveryDateElement) return;
      
      // Get current time in Jakarta timezone
      const now = new Date(new Date().toLocaleString("en-US", {timeZone: "Asia/Jakarta"}));
      const currentHour = now.getHours();
      const currentMinute = now.getMinutes();
      const currentTime = currentHour + (currentMinute / 60);
      const currentDate = now.getDate();
      
      const isAfter3PM = currentTime >= 15.0;
      
      // Check product tags
      const isPickupInhouse = true;
      const isPickupVendor = false;
      
      console.log('Applying pickup date restrictions:', {
        isPickupInhouse,
        isPickupVendor,
        currentDate,
        currentTime: currentTime.toFixed(2),
        isAfter3PM
      });
      
      const dateButtons = deliveryDateElement.querySelectorAll('button.date-single');
      console.log('Found date buttons:', dateButtons.length);
      
      dateButtons.forEach((button, index) => {
        const buttonDate = parseInt(button.dataset.date, 10);
        console.log(`Checking button ${index}: date=${buttonDate}, currentDate=${currentDate}`);
        
        if (isPickupInhouse) {
          // Check if this button is today
          if (buttonDate === currentDate) {
            button.disabled = true;
            button.classList.add('stop');
            button.title = 'Pickup not available for today';
            console.log(`✓ Disabled button ${index} (date ${buttonDate} = today) for pickup-itcinhouse`);
          } 
          // Check if this button is tomorrow AND it's after 3 PM
          else if (buttonDate === currentDate + 1 && isAfter3PM) {
            button.disabled = true;
            button.classList.add('stop');
            button.title = 'Pickup not available (after 3 PM cutoff)';
            console.log(`✓ Disabled button ${index} (date ${buttonDate} = tomorrow) for pickup-itcinhouse (after 3 PM)`);
          }
        } else if (isPickupVendor) {
          // For pickup-itcvendor: Allow ONLY date 14.
          // Disable 14 if today is 13th > 3 PM or today is > 13th.
          
          if (buttonDate !== 14) {
             button.disabled = true;
             button.classList.add('stop');
             button.title = 'Pickup only available on the 14th';
             // Do NOT hide, just disable.
             console.log(`✓ Disabled button ${index} (date ${buttonDate}) for pickup-itcvendor (not 14th)`);
          } else {
             // Date is 14. Check cutoff.
             if (currentDate > 13 || (currentDate === 13 && isAfter3PM)) {
                button.disabled = true;
                button.classList.add('stop');
                button.title = 'Pickup closed for 14th (Cutoff: 13th 15:00)';
                console.log(`✓ Disabled button ${index} (date ${buttonDate}) for pickup-itcvendor (Cutoff missed)`);
             }
          }
        }
      });
    }
    
    // Function to handle delivery mode (normal mode)
    function handleDeliveryMode() {
      // 1. Re-enable city dropdown
      const citySelect = document.getElementById('cities');
      if (citySelect) {
        citySelect.disabled = false;
        citySelect.style.backgroundColor = '#fff';
        citySelect.style.cursor = 'pointer';
        citySelect.style.opacity = '1';
      }
      
      // 2. Hide pickup location info (in delivery method section)
      const pickupLocationInfo = document.getElementById('pickupLocationInfo');
      if (pickupLocationInfo) {
        pickupLocationInfo.style.display = 'none';
      }
      
      // 2b. Hide pickup location details (in address section)
      const pickupLocationDetails = document.getElementById('pickupLocationDetails');
      if (pickupLocationDetails) {
        pickupLocationDetails.style.display = 'none';
      }
      
      // 3. Show address form and restore required attributes
      const formAddressPurchase = document.querySelector('.formAddressPurchase');
      if (formAddressPurchase) {
        formAddressPurchase.style.display = 'block';
        
        // Restore required attributes
        const wasRequiredInputs = formAddressPurchase.querySelectorAll('[data-was-required="true"]');
        wasRequiredInputs.forEach(function(input) {
          input.setAttribute('required', 'required');
          input.removeAttribute('data-was-required');
        });
      }
      
      // 4. Remove date restrictions
      window.applyPickupDateRestrictions = false;
      
      // Trigger date re-render to remove restrictions
      if (citySelect && citySelect.value) {
        setTimeout(function() {
          const changeEvent = new Event('change', { bubbles: true });
          citySelect.dispatchEvent(changeEvent);
        }, 100);
      }

      // 5. Show full calendar
      const deliveryDateFull = document.getElementById('deliveryDateFull');
      if (deliveryDateFull) {
        deliveryDateFull.style.display = 'block';
      }

      // 5b. Show row-delivery-time
      const rowDeliveryTime = document.getElementById('row-delivery-time');
      if (rowDeliveryTime) {
        rowDeliveryTime.style.display = 'block';
      }

      // 5c. Make delivery time required again
      const propDeliveryTime = document.getElementById('propDeliveryTime');
      if (propDeliveryTime) {
        propDeliveryTime.setAttribute('required', 'required');
      }
      const propertiesDeliveryTime = document.getElementById('properties-delivery-time');
      if (propertiesDeliveryTime) {
        propertiesDeliveryTime.setAttribute('required', 'required');
      }

      // 6. Update address for delivery
      if (typeof window.updateDeliveryAddress === 'function') {
        window.updateDeliveryAddress();
      }
    }
    
    // Listen for variant changes
    const productSelect = document.getElementById('productSelect');
    if (productSelect) {
      productSelect.addEventListener('change', function() {
        checkInventoryStatus();
        setTimeout(function() {
          window.validateVariantMetafields(false); // Don't show errors on variant change
        }, 100);
      });
    }

    // Listen for changes on variant metafield inputs - only to clear existing errors
    const variantMetafields = document.querySelectorAll('.variant-metafield');
    variantMetafields.forEach(function(field) {
      field.addEventListener('input', function() {
        clearFieldError(this);
      });
      field.addEventListener('change', function() {
        clearFieldError(this);
      });
      field.addEventListener('blur', function() {
        clearFieldError(this);
      });
    });

    // Listen for changes on select elements within variant metafields
    const variantSelects = document.querySelectorAll('.variant-metafield-select');
    variantSelects.forEach(function(select) {
      select.addEventListener('change', function() {
        clearFieldError(this);
      });
    });
  });

  // Function to clear error styling from a specific field
  function clearFieldError(field) {
    const fieldContainer = field.closest('.form-group-variant');
    if (fieldContainer) {
      fieldContainer.classList.remove('field-error');
      const existingError = fieldContainer.querySelector('.error-message');
      if (existingError) {
        existingError.remove();
      }
    }
  }

  // Prevent form submission if out of stock or required fields are empty
  document.addEventListener('click', function(e) {
    if (e.target.matches('button[data-out-of-stock="true"]')) {
      e.preventDefault();
      e.stopPropagation();
      alert('This product is currently out of stock and cannot be purchased.');
      return false;
    }

    // Check if this is the purchase button
    if (e.target.id === 'btnPurchase' || e.target.closest('#btnPurchase')) {
      const isValid = window.validateVariantMetafields(true); // Show errors when button is clicked
      
      if (!isValid) {
        e.preventDefault();
        e.stopPropagation();
        
        // The validateVariantMetafields function already handles scrolling and focusing
        // No need for additional scroll here as it's handled in the validation function
        
        return false;
      }
    }
  });
</script>


  
    <div class="product-description rte bg-card col-12 py-3 px-0 m-0" itemprop="description">
      




    <div class="short-desc-mobile d-block d-lg-none mb-3">
        <div class="short-desc">
            <ul data-mce-fragment="1">
<li data-mce-fragment="1"><strong data-mce-fragment="1">Layanan Live Chat 24 Jam Non Stop</strong></li>
<li data-mce-fragment="1"><strong data-mce-fragment="1">Transaksi Mudah Cepat & Praktis</strong></li>
<li data-mce-fragment="1"><strong data-mce-fragment="1">Pilihan Permainan Terlengkap Gampang Menang</strong></li>

        </div>
        <label class="more-mobile">Show More →</label>
    </div>


<div class="short-content short-spec position-relative open">
  <h3 class="heading-toggle">Descriptions</h3>
  <div
    id="product-desc"
    class="content-toggle product-spec pb-3"
    style="display: block; height: 200px; overflow: hidden; transition: height 0.3s ease;"
  >
    <ul data-mce-fragment="1">
<li data-mce-fragment="1"><strong data-mce-fragment="1">Layanan Live Chat 24 Jam Non Stop</strong></li>
<li data-mce-fragment="1"><strong data-mce-fragment="1">Transaksi Mudah Cepat & Praktis</strong></li>
<li data-mce-fragment="1"><strong data-mce-fragment="1">Pilihan Permainan Terlengkap Gampang Menang</strong></li>
</ul>
<p data-mce-fragment="1">Rekomendasi situs slot777 online MI77 kini hadir sebagai link permainan putaran terlengkap paling baru dengan koleksi game slot terbaru yang menghadirkan akses cepat dan stabil serta pengalaman bermain modern yang diperbarui setiap hari.</p>
  </div>
  <button id="readMoreBtn" class="read-more-toggle mt-2" style="background: none; border: none; padding: 0; cursor: pointer; color: #212121; text-decoration: underline; font-size: 14px;width: 100%;position: absolute;height: 70px;bottom: 0;background-color: rgba(255, 255, 255, 0.8);
    font-weight: 600;">
    Read More
  </button>
</div>


<script>
    var liCountMobile;
    $(document).ready(function () {
        // Handle mobile short description - same logic as desktop
        $(".short-desc-mobile .short-desc ul").each(function() {
            liCountMobile = $(this).children("li").length;
            if (liCountMobile > 3) {
                $(this).closest(".short-desc-mobile").find(".more-mobile").addClass("showMe");
            }
        });

        $(".more-mobile").click(function () {
            $("#product-desc").find("ul").show();
            $('html, body').animate({
                scrollTop: $("#product-desc").offset().top - 150
            }, 1000);
            $("#product-desc").css("height","auto");
            
            // Open the descriptions accordion
            var $descriptions = $("#product-desc").closest(".short-content");
            if (!$descriptions.hasClass("open")) {
                $descriptions.addClass("open");
                $("#product-desc").show();
            }
        });

        // Handle Read More / Read Less toggle
        var isExpanded = false;
        var descElement = $("#product-desc");
        var readMoreBtn = $("#readMoreBtn");

        readMoreBtn.click(function(e) {
            e.preventDefault();
            isExpanded = !isExpanded;

            if (isExpanded) {
                // Expand to full height
                descElement.css("height", "auto");
                readMoreBtn.text("Read Less");
                readMoreBtn.css({
                    "position": "relative",
                    "height": "auto",
                    "bottom": "auto",
                    "background-color": "transparent"
                });
            } else {
                // Collapse to 200px
                descElement.css("height", "200px");
                readMoreBtn.text("Read More");
                readMoreBtn.css({
                    "position": "absolute",
                    "height": "70px",
                    "bottom": "0",
                    "background-color": "rgba(255, 255, 255, 0.8)"
                });
            }
        });
    });
</script>

    </div>
  
</div>

          </div>
        </div>
      </div>
    </div>
                </div>
              </div>
            </div>
          </div>
        </div>
        <div id="product-bottom-left" class="product-bottom-left col-lg-12">
          <div class="container">
            

            <div id="anchor-review"></div>
            <div id="product-reviews" class="product-reviews">
              

<!--Stamped - Begin Main Widget -->
<div 
id="stamped-main-widget"   
data-product-id="8262739886295"   
data-name="MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru"   
data-url="https://www.houseonthehillaustin.com/home/rave-reviews/"   
data-image-url="//outerbloom.com/cdn/shop/files/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6_large.jpg%3Fv=1771038360" 
data-description="&lt;ul data-mce-fragment=&quot;1&quot;&gt;
&lt;li data-mce-fragment=&quot;1&quot;&gt;&lt;strong data-mce-fragment=&quot;1&quot;&gt;Layanan Live Chat 24 Jam Non Stop&lt;/strong&gt;&lt;/li&gt;
&lt;li data-mce-fragment=&quot;1&quot;&gt;&lt;strong data-mce-fragment=&quot;1&quot;&gt;Transaksi Mudah Cepat & Praktis&lt;/strong&gt;&lt;/li&gt;
&lt;li data-mce-fragment=&quot;1&quot;&gt;&lt;strong data-mce-fragment=&quot;1&quot;&gt;Pilihan Permainan Terlengkap Gampang Menang&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-mce-fragment=&quot;1&quot;&gt;Rekomendasi situs slot777 online MI77 kini hadir sebagai link permainan putaran terlengkap paling baru dengan koleksi game slot terbaru yang menghadirkan akses cepat dan stabil serta pengalaman bermain modern yang diperbarui setiap hari.
&lt;table data-mce-fragment=&quot;1&quot; width=&quot;100%&quot;&gt;
&lt;tbody data-mce-fragment=&quot;1&quot;&gt;
&lt;tr data-mce-fragment=&quot;1&quot;&gt;
&lt;td data-mce-fragment=&quot;1&quot;&gt;SKU&lt;/td&gt;
&lt;td data-mce-fragment=&quot;1&quot;&gt;OBIBUN1205&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-mce-fragment=&quot;1&quot;&gt;
&lt;td data-mce-fragment=&quot;1&quot;&gt;Isi&lt;/td&gt;
&lt;td data-mce-fragment=&quot;1&quot;&gt;6 tangkai Mawar impor dan Caspea&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;"   
data-product-sku="signature-midnight-kiss-bouquet-classic" 
data-product-type="Bunga Outerbloom">   
   
</div>
<!-- Stamped - End Main Widget -->


            </div>
            <div id="anchor-qna"></div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/shopify-cartjs/1.1.0/cart.min.js"></script>

<style>
  /* Image Editor Popup Styles */
  .image-editor-popup {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    box-sizing: border-box;
  }

  .image-editor-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.7);
    backdrop-filter: blur(2px);
  }

  .image-editor-modal {
    position: relative;
    background: white;
    border-radius: 12px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
    max-width: min(900px, calc(100vw - 40px));
    max-height: min(700px, calc(100vh - 40px));
    width: 100%;
    display: flex;
    flex-direction: column;
    overflow: auto;
    margin: auto;
    transform: translateZ(0);
  }

  .image-editor-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px 24px;
    border-bottom: 1px solid #e5e7eb;
    background: #f9fafb;
  }

  .image-editor-header h3 {
    margin: 0;
    font-size: 18px;
    font-weight: 600;
    color: #111827;
  }

  .close-editor {
    background: none;
    border: none;
    font-size: 24px;
    color: #6b7280;
    cursor: pointer;
    padding: 0;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 6px;
    transition: all 0.2s;
  }

  .close-editor:hover {
    background: #f3f4f6;
    color: #374151;
  }

  .image-editor-content {
    display: flex;
    flex: 1;
    min-height: 500px;
  }

  .image-editor-canvas {
    flex: 1;
    padding: 20px;
    background: #f8fafc;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 400px;
  }

  .image-editor-canvas img {
    max-width: 100%;
    max-height: 100%;
    display: block;
  }

  .image-editor-controls {
    width: 280px;
    padding: 20px;
    background: white;
    border-left: 1px solid #e5e7eb;
    overflow-y: auto;
  }

  .control-group {
    margin-bottom: 20px;
    padding-bottom: 16px;
    border-bottom: 1px solid #f3f4f6;
  }

  .control-group:last-child {
    border-bottom: none;
    margin-bottom: 0;
  }

  .control-group label {
    display: block;
    font-size: 14px;
    font-weight: 500;
    color: #374151;
    margin-bottom: 8px;
  }

  .control-group select,
  .control-group input[type="range"] {
    width: 100%;
    padding: 8px 12px;
    border: 1px solid #d1d5db;
    border-radius: 6px;
    font-size: 14px;
    background: white;
  }

  .control-group input[type="range"] {
    -webkit-appearance: none;
    appearance: none;
    height: 6px;
    background: #e5e7eb;
    border-radius: 3px;
    padding: 0;
  }

  .control-group input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 18px;
    height: 18px;
    background: #3b82f6;
    border-radius: 50%;
    cursor: pointer;
  }

  .control-group button {
    background: #f3f4f6;
    border: 1px solid #d1d5db;
    border-radius: 6px;
    padding: 8px 12px;
    font-size: 13px;
    color: #374151;
    cursor: pointer;
    margin-right: 8px;
    margin-bottom: 8px;
    transition: all 0.2s;
  }

  .control-group button:hover {
    background: #e5e7eb;
    border-color: #9ca3af;
  }

  .control-group button:active {
    transform: translateY(1px);
  }

  #imageSizeInfo {
    font-size: 12px;
    color: #6b7280;
    margin-top: 8px;
    display: flex;
    flex-direction: column;
    gap: 4px;
  }

  #imageSizeInfo span {
    display: block;
    padding: 4px 8px;
    background: #f9fafb;
    border-radius: 4px;
    border: 1px solid #e5e7eb;
  }

  #originalSize {
    color: #374151;
  }

  #newSize {
    color: #059669;
    font-weight: 500;
  }

  .image-editor-footer {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    padding: 20px 24px;
    border-top: 1px solid #e5e7eb;
    background: #f9fafb;
  }

  .btn-cancel {
    background: white;
    border: 1px solid #d1d5db;
    border-radius: 6px;
    padding: 10px 20px;
    font-size: 14px;
    color: #374151;
    cursor: pointer;
    transition: all 0.2s;
  }

  .btn-cancel:hover {
    background: #f9fafb;
    border-color: #9ca3af;
  }

  .btn-save {
    background: #3b82f6;
    border: 1px solid #3b82f6;
    border-radius: 6px;
    padding: 10px 20px;
    font-size: 14px;
    color: white;
    cursor: pointer;
    transition: all 0.2s;
  }

  .btn-save:hover {
    background: #2563eb;
    border-color: #2563eb;
  }

  /* Responsive Design */
  @media (max-width: 768px) {
    .image-editor-popup {
      padding: 10px;
    }
    
    .image-editor-modal {
      max-width: calc(100vw - 20px);
      max-height: calc(100vh - 20px);
      width: 100%;
      height: auto;
      min-height: 80vh;
    }

    .image-editor-content {
      flex-direction: column;
    }

    .image-editor-controls {
      width: 100%;
      border-left: none;
      border-top: 1px solid #e5e7eb;
      max-height: 200px;
    }

    .image-editor-canvas {
      min-height: 300px;
    }
  }

  /* Loading state for preview area */
  .steps-card-preview.loading-upload {
    position: relative;
    pointer-events: none;
    opacity: 0.7;
  }

  .steps-card-preview.loading-upload::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(255, 255, 255, 0.8);
    border-radius: inherit;
    z-index: 1;
  }

  .ajax-loader {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 2;
    width: 40px;
    height: 40px;
    border: 4px solid #f3f3f3;
    border-top: 4px solid #3498db;
    border-radius: 50%;
    animation: spin 1s linear infinite;
    display: none;
  }

  /* Animation for popup */
  .image-editor-popup {
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease;
    display: flex !important;
  }

  .image-editor-popup.show {
    opacity: 1;
    visibility: visible;
  }

  .image-editor-modal {
    transform: translateY(-20px) scale(0.9);
    transition: transform 0.3s ease;
  }

  .image-editor-popup.show .image-editor-modal {
    transform: translateY(0) scale(1);
  }

  @keyframes spin {
    0% { transform: translate(-50%, -50%) rotate(0deg); }
    100% { transform: translate(-50%, -50%) rotate(360deg); }
  }

  /* Skeleton Loader for Date Buttons */
  .skeleton-date-loader {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
  }

  .skeleton-date-button {
    width: calc(14.285% - 7px);
    min-width: 40px;
    height: 40px;
    background: #f5f5f5;
    border: 1px solid #e0e0e0;
    border-radius: 50%;
    position: relative;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
  }

  .skeleton-date-button::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.6), transparent);
    animation: skeleton-shimmer 1.5s ease-in-out infinite;
  }

  .skeleton-date-text {
    width: 30px;
    height: 10px;
    background: #e0e0e0;
    border-radius: 4px;
  }

  .skeleton-date-number {
    width: 20px;
    height: 14px;
    background: #d0d0d0;
    border-radius: 4px;
  }

  @keyframes skeleton-shimmer {
    0% {
      left: -100%;
    }
    100% {
      left: 100%;
    }
  }

  @media (max-width: 768px) {
    .skeleton-date-button {
      width: calc(16.666% - 7px);
      min-width: 40px;
      height: 40px;
    }
  }

  @media (max-width: 480px) {
    .skeleton-date-button {
      width: calc(20% - 7px);
      min-width: 40px;
      height: 40px;
    }
    
    .skeleton-date-text {
      width: 25px;
      height: 8px;
    }
    
    .skeleton-date-number {
      width: 18px;
      height: 12px;
    }
  }

  /* OCR Address Popup Styles */
  .ocr-address-popup {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    z-index: 9998;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 20px;
    box-sizing: border-box;
  }

  .ocr-address-popup.show {
    display: flex;
  }

  .ocr-popup-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.6);
    backdrop-filter: blur(2px);
    cursor: pointer;
  }

  .ocr-popup-content {
    position: relative;
    background: white;
    border-radius: 12px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
    max-width: 600px;
    max-height: 80vh;
    width: 100%;
    overflow: hidden;
    display: flex;
    flex-direction: column;
  }

  .ocr-popup-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px 24px;
    border-bottom: 1px solid #e5e7eb;
    background: #f9fafb;
  }

  .ocr-popup-header h3 {
    margin: 0;
    font-size: 18px;
    font-weight: 600;
    color: #1f2937;
  }

  .close-ocr-popup {
    background: none;
    border: none;
    font-size: 28px;
    color: #6b7280;
    cursor: pointer;
    padding: 0;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: color 0.2s;
  }

  .close-ocr-popup:hover {
    color: #1f2937;
  }

  .ocr-popup-body {
    overflow-y: auto;
    padding: 20px;
    flex: 1;
  }

  .ocr-address-options {
    display: flex;
    flex-direction: column;
    gap: 12px;
  }

  .ocr-address-option {
    padding: 16px;
    border: 2px solid #e5e7eb;
    border-radius: 8px;
    cursor: pointer;
    transition: all 0.2s;
    background: white;
  }

  .ocr-address-option:hover {
    border-color: #3b82f6;
    background: #f0f4ff;
    box-shadow: 0 2px 8px rgba(59, 130, 246, 0.1);
  }

  .ocr-address-option.selected {
    border-color: #3b82f6;
    background: #eff6ff;
  }

  .address-content {
    display: flex;
    flex-direction: column;
    gap: 4px;
  }

  .address-text {
    margin: 0;
    font-size: 15px;
    font-weight: 500;
    color: #1f2937;
    line-height: 1.4;
  }

  .address-details {
    margin: 0;
    font-size: 13px;
    color: #6b7280;
  }

  body.ocr-popup-open {
    overflow: hidden;
  }

  @media (max-width: 768px) {
    .ocr-popup-content {
      max-width: calc(100vw - 40px);
      max-height: 85vh;
    }

    .ocr-popup-header h3 {
      font-size: 16px;
    }

    .address-text {
      font-size: 14px;
    }
  }
</style>

<script>
  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});

  const productType = $("[data-product-type]").data("product-type")
  const productDate = Date.parse(new Date())
  
  const shop = 'outerbloom1.myshopify.com'
  const host = 'https://app.asmaraku.com'
  // const host = 'https://d8fe-103-3-220-56.ngrok-free.app'

  const gsheet = "https://script.google.com/macros/s/AKfycbyqa6mPD6lVjU6hiHr12J8URZ2aJBGyxBsGQ0QtEIDari-rBk_9vSOITjSSmUXL1NwxEg/exec"
  
  const qrID = "030326" + randomString(4, 'aAbCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ')

  $("#properties-time").val(new Date().getTime())

  const isIOS = /iPhone|iPad|iPod/i.test(navigator.userAgent);

  if(!isIOS) {
    $("#full-date").attr("type", "button")
  }
  
  // Shipping Analytics Tracker
  class ShippingAnalytics {
    constructor() {
      this.endpoint = host + '/api/track-shipping';
      this.userId = '';
      this.userIp = document.body.getAttribute('data-ip') || 'unknown';
      this.shop = '';
    }

    async track(action, metadata = {}) {
      try {
        const payload = {
          endpoint: action,
          metadata: {
            userIp: this.userIp,
            shop: this.shop,
            timestamp: new Date().toISOString(),
            userAgent: navigator.userAgent,
            url: window.location.href,
            ...metadata
          }
        };

        const response = await fetch(this.endpoint, {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json'
          },
          body: JSON.stringify(payload)
        });

        if (!response.ok) {
          console.warn('Analytics tracking failed:', response.status);
        }
      } catch (error) {
        console.error('Analytics error:', error);
        // Fail silently, tidak block user flow
      }
    }
  }

  // Initialize
  const analytics = new ShippingAnalytics();

  let dateTime = new Date();
  let today = dateTime.getDate();
  let day = dateTime.getDay();
  let hour = dateTime.getHours();
  let min = dateTime.getMinutes();
  let timeOfDay = hour + (min / 100);

  async function getFetch(url) {
    const response = await fetch(url);
    let status = false
    let result
    if(response.ok) {
      status = true
      result = await response.json();
    }
    return {
      status,
      data: result
    }
  }

  function setCookie(cname, cvalue, exMins) {
    var d = new Date();
    d.setTime(d.getTime() + (exMins*60*1000));
    var expires = "expires="+d.toUTCString();  
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
  }

  function getCookie(cname) {
    let name = cname + "=";
    let decodedCookie = decodeURIComponent(document.cookie);
    let ca = decodedCookie.split(';');
    for(let i = 0; i <ca.length; i++) {
      let c = ca[i];
      while (c.charAt(0) == ' ') {
        c = c.substring(1);
      }
      if (c.indexOf(name) == 0) {
        return c.substring(name.length, c.length);
      }
    }
    return "";
  }

  // Initialize rupiah formatter before it's used in renderAddress
  let rupiah = new Intl.NumberFormat('id-ID', {
    style: 'currency',
    currency: 'IDR',
    maximumFractionDigits: 0, 
    minimumFractionDigits: 0
  });

  // Helper functions for localStorage (1 day storage)
  function getStorageKey(type, city = '') {
    const productId = '8262739886295';
    if (type === 'date') {
      // For date, only use product ID (no city)
      return `delivery_${type}_${productId}`;
    }
    // For other types (zip), use city
    return `delivery_${type}_${productId}_${city}`;
  }

  function saveToStorage(key, data) {
    try {
      const item = {
        data: data,
        savedAt: new Date().getTime()
      };
      localStorage.setItem(key, JSON.stringify(item));
    } catch (e) {
      console.error('Error saving to localStorage:', e);
    }
  }

  function getFromStorage(key) {
    try {
      const itemStr = localStorage.getItem(key);
      if (!itemStr) {
        return null;
      }
      const item = JSON.parse(itemStr);
      const now = new Date().getTime();
      const oneHour = 60 * 60 * 1000; // 1 hour in milliseconds
      
      // Check if data is older than 1 hour
      if (now - item.savedAt > oneHour) {
        localStorage.removeItem(key);
        return null;
      }
      return item.data;
    } catch (e) {
      console.error('Error reading from localStorage:', e);
      return null;
    }
  }

  async function renderDate(city) {
    const storageKey = getStorageKey('date');
    const storedData = getFromStorage(storageKey);
    
    let data;
    if (storedData) {
      data = storedData;
    } else {
      let dataDate = await getFetch(`${host}/api/shipping/date?domain=${shop}&productId=8262739886295&source=web`);
      data = dataDate?.data;
      
      // Save to localStorage (only once per product)
      if (data && data.date && data.time) {
        saveToStorage(storageKey, data);
      }
    }
    
    // Use the helper function to render
    if (data && data.date && data.time) {
      renderDeliveryDateFromData(data);
      
      if(productType !== '') {
        console.log("clarity event " + productType + ' calendaring')
        window.clarity("event", `${productType} calendaringSchedule`)
      }
    } else {
      console.error('Invalid delivery date data');
      showDeliveryPlaceholder();
    }
  }

  // Function to get province from city (called on-demand, not on initial render)
  async function getProvince(city) {
    if (!city || city === '') {
      return;
    }
    
    // Check localStorage first
    const storageKey = getStorageKey('province', city);
    const storedProvince = getFromStorage(storageKey);
    
    if (storedProvince) {
      console.log('Using stored province data for:', city);
      $("#province").val(storedProvince);
      return storedProvince;
    }
    
    // Fetch from API if not in localStorage
    console.log('Fetching province data from API for:', city);
    let { data: { province } } = await getFetch(`${host}/api/shipping/address/province?city=${city}&source=web`);
    console.log(province, 'province')
    $("#province").val(province)
    
    // Save to localStorage
    if (province) {
      saveToStorage(storageKey, province);
      console.log('Saved province to localStorage for:', city);
    }
    
    return province;
  }

  async function renderAddress() {
    let current
    if(getCookie("location_delivery")){
      current = getCookie("location_delivery").charAt(0).toUpperCase() + getCookie("location_delivery").slice(1)
    }
    
    const deliveryCity = document.getElementById("cities");
    
    // Check localStorage first
    const cityDataKey = `delivery_city_data_8262739886295`;
    const storedCityData = getFromStorage(cityDataKey);
    
    if (storedCityData && storedCityData.cities && storedCityData.cities.length > 0) {
      const allCities = storedCityData.cities;
      const data = storedCityData.fullData;
      
      const htmlAddress = [];
      for(let i = 0; i < data?.length; i++) {
        if(data[i]){
          const price = rupiah.format(data[i]?.rate)
          let promo = '(Promo Free Delivery)'
          if(data[i]?.name === 'Jakarta - PickUp ASHTA'){
            promo = '(at SCBD, Ashta)'
          } else if(data[i]?.name === 'Jakarta - PickUp ITC'){
            promo = '(at Kuningan, ITC Kuningan)'
          } else if(data[i]?.name === 'BSD - PickUp'){
            promo = '(at Goldfinch Gading Serpong)'
          } else if(data[i]?.name === 'Kota Lainnya'){
            promo = ''
          }
          
          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>`)
        }
      }
      
      if(deliveryCity) {
        deliveryCity.insertAdjacentHTML("beforeend", htmlAddress.join(''))
      }
      
      return storedCityData;
    }
    
    // If no stored data, show skeleton and fetch from API
    if(deliveryCity && deliveryCity.options.length === 1) { // Only default option
      const skeletonOptions = `
        <option disabled>Loading cities...</option>
        <option disabled>&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;</option>
        <option disabled>&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;</option>
        <option disabled>&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;</option>
      `;
      deliveryCity.insertAdjacentHTML("beforeend", skeletonOptions);
    }
    
    let address = await getFetch(`${host}/api/shipping/address?domain=${shop}&productId=8262739886295&source=web`);
    console.log(address)
    const data = address?.data?.city
    const htmlAddress = []
    const grouping = []
    const allCities = [] // Store all city names
    
    for(let i = 0;i < data?.length;i++) {
      if(data[i]){
        if(data[i]?.group) {
          grouping.push(data[i].group)
        }
        const price = rupiah.format(data[i]?.rate)
        let promo = '(Promo Free Delivery)'
        if(data[i]?.name === 'Jakarta - PickUp ASHTA'){
          promo = '(at SCBD, Ashta)'
        } else if(data[i]?.name === 'Jakarta - PickUp ITC'){
          promo = '(at Kuningan, ITC Kuningan)'
        } else if(data[i]?.name === 'BSD - PickUp'){
          promo = '(at Goldfinch Gading Serpong)'
        } else if(data[i]?.name === 'Kota Lainnya'){
          promo = ''
        }
        
        // Add city name to allCities array
        allCities.push(data[i]?.name);
        
        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>`)
      }
    }
    
    if(deliveryCity) {
      // Remove skeleton options before adding real options
      const skeletonOpts = deliveryCity.querySelectorAll('option[disabled]');
      skeletonOpts.forEach(opt => {
        if (opt.textContent.includes('Loading') || opt.textContent.includes('●')) {
          opt.remove();
        }
      });
      
      deliveryCity.insertAdjacentHTML("beforeend", htmlAddress.join(''))
    }
    
    // Save all cities to localStorage for 1 day
    const saveCityDataKey = `delivery_city_data_8262739886295`;
    const saveCityData = {
      cities: allCities,
      fullData: data  // Save full data for later use
    };
    saveToStorage(saveCityDataKey, saveCityData);
    console.log('Saved city data:', saveCityData);
    
    return saveCityData;
  }
  
  // Function to get user city from IP address
  async function getUserCityFromIP(availableCities) {
    try {
      // Try to get location from IP
      const ipResponse = await fetch('https://ipapi.co/json/');
      const ipData = await ipResponse.json();
      const userCity = ipData.city;
      
      console.log('User city from IP:', userCity);
      
      // Check if user city exists in available cities
      const matchedCity = availableCities.find(city => 
        city.toLowerCase().includes(userCity.toLowerCase()) || 
        userCity.toLowerCase().includes(city.toLowerCase())
      );
      
      if (matchedCity) {
        console.log('Matched city found:', matchedCity);
        return matchedCity;
      }
      
      console.log('User city not in available cities');
      return "";
    } catch (error) {
      console.error('Error getting user location:', error);
      return "";
    }
  }

  // Function to render zip codes (called on-demand, not on initial render)
  async function renderZip(v, v2, v3) {
    const deliveryZip = document.getElementById("zip");
    if(v === '') {
      return
    }
    
    // Check localStorage first
    const storageKey = getStorageKey('zip', v);
    const storedZip = getFromStorage(storageKey);
    
    let zip;
    if (storedZip) {
      console.log('Using stored zip code data for:', v);
      zip = storedZip;
    } else {
      console.log('Fetching zip code data from API for:', v);
      let dataZip = await getFetch(`${host}/api/shipping/address/zip?city=${v}&city2=${v2}&city3=${v3}&source=web`);
      zip = dataZip?.data?.zip;
      console.log(zip)
      
      // Save to localStorage
      if (zip && zip.length > 0) {
        saveToStorage(storageKey, zip);
      }
    }
    
    let htmlZip = []
    for(let i = 0; i < zip?.length;i++) {
      htmlZip.push(`<option value="${zip[i]?.postalCode} - ${zip[i]?.subdistrict}">${zip[i]?.postalCode} - ${zip[i]?.subdistrict} - ${zip[i]?.city}</option>`)
    }
    deliveryZip.insertAdjacentHTML("beforeend", htmlZip.join(''))
    
    // Initialize Select2 with search for zip code
    if(!isIOS) {
      setTimeout(() => {
        initSelect2('#zip', {
          placeholder: 'Postal Code'
        });
      }, 100);
    }
  }
  
  // Add skeleton loader for delivery date
  function showDateSkeleton() {
    const deliveryDate = document.getElementById("deliveryDate");
    if(deliveryDate && deliveryDate.children.length === 0) {
      const skeletonHTML = `
        <div class="skeleton-date-loader">
          <div class="skeleton-date-button">
          </div>
          <div class="skeleton-date-button">
          </div>
          <div class="skeleton-date-button">
          </div>
          <div class="skeleton-date-button">
          </div>
          <div class="skeleton-date-button">
          </div>
          <div class="skeleton-date-button">
          </div>
          <div class="skeleton-date-button">
          </div>
        </div>
      `;
      deliveryDate.insertAdjacentHTML("afterbegin", skeletonHTML);
    }
  }
  
  // Show static disabled buttons for delivery date and time
  function showDeliveryPlaceholder() {
    const deliveryDate = document.getElementById("deliveryDate");
    const deliveryTime = document.getElementById("deliveryTime");
    
    if(deliveryDate) {
      const staticDates = `
        <button class="date-single calendarbutton btn steps-btn col col-3 btn-date-time" disabled title="Please select delivery city first">
          Mon<span>--</span>
        </button>
        <button class="date-single calendarbutton btn steps-btn col col-3 btn-date-time" disabled title="Please select delivery city first">
          Tue<span>--</span>
        </button>
        <button class="date-single calendarbutton btn steps-btn col col-3 btn-date-time" disabled title="Please select delivery city first">
          Wed<span>--</span>
        </button>
        <button class="date-single calendarbutton btn steps-btn col col-3 btn-date-time" disabled title="Please select delivery city first">
          Thu<span>--</span>
        </button>
        <button class="date-single calendarbutton btn steps-btn col col-3 btn-date-time" disabled title="Please select delivery city first">
          Fri<span>--</span>
        </button>
        <button class="date-single calendarbutton btn steps-btn col col-3 btn-date-time" disabled title="Please select delivery city first">
          Sat<span>--</span>
        </button>
      `;
      deliveryDate.innerHTML = staticDates;
    }
    
    if(deliveryTime) {
      const staticTimes = `
        <button class="time-single calendarbutton2 btn steps-btn" disabled title="Please select delivery city first">
          Morning<br/>08:00-13:00
        </button>
        <button class="time-single calendarbutton2 btn steps-btn" disabled title="Please select delivery city first">
          Afternoon<br/>13:00-18:00
        </button>
        <button class="time-single calendarbutton2 btn steps-btn" disabled title="Please select delivery city first">
          Evening<br/>17:00-22:00
        </button>
      `;
      deliveryTime.innerHTML = staticTimes;
    }
  }
  
  // Helper function to render delivery date and time from data object
  function renderDeliveryDateFromData(data) {
    const deliveryDate = document.getElementById("deliveryDate");
    const deliveryTime = document.getElementById("deliveryTime");
    
    // Check if at least one element exists
    if (!deliveryDate && !deliveryTime) {
      console.error('Cannot render delivery date: both deliveryDate and deliveryTime elements are missing');
      return false;
    }
    
    // Check if data is valid
    if (!data || !data.date || !data.time) {
      console.error('Cannot render delivery date: invalid or missing data');
      return false;
    }
    
    const date = data.date;
    const time = data.time;
    const weekday = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
    const monthly = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
    
    // Get today's date in Jakarta timezone (UTC+7)
    const todayJakarta = new Date(new Date().toLocaleString("en-US", {timeZone: "Asia/Jakarta"}));
    const today = todayJakarta.getDate();
    
    const htmlDate = [];
    for(let i = 0; i < date.length; i++) {
      const full = date[i].date;
      
      // Convert UTC date to Jakarta timezone (UTC+7)
      const utcDate = new Date(date[i].date);
      const jakartaDateString = utcDate.toLocaleString("en-US", {timeZone: "Asia/Jakarta"});
      const jakartaDate = new Date(jakartaDateString);
      
      const dt = jakartaDate.getDate();
      const monthIndex = jakartaDate.getMonth();
      const yr = jakartaDate.getFullYear();
      const day = weekday[jakartaDate.getDay()];
      const mt = monthly[monthIndex];
      
      const isDate = Boolean(date[i].isEnabled);
      const cutoffpagi = date[i].cutoff?.pagi;
      const cutoffsiang = date[i].cutoff?.siang;
      const cutoffmalam = date[i].cutoff?.malam;

      console.log(cutoffmalam, 'cutoffmalam')
      
      const buttonHTML = `
        <button data-id="8262739886295" 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'}>
          ${dt === today ? `Today<span>${dt < 10 ? '0' + dt : dt}</span>` : `${day}<span>${dt < 10 ? '0' + dt : dt}</span>`}
        </button>
      `;
      
      htmlDate.push(buttonHTML);
    }
    
    const htmlTime = [];
    for(let i = 0; i < time.length; i++) {
      const timeText = time[i].text;
      const timeTime = time[i].time;
      const timeEnabled = time[i].isEnabled;
      htmlTime.push(`
        <button class="time-single calendarbutton2 btn steps-btn" data-time="${timeText}" ${timeEnabled ? '' : 'disabled'}>${timeText}<br/>${timeTime}</button>
      `);
    }
    
    // Render delivery date if element exists
    if (deliveryDate) {
      deliveryDate.innerHTML = htmlDate.join('');
      
      // Log all buttons with their disabled status
      const buttons = deliveryDate.querySelectorAll('button');
      buttons.forEach((btn, idx) => {
        console.log(`Button ${idx}: date=${btn.dataset.date}, hasDisabled=${btn.hasAttribute('disabled')}, disabled=${btn.disabled}`);
      });
      
      // Apply pickup date restrictions if pickup mode is active
      if (window.applyPickupDateRestrictions === true) {
        applyPickupDateRestrictions(deliveryDate);
      }
    }
    
    // Render delivery time if element exists
    if (deliveryTime) {
      deliveryTime.innerHTML = htmlTime.join('');
    }
    
    return true;
  }
  
  // Function to apply pickup date restrictions
  function applyPickupDateRestrictions(deliveryDateElement) {
    if (!deliveryDateElement) return;
    
    // Get current time in Jakarta timezone
    const now = new Date(new Date().toLocaleString("en-US", {timeZone: "Asia/Jakarta"}));
    const currentHour = now.getHours();
    const currentMinute = now.getMinutes();
    const currentTime = currentHour + (currentMinute / 60); // e.g., 15.5 for 3:30 PM
    const currentDate = now.getDate();
    
    const isAfter3PM = currentTime >= 15.0; // 3 PM = 15:00
    
    // Check product tags
    const isPickupInhouse = true;
    const isPickupVendor = false;
    
    console.log('Applying pickup date restrictions:', {
      isPickupInhouse,
      isPickupVendor,
      currentDate,
      currentTime: currentTime.toFixed(2),
      isAfter3PM
    });
    
    const dateButtons = deliveryDateElement.querySelectorAll('button.date-single');
    
    dateButtons.forEach((button, index) => {
      const buttonDate = parseInt(button.dataset.date, 10);
      
      if (isPickupInhouse) {
        // For pickup-itcinhouse:
        // - Disable today (compare actual date, not index)
        // - If after 3 PM, also disable tomorrow (currentDate + 1)
        
        // Check if this button is today
        if (buttonDate === currentDate) {
          button.disabled = true;
          button.classList.add('stop');
          button.title = 'Pickup not available for today';
          console.log(`Disabled button ${index} (date ${buttonDate} = today) for pickup-itcinhouse`);
        } 
        // Check if this button is tomorrow AND it's after 3 PM
        else if (buttonDate === currentDate + 1 && isAfter3PM) {
          button.disabled = true;
          button.classList.add('stop');
          button.title = 'Pickup not available (after 3 PM cutoff)';
          console.log(`Disabled button ${index} (date ${buttonDate} = tomorrow) for pickup-itcinhouse (after 3 PM)`);
        }
      } else if (isPickupVendor) {
        // For pickup-itcvendor:
        // - Disable dates before day 14
        // - If today is day 13 and after 3 PM, also disable day 14
        if (buttonDate < 14) {
          button.disabled = true;
          button.classList.add('stop');
          button.title = 'Pickup not available before day 14';
          console.log(`Disabled button ${index} (date ${buttonDate}) for pickup-itcvendor (before day 14)`);
        } else if (buttonDate === 14 && currentDate === 13 && isAfter3PM) {
          button.disabled = true;
          button.classList.add('stop');
          button.title = 'Pickup not available (after 3 PM cutoff on day 13)';
          console.log(`Disabled button ${index} (date ${buttonDate}) for pickup-itcvendor (day 13 after 3 PM)`);
        }
      }
    });
  }
  
  // Make function globally accessible
  window.applyPickupDateRestrictionsFunction = applyPickupDateRestrictions;

  
  // Render address first, then fetch and display delivery dates immediately
  async function initializeDeliveryOptions() {
    try {
      // Check if delivery date elements exist on this page
      const deliveryDate = document.getElementById("deliveryDate");
      const deliveryTime = document.getElementById("deliveryTime");
      
      // Skip if BOTH elements are missing
      if (!deliveryDate && !deliveryTime) {
        console.log('Both delivery date and time elements not found, skipping delivery date initialization');
        // Still render address for city selection
        await renderAddress();
        return;
      }
      
      // Log which elements are available
      if (!deliveryDate) console.log('deliveryDate element not found, will only render delivery time');
      if (!deliveryTime) console.log('deliveryTime element not found, will only render delivery date');
      
      // Check if there's stored delivery date data for this product FIRST
      const dateStorageKey = getStorageKey('date');
      const storedDateData = getFromStorage(dateStorageKey);
      
      if (storedDateData && storedDateData.date && storedDateData.time) {
        // If we have stored date data, render it immediately
        const rendered = renderDeliveryDateFromData(storedDateData);
        if (!rendered) {
          console.warn('Failed to render stored delivery date, will try fetching from API');
        }
      } else {
        // No stored data, fetch from API immediately (without waiting for city selection)
        console.log('No stored delivery date found, fetching from API immediately...');
        
        // Show skeleton loader while fetching
        showDateSkeleton();
        
        // Fetch delivery date data from API
        try {
          const dataDate = await getFetch(`${host}/api/shipping/date?domain=${shop}&productId=8262739886295&source=web`);
          console.log('API Response:', dataDate);
          
          if (dataDate?.data?.date && dataDate?.data?.time) {
            // Save to localStorage for next time
            saveToStorage(dateStorageKey, dataDate.data);
            
            // Render the fetched data
            const rendered = renderDeliveryDateFromData(dataDate.data);
            if (!rendered) {
              console.error('Failed to render delivery date from API response');
              showDeliveryPlaceholder();
            }
          } else {
            console.error('Invalid delivery date data received from API');
            showDeliveryPlaceholder();
          }
        } catch (error) {
          console.error('Error fetching delivery date from API:', error);
          showDeliveryPlaceholder();
        }
      }
      
      // Render address to load cities (after dates are already showing)
      await renderAddress();
      
      // Province and zip code will be loaded when city is selected (not on initial render)
      
    } catch (error) {
      console.error('Error initializing delivery options:', error);
      
      // Auto refresh on error after 2 seconds
      console.log('Auto refreshing page due to error...');
      setTimeout(() => {
        // location.reload();
      }, 2000);
    }
  }
  
  // Initialize delivery options
  initializeDeliveryOptions();

  // Helper function to safely initialize Select2
  function initSelect2(selector, options = {}) {
    const $element = $(selector);
    
    if ($element.length === 0) {
      console.warn('Element not found:', selector);
      return;
    }
    
    // Check if Select2 is already loaded
    if (typeof $.fn.select2 !== 'undefined') {
      try {
        // Destroy existing select2 instance if any
        if ($element.hasClass('select2-hidden-accessible')) {
          $element.select2('destroy');
        }
        // Initialize select2 with merged options
        const defaultOptions = {
          minimumResultsForSearch: 0,
          width: '100%'
        };
        $element.select2(Object.assign({}, defaultOptions, options));
      } catch(e) {
        console.error('Error initializing Select2 for', selector, ':', e);
      }
    } else {
      // Wait for Select2 to load
      console.log('Waiting for Select2 library to load...');
      let attempts = 0;
      const maxAttempts = 50; // 5 seconds max
      
      const checkSelect2 = setInterval(function() {
        attempts++;
        if (typeof $.fn.select2 !== 'undefined') {
          clearInterval(checkSelect2);
          try {
            // Destroy existing select2 instance if any
            if ($element.hasClass('select2-hidden-accessible')) {
              $element.select2('destroy');
            }
            // Initialize select2 with merged options
            const defaultOptions = {
              minimumResultsForSearch: 0,
              width: '100%'
            };
            $element.select2(Object.assign({}, defaultOptions, options));
          } catch(e) {
            console.error('Error initializing Select2 for', selector, ':', e);
          }
        } else if (attempts >= maxAttempts) {
          clearInterval(checkSelect2);
          console.error('Select2 library failed to load after 5 seconds');
        }
      }, 100); // Check every 100ms
    }
  }

  async function insertCard(data) {
    const response = await fetch(`${host}/api/card/v2/new`, {
        method: "POST",
        headers: {
          'Content-Type': 'application/json',
        },
        body: data
    })
    const result = await response.json()
    let id = result?.data?.id
    $(".greetingCard").attr("data-id", id)
    return result
  }
    
  async function updateCard(id, data){
    console.log(id, data, 'updateCard')
    const response = await fetch(`${host}/api/card/v2/${id}`, {
        method: "PUT",
        headers: {
          'Content-Type': 'application/json',
        },
        body: data
    })
    console.log(response, 'updateCard')
    return response
  }
    
  function bytesToSize(bytes) {
    var sizes = ['b', 'kb', 'mb', 'gb', 'tb', 'p'];
    for (var i = 0; i < sizes.length; i++) {
      if (bytes <= 1024) {
        return bytes + ' ' + sizes[i];
      } else {
        bytes = parseFloat(bytes / 1024).toFixed(2)
      }
    }
    return bytes + ' P';
  }

  async function uploadMedia(uri, type) {
    nameq = $("#properties-nama-penerima").val()
    dear = $("#properties-kartu-nama-penerima").val()
    card = $("[data-properties=ucapan]").val()
    sender = $("#properties-kartu-nama-pengirim").val()
    photo = $("#properties-photo").val()
    video = $("#properties-video").val()
    status = "Product"
        
    const name = qrID
    let formData = new FormData(); 
    formData.append("file", uri);
    const response = await fetch(`${host}/api/upload?name=${name}&type=${type}&r=${randomString(3, '0123456789')}&shop=${shop}`, {
      method: "POST", 
      body: formData
    })
    const result = await response.json();
    if(result) {
      const url = result.url?.replace('outerbloom/', '')
      if(type === 'image/jpeg') {
        $("#properties-photo").val(url)
        $(".preview-image").show()
        $(".remove-image").show()
        $(".placeholder-image").hide()
        // $(".icon-upload").hide()
        photo = url
        
        // Trigger card preview update for photo upload
        $(document).trigger('cardDataUpdated')
      } else {
        $("#properties-video").val(url)
        $("#label-input-video span").text("Change File")
        $(".case-qrcode-preview p").text("Scan here for a secret message")
        $(".remove-media").show()
        $("#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>`)
        $("[for=input-video]").hide()
        video = url
        
        // Trigger card preview update for video upload
        $(document).trigger('cardDataUpdated')
      }
      $(".case-video-preview").show()
      $(".steps-card-preview").removeClass("loading")
      // updateCard(nameq, dear, card, sender, photo, video, status)

      $(".nextBtn").attr("disabled", false)
    }
  }

  function randomString(length, chars) {
    var result = '';
    for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))];
    return result;
  }

  function getNoteCity(fulldate) {
    const h_1 = new Date(new Date().setDate(new Date().getDate() + 1))
    const weekday = ["Min","Sen","Sel","Rab","Kam","Jum","Sab"];
    const monthly = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
    const d = new Date(h_1);
    const day = weekday[d.getDay()];
    const dt = d.getDate();
    const mt = monthly[d.getMonth()];
    const yr = d.getFullYear();
    const p = $("#cities").parent(".form-group")
  }

  function disabledSameDay() {
    let btnFirst = $("#deliveryDate").find("button:first-child")
    let getDay = new Date().getDay();

    // Check if product has CNY 2026 tag - skip disabling if true
    

    
      
      if(getDay == 1 || getDay == 2 || getDay == 3 || getDay == 4 || getDay == 5){
        if(hour >= 14.00){
          btnFirst.attr("disabled", true)
        }
      } else if(getDay == 6){
        if(hour >= 16.00){
          btnFirst.attr("disabled", true)
        }
      } else if(getDay == 0){
        if(hour >= 16.00){
          btnFirst.attr("disabled", true)
        }
      }
      
    
  }

  function disabledays(date) {
    let ymd = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
    //if u have to disable a list of day
    let removeDays
    
        removeDays = ["2026-3-19", "2026-3-20", "2026-3-21"];
    
    
    if ($.inArray(ymd, removeDays) >= 0) {
      return [false];
    } else {
      let day = date.getDay();
      if(day == 0 && date.getDate() == 13 && date.getMonth() == 1){
          return [(day == 0),  ''];
      }
      
      
      return [(day != 0),  ''];
    }
  }

  /* Indonesian initialisation for the jQuery UI date picker plugin. */
  /* Written by Deden Fathurahman (dedenf@gmail.com). */
  ( function( factory ) {
    if ( typeof define === "function" && define.amd ) {

      // AMD. Register as an anonymous module.
      define( [ "../widgets/datepicker" ], factory );
    } else {

      // Browser globals
      factory( jQuery.datepicker );
    }
  }( function( datepicker ) {
    
    // Check if datepicker object exists before accessing regional property
    if (typeof datepicker === 'undefined' || !datepicker) {
      return;
    }

    datepicker.regional.id = {
      closeText: "Tutup",
      prevText: "&#x3C;mundur",
      nextText: "maju&#x3E;",
      currentText: "Today",
      monthNames: [ "January","February","March","April","May","Juny",
                    "July","August","September","October","November","December" ],
      monthNamesShort: [ "Jan","Feb","Mar","Apr","May","Jun",
                        "Jul","Agu","Sep","Oct","Nov","Dec" ],
      dayNames: [ "Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu" ],
      dayNamesShort: [ "Sun","Mon","Tue","Wed","Thu","Fri","Sat" ],
      dayNamesMin: [ "Mg","Sn","Sl","Rb","Km","jm","Sb" ],
      weekHeader: "Mg",
      dateFormat: "D, dd M",
      firstDay: 0,
      isRTL: false,
      showMonthAfterYear: false,
      yearSuffix: "" };
    datepicker.setDefaults( datepicker.regional.id );

    return datepicker.regional.id;

} ) );

  function loadPopup() {
    $("#backgroundPopup").fadeIn("slow");
    $(".purchasePopup:not(.purchasePopupSpotify)").fadeIn("slow");
    const firstSection = $(".purchasePopup:not(.purchasePopupSpotify) .sectionPurchase").first()
    if(firstSection.hasClass("purchasePersonalize")) {
      if(productType !== '') {
        console.log("clarity event " + productType + ' personalize')
        window.clarity("event", `${productType} cardPersonalization`)
        // window.clarity("set", productType, `cardPersonalization - ${productDate}`)
      }
    } else if (firstSection.hasClass("sectionPurchaseBoard")) {
        console.log("clarity event " + productType + ' personalizeBoard')
        window.clarity("event", `${productType} personalizeBoard`)
        // window.clarity("set", productType, `personalizeBoard - ${productDate}`)
    }
    firstSection.removeClass("hide")
    
    // Load province and zip code when popup opens
    const selectedCity = $("#cities").val();
    const v2 = $('#cities option:selected').attr('data-city');
    const v3 = $('#cities option:selected').attr('data-province');
    
    if (selectedCity && selectedCity !== '' && selectedCity !== 'Kota Lainnya') {
      // Get province
      getProvince(selectedCity);
      
      // Load zip codes
      console.log('Loading zip codes for:', selectedCity);
      $("#zip").html(`<option value="">Postal Code</option>`);
      renderZip(selectedCity, v2, v3);
    }
    
    // Auto-trigger addon loading when addon section becomes visible
    setTimeout(function() {
      const addonSection = $(".purchaseAddon")
      if(addonSection.length > 0 && !addonSection.hasClass("hide")) {
        if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) {
          $("[data-addon]").eq(0).trigger("click")
        }
      }
    }, 200)
  }

  function disablePopup() {
    $("#backgroundPopup").fadeOut("slow");
    $(".purchasePopup").fadeOut("slow");
    $("#popupCart").fadeOut("slow");
  }

  function scrollTo(parent, div, dur) {
    $(parent).animate({
      scrollTop: $(div).offset().top
    }, dur);
  }

  function loadPopupPersonalize() {
    // First validate variant metafields
    if (typeof validateVariantMetafields === 'function') {
      const isValid = validateVariantMetafields(true);
      if (!isValid) {
        // The validateVariantMetafields function already handles scrolling and focusing
        // alert('Please select all required variant options before proceeding.');
        return; // Stop execution if validation fails
      }
    }
    
    const div = "#purchaseProduct"
    const p = "html, body, .product-meta"
    $("p.error").remove()
    loadItemOccasion($("[data-occassion]").eq(0), "greeting-card-all")
    const isCity = $("#cities[required]")
    const isDate = $("#propDeliveryDate[required]")
    const isTime = $("#propDeliveryTime[required]")
    const isTimeDisabled = $("#propDeliveryTime[disabled]")
    // loadPopup()
    // Check if all required fields are filled, or if time is disabled (for no-deliverytime products)
    if(isCity.val() !== '' && isDate.val() !== '' && (isTime.val() !== '' || isTimeDisabled.length > 0)) {
      loadPopup()
    }
    if(isCity.val() == '') {
      isCity.parent(".row").append("<p class='error'>Choose delivery city</p>")
      scrollTo(p, div, 500)
    }
    if(isDate.val() == '') {
      isDate.parents(".row").append("<p class='error'>Choose delivery date</p>")
      scrollTo(p, div, 500)
    }
    if(isTime.val() == '' && isTimeDisabled.length === 0) {
      isTime.parents(".row").append("<p class='error'>Choose delivery time</p>")
      scrollTo(p, div, 500)
    }
  }

  function quantityCounter() {
    $(document).on("click", ".item-card.selected .q_up", function () {
      var C = $(this).attr("data-id"),
          S =
              parseInt(
                  $(this)
                      .siblings(".quantity-cart-" + C)
                      .val()
              ) + 1;
      $(this).attr("data-quantity", S),
          $(this)
              .siblings(".quantity-cart-" + C)
              .val(S);
    }),
    $(document).on("click", ".item-card.selected .q_down", function () {
        var C = $(this).attr("data-id"),
            S = parseInt(
                $(this)
                    .siblings(".quantity-cart-" + C)
                    .val()
            );
        0 < S && $(this).attr("data-quantity", S - 1),
            0 < S &&
                $(this)
                    .siblings(".quantity-cart-" + C)
                    .val(S - 1);
    });
  }

  quantityCounter()

  const itemAddon = $(".item-card").length
  const nofree = $(".nofree").length

  const upsell = ''
  
  if(nofree === itemAddon) {
      // $("#itemAddons").html("<p>No Items available</p>")
  }

  $("#itemAddons .item-card").each(function(e){
      $("#itemAddons").attr("data-length", e)
  })

  // Function to fetch products from collection with fallback
  async function fetchAddonProducts(collectionHandle) {
    try {
      const response = await fetch(`https://outerbloom.com/collections/${collectionHandle}/products.json`);
      
      if (!response.ok) {
        throw new Error(`Collection ${collectionHandle} not found`);
      }
      
      const data = await response.json();
      
      // Check if products exist and have items
      if (!data.products || data.products.length === 0) {
        throw new Error(`No products in collection ${collectionHandle}`);
      }
      
      return data.products;
    } catch (error) {
      console.warn(`Error fetching ${collectionHandle}:`, error.message);
      
      // Fallback to "upsell-all" collection if primary collection fails
      if (collectionHandle !== 'upsell-all') {
        console.log('Falling back to upsell-all collection...');
        try {
          const fallbackResponse = await fetch('https://outerbloom.com/collections/upsell-all/products.json');
          if (fallbackResponse.ok) {
            const fallbackData = await fallbackResponse.json();
            return fallbackData.products || [];
          }
        } catch (fallbackError) {
          console.error('Fallback also failed:', fallbackError);
        }
      }
      
      return [];
    }
  }

  // Function to determine upsell type from product tags
  function getUpsellType() {
    const productTags = ["Bekasi","Bogor","Brand_Outerbloom","Buket Bunga","Bunga","Bunga Jakarta","card","Depok","engagement","formdate","Fresh Flower","Fresh Inhouse","icon-card","icon-fresh","icon-sameday","Inhouse","jakarta","Jenis_Bunga Mawar","just because","MonSatBuketInhouse","newborn","Pengiriman_Bekasi","Pengiriman_Depok","Pengiriman_Jakarta","Pengiriman_Tangerang","pickup-itcinhouse","ship-inhouse","sorry","Style_Classic","Style_Modern","takeoutselfpickup","Tangerang","thank you","Untuk_Anniversary","Untuk_Congratulations","Untuk_Hari Raya","Untuk_Valentine","Untuk_Wisuda","uploadfotocard","upsell","upsell-inhouse","Warna_Red"];
    const hasBuketUang = productTags.includes('Buket Uang');
    
    if (hasBuketUang) {
      return 'upsell-giftcard';
    }
    
    // Find upsell tag
    for (const tag of productTags) {
      if (tag.startsWith('upsell-')) {
        return tag;
      } else if (tag === 'upsell') {
        return 'upsell-all';
      }
    }
    
    return 'upsell-giftcard'; // Default fallback
  }

  // Function to render addon products
  function renderAddonProducts(products, filterTag) {
    const html = [];
    
    for (const product of products) {
      const id = product.id;
      const variant = product.variants[0];
      const variantId = variant.id;
      const img = product.images[0]?.src || '';
      const imgBase = img.split('.jpg')[0];
      const title = product.title;
      const price = variant.price;
      const tags = product.tags;
      const isAvailable = variant.available !== false;
      const productType = product.product_type?.toLowerCase()?.replace(/\s+/g, '_') || '';
      
      // Filter products based on tag
      const shouldInclude = filterTag === 'all' || 
                           tags.includes(`upsell-item-${filterTag}`) || 
                           tags.includes('upsell-item-all') ||
                           tags.includes('upsell-item-inhouse');
      
      if (!shouldInclude) continue;
      
      const priceDisplay = price < 1 ? 'FREE' : rupiah.format(price);
      const cardClass = `item-card${price < 1 ? ' free' : ' nofree'} type-${productType}`;
      
      const body = `
        <div class="${cardClass}" data-variant="${variantId}" data-id="${id}" data-qty="${isAvailable ? '' : 0}" data-upsell="${filterTag}" data-tags="${tags}">
          <div class="card-image">
            <img src="${imgBase}_150x.jpg" alt="${title}" width="" height="" />
          </div>
          <div class="card-meta">
            <h5>${title}</h5>
            <p>${priceDisplay}</p>
            <input id="card-${variantId}" type="hidden" name="" value="${variantId}">
          </div>
          <div class="card-qty">
            <a data-quantity="1" type="submit" id="q_down-${variantId}" class="btn-qty-min q_down drawer-cart" data-id="${variantId}">
              <svg xmlns="http://www.w3.org/2000/svg" width="12" height="2" viewBox="0 0 12 2" fill="none">
                <path d="M0 1.90869V0.908691H12V1.90869H0Z" fill="black"/>
              </svg>
            </a>  
            <input maxlength="3" min="0" class="btn-qty text-center quantity-cart-${variantId}" value="0" data-price="${price}" name="quantity">
            <a data-quantity="1" type="submit" class="btn-qty-plus q_up text-green drawer-cart" data-id="${variantId}">
              <svg xmlns="http://www.w3.org/2000/svg" width="12" height="13" viewBox="0 0 12 13" fill="none">
                <path d="M0 6.87023V5.94715H5.53846V0.408691H6.46154V5.94715H12V6.87023H6.46154V12.4087H5.53846V6.87023H0Z" fill="black"/>
              </svg>
            </a>   
          </div>
        </div>`;
      
      html.push(body);
    }
    
    return html;
  }

  // Event handler for addon selection
  $("[data-addon]").click(async function() {
    const $button = $(this);
    const addonType = $button.data("addon") || getUpsellType();
    
    // Update UI
    $("[data-addon]").removeClass("selected");
    $button.addClass("selected");
    
    // Show loading state
    $("#itemAddons .row").html('<p>Loading products...</p>');
    
    try {
      // Fetch products
      const products = await fetchAddonProducts(addonType);
      
      if (products.length === 0) {
        $("#itemAddons .row").html('<p>No Item available</p>');
        $("#itemAddons").attr("data-length", 0);
        return;
      }
      
      // Extract filter tag from addon type
      const filterTag = addonType.replace('upsell-', '');
      
      // Render products
      const html = renderAddonProducts(products, filterTag);
      
      if (html.length === 0) {
        $("#itemAddons .row").html('<p>No Item available</p>');
      } else {
        $("#itemAddons .row").html(html.join(''));
      }
      
      $("#itemAddons").attr("data-length", html.length);
      
    } catch (error) {
      console.error('Error loading addon products:', error);
      $("#itemAddons .row").html('<p>Error loading products. Please try again.</p>');
    }
  })

  async function isAddon(){
    let ids = []
    $("#itemAddons .item-card.selected").each(function(i, e){
      const id = $(this).data("id")
      ids.push(id)
    })
    console.log(ids)
    return ids
  }
  
  $("#itemAddons").delegate(".item-card > div:not(.card-qty)", "click", async function(){
    const t = $(this).parent()
    const id = t.data("id")
    const btn =  t.parents(".purchaseAddon").find(".next-purchase-button")
    t.toggleClass("selected");
    //$(this).next("input").toggleAttr('name', 'id[]');
    if (t.hasClass('selected')) {
        t.find("input").val(1)
        t.find("input").attr('name', 'id[]');
    } else {
        t.find("input").val(0)
        t.find("input").removeAttr('name');
    }
    $("#properties-addons").val(addons)
    const is = await isAddon()
    if(is.length === 0) {
      btn.text("continue without add-ons")
      return
    }
    if(is.includes(8835692069079)) {
      btn.text("personalize acrylic frame")
    } else {
      btn.text("Continue")
    }
      
  })

  async function myAddon(data) {
    const c = $(".addonsPurchase .addons")
    let items = []
    
    const spotifyAddons = $(".spotifyAddons").find("[data-index]")
    // if(spotifyAddons.length > 0) {
    //   $(spotifyAddons).each(function(i, e){
    //     const spotifyLink = $(this).find(".spotifyLink").val()
    //     const spotifySong = $(this).find(".spotifySong").val()
    //     const spotifyArtist = $(this).find(".spotifyArtist").val()
    //     const spotifyFotoAddon = $(this).find(".resultPhotoSpotify").val()
    //     if(spotifyLink !== '') {
    //       spotifyAddon = `<div class="addon-item" data-id="46067682607319" data-qty="1">
    //         <div class="addon-itm-img">
    //           <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"/>
    //         </div>
    //         <div class="addon-itm-title">
    //           <span>[US] Outerbloom Acrylic Frame 4R</span>
    //         </div>
    //         <div class="addon-itm-line-total">
    //           <span>Rp 99.000</span>
    //         </div>
    //       </div>
    //       <div class="propsAddonSpotify row m-0">
    //         <div class="col-12 col-lg-2"></div>
    //           <div class="col-12 col-lg-10">
    //             <p>
    //               <span>spotify link</span>
    //               <span class="spotifyLinkAddon">${spotifyLink}</span>
    //             </p>
    //             <p>
    //               <span>uploaded photo</span>
    //               <span class="spotifyFotoAddon">${spotifyFotoAddon}</span>
    //             </p>
    //             <p>
    //               <span>song / playlist name</span>
    //               <span class="spotifySongAddon">${spotifySong}</span>
    //             </p>
    //             <p>
    //               <span>artist name</span>
    //               <span class="spotifyArtistAddon">${spotifyArtist}</span>
    //             </p>
    //           </div>
    //       </div>`
    //       items.push(spotifyAddon)
    //     }
    //   })
    // }
    for(let i = 0; i < data.length; i++) {
      if(data[i].title !== '[US] Outerbloom Acrylic Frame 4R' ) {
        const img = data[i].image
        const title = data[i].title
        const qty = data[i].qty
        const price = data[i].price
        const total = Number(qty) * Number(price)
        let addons = `<div class="addon-item" data-id="${data[i].id}" data-qty="${qty}">
              <div class="addon-itm-img">
                <img src="${img}" alt="" width="70"/>
              </div>
              <div class="addon-itm-title">
                <span>${title}</span>
              </div>
              <div class="addon-itm-line-price">
                <span>${rupiah.format(price)}</span>
                ${data[i].title == '[US] Outerbloom Acrylic Frame 4R' ? '' : `<span>x${qty}</span>`}
              </div>
              <div class="addon-itm-line-total">
                <span>${rupiah.format(total)}</span>
              </div>
            </div>`
          items.push(addons)
      }
    }
    c.html(items)
    const parent = $(".purchaseAddon")
    const next = parent.next(".sectionPurchase")
    parent.addClass("hide")
    next.removeClass("hide")
    // if(items2.length === 0) return $("#popupCart").addClass("no-addon-cart")
    // $(".itemAddonCart").find("h4").text(`add-ons (${items2.length})`)
  }

  async function listAddon() {
    const data = $("#itemAddons").find(".selected")
    let ids = []
    $(data).each(function(){
      const id = $(this).data("variant")
      const image = $(this).find(".card-image img").attr("src")
      const title = $(this).find(".card-meta h5").text()
      const qty = $(this).find(".card-qty input").val()
      const price = $(this).find(".card-qty input").data("price")
      ids.push({
        id: Number(id),
        image,
        title,
        qty,
        price
      })
    })
    myAddon(ids)
  }

  async function customSpotify(idx, length, type){
    let isCard = false
    
      isCard = true
    
    let p = $(".purchasePopupSpotify")
    const preLink = $(".spotifyLinkFirst").val()
    $("[data-index]").hide()
    p.find(".headerPurchase h3").text(`personalize spotify photo print${length > 1 ? ` - ${idx}` : ''}`)
    p.find(".regulerAddons, .purchase-button").hide()
    p.find(".spotifyAddons").show()
    
    const data = await trackUrl(preLink)
    
    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="http://www.w3.org/2000/svg" width="13" height="11" viewBox="0 0 13 11" fill="none">
<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"/>
</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=http://www.w3.org/2000/svg><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="http://www.w3.org/2000/svg" width="13" height="11" viewBox="0 0 13 11" fill="none">
<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"/>
</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>`
    // console.log(html)
    
    $(".spotifyAddons").append(html)
    
    $(`[data-index=${idx}]`).show()
    
    if (preLink !== '') {
      $(".btn-action .btn").attr("disabled", false)
    } else {
      $(".btn-action .btn").attr("disabled", true)
    }

    return html
    
  }

  $(".spotifyLinkFirst").keyup(async function(){
    const v = $(this).val()
    if(v.includes('spotify:user:spotify')) {
      const correct = v.split('user:spotify:')[1]
      console.log(correct, 'BNER')
      $(this).val(correct)
      return
    }
    if(v.includes("spotify:") || v.includes("https://open.spotify.com/")){
      const data = await trackUrl(v)
      if(!data || !data.status) {
        $(this).parent().addClass("error")
        // $(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>`)
        $("#personalizeBtnSpotify .btn").attr("disabled", true)
        return
      }
      $(this).parent().removeClass("error")
      // $(this).parent().remove("txt-error")
      $("#personalizeBtnSpotify .btn").attr("disabled", false)
    } else {
      $("#personalizeBtnSpotify .btn").attr("disabled", true)
    }
  })

  $(".purchaseAddon").delegate(".next-addon", "click", async function(){
    const parent = $(this).parents(".purchaseAddon")
    const next = parent.next(".sectionPurchase")
    
    // Check if there's no next section, proceed directly to addToCart
    if(next.length === 0 || !next.hasClass("sectionPurchase")) {
      await addToCart()
      return
    }
    
    if(next.hasClass("purchaseAddress")) {
      if(productType !== '') {
        console.log("clarity event " + productType + ' purchaseDelivery')
        window.clarity("event", `${productType} purchaseDelivery`)
        // window.clarity("set", productType, `purchaseDelivery - ${productDate}`)
      }
      
      // Check if Kota Pengiriman is "Kota Lainnya"
      const kotaPengiriman = $("#cities").val()
      if(kotaPengiriman === 'Kota Lainnya') {
        // Skip address form and go directly to addToCart
        await addToCart()
        return
      }
    }
    const data = $("#itemAddons").find(".selected")
    const length = $(".quantity-cart-46067682607319").val()
    const checked = data.length;
    if(checked > 0) {
      if(length > 0) {
        $(".purchaseAddon").addClass("purchaseAddonSpotify")
        customSpotify(1, length, 'addon')
      } else {
        listAddon()
      }
    } else {
      parent.addClass("hide")
      next.removeClass("hide")
    }
  })

  $("#personalizeBtnSpotify .btn").click(async function(){
    // First validate variant metafields
    if (typeof validateVariantMetafields === 'function') {
      const isValid = validateVariantMetafields(true);
      if (!isValid) {
        // The validateVariantMetafields function already handles scrolling and focusing
        alert('Please select all required variant options before proceeding.');
        return; // Stop execution if validation fails
      }
    }
    
    const isCity = $("#cities[required]")
    const isDate = $("#propDeliveryDate[required]")
    if((isDate.length > 0 && isCity.length > 0) && (isCity.val() === '' || isDate.val() === '')) {
      alert('Please choose Delivery City & Delivery Date')
      return
    }
    const data = await customSpotify(1, 1, 'product')
    if(data) {
      $("#backgroundPopup").fadeIn("slow");
      $(".purchasePopupSpotify").fadeIn("slow");

      if(productType !== '') {
        console.log("clarity event " + productType + ' spotify')
        window.clarity("event", `${productType} spotify`)
        // window.clarity("set", productType, `purchaseDelivery - ${productDate}`)
      }
    }
  })

  function formatBytes(bytes, decimals = 2) {
    if (!+bytes) return '0 Bytes'

    const k = 1024
    const dm = decimals < 0 ? 0 : decimals
    const sizes = ['B', 'KB', 'MB']

    const i = Math.floor(Math.log(bytes) / Math.log(k))

    return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`
  }

  async function trackUrl(link){
    try {
      let trackId = link.split('/').pop().split('?')[0];
      let type = ''
      if(link.includes("spotify:")) {
        const uri = link.split('spotify:')[1]
        trackId = uri.split(':')[1]
        type = uri.split(':')[0] + 's'
      } else {
        if(link.match('track')){
          type = 'tracks'
        } else if(link.match('playlist')) {
          type = 'playlists'
        } else if(link.match('artist')) {
          type = 'artists'
        } else if(link.match('album')) {
          type = 'albums'
        }
      }
      console.log(`${host}/api/spotify/${type}/${trackId}`)
      const data = await getFetch(`${host}/api/spotify/${type}/${trackId}`)
      console.log(data, 'DATA')
      const song = data?.data?.name
      const artist = data?.data?.artist
      return {
        song, artist, type, trackId, status: data.status
      }
    } catch(err) {
      console.log(err)
    }
  }

  $(".spotifyAddons").delegate(".uploadPhotoSpotify", "change", async function(){
    const parent = $(this).parents("[data-index]")
    const preview = parent.find(".previewImage")
    const file = $(this)[0].files[0];
    if (file) {
        const reader = new FileReader();
        reader.onload = async function(e) {
          parent.find(".uploadResult label").hide()
          parent.find(".uploadedResult").remove()
          parent.find(".uploadResult").append(`<div class="uploadedResult d-flex" style="justify-content: space-between">
          <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>
          <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;"><svg fill="none" height="11" viewBox="0 0 10 11" width="10" xmlns="http://www.w3.org/2000/svg">
  <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 />
</svg>
</span></div></div>`)
          parent.find(".frameImageUploaded svg").hide()
          parent.find(".frameImage").addClass("uploaded")
          preview.attr("src", e.target.result);
          preview.show();
          let formData = new FormData(); 
          formData.append("file", file);
          const response = await fetch(`${host}/api/upload?name=${file.name}&type=image/jpeg&r=${Date.parse(new Date)}&shop=${shop}`, {
            method: "POST", 
            body: formData
          })
          const result = await response.json();
          if(result){
            parent.find(".resultPhotoSpotify").val(result.url)
          }
        }
        
        reader.readAsDataURL(file);
    } else {
        preview.hide();
    }
  });

  $(".spotifyAddons").delegate(".uploadResult", "click", function(){
    $(this).next("input[type=file]").trigger("click")
  })

  $(".spotifyAddons").delegate(".changeUpload", "click", function(){
    $(this).parents("input[type=file]").trigger("click")
  })

  $(".spotifyAddons").delegate(".removeUpload", "click", function(){
    const parent = $(this).parents("[data-index]")
    parent.find(".uploadPhotoSpotify").val("")
    parent.find(".uploadResult label").show()
    parent.find(".uploadedResult").remove()
    parent.find(".frameImageUploaded svg").show()
    parent.find(".previewImage").hide()
    parent.find(".frameImage").removeClass("uploaded")
  })

  $(".spotifyAddons").delegate("label.checkbox", "click", function(){
    const parent = $(this).parents("[data-index]")
    parent.toggleClass("checked")
  })

  $(".spotifyAddons").delegate(".spotifyLink", "change", async function(){
    const parent = $(this).parents("[data-index]")
    const link = $(this).val()
    const data = await trackUrl(link)

    console.log(data)

    if(data.song) {
      parent.find(".spotifySong").val(data.song)
      parent.find(".spotifyData").find("h3").text(data.song)
    }
    if(data.artist) {
      parent.find(".spotifyArtist").val(data.artist)
      parent.find(".spotifyData").find("p").text(data.artist)
    }
    parent.find(".spotifyCode img").attr("src", `https://scannables.scdn.co/uri/plain/png/FFFFFF/black/640/spotify:${data.type.slice(0, -1)}:${data.trackId}`)
    // https://scannables.scdn.co/uri/plain/png/FFFFFF/black/640/spotify:track:1er51HCEBhIAtoEemKuC3M
    if (data.status === true) {
      parent.find(".btn-action .btn").attr("disabled", false)
    } else {
      parent.find(".btn-action .btn").attr("disabled", true)
    }
  })
  
  $(".spotifyAddons").delegate(".spotifySong", "keyup", async function(){
    const parent = $(this).parents("[data-index]")
    const v = $(this).val()
    parent.find(".spotifyData h3").text(v)
  })

  $(".spotifyAddons").delegate(".spotifyArtist", "keyup", async function(){
    const parent = $(this).parents("[data-index]")
    const v = $(this).val()
    parent.find(".spotifyData p").text(v)
  })

  $(".spotifyAddons").delegate(".btn-action .btn:not(.no-addon)", "click", async function(){
    const parent = $(this).parents("[data-index]")
    const length = parent.data("length")
    const index = parent.data("index")
    const indexNext = Number(index) + 1
    customSpotify(indexNext, length, 'addon')
  })

  
  $(".spotifyAddons").delegate(".btn-action .btn.finished", "click", async function(){
    const parent = $(this).parents(".purchaseAddon")
    const next = parent.next(".sectionPurchase")
    parent.addClass("hide")
    next.removeClass("hide")
    next.find(".purchase-button").show()
    listAddon()
  })

  $(".spotifyAddons").delegate(".back-spotify", "click", async function(){
    const t = $(this).parents("[data-index]")
    const parent = $(this).parents(".sectionPurchase")
    const current = t.data("index")
    const prevCurrent = Number(current) - 1
    if(current == 1) {
      parent.removeClass("purchaseAddonSpotify")
      parent.find(".purchase-button").show()
      parent.find(".headerPurchase h3").text("Make It More Special with Add-Ons!")
      $(".spotifyAddons").empty()
      $(".regulerAddons").show()
      return
    }
    t.hide()
    t.prev("[data-index]").show()
    t.remove()
    parent.find(".headerPurchase h3").text(`personalize spotify photo print - ${prevCurrent}`)
  })

  $("#personalizeBtn .btn").click(async function() {
    loadPopupPersonalize()
  });

  $(".sectionPurchaseSpotify").delegate(".btn[data-type=card]", "click", function(){
    $(".sectionPurchaseSpotify").hide()
    loadPopupPersonalize()
  })

  $(".close-purchase-popup").click(function() {
      disablePopup();
  });
  $("#backgroundPopup").click(function() {
      // disablePopup();
  });

  $("#popupCart .close-purchase-popup").click(function() {
      location.reload()
  });

  $('#popupCart').on('hide.bs.modal', function (e) {
    location.reload()
  })

  $(".next-card").click(function(){
    const parent = $(this).parents(".sectionPurchase")
    const next = parent.next(".sectionPurchase")
    parent.addClass("hide")
    next.removeClass("hide")
  })

  $(".back-purchase-button").click(function(){
    const parent = $(this).parents(".sectionPurchase")
    const prev = parent.prev(".sectionPurchase")
    parent.addClass("hide")
    prev.removeClass("hide")
  })
  
  $(document).keypress(function(e) {
      if (e.keyCode == 27 && popupStatus == 1) {
          disablePopup();
      }
  });
  
  const parentImg = $(".case-img-preview")
  const parentVid = $(".case-video-preview")
  
  // Image Editor Variables
  let currentImageFile = null;
  let cropper = null;
  let originalImageSize = { width: 0, height: 0 };
  
  // Utility function to format file size
  function formatImageSize(width, height) {
    return `${width} × ${height}px`;
  }

  // Utility function to estimate file size in bytes
  function estimateFileSize(width, height, quality = 0.9) {
    // Base calculation: assume ~3 bytes per pixel for JPEG at 90% quality
    const baseSize = width * height * 3;
    
    // Apply quality factor (90% quality typically results in ~30-40% compression)
    const compressionFactor = quality === 0.9 ? 0.35 : (1 - quality) * 0.5 + 0.2;
    
    const estimatedSize = Math.round(baseSize * compressionFactor);
    
    // Format to human readable
    if (estimatedSize < 1024) {
      return `${estimatedSize} B`;
    } else if (estimatedSize < 1024 * 1024) {
      return `${(estimatedSize / 1024).toFixed(1)} KB`;
    } else {
      return `${(estimatedSize / (1024 * 1024)).toFixed(1)} MB`;
    }
  }

  // Update image size information
  function updateImageSizeInfo() {
    if (!cropper) return;
    
    const imageData = cropper.getImageData();
    const cropBoxData = cropper.getCropBoxData();
    const canvasData = cropper.getCanvasData();
    
    // Calculate the scale factor between natural image size and displayed size
    const scaleFactorX = originalImageSize.width / imageData.naturalWidth;
    const scaleFactorY = originalImageSize.height / imageData.naturalHeight;
    
    // Calculate the actual output size based on crop box and scale factor
    const outputWidth = Math.round((cropBoxData.width / canvasData.width) * imageData.naturalWidth);
    const outputHeight = Math.round((cropBoxData.height / canvasData.height) * imageData.naturalHeight);
    
    // Update display
    document.getElementById('originalSize').textContent = 
      `Original: ${formatImageSize(originalImageSize.width, originalImageSize.height)}`;
    document.getElementById('newSize').textContent = 
      `New: ${formatImageSize(outputWidth, outputHeight)}`;
  }
  
  // Initialize Image Editor Popup
  function initImageEditor() {
    const editorHTML = `
      <div id="imageEditorPopup" class="image-editor-popup">
        <div class="image-editor-overlay"></div>
        <div class="image-editor-modal">
          <div class="image-editor-header">
            <h3>Edit Image</h3>
            <button class="close-editor" type="button">&times;</button>
          </div>
          <div class="image-editor-content">
            <div class="image-editor-canvas">
              <img id="imageToEdit" src="" alt="Image to edit">
            </div>
            <div class="image-editor-controls">
              <div class="control-group">
                <label>Crop Aspect Ratio:</label>
                <select id="aspectRatio">
                  <option value="free">Free</option>
                  <option value="1">1:1 (Square)</option>
                  <option value="1.33">4:3</option>
                  <option value="1.77">16:9</option>
                  <option value="0.75">3:4 (Portrait)</option>
                </select>
              </div>
              <div class="control-group">
                <label>Image Size:</label>
                <div id="imageSizeInfo">
                  <span id="originalSize">Original: -</span>
                  <span id="newSize">New: -</span>
                </div>
              </div>
              <div class="control-group">
                <button type="button" id="rotateLeft">↺ Rotate Left</button>
                <button type="button" id="rotateRight">↻ Rotate Right</button>
                <button type="button" id="flipH">⟷ Flip H</button>
                <button type="button" id="flipV">⟱ Flip V</button>
              </div>
              <div class="control-group">
                <button type="button" id="resetImage">Reset</button>
                <button type="button" id="cropImage">Apply Crop</button>
              </div>
            </div>
          </div>
          <div class="image-editor-footer">
            <button type="button" class="btn-cancel">Cancel</button>
            <button type="button" class="btn-save">Save Changes</button>
          </div>
        </div>
      </div>`;
    
    if (!document.getElementById('imageEditorPopup')) {
      document.body.insertAdjacentHTML('beforeend', editorHTML);
      initImageEditorEvents();
    }
  }

  // Initialize Image Editor Events
  function initImageEditorEvents() {
    const popup = document.getElementById('imageEditorPopup');
    const imageToEdit = document.getElementById('imageToEdit');
    
    // Close editor events
    popup.querySelector('.close-editor').onclick = closeImageEditor;
    popup.querySelector('.btn-cancel').onclick = closeImageEditor;
    popup.querySelector('.image-editor-overlay').onclick = closeImageEditor;
    
    // Save edited image
    popup.querySelector('.btn-save').onclick = saveEditedImage;
    
    // Aspect ratio change
    document.getElementById('aspectRatio').onchange = function() {
      if (cropper) {
        const value = this.value;
        cropper.setAspectRatio(value === 'free' ? NaN : parseFloat(value));
        updateImageSizeInfo();
      }
    };
    
    // Rotation and flip controls
    document.getElementById('rotateLeft').onclick = () => {
      if (cropper) {
        cropper.rotate(-90);
        updateImageSizeInfo();
      }
    };
    document.getElementById('rotateRight').onclick = () => {
      if (cropper) {
        cropper.rotate(90);
        updateImageSizeInfo();
      }
    };
    document.getElementById('flipH').onclick = () => {
      if (cropper) {
        cropper.scaleX(-cropper.getImageData().scaleX);
        updateImageSizeInfo();
      }
    };
    document.getElementById('flipV').onclick = () => {
      if (cropper) {
        cropper.scaleY(-cropper.getImageData().scaleY);
        updateImageSizeInfo();
      }
    };
    
    // Reset image
    document.getElementById('resetImage').onclick = function() {
      if (cropper) {
        cropper.reset();
        updateImageSizeInfo();
      }
    };
    
    // Apply crop
    document.getElementById('cropImage').onclick = function() {
      if (cropper) {
        const croppedCanvas = cropper.getCroppedCanvas();
        cropper.replace(croppedCanvas.toDataURL());
        updateImageSizeInfo();
      }
    };
  }

  // Open Image Editor
  function openImageEditor(file) {
    currentImageFile = file;
    const popup = document.getElementById('imageEditorPopup');
    const imageToEdit = document.getElementById('imageToEdit');
    
    const reader = new FileReader();
    reader.onload = function(e) {
      imageToEdit.src = e.target.result;
      
      // Add show class with slight delay for smooth animation
      setTimeout(() => {
        popup.classList.add('show');
      }, 10);
      
      // Initialize Cropper.js
      if (cropper) {
        cropper.destroy();
      }
      
      // Load Cropper.js if not already loaded
      if (typeof Cropper === 'undefined') {
        loadCropperJS().then(() => {
          initCropper();
        });
      } else {
        initCropper();
      }
    };
    reader.readAsDataURL(file);
  }

  // Initialize Cropper
  function initCropper() {
    const imageToEdit = document.getElementById('imageToEdit');
    
    cropper = new Cropper(imageToEdit, {
      aspectRatio: NaN,
      viewMode: 1,
      dragMode: 'move',
      autoCropArea: 1,
      responsive: true,
      background: false,
      guides: true,
      center: true,
      highlight: false,
      cropBoxMovable: true,
      cropBoxResizable: true,
      toggleDragModeOnDblclick: false,
      ready: function() {
        // Store original image size when cropper is ready
        const imageData = this.cropper.getImageData();
        originalImageSize.width = imageData.naturalWidth;
        originalImageSize.height = imageData.naturalHeight;
        
        // Update size info when cropper is ready
        updateImageSizeInfo();
      },
      crop: function() {
        // Update size info on crop change
        updateImageSizeInfo();
      }
    });
  }

  // Load Cropper.js library
  function loadCropperJS() {
    return new Promise((resolve, reject) => {
      if (typeof Cropper !== 'undefined') {
        resolve();
        return;
      }
      
      // Load CSS
      const cssLink = document.createElement('link');
      cssLink.rel = 'stylesheet';
      cssLink.href = 'https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.12/cropper.min.css';
      document.head.appendChild(cssLink);
      
      // Load JS
      const script = document.createElement('script');
      script.src = 'https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.12/cropper.min.js';
      script.onload = resolve;
      script.onerror = reject;
      document.head.appendChild(script);
    });
  }

  // Close Image Editor
  function closeImageEditor() {
    const popup = document.getElementById('imageEditorPopup');
    
    // Remove show class for animation
    popup.classList.remove('show');
    
    if (cropper) {
      cropper.destroy();
      cropper = null;
    }
    
    // Reset variables
    currentImageFile = null;
    originalImageSize = { width: 0, height: 0 };
    
    // Reset size display
    document.getElementById('originalSize').textContent = 'Original: -';
    document.getElementById('newSize').textContent = 'New: -';
  }

  // Save Edited Image
  function saveEditedImage() {
    if (!cropper) return;
    
    // Get cropped canvas without any scaling - keep original dimensions
    const canvas = cropper.getCroppedCanvas({
      imageSmoothingEnabled: true,
      imageSmoothingQuality: 'high',
    });
    
    canvas.toBlob(function(blob) {
      // Create new file from edited image
      const editedFile = new File([blob], currentImageFile.name, {
        type: 'image/jpeg',
        lastModified: Date.now()
      });
      
      // Close editor
      closeImageEditor();
      
      // Process the edited image
      processEditedImage(editedFile);
    }, 'image/jpeg', 0.9);
  }

  // Process Edited Image
  function processEditedImage(file) {
    const reader = new FileReader();
    reader.onload = function(e) {
      // Show loader on preview area
      $('.steps-card-preview').addClass('loading-upload');
      $('.ajax-loader').show();
      
      $('.placeholder-image').hide();
      $('.icon-upload').hide();
      $('.preview-image').show();
      $('.remove-image').show();
      $('.preview-image').attr('src', e.target.result);
      
      
      // Start upload process with edited image
      uploadMedia(file, 'image/jpeg').then(() => {
        $('.ajax-loader').hide();
        $('.steps-card-preview').removeClass('loading-upload loading');
        $(".nextBtn").attr("disabled", false);
      }).catch((error) => {
        $('.ajax-loader').hide();
        $('.steps-card-preview').removeClass('loading-upload loading');
        console.error('Upload failed:', error);
      });
      
    };
    reader.readAsDataURL(file);
  }

  function readURL(input) {
    if (input.files && input.files[0]) {
      const file = input.files[0];
      
      // Check if it's an image file
      if (file.type.startsWith('image/')) {
        // Validate image file size
        if (file.size > 5242880) {
          alert('File size exceeds maximum limit 5 MB');
          return;
        }
        
        // Initialize image editor if not already done
        initImageEditor();
        
        // Open image editor for editing
        openImageEditor(file);
      } else if (file.type.match('video/')) {
        // Handle video upload normally
        if (file.size > 15728640) {
          alert('File size exceeds maximum limit 15 MB');
          return;
        }
        
        let reader = new FileReader();
        reader.onload = function (e) {
          $(".nextBtn").attr("disabled", true);
          $(".steps-card-preview").addClass("loading");
          
          
          uploadMedia(file, 'video/mp4').then(() => {
            $('.steps-card-preview').removeClass('loading');
            $(".nextBtn").attr("disabled", false);
          }).catch((error) => {
            $('.steps-card-preview').removeClass('loading');
            console.error('Upload failed:', error);
          });
          
        };
        reader.readAsDataURL(file);
      } else {
        alert('Please select a valid image or video file.');
      }
    }
  }

  async function readURLPapan(input) {
    if (input.files && input.files[0]) {
      let reader = new FileReader();

      reader.onload = function (e) {
        $('.btn-upload-papan').siblings('label').hide();
        $('.btn-upload-papan img').attr('src', e.target.result);
        $('.btn-upload-papan img').show();
        $('.svgLogoPapan').hide();
        
        // Show loader during upload
        $('.btn-upload-papan').addClass('loading-upload');
        $('.ajax-loader').show();
      }
      
      const type = 'image/jpeg'
      const name = `logo-8262739886295-${Date.parse(new Date())}`

      try {
        let formData = new FormData(); 
        formData.append("file", input.files[0]);
        const response = await fetch(`${host}/api/upload?name=${name}&type=${type}&r=${randomString(3, '0123456789')}&shop=${shop}`, {
          method: "POST", 
          body: formData
        })
        const result = await response.json();
        if(result) {
          const url = result.url
          $("[data-properties=papan-logo]").val(url)
        }
        
        // Hide loader after upload completes
        $('.btn-upload-papan').removeClass('loading-upload');
        $('.ajax-loader').hide();
      } catch (error) {
        // Hide loader on error
        $('.btn-upload-papan').removeClass('loading-upload');
        $('.ajax-loader').hide();
        console.error('Upload failed:', error);
      }

      reader.readAsDataURL(input.files[0]);
    }
  }

  async function readURLAddress(input) {
    console.log(input, 'readURLAddress')
    if (input.files && input.files[0]) {
      let reader = new FileReader();

      reader.onload = function (e) {
        $('.photo-address').attr('src', e.target.result);
        $('.photo-address').show();
        
        // Show loader during upload
        $('.photo-address').parent().addClass('loading-upload');
        $('.ajax-loader').show();
      }
      
      const type = 'image/jpeg'
      const name = input.files[0].name?.split('.')[0]

      try {
        let formData = new FormData(); 
        formData.append("file", input.files[0]);
        const response = await fetch(`${host}/api/upload?name=${name}&type=${type}&r=${randomString(3, '0123456789')}&shop=${shop}`, {
          method: "POST", 
          body: formData
        })
        const result = await response.json();

        // Hide loader after upload completes
        $('.photo-address').parent().removeClass('loading-upload');
        $('.ajax-loader').hide();

        reader.readAsDataURL(input.files[0]);

        return result
      } catch (error) {
        // Hide loader on error
        $('.photo-address').parent().removeClass('loading-upload');
        $('.ajax-loader').hide();
        console.error('Upload failed:', error);
        
        reader.readAsDataURL(input.files[0]);
        return null;
      }
    }
  }

  // Hit OCR endpoint to extract address information
  async function hitOCREndpoint(imageUrl) {
    try {
      console.log('Starting OCR process with image:', imageUrl);
      
      const payload = {
        imageUrl: imageUrl
      }
      
      const response = await fetch('http://localhost:5001/api/shipping/ocr', {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json'
        },
        body: JSON.stringify(payload)
      })
      
      if (!response.ok) {
        throw new Error(`OCR API error: ${response.statusText}`);
      }
      
      const data = await response.json();
      console.log('OCR response:', data);
      
      if (data.formatted && data.formatted.length > 0) {
        showAddressOptionsPopup(data.formatted)
      } else {
        alert('Tidak ada data alamat yang ditemukan dari foto. Silakan coba lagi.')
      }
    } catch (error) {
      console.error('OCR endpoint error:', error);
      alert('Ada error saat memproses foto alamat. Silakan coba lagi.')
    }
  }

  // Display popup with address options
  function showAddressOptionsPopup(addresses) {
    // Initialize popup HTML if not exists
    if (!document.getElementById('ocrAddressPopup')) {
      initOCRAddressPopup()
    }
    
    const popup = document.getElementById('ocrAddressPopup');
    const optionsContainer = document.getElementById('ocrAddressOptions');
    
    // Clear previous options
    optionsContainer.innerHTML = '';
    
    // Add address options
    addresses.forEach((address, index) => {
      const option = document.createElement('div');
      option.className = 'ocr-address-option';
      option.setAttribute('data-index', index);
      option.setAttribute('data-county', address.county || '');
      option.setAttribute('data-postcode', address.postcode || '');
      option.setAttribute('data-state', address.state || '');
      option.setAttribute('data-country', address.country || '');
      
      const addressText = address.full_address || `${address.street || ''} ${address.city || ''} ${address.state || ''}`.trim();
      option.innerHTML = `
        <div class="address-content">
          <p class="address-text">${addressText}</p>
          <small class="address-details">${address.postcode || ''}</small>
        </div>
      `;
      
      option.addEventListener('click', function() {
        selectAddressOption(this, address)
      });
      
      optionsContainer.appendChild(option);
    });
    
    // Show popup
    popup.classList.add('show');
    document.body.classList.add('ocr-popup-open');
  }

  // Initialize OCR address popup if not exists
  function initOCRAddressPopup() {
    const popupHTML = `
      <div id="ocrAddressPopup" class="ocr-address-popup">
        <div class="ocr-popup-overlay"></div>
        <div class="ocr-popup-content">
          <div class="ocr-popup-header">
            <h3>Pilih Alamat dari Foto</h3>
            <button class="close-ocr-popup">&times;</button>
          </div>
          <div class="ocr-popup-body">
            <div id="ocrAddressOptions" class="ocr-address-options"></div>
          </div>
        </div>
      </div>
    `;
    
    document.body.insertAdjacentHTML('beforeend', popupHTML);
    
    // Setup close buttons
    const popup = document.getElementById('ocrAddressPopup');
    const closeBtn = popup.querySelector('.close-ocr-popup');
    const overlay = popup.querySelector('.ocr-popup-overlay');
    
    closeBtn.addEventListener('click', closeOCRAddressPopup);
    overlay.addEventListener('click', closeOCRAddressPopup);
  }

  // Handle address selection
  function selectAddressOption(element, address) {
    const county = element.getAttribute('data-county');
    const postcode = element.getAttribute('data-postcode');
    const state = element.getAttribute('data-state');
    const country = element.getAttribute('data-country');
    
    const fullAddress = address.full_address || `${address.street || ''} ${address.city || ''} ${address.state || ''}`.trim();
    
    console.log('Selected address:', {
      fullAddress,
      county,
      postcode,
      state,
      country
    });
    
    // Fill in the form fields with selected address
    $("[data-properties=alamat-penerima], #streetAddress").val(fullAddress);
    
    if (postcode) {
      $("[data-properties=kodepos], #zip").val(postcode);
    }
    
    if (state) {
      $("#province").val(state).trigger('change');
    }
    
    if (country) {
      $("#properties-kota-pengiriman-country").val(country);
    }
    
    // Close popup after selection
    closeOCRAddressPopup();
  }

  // Close OCR address popup
  function closeOCRAddressPopup() {
    const popup = document.getElementById('ocrAddressPopup');
    if (popup) {
      popup.classList.remove('show');
      document.body.classList.remove('ocr-popup-open');
    }
  }

  

  
  async function addToCartUang() {
    var productAddOnId1 = 42122101162199;
    var productAddOnId2 = 42122101194967;
    var product_id = 8262739886295
    const data = {
      items: [
          {
              quantity: $("#Quantity-" + productAddOnId1).val(),
              id: productAddOnId1,
              "properties": { "Time": $("#properties-time").val() }
          },
          {
              quantity: $("#Quantity-" + productAddOnId2).val(),
              id: productAddOnId2,
              "properties": { "Time": $("#properties-time").val() }
          }
      ]
    }
    await fetch(window.Shopify.routes.root + 'cart/add.js', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(data)
    })
    .then(response => {
      console.error('Sukses Buket Uang:', response);
      $(".form-flower").submit()
    })
    .catch((error) => {
      console.error('Error Buket Uang:', error);
      $(".form-flower").submit()
    });
  }
  
  // Utility function untuk membuat data card yang konsisten dengan default "-"
  function createCardData(overrides = {}) {
    const defaultData = {
      "ID": $("#properties-properties-qrId").val() !== '' ? $("#properties-properties-qrId").val() : '-',
      "Kartu Nama Penerima": (() => {
        const name = $("[data-properties=penerima]").val().trim();
        if (!name || name === '-') {
          return '-';
        }
        const prefix = $(".label-prefix").text().trim();
        return (prefix + (name ? ' ' + name : '')).trim() || '-';
      })(),
      "Kartu Nama Pengirim": $("#properties-kartu-nama-pengirim").val() !== '' ? $("#properties-kartu-nama-pengirim").val() : '-',
      "Kartu Ucapan": $("[data-properties=ucapan]").val() !== '' ? $("[data-properties=ucapan]").val() : '-',
      "Nama Penerima": $("#properties-nama-penerima").val() !== '' ? $("#properties-nama-penerima").val() : '-',
      "Order Number": "-",
      "Status": "Product",
      "Foto": $("#properties-photo").val() !== '' ? $("#properties-photo").val() : '-',
      "Media": $("#properties-video").val() !== '' ? $("#properties-video").val() : '-',
      "Image": "8262739886295"
    }
    
    // Merge dengan overrides jika ada
    return JSON.stringify({...defaultData, ...overrides})
  }

  // Utility function untuk membuat data save card (insertCard/updateCard)
  function createSaveCardData(overrides = {}) {
    const defaultData = {
      "id": qrID || '',
      "penerima": $("#properties-nama-penerima").val() !== '' ? $("#properties-nama-penerima").val() : '-',
      "kartu_penerima": (() => {
        const name = $("[data-properties=penerima]").val().trim();
        if (!name || name === '-') {
          return '-';
        }
        const prefix = $(".label-prefix").text().trim();
        return (prefix + (name ? ' ' + name : '')).trim() || '-';
      })(),
      "kartu_ucapan": $("[data-properties=ucapan]").val() !== '' ? $("[data-properties=ucapan]").val() : '-',
      "kartu_pengirim": $("[data-properties=pengirim]").val() !== '' ? $("[data-properties=pengirim]").val() : '-',
      "foto": $("#properties-photo").val() !== '' ? $("#properties-photo").val() : '-',
      "video": $("#properties-video").val() !== '' ? $("#properties-video").val() : '-',
      "productId": "8262739886295",
      "order_name": "-",
      "status": "Product"
    }
    
    // Merge dengan overrides jika ada  
    const mergedData = {...defaultData, ...overrides}
    return {
      data: JSON.stringify(mergedData),
      parsed: mergedData
    }
  }

  async function saveCard(){
    let isCard = true
    const cardData = createSaveCardData()

    const id = $(".greetingCard").data("id")

    if(!id){
      if((cardData.parsed.kartu_ucapan !== '' && cardData.parsed.kartu_ucapan !== '-') || 
         (cardData.parsed.foto !== '' && cardData.parsed.foto !== '-') || 
         (cardData.parsed.video !== '' && cardData.parsed.video !== '-')){
        if($("#qrcode").length){
          var qrCode = new QRCode(document.getElementById("qrcode"), {
            text: `https://moment.outerbloom.com/${qrID}`,
            width: 200,
            height: 200,
            colorDark : "#212121",
            colorLight : "#ffffff",
            correctLevel: QRCode.CorrectLevel.L,
          });
        }
        $("#properties-qrId").val(qrID)
        const insert_card = await insertCard(cardData.data)
        console.log(insert_card, 'insert')
        
        // Trigger card preview update
        $(document).trigger('cardDataUpdated')
        
        return insert_card
      }
    } else {
      console.log('start update')
      const update_card = await updateCard(id, cardData.data)
      console.log(update_card, 'update_card')
      
      // Trigger card preview update
      $(document).trigger('cardDataUpdated')
      
      return update_card
    }
  }

  async function additem(items){
    try {
      let formData = items
      if(items?.length) {
        formData = {
           'items': items
        };
      }
  
      const add = await fetch(window.Shopify.routes.root + 'cart/add.js', {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
          'X-Requested-With':'xmlhttprequest' /* XMLHttpRequest is ok too, it's case insensitive */
        },
        body: JSON.stringify(formData)
      })
  
      const data = await add.json();
      return data
    } catch(err){
      console.log('Error additem', err)
    }
  }

  async function addons(){
    let items = []
    
    // First, try to get addons from the summary section (.addon-item)
    if($(".addon-item").length > 0) {
      $(".addon-item").each(function(){
        const p = $(this)
        const props = p.next(".propsAddonSpotify")
        const id = $(this).data("id")
        const quantity = $(this).data("qty")
        const propId = $("#properties-time").val()
        let properties = {}
        if(id === 46067682607319) {
          const link = props.find(".spotifyLinkAddon").text()
          const photo = props.find(".spotifyFotoAddon").text()
          const song = props.find(".spotifySongAddon").text()
          const artist = props.find(".spotifyArtistAddon").text()
          properties = {
            id: propId,
            "Spotify Link": link !== '' ? link : '-',
            "Spotify Photo": photo !== '' ? photo : '-',
            "Spotify Song": song !== '' ? song : '-',
            "Spotify Artist": artist !== '' ? artist : '-',
            type: 'addon'
          }
        } else {
          properties = { 
            "id": propId, 
            "type": "addon"
          }
        }
        items.push({
          id, 
          quantity, 
          properties
        })
      })
    } else {
      // If no addon-item found, get directly from #itemAddons .selected
      const selectedAddons = $("#itemAddons").find(".selected")
      if(selectedAddons.length > 0) {
        selectedAddons.each(function(){
          const id = $(this).data("variant")
          const quantity = $(this).find(".btn-qty").val() || 1
          const propId = $("#properties-time").val()
          const properties = { 
            "id": propId, 
            "type": "addon"
          }
          items.push({
            id: Number(id), 
            quantity: Number(quantity), 
            properties
          })
        })
      }
    }
    
    return items
  }

  async function propItems() {
    let props = {}
    $("[data-properties]").each(function(e){
      let elementType = this.tagName;
      const k = $(this).data("properties")
      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') {
        const v = elementType === 'SELECT' ? $(this).find(":selected").val() : $(this).val();
        if(v !== '') {
          props[k] = v?.replace(/[\s\n]/g, '');
        }
      }
    })
    return props
  }

  async function showPopupCart(items){
    if(productType !== '') {
      console.log("clarity event " + productType + ' completeOrder')
      window.clarity("event", `${productType} completeOrder`)
      // window.clarity("set", productType, `completeOrder - ${productDate}`)
    }
    $("#popupCart").show()
    
      $(".propDeliveryCity").text($("#cities").val())
      $(".propDeliveryDate").text($("#propDeliveryDate").val())
      $(".propDeliveryTime").text($("#propDeliveryTime").val())
      $(".propDeliveryName").text($("[data-properties=nama-penerima]").val())
      $(".propDeliveryAddress").text($("[data-properties=alamat-penerima]").val())
      $(".propDeliveryPhone").text($("[data-properties=telepon-penerima]").val())
      $(".propDeliveryProv").text($("#province").val())
      $(".propDeliveryZip").text($("#properties-kodepos").val()) 
      
    

    const addons = []
    if(items && items.length > 0) {
      for(let i = 1; i < items.length; i++) {
        const spotifyLink = items[i].properties['Spotify Link']
        const spotifyPhoto = items[i].properties['Spotify Photo']
        const spotifySong = items[i].properties['Spotify Song']
        const spotifyArtist = items[i].properties['Spotify Artist']
        const price = items[i].price / 100
        const props = spotifyLink ? `<div class="propsAddonCart row m-0">
                  <div class="col-12 col-lg-2"></div>
                  <div class="col-12 col-lg-10">
                    <p>
                      <span>spotify link</span>
                      <span>${spotifyLink}</span>
                    </p>
                    <p>
                      <span>Upload Photo</span>
                      <span>${spotifyPhoto}</span>
                    </p>
                    <p>
                      <span>song / playlist name</span>
                      <span>${spotifySong}</span>
                    </p>
                    <p>
                      <span>artist name</span>
                      <span>${spotifyArtist}</span>
                    </p>
                  </div>
                </div>` : '';
        addons.push(`<div class="row m-0">
                  <div class="imgAddonCart col-2">
                    <img
                      width="43"
                      src="${items[i].image}"
                      alt=""
                    >
                  </div>
                  <div class="imgAddonTitlePrice col-10 align-self-center">
                    <div class="row justify-content-between m-0">
                      <div class="col-12 col-lg-8">
                        <h5>${items[i].title}</h5>
                      </div>
                      <div class="col-12 col-lg-4 text-lg-right">
                        <span>${rupiah.format(price)}</span>
                      </div>
                    </div>
                  </div>
                </div>${props}`)
      }
    }
    // console.log(addons)
    if(addons.length === 0) {
      $(".itemAddonCart").hide()
      return
    }
    $(".toggleAddonCart h4").text(`add-ons (${items.length - 1})`)
    $(".wrapperItemAddonCart").html(addons)
  }

  const money = (money) => {
      return new Intl.NumberFormat('id-ID',
          { style: 'currency', currency: 'IDR', minimumFractionDigits: 0 }
      ).format(money);
  }

  async function showNoteMoney() {
    let qty50k = $("[data-properties='Uang 50k']").val()
    let qty100k = $("[data-properties='Uang 100k']").val()
    const total50k = Number(qty50k) * 50000
    const total100k = Number(qty100k) * 100000
    const total_all = total50k + total100k
    $(".prop50k").html(`<span>${qty50k} Lembar: <strong class="pl-1">${money(total50k)}</strong></span>`)
    $(".prop100k").html(`<span>${qty100k} Lembar: <strong class="pl-1">${money(total100k)}</strong></span>`)
    $(".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="http://wa.me/6281514234600" target="_blank" style="text-decoration: underline; color: #8d3f2d">Customer Service</a> to confirm with proof of payment.</p>`)
  }

  async function removeImage() {
    // Reset to initial state of case-img-preview
    $(".remove-image").hide()
    $("#properties-photo").val("-")
    $(".preview-image").hide().attr("src", "")
    $(".placeholder-image").show()
    $(".icon-upload").show()
    $(".ajax-loader").hide()
    
    // Reset the button states
    $(".case-video-preview").hide()
    $(".case-img-preview .btn-upload button").show()
  }

  async function removeVideo() {
    $("#properties-video").val("-")
    $(this).find("img").hide()
    $(this).hide()
    $(this).prev("p").text("Add video to make it more special (optional)")
    $("#label-input-video").show()
    $("#label-input-video span").text("Upload Video")
    $(".case-video-preview p span").remove()
  }

  async function loadItemOccasion(t, occasion) {
    const name = occasion?.replace('greeting-card-', '')
    $("#kartu-ucapan").val("")
    $("[data-occassion]").removeClass("selected")
    $("[data-properties=ucapan]").val("")
    $("#save-card").attr("disabled", true)
    t.addClass("selected")
    $("#show_note").attr("data-card-occassion", name)
    $.get(`https://outerbloom.com/collections/${occasion}/products.json`, function(data, status){
        const products = data.products
        const html = []
        for(let i = 0; i < products.length; i++) {
            const id = products[i].id
            const variantId = products[i].variants[0].id
            const img = products[i].images[0].src
            const title = products[i].title
            const price = products[i].variants[0].price
            const qty = products[i].variants[0].inventory_quantity
            const body = `<div class="item-card${price < 1 ? ' free' : ' nofree'}${i === 0 ? ' selected' : ''}" data-id=${id}>
                <label for="card-${variantId}"></label>
                    <div class="card-image">
                        <img src="${img}" alt="${title}" width="" height="" />
                    </div>
                    <div class="card-meta text-center">
                        <h5>${title}</h5>
                        <p>${price < 1 ? 'FREE' : rupiah.format(price)}</p>
                        <input id="card-${variantId}" type="radio" name="id" value="${variantId}" data-price="${price}">
                    </div>
                </div>`
            html.push(body)
        }
        const withoutCard = `<div class="item-card item-without-card">
                <label for="card-0"></label>
                    <div class="card-image">
                        <img src="https://cdn.shopify.com/s/files/1/1589/6833/t/129/assets/without-card.png?v=1747632283" alt="Without card" width="" height="" />
                    </div>
                    <div class="card-meta text-center">
                        <h5>Send without a greeting card</h5>
                        <input id="card-0" type="radio" name="id" value="" data-price="">
                    </div>
                </div>`
        $("#itemCards .items-card").html(html.length === 0 ? '<p>No Item available</p>' : html.join(""))
    });
  }

  async function setItems() {
    let items = []
    const mainProps = {
      
        "Delivery Date": $("#propDeliveryDate").val(),
        "Delivery Time": $("#propDeliveryTime").val() !== '' ? $("#propDeliveryTime").val() : '-' ,
        "Kota Pengiriman": $("#cities").val(),
        "Nama Penerima": $("[data-properties=nama-penerima]").val() !== '' ? $("[data-properties=nama-penerima]").val() : '-' ,
        "Alamat Penerima": $("[data-properties=alamat-penerima]").val() !== '' ? $("[data-properties=alamat-penerima]").val() : '-' ,
        "Kodepos": $("#properties-kodepos").val() !== '' ? $("#properties-kodepos").val() : '-' ,
        "Telepon Penerima": $("[data-properties=telepon-penerima").val() !== '' ? $("[data-properties=telepon-penerima").val() : '-' ,
      
      
      
        "Kartu Nama Penerima": (() => {
          const name = $("[data-properties=penerima]").val().trim();
          if (!name || name === '-') {
            return '-';
          }
          const prefix = $(".label-prefix").text().trim();
          return (prefix + (name ? ' ' + name : '')).trim() || '-';
        })() ,
        "Kartu Ucapan": $("[data-properties=ucapan]").val() !== '' ? $("[data-properties=ucapan]").val() : '-' ,
        "Kartu Nama Pengirim": $("[data-properties=pengirim]").val() !== '' ? $("[data-properties=pengirim]").val() : '-' ,
        "Foto": $("#properties-photo").val() !== '' ? $("#properties-photo").val() : '-' ,
        "Video": $("#properties-video").val() !== '' ? $("#properties-video").val() : '-' ,
        "QR Code": $("#properties-qrId").val() !== '' ? $("#properties-qrId").val() : '-' ,
      
      
      
      "Province": $("#province").val() !== '' ? $("#province").val() : '-' ,
      "Country": $("#properties-kota-pengiriman-country").val() !== '' ? $("#properties-kota-pengiriman-country").val() : '-' ,
      "Company": $("[data-properties=company]").val() !== '' ? $("[data-properties=company]").val() : '-' ,
      
      "Delivery Method": $("#selectedShippingMethod") && $("#selectedShippingMethod").val() !== '' ? $("#selectedShippingMethod").val() : 'Delivery' ,
      "id": $("#properties-time").val() !== '' ? $("#properties-time").val() : '-',
      "type": 'product',
      
      "Shipping": $("#properties-shipping").val() !== '' ? $("#properties-shipping").val() : '-'
      
    }
    console.log(mainProps, 'mainProps')
    const props = await propItems()
    properties = {...mainProps, ...props };
    const id = $("#productSelect").find('option:selected').val()
    console.log(id, 'main ID')
    const mainItem = {
      id: Number(id),
      quantity: 1,
      properties
    }
    items.push(mainItem)
    const cardId = $("#itemCards").find(".selected input").val()
    const cardItem = {
      id: Number(cardId),
      quantity: 1,
      properties: { "id": $("#properties-time").val() !== '' ? $("#properties-time").val() : '-', type: 'card' }
    }
    console.log(cardId, 'cardId')
    if(cardId) {
      items.push(cardItem)
    }
    const addon = await addons()
    if(addon) {
      for(let i = 0; i < addon.length; i++){
        items.push({
          id: addon[i].id,
          quantity: addon[i].quantity,
          properties: addon[i].properties
        })
      }
    }

    return items
  }

  async function addToCart() {
    const items = await setItems()
    const addItems = await additem(items)
    
    // Check if cities is not "Kota Lainnya" and Shipping property is empty or "-"
    const citiesValue = $("#cities").val();
    const shippingValue = $("#properties-shipping").val();
    if (citiesValue && citiesValue !== "Kota Lainnya" && (!shippingValue || shippingValue === "" || shippingValue === "-")) {
      alert("Shipping city has not been selected, please try again");
      // Close popup and reset fields
      disablePopup();
      $("#cities").val("").trigger('change');
      $("#propDeliveryDate").val("");
      $("#propDeliveryTime").val("");
      $("#deliveryDate button").removeClass("selected");
      $("#deliveryTime button").removeClass("selected");
      return;
    }
    
    if(addItems) {
      $(this).find("span").removeClass("loading")
      disablePopup()
      showPopupCart(addItems.items)
      
      localStorage.setItem("items", JSON.stringify(addItems.items))
      const rowIndex = $(".greetingCard").data("id")
      if(rowIndex && rowIndex !== 0) {
        const data = JSON.stringify({
          "Status": "Cart"
        });
        const update = await updateCard(rowIndex, data)
        console.log(update, 'update card to cart')
      }

      analytics.track('add_cart', {
        productId: '8262739886295', 
        items: addItems.items
      });
    }
  }
        
  $(document).ready(function(){

    // Observer to auto-trigger addon loading when addon section becomes visible
    const addonObserver = new MutationObserver(function(mutations) {
      mutations.forEach(function(mutation) {
        const target = $(mutation.target)
        if(target.hasClass('purchaseAddon') && mutation.type === 'attributes' && mutation.attributeName === 'class') {
          if(!target.hasClass('hide')) {
            // Addon section just became visible, ensure items are loaded
            setTimeout(function() {
              if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) {
                console.log("Auto-triggering addon load...")
                $("[data-addon]").eq(0).trigger("click")
              }
            }, 150)
          }
        }
      })
    })
    
    // Start observing addon section
    const addonSection = document.querySelector('.purchaseAddon')
    if(addonSection) {
      addonObserver.observe(addonSection, { 
        attributes: true, 
        attributeFilter: ['class'] 
      })
    }

    $(".purchasePopup").delegate("#addtocart-card", "click", async function(){
    
      $(this).find("span").addClass("loading")
      let isValid = true
      $(".formAddressPurchase [required]").each(function(){
        const t = $(this)
        const input = t.val()
        const p = t.parent()
        if(input === '') {
          p.addClass("error")
          isValid = false
        }
      })

      if(!isValid) {
        $(this).find("span").removeClass("loading")
        return
      }
      
      await addToCart()
    })
  
  $("#addtocart-cart .btn").click(async function(){
    // First validate variant metafields
    if (typeof validateVariantMetafields === 'function') {
      const isValid = validateVariantMetafields(true);
      if (!isValid) {
        // The validateVariantMetafields function already handles scrolling and focusing
        alert('Please select all required variant options before proceeding.');
        return; // Stop execution if validation fails
      }
    }
    
    const id = $("#productSelect").find('option:selected').val()
    const mainProps = {
      id: $("#properties-time").val() !== '' ? $("#properties-time").val() : '-', 
      type: 'product'
    }
    const props = await propItems()
    const properties = { ...mainProps, ...props };
    const items = {
      id: Number(id),
      quantity: 1,
      properties
    }
    const addItems = await additem(items)
    if(addItems) {
      showPopupCart(addItems.items)
      localStorage.setItem("items", JSON.stringify(addItems))
    }
  })

  $(".formAddressPurchase [required]").change(function(){
    const t = $(this)
    const p = t.parent()
    const v = t.val()
    if(v !== '') {
      p.removeClass("error")
    }
  })

  $(".purchase-button").delegate("#save-card", "click", async function(){
    const parent = $(this).parents(".sectionPurchase")
    const next = parent.next(".sectionPurchase")
    $(this).find("span").addClass("loading")
    const card = await saveCard()
    console.log(card, 'ssaveCCC')
    if(card?.status === 200 || card?.status === 201) {
      if(next.length === 0) {
        $(this).find("span").removeClass("loading")
        disablePopup()
        await addToCart()
      }
      $(".scanCard").removeClass("hide")
      $(this).find("span").removeClass("loading")
      parent.addClass("hide")
      next.removeClass("hide")
      if(next.hasClass("purchaseAddon")) {
        $("[data-addon]").eq(0).click()
        console.log("clarity event addons")
        window.clarity("event", `${productType} add-ons`)
        // Ensure addon items are loaded when entering addon popup
        setTimeout(function() {
          if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) {
            $("[data-addon]").eq(0).trigger("click")
          }
        }, 100)
      }
      if(next.hasClass("purchaseAddress")) {
        initSelect2('#zip');
      }
    }
  })

  $("#skip-card").click(async function(){
    $(".greetingCard [data-properties]").val("")
    $("#properties-photo").val("")
    $("#properties-video").val("")
    const parent = $(this).parents(".sectionPurchase")
    const next = parent.next(".sectionPurchase")
    parent.addClass("hide")
    next.removeClass("hide")
    // $("#itemCards").html("")
    await removeImage()
    await removeVideo()
    
    // Trigger card preview update when card data is cleared
    $(document).trigger('cardDataUpdated')
    
    if(next.length === 0) {
      $(this).find("span").removeClass("loading")
      disablePopup()
      await addToCart()
      return
    }
    if(next.hasClass("purchaseAddon")) {
      $("[data-addon]").eq(0).click()
      console.log("clarity event addons")
      window.clarity("event", `${productType} add-ons`)
      // Ensure addon items are loaded when entering addon popup
      setTimeout(function() {
        if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) {
          $("[data-addon]").eq(0).trigger("click")
        }
      }, 100)
    }
    if(next.hasClass("purchaseAddress")) {
      initSelect2('#zip');
    }
  })

  $("#msgCard").click(async function(){
      $(this).parent().addClass("loading")
      let occasion = $(".selected[data-occassion]").data("occassion") || 'all'
      occasion = occasion?.replace("greeting-card-", "")
      const { data } = await getFetch(`${host}/api/card/template/occasion?name=${occasion ? occasion : 'all'}`);
      const d = data?.data
      for(let i = 0; i < d.length; i++) {
        const num = Math.floor(Math.random() * (d.length - 1 + 1) + 1);
        const greeting = d[num]?.Greeting
        $(".greetingCard textarea").val(greeting)
        $(this).parent().removeClass("loading")
        
        // Trigger card preview update when message template is generated
        $(document).trigger('cardDataUpdated')
      }
      $("#save-card").attr("disabled", false)
    })

  $(".sectionPurchaseBoard .next-purchase-button").click(function(){
    const parent = $(this).parents(".sectionPurchase")
    const next = parent.next(".sectionPurchase")
    parent.addClass("hide")
    next.removeClass("hide")
  })

  $("#editCard").click(function(){
    $(".custom-card").show()
    $(".preview-card").hide()
  })

  $("#first_name, #last_name").change(function(){
    const v = $(this).val()
    const first_name = $("#first_name").val()
    const last_name = $("#last_name").val() !== '' ? ' ' + $("#last_name").val() : ''
    $("[data-properties=nama-penerima]").val(first_name+last_name)
    
    // Trigger card preview update when first/last name changes
    $(document).trigger('cardDataUpdated')
  })

  $("[data-occassion]").click(function(){
      const t = $(this)
      const p = t.parents(".sectionPurchase")
      // $(".greetingCard").addClass("disabled")
      const occasion = t.data("occassion")
      loadItemOccasion(t, occasion)
  })

  $("#itemCards").delegate(".item-card:not(.item-without-card) label", "click", function(){
      const id = $(this).parent(".item-card").data("id")
      const t = $(this).parent(".item-card")
      const target = t.find("input")
      const v = $('.item-card input[type="radio"]:checked').val();
      $("#itemCards .item-card").removeClass("selected")
      t.addClass("selected")
      $("#itemCards .item-card").find("input").attr("name", "")
      if(target.length > 0) {
          target.attr("name", "id[]")
          $("#properties-card").val(id)
          $(".greetingCard").removeClass("disabled")
          $("#skip-card").attr("disabled", false)
      } else {
          $("#properties-card").val("")
      }
  })

  $("#itemCards").delegate(".item-without-card label", "click", function(){
    const parent = $(this).parents(".sectionPurchase")
    const next = parent.next(".sectionPurchase")
    $(".greetingCard").addClass("disabled")
    parent.addClass("hide")
    next.removeClass("hide")
    $("[data-addon]").eq(0).click()
    initSelect2('#zip');
  })

  $("[data-properties=ucapan]").keyup(function(){
    const v = $(this).val()
    const p = $(this).parents(".sectionPurchase")
    $(".purchaseAddress").find(".greetingCard textarea").val(v)
    if(v.length > 3) {
      p.find(".next-purchase-button").attr("disabled", false)
    } else {
      p.find(".next-purchase-button").attr("disabled", true)
    }
    
    // Trigger card preview update when message changes
    $(document).trigger('cardDataUpdated')
  })

  $("[data-properties=penerima]").keyup(function(){
    const v = $(this).val()
    $(".purchaseAddress").find("[data-properties=penerima]").val(v)
    
    // Trigger card preview update when recipient name changes
    $(document).trigger('cardDataUpdated')
  })

  $("[data-properties=pengirim]").keyup(function(){
    const v = $(this).val()
    $(".purchaseAddress").find("[data-properties=pengirim]").val(v)
    
    // Trigger card preview update when sender name changes
    $(document).trigger('cardDataUpdated')
  })

  $(document).click(function(e){

     if($(e.target).closest('.wrapperPopupCart').length != 0) return false;
     // $('#popupCart').fadeOut('slow');
    // location.reload()
  });

  $(".toggleAddonCart").click(function(){
    const p = $(this).parent(".itemAddonCart")
    p.toggleClass("open")
  })

  $(".btnViewCart").click(function(){
    window.location.href = "https://outerbloom.com/cart";
  })

  $(".btnViewCheckout").click(async function(){
    $(this).find("span").addClass("loading")
    let zip = $("#properties-kodepos").val()
    const first_name = $("#first_name").val()
    const last_name = $("#last_name").val()
    const company = $("#company").val() !== '' ? $("#company").val() : ''
    const address1 = $("#delivery_address").val()
    const address2 = zip && zip !== '' ? zip?.split(' - ')[1] : ''
    zip = zip && zip !== '' ? zip?.split(' - ')[0] : ''
    const phone = $("#recipient_number").val()
    const city = $("#cities").val()
    const province = $("#province").val()
    const country = 'Indonesia'
    const ver = Date.parse(new Date())
    
    const params = `${first_name ? `&checkout[shipping_address][first_name]=${first_name}` : ''}&${last_name ? `&checkout[shipping_address][last_name]=${last_name}` : ''}&${company ? `&checkout[shipping_address][company]=${company}` : ''}&${address1 ? `&checkout[shipping_address][address1]=${address1}` : ''}&${address2 ? `&checkout[shipping_address][address2]=${address2}` : ''}&${city && city !== 'Kota Lainnya' ? `&checkout[shipping_address][city]=${city}` : ''}&${country ? `&checkout[shipping_address][country]=${country}` : ''}&${province ? `&checkout[shipping_address][province]=${province}` : ''}&${zip ? `&checkout[shipping_address][zip]=${zip}` : ''}&${phone ? `&checkout[shipping_address][phone]=${phone}` : ''}&v=${ver}`
  
    const clear = await fetch(`/cart/clear.js`, {method: 'POST'})
    if(clear.status === 200) {
      const savedItem = window.localStorage.getItem("items");
      const items = JSON.parse(savedItem)
      const addItems = await additem(items)
      console.log(addItems, 'new addItems')
      if(addItems) {
        window.location.href = `https://outerbloom.com/checkout?${params}`;
      }
    }
  })

  $(".btnContinueShopping").click(function(){
    window.location.href = "https://outerbloom.com/";
  })

    if (isIOS) {
      $(".empty-state-card").click(function(){
        $("#input-foto").trigger("click")
      })
      $(".btn-upload-image").click(function(){
        $("#input-foto").trigger("click")
      })
      $("[for=input-video]").click(function(){
        $("#input-video").trigger("click")
      })
      $(".btn-upload-papan").click(function(){
        $("#logoPapan").trigger("click")
      })
    }
  
    $("[data-properties]").each(function(){
      const select = $(this).parents(".form-group").find("select")
      $(this).change(function(){
        const name = $(this).data("properties")
        const v = $(this).val()
        if (name == 'telepon-penerima') {
          let phone = v.replace(/[^0-9]/g, '')
          $(this).val(phone);
          $("#properties-telepon-penerima").val(phone)
          $('.iti__search-input').val('-') 
        } else {
          $("#properties-" + name).val(v)
        }
      })
      select.on("change", function(){
        const name = $(this).data("properties")
        const v = $(this).val()
        $("#properties-" + name).val(v)
      })
    })

    $("#show_note").click(function(){
      const rowIndex = $(".greetingCard").data("id")
      const data = JSON.stringify({
        "Media": "-"
      })
      updateCard(rowIndex, data)
    })

    $(".greetingCard").delegate(".remove-image", "click", function(e){
      e.preventDefault()
      removeImage()
    })

    $(".remove-media").click(function(e){
      e.preventDefault()
      $(this).find("img").show()
      removeVideo()
    })

    

    $("[data-delivery_method]").click(function(e){
      e.preventDefault()
      const t = $(this)
      const data = t.data("delivery_method")
      $("[data-delivery_method]").removeClass("selected")
      t.addClass("selected")
      $("#cities").val("")
      $("#properties-delivery-date").val("-")
      $("#deliveryDate button").removeClass("selected")
      $("#full-date").val("Full Calendar →")
      $("#propDeliveryDate").val("")
      const step3 = $("#step-3")
      if(data.match('PickUp')) {
        $(".selfpickup-point").show()
        step3.find("[data-finished=false]").hide()
        $("#panel-4").hide()
        step3.find("[data-finished=true]").show()
        $("#cities").attr("required", false)
        $("#form-group-city").hide()
        
          // Keep full calendar for pickup-itcinhouse
        
        
        $("#properties-nama-penerima, #properties-alamat-penerima, #properties-kodepos, #properties-kodepos, #properties-telepon-penerima").val("-")
        // $("#deliveryDate").find("button:first-child").addClass("stop")
        $(".form-selfpickup").show()
        $(".form-delivery").hide()
        $(".form-delivery").find("input, textarea, select").val("")
        $(".form-delivery").find("input, textarea, select").attr("required", false)
        $("#properties-shipping").val("0")
        $("#noteDeliveryDate").hide()
        $(".form-delivery .form-control").attr("required", false)
        $("#stepNav4").hide()
        
        $("#deliveryDate").find("button:nth-child(1)").addClass("stop")
        
        
        
          $(".calendarbutton[data-date=14]").attr("disabled", true)
        
        if(timeOfDay >= 16.01){
          $("#deliveryDate").find("button:nth-child(2)").addClass("stop")
        }
      } else {
        
        
          $(".calendarbutton[data-date=14]").attr("disabled", false)
        
        $("#deliveryDate").find("button:nth-child(1)").removeClass("stop")
        step3.find("[data-finished=false]").show()
        $("#panel-4").show()
        step3.find("[data-finished=true]").hide()
        $("#cities").attr("required", true)
        $(".selfpickup-point").hide()
        $("#form-group-city").show()
        $("#cities").val('').trigger('change');
        $("#properties-kota-pengiriman").val("-")
        
        $("#row-delivery-date, #row-delivery-time").show()
        $("#propDeliveryDate, #propDeliveryTime").attr("required", true)
        $("#deliveryDate").find("button").removeClass("stop")
        $(".form-selfpickup").hide()
        $(".form-delivery").show()
        $(".form-delivery").find("input, textarea, select").attr("required", true)
        $(".form-delivery [data-properties]").attr("readonly", false)
        $("#properties-kodepos").val("-")
        $("#properties-alamat-penerima").val("-")
        $(".form-delivery .form-control").attr("required", true)
        $(this).parents(".setup-content").attr("id", "step-1")
        
        $("#stepNav4").show()
      }
    })

    $("[name=selfpickup]").click(function(){
        const p = $(this).parents(".row-pickup")
        const pickupCity = $("input[name='selfpickup']:checked").val();
        const pickupAddress = $("input[name='selfpickup']:checked").data("address");
        const pickupZip = $("input[name='selfpickup']:checked").data("zip");

        $(".row-pickup").removeClass("selected")
        p.addClass("selected")
        
        $("#properties-kota-pengiriman").val(pickupCity)
        $("#province").val("Jakarta")
        $("#properties-alamat-penerima").val(pickupAddress)
        $("#properties-kodepos").val(pickupZip)
    })

    $("#cities").change(function(e){
      e.preventDefault()
      $(this).parent(".row").find("p.error").remove()
      $("#full-date").val("Full Calendar")
      $("#deliveryDate, #deliveryDateFull label ").show()
      $("#deliveryDateFull").removeClass("filled")
      $(".btnChangeDeliveryDate").addClass("hide")
      $("#full-date").prop('disabled', false);
      $("#stepNav2, #stepNav3, #stepNav4").removeClass("btn-success")
      $("#stepNav2, #stepNav3, #stepNav4").find("a").attr("disabled", true)
      const step3 = $("#step-3")
      $("#cityNote").remove()
      $("#noteDeliveryDate").hide()
      $("#noteDeliveryDate").empty()
      let v = $(this).val()
      let v2 = $('option:selected', this).attr('data-city');
      let v3 = $('option:selected', this).attr('data-province');
      let price = $('option:selected', this).attr('data-price');
      
      $("#country").val(v)
      $("#properties-kota-pengiriman").val(v)
      $("#properties-shipping").val(price)
      $("#deliveryDate button, #deliveryTime button, .calendarseasonal .button").removeClass("selected")
      $("#properties-delivery-date, #properties-delivery-time").val("-")
      $("#propDeliveryDate, #propDeliveryTime").val("")
      let note = $('option:selected', this).attr('data-note');
      if(v === 'Kota Lainnya') {
        $("#noteDeliveryDate").show()
        $("#noteDeliveryDate").text("Order akan segera dikirim. Estimasi tanggal diterima akan disesuaikan dengan waktu pengiriman oleh pihak ekspedisi ke lokasi Anda.")
        $("#zip").attr("required", false)
        $("#zip").hide()
        $("#propDeliveryDate, #propDeliveryTime").attr("required", false)
        $("#propDeliveryDate, #properties-delivery-date, #propDeliveryTime, #properties-delivery-time").val("-")
        $("#row-delivery-date, #row-delivery-time").hide()
        $("#properties-shipping").val("")
        
        // Hide addressPurchase form and make all fields optional
        $(".addressPurchase").hide()
        $(".addressPurchase [required]").attr("required", false)
        $(".addressPurchase input, .addressPurchase textarea, .addressPurchase select").val("")
        $("[data-properties=nama-penerima], [data-properties=alamat-penerima], [data-properties=telepon-penerima]").val("")
        $("#properties-nama-penerima, #properties-alamat-penerima, #properties-telepon-penerima").val("")
        
        // $(this).parents(".setup-content").attr("id", "step-2")
        
      } else {
        $("#noteDeliveryDate").hide()
        $("#zip").attr("required", true)
        $("#zip").show()
        $("#row-delivery-date, #row-delivery-time").show()
        $("#propDeliveryDate, #propDeliveryTime").attr("required", true)
        $("#deliveryDate").find("button").removeClass("stop")
        
        // Show addressPurchase form and make fields required
        $(".addressPurchase").show()
        $(".addressPurchase .form-control").not('[data-properties="company"]').attr("required", true)
        $("[data-properties=nama-penerima], [data-properties=alamat-penerima], [data-properties=telepon-penerima]").attr("required", true)
        
        // $(this).parents(".setup-content").attr("id", "step-1")
        
      }
      
      
      
      // if(v !== 'Jakarta') {
      //   $("[data-type=upsell]").hide()
      // } else {
      //   $("[data-type=upsell]").show()
      // }
      // $('.collection-addons')[0].swiper.update();
      
      
      
      // Load delivery dates when city is selected
      if(v !== '' && v !== 'Kota Lainnya') {
        const deliveryDate = document.getElementById("deliveryDate");
        const deliveryTime = document.getElementById("deliveryTime");
        
        // Check localStorage first (no city needed, shared across all cities for same product)
        const storageKey = getStorageKey('date');
        const storedData = getFromStorage(storageKey);
        
        if (storedData && storedData.date && storedData.time) {
          // Render from localStorage immediately using helper function
          renderDeliveryDateFromData(storedData);
        } else {
          // Show skeleton loading state for dates
          if(deliveryDate) {
          const skeletonDates = `
            <button class="date-single calendarbutton btn steps-btn col col-3 btn-date-time" disabled style="opacity: 0.6;">
              <div style="background: #e0e0e0; width: 30px; height: 5px; margin: 0 auto 4px; border-radius: 0px;"></div>
              <span style="background: #d0d0d0; display: inline-block; width: 40px; height: 40px; border-radius: 100%;"></span>
            </button>
            <button class="date-single calendarbutton btn steps-btn col col-3 btn-date-time" disabled style="opacity: 0.6;">
              <div style="background: #e0e0e0; width: 30px; height: 5px; margin: 0 auto 4px; border-radius: 0px;"></div>
              <span style="background: #d0d0d0; display: inline-block; width: 40px; height: 40px; border-radius: 100%;"></span>
            </button>
            <button class="date-single calendarbutton btn steps-btn col col-3 btn-date-time" disabled style="opacity: 0.6;">
              <div style="background: #e0e0e0; width: 30px; height: 5px; margin: 0 auto 4px; border-radius: 0px;"></div>
              <span style="background: #d0d0d0; display: inline-block; width: 40px; height: 40px; border-radius: 100%;"></span>
            </button>
            <button class="date-single calendarbutton btn steps-btn col col-3 btn-date-time" disabled style="opacity: 0.6;">
              <div style="background: #e0e0e0; width: 30px; height: 5px; margin: 0 auto 4px; border-radius: 0px;"></div>
              <span style="background: #d0d0d0; display: inline-block; width: 40px; height: 40px; border-radius: 100%;"></span>
            </button>
          `;
          deliveryDate.innerHTML = skeletonDates;
        }
        
        // Show skeleton loading state for times
        if(deliveryTime) {
          const skeletonTimes = `
            <button class="time-single calendarbutton2 btn steps-btn" disabled style="opacity: 0.6;">
              <div style="background: #e0e0e0; width: 60px; height: 12px; margin: 0 auto 4px; border-radius: 4px;"></div>
              <div style="background: #d0d0d0; width: 80px; height: 10px; margin: 0 auto; border-radius: 4px;"></div>
            </button>
            <button class="time-single calendarbutton2 btn steps-btn" disabled style="opacity: 0.6;">
              <div style="background: #e0e0e0; width: 60px; height: 12px; margin: 0 auto 4px; border-radius: 4px;"></div>
              <div style="background: #d0d0d0; width: 80px; height: 10px; margin: 0 auto; border-radius: 4px;"></div>
            </button>
            <button class="time-single calendarbutton2 btn steps-btn" disabled style="opacity: 0.6;">
              <div style="background: #e0e0e0; width: 60px; height: 12px; margin: 0 auto 4px; border-radius: 4px;"></div>
              <div style="background: #d0d0d0; width: 80px; height: 10px; margin: 0 auto; border-radius: 4px;"></div>
            </button>
          `;
          deliveryTime.innerHTML = skeletonTimes;
        }
        
        // Load delivery dates (with city parameter)
        renderDate(v).then(() => {
          console.log('Delivery dates loaded for city:', v);
        }).catch(error => {
          console.error('Error loading delivery dates:', error);
          if(deliveryDate) {
            deliveryDate.innerHTML = '<p style="text-align: center; color: #d32f2f; font-size: 14px; padding: 20px 0;">Failed to load dates. Please try again.</p>';
          }
        });
        }
      }
      
      
      disabledSameDay()
      

      if(v !== 'Jakarta' && v !== 'Depok' && v !== 'Bekasi' && v !== 'Tangerang') {
        
        $("[data-addon=giftcard]").show()
        $("[data-addon=giftcard]").click()
        $("#itemAddons").show()
        $("#flower-step").addClass("nonjadetabek")
      } else {
        $("#cardOccasion, #navAddon, .collection-addons").show()
        $("[data-addon]").eq(0).click()
        $("#flower-step").removeClass("nonjadetabek")
      }
      
    })

    $("#zip").change(function(e){
      let v = $(this).val()
      var city = $("#cities").find('option:selected');
      $("#properties-kodepos").val(v)
      if(city === 'Kota Lainnya') {
        $(this).attr("required", true)
        $("#recipient-address").val("")
      }
    })

    
      var minDate = +7
      
    

    // Initialize datepicker only if jQuery UI is loaded
    if (typeof $.fn.datepicker === 'function') {
      $("#full-date").datepicker({
        minDate,
        dateFormat: 'Mdd_yy', //Nop22_2021,
        
        beforeShowDay: disabledays,
        
        onSelect: function (date) {
          $("#deliveryDate, #deliveryDateFull label ").hide()
          $("#deliveryDateFull").addClass("filled")
          $(".btnChangeDeliveryDate").removeClass("hide")
        
        $("#full-date").prop('disabled', true);
        
        $('#propDeliveryDate, #properties-delivery-date').val('Kirim_'+date);
        $(".date-full").addClass("selected")
        $(".date-single, .calendar-group").removeClass("selected")
        $("#propDeliveryTime").val('')
        $("#properties-delivery-time").val('-')
        $(".time-single").removeClass("selected")
        
        const select = $('#cities option:selected').val();
        if(select !== 'Jakarta' && select !== 'Depok' && select !== 'Bekasi' && select !== 'Tangerang') {
          $("#noteDeliveryDate").show()
          $("#noteDeliveryDate").html(`Order akan dikirim pada tanggal ${date} dari Jakarta. Estimasi tanggal diterima akan disesuaikan dengan waktu pengiriman oleh pihak ekspedisi ke lokasi Anda.`)
        } else {
          $("#noteDeliveryDate").hide()
        }
        
        
      }
      });
    } else {
      // jQuery UI datepicker not loaded, show console warning
      console.warn('jQuery UI datepicker is not available. Make sure jQuery UI library is loaded.');
    }

    $(".btnChangeDeliveryDate").click(function(){
        $("#deliveryDate, #deliveryDateFull label ").show()
        $("#deliveryDateFull").removeClass("filled")
        $(".btnChangeDeliveryDate").addClass("hide")
        $("#full-date").prop('disabled', false);
    })
  
    $("#deliveryDate").delegate(".calendarbutton:not(.date-full)", "click", function(e){
      e.preventDefault()
      $(this).parents("#row-delivery-date").find("p.error").remove()
      const fulldate = $(this).data("fulldate")
      const day = $(this).data("day")
      const date = $(this).data("date")
      const month = $(this).data("month")
      const year = $(this).data("year")
      const off_pagi = $(this).data("offpagi")
      const off_siang = $(this).data("offsiang")
      const off_malam = $(this).data("offmalam")
      $(".calendarbutton").removeClass("selected")
      $(this).addClass("selected")
      $("#propDeliveryDate, #properties-delivery-date").val(`Kirim_${month}${date}_${year}`)
      $("#propDeliveryTime").val('')
      $("#properties-delivery-time").val('-')
      $(".calendarbutton2").removeClass("selected")
      $("#full-date").val("Full Calendar")

      
      if(off_pagi && timeOfDay > off_pagi) {
        $("[data-time=Morning]").attr("disabled", true)
      } else {
        $("[data-time=Morning]").attr("disabled", false)
      }
      if(off_siang && timeOfDay > off_siang) {
        $("[data-time=Afternoon]").attr("disabled", true)
      } else {
        $("[data-time=Afternoon]").attr("disabled", false)
      }
      if(off_malam && timeOfDay > off_malam) {
        $("[data-time=Evening]").attr("disabled", true)
      } else {
        $("[data-time=Evening]").attr("disabled", false)
      }
      

      
      const select = $('#cities option:selected').val();
      if(select !== 'Jakarta' && !select.match('PickUp') && select !== 'Depok' && select !== 'Bekasi' && select !== 'Tangerang' && select !== '') {
        $("#noteDeliveryDate").show()
        $("#noteDeliveryDate").html(`Order akan dikirim pada tanggal ${day}, ${date} ${month} ${year} dari Jakarta. Estimasi tanggal diterima akan disesuaikan dengan waktu pengiriman oleh pihak ekspedisi ke lokasi Anda.`)
      } else {
        $("#noteDeliveryDate").hide()
      }
      
    })
    
    if(today === 14 && timeOfDay > 17.00) {
      $("#deliveryDate button:first-child").attr("disabled", true)
    }
  
    $("#deliveryTime").delegate(".calendarbutton2", "click", function(e){
      e.preventDefault()
      const time = $(this).data("time")
      const date = $("#propDeliveryDate").val()
      if(date == '') {
        // return alert('Silakan pilih tanggal terlebih dahulu')
      }
      $(".calendarbutton2").removeClass("selected")
      $(this).addClass("selected")
      $("#propDeliveryTime, #properties-delivery-time").val(`KirimJam_${date.replace('Kirim_','')}_${time}`)
    })
      
    $('textarea.has-limit, input.has-limit').keyup(function () {
      max = this.getAttribute("maxlength");
      let len = $(this).val().length;
      let limit = $(this).siblings(".limit");
      if (len > max) {
        alert('you have reached the limit');
      } else {
        limit.text(`${len}/${max}`);
      }
    });
    
    $("#button-action-step .btn").click(function(){
      $(this).find("span").text("Processing...");
    });

    $(".finishBtn").on('click', function() {
      $(this).addClass("is-adding");
      // $(this).click();
    });

    $('.setup-panel .nav-item a.btn-success').trigger('click');

    $("#button-action .btn").click(function(){
      $("#flower-step").addClass("block");
      $("#button-action").hide();
    });
        
    $(".close-how-order").click(function(){
      $("#flower-step").removeClass("block");
      $("#button-action").show();
    });

    $("#input-foto, #input-video").change(function(e){
      readURL(this);
    });

    $("#logoPapan").change(function(){
      readURLPapan(this);
    });

    $("#address-upload").change(async function(){
      const upload_address = await readURLAddress(this)
      if(upload_address) {
        const url = upload_address.url
        $(".props-address-upload").val(url)
        // $(".form-address").addClass("address-uploaded")
        $(".form-address-upload").addClass("uploaded")

        // $(this).parents(".form-group").siblings(".form-group").find("[required]").attr("required", false)
        
        // Hit OCR endpoint to get address options
        // await hitOCREndpoint(url)
      }
    })

    $(".address-manualy").click(function(){
      $(".form-address-upload").removeClass("uploaded");
      $(".photo-address").hide();
      // $(".form-address").removeClass("address-uploaded")
      $("#formAddressPurchase").find(".form-control").not('[data-properties="company"]').attr("required", true)
    });

    $(".case-video-preview").delegate(".replace-video", "click", function(){
      $("#input-video").trigger("click")
    })

    $('.date-single').click(function(e) {
      e.preventDefault();
      $('.date-single').removeClass('selected');
      $('#full-date').removeClass('selected');
      $(this).addClass('selected');
      $('#full-date').html('Full' + '<br/>' + 'Calendar');
    });
    
    // Function to load jQuery UI if not loaded
    function ensureJQueryUI() {
      return new Promise((resolve, reject) => {
        if (typeof $.fn.datepicker === 'function') {
          resolve();
        } else {
          // Load CSS first
          if (!document.querySelector('link[href*="jquery-ui"]')) {
            const css = document.createElement('link');
            css.rel = 'stylesheet';
            css.href = 'https://code.jquery.com/ui/1.13.0/themes/base/jquery-ui.min.css';
            document.head.appendChild(css);
          }
          
          // Load JS
          const script = document.createElement('script');
          script.src = 'https://code.jquery.com/ui/1.13.0/jquery-ui.min.js';
          script.onload = () => {
            resolve();
          };
          script.onerror = () => {
            reject(new Error('Failed to load jQuery UI'));
          };
          document.head.appendChild(script);
        }
      });
    }
    
    // Force trigger datepicker on click - initialize if needed
    $('#full-date').on('click focus', async function(e){
      $('.date-single').removeClass('selected');
      $(this).addClass('selected');
      
      // Ensure jQuery UI is loaded
      try {
        await ensureJQueryUI();
      } catch(err) {
        alert('Calendar widget is not available. Please refresh the page.');
        return;
      }
      
      // Determine minDate
      
        var minDate = +7;
        
      
      
      // Helper function to initialize datepicker
      const initDatepicker = () => {
        $(this).datepicker({
          minDate: minDate,
          dateFormat: 'Mdd_yy',
          
          beforeShowDay: disabledays,
          
          onSelect: function (date) {
            $("#deliveryDate, #deliveryDateFull label ").hide();
            $("#deliveryDateFull").addClass("filled");
            $(".btnChangeDeliveryDate").removeClass("hide");
          
            $("#full-date").prop('disabled', true);
          
            $('#propDeliveryDate, #properties-delivery-date').val('Kirim_'+date);
            $(".date-full").addClass("selected");
            $(".date-single, .calendar-group").removeClass("selected");
            $("#propDeliveryTime").val('');
            $("#properties-delivery-time").val('-');
            $(".time-single").removeClass("selected");
          
            const select = $('#cities option:selected').val();
            if(select !== 'Jakarta' && select !== 'Depok' && select !== 'Bekasi' && select !== 'Tangerang') {
              $("#noteDeliveryDate").show();
              $("#noteDeliveryDate").html(`Order akan dikirim pada tanggal ${date} dari Jakarta. Estimasi tanggal diterima akan disesuaikan dengan waktu pengiriman oleh pihak ekspedisi ke lokasi Anda.`);
            } else {
              $("#noteDeliveryDate").hide();
            }
          
          
          }
        });
      };
      
      // If datepicker doesn't exist, initialize it
      if (!$(this).hasClass('hasDatepicker')) {
        try {
          initDatepicker();
        } catch(err) {
          console.error('Error initializing datepicker:', err);
          return;
        }
      }
      
      // Try to show datepicker
      try {
        $(this).datepicker('show');
      } catch(err) {
        // Logging error detail
        console.error('Error showing datepicker:', err);
        // Cek elemen dan dependensi
        if ($(this).length && typeof $(this).datepicker === 'function') {
          try {
            $(this).datepicker('destroy');
            $(this).removeClass('hasDatepicker');
            initDatepicker();
            $(this).datepicker('show');
          } catch(reinitErr) {
            console.error('Error reinitializing datepicker:', reinitErr);
            alert('Unable to open calendar. Please refresh the page.');
          }
        } else {
          alert('Unable to open calendar. Please refresh the page.');
        }
      }
    });
    
    // $("tr").each(function(){
    //   if($(this).text().match('SKU')) {
    //     $(".sku-product").html($(this).parents("table").html())
    //   }
    // })
    
    $("#product-image").scroll(function(){
      $(".desc-add").each(function(){
        const img = $(this).find("img")
        const src = img.data("src")
        img.attr("src", src)
      })
    })

    $(".product-fixed").hide()
    
    let target = $("#personalizeBtn")
    

    $(".product-meta").scroll(function() {
        if ($(window).scrollTop() >= target.offset().top ) {
            $(".product-fixed").addClass("show")
        } else {
          $(".product-fixed").removeClass("show")
        }
    });

    $(window).scroll(function() {
        if ($(window).scrollTop() >= target.offset().top ) {
            $(".product-fixed").addClass("show")
        } else {
          $(".product-fixed").removeClass("show")
        }
    });
    
    // Add event listeners to trigger card preview updates
    $(document).on('input change keyup', '#senderCard, #kartu-ucapan, [data-properties="ucapan"], [data-properties="kartu-nama-pengirim"]', function() {
      $(document).trigger('cardDataUpdated');
    });
    
    // Trigger card preview update when photo or video is uploaded
    $(document).on('photoUploaded videoUploaded', function() {
      $(document).trigger('cardDataUpdated');
    });
  });
</script>

  <script>
    //
  </script>

<script>
  $(document).ready(function(){
    $('table tr td').each(function(){
      var texto = $(this).text();
      var nextto = $(this).next("td");
      var sku = $("#data-sku").val()
      if(texto == 'SKU'){
        nextto.text(sku)
      }
    });
    
    $(".stamped-summary-actions-newquestion").text("Tulis Pertanyaan");
    $(".stamped-summary-actions-newreview").text("Tulis Review");
    $("#tab-questions").text("Pertanyaan");
    
    $(".freeship .icon").click(function(){
      $(".fs-content").slideToggle();
      $(this).parents(".freeship").toggleClass("expand");
    });
    
    var $easyzoom = $('.easyzoom').easyZoom();
    // Setup thumbnails example
    var api1 = $easyzoom.filter('.easyzoom--with-thumbnails').data('easyZoom');
    $('.thumbnails').on('click', 'a', function(e) {
      var $this = $(this);
      e.preventDefault();
      // Use EasyZoom's `swap` method
      api1.swap($this.data('standard'), $this.attr('href'));
    });

    $('#playerID').click(function(){
      var videoURL = $('#VdoID').attr('src'),
          dataplay = $('#VdoID').attr('data-play');

      //for check autoplay
      //if not set autoplay=1
      if(dataplay == 0 ){
        $('#VdoID').attr('src',videoURL+'?autoplay=1');
        $('#VdoID').attr('data-play',1);
      }
      else{
        var videoURL = $('#VdoID').attr('src');
        videoURL = videoURL.replace("?autoplay=1", "");
        $('#VdoID').prop('src','');
        $('#VdoID').prop('src',videoURL);

        $('#VdoID').attr('data-play',0);
      }

    });
    
    $(".product-photo-thumb-video").click(function(e){
      e.preventDefault();

      var newEmbed = $(this).attr('href');
      $("#featured-image-product").addClass("img-video");
      $("#ProductPhotoImg").hide();
      $("#featured-image-product .video").show();
      $("#featured-image-product iframe").attr('src', newEmbed);
      $("#VdoID")[0].src += "&autoplay=1";
    });
    $(".product-single__thumbnail").click(function(evt){
      evt.preventDefault();
      $("#featured-image-product").removeClass("img-video");
      $("#ProductPhotoImg").show();
      $("#featured-image-product .video").hide();
      $("#featured-image-product iframe").attr('src', '');
    });
    
    if($('#product-meta .short-desc > div').length >= 1){
      //console.log('div detected')
      var replacer = $('#product-meta .short-desc > div').contents();
      $('#product-meta .short-desc > div').replaceWith(replacer);

      var cAssured =  $('.c-assured').detach();
      cAssured.insertAfter('.meta-sds .stock-info');
    }

    
    const productMeta = $(".product-meta")
    if(productMeta.height() > 600) {
      $("#product-image, .product-meta").css("max-height", productMeta)
    }
    
    
    $(".heading-toggle").click(function(){
      $(this).parent().toggleClass("open")
      
    });
  });
</script>


  <script type="application/json" id="ProductJson-Product">
        
        {"id":8262739886295,"title":"MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru","handle":"signature-midnight-kiss-bouquet-classic","description":"\u003cul data-mce-fragment=\"1\"\u003e\n\u003cli data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003eLayanan Live Chat 24 Jam Non Stop\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003eTransaksi Mudah Cepat & Praktis\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003ePilihan Permainan Terlengkap Gampang Menang\u003c\/strong\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp data-mce-fragment=\"1\"\u003eBerikan Pilihan Permainan Terlengkap Gampang Menang dengan “MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru”. Layanan Live Chat 24 Jam Non Stop, yang melambangkan perasaan cinta dan kasih sayang. Dirangkai indah dan dibalut dengan\u003cspan data-mce-fragment=\"1\"\u003e \u003c\/span\u003e\u003cem data-mce-fragment=\"1\"\u003ewrapping paper\u003c\/em\u003e, lalu dihias dengan pita grosgrain premium yang mempermanis tampilannya. Koleksi buket bunga bernuansa warna merah dan hitam ini cocok untuk momen perayaan hari Valentine yang membawa kebahagiaan!\u003c\/p\u003e\n\u003ctable data-mce-fragment=\"1\" width=\"100%\"\u003e\n\u003ctbody data-mce-fragment=\"1\"\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd data-mce-fragment=\"1\"\u003eSKU\u003c\/td\u003e\n\u003ctd data-mce-fragment=\"1\"\u003eOBIBUN1205\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd data-mce-fragment=\"1\"\u003eIsi\u003c\/td\u003e\n\u003ctd data-mce-fragment=\"1\"\u003e6 tangkai Mawar impor dan Caspea\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e","published_at":"2026-01-19T15:47:15","created_at":"2024-02-03T15:27:33","vendor":"Outerbloom","type":"Bunga Outerbloom","tags":["Bekasi","Bogor","Brand_Outerbloom","Buket Bunga","Bunga","Bunga Jakarta","card","Depok","engagement","formdate","Fresh Flower","Fresh Inhouse","icon-card","icon-fresh","icon-sameday","Inhouse","jakarta","Jenis_Bunga Mawar","just because","MonSatBuketInhouse","newborn","Pengiriman_Bekasi","Pengiriman_Depok","Pengiriman_Jakarta","Pengiriman_Tangerang","pickup-itcinhouse","ship-inhouse","sorry","Style_Classic","Style_Modern","takeoutselfpickup","Tangerang","thank you","Untuk_Anniversary","Untuk_Congratulations","Untuk_Hari Raya","Untuk_Valentine","Untuk_Wisuda","uploadfotocard","upsell","upsell-inhouse","Warna_Red"],"price":"NaN","price_min":"NaN","price_max":"NaN","price_varies":false,"compare_at_price":"NaN","compare_at_price_min":"NaN","compare_at_price_max":"NaN","compare_at_price_varies":false,"all_variant_ids":[48262696042711,48262693257431],"variants":[{"id":48262696042711,"title":"Innocent Pink","option1":"Innocent Pink","option2":null,"option3":null,"sku":"[C]OBIBUN1236","requires_shipping":true,"taxable":true,"featured_image":{"id":45491844448471,"product_id":8262739886295,"position":2,"created_at":"2026-02-03T15:46:56+07:00","updated_at":"2026-02-14T10:06:00+07:00","alt":null,"width":850,"height":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-classic-Bouquet-Innocent-Pink.jpg?v=1771038360","variant_ids":[48262696042711]},"available":true,"name":"MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru - Innocent Pink","public_title":"Innocent Pink","options":["Innocent Pink"],"price":27770000,"weight":0,"compare_at_price":64500000,"inventory_quantity":0,"inventory_management":"shopify","inventory_policy":"continue","barcode":"","featured_media":{"alt":null,"id":36968089354455,"position":2,"preview_image":{"aspect_ratio":1.0,"height":850,"width":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-classic-Bouquet-Innocent-Pink.jpg?v=1771038360"}},"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":48262693257431,"title":"Fiery Red","option1":"Fiery Red","option2":null,"option3":null,"sku":"[C]OBIBUN1205","requires_shipping":true,"taxable":true,"featured_image":{"id":39970442182871,"product_id":8262739886295,"position":1,"created_at":"2024-02-03T15:40:15+07:00","updated_at":"2026-02-14T10:06:00+07:00","alt":null,"width":850,"height":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6.jpg?v=1771038360","variant_ids":[48262693257431]},"available":true,"name":"MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru - Fiery Red","public_title":"Fiery Red","options":["Fiery Red"],"price":33500000,"weight":0,"compare_at_price":64500000,"inventory_quantity":0,"inventory_management":"shopify","inventory_policy":"continue","barcode":"","featured_media":{"alt":null,"id":32593157062871,"position":1,"preview_image":{"aspect_ratio":1.0,"height":850,"width":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6.jpg?v=1771038360"}},"requires_selling_plan":false,"selling_plan_allocations":[]}],"available":false,"images":["\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6.jpg?v=1771038360","\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-classic-Bouquet-Innocent-Pink.jpg?v=1771038360","\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_3_6db09e1a-75b0-4554-9330-12f5c9948793.jpg?v=1770108424","\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_4_5ebf5419-e9a7-4948-966b-4ecbf7b47cec.jpg?v=1770108424"],"featured_image":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6.jpg?v=1771038360","options":["Variants"],"url":"\/products\/signature-midnight-kiss-bouquet-classic"}
  </script>
  
    <script type="application/json" id="VariantJson-Product">
      [
        
          {
             "incoming": false,
             "next_incoming_date": null
          },
        
          {
             "incoming": false,
             "next_incoming_date": null
          }
        
      ]
    </script>
  



</div>


<script src="//outerbloom.com/cdn/shopifycloud/storefront/assets/themes_support/option_selection-b017cd28.js" type="text/javascript"></script>
<style>
    .stamped-review-header-title,
    .stamped-review-header .author,
    .stamped-review-content-body,
    .stamped-sort-select,
    .stamped-review-header .verified-badge[data-type=buyer]:after,
    .stamped-review-header-byline,
    .stamped-review-reply-body {font-size: 14px!important;font-family: 'Barlow',sans-serif!important;}
    .stamped-review {margin-bottom: 0;}
    .stamped-review-body {padding-left: 65px;}
    .stamped-review:first-child {padding-top: 25px;}
    .stamped-review-content {clear: none;}
    .stamped-review-reply {margin: 15px 0 0 65px;background: #f2f2f2;border-left: none;}
    .stamped-review-reply-body {padding-left: 65px;}
    .stamped-review-header .author {text-transform: capitalize;}
    .stamped-questions .stamped-review-content {padding-left: 65px;}

    .stamped-pagination {margin: 20px 0 0;}
    .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;}
    .stamped-pagination li a {color: #121212;padding: 13px 18px;vertical-align: middle;display: block;}
    .stamped-pagination li.active a {background-color: #ddd;font-weight: 400;}
    .stamped-pagination li:hover a {background: #ddd;}
    .stamped-pagination .next {border-right: 1px solid #ccc;}
    .stamped-pagination li:first-child {border-top-left-radius: 5px;border-bottom-left-radius: 5px;}
    .stamped-pagination li:last-child {border-top-right-radius: 5px;border-bottom-right-radius: 5px;}

    #stamped-pagination-question span.page {display: inline-block;border: 1px solid #ccc;width: 47px;}
    #stamped-pagination-question span {font-size: 14px;}
    #stamped-pagination-question .page.active {padding: 12px;font-weight: 400;background: #ddd;}
    #stamped-pagination-question a, #stamped-pagination-question .page.active {color: #121212;padding: 13px 18px;vertical-align: middle;display: inline-block;}
    .stamped-pagination-deco {color: #121212;padding: 13px 18px;width: 47px;vertical-align: middle;display: inline-block;border: 1px solid #ccc;padding: 12px;}
    .stamped-pagination-prev, .stamped-pagination-next {position: inherit;}
    .stamped-pagination-prev a, .stamped-pagination-next a {width: auto!important;border: 1px solid #ccc;}

    @media (max-width: 480px){
      .stamped-review-reply {margin-left: 0!important;}
      select.stamped-sort-select {font-size: 13px!important;}
    }

  #product-reviews .stamped-summary-ratings, #product-reviews .stamped-summary-actions, .stamped-content {
      display: block !important;
  }
</style>
<script>
    var selectCallback = function(variant, selector) {
      timber.productPage({
        money_format: "Rp {{amount_no_decimals}}",
        variant: variant,
        selector: selector
      });
    };

    jQuery(function($) {
      new Shopify.OptionSelectors('productSelect', {
        product:





{"id":8262739886295,"title":"MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru","handle":"signature-midnight-kiss-bouquet-classic","description":"\u003cul data-mce-fragment=\"1\"\u003e\n\u003cli data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003eLayanan Live Chat 24 Jam Non Stop\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003eTransaksi Mudah Cepat & Praktis\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003ePilihan Permainan Terlengkap Gampang Menang\u003c\/strong\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp data-mce-fragment=\"1\"\u003eBerikan Pilihan Permainan Terlengkap Gampang Menang dengan “MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru”. Layanan Live Chat 24 Jam Non Stop, yang melambangkan perasaan cinta dan kasih sayang. Dirangkai indah dan dibalut dengan\u003cspan data-mce-fragment=\"1\"\u003e \u003c\/span\u003e\u003cem data-mce-fragment=\"1\"\u003ewrapping paper\u003c\/em\u003e, lalu dihias dengan pita grosgrain premium yang mempermanis tampilannya. Koleksi buket bunga bernuansa warna merah dan hitam ini cocok untuk momen perayaan hari Valentine yang membawa kebahagiaan!\u003c\/p\u003e\n\u003ctable data-mce-fragment=\"1\" width=\"100%\"\u003e\n\u003ctbody data-mce-fragment=\"1\"\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd data-mce-fragment=\"1\"\u003eSKU\u003c\/td\u003e\n\u003ctd data-mce-fragment=\"1\"\u003eOBIBUN1205\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd data-mce-fragment=\"1\"\u003eIsi\u003c\/td\u003e\n\u003ctd data-mce-fragment=\"1\"\u003e6 tangkai Mawar impor dan Caspea\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e","published_at":"2026-01-19T15:47:15+07:00","created_at":"2024-02-03T15:27:33+07:00","vendor":"Outerbloom","type":"Bunga Outerbloom","tags":["Bekasi","Bogor","Brand_Outerbloom","Buket Bunga","Bunga","Bunga Jakarta","card","Depok","engagement","formdate","Fresh Flower","Fresh Inhouse","icon-card","icon-fresh","icon-sameday","Inhouse","jakarta","Jenis_Bunga Mawar","just because","MonSatBuketInhouse","newborn","Pengiriman_Bekasi","Pengiriman_Depok","Pengiriman_Jakarta","Pengiriman_Tangerang","pickup-itcinhouse","ship-inhouse","sorry","Style_Classic","Style_Modern","takeoutselfpickup","Tangerang","thank you","Untuk_Anniversary","Untuk_Congratulations","Untuk_Hari Raya","Untuk_Valentine","Untuk_Wisuda","uploadfotocard","upsell","upsell-inhouse","Warna_Red"],"price":27770000,"price_min":27770000,"price_max":33500000,"available":true,"price_varies":true,"compare_at_price":64500000,"compare_at_price_min":64500000,"compare_at_price_max":64500000,"compare_at_price_varies":false,"variants":[{"id":48262696042711,"title":"Innocent Pink","option1":"Innocent Pink","option2":null,"option3":null,"sku":"[C]OBIBUN1236","requires_shipping":true,"taxable":true,"featured_image":{"id":45491844448471,"product_id":8262739886295,"position":2,"created_at":"2026-02-03T15:46:56+07:00","updated_at":"2026-02-14T10:06:00+07:00","alt":null,"width":850,"height":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-classic-Bouquet-Innocent-Pink.jpg?v=1771038360","variant_ids":[48262696042711]},"available":true,"name":"MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru - Innocent Pink","public_title":"Innocent Pink","options":["Innocent Pink"],"price":27770000,"weight":0,"compare_at_price":64500000,"inventory_quantity":0,"inventory_management":"shopify","inventory_policy":"continue","barcode":"","featured_media":{"alt":null,"id":36968089354455,"position":2,"preview_image":{"aspect_ratio":1.0,"height":850,"width":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-classic-Bouquet-Innocent-Pink.jpg?v=1771038360"}},"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":48262693257431,"title":"Fiery Red","option1":"Fiery Red","option2":null,"option3":null,"sku":"[C]OBIBUN1205","requires_shipping":true,"taxable":true,"featured_image":{"id":39970442182871,"product_id":8262739886295,"position":1,"created_at":"2024-02-03T15:40:15+07:00","updated_at":"2026-02-14T10:06:00+07:00","alt":null,"width":850,"height":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6.jpg?v=1771038360","variant_ids":[48262693257431]},"available":true,"name":"MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru - Fiery Red","public_title":"Fiery Red","options":["Fiery Red"],"price":33500000,"weight":0,"compare_at_price":64500000,"inventory_quantity":0,"inventory_management":"shopify","inventory_policy":"continue","barcode":"","featured_media":{"alt":null,"id":32593157062871,"position":1,"preview_image":{"aspect_ratio":1.0,"height":850,"width":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6.jpg?v=1771038360"}},"requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6.jpg?v=1771038360","\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-classic-Bouquet-Innocent-Pink.jpg?v=1771038360","\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_3_6db09e1a-75b0-4554-9330-12f5c9948793.jpg?v=1770108424","\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_4_5ebf5419-e9a7-4948-966b-4ecbf7b47cec.jpg?v=1770108424"],"featured_image":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6.jpg?v=1771038360","options":["Variants"],"media":[{"alt":null,"id":32593157062871,"position":1,"preview_image":{"aspect_ratio":1.0,"height":850,"width":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6.jpg?v=1771038360"},"aspect_ratio":1.0,"height":850,"media_type":"image","src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6.jpg?v=1771038360","width":850},{"alt":null,"id":36968089354455,"position":2,"preview_image":{"aspect_ratio":1.0,"height":850,"width":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-classic-Bouquet-Innocent-Pink.jpg?v=1771038360"},"aspect_ratio":1.0,"height":850,"media_type":"image","src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-classic-Bouquet-Innocent-Pink.jpg?v=1771038360","width":850},{"alt":null,"id":32593157095639,"position":3,"preview_image":{"aspect_ratio":1.0,"height":850,"width":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_3_6db09e1a-75b0-4554-9330-12f5c9948793.jpg?v=1770108424"},"aspect_ratio":1.0,"height":850,"media_type":"image","src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_3_6db09e1a-75b0-4554-9330-12f5c9948793.jpg?v=1770108424","width":850},{"alt":null,"id":32593157128407,"position":4,"preview_image":{"aspect_ratio":1.0,"height":850,"width":850,"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_4_5ebf5419-e9a7-4948-966b-4ecbf7b47cec.jpg?v=1770108424"},"aspect_ratio":1.0,"height":850,"media_type":"image","src":"\/\/outerbloom.com\/cdn\/shop\/files\/Signature-Midnight-Kiss-Bouquet---Classic_4_5ebf5419-e9a7-4948-966b-4ecbf7b47cec.jpg?v=1770108424","width":850}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cul data-mce-fragment=\"1\"\u003e\n\u003cli data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003eLayanan Live Chat 24 Jam Non Stop\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003eTransaksi Mudah Cepat & Praktis\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003e\u003cstrong data-mce-fragment=\"1\"\u003ePilihan Permainan Terlengkap Gampang Menang\u003c\/strong\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp data-mce-fragment=\"1\"\u003eBerikan Pilihan Permainan Terlengkap Gampang Menang dengan “MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru”. Layanan Live Chat 24 Jam Non Stop, yang melambangkan perasaan cinta dan kasih sayang. Dirangkai indah dan dibalut dengan\u003cspan data-mce-fragment=\"1\"\u003e \u003c\/span\u003e\u003cem data-mce-fragment=\"1\"\u003ewrapping paper\u003c\/em\u003e, lalu dihias dengan pita grosgrain premium yang mempermanis tampilannya. Koleksi buket bunga bernuansa warna merah dan hitam ini cocok untuk momen perayaan hari Valentine yang membawa kebahagiaan!\u003c\/p\u003e\n\u003ctable data-mce-fragment=\"1\" width=\"100%\"\u003e\n\u003ctbody data-mce-fragment=\"1\"\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd data-mce-fragment=\"1\"\u003eSKU\u003c\/td\u003e\n\u003ctd data-mce-fragment=\"1\"\u003eOBIBUN1205\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-mce-fragment=\"1\"\u003e\n\u003ctd data-mce-fragment=\"1\"\u003eIsi\u003c\/td\u003e\n\u003ctd data-mce-fragment=\"1\"\u003e6 tangkai Mawar impor dan Caspea\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e"},
        onVariantSelected: selectCallback,
        enableHistoryState: true
      });

      // Add label if only one product option and it isn't 'Title'. Could be 'Size'.
      
        $('.selector-wrapper:eq(0)').prepend('<label for="productSelect-option-0">Variants</label>');
      

      // Hide selectors if we only have 1 variant and its title contains 'Default'.
      
    });
</script>



  <script type="application/ld+json">
    {
    "@context": "http://schema.org",
    "@type": "Product",
"offers": {
"@type": "Offer",
"availability":"https://schema.org/InStock",
"price": 277700,
"priceValidUntil": "04-03-2026",
"priceCurrency": "IDR",
"url": "https://www.houseonthehillaustin.com/home/rave-reviews/"
},
"brand": {
"@type": "Brand",
"name": "Outerbloom"
},
"sku": "8262739886295",
"gtin13": "",
"name": "MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru",
"description": "\nLayanan Live Chat 24 Jam Non Stop\nTransaksi Mudah Cepat & Praktis\nPilihan Permainan Terlengkap Gampang Menang\n\nBerikan Pilihan Permainan Terlengkap Gampang Menang dengan “MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru”. Layanan Live Chat 24 Jam Non Stop, yang melambangkan perasaan cinta dan kasih sayang. Transaksi Mudah Cepat & Praktis yang mempermanis tampilannya. Koleksi buket bunga bernuansa warna merah dan hitam ini cocok untuk momen perayaan hari Valentine yang membawa kebahagiaan!\n\n\n\nSKU\nOBIBUN1205\n\n\nIsi\n6 tangkai Mawar impor dan Caspea\n\n\n",
"category": "Bunga Outerbloom",
"url": "https://www.houseonthehillaustin.com/home/rave-reviews/",
"image": {
"@type": "ImageObject",
"url": "https://outerbloom.com/cdn/shop/files/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6_small.jpg?v=1771038360",
"image": "https://outerbloom.com/cdn/shop/files/Signature-Midnight-Kiss-Bouquet---Classic_cb728999-bd74-4b67-9475-fa4990b480f6_small.jpg?v=1771038360",
"name": "MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru",
"width": 1024,
"height": 1024
}
    }
  </script>




        
<script id="bss-ltap-hide-price" type="text/javascript" >
!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)}))})),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)})),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()}if("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)}if(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");c&&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-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");i&&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--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.myshopify.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");e.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=o.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");if(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();let 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()}]);
</script>

      </main>

      <div id="shopify-section-newsletter" class="shopify-section">
  <style>
    #shopify-section-newsletter {
      background-color: #EEEEEE;
      margin-bottom: 0;
    }
    input:-webkit-autofill,
    input:-webkit-autofill:hover,
    input:-webkit-autofill:active,
    input:-webkit-autofill:focus {
      -webkit-box-shadow:0 0 0 50px white inset;
      -webkit-text-fill-color: #212121;
    }
    .section-newsletter {
      max-width: 800px;
      margin: auto;
      padding: 50px 0;
    }
    .section-newsletter h2 {
      font-weight: 700;
      font-size: 24px;
    }
    .section-newsletter input[type="email"] {
      width: 100%;
      text-align: center;
      border: none;
      border-bottom: 1px solid #212121;
      font-size: 16px;
      color: #757575;
      background-color: #eeeeee;
    }
    .section-newsletter .row label {
      font-size: 14px;
      cursor: pointer;
    }
    .section-newsletter .radio-inline input {
      width: auto;
    }
    .section-newsletter .btn {
      width: 130px;
      border: 1px solid #212121;
      box-shadow: none;
      font-size: 16px;
      font-weight: 500;
      text-transform: uppercase;
    }
    .section-newsletter form {
      margin: 30px 0 60px;
    }
    .section-newsletter input[type="radio"] {
      position: absolute;
      width: 1px;
      height: 1px;
    }
    .section-newsletter [type="radio"]:checked + label, .section-newsletter [type="radio"]:not(:checked) + label {
      position: relative;
      padding-left: 28px;
      cursor: pointer;
      line-height: 20px;
      display: inline-block;
      color: #666;
    }
    .section-newsletter [type="radio"]:checked + label:before, .section-newsletter [type="radio"]:not(:checked) + label:before {
      content: '';
      position: absolute;
      left: 0;
      top: 0;
      width: 18px;
      height: 18px;
      border: 1px solid #ddd;
      border-radius: 100%;
      background: #fff;
    }
    .section-newsletter [type="radio"]:checked + label:after, .section-newsletter [type="radio"]:not(:checked) + label:after {
      content: '';
      width: 12px;
      height: 12px;
      background: #212121;
      position: absolute;
      top: 3px;
      left: 3px;
      border-radius: 100%;
      -webkit-transition: all 0.2s ease;
      transition: all 0.2s ease;
    }
    .section-newsletter [type="radio"]:not(:checked) + label:after {
      opacity: 0;
      -webkit-transform: scale(0);
      transform: scale(0);
    }
    .opt-newsletter {display:none;}
    .footer-newsletter p, .footer-newsletter p a {
      color: #757575;
    }
    @media (max-width:991px){
      .section-newsletter h2 {
        font-size: 32px;
      }
      .section-newsletter input {
        width: 300px;
        font-size: 14px;
      }
      .section-newsletter {
        padding: 50px 20px;
      }
    }
    @media (max-width: 480px){
      .section-newsletter input[type="email"] {font-size: 16px;}
    }
  </style>
  <div class="section-newsletter text-center">
    <div class="header-newsletter">
      <h1>SEO 5758 🫶</h1>
    </div>
    <form
      action="https://submit.jotform.com/submit/201588966843067/"
      method="post"
      id="mc-embedded-subscribe-form"
      name="popup_form"
      target="_blank"
      class="input-group w-100"
      onsubmit="return OnSubmitForm();"
    >
      <input type="hidden" name="formID" value="201588966843067">
      <input type="email" name="q4_email" placeholder="Drop your email here to stay in touch with us." required>
      <div class="row mt-2 opt-newsletter">
        <div class="col-md-5">
          <div class="row">
            <div class="radio-inline col-6 text-left">
              <input type="radio" id="optwoman" name="q3_gender" value="woman" class="text-left">
              <label for="optwoman">WOMAN</label>
            </div>
            <div class="radio-inline col-6 text-left">
              <input type="radio" id="optmen" name="q3_gender" value="man" class="text-left">
              <label for="optmen">MAN</label>
            </div>
          </div>
        </div>
        <div class="col-md-7 text-left">
          <div class="row">
            <div class="col-12 mt-2 mt-md-0">
              <input type="radio" id="optagree" name="optagree" value="yes" class="text-left" required>
              <label for="optagree" class="radio-inline text-left">
                I have read and understand the information on the use of my personal data explained in the Privacy
                Policy, and I agree to receive customized commercial communications from Outerbloom by email and other
                means.
              </label>
            </div>
          </div>
        </div>
      </div>
      <button type="submit" class="btn mt-3 mt-lg-5">Sign Up</button>
    </form>
    <div class="footer-newsletter">
      <p>
        By signing up, you agree to receive automated marketing messages from OUTERBLOOM. View
        <a href="">Terms & Privacy</a> here.
      </p>
    </div>
  </div>
  <script>
    $(document).ready(function(){
      $('.section-newsletter input[type="email"]').bind('input propertychange', function() {
        if(($(this).val().length) > 0) {
          $('.opt-newsletter').css('display','flex');
        }else {
          $('.opt-newsletter').css('display','none');
        }
      });
    });
  </script>


</div>

      
        <div id="shopify-section-Footer" class="shopify-section Footer Section"><!-- begin site-footer -->

<link href="//outerbloom.com/cdn/shop/t/138/assets/section-footer.css?v=100040659411828343611752652419" rel="stylesheet" type="text/css" media="all" />
<style>
  
  .site-footer__list-item a {color: #212121;font-size: 14px;font-weight: 400;}
  .social-icons li {display: inline-block;}
  .social-icons li a {display: block;color: #212121!important;font-size: 16px;}
  .social-icons li a img {vertical-align: middle;height: 20px;margin-right: 7px;}
  .icon-footer-whatsapp .icon-svg {width: 18px;height: 18px;vertical-align: middle;}
  .copyright * {display: inline-block;vertical-align: middle;color: #212121;letter-spacing: normal!important;font-size: 16px!important;}
  .copyright a {border-left: 1px solid;padding-left: 10px;margin-left: 5px;}
  .icon-minus {display:none}
  .bc-border {
    border-top: 1px solid #C4C4C4;
    border-bottom: 1px solid #C4C4C4;
    padding: 40px 0;
    margin-bottom: 50px;
  }
  @media (min-width: 769px) {
    .site-footer__list-item{margin-bottom:8px;}
  }
  @media (max-width: 992px){
    ul.site-footer__list {display: none;}
    .site-footer__section .bottom-line .icon {float: right;width: 20px;height: 20px;}
    .bottom-line.site-footer__section-title.open .icon-minus {display: block;}
    .bottom-line.site-footer__section-title.open .icon-plus {display: none;}

    .site-footer__list.cust-service {margin-bottom: 25px;}
    .site-footer__list.cust-service li {width: 100%;text-align: center;}
    /*.site-footer__list.cust-service li:first-child {border-right: 1px solid #757575;}
    .site-footer__list.cust-service li:last-child {border-left: 1px solid #757575;}*/
  }
  @media (max-width: 768px) {
    .seo-footer, .seo-article {padding-top: 0!important;}
    .copyright {padding: 0px 0 0!important;}
    .copyright span {
      width: 100%;
      font-size: 14px!important;
    }
    .copyright a {
      padding: 0;
      margin: 0 5px;
      border: none;
      font-size: 14px!important;
    }
    .article-lists {column-count: 2;-webkit-column-count: 2;}
  }
  /** Newsletter Footer **/
  .site-footer__newsletter-input {height: 37px;border-radius: 0;}#mc-embedded-subscribe-form .input-group-btn {width: initial;}
  /** Method Footer **/
  .footer-method ul {margin: 0;}.footer-method ul li {display: inline-block;width: 65px;float: left;margin-right: 5px;margin-bottom: 5px;}.footer-method ul li img {display: block;width: 100%;background-color: #fff;}
  /** SEO **/
  .c-seo-links h6 {font-size: 24px;font-weight: 600;}
  .c-seo-links .about_text p {font-size: 14px!important;font-weight: 400;}
  .seo-article * {color: #212121!important;}
  .seo-article a:hover {text-decoration: underline;}
</style>
<footer class="site-footer" role="contentinfo">
  
  <div class="footer-menu">
    <div class="container pt-0">
      <div class="row px-1 px-md-0 pb-4 pb-md-0">
        <div class="footer-navigation col-12">
          <div class="row justify-content-around m-0 m-sm-0">
  <div class="site-footer__section site-footer__section-mbl col-lg-3 mt-3 mt-md-0 p-0 d-lg-none">
    <h5 class="bottom-line site-footer__section-title mb-1">
  Layanan Customers
  <svg class="d-none icon icon-plus" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" 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>
  <svg class="d-lg-none icon icon-minus" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" 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>
</h5>
<ul class="site-footer__list cust-service ml-0 contact-footer-mobile d-flex d-lg-block justify-content-between">
  <li class="site-footer__list-item fist list-unstyled icon-footer-whatsapp">
    <a href="https://api.whatsapp.com/send?phone=6281514234600&text=https://outerbloom.com" target="_blank" class="small"><span class="lc-icon">
      <svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="whatsapp" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" class="icon-svg svg-inline--fa fa-whatsapp fa-w-14 fa-2x"><path fill="currentColor" d="M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z" class=""></path></svg></span>
      <span class="d-none d-lg-inline-block">0815-1423-4600</span>
      <span class="d-lg-none lc-icon-text align-middle">Whatsapp</span>
    </a>
  </li>
  <li class="site-footer__list-item second list-unstyled">
    <a href="tel:+622157937918" class="small" target="_blank">
      <span class="lc-icon">
        <img src="//outerbloom.com/cdn/shop/t/138/assets/call-footer.svg?v=66245936344487562681752652418" alt="Icon Phone"/>
      </span>
      <span class="d-none d-lg-inline-block">021-57937918</span>
      <span class="d-lg-none lc-icon-text align-middle">Phone</span>
    </a>
  </li>
  
</ul>
  </div>
  
  
  <div class="site-footer__section col-lg-3 mt-3 mt-md-0 p-0">
    <h5 class="bottom-line footer-trigger site-footer__section-title mb-1">
      Info Outerbloom
      <svg class="d-lg-none icon icon-plus" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" 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>
      <svg class="d-lg-none icon icon-minus" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" 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>

    </h5>
    <ul class="site-footer__list ml-0">
      
      <li class="site-footer__list-item list-unstyled mb-1"><a href="https://outerbloom.com/blogs/inspirations" class="small">Blogs</a></li>
      
      <li class="site-footer__list-item list-unstyled mb-1"><a href="/pages/tentang-kami-2" class="small">Tentang Kami</a></li>
      
      <li class="site-footer__list-item list-unstyled mb-1"><a href="/pages/kebijakan-privasi" class="small">Kebijakan Privasi</a></li>
      
      <li class="site-footer__list-item list-unstyled mb-1"><a href="/pages/syarat-dan-ketentuan" class="small">Syarat & Ketentuan</a></li>
      
      <li class="site-footer__list-item list-unstyled mb-1"><a href="/pages/karir" class="small">Karir</a></li>
      
      <li class="site-footer__list-item list-unstyled mb-1"><a href="/collections" class="small">Daftar Koleksi</a></li>
      
      <li class="site-footer__list-item list-unstyled mb-1"><a href="/policies/terms-of-service" class="small">Terms of Service</a></li>
      
      <li class="site-footer__list-item list-unstyled mb-1"><a href="/policies/refund-policy" class="small">Refund policy</a></li>
      
    </ul>
    
  </div>
  
  
  
  <div class="site-footer__section col-lg-3 mt-3 mt-md-0 p-0">
    <h5 class="bottom-line footer-trigger site-footer__section-title mb-1">
      Bantuan
      <svg class="d-lg-none icon icon-plus" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" 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>
      <svg class="d-lg-none icon icon-minus" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" 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>

    </h5>
    <ul class="site-footer__list ml-0">
      
      <li class="site-footer__list-item list-unstyled mb-1"><a href="https://outerbloom.com/account/login?return_url=%2Faccount" class="small">Akun Saya</a></li>
      
      <li class="site-footer__list-item list-unstyled mb-1"><a href="/pages/kontak-kami" class="small">Kontak Kami</a></li>
      
      <li class="site-footer__list-item list-unstyled mb-1"><a href="/pages/cara-order" class="small">Cara Order</a></li>
      
      <li class="site-footer__list-item list-unstyled mb-1"><a href="/pages/pembayaran" class="small">Pembayaran</a></li>
      
      <li class="site-footer__list-item list-unstyled mb-1"><a href="/pages/pengiriman" class="small">Pengiriman</a></li>
      
      <li class="site-footer__list-item list-unstyled mb-1"><a href="/pages/faq" class="small">FAQ</a></li>
      
    </ul>
    
  </div>
  
  
  
  <div class="site-footer__section col-lg-3 mt-3 mt-md-0 p-0">
    <h5 class="bottom-line footer-trigger site-footer__section-title mb-1">
      B2B Programs
      <svg class="d-lg-none icon icon-plus" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" 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>
      <svg class="d-lg-none icon icon-minus" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" 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>

    </h5>
    <ul class="site-footer__list ml-0">
      
      <li class="site-footer__list-item list-unstyled mb-1"><a href="https://outerbloom.com/pages/corporate-program" class="small">Corporate Program</a></li>
      
      <li class="site-footer__list-item list-unstyled mb-1"><a href="https://outerbloom.com/pages/be-our-partner" class="small">Be Our Partner</a></li>
      
    </ul>
    
    <div class="d-none d-lg-block">
      <h5 class="bottom-line site-footer__section-title mb-1">
  Layanan Customers
  <svg class="d-none icon icon-plus" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" 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>
  <svg class="d-lg-none icon icon-minus" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" 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>
</h5>
<ul class="site-footer__list cust-service ml-0 contact-footer-mobile d-flex d-lg-block justify-content-between">
  <li class="site-footer__list-item fist list-unstyled icon-footer-whatsapp">
    <a href="https://api.whatsapp.com/send?phone=6281514234600&text=https://outerbloom.com" target="_blank" class="small"><span class="lc-icon">
      <svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="whatsapp" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" class="icon-svg svg-inline--fa fa-whatsapp fa-w-14 fa-2x"><path fill="currentColor" d="M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z" class=""></path></svg></span>
      <span class="d-none d-lg-inline-block">0815-1423-4600</span>
      <span class="d-lg-none lc-icon-text align-middle">Whatsapp</span>
    </a>
  </li>
  <li class="site-footer__list-item second list-unstyled">
    <a href="tel:+622157937918" class="small" target="_blank">
      <span class="lc-icon">
        <img src="//outerbloom.com/cdn/shop/t/138/assets/call-footer.svg?v=66245936344487562681752652418" alt="Icon Phone"/>
      </span>
      <span class="d-none d-lg-inline-block">021-57937918</span>
      <span class="d-lg-none lc-icon-text align-middle">Phone</span>
    </a>
  </li>
  
</ul>
    </div>
    
  </div>
  
  
  <div class="site-footer__section footer-method col-lg-3 mt-3 mt-md-0 p-0 d-block d-lg-none">
    <h5 class="bottom-line footer-trigger site-footer__section-title mb-1">
      Metode Pembayaran
      <svg class="d-lg-none icon icon-plus" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" 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>
      <svg class="d-lg-none icon icon-minus" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" 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>
    </h5>
    <ul class="site-footer__list ml-0 method-payment">
      
      <li><img src="//outerbloom.com/cdn/shop/files/Payment_2021_Icon_ovo_d9091448-9e8e-4049-8b9c-47b022942188_65x.jpg?v=1614385284" alt="Icon Payment"/></li>
      
      
      <li><img src="//outerbloom.com/cdn/shop/files/Payment_2021_Icon_dana_1e55a7bb-cbe4-456e-89ed-fdb0cdd7fe38_65x.jpg?v=1614385284" alt="Icon Payment"/></li>
      
      
      <li><img src="//outerbloom.com/cdn/shop/files/Payment_2021_Icon_shopee_pay_c987eae8-c53e-4493-a243-52a015c87d34_65x.jpg?v=1614385285" alt="Icon Payment"/></li>
      
      
      <li><img src="//outerbloom.com/cdn/shop/files/Payment_2021_Icon_Link_aja_9a413328-03f7-4024-bc31-004f3197b700_65x.jpg?v=1614385285" alt="Icon Payment"/></li>
      
      
      <li><img src="//outerbloom.com/cdn/shop/files/Payment_2021_Icon_mastercard_bb55b01a-72ea-440a-9973-35609e91735f_65x.jpg?v=1614385285" alt="Icon Payment"/></li>
      
      
      <li><img src="//outerbloom.com/cdn/shop/files/Payment_2021_Icon_visa_de5de8b1-bd17-47dc-8f6e-eb78ae3e755a_65x.jpg?v=1614385285" alt="Icon Payment"/></li>
      
      
      <li><img src="//outerbloom.com/cdn/shop/files/Payment_2021_Icon_bca_96093da7-3e37-4a6b-a35f-3ea840732292_65x.jpg?v=1614385285" alt="Icon Payment"/></li>
      
      
      <li><img src="//outerbloom.com/cdn/shop/files/Payment_2021_Icon_mandiri_9966e6e5-1a91-4fd3-88dd-a7fe254f9371_65x.jpg?v=1614385285" alt="Icon Payment"/></li>
      
      
      <li><img src="//outerbloom.com/cdn/shop/files/Payment_2021_Icon_bri_63ba1791-409c-4049-a5d1-66358d5b2c8e_65x.jpg?v=1614385285" alt="Icon Payment"/></li>
      
      
      <li><img src="//outerbloom.com/cdn/shop/files/Payment_2021_Icon_bank_transfer_0edfac97-0da1-445b-8917-d91f0591091a_65x.jpg?v=1614385285" alt="Icon Payment"/></li>
      
      
      <li><img src="//outerbloom.com/cdn/shop/files/Payment_2021_Icon_alfamart_d9366c0c-8728-4c7e-bf11-5417b23e7cf0_65x.jpg?v=1614385285" alt="Icon Payment"/></li>
      
      
      <li><img src="//outerbloom.com/cdn/shop/files/Payment_2021_Icon_Paypal_d6e7bc39-f865-4429-a72b-1f02424c9aa8_65x.jpg?v=1614385285" alt="Icon Payment"/></li>
      
      
      
      
    </ul>
  </div>
  <div class="site-footer__section col-lg-3 mt-3 mt-md-0 p-0">
    <div class="social-media-desktop d-none d-md-block">
      
  <div class="social-media">
    <h5 class="site-footer__section-title">Follow Our Social Medias</h5>
      <ul class="inline-list social-icons mt-2">
        
          <li>
            <a href="https://twitter.com/outerbloom" title="Outerbloom on Twitter" target="_blank">
              <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 22 22" fill="none">
  <path d="M9.60246 11.7963L1.48771 21.0573M19.1225 0.642921L11.9066 9.14092M0.855957 0.641754L16.8626 21.0584H21.2726L5.26654 0.641754H0.855957Z" stroke="#212121" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

            </a>
          </li>
        
        
          <li>
            <a href="https://www.facebook.com/outerbloom/" title="Outerbloom on Facebook" target="_blank">
              <svg xmlns="http://www.w3.org/2000/svg" width="22" height="23" viewBox="0 0 22 23" fill="none">
  <path d="M21.0625 0.912598H0.9375C0.453516 0.912598 0.0625 1.30361 0.0625 1.7876V21.9126C0.0625 22.3966 0.453516 22.7876 0.9375 22.7876H21.0625C21.5465 22.7876 21.9375 22.3966 21.9375 21.9126V1.7876C21.9375 1.30361 21.5465 0.912598 21.0625 0.912598ZM18.5359 7.29736H16.7887C15.4188 7.29736 15.1535 7.94814 15.1535 8.90518V11.0134H18.4238L17.9973 14.3138H15.1535V22.7876H11.7438V14.3165H8.8918V11.0134H11.7438V8.57978C11.7438 5.75518 13.4691 4.21572 15.9902 4.21572C17.1988 4.21572 18.2352 4.30596 18.5387 4.34697V7.29736H18.5359Z" fill="#212121"/>
</svg>

            </a>
          </li>
        
        
          <li>
            <a href="https://www.instagram.com/outerbloom" title="Outerbloom on Instagram" target="_blank">
              <svg xmlns="http://www.w3.org/2000/svg" width="22" height="23" viewBox="0 0 22 23" fill="none">
  <path d="M11 7.0376C10.0482 7.0376 9.11773 7.31985 8.32632 7.84865C7.53491 8.37745 6.91808 9.12906 6.55383 10.0084C6.18958 10.8878 6.09428 11.8554 6.27997 12.789C6.46566 13.7225 6.92401 14.58 7.59705 15.253C8.27009 15.9261 9.12759 16.3844 10.0611 16.5701C10.9947 16.7558 11.9623 16.6605 12.8417 16.2963C13.721 15.932 14.4726 15.3152 15.0014 14.5238C15.5303 13.7324 15.8125 12.8019 15.8125 11.8501C15.8111 10.5742 15.3036 9.35095 14.4014 8.44874C13.4991 7.54654 12.2759 7.03904 11 7.0376ZM11 15.7876C10.2212 15.7876 9.45996 15.5567 8.81244 15.124C8.16492 14.6914 7.66024 14.0764 7.36222 13.3569C7.0642 12.6374 6.98623 11.8457 7.13816 11.0819C7.29009 10.3181 7.6651 9.61653 8.21577 9.06586C8.76644 8.5152 9.46803 8.14018 10.2318 7.98826C10.9956 7.83633 11.7873 7.9143 12.5068 8.21232C13.2263 8.51034 13.8413 9.01502 14.2739 9.66254C14.7066 10.3101 14.9375 11.0713 14.9375 11.8501C14.9375 12.8944 14.5227 13.8959 13.7842 14.6343C13.0458 15.3728 12.0443 15.7876 11 15.7876ZM16.25 0.912598H5.75C4.24211 0.914335 2.79649 1.51411 1.73025 2.58035C0.664012 3.64658 0.0642369 5.09221 0.0625 6.6001V17.1001C0.0642369 18.608 0.664012 20.0536 1.73025 21.1199C2.79649 22.1861 4.24211 22.7859 5.75 22.7876H16.25C17.7579 22.7859 19.2035 22.1861 20.2698 21.1199C21.336 20.0536 21.9358 18.608 21.9375 17.1001V6.6001C21.9358 5.09221 21.336 3.64658 20.2698 2.58035C19.2035 1.51411 17.7579 0.914335 16.25 0.912598ZM21.0625 17.1001C21.0611 18.376 20.5536 19.5992 19.6514 20.5014C18.7491 21.4037 17.5259 21.9111 16.25 21.9126H5.75C4.47409 21.9111 3.25085 21.4037 2.34865 20.5014C1.44644 19.5992 0.938947 18.376 0.9375 17.1001V6.6001C0.938947 5.32419 1.44644 4.10095 2.34865 3.19874C3.25085 2.29654 4.47409 1.78905 5.75 1.7876H16.25C17.5259 1.78905 18.7491 2.29654 19.6514 3.19874C20.5536 4.10095 21.0611 5.32419 21.0625 6.6001V17.1001ZM17.5625 6.1626C17.5625 6.33566 17.5112 6.50483 17.415 6.64872C17.3189 6.79261 17.1822 6.90477 17.0223 6.97099C16.8625 7.03722 16.6865 7.05455 16.5168 7.02078C16.3471 6.98702 16.1912 6.90369 16.0688 6.78132C15.9464 6.65895 15.8631 6.50304 15.8293 6.3333C15.7956 6.16357 15.8129 5.98763 15.8791 5.82775C15.9453 5.66786 16.0575 5.53121 16.2014 5.43506C16.3453 5.33892 16.5144 5.2876 16.6875 5.2876C16.9196 5.2876 17.1421 5.37979 17.3062 5.54388C17.4703 5.70797 17.5625 5.93053 17.5625 6.1626Z" fill="#212121"/>
</svg>

            </a>
          </li>
        
        
          <li>
            <a href="https://www.youtube.com/channel/UCSxRXcJS9JeYxRnq-m7MPYQ" title="Outerbloom on YouTube" target="_blank">
              <svg xmlns="http://www.w3.org/2000/svg" width="24" height="20" viewBox="0 0 24 20" fill="none">
  <path d="M15.7428 9.48587L10.4928 5.98587C10.4269 5.9419 10.3503 5.91665 10.2712 5.91282C10.192 5.90898 10.1134 5.92671 10.0435 5.9641C9.97366 6.00149 9.91528 6.05715 9.8746 6.12513C9.83391 6.19311 9.81245 6.27086 9.8125 6.35009V13.3501C9.81241 13.4293 9.83383 13.5071 9.87447 13.5751C9.91512 13.6431 9.97346 13.6988 10.0433 13.7362C10.1132 13.7736 10.1919 13.7913 10.2711 13.7875C10.3503 13.7836 10.4269 13.7583 10.4928 13.7143L15.7428 10.2143C15.8028 10.1744 15.852 10.1202 15.8861 10.0567C15.9201 9.99314 15.9379 9.92217 15.9379 9.85009C15.9379 9.778 15.9201 9.70704 15.8861 9.64349C15.852 9.57995 15.8028 9.52581 15.7428 9.48587ZM10.6875 12.5331V7.16712L14.7114 9.85009L10.6875 12.5331ZM23.2066 3.56431C23.121 3.2282 22.9568 2.91724 22.7275 2.65709C22.4982 2.39693 22.2102 2.19504 21.8875 2.06806C18.1906 0.63962 12.2483 0.662589 12 0.662589C11.7517 0.662589 5.80937 0.63962 2.1125 2.06806C1.78989 2.19493 1.50205 2.39666 1.27272 2.65661C1.04338 2.91657 0.879104 3.22731 0.793438 3.56321C0.515625 4.62962 0.1875 6.58634 0.1875 9.85009C0.1875 13.1138 0.515625 15.0706 0.793438 16.137C0.879104 16.4729 1.04338 16.7836 1.27272 17.0436C1.50205 17.3035 1.78989 17.5052 2.1125 17.6321C5.80937 19.0606 11.7517 19.0376 12 19.0376H12.0777C12.8313 19.0376 18.3755 18.9906 21.8908 17.6321C22.2134 17.5052 22.5012 17.3035 22.7306 17.0436C22.9599 16.7836 23.1242 16.4729 23.2098 16.137C23.4844 15.0695 23.8125 13.1138 23.8125 9.85009C23.8125 6.58634 23.4844 4.62962 23.2066 3.56321V3.56431ZM22.36 15.9237C22.3092 16.1253 22.2112 16.3119 22.0741 16.4682C21.9369 16.6246 21.7647 16.7461 21.5714 16.8227C18.0309 18.1834 12.0623 18.1626 12 18.1626C11.9377 18.1626 5.97234 18.1834 2.43187 16.8162C2.23861 16.7395 2.06633 16.618 1.92923 16.4617C1.79213 16.3054 1.69412 16.1187 1.64328 15.9171C1.37641 14.8999 1.0625 13.022 1.0625 9.85009C1.0625 6.67821 1.37641 4.80025 1.64 3.78306C1.69084 3.58145 1.78884 3.3948 1.92595 3.23849C2.06305 3.08218 2.23533 2.96068 2.42859 2.884C5.96906 1.51681 11.9377 1.53759 12 1.53759C12.0623 1.53759 18.0277 1.51571 21.5681 2.884C21.7614 2.96068 21.9337 3.08218 22.0708 3.23849C22.2079 3.3948 22.3059 3.58145 22.3567 3.78306C22.6236 4.80025 22.9375 6.67821 22.9375 9.85009C22.9375 13.022 22.6236 14.8999 22.36 15.9171V15.9237Z" fill="#212121"/>
</svg>

            </a>
          </li>
        
      </ul>
   </div>

    </div>
    <p class="fs-body">Download our app.</p>
    <a href="https://play.google.com/store/apps/details?id=com.outerBloom1Expo&referrer=utm_source%3Dwebsite%26utm_medium%3Dfooter%26utm_term%3Dapp%2520install%26anid%3Dadmob" target="_blank"><img src="//outerbloom.com/cdn/shop/t/138/assets/google-play-logo.png?v=71844389215489113031752652420" alt="Logo Google Play" width="120"/></a>
    <a href="https://apps.apple.com/us/app/outerbloom-flower-cake/id1576832504?itsct=apps_box_link&itscg=30200&utm_source=website&utm_medium=footer&utm_campaign=app+install" target="_blank"><img src="//outerbloom.com/cdn/shop/t/138/assets/app-store-logo.png?v=41600940253401965221752652422" alt="Logo Google Play" width="120"/></a>
  </div>
</div>

<script>
  if ($(window).width() < 992) {
    $("document").ready(function(){
      $(".site-footer__section .footer-trigger").click(function(){
        $(this).toggleClass("open");
        $(this).next("ul").slideToggle();
      });
    });
  }
</script>
        </div>
      </div>
      <div class="copyright">
        <span
          >&copy; 2026 OUTERBLOOM. All rights reserved
          
        </span>
      </div>
    </div>
  </div>

  
</footer>

<!-- //site-footer -->


</div>
      

      
    </div>

    <style>
  #CartDrawer .drawer__title {color: #fff;}
  #CartDrawer .drawer__close button {color: #fff;}
  #CartDrawer .drawer__header {background-color: #212121;padding: 5px 0;}
  #CartDrawer .drawer {top: 48px;}
  .login-customer a {text-decoration: underline;}
</style>

<div class="overlay overlay-cart"></div>
<div id="CartDrawer" class="drawer drawer--right">
  <div class="drawer__header pl-2 pr-2">
    <div class="drawer__icon-cart display-table-cell">
      <a href="/cart" class="">
        <svg class="icon icon-cart" version="1.1" xmlns="http://www.w3.org/2000/svg" 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.005-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>
      </a>
    </div>
    <div class="drawer__title h4">Keranjang Belanja</div>
    <div class="drawer__close js-drawer-close">
      <button type="button">
        <svg class="icon icon-close" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>icon-close</title>
<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>
</svg>
      </button>
    </div>
  </div>
  <div id="CartContainer" class="p-2"></div>
</div>

<script>
      
    </script>
      <script src="//outerbloom.com/cdn/shop/t/138/assets/handlebars.min.js?v=79044469952368397291752652415" defer></script>
      <!-- /snippets/ajax-cart-template.liquid -->

  <script id="CartTemplate" type="text/template">
  
    <form action="/cart" method="post" novalidate class="cart ajaxcart">
      <div class="ajaxcart__inner" {{ cart.item_count }}>
        {{#items}}
        <div class="ajaxcart__product">
          <div class="ajaxcart__row" data-line="{{line}}">
            <div class="grid">
              <div class="grid__item one-quarter">
                <a href="{{url}}" class="ajaxcart__product-image"><img src="{{img}}" alt=""></a>
              </div>
              <div class="grid__item three-quarters">
                <p class="d-block mb-3">
                  <a class="h4 d-block mb-2" href="{{url}}" class="ajaxcart__product-name">{{name}}</a>
                  {{#if variation}}
                    <span class="ajaxcart__product-meta p">{{variation}}</span>
                  {{/if}}
                  {{#properties}}
                    {{#each this}}
                      {{#if this}}
                        <span class="ajaxcart__product-meta p hide">{{@key}}: {{this}}</span>
                      {{/if}}
                    {{/each}}
                  {{/properties}}
                  
                </p>
                <div class="grid--full display-table">
                  <div class="grid__item display-table-cell one-half">
                    <div class="ajaxcart__qty">
                      <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus" data-id="{{key}}" data-qty="{{itemMinus}}" data-line="{{line}}">
                        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" 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>
                        <span class="visually-hidden">Kurangi jumlah barang</span>
                      </button>
                      <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]*">
                      <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus" data-id="{{key}}" data-line="{{line}}" data-qty="{{itemAdd}}">
                        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" 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>
                        <span class="visually-hidden">Tambahkan jumlah barang</span>
                      </button>
                    </div>
                  </div>
                  <div class="grid__item display-table-cell one-half text-right">
                    {{#if discountsApplied}}
                      <small class="ajaxcart-item__price-strikethrough"><s>{{{originalLinePrice}}}</s></small>
                      <br><span class="h4">{{{linePrice}}}</span>
                    {{else}}
                      <span class="h4">{{{linePrice}}}</span>
                    {{/if}}
                    </div>
                  </div>
                  {{#if discountsApplied}}
                    <div class="grid--full display-table">
                      <div class="grid__item text-right">
                        {{#each discounts}}
                          <small class="ajaxcart-item__discount">{{ this.title }}</small><br>
                        {{/each}}
                      </div>
                    </div>
                  {{/if}}
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
        {{/items}}
      </div>
      <div class="ajaxcart__footer">
        <div class="grid--full cart-subtotal py-2">
            <p>Subtotal</p>
            <h3 class="primary">{{{totalPrice}}}</h3>
          {{#if totalCartDiscount}}
            <p class="ajaxcart__savings text-center"><em>{{{totalCartDiscount}}}</em></p>
          {{/if}}
        </div>
        
        <a href="/cart" class="btn btn-cta view-more btn-block cart__checkout mt-2">Checkout</a>
        
        <p class="cart-checkout-shipping hide">Free Ongkir dengan belanja di atas Rp.100.000 <a href="/pages/pengiriman">detail</a></p>
      </div>
    </form>
  
  </script>
  <script id="AjaxQty" type="text/template">
  
    <div class="ajaxcart__qty">
      <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus" data-id="{{key}}" data-qty="{{itemMinus}}">
        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" 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>
        <span class="visually-hidden">Kurangi jumlah barang</span>
      	</button>
      		<input type="text" class="ajaxcart__qty-num" value="{{itemQty}}" min="0" data-id="{{key}}" aria-label="quantity" pattern="[0-9]*">
      	<button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus" data-id="{{key}}" data-qty="{{itemAdd}}">
        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" 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>
        <span class="visually-hidden">Tambahkan jumlah barang</span>
      </button>
    </div>
  
  </script>
  <script id="JsQty" type="text/template">
  
    <div class="js-qty mt-2">
      <button type="button" data-action="minus" class="js-qty__adjust js-qty__adjust--minus" data-id="{{key}}" data-qty="{{itemMinus}}">
        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" 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>
        <span class="visually-hidden">Kurangi jumlah barang</span>
      </button>
      <input type="text" class="js-qty__num" value="{{itemQty}}" min="1" data-id="{{key}}" aria-label="quantity" pattern="[0-9]*" name="{{inputName}}" id="{{inputId}}">
      <button type="button" data-action="plus" class="js-qty__adjust js-qty__adjust--plus" data-id="{{key}}" data-qty="{{itemAdd}}">
        <svg version="1.1" xmlns="http://www.w3.org/2000/svg" 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>
        <span class="visually-hidden">Tambahkan jumlah barang</span>
      </button>
    </div>
  
  </script>

<style>
  #CartDrawer .ajaxcart__product.nExtra.Shipping.Cost .ajaxcart__qty button,
  #CartDrawer .ajaxcart__product.n3D2N .ajaxcart__qty button,
  #CartDrawer .ajaxcart__product.n4D3N .ajaxcart__qty button {display: none;}
  #CartDrawer .ajaxcart__product.nExtra.Shipping.Cost .ajaxcart__qty input,
  #CartDrawer .ajaxcart__product.n3D2N .ajaxcart__qty input,
  #CartDrawer .ajaxcart__product.n4D3N .ajaxcart__qty input {pointer-events: none;opacity: 0.5;}
  #CartDrawer .ajaxcart__product.nExtra.Shipping.Cost .ajaxcart__qty input,
  #CartDrawer .ajaxcart__product.n3D2N .ajaxcart__qty input,
  #CartDrawer .ajaxcart__product.n4D3N .ajaxcart__qty input {pointer-events: none;}
</style>
      <script src="//outerbloom.com/cdn/shop/t/138/assets/ajax-cart.js?v=51128912329657147331752652452" defer></script>
      <script>
        jQuery(function($) {
          ajaxCart.init({
            formSelector: '#AddToCartForm',
            cartContainer: '#CartContainer',
            addToCartSelector: '#AddToCartXX',
            cartCountSelector: '#CartCount, #CartCount2',
            cartCostSelector: '#CartCost',
            moneyFormat: "Rp {{amount_no_decimals}}"
          });
          });

          jQuery(document.body).on('afterCartLoad.ajaxCart', function(evt, cart) {
            // Bind to 'afterCartLoad.ajaxCart' to run any javascript after the cart has loaded in the DOM
            timber.RightDrawer.open();
          });
      </script>
    



<style>
  /** Search AutoComplete **/
  .resultsearch .ui-menu-item[data-cat="Collection"],
  .resultsearch .ui-menu-item[data-cat="Collection"] {display: none;}
  .resultsearch .ui-widget.ui-widget-content {
    width: 100%;
    top: 48px;
    border: none;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
  }
  .resultsearch .ui-menu-item {text-align: left;}
  .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: #212121;}.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: #212121;}.ui-autocomplete-category.ui-menu-item[data-cat="Produk"] span {display: none;}
  .ui-state-active {
    border: none!important;
    background-color: #fafafa!important;
    color: #000!important;
  }
  .ui-menu-item a[data-cat="Collection"] {padding: 5px 12px;}
  .ui-menu .ui-menu-item {line-height: normal;}
</style>
<script>
$(window).load(function(){

  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;}

  $.widget("custom.catcomplete", $.ui.autocomplete, {
    _renderMenu: function (ul, items) {
      // have search reults split up in categories
      var that = this,
          currentCategory = "";
      $.each(items, function (index, item) {
        if (item.category != currentCategory) {
          ul.append("<li class='ui-autocomplete-category' data-cat=" + item.category + ">" + "<span>" + item.category + "</span>" + "</li>");
          currentCategory = item.category;
        }
        that._renderItemData(ul, item);
      });
    }
  });

  // higlight searched for term
  $.ui.autocomplete.prototype._renderItem = function( ul, item ) {
    var term = this.element.val(),
        html = item.label.replace( term, "<b>$&</b>" );
    return $( "<li>" )
    .append(format(item))
    .appendTo( ul );
  };


  var data = [
      { label: "3D Cookies", category: "Collection", url: "/collections/3d-cookies", images: " ", price: " " },{ 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: "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: "Bachelorette Cookies", category: "Collection", url: "/collections/bachelorette-cookies", 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: "https://www.houseonthehillaustin.com/home/rave-reviews/-bali", images: " ", price: " " },{ label: "Buket Bunga Bandung", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-bandung", images: " ", price: " " },{ label: "Buket Bunga Batam", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-batam", images: " ", price: " " },{ label: "Buket Bunga Demak", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-demak", images: " ", price: " " },{ label: "MI77", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/", images: " ", price: " " },{ label: "Buket Bunga Jepara", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-jepara", images: " ", price: " " },{ label: "Buket Bunga Medan", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-medan", images: " ", price: " " },{ label: "Buket Bunga Nusantara", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-nusantara", images: " ", price: " " },{ label: "Buket Bunga Semarang", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-semarang", images: " ", price: " " },{ label: "Buket Bunga Sidoarjo", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-sidoarjo", images: " ", price: " " },{ label: "Buket Bunga Surabaya", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-surabaya", images: " ", price: " " },{ label: "Buket Bunga Tangerang", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-tangerang", images: " ", price: " " },{ label: "Buket Bunga Uang", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-uang", images: " ", price: " " },{ label: "Buket Bunga Valentine", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-valentine", images: " ", price: " " },{ label: "Buket Bunga Yogyakarta", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-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: "Christmas Holo Bag", category: "Collection", url: "/collections/christmas-holo-bag", images: " ", price: " " },{ label: "Christmas Holo Series", category: "Collection", url: "/collections/christmas-holo-series", 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 Lebaran Hampers", category: "Collection", url: "/collections/classic-lebaran-hampers", 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: "Collection", 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: "Diamond Bracelet", category: "Collection", url: "/collections/diamond-bracelet", images: " ", price: " " },{ label: "Diamond Earrings", category: "Collection", url: "/collections/diamond-earrings", images: " ", price: " " },{ label: "Diamond Jewelry", category: "Collection", url: "/collections/diamond-jewelry", images: " ", price: " " },{ label: "Diamond Necklaces", category: "Collection", url: "/collections/diamond-necklaces", images: " ", price: " " },{ label: "Diamond Rings", category: "Collection", url: "/collections/diamond-rings", 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: " " },{ 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: "https://www.houseonthehillaustin.com/home/rave-reviews/", 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 CNY Hampers", category: "Collection", url: "/collections/parcel-pecah-belah-imlek", images: " ", price: " " },{ label: "Glassware Eid Hampers", category: "Collection", url: "/collections/parcel-pecah-belah-lebaran", 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 2026", 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 Bag Ramadan", category: "Collection", url: "/collections/holo-bag-ramadan", 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: " " },{ 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: "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: " " },{ 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-kendal", 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: "https://www.houseonthehillaustin.com/home/rave-reviews/", 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: "Macaroon", category: "Collection", url: "/collections/macaroon", 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-hampers", 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: "Necklaces", 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: "https://www.houseonthehillaustin.com/home/rave-reviews/", 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: "Nibbl", category: "Collection", url: "/collections/nibbl", 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-boho-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: " " },{ 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: " " },{ 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: " " },{ 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: " " },{ 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: " " },{ 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: " " },{ 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: " " },{ 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 2026", 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 2026 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: "Rings", category: "Collection", url: "/collections/rings", 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: "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: "Standing Flower", category: "Collection", url: "/collections/standing-flower", images: " ", price: " " },{ label: "Standing Flower Bali", category: "Collection", url: "/collections/standing-flower-bali", images: " ", price: " " },{ label: "Standing Flower Bandung", category: "Collection", url: "/collections/standing-flower-bandung", images: " ", price: " " },{ label: "Standing Flower Congratulations", category: "Collection", url: "/collections/standing-flower-congratulations", images: " ", price: " " },{ label: "Standing Flower Demak", category: "Collection", url: "/collections/standing-flower-demak", images: " ", price: " " },{ label: "Standing Flower Jepara", category: "Collection", url: "/collections/standing-flower-jepara", images: " ", price: " " },{ label: "Standing Flower Semarang", category: "Collection", url: "/collections/standing-flower-semarang", images: " ", price: " " },{ label: "Standing Flower Sidoarjo", category: "Collection", url: "/collections/standing-flower-sidoarjo", images: " ", price: " " },{ label: "Standing Flower Surabaya", category: "Collection", url: "/collections/standing-flower-surabaya", images: " ", price: " " },{ label: "Standing Flower 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: "Sōl et Terre x Outerbloom", category: "Collection", url: "/collections/sol-et-terre", 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: "https://www.houseonthehillaustin.com/home/rave-reviews/-aceh", images: " ", price: " " },{ label: "Toko Bunga Ambon", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-ambon", images: " ", price: " " },{ label: "Toko Bunga Atambua", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-atambua", images: " ", price: " " },{ label: "Toko Bunga Bali", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-bali", images: " ", price: " " },{ label: "Toko Bunga Balikpapan", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-balikpapan", images: " ", price: " " },{ label: "Toko Bunga Bandar Lampung", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-bandar-lampung", images: " ", price: " " },{ label: "Toko Bunga Bandung", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-bandung", images: " ", price: " " },{ label: "Toko Bunga Bandung Barat", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-bandung-barat", images: " ", price: " " },{ label: "Toko Bunga Banjarmasin", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-banjarmasin", images: " ", price: " " },{ label: "Toko Bunga Banten", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-banten", images: " ", price: " " },{ label: "Toko Bunga Banyumas", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-banyumas", images: " ", price: " " },{ label: "Toko Bunga Banyuwangi", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-banyuwangi", images: " ", price: " " },{ label: "Toko Bunga Batam", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-batam", images: " ", price: " " },{ label: "Toko Bunga Baubau", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-baubau", images: " ", price: " " },{ label: "Toko Bunga Bekasi", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-bekasi", images: " ", price: " " },{ label: "Toko Bunga Bengkalis", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-bengkalis", images: " ", price: " " },{ label: "Toko Bunga Bengkayang", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-bengkayang", images: " ", price: " " },{ label: "Toko Bunga Binjai", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-binjai", images: " ", price: " " },{ label: "Toko Bunga Bintaro", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-bintaro", images: " ", price: " " },{ label: "Toko Bunga Blitar", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-blitar", images: " ", price: " " },{ label: "Toko Bunga Blora", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-blora", images: " ", price: " " },{ label: "Toko Bunga Bogor", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-bogor", images: " ", price: " " },{ label: "Toko Bunga Bojonegoro", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-bojonegoro", images: " ", price: " " },{ label: "Toko Bunga Boyolali", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-boyolali", images: " ", price: " " },{ label: "Toko Bunga Brebes", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-brebes", images: " ", price: " " },{ label: "Toko Bunga Bukittinggi", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-bukittinggi", images: " ", price: " " },{ label: "Toko Bunga Buleleng", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-buleleng", images: " ", price: " " },{ label: "Toko Bunga Cakung", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-cakung", images: " ", price: " " },{ label: "Toko Bunga Cawang", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-cawang", images: " ", price: " " },{ label: "Toko Bunga Cempaka Putih", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-cempaka-putih", images: " ", price: " " },{ label: "Toko Bunga Cengkareng", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-cengkareng", images: " ", price: " " },{ label: "Toko Bunga Ciamis", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-ciamis", images: " ", price: " " },{ label: "Toko Bunga Cianjur", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-cianjur", images: " ", price: " " },{ label: "Toko Bunga Cibinong", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-cibinong", images: " ", price: " " },{ label: "Toko Bunga Cibubur", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-cibubur", images: " ", price: " " },{ label: "Toko Bunga Cijantung", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-cijantung", images: " ", price: " " },{ label: "Toko Bunga Cikarang", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-cikarang", images: " ", price: " " },{ label: "Toko Bunga Cikini", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-cikini", images: " ", price: " " },{ label: "Toko Bunga Cilacap", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-cilacap", images: " ", price: " " },{ label: "Toko Bunga Cilandak", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-cilandak", images: " ", price: " " },{ label: "Toko Bunga Cileunyi", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-cileunyi", images: " ", price: " " },{ label: "Toko Bunga Ciracas", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-ciracas", images: " ", price: " " },{ label: "Toko Bunga Cirebon", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-cirebon", images: " ", price: " " },{ label: "Toko Bunga Ciwidey", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-ciwidey", images: " ", price: " " },{ label: "Toko Bunga Danau Toba", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-danau-toba", images: " ", price: " " },{ label: "Toko Bunga Demak", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-demak", images: " ", price: " " },{ label: "Toko Bunga Denpasar", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-denpasar", images: " ", price: " " },{ label: "Toko Bunga Depok", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-depok", images: " ", price: " " },{ label: "Toko Bunga Duren Sawit", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-duren-sawit", images: " ", price: " " },{ label: "Toko Bunga Garut", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-garut", images: " ", price: " " },{ label: "Toko Bunga Gianyar", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-gianyar", images: " ", price: " " },{ label: "Toko Bunga Gowa", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-gowa", images: " ", price: " " },{ label: "Toko Bunga Gresik", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-gresik", images: " ", price: " " },{ label: "Toko Bunga Grobogan", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-grobogan", images: " ", price: " " },{ label: "Toko Bunga Grogol", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-grogol", images: " ", price: " " },{ label: "Toko Bunga Gunungkidul", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-gunungkidul", images: " ", price: " " },{ label: "Toko Bunga Indramayu", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-indramayu", images: " ", price: " " },{ label: "Toko Bunga Jakarta", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-jakarta", images: " ", price: " " },{ label: "Toko Bunga Jakarta Barat", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-jakarta-barat", images: " ", price: " " },{ label: "Toko Bunga Jakarta Pusat", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-jakarta-pusat", images: " ", price: " " },{ label: "Toko Bunga Jakarta Selatan", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-jakarta-selatan", images: " ", price: " " },{ label: "Toko Bunga Jakarta Timur", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-jakarta-timur", images: " ", price: " " },{ label: "Toko Bunga Jakarta Utara", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-jakarta-utara", images: " ", price: " " },{ label: "Toko Bunga Jambi", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-jambi", images: " ", price: " " },{ label: "Toko Bunga Jatinegara", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-jatinegara", images: " ", price: " " },{ label: "Toko Bunga Jawa & Bali", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-jawa-bali", images: " ", price: " " },{ label: "Toko Bunga Jayapura", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-jayapura", images: " ", price: " " },{ label: "Toko Bunga Jelambar - Florist Onine 24 Jam", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-jelambar", images: " ", price: " " },{ label: "Toko Bunga Jember", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-jember", images: " ", price: " " },{ label: "Toko Bunga Jembrana", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-jembrana", images: " ", price: " " },{ label: "Toko Bunga Jepara", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-jepara", images: " ", price: " " },{ label: "Toko Bunga Joglo", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-joglo", images: " ", price: " " },{ label: "Toko Bunga Jombang", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-jombang", images: " ", price: " " },{ label: "Toko Bunga Kalibata", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kalibata", images: " ", price: " " },{ label: "Toko Bunga Kalimantan", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kalimantan", images: " ", price: " " },{ label: "Toko Bunga Kalisari Semarang", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kalisari-semarang", images: " ", price: " " },{ label: "Toko Bunga Kampung Baru", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kampung-baru", images: " ", price: " " },{ label: "Toko Bunga Kapuas", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kapuas", images: " ", price: " " },{ label: "Toko Bunga Karanganyar", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-karanganyar", images: " ", price: " " },{ label: "Toko Bunga Karangasem", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-karangasem", images: " ", price: " " },{ label: "Toko Bunga Karawang", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-karawang", images: " ", price: " " },{ label: "Toko Bunga Kartosuro", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kartosuro", images: " ", price: " " },{ label: "Toko Bunga Kayoon Surabaya", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kayoon-surabaya", images: " ", price: " " },{ label: "Toko Bunga Kebayoran Baru", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kebayoran-baru", images: " ", price: " " },{ label: "Toko Bunga Kebon Jeruk", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kebon-jeruk", images: " ", price: " " },{ label: "Toko Bunga Kebumen", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kebumen", images: " ", price: " " },{ label: "Toko Bunga Kediri", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kediri", images: " ", price: " " },{ label: "Toko Bunga Kelapa Gading", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kelapa-gading", images: " ", price: " " },{ label: "Toko Bunga Kemayoran", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kemayoran", images: " ", price: " " },{ label: "Toko Bunga Kendal", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kendal", images: " ", price: " " },{ label: "Toko Bunga Kendari", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kendari", images: " ", price: " " },{ label: "Toko Bunga Ketapang", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-ketapang", images: " ", price: " " },{ label: "Toko Bunga Klaten", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-klaten", images: " ", price: " " },{ label: "Toko Bunga Klender", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-klender", images: " ", price: " " },{ label: "Toko Bunga Kota Baru Yogyakarta", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kota-baru-yogyakarta", images: " ", price: " " },{ label: "Toko Bunga Kota Batu", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kota-batu", images: " ", price: " " },{ label: "Toko Bunga Kramat Jati", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kramat-jati", images: " ", price: " " },{ label: "Toko Bunga Kudus", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kudus", images: " ", price: " " },{ label: "Toko Bunga Kupang", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-kupang", images: " ", price: " " },{ label: "Toko Bunga Lamongan", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-lamongan", images: " ", price: " " },{ label: "Toko Bunga Langkat", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-langkat", images: " ", price: " " },{ label: "Toko Bunga Lebak Bulus", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-lebak-bulus", images: " ", price: " " },{ label: "Toko Bunga Lembang", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-lembang", images: " ", price: " " },{ label: "Toko Bunga Lenteng Agung", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-lenteng-agung", images: " ", price: " " },{ label: "Toko Bunga Lombok", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-lombok", images: " ", price: " " },{ label: "Toko Bunga Lubuk Pakam", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-lubuk-pakam", images: " ", price: " " },{ label: "Toko Bunga Lumajang", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-lumajang", images: " ", price: " " },{ label: "Toko Bunga Madiun", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-madiun", images: " ", price: " " },{ label: "Toko Bunga Magelang", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-magelang", images: " ", price: " " },{ label: "Toko Bunga Majalengka", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-majalengka", images: " ", price: " " },{ label: "Toko Bunga Makassar", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-makassar", images: " ", price: " " },{ label: "Toko Bunga Malang", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-malang", images: " ", price: " " },{ label: "Toko Bunga Manado", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-manado", images: " ", price: " " },{ label: "Toko Bunga Mangga Besar", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-mangga-besar", images: " ", price: " " },{ label: "Toko Bunga Manokwari", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-manokwari", images: " ", price: " " },{ label: "Toko Bunga Maros", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-maros", images: " ", price: " " },{ label: "Toko Bunga Mataram", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-mataram", images: " ", price: " " },{ label: "Toko Bunga Medan", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-medan", images: " ", price: " " },{ label: "Toko Bunga Mojokerto", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-mojokerto", images: " ", price: " " },{ label: "Toko Bunga Nganjuk", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-nganjuk", images: " ", price: " " },{ label: "Toko Bunga Ngawi", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-ngawi", images: " ", price: " " },{ label: "Toko Bunga Nias", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-nias", images: " ", price: " " },{ label: "Toko Bunga Nusa Tenggara", category: "Collection", url: "https://www.houseonthehillaustin.com/home/rave-reviews/-nusa-tenggara", images: " ", price: " " },
      { 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: "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" },{ 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: "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: "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/files/OBVBUN1051_Dreaming-In-Pink-Luxury-In-Vase_thumb.jpg?v=1771817102", 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: "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: "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: "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: "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: "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: "sincerely", category: "Produk", url: "/products/sincerely", images: "//outerbloom.com/cdn/shop/files/Sincerely-WM_thumb.jpg?v=1688354677", price: "Rp 585.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: "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: "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: "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: "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: "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" },{ 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: "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: "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: "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: "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: "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: "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: "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: "signature ramadan deluxe hampers", category: "Produk", url: "/products/outerbloom-signature-ramadhan-deluxe-hampers", images: "//outerbloom.com/cdn/shop/files/Deluxe-Hampers_e16636a3-3c6b-4ac2-9e17-eb20579111cd_thumb.jpg?v=1769675273", price: "Rp 985.000" },{ label: "love symphony bloom box", category: "Produk", url: "/products/love-symphony-bloom-box", images: "//outerbloom.com/cdn/shop/files/Love-Symphony-Bloom-Box_thumb.jpg?v=1701939722", price: "Rp 685.000" },{ label: "blue concerto", category: "Produk", url: "/products/blue-concerto", images: "//outerbloom.com/cdn/shop/files/Blue-Concerto-WM_thumb.jpg?v=1723708248", price: "Rp 585.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: "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" },
  ];

             
        $( ".header-input-search" ).catcomplete({
         appendTo: ".searchResult",source: function(request, response) {
            var results = $.ui.autocomplete.filter(data, request.term);
            var predicate = function () {
                var counter = { Collection: 0, Produk: 0 };
            var fn = function(item) {counter[item.category] += 1;return (counter[item.category] <= 5);}
            return fn
            }();
            response(results.filter(predicate));
          },
          minLength:1,
           //results are clickable
          select: function( event, ui ) {window.location = ui.item.url;}
});
$( ".header-input-search2" ).catcomplete({
        appendTo: ".searchResult2",
                   source: function(request, response) {
                    var results = $.ui.autocomplete.filter(data, request.term);
                    var predicate = function () {
                        var counter = { Collection: 0, Produk: 0 };
              var fn = function(item) {
              counter[item.category] += 1;
  return (counter[item.category] <= 5);
}
               return fn
               }();
response(results.filter(predicate));
},
  minLength:1,
        //results are clickable
        select: function( event, ui ) {
          window.location = ui.item.url;
        }
});
});
</script>

    <script src="//outerbloom.com/cdn/shop/t/138/assets/vendors.js?v=6349622868601634021752652419" defer></script>
<script src="//outerbloom.com/cdn/shop/t/138/assets/app.js?v=110161375600675176711769541235" defer></script>

<script>
  ( function() {
    var youtube = document.querySelectorAll( ".youtube" );
    for (var i = 0; i < youtube.length; i++) {
      var source = "https://img.youtube.com/vi/"+ youtube[i].dataset.embed +"/sddefault_1x.jpg";
      var datasource = "https://img.youtube.com/vi/"+ youtube[i].dataset.embed +"/sddefault.jpg";
      var image = new Image();
      image.src = source;
      image.setAttribute("data-src", datasource);
      image.classList.add("swiper-lazy");
      image.addEventListener( "load", function() {
        youtube[ i ].appendChild( image );
      }( i ) );
      youtube[i].addEventListener( "click", function() {
        var iframe = document.createElement( "iframe" );
        iframe.setAttribute( "width", "480" );
        iframe.setAttribute( "height", "480" );
        iframe.setAttribute( "frameborder", "0" );
        iframe.setAttribute( "allowfullscreen", "" );
        iframe.setAttribute( "src", "https://www.youtube.com/embed/"+ this.dataset.embed +"?rel=0&showinfo=0&autoplay=1" );
        this.innerHTML = "";
        this.appendChild( iframe );
      } );
    };

  } )();

  /* Lazy Load */
  if (typeof mainLazyLoad === 'undefined') {
    var mainLazyLoad = new LazyLoad({threshold:400});
  }
  $(document).ready(function(){

    $("selectxxx").addClass("needsclick");
    FastClick.attach(document.body);
    
    // Only initialize select2 on desktop screens (width > 992px)
    if ($(window).width() > 992) {
      var $customSelects = $('.select-search');
      $customSelects.select2({
        templateResult: function(result, container) {
        if (!result.id) {
          return result.text;
        }
        container.className += ' needsclick';
        return result.text;
        }
      });
      $customSelects.each(function(index, el){$(el).data('select2').$container.find('*').addClass('needsclick');});
      $(document).on('select2:open', () => {
        document.querySelector('.select2-search__field').focus();
      });
    }
    

    $(".overlay").click(function(){
      $(".js-drawer-close").click();
    });
    $(".site-nav--mobile .js-drawer-open-left, #NavDrawer .icon-close, .overlay-nav").click(function(){
      $("html").toggleClass("nav_open");
    });
    
    $('.swatch-element label').on('click', function(){
      var srcImg = $(this).data('src');
      $('#thumb-image-product .product-single__thumbnail').each(function(){
        if ($(this).attr("href") == srcImg) {
          $(this).trigger('click');
        }
      });
    });
    var defaultValue = $(".swatch input:checked").val()
    
    $('#purchaseProduct .swatch [type=radio]').change(function() {
      var optionIndex = $(this).closest('.swatch').attr('data-option-index');
      var optionValue = $(this).val();
      console.log(optionIndex, optionValue)
      var value = parseInt(optionValue.split(' ')[0])
      $(this)
      .closest('#purchaseProduct')
      .find('.single-option-selector')
      .eq(optionIndex)
      .val(optionValue)
      .trigger('change');
      
    });
    
  });
  $(document).ready(function(){
    $(".nav-search a").click(function(e){
      e.preventDefault();
      $(".icon-navsearch").toggle();
      $(".icon-navclose").toggle();
      $(".site-nav__item > .site-nav__link").toggle();
      $(".open-search").toggle();
      $(".open-search input").focus();
    });
    $(".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'>");
    if ($(window).width() < 768) {
      $(".bg-products .label-tag.valentine").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-valentine_30x.png?v=128458483378922561591768211980' alt='Icon Valentine'>");
      $(".bg-products .label-tag.cny").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-cny_45x.png?v=101884295148001743851752652418' alt='Icon CNY'>");
      $(".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'>");
    } else {
      $(".bg-products .label-tag.valentine").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-valentine_30x.png?v=128458483378922561591768211980' alt='Icon Valentine'>");
      $(".bg-products .label-tag.cny").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-cny_60x.png?v=101884295148001743851752652418' alt='Icon CNY'>");
      $(".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'>");
    }
    $(".bg-products .label-tag.free-cookies").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/free-cookies_80x.png?v=57712' alt='Icon Free Cookies'>");
    $(".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'>");
  });
</script>

    
    <script>
  /* Lazy Load */
  if (typeof mainLazyLoad === 'undefined') {
    var mainLazyLoad = new LazyLoad({threshold:400});
  }
  
  // Function to initialize select2 when it's ready (only on desktop >992px)
  function initializeSelect2() {
    // Only initialize select2 on desktop screens (width > 992px)
    if ($(window).width() <= 992) {
      return;
    }
    
    var $customSelects = $('.select-search');
    
    if ($customSelects.length > 0 && typeof $.fn.select2 !== 'undefined') {
      try {
        $customSelects.select2({
          templateResult: function(result, container) {
            if (!result.id) {
              return result.text;
            }
            container.className += ' needsclick';
            return result.text;
          }
        });
        $customSelects.each(function(index, el){
          $(el).data('select2').$container.find('*').addClass('needsclick');
        });
        console.log('Select2 initialized successfully');
      } catch(e) {
        console.warn('Select2 initialization failed:', e);
      }
    } else if ($customSelects.length > 0) {
      // Retry after a short delay if select2 is not yet loaded
      setTimeout(initializeSelect2, 100);
    }
  }
  
  $(document).ready(function(){
    $("select").addClass("needsclick");
    
    if (typeof FastClick !== 'undefined') {
      FastClick.attach(document.body);
    }
    
    // Initialize select2 with retry mechanism
    initializeSelect2();

    $(".overlay").click(function(){
      $(".js-drawer-close").click();
    });
    $(".site-nav--mobile .js-drawer-open-left, #NavDrawer .icon-close, .overlay-nav").click(function(){
      $("html").toggleClass("nav_open");
    });
    
    // Wait for Shopify OptionSelectors to be initialized
    setTimeout(function() {
      // Remove any existing handlers first
      $('.swatch :radio').off('change.swatchHandler');
      
      // Attach new handler with namespace - use event delegation
      $(document).off('change.swatchHandler', '.swatch :radio');
      $(document).on('change.swatchHandler', '.swatch :radio', function() {
        var optionIndex = $(this).closest('.swatch').attr('data-option-index');
        var optionValue = $(this).val();
        
        // Find the corresponding single option selector
        var $selector = $('.single-option-selector[data-index="option' + (parseInt(optionIndex) + 1) + '"]');
        
        // If not found, try alternative selector
        if ($selector.length === 0) {
          $selector = $('#productSelect-option-' + optionIndex);
        }
        
        // If still not found, try finding by position
        if ($selector.length === 0) {
          $selector = $('.single-option-selector').eq(optionIndex);
        }
        
        if ($selector.length > 0) {
          $selector.val(optionValue).trigger('change');
        }
      });
    }, 300);
    
  });
  $(window).load(function(){
    $(".best-price-guarantee").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/logo-best-price-guarantee-grid_65x.png?v=72489032173169839651752652420' alt='Logo Best Price Guarantee'>");
  });
</script>

    
    
    
    
    
    

    <script type="text/javascript">
      var wishlistpage = 0;
       
       var quickShop_money_format="<span class='money'>"+"Rp {{amount_no_decimals}}"+"</span>";
    </script>
    
      <!-- Remove duplicate wishlist.js reference -->
      <style>
  .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: #212121;}.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: #212121;}.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:#212121;background:#212121;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)}}
</style>

<div class="modal fade" id="modalwishlist0" tabindex="-1" role="dialog">
  <div class="modal-dialog" role="document">
    <div class="modal-content">        
      <div class="modal-body">Your Wishlist is empty!</div>
      <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>          
    </div>
  </div>
</div> 

<div class="wishlist-model">
  <div class="modal fade" id="modalwishlist1" tabindex="-1" role="dialog" aria-hidden="true">
    <div class="modal-dialog white-modal">
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
            <svg class="icon icon-close" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>icon-close</title>
<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>
</svg>
          </button>
        </div>
        <div class="modal-body">
          <div class="wishlist-left">
            <div class="wishlist-note">
              <span class="cirle"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<title>icon-check</title>
<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>
</svg></span>
              Product added to <a href="/pages/wish-list">Wishlist</a>
            </div>
            <div class="wishlist-product">
              <div class="product-left">
                <div class="wishlist-image"></div>
              </div>
              <div class="product-right">
                <div class="wishlist-name"></div>
                <div class="wishlist-price"></div>
              </div>
            </div>
          </div>
          <div class="wishlist-right">
            <div class="wishlist-cart">
              <form action="/cart/add" method="post" class="variants-form variants" id="AddToCartForm" enctype="multipart/form-data">                  
                <div class="others-bottom">
                  <a class="btn btn-quick-shop" href="/pages/wish-list">View Wishlist</a>
                  <button type="submit" name="add" id="AddToCart" class="btn btn-cta">
                    <span id="AddToCartText" class="">Beli Sekarang</span>
                  </button>
                </div>
                <div id="wishlist-variants-container" class="variants-wrapper"></div> 
                <div class="quantity-content">
                  <label>QTY</label>
                  <input type="number" size="5" class="" name="quantity" value="1" />
                </div>
              </form> 
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
    

    

    
      
      <script type="application/ld+json">
        {
               "@context": "http://schema.org/",
               "@type": "Product",
          	   "url": "https://www.houseonthehillaustin.com/home/rave-reviews/",
          	   "name": "MI77: Situs Slot777 Online Link Permainan Putaran Terlengkap Paling Baru",
               "image": "https:https://i.ibb.co/HfX5MwBj/slotmi77.webp",
               "description": "&lt;ul data-mce-fragment=&quot;1&quot;&gt;
&lt;li data-mce-fragment=&quot;1&quot;&gt;&lt;strong data-mce-fragment=&quot;1&quot;&gt;Layanan Live Chat 24 Jam Non Stop&lt;/strong&gt;&lt;/li&gt;
&lt;li data-mce-fragment=&quot;1&quot;&gt;&lt;strong data-mce-fragment=&quot;1&quot;&gt;Transaksi Mudah Cepat & Praktis&lt;/strong&gt;&lt;/li&gt;
&lt;li data-mce-fragment=&quot;1&quot;&gt;&lt;strong data-mce-fragment=&quot;1&quot;&gt;Pilihan Permainan Terlengkap Gampang Menang&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-mce-fragment=&quot;1&quot;&gt;Rekomendasi situs slot777 online MI77 kini hadir sebagai link permainan putaran terlengkap paling baru dengan koleksi game slot terbaru yang menghadirkan akses cepat dan stabil serta pengalaman bermain modern yang diperbarui setiap hari.
&lt;table data-mce-fragment=&quot;1&quot; width=&quot;100%&quot;&gt;
&lt;tbody data-mce-fragment=&quot;1&quot;&gt;
&lt;tr data-mce-fragment=&quot;1&quot;&gt;
&lt;td data-mce-fragment=&quot;1&quot;&gt;SKU&lt;/td&gt;
&lt;td data-mce-fragment=&quot;1&quot;&gt;OBIBUN1205&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-mce-fragment=&quot;1&quot;&gt;
&lt;td data-mce-fragment=&quot;1&quot;&gt;Isi&lt;/td&gt;
&lt;td data-mce-fragment=&quot;1&quot;&gt;6 tangkai Mawar impor dan Caspea&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;",
               "brand": {
                   "name": "Outerbloom"
               },
               "sku": "[C]OBIBUN1236",
               "mpn": "[C]OBIBUN1236",
               "offers": {
                   "@type": "Offer",
                   "priceCurrency": "IDR",
                   "price": "277700",
                   "availability": "http://schema.org/InStock",
                   "seller": {
                       "@type": "Organization",
                        "name": "Outerbloom"
                   },
                   "url": "https://www.houseonthehillaustin.com/home/rave-reviews/"
               }
               
        }
      </script>
    
    <style>
       .stamped-badge[data-rating="0.0"]{display: none !Important;}
       
        div[data-load-type="continue"] ul.stamped-pagination li.next a, div[data-widget-load-type="continue"] ul.stamped-pagination li.next a {
          border-radius: 0px;
      }
          .stamped-review-body {
          padding-left: 0px !important;
      }
          #product-reviews .stamped-header:after {
            display:none !Important;
          }
      #stamped-main-widget .stamped-container, .stamped-badge-caption,#stamped-reviews-widget {
      	font-family:inherit !important;
      }
    </style>

    

    <script src="//outerbloom.com/cdn/shop/t/138/assets/variant-sku-handler.js?v=91239063692820757781752652418" defer></script>
    
    <!-- Wishlist API Configuration -->
    <script>
      window.WISHLIST_API_URL = 'https://app.asmaraku.com'; // Change to production URL
      
      // Initialize Shopify object BEFORE wishlist-manager loads
      window.Shopify = window.Shopify || {};
      
      // Set shop domain - try multiple methods to ensure it's set
      const shopDomain = '';
      
      if (shopDomain && shopDomain.trim()) {
        window.Shopify.shop = shopDomain.trim();
      } else {
        // Fallback: try to get from shop.domain or hardcode
        const shopDomain2 = 'outerbloom.com';
        if (shopDomain2 && shopDomain2.trim()) {
          window.Shopify.shop = shopDomain2.trim();
        } else {
          // Manual fallback - set your shop domain here
          window.Shopify.shop = 'outerbloom1.myshopify.com'; // TODO: Change this to your actual shop domain
        }
      }
      
      
      console.log('[Wishlist Setup] No customer logged in');
      
    </script>
    
    <!-- Wishlist Manager - New API Integration (load AFTER customer data) -->
    <script src="//outerbloom.com/cdn/shop/t/138/assets/wishlist-manager.js?v=32902194101720033021772185906"></script>

    <script>
      function myInit(){ StampedFn.init({ apiKey: 'pubkey-hCS8DHE9QbBHhHN89WXFkuJ0Y3422D', sId: '23462' }); }
    </script>
    <script async onload="myInit()" type="text/javascript" src="https://cdn1.stamped.io/files/widget.min.js"></script><style>
  .jss59 {
    background-color: rgba(0, 0, 0, 0.6);
  }
  .MuiBackdrop-root {
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    z-index: -1;
    position: fixed;
    align-items: center;
    justify-content: center;
    background-color: rgba(0, 0, 0, 0.5);
    -webkit-tap-highlight-color: transparent;
  }
  .MuiDialog-scrollPaper {
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .MuiDialog-container {
    height: 100%;
    outline: 0;
  }
  .MuiPaper-elevation24 {
    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);
  }
  .MuiDialog-paper {
    margin: 32px;
    position: relative;
    overflow-y: auto;
  }
  .MuiDialog-paperScrollPaper {
    display: flex;
    max-height: calc(100% - 64px);
    flex-direction: column;
  }
  .MuiDialog-paperWidthSm {
    max-width: 600px;
  }
  #location-lock-dialog {
    top: 20%;
    left: 0;
    right: 0;
    width: 30%;
    margin: 0px auto;
    display: block;
    padding: 30px;
    z-index: 99999;
    position: fixed;
    font-size: 14px;
    background: rgb(255, 255, 255);
    box-shadow: rgba(11, 11, 12, 0.2) 2px 4px 5px 0px;
    text-align: center;
    font-family: Roboto, Arial, sans-serif;
    line-height: 1;
    border-radius: 8px;
    -webkit-font-smoothing: subpixel-antialiased;
  }
  .MuiButtonBase-root {
    color: inherit;
    border: 0;
    cursor: pointer;
    margin: 0;
    display: inline-flex;
    outline: 0;
    padding: 0;
    position: relative;
    align-items: center;
    user-select: none;
    border-radius: 0;
    vertical-align: middle;
    -moz-appearance: none;
    justify-content: center;
    text-decoration: none;
    background-color: transparent;
    -webkit-appearance: none;
    -webkit-tap-highlight-color: transparent;
  }
  .MuiIconButton-root {
    flex: 0 0 auto;
    color: rgba(0, 0, 0, 0.54);
    padding: 12px;
    overflow: visible;
    font-size: 1.5rem;
    text-align: center;
    transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
    border-radius: 50%;
  }
  .MuiIconButton-label {
    width: 100%;
    display: flex;
    align-items: inherit;
    justify-content: inherit;
  }
  .MuiSvgIcon-root {
    fill: currentColor;
    width: 1em;
    height: 1em;
    display: inline-block;
    font-size: 1.5rem;
    transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
    flex-shrink: 0;
    user-select: none;
  }
  .MuiTouchRipple-root {
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 0;
    overflow: hidden;
    position: absolute;
    border-radius: inherit;
    pointer-events: none;
  }
  .jss36 {
    color: #222222;
    font-size: 24px;
    font-family: Roboto, Arial, sans-serif;
    font-weight: 500;
  }
  .jss37 {
    color: #555555;
    padding: 10px 0px 0px;
    font-size: 14px;
  }
  .MuiFormGroup-root {
    display: flex;
    flex-wrap: wrap;
    flex-direction: column;
  }
  .MuiFormGroup-row {
    flex-direction: row;
  }
  .jss63 {
    width: 85%;
    margin: 15px auto;
    display: flex;
    padding: 11px 0px 0px;
    justify-content: space-evenly;
  }
  .MuiFormControlLabel-root {
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    margin-left: -11px;
    margin-right: 16px;
    vertical-align: middle;
    -webkit-tap-highlight-color: transparent;
  }
  .jss70 {
    margin: 0;
  }
  .MuiButtonBase-root {
    color: inherit;
    border: 0;
    cursor: pointer;
    margin: 0;
    display: inline-flex;
    outline: 0;
    padding: 0;
    position: relative;
    align-items: center;
    user-select: none;
    border-radius: 0;
    vertical-align: middle;
    -moz-appearance: none;
    justify-content: center;
    text-decoration: none;
    background-color: transparent;
    -webkit-appearance: none;
    -webkit-tap-highlight-color: transparent;
  }
  .MuiIconButton-root {
    flex: 0 0 auto;
    color: rgba(0, 0, 0, 0.54);
    padding: 12px;
    overflow: visible;
    font-size: 1.5rem;
    text-align: center;
    transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
    border-radius: 50%;
  }
  .MuiIconButton-colorSecondary {
    color: #f50057;
  }
  .jss71 {
    padding: 9px;
  }
  .MuiRadio-root {
    color: rgba(0, 0, 0, 0.54);
  }
  .jss64 {
    padding: 2px;
  }
  .MuiRadio-colorSecondary.Mui-checked {
    color: #f50057;
  }
  .MuiIconButton-label {
    width: 100%;
    display: flex;
    align-items: inherit;
    justify-content: inherit;
  }
  .MuiTypography-root {
    margin: 0;
  }
  .MuiTypography-body1 {
    font-size: 18px;
    font-family: Roboto,sans-serif;
    font-weight: 400;
    line-height: 1.5;
  }
  .location-popup_area-block__sp9Ws {
    display: -moz-box;
    display: flex;
    -moz-box-orient: vertical;
    -moz-box-direction: normal;
    flex-direction: column;
    -moz-box-pack: center;
    justify-content: center;
    position: relative;
    margin: 10px 10% 0;
  }
  .location-popup_pin-search-box__3l5mJ {
    width: 100%;
    display: -moz-box;
    display: flex;
    -moz-box-align: center;
    align-items: center;
  }
  .location-popup_place-icon-city__1XAX5, .location-popup_place-icon__jSG0Q {
    position: absolute;
    z-index: 999;
  }
  .location-popup_place-icon__jSG0Q {
    color: #212121;
    padding-left: 8px;
  }
  .location-popup_place-icon__jSG0Q svg {
    width: 18px;
    height: 18px;
  }
  .location-popup_cancel-icon__FHujU {
    color: #fff;
    right: 10px;
    width: 16px;
    cursor: pointer;
    height: 16px;
    display: none;
    padding: 5px;
    position: absolute;
    background: #999;
    text-align: center;
    border-radius: 50%;
  }
  .location-popup_pin-search-box__3l5mJ>div>select {
/*     -webkit-box-shadow: 0 0 10px #212121;
    box-shadow: 0 0 10px #212121; */
    text-transform: capitalize;
    border: 1px solid #212121;
    color: #212121;
    width: 100%;
    margin: 0;
    display: -moz-box;
    display: flex;
    padding: 0 30px;
    -webkit-animation: location-popup_focuses__1I8Gj 1.5s ease-in-out infinite;
    -moz-animation: location-popup_focuses__1I8Gj 1.5s ease-in-out infinite;
    animation: location-popup_focuses__1I8Gj 1.5s ease-in-out infinite;
    font-size: 16px;
    border-radius: 4px;
    height: 44px;
    moz-animation: location-popup_focuses__1I8Gj ease-in-out 1.5s infinite;
    webkit-animation: location-popup_focuses__1I8Gj ease-in-out 1.5s infinite;
  }
  .MuiButtonBase-root {
    color: inherit;
    border: 0;
    cursor: pointer;
    margin: 0;
    display: inline-flex;
    outline: 0;
    padding: 0;
    position: relative;
    align-items: center;
    user-select: none;
    border-radius: 0;
    vertical-align: middle;
    -moz-appearance: none;
    justify-content: center;
    text-decoration: none;
    background-color: transparent;
    -webkit-appearance: none;
    -webkit-tap-highlight-color: transparent;
  }
  .MuiButton-root {
    color: rgba(0, 0, 0, 0.87);
    padding: 6px 16px;
    font-size: 0.875rem;
    min-width: 64px;
    box-sizing: border-box;
    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;
    font-family: Roboto,sans-serif;
    font-weight: 500;
    line-height: 1.75;
    border-radius: 4px;
    text-transform: uppercase;
  }
  .MuiButton-contained {
    color: rgba(0, 0, 0, 0.87);
    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);
    background-color: #e0e0e0;
  }
  .MuiButtonBase-root.Mui-disabled {
    cursor: default;
    pointer-events: none;
  }
  .MuiButton-label {
    width: 100%;
    display: inherit;
    align-items: inherit;
    justify-content: inherit;
  }
  .cartButton_login_content__2j1f7 {
    display: -moz-box;
    display: flex;
    text-align: center;
    z-index: 9;
    font-size: 18px;
    font-weight: 500;
    color: #fff;
  }
  
  .jss35 {
    top: 5px;
    right: 5px;
    padding: 4px;
    position: absolute;
    border-radius: 50%;
  }
  .jss67 {
    cursor: pointer;
    font-size: 15px;
    line-height: 1.3;
    padding-left: 5px;
  }
  .jss69 {
    color: #222222;
  }
  .jss80 {
    color: #fff;
    width: 100%;
    height: 52px;
    padding: 11px 16px;
    font-size: 18px;
    min-width: 88px;
    min-height: 36px;
    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;
    font-weight: 500;
    line-weight: 1em;
    border-radius: 4px;
    text-transform: uppercase;
    background-color: #E87325;
  }
  @media (min-width: 991px){
    .cartButton_login_content__2j1f7 {
        font-weight: 500;
    }
  }

  @media (max-width: 992px) {
    #location-lock-dialog {
      width: 100%;
      top: auto;
      bottom: 0;
      padding-left: 0;
      padding-right: 0;
    }
    .MuiFormGroup-row {
      display: block
    }
    .MuiIconButton-label input {
      margin: 0;
    }
  }
</style>
<div role="presentation" class="MuiDialog-root jss34" style="display: none;position: fixed; z-index: 9999; inset: 0px;">
  <div class="MuiBackdrop-root" aria-hidden="true" style="opacity: 1; transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;"></div>
  <div tabindex="0" data-test="sentinelStart"></div>
  <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;">
    <div class="MuiPaper-root MuiDialog-paper MuiDialog-paperScrollPaper MuiDialog-paperWidthSm MuiPaper-elevation24 MuiPaper-rounded" role="dialog">
      <div class="jss31 undefined" id="location-lock-dialog">
        <button id="close-popup-delivery" class="MuiButtonBase-root MuiIconButton-root jss35" tabindex="0" type="button" aria-label="close">
          <span class="MuiIconButton-label">
            <svg class="MuiSvgIcon-root" focusable="false" viewBox="0 0 24 24" aria-hidden="true">
              <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>
            </svg>
          </span>
          <span class="MuiTouchRipple-root"></span>
        </button>
        <div>
          <div class="jss36">Select Delivery Location</div>
          <div class="jss37">Select a delivery location to see product availability</div>
        </div>
        <div class="MuiFormGroup-root jss63 MuiFormGroup-row" role="radiogroup">
          <label for="jabodetabek" class="MuiFormControlLabel-root jss45">
            <span class="MuiButtonBase-root MuiIconButton-root jss46 MuiRadio-root MuiRadio-colorSecondary jss39 jss47 Mui-checked MuiIconButton-colorSecondary" aria-disabled="false">
              <span class="MuiIconButton-label">
                <input id="jabodetabek" class="jss49" type="radio" value="Jabodetabek" checked="" name="location">
                <span class="jss41"></span>
              </span>
              <span class="MuiTouchRipple-root"></span>
            </span>
            <span class="MuiTypography-root MuiFormControlLabel-label MuiTypography-body1">
              <span class="jss67 jss69">Jabodetabek</span>
            </span>
          </label>
          <label for="non-jabodetabek" class="MuiFormControlLabel-root jss45">
            <span class="MuiButtonBase-root MuiIconButton-root jss46 MuiRadio-root MuiRadio-colorSecondary jss39 MuiIconButton-colorSecondary" aria-disabled="false">
              <span class="MuiIconButton-label">
                <input id="non-jabodetabek" class="jss49" type="radio" value="Outside Jabodetabek" name="location">
                <span class="jss40"></span>
              </span>
              <span class="MuiTouchRipple-root"></span>
            </span>
            <span class="MuiTypography-root MuiFormControlLabel-label MuiTypography-body1">
              <span class="jss67 jss68">Outside Jabodetabek</span>
            </span>
          </label>
        </div>
        <div>
          <div class="MuiGrid-root location-popup_area-block__sp9Ws">
            <div class="MuiGrid-root location-popup_pin-search-box__3l5mJ false">
              <div class="MuiGrid-root location-popup_place-icon__jSG0Q">
                <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>
              </div>
              <div class="MuiGrid-root location-popup_cancel-icon__FHujU false">
                <i class="material-icons location-popup_clear-pin__s1dRc">close</i>
              </div>
              <div style="width: 100%;">
                <select id="choose-location" class="form-control">
                  <option value="">Choose Location</option>
                  <option value="jakarta">Jakarta</option>
                  <option value="bogor">Bogor</option>
                  <option value="depok">Depok</option>
                  <option value="tangerang">Tangerang</option>
                  <option value="bekasi">Bekasi</option>
                </select>
              </div>
            </div>
          </div>
        </div>
        <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: #212121; 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(255, 255, 255); height: 44px;" data-content="">
          <span class="MuiButton-label">
            <span class=""></span>
            <span id="location-lock-continue-btn" class="cartButton_login_content__2j1f7" style="font-weight: 500;" data-content="">Continue Shopping</span>
          </span>
        </button>
      </div>
    </div>
  </div>
  <div tabindex="0" data-test="sentinelEnd"></div>
</div>

<script>
  const jabodetabek = [
    {
      "code": "jakarta",
      "city": "jakarta",
      "zip": []
    },
    {
      "code": "bogor",
      "city": "bogor",
      "zip": []
    },
    {
      "code": "depok",
      "city": "depok",
      "zip": []
    },
    {
      "code": "tangerang",
      "city": "tangerang",
      "zip": []
    },
    {
      "code": "bekasi",
      "city": "bekasi",
      "zip": []
    }
  ]
  let cityNonJabodetabek = [
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    "pengiriman_aceh",
    
    
    
    
    
    "pengiriman_ambon",
    
    
    
    
    
    "pengiriman_atambua",
    
    
    
    
    
    "pengiriman_badung",
    
    
    
    
    
    "pengiriman_bali",
    
    
    
    
    
    "pengiriman_balikpapan",
    
    
    
    
    
    "pengiriman_bandar lampung",
    
    
    
    
    
    "pengiriman_bandung",
    
    
    
    
    
    "pengiriman_bandung barat",
    
    
    
    
    
    "pengiriman_banjarmasin",
    
    
    
    
    
    "pengiriman_banyumas",
    
    
    
    
    
    "pengiriman_banyuwangi",
    
    
    
    
    
    "pengiriman_batam",
    
    
    
    
    
    
    
    
    
    "pengiriman_biak",
    
    
    
    
    
    "pengiriman_binjai",
    
    
    
    
    
    "pengiriman_blitar",
    
    
    
    
    
    "pengiriman_blora",
    
    
    
    
    
    
    
    
    
    "pengiriman_bojonegoro",
    
    
    
    
    
    "pengiriman_boyolali",
    
    
    
    
    
    "pengiriman_bukittinggi",
    
    
    
    
    
    "pengiriman_buleleng",
    
    
    
    
    
    "pengiriman_ciamis",
    
    
    
    
    
    "pengiriman_cianjur",
    
    
    
    
    
    "pengiriman_cibinong",
    
    
    
    
    
    "pengiriman_cikarang",
    
    
    
    
    
    "pengiriman_cikupa",
    
    
    
    
    
    "pengiriman_cilacap",
    
    
    
    
    
    "pengiriman_cileunyi",
    
    
    
    
    
    "pengiriman_cimahi",
    
    
    
    
    
    "pengiriman_cirebon",
    
    
    
    
    
    "pengiriman_ciwidey",
    
    
    
    
    
    "pengiriman_deli serdang",
    
    
    
    
    
    "pengiriman_demak",
    
    
    
    
    
    "pengiriman_denpasar",
    
    
    
    
    
    
    
    
    
    "pengiriman_garut",
    
    
    
    
    
    "pengiriman_gianyar",
    
    
    
    
    
    "pengiriman_gresik",
    
    
    
    
    
    "pengiriman_gunung kidul",
    
    
    
    
    
    
    
    
    
    "pengiriman_jambi",
    
    
    
    
    
    "pengiriman_jayapura",
    
    
    
    
    
    "pengiriman_jember",
    
    
    
    
    
    "pengiriman_jepara",
    
    
    
    
    
    "pengiriman_jombang",
    
    
    
    
    
    "pengiriman_karanganyar",
    
    
    
    
    
    "pengiriman_karawang",
    
    
    
    
    
    "pengiriman_karo",
    
    
    
    
    
    "pengiriman_kebumen",
    
    
    
    
    
    "pengiriman_kediri",
    
    
    
    
    
    "pengiriman_keerom",
    
    
    
    
    
    "pengiriman_kendal",
    
    
    
    
    
    "pengiriman_klaten",
    
    
    
    
    
    
    
    
    
    "pengiriman_kudus",
    
    
    
    
    
    "pengiriman_kupang",
    
    
    
    
    
    "pengiriman_lainnya",
    
    
    
    
    
    "pengiriman_lamongan",
    
    
    
    
    
    "pengiriman_lampung",
    
    
    
    
    
    "pengiriman_lampung barat",
    
    
    
    
    
    "pengiriman_lembang",
    
    
    
    
    
    "pengiriman_lombok",
    
    
    
    
    
    "pengiriman_lumajang",
    
    
    
    
    
    "pengiriman_madiun",
    
    
    
    
    
    "pengiriman_magelang",
    
    
    
    
    
    "pengiriman_majalengka",
    
    
    
    
    
    "pengiriman_makassar",
    
    
    
    
    
    "pengiriman_malang",
    
    
    
    
    
    "pengiriman_manado",
    
    
    
    
    
    "pengiriman_medan",
    
    
    
    
    
    "pengiriman_mengwi",
    
    
    
    
    
    "pengiriman_mojokerto",
    
    
    
    
    
    "pengiriman_nganjuk",
    
    
    
    
    
    "pengiriman_ngawi",
    
    
    
    
    
    "pengiriman_padang",
    
    
    
    
    
    "pengiriman_palembang",
    
    
    
    
    
    "pengiriman_palu",
    
    
    
    
    
    "pengiriman_pasuruan",
    
    
    
    
    
    "pengiriman_pati",
    
    
    
    
    
    "pengiriman_pekalongan",
    
    
    
    
    
    "pengiriman_pekanbaru",
    
    
    
    
    
    "pengiriman_pemalang",
    
    
    
    
    
    "pengiriman_ponorogo",
    
    
    
    
    
    "pengiriman_pontianak",
    
    
    
    
    
    "pengiriman_probolinggo",
    
    
    
    
    
    "pengiriman_purbalingga",
    
    
    
    
    
    "pengiriman_purwakarta",
    
    
    
    
    
    "pengiriman_purwokerto",
    
    
    
    
    
    "pengiriman_rembang",
    
    
    
    
    
    "pengiriman_riau",
    
    
    
    
    
    "pengiriman_salatiga",
    
    
    
    
    
    "pengiriman_samarinda",
    
    
    
    
    
    "pengiriman_semarang",
    
    
    
    
    
    "pengiriman_sentani",
    
    
    
    
    
    "pengiriman_serang",
    
    
    
    
    
    "pengiriman_sidoarjo",
    
    
    
    
    
    "pengiriman_singkawang",
    
    
    
    
    
    "pengiriman_sragen",
    
    
    
    
    
    "pengiriman_subang",
    
    
    
    
    
    "pengiriman_sukabumi",
    
    
    
    
    
    "pengiriman_sumbawa",
    
    
    
    
    
    "pengiriman_surabaya",
    
    
    
    
    
    "pengiriman_surakarta solo",
    
    
    
    
    
    
    
    
    
    "pengiriman_tasikmalaya",
    
    
    
    
    
    "pengiriman_tegal",
    
    
    
    
    
    "pengiriman_timika",
    
    
    
    
    
    "pengiriman_wamena",
    
    
    
    
    
    "pengiriman_wiyung",
    
    
    
    
    
    "pengiriman_wonokromo",
    
    
    
    
    
    "pengiriman_yogyakarta",
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  ]
  
  let non_jabodetabek = []
  for(var i=0;i<cityNonJabodetabek.length;i++) {
    const obj = {
      "code": cityNonJabodetabek[i].toLowerCase().replace('pengiriman_', '').replace(' ','-'),
      "city": cityNonJabodetabek[i].replace('pengiriman_', '').replace(' ','-'),
      "zip": []
    }
    non_jabodetabek.push(obj)
  }
  let current_location = getCookie("location_delivery")
  $("[name=location]").change(function(){
    let v = $(this).val()
    let option = []
    if(v == 'Jabodetabek') {
      for(var i=0;i<jabodetabek.length;i++) {
        const jabodetabekHtml = `<option value=${jabodetabek[i].city}>${jabodetabek[i].city}</option>`
        option.push(jabodetabekHtml)
      }
      $("#choose-location").html(`<option value="">Choose Location</option>${option}`)
    } else {
      for(var i=0;i<non_jabodetabek.length;i++) {
        const nonjabodetabekHtml = `<option value=${non_jabodetabek[i].city}>${non_jabodetabek[i].city}</option>`
        option.push(nonjabodetabekHtml)
      }
      $("#choose-location").html(`<option value="">Choose Location</option>${option}`)
    }
  })

  $("#location-lock-submit").click(function(e){
    let select = $("#choose-location")
    let value = select.val().toLowerCase()
    console.log(value)
    if(select.val() == "") {
      return alert("Choose Your Location")
      e.preventDefault()
    }
    setCookie("location_delivery",value,1000000);
    
    location.reload();
    
  })

  $("#close-popup-delivery").click(function(){
    $(".MuiDialog-root").hide()
    if(!current_location){
      setCookie("location_delivery","jakarta",1000000);
      $("#loc_delivery_city, #loc_delivery_city_mobile").text("Jakarta")
    }
  })
  $("#loc_delivery, #loc_delivery_mobile").click(function(){
    $(".MuiDialog-root").show()
  })

  
  if(!current_location){
    
  } else {
    $("#loc_delivery_city, #loc_delivery_city_mobile").text(current_location)
    $("#choose-location").each(function(){
      if(current_location == 'jakarta' || current_location == 'depok' || current_location == 'bogor' || current_location == 'tangerang' || current_location == 'bekasi'){
        $("#jabodetabek").trigger("click")
      } else {
        $("#non-jabodetabek").trigger("click")
      }
      $("#choose-location").find("option[value="+current_location+"]").attr("selected", "selected")
    })
  }

  // 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'){
  //   $("#timeMalam").attr("disabled", false)
  // } else {
  //   $("#timeMalam").attr("disabled", true)
  // }

  if(current_location && current_location != 'jakarta') {
    $("#self-pickup").attr("disabled", true)
  }

  function setCookie(name,value,days) {
    var expires = "";
    if (days) {
      var date = new Date();
      date.setTime(date.getTime() + (days*24*60*60*1000));
      expires = "; expires=" + date.toUTCString();
    }
    document.cookie = name + "=" + (value || "")  + expires + "; path=/";
  }
  function getCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
      var c = ca[i];
      while (c.charAt(0)==' ') c = c.substring(1,c.length);
      if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
  }
</script>
<!-- One Tap -->
    <script>
      console.log("Outerbloom...");
    </script>

    <!-- Initialize User Data (IP, Browser, Device) -->
    
  <div id="shopify-block-ATzRpVTBPU3k1R2pnW__286197278318599166" class="shopify-block shopify-app-block">


<div style="position: fixed; bottom: 0; right: 0"></div>

<script>
console.info("bitlogin extension version: v2.5.7");

const googleScript = document.createElement("script");
googleScript.setAttribute("src", "https://accounts.google.com/gsi/client");
document.head.append(googleScript);

const bitLoginBaseUrl = "https://api.bitbybit.studio";
const apiUrl = `${bitLoginBaseUrl}/bitlogin/api`;

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"}};
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":"amzn1.oa2-cs.v1.1cb5f9085a202341f60daf5a7be16c570ccc0b4bd5908b3afd080f34e9b8935d","appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":false,"position":null}];

const urlSearchParams = new URLSearchParams(window.location.search);
const checkoutUrl = urlSearchParams.get("checkout_url");
const redirectUrl = checkoutUrl || appearance.redirectLink;

let locationCacheSet = false;
let errorLocation = false;
let oneTapSet = false;

let bitloginCache = {
  appearance: appearance,
  config: config
};

let isInitializing = false;
const queue = [];

// Add CSS for the popup
const popupStyles = document.createElement('style');
popupStyles.textContent = `
  /* Styles for login popup */
  .bitlogin-popup-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.45);
    backdrop-filter: blur(4px);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity 0.3s ease-in-out;
    z-index: 999999;
  }
  
  .bitlogin-popup-overlay.visible {
    opacity: 1;
  }
  
  .bitlogin-popup {
    background: #FFFFFF;
    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
    border-radius: 16px;
    width: 100%;
    max-width: 560px;
    display: flex;
    overflow: hidden;
    position: relative;
    opacity: 0;
    transform: translateY(20px) scale(0.98);
    transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
  }
  
  .bitlogin-popup.visible {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
  
  .bitlogin-popup-with-image {
    max-width: 640px;
  }
  
  .bitlogin-popup-right-image {
    flex-direction: row-reverse;
  }
  
  .bitlogin-popup-image {
    object-fit: cover;
    width: 50%;
    height: auto;
  }
  
  .bitlogin-popup-content {
    padding: 32px;
    position: relative;
    width: 50%;
  }
  
  .bitlogin-popup-close {
    position: absolute;
    top: 16px;
    right: 16px;
    background: white;
    border: none;
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background-color 0.2s;
    color: inherit;
    padding: 0;
  }
  
  .bitlogin-popup-close:hover {
    background-color: #e5e5e5;
  }
  
  .bitlogin-popup-buttons {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-top: 24px;
  }
  
  /* Button styles within popup - override width for popup buttons */
  .bitlogin-popup-buttons #google-login,
  .bitlogin-popup-buttons #facebook-login,
  .bitlogin-popup-buttons #apple-login,
  .bitlogin-popup-buttons #whatsapp-login,
  .bitlogin-popup-buttons #microsoft-login,
  .bitlogin-popup-buttons #twitter-login,
  .bitlogin-popup-buttons #amazon-login,
  .bitlogin-popup-buttons #instagram-login,
  .bitlogin-popup-buttons #magic-link-login,
  .bitlogin-popup-buttons #mobile-app-login {
    width: 100% !important;
    font-family: inherit !important;
  }
  
  .bitlogin-popup-footer {
    margin-top: 32px;
    text-align: center;
    font-size: 14px;
    opacity: 0.6;
  }
  
  /* Modern Typography */
  .bitlogin-popup h2 {
    margin-top: 12px;
    font-size: 21px !important;
    line-height: 1.2 !important;
    font-weight: 700 !important;
    letter-spacing: -0.02em !important;
    margin-bottom: 16px !important;
  }
  
  .bitlogin-popup-header {
    position: relative;
    margin-bottom: 24px;
  }
  
  /* Modern gradient accent */
  .bitlogin-popup-content > div {
    font-size: 16px !important;
    line-height: 1.2 !important;
    opacity: 0.85 !important;
  }
  
  /* Enhanced button interactions */
  .bitlogin-popup-buttons button {
    position: relative;
    overflow: hidden;
  }
  
  @keyframes ripple {
    0% {
      transform: scale(0, 0);
      opacity: 0.5;
    }
    100% {
      transform: scale(100, 100);
      opacity: 0;
    }
  }
  
  /* Responsive adjustments */
  @media (max-width: 640px) {
    .bitlogin-popup {
      max-width: 90%;
      width: 90%;
      margin: 0 16px;
    }
    
    .bitlogin-popup-with-image {
      flex-direction: column !important;
    }
    
    .bitlogin-popup-image {
      width: 100%;
      height: 180px;
    }
    
    .bitlogin-popup-content {
      padding: 24px;
    }
    
    .bitlogin-popup h2 {
      font-size: 24px !important;
    }
  }
`;

document.head.appendChild(popupStyles);

// Add fonts link for different font options
const fontsLink = document.createElement('link');
fontsLink.rel = 'stylesheet';
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';
document.head.appendChild(fontsLink);

(async () => {
  try {
    let host = window.location.host;
    if (host === "admin.shopify.com") {
      host = `${window.location.pathname.split("/")[2]}.myshopify.com`;
    }

    const urlSearchParams = new URLSearchParams(window.location.search);
    const checkoutUrl = urlSearchParams.get("checkout_url");

    async function init({ inputRef, index }) {
      if (isInitializing) {
        queue.push(() => init({ inputRef, index }));
        return;
      }

      isInitializing = true;

      try {
        let bitLoginSectionRoot = document.querySelector(
          `.bitlogin-root[data-index="${index}"]`
        );

        const formRef = inputRef?.closest(
          "form:not([action='/account/recover'])"
        );

        if (formRef && !bitLoginSectionRoot) {
          await getLocation();

          bitLoginSectionRoot = document.createElement(`div`);

          bitLoginSectionRoot.setAttribute("class", "bitlogin-root");
          bitLoginSectionRoot.setAttribute("data-index", `${index}`);

          updateAppearance({
            formRef,
            rootRef: bitLoginSectionRoot,
            host,
          });
        }
      } catch (err) {
        console.error(`error while initiating bitlogin extensions`, err);
      } finally {
        // Release the lock
        isInitializing = false;

        // Check if there are pending items in the queue
        if (queue.length > 0) {
          // Process the next function in the queue
          const nextFunction = queue.shift();
          nextFunction();
        }
      }
    }

    function initAll() {
      return new Promise((resolve, reject) => {
        setTimeout(async () => {
          const inputRefs = document.querySelectorAll(
            'input[name="customer[email]"]'
          );

          for (let i = 0; i < inputRefs.length; i++) {
            const currentInputRef = inputRefs[i];
            const isVisible = isElementVisible(currentInputRef);

            if (isVisible) {
              await init({ inputRef: currentInputRef, index: i });
            }
          }

          resolve("ok");
        }, 100);
      });
    }

    const observer = new MutationObserver((mutationsList) => {
      for (let mutation of mutationsList) {
        initAll();
      }
    });

    observer.observe(document.body, {
      childList: true,
      subtree: true,
      attributes: true,
    });

    initAll();

    if (appearance.googleOneTap) {
      setupOneTap({ host, checkoutUrl });
    }

    // Initialize popup
    await initPopup(host);
  } catch (error) {
    console.error("Error initializing BitLogin:", error);
  }
})();

async function initPopup(host) {
  // Check if user is already logged in using Liquid checks properly
  const isLoggedIn = false || 
                    document.querySelector('.customer-logout-link') || 
                    document.querySelector('.account-link') || 
                    window.location.pathname.includes('/account');
  
  if (isLoggedIn) {
    return; // User is logged in, don't show popup
  }

  try {
    // Fetch the popup configuration
    const popupConfig = await fetch(`${apiUrl}/appearance/popup/domain/${host}`)
      .then(res => res.json())
      .catch(err => {
        console.error('Error fetching popup configuration:', err);
        return null;
      });

    if (!popupConfig || !popupConfig.enabled) {
      return; // Don't show popup if disabled or config not found
    }

    // Create popup after 10 seconds
    setTimeout(() => {
      // Check if user is still on the page and still not logged in
      if (document.visibilityState === 'visible') {
        // Additional check in case user logged in during the 10 second wait
        const currentlyLoggedIn = false || 
                              document.querySelector('.customer-logout-link') || 
                              document.querySelector('.account-link');
        
        if (!currentlyLoggedIn) {
          createLoginPopup(popupConfig, host);
        }
      }
    }, 10000);
  } catch (error) {
    console.error('Error initializing popup:', error);
  }
}

function createLoginPopup(popupConfig, host) {
  // Font mapping
  const fontFamilyMap = {
    system_fonts: 'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
    montserrat: 'Montserrat, sans-serif',
    roboto: 'Roboto, sans-serif',
    open_sans: 'Open Sans, sans-serif',
    noto_sans: 'Noto Sans, sans-serif',
    lato: 'Lato, sans-serif',
    poppins: 'Poppins, sans-serif',
    quicksand: 'Quicksand, sans-serif',
    raleway: 'Raleway, sans-serif',
    pt_sans: 'PT Sans, sans-serif',
    oswald: 'Oswald, sans-serif',
  };

  // Create overlay
  const overlay = document.createElement('div');
  overlay.className = 'bitlogin-popup-overlay';
  
  // Create popup container with appropriate styling
  const popup = document.createElement('div');
  popup.className = 'bitlogin-popup';

  if (popupConfig.layout === 'default') {
    popup.style.maxWidth = '400px';
  }
  
  // Function to close the popup
  const closePopup = () => {
    overlay.classList.remove('visible');
    popup.classList.remove('visible');
    setTimeout(() => {
      if (document.body.contains(overlay)) {
        document.body.removeChild(overlay);
      }
    }, 300);
  };
  
  // Add click handler to the overlay to close when clicking outside
  overlay.addEventListener('click', (event) => {
    // Close only if clicking directly on the overlay, not its children
    if (event.target === overlay) {
      closePopup();
    }
  });
  
  // Add escape key handler to close popup
  document.addEventListener('keydown', (event) => {
    if (event.key === 'Escape' && document.body.contains(overlay)) {
      closePopup();
    }
  });

  // Create layout with image if specified
  let contentWrapper;
  if (popupConfig.layout !== 'default' && popupConfig.popupImage) {
    popup.classList.add('bitlogin-popup-with-image');
    
    if (popupConfig.layout === 'right') {
      popup.classList.add('bitlogin-popup-right-image');
    }
    
    // Add image
    const image = document.createElement('img');
    image.className = 'bitlogin-popup-image';
    image.src = popupConfig.popupImage;
    image.alt = 'Login';
    image.loading = 'lazy';
    popup.appendChild(image);
    
    // Create content container
    contentWrapper = document.createElement('div');
    contentWrapper.className = 'bitlogin-popup-content';

    if (popupConfig.layout === 'right') {
      const closeButton = document.createElement('button');
      closeButton.className = 'bitlogin-popup-close';
      closeButton.innerHTML = `<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
        <path d="M13 1L1 13M1 1L13 13" stroke="${popupConfig.fontColor}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
      </svg>`;
      closeButton.setAttribute('aria-label', 'Close');
      closeButton.onclick = closePopup;
  
      popup.appendChild(closeButton);
    }
  } else {
    contentWrapper = document.createElement('div');
    contentWrapper.className = 'bitlogin-popup-content';
    contentWrapper.style.width = '100%';
  }

  // Set background style
  if (popupConfig.backgroundTheme === 'gradient') {
    contentWrapper.style.background = `linear-gradient(135deg, ${popupConfig.backgroundPopupColor}, ${popupConfig.gradientColor})`;
  } else {
    contentWrapper.style.backgroundColor = popupConfig.backgroundPopupColor;
  }

  // Apply font family
  contentWrapper.style.setProperty('font-family', fontFamilyMap[popupConfig.font] || fontFamilyMap.system_fonts, 'important');

  if (popupConfig.layout !== 'right') {
    const closeButton = document.createElement('button');
    closeButton.className = 'bitlogin-popup-close';
    closeButton.innerHTML = `<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
      <path d="M13 1L1 13M1 1L13 13" stroke="${popupConfig.fontColor}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
    </svg>`;
    closeButton.setAttribute('aria-label', 'Close');
    closeButton.onclick = closePopup;
  
    contentWrapper.appendChild(closeButton);
  }

  // Add heading with subtle animation effect
  const header = document.createElement('div');
  header.className = 'bitlogin-popup-header';
  
  const heading = document.createElement('h2');
  heading.textContent = popupConfig.headingText || 'Sign in for exclusive benefits';
  heading.style.color = popupConfig.fontColor;
  header.appendChild(heading);

  // Add body text with improved formatting
  const bodyText = document.createElement('div');
  bodyText.innerHTML = popupConfig.bodyText || 'Join our community to access exclusive offers and a personalized shopping experience.';
  bodyText.style.color = popupConfig.fontColor;
  header.appendChild(bodyText);
  
  contentWrapper.appendChild(header);

  // Create buttons container with modern styling
  const buttonsContainer = document.createElement('div');
  buttonsContainer.className = 'bitlogin-popup-buttons';
  
  // Add social buttons
  const providerLabels = {
    'GOOGLE': 'Continue with Google',
    'FACEBOOK': 'Continue with Facebook',
    'APPLE': 'Continue with Apple',
    'WHATSAPP': 'Continue with WhatsApp',
    'MAGIC_LINK': 'Continue with Email',
  };

  // Add first login provider button
  if (popupConfig.loginProvider1 !== 'NONE') {
    const buttonConfig = {
      theme: popupConfig.colorScheme || 'match',
      customColor: popupConfig.textColor,
      format: 'contentFlex',
      buttonText: bitloginCache.appearance.buttonList[popupConfig.loginProvider1.toLowerCase()],
      hasShadow: popupConfig.hasShadow !== undefined ? popupConfig.hasShadow : true,
      style: popupConfig.style || 'rounded',
      size: popupConfig.size || 'medium',
      colorScheme: popupConfig.colorScheme || 'match',
      backgroundColor: popupConfig.backgroundColor || '#3B82F6',
      textColor: popupConfig.textColor || '#FFFFFF',
      outlineColor: popupConfig.outlineColor || '#3B82F6',
      host: host
    };
    
    const button1 = createSocialLoginButton(popupConfig.loginProvider1, buttonConfig);
    
    // Handle click event - this overrides the default click handler in createSocialLoginButton
    button1.onclick = () => {
      onClickSocialLogin({ provider: popupConfig.loginProvider1.toLowerCase(), host });
      closePopup();
    };
    
    buttonsContainer.appendChild(button1);
  }

  // Add second login provider button if enabled
  if (popupConfig.loginProvider2 !== 'NONE') {
    const buttonConfig = {
      theme: popupConfig.colorScheme || 'match',
      customColor: popupConfig.textColor,
      format: 'contentFlex',
      buttonText: bitloginCache.appearance.buttonList[popupConfig.loginProvider2.toLowerCase()],
      hasShadow: popupConfig.hasShadow !== undefined ? popupConfig.hasShadow : true,
      style: popupConfig.style || 'rounded',
      size: popupConfig.size || 'medium',
      colorScheme: popupConfig.colorScheme || 'match',
      backgroundColor: popupConfig.backgroundColor || '#3B82F6',
      textColor: popupConfig.textColor || '#FFFFFF',
      outlineColor: popupConfig.outlineColor || '#3B82F6',
      host: host
    };
    
    const button2 = createSocialLoginButton(popupConfig.loginProvider2, buttonConfig);
    
    // Handle click event - this overrides the default click handler in createSocialLoginButton
    button2.onclick = () => {
      onClickSocialLogin({ provider: popupConfig.loginProvider2.toLowerCase(), host });
      closePopup();
    };
    
    buttonsContainer.appendChild(button2);
  }

  contentWrapper.appendChild(buttonsContainer);

  // Append content to popup
  popup.appendChild(contentWrapper);
  
  // Append popup to overlay
  overlay.appendChild(popup);
  
  // Append overlay to body
  document.body.appendChild(overlay);
  
  // Trigger animation with slight delay for better perceived performance
  setTimeout(() => {
    overlay.classList.add('visible');
    setTimeout(() => {
      popup.classList.add('visible');
    }, 50);
  }, 10);
}

window.addEventListener("load", () => {
  window.addEventListener("message", (event) => {
    const receivedData = event.data;

    if (receivedData.type === "authorize") {
      post(
        JSON.parse(
          JSON.stringify({
            "customer[email]": receivedData.email,
            "customer[password]": receivedData.password,
            form_type: "customer_login",
            utf8: "✓",
            return_url: redirectUrl,
          })
        )
      );
    } else if (receivedData.type === "rejected") {
      if (receivedData.reason === "customer_account_disabled") {
        showAlert(
          "Your account needs to be activated. We've sent you an activation link - please check your email to complete this step."
        );
      } else if (receivedData.reason === "customer_entry_created_email_not_set") {
        showAlert(
          "A new account was created but requires an email address. Please update your account with a valid email address to continue."
        );
      } else if (receivedData.reason === "customer_exist_email_not_set") {
        showAlert(
          "Your existing account is missing an email address. Please contact support to update your account with a valid email address."
        );
      }
    }

    if (receivedData.type === "customer_authenticated") {
      // Dispatch a custom event that merchants can listen for to implement their custom logic
      const customerAuthEvent = new CustomEvent('bitlogin:customer_authenticated', {
        detail: {
          provider: receivedData.provider,
          customer: receivedData.customer,
          shopifyCustomerCreated: receivedData.shopifyCustomerCreated
        }
      });
      
      // Dispatch the event on the window object so merchants can listen for it
      window.dispatchEvent(customerAuthEvent);
      
    }
  });
});

// Reusable functions for social login buttons
function createSocialLoginButton(provider, config = {}) {
  const {
    theme = 'match',
    customColor = null,
    format = 'contentFlex',
    buttonText = null,
    hasShadow = true,
    style = 'rounded',
    size = 'medium',
    colorScheme = 'match',
    backgroundColor = '#3B82F6',
    textColor = '#FFFFFF',
    outlineColor = '#3B82F6',
    rootRef = null,
    host = null
  } = config;
  
  // Create button element with appropriate ID and attributes
  const button = document.createElement('button');
  button.id = `${provider.toLowerCase()}-login`;
  button.type = 'button';
  
  // Set the inner SVG based on provider
  switch (provider.toUpperCase()) {
    case 'GOOGLE':
      button.innerHTML = googleLoginIcon(theme, customColor);
      break;
    case 'FACEBOOK':
      button.innerHTML = facebookLoginIcon(theme, customColor);
      break;
    case 'APPLE':
      button.innerHTML = appleLoginIcon(theme, customColor);
      break;
    case 'WHATSAPP':
      button.innerHTML = whatsappLoginIcon(theme, customColor);
      break;
    case 'MICROSOFT':
      button.innerHTML = microsoftLoginIcon(theme, customColor);
      break;
    case 'TWITTER':
      button.innerHTML = twitterLoginIcon(theme, customColor);
      break;
    case 'AMAZON':
      button.innerHTML = amazonLoginIcon(theme, customColor);
      break;
    case 'INSTAGRAM':
      button.innerHTML = instagramLoginIcon(theme, customColor);
      break;
    case 'MAGIC_LINK':
      button.innerHTML = magicLinkLoginIcon(theme, customColor);
      break;
    case 'MOBILE_APP':
      button.innerHTML = mobileAppLoginIcon(theme, customColor);
      break;
    case 'LINKEDIN':
      button.innerHTML = linkedinLoginIcon(theme, customColor);
      break;
  }
  
  // Add text if format isn't icon-only and buttonText is provided
  if (format !== "wrapperFlexContainerOnlyLogo" && buttonText) {
    button.innerHTML += `<p>${buttonText}</p>`;
  }
  
  // Apply styling
  // Shadow
  if (hasShadow) {
    const shadowProperties = `0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)`;
    button.style["box-shadow"] = shadowProperties;
  }
  
  // Border radius
  const radiusProperties =
    style === "rounded"
      ? "8px"
      : style === "square"
      ? "0px"
      : style === "fullRounded"
      ? format === "wrapperFlexContainerOnlyLogo"
        ? "50%"
        : "50px"
      : undefined;
  button.style["border-radius"] = radiusProperties;
  
  // Size
  const sizeProperties =
    size === "medium"
      ? "12px"
      : size === "small"
      ? "8px"
      : size === "large"
      ? "16px"
      : "8px";

  button.style["padding-block"] = sizeProperties;

  // Format styling
  if (format) {
    if (
      format === "contentFlexReverse" ||
      format === "contentFlexCenterReverse"
    ) {
      const flexDir = `row-reverse`;
      button.style["flex-direction"] = flexDir;
    }
    
    if (
      format === "contentFlexCenter" ||
      format === "contentFlexCenterReverse"
    ) {
      const justifyContent = `center`;
      button.style["justify-content"] = justifyContent;
    } else if (
      format === "contentFlex" ||
      format === "contentFlexReverse"
    ) {
      const buttonTextElement = button.querySelector("p");
      if (buttonTextElement) {
        buttonTextElement.style["flex-grow"] = 1;
        buttonTextElement.style["text-align"] = "center";
      }
    }

    if (format === "wrapperFlexContainerOnlyLogo" && rootRef) {
      rootRef.style["flex-direction"] = "row";
      rootRef.style["gap"] = "8px";
      rootRef.style["display"] = "flex";
      rootRef.style["flex-wrap"] = "wrap";

      const sizeMapping = {
        small: "52px",
        medium: "62px",
        large: "72px",
      };
      const buttonSize = sizeMapping[size] || "52px";

      button.style["margin"] = 0;
      button.style["width"] = buttonSize;
      button.style["height"] = buttonSize;
      button.style["display"] = "flex";
      button.style["align-items"] = "center";
      button.style["justify-content"] = "center";

      const svgElement = button.querySelector("svg");
      if (svgElement) {
        svgElement.style["flex"] = "none";
      }
    }
  }

  // Color scheme styling
  if (colorScheme === "black") {
    button.classList.add("scheme-black");
  } else if (colorScheme === "white") {
    button.classList.add("scheme-white");
  } else if (colorScheme === "custom") {
    button.style["background-color"] = backgroundColor;
    button.style["color"] = textColor;
    button.style["border-color"] = outlineColor;

    const darkenColor = (color, percentage) => {
      const value = parseInt(color.slice(1), 16);
      const r = Math.max(0, ((value >> 16) & 0xff) - (0xff * percentage));
      const g = Math.max(0, ((value >> 8) & 0xff) - (0xff * percentage));
      const b = Math.max(0, (value & 0xff) - (0xff * percentage));
      return `rgb(${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)})`;
    };

    button.addEventListener("mouseover", () => {
      button.style["background-color"] = darkenColor(backgroundColor, 0.2);
    });
    button.addEventListener("mouseout", () => {
      button.style["background-color"] = backgroundColor;
    });
  } else if (colorScheme === "match") {
    button.classList.add("scheme-match");
  } else if (colorScheme === "matchOutline") {
    button.classList.add("scheme-match-outline");
  }
  
  // Add click event listener if host is provided
  if (host) {
    button.addEventListener("click", () => 
      onClickSocialLogin({ provider: provider.toLowerCase(), host })
    );
  }
  
  return button;
}

function setupSocialLoginButtons(config, rootRef, data, host) {
  // Clear any existing content
  rootRef.innerHTML = '';

  const sortedEnabledProviders = config
    .filter(c => c.enabledWeb)
    .sort((a, b) => a.position - b.position);

  sortedEnabledProviders.forEach(provider => {
    const key = provider.provider;
    const lowerKey = key.toLowerCase();

    const buttonText = data.format !== "wrapperFlexContainerOnlyLogo"
      ? (lowerKey === 'twitter'
          ? data.buttonList.twitter.replace('Twitter', 'X')
          : data.buttonList[lowerKey])
      : null;

    const button = createSocialLoginButton(key, {
      theme: data.colorScheme || 'match',
      customColor: data.textColor,
      format: data.format,
      buttonText: buttonText,
      hasShadow: data.hasShadow !== undefined ? data.hasShadow : true,
      style: data.style,
      size: data.size,
      colorScheme: data.colorScheme,
      backgroundColor: data.backgroundColor,
      textColor: data.textColor,
      outlineColor: data.outlineColor,
      rootRef: rootRef,
      host: host
    });

    rootRef.appendChild(button);
  });

  return rootRef;
}

function updateAppearance({ formRef, rootRef, host }) {
  if (!formRef) return;

  const data = bitloginCache.appearance || {
    style: "square",
    hasShadow: false,
    colorScheme: "match",
    backgroundColor: "#FFFFFF",
    outlineColor: "#000000",
    textColor: "#000000",
    position: "bottom",
    hideDivider: "false",
    dividerText: "OR",
    size: "small",
    format: "contentFlex",
    language: "en",
    buttonText: "Continue with",
    redirectLink: "/account",
    googleOneTap: true,
    googleOneTapBanner: true,
    customerTag: "bitLogin",
    redirectOneTapDesktop: null,
    redirectOneTapMobile: null,
    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",
    },
  };

  // Use the new setupSocialLoginButtons function to create and configure all buttons
  setupSocialLoginButtons(bitloginCache.config, rootRef, data, host);

  let divider;

  if (!data.hideDivider) {
    divider = document.createElement("div");
    const dividerStyle = "text-align:center;margin-block:16px";
    divider.setAttribute("style", dividerStyle);
    divider.innerHTML = data.dividerText;
  }

  if (data.position === "bottom") {
    if (divider) {
      formRef.appendChild(divider);
    }
    formRef.appendChild(rootRef);
  } else if (data.position === "top") {
    if (divider) {
      formRef.prepend(divider);
    }
    formRef.prepend(rootRef);
  }
}


async function onClickSocialLogin({ provider, host }) {
  const rand = Math.random().toString();

  const locationQueryString = bitloginCache.location
    ? `&${objectToQueryString(bitloginCache.location)}`
    : "";

  const width = 800;
  const height = 600;
  const left = (window.screen.width / 2) - (width / 2);
  const top = (window.screen.height / 2) - (height / 2) - 50;

  if(provider === 'whatsapp') {
    window.open(
      `/apps/bitlogin/whatsapp${locationQueryString ? `?${locationQueryString}` : ''}`,
      "mywindow",
      `menubar=1,resizable=1,width=${width},height=${height},top=${top},left=${left}`
    );
  } else {
    window.open(
      `${apiUrl}/login/${provider}?referrerId=${rand}&shop=${host}${locationQueryString}`,
      "mywindow",
      `menubar=1,resizable=1,width=${width},height=${height},top=${top},left=${left}`
    );
  }
}

function objectToQueryString(obj) {
  return Object.keys(obj)
    .map((key) => {
      return encodeURIComponent(key) + "=" + encodeURIComponent(obj[key]);
    })
    .join("&");
}

async function getLocation() {
  if (locationCacheSet) return;

  try {
    const response = await fetch("https://ipapi.co/json/");

    if (!response.ok) {
      console.error(`error retrieving location...`, response.status);
      errorLocation = true;
    } else {
      const data = await response.json();

      const { city, region, country_name, country_code } = data;

      const formattedLocationData = {
        city,
        region,
        country_name,
        country_code,
      };

      bitloginCache.location = formattedLocationData;
      locationCacheSet = true;
      errorLocation = false;
    }
  } catch (err) {
    console.error(`error fetching location`, err);
    errorLocation = true;
  }
}

function post(params) {
  // The rest of this code assumes you are not using a library.
  // It can be made less verbose if you use one.
  const form = document.createElement("form");
  form.method = "post";
  form.action = `/account/login`;
  form.acceptCharset = "UTF-8";
  form.setAttribute("data-login-with-shop-sign-in", "true");
  form.setAttribute("novalidate", "novalidate");

  for (const key in params) {
    if (params.hasOwnProperty(key)) {
      const hiddenField = document.createElement("input");
      hiddenField.type = "hidden";
      hiddenField.name = key;
      hiddenField.value = params[key];

      form.appendChild(hiddenField);
    }
  }

  document.body.appendChild(form);
  form.submit();
}

async function setupOneTap({ host, checkoutUrl }) {
  if (oneTapSet) return;

  const redirectOneTapDesktop = JSON.parse(JSON.stringify(bitloginCache.appearance.redirectOneTapDesktop || '[]'));
  const redirectOneTapMobile = JSON.parse(JSON.stringify(bitloginCache.appearance.redirectOneTapMobile || '[]'));

  const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
  const redirectList = JSON.parse(isMobile ? redirectOneTapMobile : redirectOneTapDesktop);

  const currentPath = window.location.pathname.toLowerCase();
  const currentUrl = window.location.href.toLowerCase();

  const shouldHideGoogleOneTap = redirectList.some(({ value }) => {
    switch (value) {
      case 'home':
        return currentPath === '/';
      case 'product':
        return currentPath.startsWith('/products/');
      case 'collections':
        return currentPath.startsWith('/collections');
      case 'cart':
        return currentPath === '/cart';
      case 'checkout':
        return currentPath.startsWith('/checkouts') && !currentPath.includes('thank_you');
      case 'thank_you':
        return currentPath.includes('/thank_you');
      case 'account':
        return currentPath.startsWith('/account');
      case 'pages':
        return currentPath.startsWith('/pages');
      case 'blogs':
        return currentPath === '/blogs' || currentPath === '/blogs/news';
      case 'blog_post':
        return currentPath.startsWith('/blogs/') && currentPath.split('/').length > 3;
      default:
        return false;
    }
  });

  if (shouldHideGoogleOneTap) return;

  const oneTapClientId = bitloginCache.config.find(
    (config) => config.provider === "GOOGLE"
  )?.clientId;

  const isLoggedIn = false;

  if (bitloginCache.appearance.googleOneTap && oneTapClientId && !isLoggedIn) {
    const googleOneTapButton = document.createElement("div");
    googleOneTapButton.setAttribute("id", "g_id_onload");
    googleOneTapButton.setAttribute("data-client_id", oneTapClientId);
    googleOneTapButton.setAttribute("data-context", "signin");
    googleOneTapButton.setAttribute(
      "data-callback",
      "handleGoogleOneTapResponse"
    );
    googleOneTapButton.setAttribute("data-itp_support", "true");

    const googleOneTapScript = document.createElement("script");

    googleOneTapScript.innerHTML += `
          function handleGoogleOneTapResponse(response) {
              if (response.credential) {
                  const idToken = response.credential;
                  fetch('${bitLoginBaseUrl}/bitlogin/api/login/google-one-tap', {
                      method: 'POST',
                      headers: { 'Content-Type': 'application/json' },
                      body: JSON.stringify({ idToken, shop: "${host}", ...bitloginCache.location })
                  }).then(response => {
                      response.json().then((data) => {
                        post(
                          JSON.parse(
                            JSON.stringify({
                              "customer[email]": data.email,
                              "customer[password]": data.password,
                              form_type: "customer_login",
                              utf8: "✓",
                              return_url: redirectUrl,
                            })
                          )
                        );
                      });  
                  }).catch(error => {
                      console.error('Error occurred:', error);
                  });
              } else {
                  console.error('No credential available');
              }
          }
       `;

    document.body.append(googleOneTapButton);
    document.body.append(googleOneTapScript);
  }

  oneTapSet = true;
}

const googleLoginIcon = (
  theme,
  customColor
) => `
${
  theme === "match" || theme === "matchOutline" || theme === "custom"
    ? `<svg
    xmlns='http://www.w3.org/2000/svg'
    xmlns:v='https://vecta.io/nano'
    width='24'
    height='24'
    viewBox='0 0 186.69 190.5'
  >
    <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="${
      theme === "custom" ? customColor : "#4285f4"
    }"/><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="${
        theme === "custom" ? customColor : "#34a853"
      }"/><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="${
        theme === "custom" ? customColor : "#fbbc05"
      }"/><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="${
        theme === "custom" ? customColor : "#ea4335"
      }" clip-path="none" mask="none"/></g>
  </svg>`
    : `<svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 25 25" fill="none">
<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="${
        theme !== "black" ? "black" : "white"
      }"/>
<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="${
        theme !== "black" ? "black" : "white"
      }"/>
<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="${
        theme !== "black" ? "black" : "white"
      }"/>
<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="${
        theme !== "black" ? "black" : "white"
      }"/>
</svg>`
}`;

const appleLoginIcon = (
  theme,
  customColor
) => `<svg width="24" height="24" viewBox="0 0 19 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<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="${
  theme === "custom"
    ? customColor
    : theme === "match" || theme === "black"
    ? "white"
    : "black"
}"/>
</svg>`;

const facebookLoginIcon = (
  theme,
  customColor
) => `
${
  theme === "match" || theme === "matchOutline" || theme === "custom"
    ? `<svg xmlns="http://www.w3.org/2000/svg" width="24" height="25" viewBox="0 0 24 25" fill="none">
    <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="${
      theme === "custom" ? customColor : theme === "match" ? "white" : "#1977F3"
    }"/>
    <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="${
      theme === "match" ? "#1778f2" : "transparent"
    }"/>
    </svg>`
    : `<svg xmlns="http://www.w3.org/2000/svg" width="24" height="25" viewBox="0 0 24 25" fill="none">
<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="${
        theme === "black" ? "white" : "black"
      }"/>
<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="${
        theme === "black" ? "black" : "white"
      }"/>
</svg>`
}`;

const whatsappLoginIcon = (
  theme,
  customColor
) => `<svg
  viewBox="0 0 24 24"
  fill="none"
  width="24"
  height="25"
  xmlns="http://www.w3.org/2000/svg"
>
  <g id="SVGRepo_bgCarrier" stroke-width="0"></g>
  <g
    id="SVGRepo_tracerCarrier"
    stroke-linecap="round"
    stroke-linejoin="round"
  ></g>
  <g id="SVGRepo_iconCarrier">
    <path
      fill-rule="evenodd"
      clip-rule="evenodd"
      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"
      fill="${
        theme === "match" || theme === "black"
          ? "#ffffff"
          : theme === "white"
          ? "#000000"
          : theme === "matchOutline"
          ? "#25d366"
          : customColor
      }"
    ></path>
  </g>
</svg>`;

const microsoftLoginIcon = (
  theme,
  customColor
) => `<svg
xmlns="http://www.w3.org/2000/svg"
width="25"
height="25"
viewBox="0 0 48 48">
<path fill="${
  theme === "match" || theme == "matchOutline"
    ? "#ff5722"
    : theme === "black"
    ? "#ffffff"
    : theme === "white"
    ? "#000000"
    : customColor
}" d="M6 6H22V22H6z" transform="rotate(-180 14 14)"></path>
<path
  fill="${
    theme === "match" || theme == "matchOutline"
      ? "#4caf50"
      : theme === "black"
      ? "#ffffff"
      : theme === "white"
      ? "#000000"
      : customColor
  }"
  d="M26 6H42V22H26z"
  transform="rotate(-180 34 14)"></path>
<path
  fill="${
    theme === "match" || theme == "matchOutline"
      ? "#ffc107"
      : theme === "black"
      ? "#ffffff"
      : theme === "white"
      ? "#000000"
      : customColor
  }"
  d="M26 26H42V42H26z"
  transform="rotate(-180 34 34)"></path>
<path fill="${
  theme === "match" || theme == "matchOutline"
    ? "#03a9f4"
    : theme === "black"
    ? "#ffffff"
    : theme === "white"
    ? "#000000"
    : customColor
}" d="M6 26H22V42H6z" transform="rotate(-180 14 34)"></path>
</svg>`;

const twitterLoginIcon = (
  theme,
  customColor
) => `<svg
xmlns="http://www.w3.org/2000/svg"
width="25"
height="25"
viewBox="0 0 48 48">
<polygon fill="${
  theme === "match" || theme === "black"
    ? "#ffffff"
    : theme === "matchOutline" || theme === "white"
    ? "#000000"
    : customColor
}" points="41,6 9.929,42 6.215,42 37.287,6"></polygon>
<polygon
  fill="${
    theme === "match" || theme === "black"
      ? "#000000"
      : theme === "matchOutline" || theme === "white"
      ? "#ffffff"
      : customColor
  }"
  fill-rule="evenodd"
  points="31.143,41 7.82,7 16.777,7 40.1,41"
  clip-rule="evenodd"></polygon>
<path
  fill="${
    theme === "match" || theme === "black"
      ? "#ffffff"
      : theme === "matchOutline" || theme === "white"
      ? "#000000"
      : customColor
  }"
  d="M15.724,9l20.578,30h-4.106L11.618,9H15.724 M17.304,6H5.922l24.694,36h11.382L17.304,6L17.304,6z"></path>
</svg>`;

const amazonLoginIcon = (theme, customColor) => `
 <svg
      xmlns="http://www.w3.org/2000/svg"
      x="0px"
      y="0px"
      width="25"
      height="25"
      viewBox="0 0 50 50"
    >
      <path
        fill="${
          theme === "black"
            ? "#ffffff"
            : theme === "matchOutline"
            ? "#FF9900"
            : theme === "white" || theme === "match"
            ? "#000000"
            : customColor
        }"
        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"
      ></path>
    </svg>`;

const instagramLoginIcon= (theme, customColor) => `
    <svg
      width="25"
      height="25"
      viewBox="0 0 25 24"
      fill="none"
      xmlns="http://www.w3.org/2000/svg">
      <path
        fill-rule="evenodd"
        clip-rule="evenodd"
        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"
        fill="url(#paint0_radial_378_3535)" />
      <path
        fill-rule="evenodd"
        clip-rule="evenodd"
        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"
        fill="url(#paint0_radial_378_3535)" />
      <path
        fill-rule="evenodd"
        clip-rule="evenodd"
        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"
        fill="url(#paint0_radial_378_3535)" />
      <path
        fill-rule="evenodd"
        clip-rule="evenodd"
        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"
        fill="url(#paint1_radial_378_3535)" />
      <defs>
        <radialGradient
          id="paint0_radial_378_3535"
          cx="0"
          cy="0"
          r="1"
          gradientUnits="userSpaceOnUse"
          gradientTransform="translate(17.4 22.7) rotate(-115.776) scale(27.2737 40.5665)">
          <stop offset="0.24392" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FF1B90' : customColor}" />
          <stop offset="0.436673" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#F80261' : customColor}" />
          <stop offset="0.688476" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#ED00C0' : customColor}" />
          <stop offset="0.776787" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#C500E9' : customColor}" />
          <stop offset="0.893155" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#7017FF' : customColor}" />
        </radialGradient>
        <radialGradient
          id="paint1_radial_378_3535"
          cx="0"
          cy="0"
          r="1"
          gradientUnits="userSpaceOnUse"
          gradientTransform="translate(7.75 19.31) rotate(-57.4396) scale(11.8174 12.2918)">
          <stop stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FFD600' : customColor}" />
          <stop offset="0.484375" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FF6930' : customColor}" />
          <stop offset="0.734375" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FE3B36' : customColor}" />
          <stop offset="1" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FE3B36' : customColor}" stop-opacity="0" />
        </radialGradient>
      </defs>
    </svg>`;

const magicLinkLoginIcon = (theme, customColor) => `
  <svg
    xmlns="http://www.w3.org/2000/svg"
    width="25"
    height="25"
    fill="none"
    viewBox="0 0 25 25"
  >
    <path
      fill="${
        theme === 'match' || theme === 'black' ? '#ffffff' : theme === 'matchOutline' || theme === 'white' ? '#000000' : customColor
      }"
      fillRule="evenodd"
      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"
      clipRule="evenodd"
    ></path>
  </svg>`;

const mobileAppLoginIcon = (theme, customColor) => `
  <svg
    width="20"
    height="24"
    viewBox="0 0 12 16"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <path
      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"
      fill=${
        theme === 'match' || theme === 'black' ? '#ffffff' : theme === 'matchOutline' ? '#FD823E' : theme === 'white' ? '#000000' : customColor
      }
    />
  </svg>
`;

const linkedinLoginIcon = (theme, customColor) => `
  <svg
    xmlns="http://www.w3.org/2000/svg"
    width="25"
    height="24"
    viewBox="0 0 25 24"
    fill="none"
  >
    <path
      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"
      fill=${
        theme === 'match' || theme === 'black' ? '#ffffff' : theme === 'matchOutline' ? '#0A66C2' : theme === 'white' ? '#000000' : customColor
      }
    />
  </svg>
`;

function isElementVisible(element) {
  return (
    document.body.contains(element) &&
    getComputedStyle(element).display !== "none" &&
    getComputedStyle(element).visibility !== "hidden" &&
    getComputedStyle(element).opacity !== "0" &&
    !element.hasAttribute("hidden") &&
    !isAncestorHidden(element)
  );
}

function isAncestorHidden(element) {
  let parent = element.parentElement;
  while (parent) {
    if (
      getComputedStyle(parent).display === "none" ||
      getComputedStyle(parent).visibility === "hidden" ||
      getComputedStyle(parent).opacity === "0" ||
      parent.hasAttribute("hidden")
    ) {
      return true;
    }
    parent = parent.parentElement;
  }
  return false;
}

function showAlert(message) {
  const alertBox = document.createElement("div");
  alertBox.textContent = message;
  alertBox.style.position = "fixed";
  alertBox.style.top = "20px";
  alertBox.style.right = "-300px"; // Start off-screen
  alertBox.style.backgroundColor = "#000000"; // Black background
  alertBox.style.color = "#ffffff"; // White text
  alertBox.style.padding = "15px";
  alertBox.style.borderRadius = "8px";
  alertBox.style.zIndex = "1000";
  alertBox.style.transition =
    "right 0.5s ease-in-out, opacity 0.5s ease-in-out"; // Transition for sliding and fading
  alertBox.style.boxShadow = "0 2px 5px rgba(0, 0, 0, 0.2)"; // Optional shadow for depth

  document.body.appendChild(alertBox);

  // Slide in
  requestAnimationFrame(() => {
    alertBox.style.right = "20px"; // Move into view
    alertBox.style.opacity = "1"; // Ensure opacity is set to 1
  });

  // Slide out and remove the alert after a few seconds
  setTimeout(() => {
    alertBox.style.opacity = "0"; // Fade out
    alertBox.style.right = "-300px"; // Move out of view

    // Wait for the transition to finish before removing the element
    setTimeout(() => {
      document.body.removeChild(alertBox);
    }, 500); // Match this duration with the exit transition duration
  }, 3000);
}
</script>


</div><script defer src="https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon='{"version":"2024.11.0","token":"52f149dbc25d4497992fcf7d6b878853","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon='{"version":"2024.11.0","token":"52f149dbc25d4497992fcf7d6b878853","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon='{"version":"2024.11.0","token":"52f149dbc25d4497992fcf7d6b878853","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html>