1 2<!doctype html> 3 <!--Brumm Brumm--> 4 <html class="no-js"> 5 <head> 6 <meta charset="utf-8"> 7 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 8 <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1"> 9 <meta name="apple-itunes-app" content="app-id=1576832504"> 10 <link rel="icon" type="image/x-icon" href="https://photoin.io/images/2025/09/27/FAVICON.png"> 11 <!-- Title and description --> 12 <title>KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya</title> 13 <meta name="description" content="KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari."> 14 <link rel="canonical" href="https://kvtotomatoa.com/"> 15 <link rel="amphtml" href="https://legend.kvtotomat.shop/"/> 16 <link rel="alternate" hreflang="id-id" href="https://legend.kvtotomat.shop/"/> 17 <link rel="alternate" href="https://legend.kvtotomat.shop/"/> 18 <link rel="alternate" hreflang="id" href="https://legend.kvtotomat.shop/"/> 19 <link rel="alternate" hreflang="en" href="https://legend.kvtotomat.shop/"/> 20 <link rel="alternate" hreflang="x-default" href="https://legend.kvtotomat.shop/"/> 21 <!-- /snippets/social-meta-tags.liquid --> 22 <meta property="og:type" content="SPORTGG"> 23 <meta property="og:title" content="KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya"> 24 <meta property="og:image" content="https://photoin.io/images/2026/05/16/deposit-slot-ba.png"> 25 <meta property="og:image:secure_url" content="https://photoin.io/images/2026/05/16/deposit-slot-ba.png"> 26 <meta property="og:image" content="https://photoin.io/images/2026/05/16/deposit-slot-ba.png"> 27 <meta property="og:image:secure_url" content="https://photoin.io/images/2026/05/16/deposit-slot-ba.png"> 28 <meta property="og:image" content="https://photoin.io/images/2026/05/16/deposit-slot-ba.png"> 29 <meta property="og:image:secure_url" content="https://photoin.io/images/2026/05/16/deposit-slot-ba.png"> 30 <meta property="og:description" content="KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari."> 31 <meta property="og:price:amount" content="5,000-,"> 32 <meta property="og:price:currency" content="IDR"> 33 <meta property="og:url" content="https://kvtotomatoa.com/"> 34 <meta property="og:site_name" content="KVTOTO"> 35 <meta name="twitter:site" content="@KVTOTO"> 36 <meta name="twitter:card" content="summary"> 37 <meta name="twitter:title" content="KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya"> 38 <meta name="twitter:description" content="KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari."> 39 <meta name="twitter:image" content="https://photoin.io/images/2026/05/16/deposit-slot-ba.png"> 40 <meta name="twitter:image:width" content="600"> 41 <meta name="twitter:image:height" content="600"> 42 <meta name="google-site-verification" content="BLoeWAIoWwUsFKjcGtAqY2H1Yf-1LJBJNp2lEqI61Uo" /> 43 <link rel="shortcut icon" href="https://photoin.io/images/2025/09/27/FAVICON.png" type="image/png"> 44 <meta name="theme-color" content="#ffffff"> 45 <link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700&family=Poppins&display=swap" rel="stylesheet"> 46 <link href="//outerbloom.com/cdn/shop/t/138/assets/custom-styles.css?v=94643080714485117621752652418" rel="stylesheet" type="text/css" media="all" /> 47 <link rel="stylesheet" href="//outerbloom.com/cdn/shop/t/138/assets/wishlist-styles.css?v=166819525406734116961754385201">
47<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js" defer></script>
47 48
48<script 49 src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js" 50 integrity="sha512-57oZ/vW8ANMjR/KQ6Be9v/+/h6bq9/l3f0Oc7vn6qMqyhvPd1cvKBRWWpzu0QoneImqr2SkmO4MSqU+RpHom3Q==" 51 crossorigin="anonymous" 52 referrerpolicy="no-referrer" 53 defer 54 ></script>
54 55
55<script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js" async="async"></script>
55 56
56<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/select2.min.js" defer></script>
56<!-- Facebook Pixel Code --> 57
57<script>
vendor: 462 bytes, lines 57-66
57 58 !function(f,b,e,v,n,t,s) 59 {if(f.fbq)return;n=f.fbq=function(){n.callMethod? 60 n.callMethod.apply(n,arguments):n.queue.push(arguments)}; 61 if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; 62 n.queue=[];t=b.createElement(e);t.async=!0; 63 t.src=v;s=b.getElementsByTagName(e)[0]; 64 s.parentNode.insertBefore(t,s)}(window, document,'script', 65 'https://connect.facebook.net/en_US/fbevents.js'); 66 fbq('init', '
66165971065669324
vendor: 42 bytes, lines 66-68
66'); 67 fbq('track', 'PageView'); 68
68</script>
68 69 <noscript 70 ><img 71 height="1" 72 width="1" 73 style="display:none" 74 src="https://www.facebook.com/tr?id=165971065669324&ev=PageView&noscript=1" 75 ></noscript> 76 <!-- End Facebook Pixel Code --> 77 78 <!-- Google G4 Script - Disabled by developer (William) to prioritize Mobile App tracking --> 79 <!-- 80 Global site tag (gtag.js) - Google Analytics -->
vendor: 75 bytes, lines 80-81
80 81 <script async src="https://www.googletagmanager.com/gtag/js?id=
81G-X26HYP4083
vendor: 23 bytes, lines 81-82
81"></script> 82
82<script> 83
vendor: 170 bytes, lines 83-87
83window.dataLayer = window.dataLayer || []; 84 function gtag(){dataLayer.push(arguments);} 85 gtag('js', new Date()); 86 87 gtag('config', '
87G-X26HYP4083
vendor: 15 bytes, lines 87-88
87'); 88
88</script>
88 89 <!-- Global site tag (gtag.js) - Google Analytics --> 90 91 <div class="button-login-daftar"> 92 <a class="login" href="https://legend.kvtotomat.shop/" rel="nofollow noreferrer"> 93 LOGIN 94 </a> 95 <a class="register" href="https://legend.kvtotomat.shop/" rel="nofollow noreferrer"> 96 DAFTAR 97 </a> 98 </div> 99 100
100<script src="//cdnjs.cloudflare.com/ajax/libs/vissense/0.9.0/vissense.js" defer></script>
100 101 102 <!-- Bing UET --> 103
103<script> 104 (function(w,d,t,r,u) 105 { 106 var f,n,i; 107 w[u]=w[u]||[],f=function() 108 { 109 var o={ti:"343051754", tm:"shpfy_ui", enableAutoSpaTracking: true}; 110 o.q=w[u],w[u]=new UET(o),w[u].push("pageLoad") 111 }, 112 n=d.createElement(t),n.src=r,n.async=1,n.onload=n.onreadystatechange=function() 113 { 114 var s=this.readyState; 115 s&&s!=="loaded"&&s!=="complete"||(f(),n.onload=n.onreadystatechange=null) 116 }, 117 i=d.getElementsByTagName(t)[0],i.parentNode.insertBefore(n,i) 118 }) 119 (window,document,"script","//bat.bing.com/bat.js","uetq"); 120 </script>
120 121
121<script> 122 window.uetq = window.uetq || []; 123 window.uetq.push('event', '', {"revenue_value":0,"currency":"IDR"}); 124 </script>
124 125 <!-- End Bing UET --> 126 127 <!-- Microsoft Clarity --> 128
128<script type="text/javascript"> 129 (function(c,l,a,r,i,t,y){ 130 c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; 131 t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; 132 y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); 133 })(window, document, "clarity", "script", "h7rbxqry9k"); 134 </script>
134 135 <!-- End Microsoft Clarity --> 136 137 138 <link href="//outerbloom.com/cdn/shop/t/138/assets/combine.min.css?v=111340648424012527321754385205" rel="stylesheet" type="text/css" media="all" /> 139 140 <link href="//outerbloom.com/cdn/shop/t/138/assets/font-awesome.css?v=132324219581463622051752652421" rel="stylesheet" type="text/css" media="all" /> 141 <link rel="stylesheet" href="//code.jquery.com/ui/1.13.0/themes/base/jquery-ui.min.css"> 142 143
143<script src="//code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
143 144
144<script src="//outerbloom.com/cdn/shop/t/138/assets/combine.js?v=140218079523075729301752652421" type="text/javascript"></script>
144 145
145<script src="//code.jquery.com/ui/1.13.0/jquery-ui.min.js"></script>
145 146
146<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
146 147 <meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/15896833/digital_wallets/dialog"> 148 <link rel="alternate" type="application/json+oembed" href="https://datatellers.info.oembed"> 149
149<script async="async" src="/checkouts/internal/preloads.js?locale=en-ID"></script>
149 150
150<script id="shopify-features" type="application/json">{"accessToken":"d2e176e59f6658d5056234d6249b3ab4","betas":["rich-media-storefront-analytics"],"domain":"outerbloom.com","predictiveSearch":true,"shopId":15896833,"locale":"en"}</script>
150 151
151<script>var Shopify = Shopify || {}; 152 Shopify.shop = "outerbloom1.myshopify.com"; 153 Shopify.locale = "en"; 154 Shopify.currency = {"active":"IDR","rate":"1.0"}; 155 Shopify.country = "ID"; 156 Shopify.theme = {"name":"web-outerbloom-shopify\/main","id":153139282135,"schema_name":null,"schema_version":null,"theme_store_id":null,"role":"main"}; 157 Shopify.theme.handle = "null"; 158 Shopify.theme.style = {"id":null,"handle":null}; 159 Shopify.cdnHost = "outerbloom.com/cdn"; 160 Shopify.routes = Shopify.routes || {}; 161 Shopify.routes.root = "/";</script>
161 162
162<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
162 163
163<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>
163 164
164<script id="shop-js-analytics" type="application/json">{"pageType":"product"}</script>
164 165
165<script defer="defer" async="async" src="//outerbloom.com/cdn/shopifycloud/shop-js/client.js" onload="window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 166 "></script>
166 167
167<script>(function() { 168 var isLoaded = false; 169 function asyncLoad() { 170 if (isLoaded) return; 171 isLoaded = true; 172 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"]; 173 for (var i = 0; i < urls.length; i++) { 174 var s = document.createElement('script'); 175 s.type = 'text/javascript'; 176 s.async = true; 177 s.src = urls[i]; 178 var x = document.getElementsByTagName('script')[0]; 179 x.parentNode.insertBefore(s, x); 180 } 181 }; 182 if(window.attachEvent) { 183 window.attachEvent('onload', asyncLoad); 184 } else { 185 window.addEventListener('load', asyncLoad, false); 186 } 187 })();</script>
187 188
188<script id="__st">var __st={"a":15896833,"offset":25200,"reqid":"78149bf2-9ab6-43c0-b2ce-821afbfe5bd0-1759566675","pageurl":"outerbloom.com\/products\/blossom-shine","u":"381e6a1da038","p":"product","rtyp":"product","rid":8144957800663};</script>
188 189
189<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
189 190
190<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>
190 191
191<script integrity="sha256-52AcMU7V7pcBOXWImdc/TAGTFKeNjmkeM1Pvks/DTgc=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//outerbloom.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-81c60534.js" crossorigin="anonymous"></script>
191 192
192<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)}}; 193 </script>
193 194
194<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 195 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); 196 </script>
196 197
197<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})}})); 198 </script>
198 199 200
200<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
200 201 <!-- /snippets/oldIE-js.liquid --> 202 203 204 <!--[if lt IE 9]> 205
205<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js" type="text/javascript"></script>
205 206
206<script src="//outerbloom.com/cdn/shop/t/138/assets/respond.min.js?v=52248677837542619231752652418" type="text/javascript"></script>
206 207 <link href="//outerbloom.com/cdn/shop/t/138/assets/respond-proxy.html" id="respond-proxy" rel="respond-proxy" /> 208 <link href="//outerbloom.com/search?q=142e9156869335090161dced0ac98b64" id="respond-redirect" rel="respond-redirect" /> 209
209<script src="//outerbloom.com/search?q=142e9156869335090161dced0ac98b64" type="text/javascript"></script>
209 210 <![endif]--> 211 212 213 214 215 216 <link href="https://cdn.shopify.com/extensions/5c1bf460-65bd-4bca-82d0-995a5814b48d/bitlogin-social-login-135/assets/app.css" rel="stylesheet" type="text/css" media="all"> 217 <link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch"> 218
218<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>
218 219
219<script id="web-pixels-manager-setup">(function e(e,d,r,n,o){if(void 0===o&&(o={}),!Boolean(null===(a=null===(i=window.Shopify)||void 0===i?void 0:i.analytics)||void 0===a?void 0:a.replayQueue)){var i,a;window.Shopify=window.Shopify||{};var t=window.Shopify;t.analytics=t.analytics||{};var s=t.analytics;s.replayQueue=[],s.publish=function(e,d,r){return s.replayQueue.push([e,d,r]),!0};try{self.performance.mark("wpm:start")}catch(e){}var l=function(){var e={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(13[5-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(13[5-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/},d=e.modern,r=e.legacy,n=navigator.userAgent;return n.match(d)?"modern":n.match(r)?"legacy":"unknown"}(),u="modern"===l?"modern":"legacy",c=(null!=n?n:{modern:"",legacy:""})[u],f=function(e){return[e.baseUrl,"/wpm","/b",e.hashVersion,"modern"===e.buildTarget?"m":"l",".js"].join("")}({baseUrl:d,hashVersion:r,buildTarget:u}),m=function(e){var d=e.version,r=e.bundleTarget,n=e.surface,o=e.pageUrl,i=e.monorailEndpoint;return{emit:function(e){var a=e.status,t=e.errorMsg,s=(new Date).getTime(),l=JSON.stringify({metadata:{event_sent_at_ms:s},events:[{schema_id:"web_pixels_manager_load/3.1",payload:{version:d,bundle_target:r,page_url:o,status:a,surface:n,error_msg:t},metadata:{event_created_at_ms:s}}]});if(!i)return console&&console.warn&&console.warn("[Web Pixels Manager] No Monorail endpoint provided, skipping logging."),!1;try{return self.navigator.sendBeacon.bind(self.navigator)(i,l)}catch(e){}var u=new XMLHttpRequest;try{return u.open("POST",i,!0),u.setRequestHeader("Content-Type","text/plain"),u.send(l),!0}catch(e){return console&&console.warn&&console.warn("[Web Pixels Manager] Got an unhandled error while logging to Monorail."),!1}}}}({version:r,bundleTarget:l,surface:e.surface,pageUrl:self.location.href,monorailEndpoint:e.monorailEndpoint});try{o.browserTarget=l,function(e){var d=e.src,r=e.async,n=void 0===r||r,o=e.onload,i=e.onerror,a=e.sri,t=e.scriptDataAttributes,s=void 0===t?{}:t,l=document.createElement("script"),u=document.querySelector("head"),c=document.querySelector("body");if(l.async=n,l.src=d,a&&(l.integrity=a,l.crossOrigin="anonymous"),s)for(var f in s)if(Object.prototype.hasOwnProperty.call(s,f))try{l.dataset[f]=s[f]}catch(e){}if(o&&l.addEventListener("load",o),i&&l.addEventListener("error",i),u)u.appendChild(l);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(l)}}({src:f,async:!0,onload:function(){if(!function(){var e,d;return Boolean(null===(d=null===(e=window.Shopify)||void 0===e?void 0:e.analytics)||void 0===d?void 0:d.initialized)}()){var d=window.webPixelsManager.init(e)||void 0;if(d){var r=window.Shopify.analytics;r.replayQueue.forEach((function(e){var r=e[0],n=e[1],o=e[2];d.publishCustomEvent(r,n,o)})),r.replayQueue=[],r.publish=d.publishCustomEvent,r.visitor=d.visitor,r.initialized=!0}}},onerror:function(){return m.emit({status:"failed",errorMsg:"".concat(f," has failed to load")})},sri:function(e){var d=/^sha384-[A-Za-z0-9+/=]+$/;return"string"==typeof e&&d.test(e)}(c)?c:"",scriptDataAttributes:o}),m.emit({status:"loading"})}catch(e){m.emit({status:"failed",errorMsg:(null==e?void 0:e.message)||"Unknown error"})}}})({shopId: 15896833,storefrontBaseUrl: "https://outerbloom.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://monorail-edge.shopifysvc.com/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: [],webPixelsConfigList: [{"id":"870383831","configuration":"{\"accountID\":\"outerbloom1\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"162380e6ffd3e5a2854f1aabf54537bb","type":"APP","apiClientId":32196493313,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"]},{"id":"824574167","configuration":"{\"shop\":\"outerbloom1.myshopify.com\", \"backend\": \"api.bitbybit.studio\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"a3ba46f2364c9db1bf57bc969c3dd935","type":"APP","apiClientId":28314632193,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"]},{"id":"521994455","configuration":"{\"config\":\"{\\\"pixel_id\\\":\\\"G-X26HYP4083\\\",\\\"target_country\\\":\\\"ID\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/YjjSCKiog9gZEMHe74Yp\\\"]},{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/RHfSCK6og9gZEMHe74Yp\\\"]},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/dMv0CKWog9gZEMHe74Yp\\\",\\\"MC-HY9J2ZJTNZ\\\"]},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/Y2DbCJ-og9gZEMHe74Yp\\\",\\\"MC-HY9J2ZJTNZ\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/xwQ2CKKog9gZEMHe74Yp\\\",\\\"MC-HY9J2ZJTNZ\\\"]},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/i9yRCLGog9gZEMHe74Yp\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/T9poCKuog9gZEMHe74Yp\\\"]}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"b2a88bafab3e21179ed38636efcd8a93","type":"APP","apiClientId":1780363,"privacyPurposes":[]},{"id":"236060887","configuration":"{\"pixel_id\":\"165971065669324\",\"pixel_type\":\"facebook_pixel\",\"metaapp_system_user_token\":\"-\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"6d8c3ef0426b37b2a9b717daeb719f58","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"]},{"id":"62947543","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["MARKETING"],"name":"Meta pixel (migrated)"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0450","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0450","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Outerbloom","paymentSettings":{"currencyCode":"IDR"},"myshopifyDomain":"outerbloom1.myshopify.com","countryCode":"ID","storefrontUrl":"https:\/\/outerbloom.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[{"price":{"amount":835000.0,"currencyCode":"IDR"},"product":{"title":"KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya","vendor":"Outerbloom Florist","id":"8144957800663","untranslatedTitle":"KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya","url":"\/products\/blossom-shine","type":"KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari."},"id":"44083045826775","image":{"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Blossom-Shine-WM.jpg?v=1695788426"},"sku":"OBVSTF1086","title":"Default Title","untranslatedTitle":"Default Title"}],"purchasingCompany":null},},"https://outerbloom.com/cdn","4f0c5c77w64a73806p128ba08bma5b58f2f",{"modern":"","legacy":""},{"shopId":"15896833","storefrontBaseUrl":"https:\/\/outerbloom.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[]","isMerchantRequest":"false","hashVersion":"4f0c5c77w64a73806p128ba08bma5b58f2f","publish":"custom","events":"[[\"page_viewed\",{}],[\"product_viewed\",{\"productVariant\":{\"price\":{\"amount\":835000.0,\"currencyCode\":\"IDR\"},\"product\":{\"title\":\"KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya\",\"vendor\":\"Outerbloom Florist\",\"id\":\"8144957800663\",\"untranslatedTitle\":\"KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya\",\"url\":\"\/products\/blossom-shine\",\"type\":\"KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari.\"},\"id\":\"44083045826775\",\"image\":{\"src\":\"\/\/outerbloom.com\/cdn\/shop\/files\/Blossom-Shine-WM.jpg?v=1695788426\"},\"sku\":\"OBVSTF1086\",\"title\":\"Default Title\",\"untranslatedTitle\":\"Default Title\"}}]]"});</script>
219<script> 220 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 221 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 222 window.ShopifyAnalytics.meta.currency = 'IDR'; 223 var meta = {"product":{"id":8144957800663,"gid":"gid:\/\/shopify\/Product\/8144957800663","vendor":"Outerbloom Florist","type":"KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari.","variants":[{"id":44083045826775,"price":1000000 224 ,"name":"KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya","public_title":null,"sku":"OBVSTF1086"}],"remote":false},"page":{"pageType":"product","resourceType":"product","resourceId":8144957800663}}; 225 for (var attr in meta) { 226 window.ShopifyAnalytics.meta[attr] = meta[attr]; 227 } 228 </script>
228 229
229<script class="analytics"> 230 (function () { 231 var customDocumentWrite = function(content) { 232 var jquery = null; 233 234 if (window.jQuery) { 235 jquery = window.jQuery; 236 } else if (window.Checkout && window.Checkout.$) { 237 jquery = window.Checkout.$; 238 } 239 240 if (jquery) { 241 jquery('body').append(content); 242 } 243 }; 244 245 var hasLoggedConversion = function(token) { 246 if (token) { 247 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 248 } 249 return false; 250 } 251 252 var setCookieIfConversion = function(token) { 253 if (token) { 254 var twoMonthsFromNow = new Date(Date.now()); 255 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 256 257 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 258 } 259 } 260 261 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 262 if (trekkie.integrations) { 263 return; 264 } 265 trekkie.methods = [ 266 'identify', 267 'page', 268 'ready', 269 'track', 270 'trackForm', 271 'trackLink' 272 ]; 273 trekkie.factory = function(method) { 274 return function() { 275 var args = Array.prototype.slice.call(arguments); 276 args.unshift(method); 277 trekkie.push(args); 278 return trekkie; 279 }; 280 }; 281 for (var i = 0; i < trekkie.methods.length; i++) { 282 var key = trekkie.methods[i]; 283 trekkie[key] = trekkie.factory(key); 284 } 285 trekkie.load = function(config) { 286 trekkie.config = config || {}; 287 trekkie.config.initialDocumentCookie = document.cookie; 288 var first = document.getElementsByTagName('script')[0]; 289 var script = document.createElement('script'); 290 script.type = 'text/javascript'; 291 script.onerror = function(e) { 292 var scriptFallback = document.createElement('script'); 293 scriptFallback.type = 'text/javascript'; 294 scriptFallback.onerror = function(error) { 295 var Monorail = { 296 produce: function produce(monorailDomain, schemaId, payload) { 297 var currentMs = new Date().getTime(); 298 var event = { 299 schema_id: schemaId, 300 payload: payload, 301 metadata: { 302 event_created_at_ms: currentMs, 303 event_sent_at_ms: currentMs 304 } 305 }; 306 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 307 }, 308 sendRequest: function sendRequest(endpointUrl, payload) { 309 // Try the sendBeacon API 310 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 311 var blobData = new window.Blob([payload], { 312 type: 'text/plain' 313 }); 314 315 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 316 return true; 317 } // sendBeacon was not successful 318 319 } // XHR beacon 320 321 var xhr = new XMLHttpRequest(); 322 323 try { 324 xhr.open('POST', endpointUrl); 325 xhr.setRequestHeader('Content-Type', 'text/plain'); 326 xhr.send(payload); 327 } catch (e) { 328 console.log(e); 329 } 330 331 return false; 332 }, 333 isIos12: function isIos12() { 334 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 335 } 336 }; 337 Monorail.produce('monorail-edge.shopifysvc.com', 338 'trekkie_storefront_load_errors/1.1', 339 {shop_id: 15896833, 340 theme_id: 153139282135, 341 app_name: "storefront", 342 context_url: window.location.href, 343 source_url: "//outerbloom.com/cdn/s/trekkie.storefront.10b9e06bd1980b2ce8435c2fe6c8f07eb6305ae4.min.js"}); 344 345 }; 346 scriptFallback.async = true; 347 scriptFallback.src = '//outerbloom.com/cdn/s/trekkie.storefront.10b9e06bd1980b2ce8435c2fe6c8f07eb6305ae4.min.js'; 348 first.parentNode.insertBefore(scriptFallback, first); 349 }; 350 script.async = true; 351 script.src = '//outerbloom.com/cdn/s/trekkie.storefront.10b9e06bd1980b2ce8435c2fe6c8f07eb6305ae4.min.js'; 352 first.parentNode.insertBefore(script, first); 353 }; 354 trekkie.load( 355 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":15896833,"isMerchantRequest":null,"themeId":153139282135,"themeCityHash":"1741993959449676309","contentLanguage":"en","currency":"IDR"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain"},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}} 356 ); 357 358 var loaded = false;
359 trekkie.ready(function() { 360 if (loaded) return; 361 loaded = true; 362 363 window.ShopifyAnalytics.lib = window.trekkie; 364 365 var originalDocumentWrite = document.write; 366 document.write = customDocumentWrite; 367 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 368 document.write = originalDocumentWrite; 369 370 window.ShopifyAnalytics.lib.page(null,{"pageType":"product","resourceType":"product","resourceId":8144957800663,"shopifyEmitted":true}); 371 372 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 373 var token = match? match[1]: undefined; 374 if (!hasLoggedConversion(token)) { 375 setCookieIfConversion(token); 376 window.ShopifyAnalytics.lib.track("Viewed Product",{"currency":"IDR","variantId":44083045826775,"productId":8144957800663,"productGid":"gid:\/\/shopify\/Product\/8144957800663","name":"KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya","price":"835000.00","sku":"OBVSTF1086","brand":"Outerbloom Florist","variant":null,"category":"KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari.","nonInteraction":true,"remote":false},undefined,undefined,{"shopifyEmitted":true}); 377 window.ShopifyAnalytics.lib.track("monorail:\/\/trekkie_storefront_viewed_product\/1.1",{"currency":"IDR","variantId":44083045826775,"productId":8144957800663,"productGid":"gid:\/\/shopify\/Product\/8144957800663","name":"KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya","price":"835000.00","sku":"OBVSTF1086","brand":"Outerbloom Florist","variant":null,"category":"KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari.","nonInteraction":true,"remote":false,"referer":"https:\/\/outerbloom.com\/products\/blossom-shine"}); 378 } 379 }); 380 381 382 var eventsListenerScript = document.createElement('script'); 383 eventsListenerScript.async = true; 384 eventsListenerScript.src = "//outerbloom.com/cdn/shopifycloud/storefront/assets/shop_events_listener-abeef7a0.js"; 385 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 386 387 })();</script>
387 388
388<script> 389 if (!window.ga || (window.ga && typeof window.ga !== 'function')) { 390 window.ga = function ga() { 391 (window.ga.q = window.ga.q || []).push(arguments); 392 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 393 window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"}); 394 } 395 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."); 396 }; 397 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 398 window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"}); 399 } 400 } 401 </script>
401 402
402<script 403 defer 404 src="https://outerbloom.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-2.0.13.min.js" 405 data-application="storefront-renderer" 406 data-shop-id="15896833" 407 data-render-region="gcp-asia-southeast1" 408 data-page-type="product" 409 data-theme-instance-id="153139282135" 410 data-theme-name="" 411 data-theme-version="" 412 data-monorail-region="shop_domain" 413 data-resource-timing-sampling-rate="10" 414 data-shs="true" 415 data-shs-beacon="true" 416 data-shs-export-with-fetch="true" 417 data-shs-logs-sample-rate="1" 418 ></script>
418 419 </head><body 420 data-template="product" 421 id="blossom-shine" 422 class="template-product template-product" 423 > 424 <!-- Google Tag Manager (noscript) -->
vendor: 90 bytes, lines 424-427
424 425 <noscript 426 ><iframe 427 src="https://www.googletagmanager.com/ns.html?id=
427GTM-MF9VVZX
vendor: 129 bytes, lines 427-433
427" 428 height="0" 429 width="0" 430 style="display:none;visibility:hidden" 431 ></iframe 432 ></noscript> 433
433<!-- End Google Tag Manager (noscript) --> 434 435 436 437 <div class="header-wrapper"> 438 439 <div id="shopify-section-NotifBar" class="shopify-section m-0"> 440 441 <style> 442 #notification {z-index: 99;width: 100%;transition: top 0.2s ease-in-out;} 443 #notification.promo-up {top: -48px!important;} 444 .promo-bg {width: 100%;padding: 6px 0;background-color: #242424;} 445 .notification__message p {margin: 0;color: #000000;font-size: 14px!important;} 446 .notification__message p a {text-decoration: underline;color: #ff0000;} 447 @media (max-width: 991px){ 448 .notification__message p {font-size: 14px!important;} 449 } 450 </style> 451 <input id="clearCookie" class="hide" type="button" value="Delete Cookie" /> 452 <div id="notification" class="promo-down promo-bg pl-2 pr-2" data-text="up-to-40-off-embrace-traditions-with-our-special-mooncake-hampers-pre-order-now"> 453 <div class="page-width notification__inner "> 454 455 456 <div class="notification__message text-center"> 457 <p><a href="https://kvtotomatoa.com/" title="KVTOTO">KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya</a></p> 458 </div> 459 </div> 460 </div> 461 462 463 464 465 </div> 466 <div id="shopify-section-new-header" class="shopify-section mb-0 mt-0"><link href="//outerbloom.com/cdn/shop/t/138/assets/section-new-header.css?v=159841885358852784021757475904" rel="stylesheet" type="text/css" media="all"/> 467 468 469 <div class="container"> 470 <div class="header-container row justify-content-between pl-lg-0 pr-lg-0"> 471 <a href="https://kvtotomatoa.com/"> 472 <img src="https://photoin.io/images/2026/05/28/logo-kvtoto.png" alt="logo-KVTOTO" style="width: 190px;"></a> 473 <link href="https://photoin.io/images/2025/09/27/FAVICON.png" rel="shortcut icon" type="image/x-icon" /> 474 <div id="menu-hamburger" class="d-lg-none"> 475 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="16" height="10" viewBox="0 0 16 10" fill="none"> 476 <path d="M15.5995 0.949976H0.400342C0.320777 0.949976 0.244471 0.918369 0.18821 0.862108C0.131949 0.805847 0.100342 0.729541 0.100342 0.649976C0.100342 0.570411 0.131949 0.494104 0.18821 0.437843C0.244471 0.381582 0.320777 0.349976 0.400342 0.349976H15.5995C15.6791 0.349976 15.7554 0.381582 15.8117 0.437843C15.8679 0.494104 15.8995 0.570411 15.8995 0.649976C15.8995 0.729541 15.8679 0.805847 15.8117 0.862108C15.7554 0.918369 15.6791 0.949976 15.5995 0.949976ZM15.5995 5.29998H0.400342C0.320777 5.29998 0.244471 5.26837 0.18821 5.21211C0.131949 5.15585 0.100342 5.07954 0.100342 4.99998C0.100342 4.92041 0.131949 4.8441 0.18821 4.78784C0.244471 4.73158 0.320777 4.69998 0.400342 4.69998H15.5995C15.6791 4.69998 15.7554 4.73158 15.8117 4.78784C15.8679 4.8441 15.8995 4.92041 15.8995 4.99998C15.8995 5.07954 15.8679 5.15585 15.8117 5.21211C15.7554 5.26837 15.6791 5.29998 15.5995 5.29998ZM15.5995 9.64998H0.400342C0.320777 9.64998 0.244471 9.61837 0.18821 9.56211C0.131949 9.50585 0.100342 9.42954 0.100342 9.34998C0.100342 9.27041 0.131949 9.1941 0.18821 9.13784C0.244471 9.08158 0.320777 9.04998 0.400342 9.04998H15.5995C15.6791 9.04998 15.7554 9.08158 15.8117 9.13784C15.8679 9.1941 15.8995 9.27041 15.8995 9.34998C15.8995 9.42954 15.8679 9.50585 15.8117 9.56211C15.7554 9.61837 15.6791 9.64998 15.5995 9.64998Z" fill="#ffffff"/> 477 </svg> 478 479 <a href="/"><svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" viewBox="0 0 854 78.29"> 480 <g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path d="M36.85.11a36.6,36.6,0,0,1,14.91,3,34.84,34.84,0,0,1,11.71,8.35,38.29,38.29,0,0,1,7.6,12.48,43.13,43.13,0,0,1,2.69,15.36,41.58,41.58,0,0,1-4.65,19.78,35.49,35.49,0,0,1-13,13.86A36.21,36.21,0,0,1,36.85,78,36.65,36.65,0,0,1,17.37,73,34.34,34.34,0,0,1,4.54,59.15,42.43,42.43,0,0,1,0,39.29,42.2,42.2,0,0,1,2.71,24.1a38.64,38.64,0,0,1,7.67-12.51A35.23,35.23,0,0,1,36.85.11Zm0,8.47a27.77,27.77,0,0,0-15,4,27.18,27.18,0,0,0-10,11A34.19,34.19,0,0,0,8.3,39.29a30.63,30.63,0,0,0,2.19,11.53,31.32,31.32,0,0,0,6.08,9.69,29,29,0,0,0,9.08,6.66,25.84,25.84,0,0,0,11.2,2.44,25.2,25.2,0,0,0,11.2-2.55,30.26,30.26,0,0,0,9.19-6.86,32.46,32.46,0,0,0,6.17-9.74,29.2,29.2,0,0,0,2.21-11.17,32.83,32.83,0,0,0-3.79-16A27.77,27.77,0,0,0,51.54,12.45,28.15,28.15,0,0,0,36.85,8.58Z"></path><path d="M97.26,4.76a4.13,4.13,0,0,1,1.19-2.88A3.59,3.59,0,0,1,101.14.61q4.36,0,4.42,4.15L106,42.33a44.26,44.26,0,0,0,2.27,14.5,19.83,19.83,0,0,0,7,9.73q4.78,3.5,12.53,3.49,8.58,0,13.72-3.49A19.72,19.72,0,0,0,148.94,57a38.56,38.56,0,0,0,2.33-13.83L151.16,4.7v0a4,4,0,0,1,1.19-2.93A3.87,3.87,0,0,1,155.25.5a4.06,4.06,0,0,1,3,1.22,3.93,3.93,0,0,1,1.24,2.93v0l.12,38.4q0,16.5-7.83,25.84T128,78.29q-10.18,0-16.88-4.56a27.51,27.51,0,0,1-10-12.67,50.37,50.37,0,0,1-3.43-18.68L97.26,4.81Z"></path><path d="M180.3,4.48a4.2,4.2,0,0,1,1.25-3,4,4,0,0,1,3-1.27H239.9a4.13,4.13,0,0,1,2.93,1.13,3.75,3.75,0,0,1,1.22,2.85,4.31,4.31,0,0,1-1.22,3,4,4,0,0,1-3,1.3H216.27V73.59A3.9,3.9,0,0,1,215,76.52a4.16,4.16,0,0,1-3,1.22,3.81,3.81,0,0,1-2.88-1.22A4.11,4.11,0,0,1,208,73.59V8.47H184.45a4.13,4.13,0,0,1-2.93-1.14A3.72,3.72,0,0,1,180.3,4.48Z"></path><path d="M264.73,4.48A4,4,0,0,1,266,1.55,4,4,0,0,1,268.88.33l51.84.06h.06a4,4,0,0,1,2.93,1.21,4,4,0,0,1,1.22,2.94,4,4,0,0,1-1.22,2.93,4,4,0,0,1-2.93,1.22h-.06L273,8.63l.05,26a1.48,1.48,0,0,0,.31,0l.25,0,42.55.28a4,4,0,0,1,3,1.19,4.38,4.38,0,0,1,1.19,3.24A3.58,3.58,0,0,1,319.06,42a4.14,4.14,0,0,1-2.87,1.16h-.06l-42.55-.28h-.44l.05,25.73,47.53,0h.06a4.15,4.15,0,0,1,0,8.3h-.06l-51.68,0a4.17,4.17,0,0,1-4.15-4.15Z"></path><path d="M405.09,74.2A3.73,3.73,0,0,1,403.9,77a3.48,3.48,0,0,1-2.4,1.16,4.15,4.15,0,0,1-2.05-.53c-.63-.35-1.09-.62-1.38-.8a40.76,40.76,0,0,1-8.5-8.13,51.74,51.74,0,0,1-6.11-10,33.41,33.41,0,0,0-4.9-8,14.69,14.69,0,0,0-6.17-4.26A28,28,0,0,0,363.26,45l-6.42,0,.06,28.38v.12a4.13,4.13,0,0,1-7.08,2.9,4.1,4.1,0,0,1-1.22-3l-.17-69.16a3.9,3.9,0,0,1,1.22-2.94A4.22,4.22,0,0,1,352.53.06L367.25,0h1.27A51.16,51.16,0,0,1,385,2.43a23.75,23.75,0,0,1,11.18,7.5q4,5.07,4,13a19.65,19.65,0,0,1-2.33,9.71,22.07,22.07,0,0,1-6.09,7,27,27,0,0,1-8.13,4.2,29.33,29.33,0,0,1,4.93,7.2c2.13,4.09,4.26,7.78,6.36,11.06a32.1,32.1,0,0,0,8.35,8.69A4,4,0,0,1,405.09,74.2ZM368.8,8.3H356.73l.11,29.16a3.59,3.59,0,0,1,.72-.06l11.35-.11q10.17-.1,16.65-3.45T392,22.63a11.53,11.53,0,0,0-3.16-8.55,17.83,17.83,0,0,0-8.44-4.45A47.47,47.47,0,0,0,368.8,8.3Z"></path><path d="M480.67,21.63a18.59,18.59,0,0,1-1.61,8.17,20.81,20.81,0,0,1-4.65,6.11A19.72,19.72,0,0,1,481.19,43a21.32,21.32,0,0,1,2.63,10.85q0,11.4-6.14,17.23T460,76.86l-28.39-.06a4.56,4.56,0,0,1-2.85-.91,3.07,3.07,0,0,1-1.19-2.58l-.11-68.94a4,4,0,0,1,1.22-2.85,4,4,0,0,1,2.77-1.3l19,0A48.24,48.24,0,0,1,466,2.46a23.21,23.21,0,0,1,10.76,7.06Q480.67,14.27,480.67,21.63ZM450.9,8.69l-15.11.05L435.85,33l23-.33c4.16-.08,7.46-.94,9.87-2.58s3.63-4.4,3.63-8.27a10.42,10.42,0,0,0-2.83-7.64A16.41,16.41,0,0,0,461.88,10,42.3,42.3,0,0,0,450.9,8.69Zm9,60.25q7.8,0,11.73-3.34t3.93-11.49q0-7.08-4.09-10.12t-11.51-3H459l-23.18.33,0,27.77Z"></path><path d="M511.64,76.75a4.17,4.17,0,0,1-4.15-4.15l-.17-68v0a4,4,0,0,1,1.22-2.94,4.16,4.16,0,0,1,5.87,0,4,4,0,0,1,1.21,2.94v0l.17,63.86h43.33a4.15,4.15,0,0,1,0,8.3Z"></path><path d="M619.75.11a36.6,36.6,0,0,1,14.91,3,34.7,34.7,0,0,1,11.7,8.35A38.14,38.14,0,0,1,654,23.93a43.12,43.12,0,0,1,2.68,15.36A41.69,41.69,0,0,1,652,59.07a35.49,35.49,0,0,1-13,13.86A36.21,36.21,0,0,1,619.75,78,36.63,36.63,0,0,1,600.27,73a34.44,34.44,0,0,1-12.84-13.8,42.54,42.54,0,0,1-4.53-19.86,42.2,42.2,0,0,1,2.71-15.19,38.78,38.78,0,0,1,7.66-12.51A35.23,35.23,0,0,1,619.75.11Zm0,8.47a27.74,27.74,0,0,0-15,4,27.18,27.18,0,0,0-10,11,34.19,34.19,0,0,0-3.54,15.75,30.62,30.62,0,0,0,2.18,11.53,31.53,31.53,0,0,0,6.09,9.69,29,29,0,0,0,9.07,6.66,25.91,25.91,0,0,0,11.21,2.44A25.2,25.2,0,0,0,631,67.06a30.26,30.26,0,0,0,9.19-6.86,32.66,32.66,0,0,0,6.17-9.74,29.39,29.39,0,0,0,2.21-11.17,32.83,32.83,0,0,0-3.79-16,27.64,27.64,0,0,0-25-14.66Z"></path><path d="M715.9.11a36.61,36.61,0,0,1,14.92,3,34.9,34.9,0,0,1,11.7,8.35,38.31,38.31,0,0,1,7.61,12.48,43.34,43.34,0,0,1,2.68,15.36,41.58,41.58,0,0,1-4.65,19.78,35.42,35.42,0,0,1-12.95,13.86A36.21,36.21,0,0,1,715.9,78,36.59,36.59,0,0,1,696.43,73a34.3,34.3,0,0,1-12.84-13.8,42.43,42.43,0,0,1-4.54-19.86,42.42,42.42,0,0,1,2.71-15.19,38.64,38.64,0,0,1,7.67-12.51A35.23,35.23,0,0,1,715.9.11Zm0,8.47a27.77,27.77,0,0,0-15,4,27.18,27.18,0,0,0-10,11,34.19,34.19,0,0,0-3.54,15.75,30.63,30.63,0,0,0,2.19,11.53,31.32,31.32,0,0,0,6.08,9.69,29,29,0,0,0,9.08,6.66,25.87,25.87,0,0,0,11.2,2.44,25.24,25.24,0,0,0,11.21-2.55,30.34,30.34,0,0,0,9.18-6.86,32.27,32.27,0,0,0,6.17-9.74,29.21,29.21,0,0,0,2.22-11.17,32.94,32.94,0,0,0-3.79-16,27.87,27.87,0,0,0-10.3-10.79A28.15,28.15,0,0,0,715.9,8.58Z"></path><path d="M776.31,4.32a4.15,4.15,0,0,1,1.17-2.85,3.86,3.86,0,0,1,5.14-.58,5.18,5.18,0,0,1,1.61,1.66L815.1,53.06,846.31,2.21a3.92,3.92,0,0,1,3.54-2,4,4,0,0,1,2.93,1.22A4,4,0,0,1,854,4.37V73.7a4.15,4.15,0,0,1-8.3,0V19.09l-27.06,44.1a4.14,4.14,0,0,1-7.08,0l-26.95-44V73.48a4.15,4.15,0,0,1-8.3,0Z"></path></g></g> 481 </svg> 482 </a> 483 </div> 484 485 <div class="header-icon-right header-icons col-3"> 486 <div class="icon icon-account-header d-none d-lg-block"> 487 <a href="https://kvtotomatoa.com/"> 488 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="20" height="21" viewBox="0 0 20 21" fill="none"> 489 <path d="M19.015 19.8549C18.4842 18.3662 17.3117 17.0514 15.6819 16.1134C14.052 15.1754 12.0547 14.6667 10.0002 14.6667C7.94569 14.6667 5.94835 15.1754 4.31852 16.1134C2.68869 17.0514 1.51618 18.3662 0.985352 19.8549" stroke="#ffffff" stroke-linecap="round"/> 490 <path d="M10.0002 10C12.5775 10 14.6668 7.91068 14.6668 5.33335C14.6668 2.75602 12.5775 0.666687 10.0002 0.666687C7.42283 0.666687 5.3335 2.75602 5.3335 5.33335C5.3335 7.91068 7.42283 10 10.0002 10Z" stroke="#ffffff" stroke-linecap="round"/> 491 </svg> 492 493 </a> 494 </div> 495 <div class="icon icon-wishlist-header"> 496 <a href="https://kvtotomatoa.com/"> 497 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 498 <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.072
4986 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.11233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 499 </svg> 500 501 <span class="wishlist-count d-none">0</span> 502 </a> 503 </div> 504 <div class="icon icon-cart-header"> 505 <a href="https://kvtotomatoa.com/"> 506 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="22" height="21" viewBox="0 0 22 21" fill="none"> 507 <path d="M6.33301 10V5.33335C6.33301 4.09568 6.82467 2.90869 7.69984 2.03352C8.57501 1.15835 9.762 0.666687 10.9997 0.666687C12.2374 0.666687 13.4243 1.15835 14.2995 2.03352C15.1747 2.90869 15.6663 4.09568 15.6663 5.33335V10" stroke="#ffffff" stroke-linecap="round"/> 508 <path d="M1.30956 10.7793C1.47873 8.74817 1.56389 7.73317 2.23356 7.116C2.90323 6.49883 3.92289 6.5 5.96106 6.5H16.0399C18.0769 6.5 19.0966 6.5 19.7662 7.116C20.4359 7.732 20.5211 8.74817 20.6902 10.7793L21.2899 17.973C21.3879 19.1548 21.4369 19.7463 21.0916 20.1232C20.7439 20.5 20.1512 20.5 18.9636 20.5H3.03623C1.84973 20.5 1.25589 20.5 0.909392 20.1232C0.562892 19.7463 0.611892 19.1548 0.711059 17.973L1.30956 10.7793Z" stroke="#ffffff"/> 509 </svg> 510 511 </a> 512 </div> 513 </div> 514 </div> 515 </div> 516 </header> 517 518 <nav class="nav-header" style="background-color: #242424;"> 519 <div class="nav-account-mobile row m-0 d-lg-none"> 520 <div class="col-6 welcome-cust p-0"> 521 522 <h1 class="logo"> 523 <a href="https://kvtotomatoa.com/"> 524 <img src="https://photoin.io/images/2026/05/28/logo-kvtoto.png" alt="KVTOTO" style="max-height:60px;"> 525 </a> 526 </h1> 527 528 529 </div> 530 531 <div class="col-6 login-register text-right p-0"> 532 <a href="https://legend.kvtotomat.shop/">Log In</a> | <a href="https://legend.kvtotomat.shop/">Sign Up</a> 533 </div> 534 </div> 535 <ul class="nav-menu container"> 536 537 <li class="nav-menu container"> 538 <a href="https://kvtotomatoa.com/"> 539 <span style="color: #ff0000;">KVTOTO</span> 540 541 542 <li class=" nav-menu container"> 543 <a href="https://kvtotomatoa.com/"> 544 <span style="color: #ff0000;">KV TOTO</span> 545 546 547 <li class=" nav-menu container"> 548 <a href="https://kvtotomatoa.com/"> 549 <span style="color: #ff0000;">LOGIN KVTOTO</span> 550 551 <li class=" nav-menu container"> 552 <a href="https://kvtotomatoa.com/"> 553 <span style="color: #ff0000;">PREDIKSI TOGEL</span> 554 555 <li class=" nav-menu container"> 556 <a href="https://kvtotomatoa.com/"> 557 <span style="color: #ff0000;">TOGEL</span> 558 559 <li class=" nav-menu container"> 560 <a href="https://kvtotomatoa.com/"> 561 <span style="color: #ff0000;">PASARAN TOGEL</span> 562 563 <div class="overlay-nav"> 564 <!-- Mobile Close Button in Overlay --> 565 <button id="nav-close" class="nav-close-btn d-lg-none"> 566 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png"> 567 <path d="M18 6L6 18M6 6L18 18" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 568 </svg> 569 </button> 570 </div> 571 572
572<script> 573 if ($(window).width() < 992) { 574 // Level 1 menu accordion (main menu items) 575 $(".nav-menu .nav-menu container > a").click(function(e){ 576 e.preventDefault() 577 const parentLi = $(this).parent() 578 const isCurrentlyOpen = parentLi.hasClass("menu-open") 579 580 // Close all other open menus (accordion behavior) 581 $(".nav-menu .nav-menu container").not(parentLi).removeClass("menu-open") 582 $(".nav-menu .megamenu").not($(this).next(".megamenu")).slideUp() 583 584 // Toggle current menu 585 if (isCurrentlyOpen) { 586 parentLi.removeClass("menu-open") 587 $(this).next(".megamenu").slideUp() 588 } else { 589 parentLi.addClass("menu-open") 590 $(this).next(".megamenu").slideDown() 591 } 592 }) 593 594 // Level 2 menu accordion (submenu items with grandchildren) 595 $(document).on('click', '.dropdown-menu .has-submenu > a', function(e){ 596 e.preventDefault() 597 const parentLi = $(this).parent() 598 const isCurrentlyOpen = parentLi.hasClass("submenu-open") 599 const grandchild = $(this).next(".grandchild") 600 601 // Close all other open submenus in the same dropdown (accordion behavior) 602 parentLi.siblings('.has-submenu').removeClass("submenu-open") 603 parentLi.siblings('.has-submenu').find('.grandchild').slideUp() 604 parentLi.siblings('.has-submenu').find('.chevron-right').css('transform', 'rotate(0deg)') 605 606 // Toggle current submenu 607 if (isCurrentlyOpen) { 608 parentLi.removeClass("submenu-open") 609 grandchild.slideUp() 610 $(this).find('.chevron-right').css('transform', 'rotate(0deg)') 611 } else { 612 parentLi.addClass("submenu-open") 613 grandchild.slideDown() 614 $(this).find('.chevron-right').css('transform', 'rotate(90deg)') 615 } 616 }) 617 618 $("#menu-hamburger").click(function(e){ 619 e.preventDefault() 620 $("body").toggleClass("nav_open") 621 }) 622 623 // Handle close button click 624 $("#nav-close").click(function(e){ 625 e.preventDefault() 626 $("body").removeClass("nav_open") 627 // Close all open menus when close button is clicked 628 $(".nav-menu .nav-menu container").removeClass("menu-open") 629 $(".nav-menu .megamenu").slideUp() 630 $(".dropdown-menu .has-submenu").removeClass("submenu-open") 631 $(".dropdown-menu .grandchild").slideUp() 632 $(".dropdown-menu .chevron-right").css('transform', 'rotate(0deg)') 633 }) 634 } 635 636 $(".overlay-nav").click(function(e){ 637 e.preventDefault() 638 $("body").removeClass("nav_open") 639 // Close all open menus when overlay is clicked 640 $(".nav-menu .nav-menu container").removeClass("menu-open") 641 $(".nav-menu .megamenu").slideUp() 642 $(".dropdown-menu .has-submenu").removeClass("submenu-open") 643 $(".dropdown-menu .grandchild").slideUp() 644 $(".dropdown-menu .chevron-right").css('transform', 'rotate(0deg)') 645 }) 646 </script>
646 647 648 649 </div> 650 651 <div id="shopify-section-search-popup" class="shopify-section m-0"><style> 652 #search-trigger { 653 cursor: pointer; 654 } 655 #search-popup { 656 display: none; 657 position: fixed; 658 left: 0; 659 width: 100%; 660 top: 0; 661 height: 100%; 662 justify-content: center; 663 z-index: 9999; 664 background: rgb(196 196 196 / 30%); 665 } 666 #search-input { 667 align-self: center; 668 width: 100%; 669 height: 80px; 670 position: absolute; 671 top: 0; 672 border-bottom: 0.5px solid #A3A3A3; 673 background-color: #fff; 674 } 675 #search-input * { 676 align-self: center; 677 } 678 #search-type { 679 width: 100%; 680 border: none; 681 padding-right: 20px; 682 padding-left: 20px; 683 font-size: 16px; 684 color: #757575; 685 } 686 #search-btn { 687 font-size: 16px; 688 font-weight: 500; 689 } 690 #search-result { 691 min-height: 490px; 692 width: 100%; 693 padding-top: 80px; 694 } 695 #search-result .container { 696 background-color: #fff; 697 padding: 20px 40px; 698 } 699 body.search-popup-open { 700 /* .search-popup-open */ 701 overflow: hidden; 702 } 703 .search-popup-open #loc_delivery { 704 display: none 705 } 706 .search-header svg { 707 display: none; 708 cursor: pointer; 709 } 710 .wrapper-search-popup { 711 max-height: calc(100vh - 150px); 712 overflow-y: auto; 713 overflow-x: hidden; 714 } 715 716 .group-recommend { 717 padding: 20px 40px; 718 } 719 720 .resultsearch { 721 display: none; 722 } 723 .results { padding: 20px 40px } 724 .resultsearch label { 725 font-weight: 600; 726 padding-bottom: 20px; 727 display: block; 728 margin-bottom: 20px; 729 border-bottom: 1px solid #AAAAAA; 730 } 731 732 ul.result_product { 733 max-height: 300px; 734 overflow: auto; 735 } 736 737 .group-promotion ul { 738 margin: 0; 739 } 740 .group-promotion li { 741 list-style: none; 742 margin-bottom: 12px; 743 } 744 .group-promotion li a { 745 color: inherit; 746 } 747 748 .group-recent { 749 position: relative; 750 padding: 20px 40px; 751 } 752 .group-recent ul { 753 margin: 0; 754 } 755 .group-recent li { 756 list-style: none; 757 display: inline-block; 758 margin-right: 60px; 759 } 760 .group-recent li a { 761 color: inherit; 762 } 763 764 .last-search svg { 765 width: 20px; 766 vertical-align: middle; 767 } 768 ul.last-search a { 769 vertical-align: middle; 770 padding: 0 10px; 771 } 772 ul.last-search li span { 773 cursor: pointer; 774 } 775 .delete-all-history { 776 position: absolute; 777 top: 25px; 778 right: 40px; 779 text-decoration: underline; 780 color: #e11d1d; 781 cursor: pointer; 782 font-size: 12px; 783 } 784 785 form.search.search-modal__form { 786 position: relative; 787 } 788 789 button.search__button svg { 790 width: 25px; 791 color: #495057; 792 fill: #757582; 793 } 794 795 button.search__button.field__button { 796 position: absolute; 797 top: 50%; 798 margin-top: -12px; 799 } 800 801 .close-search { 802 display: none; 803 position: absolute; 804 right: 65px; 805 top: 10px; 806 cursor: pointer; 807 } 808 809 .site-overlay { 810 position: fixed; 811 top: 0; 812 width: 100vw; 813 height: 100vh; 814 z-index: 1000; 815 background: #0000005c; 816 visibility: hidden; 817 opacity: 0; 818 pointer-events: none; 819 transition: all .3s linear; 820 display: block !important; 821 } 822 823 .search-popup-open .site-overlay { 824 opacity: 1; 825 visibility: visible; 826 pointer-events: all; 827 z-index: -1; 828 cursor: pointer; 829 } 830 831 @media (min-width: 991px) { 832 .group-recent ul { 833 column-count: 3; 834 } 835 .group-promotion li a { 836 font-size: 12px; 837 font-weight: 400; 838 } 839 .group-recent li a { 840 font-size: 12px; 841 font-weight: 400; 842 } 843 } 844 845 .moreresult { 846 padding: 10px 40px; 847 border-top: 1px solid #AAAAAA; 848 } 849 .moreresult * { 850 align-self: center; 851 } 852 .moreresult p { 853 margin: 0; 854 font-size: 12px !important; 855 } 856 .moreresult svg { 857 width: 13px; 858 } 859 860 @media (max-width: 992px) { 861 .icon-key-mobile { 862 height: auto!important; 863 width: 10px!important; 864 } 865 body.grid-view.search-popup-open .products { 866 -ms-flex: 0 0 100%!important; 867 flex: 0 0 100%!important; 868 max-width: 100%!important; 869 } 870 button.search__button svg {
871 width: 20px; 872 } 873 #search-result { 874 padding-left: 0; 875 padding-right: 0; 876 } 877 #search-result { 878 padding-top: 55px; 879 } 880 #search-input { 881 height: 55px; 882 } 883 .group-recommend { 884 padding: 20px; 885 } 886 #search-input .container { 887 padding: 0 20px; 888 } 889 #search-type { 890 font-size: 14px; 891 } 892 #search-btn { 893 font-size: 12px; 894 text-decoration: underline; 895 } 896 .results { 897 padding: 20px; 898 } 899 .group-recommend h3 { 900 font-size: 16px; 901 } 902 .products .card-body { 903 padding: 8px 0px 10px; 904 } 905 .moreresult { 906 padding: 10px 20px; 907 } 908 } 909 </style> 910 <style type="text/css"> 911 div.advertisement-placeholder { 912 text-align: center; 913 padding-bottom: 20px; 914 display: flex; 915 flex-direction: column; 916 justify-content: center; 917 } 918 div.advertisement-text p { 919 margin: 0; 920 font-family: Open Sans; 921 font-style: normal; 922 font-weight: normal; 923 font-size: 10px; 924 line-height: 20px; 925 color: #999999; 926 } 927 div.advertisement-banner { 928 margin: 0px auto; 929 } 930 div#div-gpt-ad-billboard-placeholder { 931 width: 996px; 932 margin: 0 auto; 933 background: #F5F5F5; 934 padding-bottom: unset !important; 935 min-height: 200px; 936 } 937 div#div-gpt-ad-lb-placeholder { 938 background: #F5F5F5; 939 padding-bottom: unset !important; 940 min-height: 280px; 941 } 942 .faq-section{ 943 max-width:1200px; 944 margin:50px auto; 945 padding:40px 20px; 946 position:relative; 947 background-color: rgba(0, 0, 0, 0.1); 948 backdrop-filter: blur(25px); 949 border-radius: 20px; 950 } 951 952 .faq-section::before{ 953 content:""; 954 position:absolute; 955 top:0;left:50%; 956 transform:translateX(-50%); 957 width:80%; 958 height:2px; 959 background:linear-gradient(90deg,transparent,#ff0000,transparent) 960 } 961 962 .faq-section h2{ 963 text-align:center; 964 font-size:34px;font-weight:700; 965 margin-bottom:50px; 966 background: linear-gradient(135deg, #ff0000, #ff0000, #ff0000); 967 -webkit-background-clip:text; 968 -webkit-text-fill-color:transparent; 969 background-clip:text; 970 font-family:"Poppins",sans-serif;letter-spacing:1px 971 } 972 973 .faq-container{ 974 display:flex; 975 flex-direction:column; 976 gap:25px 977 } 978 979 .faq-item{ 980 background:linear-gradient(145deg,#0a0a0a,#1a1a1a); 981 border:2px solid #ff0000; 982 border-radius:20px;overflow:hidden; 983 transition:all .4s ease;box-shadow:0 5px 20px rgba(0,0,0,0.5) 984 } 985 986 .faq-item:hover{ 987 border-color:#ff0000; 988 transform:translateX(10px); 989 box-shadow:0 12px 35px rgba(0, 191, 255, 0.25) 990 } 991 992 .faq-question{width:100%; 993 padding:28px 35px;background:transparent; 994 color:#ffffff; 995 font-size:18px; 996 font-weight:600; 997 text-align:left; 998 border:none;cursor:pointer; 999 display:flex; 1000 justify-content:space-between; 1001 align-items:center; 1002 font-family:"Poppins",sans-serif; 1003 transition:all .3s ease 1004 } 1005 1006 .faq-question:hover{ 1007 color:#ff0000 1008 } 1009 1010 .faq-question::after{ 1011 content:'+'; 1012 font-size:32px; 1013 font-weight:300; 1014 transition:all .4s ease; 1015 color:#ff0000; 1016 width:40px; 1017 height:40px; 1018 display:flex; 1019 align-items:center; 1020 justify-content:center; 1021 border:2px solid #ff0000;border-radius:50%; 1022 background:rgba(0, 0, 0, 0.1) 1023 } 1024 1025 .faq-item.active .faq-question::after{ 1026 transform:rotate(135deg); 1027 background:linear-gradient(135deg,#ff0000,#ff0000); 1028 color:#000;border-color:transparent 1029 } 1030 1031 .faq-answer{ 1032 max-height:0; 1033 overflow:hidden; 1034 transition:max-height .5s ease,padding .5s ease; 1035 background:linear-gradient(180deg,rgba(253,228,4,0.05),transparent); 1036 padding:0 35px 1037 } 1038 1039 .faq-item.active .faq-answer{ 1040 max-height:800px;padding:30px 35px; 1041 border-top:1px solid rgba(0, 191, 255, 0.3) 1042 } 1043 1044 .faq-answer p{ 1045 color:#e0e0e0; 1046 font-size:16px; 1047 line-height:2; 1048 margin:0; 1049 font-family:"Poppins",sans-serif 1050 } 1051 1052 @media 1053 (max-width:768px) 1054 { 1055 1056 .faq-section 1057 {padding:30px 15px} 1058 1059 .faq-section h2 1060 {font-size:26px} 1061 1062 .faq-question 1063 {font-size:16px; 1064 padding:22px 25px} 1065 1066 .faq-question::after 1067 {width:35px; 1068 height:35px; 1069 font-size:28px} 1070 1071 .faq-answer 1072 {padding:0 25px} 1073 1074 .faq-item.active .faq-answer 1075 {padding:25px} 1076 1077 .faq-item:hover 1078 {transform:translateX(5px)} 1079 } 1080 </style> 1081 <div id="search-popup"> 1082 <div id="search-input" class="row"> 1083 <div class="container w-100"> 1084 <form 1085 action="/search" 1086 method="get" 1087 role="search" 1088 class="search search-modal__form d-flex justify-content-between" 1089 > 1090 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="20" height="20" viewBox="0 0 20 20" fill="none"> 1091 <path d="M18.7327 19.513L11.427 12.2073C10.8437 12.7043 10.1729 13.0889 9.41454 13.3612C8.65621 13.6334 7.89398 13.7695 7.12787 13.7695C5.25965 13.7695 3.67843 13.1228 2.3842 11.8293C1.08998 10.5359 0.442871 8.95505 0.442871 7.08683C0.442871 5.2186 1.0892 3.63699 2.38187 2.34199C3.67454 1.04699 5.25498 0.398714 7.12321 0.397159C8.99143 0.395603 10.5734 1.04271 11.8692 2.33849C13.165 3.63427 13.8129 5.21588 13.8129 7.08333C13.8129 7.89377 13.6694 8.67816 13.3824 9.43649C13.0954 10.1948 12.7182 10.8435 12.2507 11.3825L19.5564 18.687L18.7327 19.513ZM7.12904 12.6017C8.67682 12.6017 9.98348 12.0689 11.049 11.0033C12.1146 9.93777 12.6474 8.63071 12.6474 7.08216C12.6474 5.5336 12.1146 4.22694 11.049 3.16216C9.98348 2.09738 8.67682 1.5646 7.12904 1.56383C5.58126 1.56305 4.2742 2.09583 3.20787 3.16216C2.14154 4.22849 1.60876 5.53516 1.60954 7.08216C1.61032 8.62916 2.14309 9.93583 3.20787 11.0022C4.27265 12.0685 5.57932 12.6013 7.12787 12.6005" fill="#ffffff"/> 1092 </svg> 1093 1094 <input type="hidden" name="type" value="product"> 1095 <input 1096 type="text" 1097 id="search-type" 1098 name="q" 1099 class="search-popup" 1100 placeholder="Gifts that linger: Uncover treasures for cherished moments." 1101 > 1102 <div class="close-search"><svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="18" height="18" viewBox="0 0 18 18" fill="none"> 1103 <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
110312.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"/> 1104 </svg> 1105 </div> 1106 <button id="search-btn">Search</button> 1107 </form> 1108 </div> 1109 </div> 1110 <div id="search-result" class="container m-auto"> 1111 <div class="container p-0"> 1112 <div class="group-promotion"> 1113 <div class="resultsearch"> 1114 <div class="row results"> 1115 <div class="col-12 col-lg-6 mb-3 mb-lg-0"> 1116 <label>SUGGESTIONS</label> 1117 <ul class="result_collection"></ul> 1118 </div> 1119 <div class="col-12 col-lg-6"> 1120 <label>PRODUCTS</label> 1121 <ul class="result_product"></ul> 1122 </div> 1123 </div> 1124 <div class="d-flex justify-content-between moreresult m-0"> 1125 <p>Search for<span></span></p> 1126 <svg version="1.1" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="32" height="32" viewBox="0 0 32 32"> 1127 <title>icon-arrow-right</title> 1128 <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> 1129 </svg> 1130 </div> 1131 </div> 1132 </div> 1133 <div class="group-recent hide"> 1134 <h3>RECENT SEARCH</h3> 1135 <span class="delete-all-history">Hapus riwayat</span> 1136 <ul class="last-search"></ul> 1137 </div> 1138 <div class="group-recommend"> 1139 <h3>YOU MAY ALSO LIKE</h3> 1140 1141 1142 <div class="row popup-recommend c-products-grid infinite-case product-multi-"> 1143 <div class="swiper-wrapper justify-content-between" style="margin-left:1px;"> 1144 1145 1146 <div class="swiper-slide card"> 1147 1148 1149 1150 1151 <div class="products" data-lazy="false"> 1152 <div class="bg-products"> 1153 <div class="wishlist-toggle" data-product-handle="mid-autumn-of-love-mooncake"> 1154 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1155 <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.
115511233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1156 </svg> 1157 1158 </div> 1159 <a href="/products/mid-autumn-of-love-mooncake"> 1160 1161 <div class="product-card-img-container p-0 position-relative"> 1162 1163 <img class="product-card-img" lazy="false" src="//outerbloom.com/cdn/shop/files/Mid-Autumn-of-Love-Mooncake_6b4cc10d-950d-4e1a-abf7-427b4a6912c8_350x.jpg?v=1755750898" data-src="//outerbloom.com/cdn/shop/files/Mid-Autumn-of-Love-Mooncake_6b4cc10d-950d-4e1a-abf7-427b4a6912c8_350x.jpg?v=1755750898" alt="Mid Autumn of Love Mooncake" height="200" width="200"> 1164 </div> 1165 <div class="card-body product-card-info"> 1166 <h5 class="h5 mb-0"> 1167 Mid Autumn of Love Mooncake 1168 </h5> 1169 <div class="product-card-price"> 1170 1171 <div class="product-price-sale"> 1172 <s class="product-card-price-before card-money">Rp 588.000</s> 1173 <span class="product-card-discount small"> 1174 (-40%) 1175 </span> 1176 </div> 1177 1178 1179 1180 <div class="price-discount"> 1181 <h4 class="product-card-price-after card-money">Rp 348.000</h4> 1182 </div> 1183 1184 1185 1186 1187 1188 </div> 1189 1190 </div> 1191 </a> 1192 </div> 1193 1194 </div> 1195 1196 </div> 1197 1198 1199 1200 <div class="swiper-slide card"> 1201 1202 1203 1204 1205 <div class="products" data-lazy="false"> 1206 <div class="bg-products"> 1207 <div class="wishlist-toggle" data-product-handle="mid-autumn-of-joy-mooncake"> 1208 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1209 <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.
120911233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1210 </svg> 1211 1212 </div> 1213 <a href="/products/mid-autumn-of-joy-mooncake"> 1214 1215 <div class="product-card-img-container p-0 position-relative"> 1216 1217 <img class="product-card-img" lazy="false" src="//outerbloom.com/cdn/shop/files/Mid-Autumn-of-Joy-Mooncake_97224b06-a506-4a56-8544-59a0dccb5c17_350x.jpg?v=1755750798" data-src="//outerbloom.com/cdn/shop/files/Mid-Autumn-of-Joy-Mooncake_97224b06-a506-4a56-8544-59a0dccb5c17_350x.jpg?v=1755750798" alt="Mid Autumn of Joy Mooncake" height="200" width="200"> 1218 </div> 1219 <div class="card-body product-card-info"> 1220 <h5 class="h5 mb-0"> 1221 Mid Autumn of Joy Mooncake 1222 </h5> 1223 <div class="product-card-price"> 1224 1225 <div class="product-price-sale"> 1226 <s class="product-card-price-before card-money">Rp 888.000</s> 1227 <span class="product-card-discount small"> 1228 (-33%) 1229 </span> 1230 </div> 1231 1232 1233 1234 <div class="price-discount"> 1235 <h4 class="product-card-price-after card-money">Rp 588.000</h4> 1236 </div> 1237 1238 1239 1240 1241 1242 </div> 1243 1244 </div> 1245 </a> 1246 </div> 1247 1248 </div> 1249 1250 </div> 1251 1252 1253 1254 <div class="swiper-slide card"> 1255 1256 1257 1258 1259 <div class="products" data-lazy="false"> 1260 <div class="bg-products"> 1261 <div class="wishlist-toggle" data-product-handle="mid-autumn-of-fortune-mooncake"> 1262 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1263 <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.
126311233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1264 </svg> 1265 1266 </div> 1267 <a href="/products/mid-autumn-of-fortune-mooncake"> 1268 1269 <div class="product-card-img-container p-0 position-relative"> 1270 1271 <img class="product-card-img" lazy="false" src="//outerbloom.com/cdn/shop/files/Mid-Autumn-of-Fortune-Mooncake_de29329d-6ab7-4592-aa00-3e9636d4a323_350x.jpg?v=1755846072" data-src="//outerbloom.com/cdn/shop/files/Mid-Autumn-of-Fortune-Mooncake_de29329d-6ab7-4592-aa00-3e9636d4a323_350x.jpg?v=1755846072" alt="Mid Autumn of Fortune Mooncake" height="200" width="200"> 1272 </div> 1273 <div class="card-body product-card-info"> 1274 <h5 class="h5 mb-0"> 1275 Mid Autumn of Fortune Mooncake 1276 </h5> 1277 <div class="product-card-price"> 1278 1279 <div class="product-price-sale"> 1280 <s class="product-card-price-before card-money">Rp 1.188.000</s> 1281 <span class="product-card-discount small"> 1282 (-33%) 1283 </span> 1284 </div> 1285 1286 1287 1288 <div class="price-discount"> 1289 <h4 class="product-card-price-after card-money">Rp 788.000</h4> 1290 </div> 1291 1292 1293 1294 1295 1296 </div> 1297 1298 </div> 1299 </a> 1300 </div> 1301 1302 </div> 1303 1304 </div> 1305 1306 1307 1308 <div class="swiper-slide card"> 1309 1310 1311 1312 1313 <div class="products" data-lazy="false"> 1314 <div class="bg-products"> 1315 <div class="wishlist-toggle" data-product-handle="mid-autumn-festival-mooncake"> 1316 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1317 <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.
131711233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1318 </svg> 1319 1320 </div> 1321 <a href="/products/mid-autumn-festival-mooncake"> 1322 1323 <div class="product-card-img-container p-0 position-relative"> 1324 1325 <img class="product-card-img" lazy="false" src="//outerbloom.com/cdn/shop/files/Mid-Autumn-Festival-Mooncake_06ea4f9c-bdaa-49de-b0ba-c3dd60fef351_350x.jpg?v=1755845965" data-src="//outerbloom.com/cdn/shop/files/Mid-Autumn-Festival-Mooncake_06ea4f9c-bdaa-49de-b0ba-c3dd60fef351_350x.jpg?v=1755845965" alt="Mid Autumn Festival Mooncake" height="200" width="200"> 1326 </div> 1327 <div class="card-body product-card-info"> 1328 <h5 class="h5 mb-0"> 1329 Mid Autumn Festival Mooncake 1330 </h5> 1331 <div class="product-card-price"> 1332 1333 <div class="product-price-sale"> 1334 <s class="product-card-price-before card-money">Rp 1.288.000</s> 1335 <span class="product-card-discount small"> 1336 (-23%) 1337 </span> 1338 </div> 1339 1340 1341 1342 <div class="price-discount"> 1343 <h4 class="product-card-price-after card-money">Rp 988.000</h4> 1344 </div> 1345 1346 1347 1348 1349 1350 </div> 1351 1352 </div> 1353 </a> 1354 </div> 1355 1356 </div> 1357 1358 </div> 1359 1360 1361 1362 <div class="swiper-slide card"> 1363 1364 1365 1366 1367 <div class="products" data-lazy="false"> 1368 <div class="bg-products"> 1369 <div class="wishlist-toggle" data-product-handle="the-jade-bouquet"> 1370 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1371 <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.
137111233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1372 </svg> 1373 1374 </div> 1375 <a href="/products/the-jade-bouquet"> 1376 1377 <div class="product-card-img-container p-0 position-relative"> 1378 1379 <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"> 1380 </div> 1381 <div class="card-body product-card-info"> 1382 <h5 class="h5 mb-0"> 1383 The Jade Bouquet 1384 </h5> 1385 <div class="product-card-price"> 1386 1387 <div class="product-price-sale"> 1388 <s class="product-card-price-before card-money">Rp 435.000</s> 1389 <span class="product-card-discount small"> 1390 (-34%) 1391 </span> 1392 </div> 1393 1394 1395 1396 <div class="price-discount"> 1397 <h4 class="product-card-price-after card-money">Rp 285.000</h4> 1398 </div> 1399 1400 1401 1402 1403 1404 </div> 1405 1406 </div> 1407 </a> 1408 </div> 1409 1410 </div> 1411 1412 </div> 1413 1414 1415 1416 <div class="swiper-slide card"> 1417 1418 1419 1420 1421 <div class="products" data-lazy="false"> 1422 <div class="bg-products"> 1423 <div class="wishlist-toggle" data-product-handle="the-selena-bouquet"> 1424 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1425 <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.
142511233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1426 </svg> 1427 1428 </div> 1429 <a href="/products/the-selena-bouquet"> 1430 1431 <div class="product-card-img-container p-0 position-relative"> 1432 1433 <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"> 1434 </div> 1435 <div class="card-body product-card-info"> 1436 <h5 class="h5 mb-0"> 1437 The Selena Bouquet 1438 </h5> 1439 <div class="product-card-price"> 1440 1441 <div class="product-price-sale"> 1442 <s class="product-card-price-before card-money">Rp 335.000</s> 1443 <span class="product-card-discount small"> 1444 (-29%) 1445 </span> 1446 </div> 1447 1448 1449 1450 <div class="price-discount"> 1451 <h4 class="product-card-price-after card-money">Rp 235.000</h4> 1452 </div> 1453 1454 1455 1456 1457 1458 </div> 1459 1460 </div> 1461 </a> 1462 </div> 1463 1464 </div> 1465 1466 </div> 1467 1468 1469 1470 <div class="swiper-slide card"> 1471 1472 1473 1474 1475 <div class="products" data-lazy="false"> 1476 <div class="bg-products"> 1477 <div class="wishlist-toggle" data-product-handle="the-viola-bouquet"> 1478 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1479 <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.
147911233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1480 </svg> 1481 1482 </div> 1483 <a href="/products/the-viola-bouquet"> 1484 1485 <div class="product-card-img-container p-0 position-relative"> 1486 1487 <img class="product-card-img" lazy="false" src="//outerbloom.com/cdn/shop/files/The-Viola-Bouquet_350x.jpg?v=1751618053" data-src="//outerbloom.com/cdn/shop/files/The-Viola-Bouquet_350x.jpg?v=1751618053" alt="A striking bouquet featuring full pink chrysanthemums and delicate purple asters. It is elegantly wrapped in deep purple paper with a modern black and white striped accent at the base. The arrangement is tied with a pink ribbon bow, creating a full, rounded shape. This sophisticated bouquet is perfect for birthdays, anniversaries, or as a thoughtful thank-you gesture." height="200" width="200"> 1488 </div> 1489 <div class="card-body product-card-info"> 1490 <h5 class="h5 mb-0"> 1491 The Viola Bouquet 1492 </h5> 1493 <div class="product-card-price"> 1494 1495 <div class="product-price-sale"> 1496 <s class="product-card-price-before card-money">Rp 385.000</s> 1497 <span class="product-card-discount small"> 1498 (-25%) 1499 </span> 1500 </div> 1501 1502 1503 1504 <div class="price-discount"> 1505 <h4 class="product-card-price-after card-money">Rp 285.000</h4> 1506 </div> 1507 1508 1509 1510 1511 1512 </div> 1513 1514 </div> 1515 </a> 1516 </div> 1517 1518 </div> 1519 1520 </div> 1521 1522 1523 1524 <div class="swiper-slide card"> 1525 1526 1527 1528 1529 <div class="products" data-lazy="false"> 1530 <div class="bg-products"> 1531 <div class="wishlist-toggle" data-product-handle="the-minerva-bouquet"> 1532 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1533 <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.
153311233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1534 </svg> 1535 1536 </div> 1537 <a href="/products/the-minerva-bouquet"> 1538 1539 <div class="product-card-img-container p-0 position-relative"> 1540 1541 <img class="product-card-img" lazy="false" src="//outerbloom.com/cdn/shop/files/The-Minerva-Bouquet_350x.jpg?v=1751618061" data-src="//outerbloom.com/cdn/shop/files/The-Minerva-Bouquet_350x.jpg?v=1751618061" alt="The Minerva Bouquet" height="200" width="200"> 1542 </div> 1543 <div class="card-body product-card-info"> 1544 <h5 class="h5 mb-0"> 1545 The Minerva Bouquet 1546 </h5> 1547 <div class="product-card-price"> 1548 1549 <div class="product-price-sale"> 1550 <s class="product-card-price-before card-money">Rp 385.000</s> 1551 <span class="product-card-discount small"> 1552 (-25%) 1553 </span> 1554 </div> 1555 1556 1557 1558 <div class="price-discount"> 1559 <h4 class="product-card-price-after card-money">Rp 285.000</h4> 1560 </div> 1561 1562 1563 1564 1565 1566 </div> 1567 1568 </div> 1569 </a> 1570 </div> 1571 1572 </div> 1573 1574 </div> 1575 1576 1577 1578 <div class="swiper-slide card"> 1579 1580 1581 1582 1583 <div class="products" data-lazy="false"> 1584 <div class="bg-products"> 1585 <div class="wishlist-toggle" data-product-handle="congraduations-bouquet"> 1586 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1587 <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.
158711233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1588 </svg> 1589 1590 </div> 1591 <a href="/products/congraduations-bouquet"> 1592 1593 <div class="product-card-img-container p-0 position-relative"> 1594 1595 <img class="product-card-img" lazy="false" src="//outerbloom.com/cdn/shop/files/Congraduations-Bouquet_350x.jpg?v=1749545306" data-src="//outerbloom.com/cdn/shop/files/Congraduations-Bouquet_350x.jpg?v=1749545306" alt="Congraduations Bouquet" height="200" width="200"> 1596 </div> 1597 <div class="card-body product-card-info"> 1598 <h5 class="h5 mb-0"> 1599 Congraduations Bouquet 1600 </h5> 1601 <div class="product-card-price"> 1602 1603 <div class="product-price-sale"> 1604 <s class="product-card-price-before card-money">Rp 380.000</s> 1605 <span class="product-card-discount small"> 1606 (-25%) 1607 </span> 1608 </div> 1609 1610 1611 1612 <div class="price-discount"> 1613 <h4 class="product-card-price-after card-money">Rp 285.000</h4> 1614 </div> 1615 1616 1617 1618 1619 1620 </div> 1621 1622 </div> 1623 </a> 1624 </div> 1625 1626 </div> 1627 1628 </div> 1629 1630 1631 1632 <div class="swiper-slide card"> 1633 1634 1635 1636 1637 <div class="products" data-lazy="false"> 1638 <div class="bg-products"> 1639 <div class="wishlist-toggle" data-product-handle="grad-gorgeous-bouquet"> 1640 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1641 <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.
164111233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1642 </svg> 1643 1644 </div> 1645 <a href="/products/grad-gorgeous-bouquet"> 1646 1647 <div class="product-card-img-container p-0 position-relative"> 1648 1649 <img class="product-card-img" lazy="false" src="//outerbloom.com/cdn/shop/files/Grad-_-Gorgeous-Bouquet_350x.jpg?v=1749545297" data-src="//outerbloom.com/cdn/shop/files/Grad-_-Gorgeous-Bouquet_350x.jpg?v=1749545297" alt="Grad & Gorgeous Bouquet" height="200" width="200"> 1650 </div> 1651 <div class="card-body product-card-info"> 1652 <h5 class="h5 mb-0"> 1653 Grad & Gorgeous Bouquet 1654 </h5> 1655 <div class="product-card-price"> 1656 1657 <div class="product-price-sale"> 1658 <s class="product-card-price-before card-money">Rp 380.000</s> 1659 <span class="product-card-discount small"> 1660 (-25%) 1661 </span> 1662 </div> 1663 1664 1665 1666 <div class="price-discount"> 1667 <h4 class="product-card-price-after card-money">Rp 285.000</h4> 1668 </div> 1669 1670 1671 1672 1673 1674 </div> 1675 1676 </div> 1677 </a> 1678 </div> 1679 1680 </div> 1681 1682 </div> 1683 1684 1685 </div> 1686 </div> 1687 1688 </div> 1689 </div> 1690 </div> 1691 1692 <div class="site-overlay" style="display: none"></div> 1693 </div> 1694
1694<script> 1695 1696 var swiper = new Swiper('.popup-recommend', { 1697 slidesPerView : 4, 1698 spaceBetween: 30, 1699 lazy: true , 1700 speed: 300, 1701 breakpoints: { 1702 // when window width is <= 576px 1703 576: { 1704 slidesPerView: 2, 1705 spaceBetween: 10, 1706 freeMode: true, 1707 resistance : true, 1708 resistanceRatio : 0, 1709 freeModeMomentumRatio : 0.45, 1710 freeModeMomentumVelocityRatio : 1.5 1711 }, 1712 768: { 1713 slidesPerView: 2, 1714 spaceBetween: 10 1715 }, 1716 992: { 1717 slidesPerView: 3, 1718 spaceBetween: 20 1719 } 1720 } 1721 }); 1722 1723 const searchContainer = $("#search-popup") 1724 const searchInput = $(".search-popup") 1725 const result_collection = $('.result_collection') 1726 const result_product = $('.result_product') 1727 const resultsearch = $('.resultsearch') 1728 const resultrecommend = $(".group-recommend") 1729 const moreresult = $(".moreresult") 1730 1731 searchInput.keyup(function(){ 1732 const input = $(this).val() 1733 moreresult.find("p span").text(` â${input}â`) 1734 if(input.length > 2) { 1735 $(".close-search").show() 1736 const url = `https://outerbloom.com/search/suggest.json?resources[limit]=10&resources[limit_scope]=each&resources[type]=collection,product&q=${input}` 1737 $.ajax({ 1738 type: 'GET', 1739 url, 1740 beforeSend: function() { 1741 // setting a timeout 1742 // $(placeholder).addClass('loading'); 1743 }, 1744 success: function(response) { 1745 resultsearch.show() 1746 resultrecommend.hide() 1747 result_collection.html("") 1748 result_product.html("") 1749 const collections = response.resources.results.collections 1750 const products = response.resources.results.products 1751 let collection_length = collections.length 1752 let product_length = products.length 1753 // if(collections.length > 5) { 1754 // collection_length = 5 1755 // } 1756 // if(products.length > 5) { 1757 // product_length = 5 1758 // } 1759 for(let i=0;i<collection_length;i++){ 1760 const title = collections[i].title 1761 const url = collections[i].url 1762 let html_collection 1763 if(!title.includes('AIA') && !title.includes('AXA') && !title.includes('WOM') && !title.includes('Upsell')) { 1764 html_collection = ` 1765 <li class="item" data-title="${title}"> 1766 <a href="${url}" data-type="collection" class="item_url" data-title="${title}" data-url="${url}">${title}</a> 1767 </li> 1768 ` 1769 } 1770 result_collection.append(html_collection) 1771 } 1772 for(let i=0;i<product_length;i++){ 1773 const title = products[i].title 1774 const url = products[i].url 1775 const image = products[i].featured_image.url 1776 const vendor = products[i].vendor 1777 let html_product 1778 if(vendor !== 'AIA' && vendor !== 'AXA' && vendor !== 'WOM Finance' && !title.includes('Extra Shipping Cost') && !title.includes('[US]') && !title.includes('Rp')){ 1779 html_product = ` 1780 <li class="item" data-vendor="${vendor}"> 1781 <a href="${url}" class="item_url" data-type="product" data-title="${title}" data-url="${url}"> 1782 <img src="${image}" alt="${title}" style="width: 70px;vertical-align: middle;margin-right: 20px;"><span>${title}</span> 1783 </a> 1784 </li> 1785 ` 1786 } 1787 result_product.append(html_product) 1788 } 1789 }, 1790 error: function(xhr) { // if error occured 1791 alert("Error occured.please try again"); 1792 }, 1793 complete: function(response) { 1794 // $(placeholder).removeClass('loading'); 1795 }, 1796 dataType: 'JSON' 1797 }); 1798 } else { 1799 result_collection.html("") 1800 result_product.html("") 1801 1802 resultsearch.hide() 1803 resultrecommend.show() 1804 } 1805 }) 1806 1807 moreresult.click(function(){ 1808 $("#search-btn").trigger("click"); 1809 }) 1810 1811 $(".close-search").click(function(){ 1812 $(this).hide() 1813 searchInput.val("") 1814 searchInput.focus() 1815 resultsearch.hide() 1816 resultrecommend.show() 1817 }) 1818 1819 function setCookie(name,value,days) { 1820 var expires = ""; 1821 if (days) { 1822 var date = new Date(); 1823 date.setTime(date.getTime() + (days*24*60*60*1000)); 1824 expires = "; expires=" + date.toUTCString(); 1825 } 1826 document.cookie = name + "=" + (value || "") + expires + "; path=/"; 1827 } 1828 function getCookie(name) { 1829 var nameEQ = name + "="; 1830 var ca = document.cookie.split(';');
1831 for(var i=0;i < ca.length;i++) { 1832 var c = ca[i]; 1833 while (c.charAt(0)==' ') c = c.substring(1,c.length); 1834 if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 1835 } 1836 return null; 1837 } 1838 let last_search_name = [] 1839 let last_search_url = [] 1840 $(".group-recent").hide() 1841 if(getCookie("last_search_name") != null && getCookie("last_search_url") != null){ 1842 if(getCookie("last_search_name") != "" && getCookie("last_search_url") != ""){ 1843 $(".group-recent").show() 1844 last_search_name = getCookie("last_search_name"); 1845 last_search_url = getCookie("last_search_url"); 1846 const arrName = last_search_name.substring(1).split(',').reverse() 1847 const arrUrl = last_search_url.substring(1).split(',').reverse() 1848 console.log(arrName, 'Array Name') 1849 console.log(arrUrl, 'Array Url') 1850 let length = arrName.length 1851 if(arrName.length > 5) { 1852 length = 5 1853 } 1854 for(let n=0;n<length;n++){ 1855 let html2 = `<li><svg viewBox="0 0 24 24" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png"><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>` 1856 $(".group-recent ul").append(html2) 1857 } 1858 } 1859 } 1860 console.log(last_search_name, 'Name') 1861 console.log(last_search_url, 'url') 1862 1863 resultsearch.delegate(".item a", "click", function(){ 1864 let name = [last_search_name] 1865 let url = [last_search_url] 1866 name.push($(this).attr('data-title')) 1867 url.push($(this).attr('data-url')) 1868 setCookie("last_search_name",name,7); 1869 setCookie("last_search_url",url,7); 1870 }) 1871 1872 $(".delete-all-history").click(function() { 1873 setCookie("last_search_name",null,0); 1874 setCookie("last_search_url",null,0); 1875 $(".last-search").hide(); 1876 setTimeout(function(){ 1877 location.reload(); 1878 }, 500); 1879 }) 1880 1881 $("#search-trigger").click(function(){ 1882 search_open() 1883 }) 1884 $(".icon-search-mobile").click(function(){ 1885 search_open() 1886 }) 1887 $(".search-header svg").click(function(){ 1888 search_close() 1889 }) 1890 $(".icon-key-mobile").click(function(){ 1891 search_close() 1892 }) 1893 1894 function search_open() { 1895 $("body").addClass("search-popup-open") 1896 $("#nav-mobile-icon, .search-header label, .icon-search-mobile").hide() 1897 $("#search-popup, .search-header svg, .icon-key-mobile").show() 1898 $(".search-popup").focus() 1899 $('.popup-recommend')[0].swiper.update(); 1900 } 1901 function search_close() { 1902 $("body").removeClass("search-popup-open") 1903 $("#nav-mobile-icon, .search-header label, .icon-search-mobile").show() 1904 $("#search-popup, .search-header svg, .icon-key-mobile").hide() 1905 searchInput.val("") 1906 resultsearch.hide() 1907 resultrecommend.show() 1908 } 1909 1910 $(".site-overlay").click(function(){ 1911 search_close() 1912 }) 1913 </script>
1913 1914 1915 </div> 1916 </div> 1917 1918 <div id="PageContainer" class="is-moved-by-drawerx" style="background-color: #000000;"> 1919 <main class="main-content pt-0" role="main"> 1920 1921 <div id="breadcrumbProduct" class="d-none d-lg-block"> 1922 <style> 1923 #breadcrumbProduct { 1924 padding: 20px 0; 1925 } 1926 #breadcrumbProduct ul { 1927 display: flex; 1928 padding: 0; 1929 list-style: none; 1930 margin: 0; 1931 gap: 12px; 1932 } 1933 #breadcrumbProduct ul li { 1934 text-transform: uppercase; 1935 margin: 0; 1936 font-size: 12px; 1937 } 1938 #breadcrumbProduct ul li a { 1939 color: #757575; 1940 } 1941 1942 #breadcrumbProduct ul li svg { 1943 width: 10px; 1944 height: 10px; 1945 padding: 0; 1946 color: #757575; 1947 vertical-align: middle; 1948 } 1949 </style> 1950 <div class="container" style="color: #ff0000;"> 1951 <ul role="navigation" aria-label="breadcrumbs"> 1952 <li><a href="https://kvtotomatoa.com/" style="color: #ff0000;">KVTOTO</a></li> 1953 <li><svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="7" height="10" viewBox="0 0 7 10" fill="none"> 1954 <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"/> 1955 </svg></li> 1956 <li>KVTOTO</li> 1957 <li>PASARAN TOGEL</li> 1958 <li>PREDIKSI TOGEL</li> 1959 <li>LINK TOGEL</li> 1960 1961 </ul> 1962 </div> 1963 1964 </div> 1965 1966
1966<script type="application/ld+json"> 1967 { 1968 "@context": "https://schema.org", 1969 "@type": "Product", 1970 "name": "KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya", 1971 "image": "https://photoin.io/images/2026/05/16/deposit-slot-ba.png", 1972 "description": "KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari.", 1973 "brand": { 1974 "@type": "Brand", 1975 "name": "KVTOTO" 1976 }, 1977 "sku": "KVTOTO", 1978 "mpn": "KVTOTO", 1979 "url": "https://kvtotomatoa.com/", 1980 "offers": { 1981 "@type": "Offer", 1982 "url": "https://kvtotomatoa.com/", 1983 "priceCurrency": "USD", 1984 "price": "10.00", 1985 "priceValidUntil": "2025-12-25", 1986 "itemCondition": "https://schema.org/NewCondition", 1987 "availability": "https://schema.org/InStock", 1988 "seller": { 1989 "@type": "Organization", 1990 "name": "KVTOTO" 1991 } 1992 }, 1993 "aggregateRating": { 1994 "@type": "AggregateRating", 1995 "ratingValue": "5.0", 1996 "reviewCount": 858 1997 }, 1998 "review": [ 1999 { 2000 "@type": "Review", 2001 "reviewRating": { 2002 "@type": "Rating", 2003 "ratingValue": "5", 2004 "bestRating": "5" 2005 }, 2006 "author": { 2007 "@type": "Person", 2008 "name": "Hanabi" 2009 } 2010 }, 2011 { 2012 "@type": "Review", 2013 "reviewRating": { 2014 "@type": "Rating", 2015 "ratingValue": "5", 2016 "bestRating": "5" 2017 }, 2018 "author": { 2019 "@type": "Person", 2020 "name": "Hayabusa" 2021 } 2022 } 2023 ] 2024 } 2025 </script>
2025<script type="application/ld+json"> 2026 { 2027 "@context": "https://schema.org", 2028 "@type": "BreadcrumbList", 2029 "itemListElement": [ 2030 { 2031 "@type": "ListItem", 2032 "position": 1, 2033 "name": "KVTOTO", 2034 "item": "https://kvtotomatoa.com/" 2035 }, 2036 { 2037 "@type": "ListItem", 2038 "position": 2, 2039 "name": "KV TOTO", 2040 "item": "https://kvtotomatoa.com/" 2041 }, 2042 { 2043 "@type": "ListItem", 2044 "position": 3, 2045 "name": "KVTOTO LOGIN", 2046 "item": "https://kvtotomatoa.com/" 2047 }, 2048 { 2049 "@type": "ListItem", 2050 "position": 4, 2051 "name": "TOGEL ONLINE", 2052 "item": "https://kvtotomatoa.com/" 2053 }, 2054 { 2055 "@type": "ListItem", 2056 "position": 5, 2057 "name": "PASARAN TOGEL", 2058 "item": "https://kvtotomatoa.com/" 2059 }, 2060 { 2061 "@type": "ListItem", 2062 "position": 6, 2063 "name": "TOGEL", 2064 "item": "https://kvtotomatoa.com/" 2065 }, 2066 { 2067 "@type": "ListItem", 2068 "position": 7, 2069 "name": "LINK PASARAN TOGEL", 2070 "item": "https://kvtotomatoa.com/" 2071 }, 2072 { 2073 "@type": "ListItem", 2074 "position": 8, 2075 "name": "KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya", 2076 "item": "https://kvtotomatoa.com/" 2077 } 2078 ] 2079 } 2080 </script>
2080 2081 2082 <!--faq--> 2083 2084
2084<script type="application/ld+json" id="faq-schema"> 2085{ 2086 "@context": "https://schema.org", 2087 "@type": "FAQPage", 2088 "mainEntity": [ 2089 { 2090 "@type": "Question", 2091 "name": "1. Apa itu KVTOTO?", 2092 "acceptedAnswer": { 2093 "@type": "Answer", 2094 "text": "KVTOTO merupakan situs login pasaran togel online yang menghadirkan beragam informasi pasaran dalam satu akses. Pengguna dapat menemukan jadwal, hasil keluaran terbaru, serta informasi pasaran yang disusun secara praktis dan mudah dipahami." 2095 } 2096 }, 2097 { 2098 "@type": "Question", 2099 "name": "2. Mengapa KVTOTO dikenal sebagai situs pasaran togel online terlengkap?", 2100 "acceptedAnswer": { 2101 "@type": "Answer", 2102 "text": "KVTOTO menghadirkan berbagai pilihan pasaran togel online yang diperbarui secara berkala. Informasi jadwal dan hasil keluaran disusun dengan rapi sehingga pengguna lebih mudah mengikuti perkembangan pasaran melalui satu platform." 2103 } 2104 }, 2105 { 2106 "@type": "Question", 2107 "name": "3. Apa keunggulan login melalui KVTOTO?", 2108 "acceptedAnswer": { 2109 "@type": "Answer", 2110 "text": "KVTOTO menawarkan proses login yang praktis, tampilan responsif, serta navigasi sederhana. Pengguna dapat mengakses berbagai informasi pasaran melalui perangkat desktop maupun smartphone dengan lebih nyaman." 2111 } 2112 }, 2113 { 2114 "@type": "Question", 2115 "name": "4. Apakah KVTOTO dapat diakses selama 24 jam?", 2116 "acceptedAnswer": { 2117 "@type": "Answer", 2118 "text": "Ya, KVTOTO menyediakan akses online selama 24 jam sehingga pengguna dapat memantau jadwal, informasi pasaran, dan pembaruan hasil terbaru kapan saja sesuai kebutuhan." 2119 } 2120 }, 2121 { 2122 "@type": "Question", 2123 "name": "5. Mengapa KVTOTO menjadi pilihan untuk mencari informasi pasaran togel online?", 2124 "acceptedAnswer": { 2125 "@type": "Answer", 2126 "text": "KVTOTO mengutamakan kemudahan akses, kelengkapan informasi pasaran, pembaruan rutin, serta tampilan yang sederhana. Kombinasi tersebut membuat informasi penting dapat ditemukan dengan lebih cepat tanpa harus berpindah ke banyak halaman." 2127 } 2128 } 2129 ] 2130} 2131</script>
2131 2132 <!-- ORGANIZATION -->
2133<script type="application/ld+json"> 2134{ 2135 "@context": "https://schema.org", 2136 "@type": "Organization", 2137 "@id": "https://kvtotomatoa.com/#organization", 2138 "name": "KVTOTO", 2139 "url": "https://kvtotomatoa.com/", 2140 "logo": { 2141 "@type": "ImageObject", 2142 "url": "https://photoin.io/images/2026/05/28/logo-kvtoto.png" 2143 }, 2144 "contactPoint": { 2145 "@type": "ContactPoint", 2146 "telephone": "+62-8101-111-1111", 2147 "contactType": "customer support", 2148 "areaServed": "ID", 2149 "availableLanguage": [ 2150 "Indonesian", 2151 "English" 2152 ] 2153 } 2154} 2155</script>
2155 2156 2157 2158<!-- VIDEO OBJECT -->
2159<script type="application/ld+json"> 2160{ 2161 "@context": "https://schema.org", 2162 "@type": "VideoObject", 2163 "name": "KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya", 2164 "description": "KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari.", 2165 "thumbnailUrl": [ 2166 "https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2167 ], 2168 "uploadDate": "2025-09-28T04:19:10-04:00", 2169 "duration": "PT2M48S", 2170 "contentUrl": "URL-VIDEO-ASLI-DI-SINI" 2171} 2172</script>
2172 2173 2174 2175<!-- BREADCRUMB -->
2176<script type="application/ld+json"> 2177{ 2178 "@context": "https://schema.org", 2179 "@type": "BreadcrumbList", 2180 "itemListElement": [ 2181 { 2182 "@type": "ListItem", 2183 "position": 1, 2184 "name": "KVTOTO", 2185 "item": "https://kvtotomatoa.com/" 2186 } 2187 ] 2188} 2189</script>
2189 2190 2191 2192<!-- WEBSITE + APPLICATION -->
2193<script type="application/ld+json"> 2194{ 2195 "@context": "https://schema.org", 2196 "@graph": [ 2197 { 2198 "@type": "Organization", 2199 "@id": "https://kvtotomatoa.com/#org", 2200 "name": "KVTOTO", 2201 "url": "https://kvtotomatoa.com/", 2202 "logo": { 2203 "@type": "ImageObject", 2204 "url": "https://photoin.io/images/2026/05/28/logo-kvtoto.png" 2205 } 2206 }, 2207 { 2208 "@type": "WebSite", 2209 "@id": "https://kvtotomatoa.com/#website", 2210 "url": "https://kvtotomatoa.com/", 2211 "name": "KVTOTO", 2212 "description": "KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya", 2213 "publisher": { 2214 "@id": "https://kvtotomatoa.com/#org" 2215 }, 2216 "inLanguage": "id-ID" 2217 }, 2218 { 2219 "@type": "SoftwareApplication", 2220 "@id": "https://kvtotomatoa.com/#app", 2221 "name": "KVTOTO", 2222 "url": "https://kvtotomatoa.com/", 2223 "applicationCategory": "GameApplication", 2224 "operatingSystem": "Android, iOS, Windows", 2225 "offers": { 2226 "@type": "Offer", 2227 "price": "0", 2228 "priceCurrency": "IDR" 2229 }, 2230 "aggregateRating": { 2231 "@type": "AggregateRating", 2232 "ratingValue": "4.9", 2233 "ratingCount": "62595", 2234 "bestRating": "5", 2235 "worstRating": "1" 2236 } 2237 } 2238 ] 2239} 2240</script>
2240 2241 2242 <div id="shopify-section-Product" class="shopify-section product-section mt-0"><link href="https://tahanpukul.info/outerbloom-global.css" rel="stylesheet" type="text/css" media="all" /> 2243 2244 2245 <style> 2246 .bg-card { 2247 background-color: #000000; 2248 } 2249 </style> 2250 2251 <!-- /templates/product.liquid --> 2252 2253 2254 <!-- <div itemscope itemtype="http://schema.org/Product"> --> 2255 2256 2257 <div class="product-standing-flower" data-product-type="flowerBoard"> 2258 <meta itemprop="url" content="https://kvtotomatoa.com/"> 2259 <meta itemprop="image" content="https://photoin.io/images/2026/05/16/deposit-slot-ba.png"> 2260 2261 2262 2263 <input id="data-sku" type="hidden" value="OBVSTF1086"> 2264 <div id="product-top" class="container"> 2265 <div class="row bg-card product-sticky" style="background-color: rgba(0, 0, 0, 0.1);backdrop-filter: blur(25px); padding: 20px 25px;border-radius: 10px;"> 2266 <div id="product-image" class="col-lg-7 text-center"> 2267 <div class="product-image"> 2268 <div class="row no-gutters"> 2269 2270 <div id="product-featured-image" class="row w-100"> 2271 2272 <div id="thumb-image-product" class="col-lg-2 col-12 d-none d-lg-block"> 2273 2274 <div class="swiper-container gallery-thumbs" style="min-height: 500px"> 2275 <ul class="list-unstyled slider swiper-wrapper slider-nav ProductThumbs thumbnails" id="ProductThumbsx"> 2276 2277 <li class="swiper-slide" data-type="image"> 2278 <a 2279 href="files/Blossom-Shine-WM.jpg" 2280 data-standard="https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2281 data-image="files/Blossom-Shine-WM.jpg" 2282 data-position="1" 2283 class="product-single__thumbnail" 2284 > 2285 <img 2286 class="lazyload w-100" 2287 src="https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2288 alt="KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya" 2289 width="" 2290 height="" 2291 > 2292 </a> 2293 </li> 2294 2295 2296 2297 2298 <li class="swiper-slide" data-type="image"> 2299 <a 2300 href="https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2301 data-standard="https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2302 data-image="https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2303 data-position="2" 2304 class="product-single__thumbnail" 2305 > 2306 <img 2307 class="lazyload w-100" 2308 src="https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2309 alt="KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya" 2310 width="" 2311 height="" 2312 > 2313 </a> 2314 </li> 2315 2316 2317 2318 2319 <li class="swiper-slide" data-type="image"> 2320 <a 2321 href="files/Blossom-Shine_3-WM.jpg" 2322 data-standard="https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2323 data-image="files/Blossom-Shine_3-WM.jpg" 2324 data-position="3" 2325 class="product-single__thumbnail" 2326 > 2327 <img 2328 class="lazyload w-100" 2329 src="https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2330 alt="KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya" 2331 width="" 2332 height="" 2333 > 2334 </a> 2335 </li> 2336 2337 2338 2339 2340 <li class="swiper-slide" data-type="image"> 2341 <a 2342 href="files/Blossom-Shine_4.jpg" 2343 data-standard="https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2344 data-image="files/Blossom-Shine_4.jpg" 2345 data-position="4" 2346 class="product-single__thumbnail" 2347 > 2348 <img 2349 class="lazyload w-100" 2350 src="https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2351 alt="KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya" 2352 width="" 2353 height="" 2354 > 2355 </a> 2356 </li> 2357 2358 2359 2360 </ul> 2361 </div> 2362 2363 </div> 2364 2365 <div 2366 id="featured-image-product" 2367 class="col-lg-10 col-12 d-none d-lg-block" 2368 > 2369 <div class="swiper-container gallery-top"> 2370 <div class="swiper-slide product-single__image"> 2371 2372 <div class="product-single__photos slider slider-for" id="ProductPhoto"> 2373 2374 2375 <div class="easyzoom easyzoom--overlay easyzoom--with-thumbnails"> 2376 <a href="https://photoin.io/images/2026/05/16/deposit-slot-ba.png"> 2377 <img 2378 src="https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2379 alt="KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya" 2380 id="ProductPhotoImg" 2381 class="lazyload" 2382 > 2383 2384 </a> 2385 </div> 2386 </div> 2387 2388 </div> 2389 <div class="swiper-slide product-single__video" style="display: none"> 2390 <video 2391 src="https://cdn.shopify.com/videos/c/vp/05d379ea115d41c2bd0f7d08b1496bd9/05d379ea115d41c2bd0f7d08b1496bd9.HD-1080p-7.2Mbps-24002195.mp4" 2392 playsinline 2393 loop 2394 muted 2395 ></video> 2396 </div> 2397 </div>
2398 </div> 2399 </div> 2400 2401 <div id="featured-image-product2" class="col-12 d-lg-none"> 2402 <div class="swiper-container gallery-mobile"> 2403 <ul class="swiper-wrapper"> 2404 <li class="swiper-slide img"> 2405 2406 <img 2407 class="swiper-lazy" 2408 src="https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2409 data-src="https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2410 alt="KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya" 2411 width="" 2412 height="" 2413 > 2414 2415 </li> 2416 2417 2418 <li class="swiper-slide img"> 2419 2420 <img 2421 class="swiper-lazy" 2422 src="https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2423 data-src="https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2424 alt="KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya" 2425 width="" 2426 height="" 2427 > 2428 2429 </li> 2430 2431 2432 <li class="swiper-slide img"> 2433 2434 <img 2435 class="swiper-lazy" 2436 src="https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2437 data-src="https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2438 alt="KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya" 2439 width="" 2440 height="" 2441 > 2442 2443 </li> 2444 2445 2446 <li class="swiper-slide img"> 2447 2448 <img 2449 class="swiper-lazy" 2450 src="https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2451 data-src="https://photoin.io/images/2026/05/16/deposit-slot-ba.png" 2452 alt="KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya" 2453 width="" 2454 height="" 2455 > 2456 2457 </li> 2458 2459 2460 </ul> 2461 2462 <div class="swiper-button-prev"><svg class="icon icon-chevron-left" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="7" height="12" viewBox="0 0 7 12"> <circle cx="60%" cy="50%" r="12" fill="transparent" /> <path d="M6.35355339,10.6464466 C6.54881554,10.8417088 6.54881554,11.1582912 6.35355339,11.3535534 C6.15829124,11.5488155 5.84170876,11.5488155 5.64644661,11.3535534 L0.646446609,6.35355339 C0.451184464,6.15829124 0.451184464,5.84170876 0.646446609,5.64644661 L5.64644661,0.646446609 C5.84170876,0.451184464 6.15829124,0.451184464 6.35355339,0.646446609 C6.54881554,0.841708755 6.54881554,1.15829124 6.35355339,1.35355339 L1.70710678,6 L6.35355339,10.6464466 Z"/> </svg></div> 2463 <div class="swiper-button-next"><svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="7" height="10" viewBox="0 0 7 10" fill="none"> 2464 <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"/> 2465 </svg></div> 2466 2467 <!-- Add Pagination --> 2468 <div class="swiper-pagination"></div> 2469 2470 </div> 2471 </div> 2472 2473 <div class="product-m-pageleb-video col-12 text-center d-lg-none"> 2474 <!-- product video --> 2475 <style> 2476 .view-video{display:block; margin:auto; padding:5px 10px;font-size:16px;font-weight:bold;border:2px solid #ffffff;background:#fff;} 2477 .view-video .icon-play{fill:#ffffff;vertical-align: middle;} 2478 .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;} 2479 .close-video{position:absolute;right:9px; top:8%;z-index:2;padding:5px;} 2480 .close-video .icon{width:30px;height:30px;} 2481 /*responsive iframe */ 2482 .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);} 2483 .video-container iframe {position: absolute;top:60%;left: 0;width: 100%;height: 100%;} 2484 2485 .youtube { 2486 background-color: #000; 2487 margin-bottom: 30px; 2488 position: relative; 2489 padding-top: 56.25%; 2490 overflow: hidden; 2491 cursor: pointer; 2492 width: 100%; 2493 } 2494 .swiper-slide .youtube { 2495 max-width: 480px; 2496 } 2497 .youtube img { 2498 width: 100%; 2499 top: -16.82%; 2500 left: 0; 2501 opacity: 0.7; 2502 } 2503 .youtube .play-button { 2504 width: 90px; 2505 height: 60px; 2506 background-color: #333; 2507 box-shadow: 0 0 30px rgba( 0,0,0,0.6 ); 2508 z-index: 1; 2509 opacity: 0.8; 2510 border-radius: 6px; 2511 } 2512 .youtube .play-button:before { 2513 content: ""; 2514 border-style: solid; 2515 border-width: 15px 0 15px 26.0px; 2516 border-color: transparent transparent transparent #fff; 2517 } 2518 .youtube img, 2519 .youtube .play-button { 2520 cursor: pointer; 2521 } 2522 .youtube img, 2523 .youtube iframe, 2524 .youtube .play-button, 2525 .youtube .play-button:before { 2526 position: absolute; 2527 } 2528 .youtube .play-button, 2529 .youtube .play-button:before { 2530 top: 50%; 2531 left: 50%; 2532 transform: translate3d( -50%, -50%, 0 ); 2533 } 2534 .youtube iframe { 2535 height: 100%; 2536 width: 100%; 2537 top: 0; 2538 left: 0; 2539 } 2540 </style> 2541 2542 2543 </div> 2544 </div> 2545 2546 <div class="product-desc-add position-relative d-none d-lg-block m-0"> 2547 2548 </div> 2549 2550
2550<script> 2551 if ($(window).width() < 991) { 2552 var direction = 'horizontal' 2553 } else { 2554 var direction = 'vertical' 2555 $(".gallery-thumbs").height($("#ProductPhotoImg").height()) 2556 } 2557 var swiper = new Swiper('.gallery-thumbs', { 2558 2559 direction, 2560 slidesPerView: 4.5, 2561 spaceBetween: 12, 2562 navigation: { 2563 nextEl: '.swiper-button-next', 2564 prevEl: '.swiper-button-prev', 2565 } 2566 }); 2567 2568 var swiper = new Swiper('.gallery-mobile', { 2569 //loop: true, 2570 lazy: true, 2571 speed: 300, 2572 resistance : true, 2573 resistanceRatio : 0, 2574 freeModeMomentumRatio : 0.45, 2575 freeModeMomentumVelocityRatio : 1.5, 2576 navigation: { 2577 nextEl: '.swiper-button-next', 2578 prevEl: '.swiper-button-prev', 2579 }, 2580 pagination: { 2581 el: '.swiper-pagination' 2582 }, 2583 useCSS3Transforms: false, 2584 loop: false, 2585 on: { 2586 init: function () { 2587 console.log('swiper initialized'); 2588 var currentVideo = $("[data-swiper-slide-index=" + this.realIndex + "]").find("video"); 2589 currentVideo.trigger('play'); 2590 }, 2591 }, 2592 }); 2593 2594 /* GET ALL VIDEOS */ 2595 var sliderVideos = $(".swiper-slide video"); 2596 2597 /* SWIPER API - Event will be fired after animation to other slide (next or previous) */ 2598 swiper.on('slideChange', function () { 2599 console.log('slide changed'); 2600 /* stop all videos */ 2601 sliderVideos.each(function( index ) { 2602 this.currentTime = 0; 2603 }); 2604 2605 /* SWIPER GET CURRENT AND PREV SLIDE (AND The VIDEO INSIDE) */ 2606 var prevVideo = $(`[data-swiper-slide-index="${this.previousIndex}]"`).find("video"); 2607 var currentVideo = $(`[data-swiper-slide-index="${this.realIndex}"]`).find("video"); 2608 prevVideo.trigger('stop'); 2609 currentVideo.trigger('play'); 2610 }); 2611 2612 2613 $("[data-video]").click(function(){ 2614 const file = $(this).data("video") 2615 $(".product-single__video").show() 2616 $(".product-single__image").hide() 2617 $(".product-single__video").find("video").attr("src", file) 2618 $(".product-single__video").find("video")[0].play(); 2619 }) 2620 $("[data-image]").click(function(){ 2621 $(".product-single__video").hide() 2622 $(".product-single__image").show() 2623 $(".product-single__video").find("video")[0].pause(); 2624 }) 2625 2626 $("#product-image .swiper-slide").each(function(){ 2627 let width = $(this).width() 2628 $(this).height(width) 2629 }) 2630 2631 $(window).resize(function() { 2632 $("#product-image .swiper-slide").each(function(){ 2633 let width = $(this).width() 2634 $(this).height(width) 2635 }) 2636 }) 2637 </script>
2637 2638 2639 </div> 2640 2641 2642 <div class="grid__item_product-info mb-3"> 2643 <div class="c-pdp-product-info"> 2644 <ul class="c-pdp-product-info__service c-pdp-product-info__service--active"> 2645 <!-- artikel --> 2646<li> 2647 <strong>KVTOTO</strong> hadir sebagai salah satu situs login pasaran togel online yang menawarkan akses praktis serta pilihan pasaran yang lengkap dalam satu platform. Pengguna dapat menemukan berbagai informasi penting mulai dari jadwal pasaran, hasil keluaran terbaru, hingga pembaruan data yang disusun secara jelas dan mudah dipahami. Tampilan yang responsif serta navigasi sederhana membuat KVTOTO semakin dikenal sebagai pilihan bagi pengguna yang ingin mengakses informasi pasaran secara cepat melalui desktop maupun perangkat mobile. 2648</li> 2649<br> 2650<li> 2651 Di tengah banyaknya situs pasaran togel online, <strong>KVTOTO</strong> berupaya menghadirkan pengalaman akses yang lebih nyaman melalui informasi pasaran yang terorganisir dan diperbarui secara berkala. Beragam pilihan pasaran tersedia untuk memudahkan pengguna menemukan informasi sesuai kebutuhan, sementara sistem akses yang praktis membantu setiap halaman dapat dijelajahi dengan lebih cepat dan efisien. 2652</li> 2653 </ul> 2654 </div> 2655 </div> 2656 2657 2658 2659 2660 2661 <style> 2662 .c-pdp-product-info__service--active { 2663 font-size: 12px; 2664 padding-left: 10px; 2665 text-align: left; 2666 max-width: 550px; 2667 margin: auto; 2668 color: #fff; 2669 } 2670 .c-pdp-product-info__service--active li { 2671 list-style: disc; 2672 } 2673 .c-pdp-product-info { 2674 background-color: #000000; 2675 padding: 12px; 2676 margin: 0; 2677 } 2678 .freeship em { 2679 font-style: italic; 2680 font-size: 12px !important; 2681 } 2682 2683 2684 </style> 2685 2686
2686<script> 2687 $(document).ready(function(){ 2688 if ( $(".c-pdp-product-info__service li").length == 1 ) { 2689 $(".c-pdp-product-info__service").addClass("no-bullet"); 2690 $(".c-pdp-product-info__service li").addClass("no-bullets"); 2691 } 2692 }); 2693 </script>
2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 </div> 2707 <div id="product-meta" class="col-lg-5 p-0"> 2708 <div class="product-meta"> 2709 <style> 2710 .product-meta--review {margin-top:10px} 2711 .freeship * {font-size: 14px !important;font-style: normal;} 2712 </style> 2713 <h1 itemprop="name" class="mb-2" style="color: rgb(255 14 0); font-weight: bold;">KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya</h1> 2714 2715 <div itemprop="offers" itemscope itemtype="http://schema.org/Offer"> 2716 <meta itemprop="priceCurrency" content="IDR"> 2717 2718 <link itemprop="availability" href="https://schema.org/InStock"> 2719
2719<script 2720 type="text/javascript" 2721 src="//platform-api.sharethis.com/js/sharethis.js#property=5acdc0aa3ef3c0001396fd50&product=custom-share-buttons" 2722 async="async" 2723 ></script>
2723 2724 2725 2726 2727 2728 <span class="visually-hidden">Translation missing: en.products.general.regular_price</span> 2729 2730 <span class="visually-hidden">Translation missing: en.products.general.sale_price</span> 2731 2732 <div class="row no-gutters mb-3"> 2733 <span 2734 id="ProductPrice" 2735 class="h2 ProductPrice" 2736 itemprop="price" 2737 content="835000" style="color: #ffffff;" 2738 > 2739 Rp 5.000 2740 </span> 2741 <div class="discount-product-detail"> 2742 <p id="ComparePrice" class="ComparePrice mt-2 mt-lg-0"> 2743 Rp 10.000 2744 </p> 2745 <span class=" tag-discount"> 2746 2747 2748 <span id="newDiscount" class="product-tag persentase-discount hide"> 2749 (90%) 2750 </span><br> 2751 2752 </span> 2753 </div> 2754 </div> 2755 2756 <div class="row no-gutters meta-sds"> 2757 <div class="col-12 mb-2 mb-lg-0 stock-info"> 2758 2759 2760 <span 2761 id="ProductStock-Product" 2762 class="product-single__stock mb-2 hide" 2763 > 2764 2765 2766 2767 2768 Barang dikirim pada 2769 2770 2771 2772 </span> 2773 2774 <style> 2775 .short-desc-desktop { 2776 margin-bottom: 2rem; 2777 color: white; 2778 } 2779 .short-desc ul li:nth-child(n + 4) { 2780 display: none; 2781 } 2782 .short-desc ul li.showList:nth-child(n + 4) { 2783 display: list-item; 2784 } 2785 label.more { 2786 display: none; 2787 } 2788 label.more.showMe { 2789 display: block; 2790 font-size: 12px; 2791 text-transform: uppercase; 2792 font-weight: 700; 2793 cursor: pointer; 2794 } 2795 </style> 2796 2797 <div class="short-desc-desktop d-none d-lg-block"> 2798 <div class="short-desc"> 2799 2800 <p>KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari.</p> 2801 </div> 2802 <label class="more">Show More â</label>
2803 </div><br> 2804 2805 2806
2806<script> 2807 var liCount; 2808 $(document).ready(function () { 2809 $(".short-desc ul").each(function() { 2810 liCount = $(this).children("li").length; 2811 if (liCount > 3) { 2812 $(this).parent(".short-desc").next(".more").addClass("showMe"); 2813 } 2814 }); 2815 2816 $(".more").click(function () { 2817 //$(".short-desc").find("li").addClass("showList"); 2818 // $(this).hide(); 2819 $("#product-desc").find("ul").show() 2820 $('html, body').animate({ 2821 scrollTop: $("#product-desc").offset().top - 250 2822 }, 2000); 2823 $("#product-desc").css("height","auto"); 2824 $("#more_content").remove(); 2825 $(".product-spec").append("<div id='less_content' class='readmore'><span class='less_content'>Less</span></div>") 2826 }); 2827 }); 2828 </script>
2828 2829 2830 2831 </div> 2832 </div> 2833 2834 <div id="purchaseProduct"> 2835 2836 2837 2838 2839 <style> 2840 .variant-metafield { 2841 display: block!important; 2842 width: 1px; 2843 padding: 0; 2844 border-color: #fff; 2845 } 2846 .select2-results__option[aria-disabled] { 2847 display: none; 2848 } 2849 2850 .towel-bordir { 2851 width: 100%; 2852 display: flex; 2853 align-items: center; 2854 justify-content: space-around; 2855 } 2856 </style> 2857 2858 2859 2860 2861
2861<script> 2862 2863 2864 </script>
2864 2865 2866 2867 2868 2869 2870 2871 <select 2872 name="id[]" 2873 id="productSelect" 2874 class="product-single__variants ignore hide hide" 2875 > 2876 2877 2878 2879 <option 2880 2881 selected="selected" 2882 2883 data-sku="OBVSTF1086" 2884 value="44083045826775" 2885 > 2886 Default Title 2887 </option> 2888 2889 2890 2891 </select> 2892 2893
2893<script src="//outerbloom.com/cdn/shop/t/138/assets/jquery.magnific-popup.min.js?v=184369421263510081681752652422" type="text/javascript"></script>
2893 2894 2895
2895<script> 2896 $('.size-chart-open-popup').magnificPopup({ 2897 type:'inline', 2898 midClick: true 2899 }); 2900 </script>
2900 2901 2902 2903 2904 2905 <div class="upload-image-preview"> 2906 2907 2908 2909 2910 2911 <style> 2912 .file-dnd * { 2913 margin: 0; 2914 padding: 0; 2915 box-sizing: border-box; 2916 } 2917 .file-dnd { 2918 width: 100%; 2919 height: 250px; 2920 border: 1px solid #ddd; 2921 border-radius: 10px; 2922 padding: 15px; 2923 display: flex; 2924 flex-direction: column; 2925 gap: 10px; 2926 /* box-shadow: 0px 2px 10px 2px rgba(0,0,0,0.05); */ 2927 margin: auto; 2928 } 2929 .file-dnd input { 2930 display: none; 2931 } 2932 .file-dnd .before-upload { 2933 border: 1px dashed #888; 2934 flex: 1; 2935 border-radius: 5px; 2936 display: flex; 2937 justify-content: center; 2938 align-items: center; 2939 text-align: center; 2940 cursor: pointer; 2941 } 2942 .file-dnd .before-upload > div { 2943 display: flex; 2944 flex-direction: column; 2945 align-items: center; 2946 gap: 8px; 2947 } 2948 .file-dnd .before-upload > div h4 { 2949 width: 150px; 2950 } 2951 .file-dnd .before-upload > div p { 2952 font-size: 12px !important; 2953 color: #555; 2954 } 2955 .file-dnd.active .before-upload { 2956 border: 1px solid #5750d9; 2957 background-color: #f5f5ff; 2958 } 2959 .file-dnd .after-upload { 2960 position: relative; 2961 display: none; 2962 } 2963 .file-dnd .after-upload img { 2964 width: 100%; 2965 border-radius: 5px; 2966 max-height: 180px; 2967 object-fit: contain; 2968 display: block; 2969 } 2970 .file-dnd .after-upload .clear-btn { 2971 position: absolute; 2972 top: 10px; 2973 right: 10px; 2974 background: rgba(255, 255, 255, 0.5); 2975 width: 15px; 2976 height: 15px; 2977 text-align: center; 2978 line-height: 15px; 2979 border-radius: 50%; 2980 color: #fff; 2981 cursor: pointer; 2982 font-size: 14px; 2983 } 2984 </style> 2985 2986 <div 2987 class="file-dnd mb-3" 2988 2989 style="display: none" 2990 2991 > 2992 <label for="upload-photo">Upload your Photo:</label> 2993 <input type="file" id="upload-photo" accept="image/*"> 2994 <input type="hidden" data-properties="Photo"> 2995 <div class="before-upload"> 2996 <div> 2997 <svg id="surface1" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="33.053" height="41.719" viewBox="0 0 33.053 41.719"> 2998 <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> 2999 <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> 3000 <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> 3001 </svg> 3002 3003 <h4>Drag & Drop Photo file or Browse</h4> 3004 <p>Supports: JPEG, PNG, GIF, TIFF</p> 3005 </div> 3006 </div> 3007 <div class="after-upload"> 3008 <div class="clear-btn">×</div> 3009 <img src="" width="" height=""> 3010 </div> 3011 </div> 3012
3012<script> 3013 function applyDndFile(el) { 3014 const parent = document.querySelector(".file-dnd") 3015 const beforeUploadEl = el.querySelector(".before-upload") 3016 const afterUploadEl = el.querySelector(".after-upload") 3017 const inputFile = el.querySelector("input[type=file]") 3018 const imagePreview = el.querySelector(".after-upload img") 3019 const clearBtn = el.querySelector(".after-upload .clear-btn") 3020 const inputProps = parent.querySelector("[data-properties]"); 3021 3022 async function upload(name, uri, type) { 3023 try { 3024 const filename = name.split('.')[0] 3025 let formData = new FormData(); 3026 formData.append("file", uri); 3027 const response = await fetch(`${host}/upload?name=${filename}&dir=gift&type=${type}`, { 3028 method: "POST", 3029 body: formData 3030 }) 3031 if(response) { 3032 const res = await response.json() 3033 return res 3034 } 3035 } catch(err){ 3036 console.log(err) 3037 } 3038 } 3039 3040 function showImagePreview(img) { 3041 if(img){ 3042 const blobUrl = URL.createObjectURL(img) 3043 imagePreview.src = blobUrl 3044 afterUploadEl.style.display = "block" 3045 beforeUploadEl.style.display = "none" 3046 } 3047 } 3048 3049 beforeUploadEl.addEventListener("click", (e) => { 3050 e.preventDefault() 3051 inputFile.click() 3052 }) 3053 3054 inputFile.addEventListener("change", async (e) => { 3055 e.preventDefault() 3056 showImagePreview(e.target.files[0]) 3057 var uploadData = await upload(e.target.files[0].name, e.target.files[0], e.target.files[0].type) 3058 inputProps.value = uploadData?.url 3059 }) 3060 3061 clearBtn.addEventListener("click", (e) => { 3062 afterUploadEl.style.display = "none" 3063 beforeUploadEl.style.display = "flex" 3064 inputProps.value = "" 3065 }) 3066 3067 beforeUploadEl.addEventListener("dragover", (e) => { 3068 e.preventDefault() 3069 el.classList.add("active") 3070 }) 3071 3072 beforeUploadEl.addEventListener("dragleave", (e) => { 3073 e.preventDefault() 3074 el.classList.remove("active") 3075 }) 3076 3077 beforeUploadEl.addEventListener("drop", async (e) => { 3078 e.preventDefault() 3079 el.classList.remove("active") 3080 showImagePreview(e.dataTransfer.files[0]) 3081 var uploadData = await upload(e.dataTransfer.files[0].name, e.dataTransfer.files[0], e.dataTransfer.files[0].type) 3082 console.log(uploadData) 3083 inputProps.value = uploadData?.url 3084 }) 3085 } 3086 3087 applyDndFile(document.querySelector(".file-dnd")) 3088 3089 $(document).ready(function(){ 3090 $(".variant-swatch").change(function(){ 3091 const v = $(this).val().toLowerCase() 3092 const list = ["photo", "custom one side", "custom two side", "small", "big"] 3093 if(list.some(item => v.includes(item))) return $(".file-dnd").show() 3094 $(".file-dnd").hide() 3095 $(".file-dnd").find("[data-properties]").val("") 3096 $(".after-upload").hide() 3097 $(".before-upload").css("display", "flex") 3098 }) 3099 }) 3100 </script>
3100 3101 3102 </div> 3103 3104 3105 <div class="delivery-city mb-4"> 3106 <a href="https://legend.kvtotomat.shop/"> 3107 <center><img src="https://photoin.io/images/2026/01/17/Gif-kvtoto-dftr.gif" alt="logo-daftar" style="width: 260px; margin-top: -20px;"></center></a><br> 3108 <h4 class="fw-600 text-uppercase mb-15" style="color: rgb(255 14 0);">AKSES LINK RESMI KVTOTO !</h4> 3109 <div class="row justify-content-between m-0"> 3110 <select id="cities" class="form-control select-search" required> 3111 <option value="">Gabung Sekarang Di KVTOTO Nikmati Akses Tercepat Bersama Bandar TOGEL</option> 3112 </select> 3113 </div> 3114 </div> 3115 3116 <style> 3117 @media (max-width: 768px) { 3118 .select2-search__field { 3119 pointer-events: none !important; 3120 } 3121 3122 .select2-search { 3123 display: none !important; 3124 } 3125 } 3126 </style> 3127 3128
3128<script> 3129 $(document).ready(function() { 3130 // Check if mobile 3131 if (window.innerWidth <= 768) { 3132 // When cities select2 opens on mobile, remove focus from search 3133 $('#cities').on('select2:open', function() { 3134 setTimeout(function() { 3135 $('.select2-search__field').blur(); 3136 $('.select2-search__field').prop('readonly', true); 3137 }, 100); 3138 }); 3139 } 3140 }); 3141 </script>
3141 3142 3143 <style> 3144 .icon-img-footer { 3145 width: 80px; 3146 padding: 0px 5px; 3147 } 3148 @media (min-width: 768px) { 3149 .icon-img-footer { 3150 width: 120px; 3151 } 3152 } 3153 @media (min-width: 992px) { 3154 .icon-img-footer { 3155 width: 120px; 3156 } 3157 } 3158 3159 3160 </style> 3161 <div id="row-delivery-date" class="row m-0 mb-3"> 3162 <h4 class="fw-600 text-uppercase col-12 p-0 mb-15" style="color: rgb(255 14 0);">Nikmati Akses Bermain TOGEL Bersama KVTOTO</h4> 3163 <div id="deliveryDate" class="m-0"></div> 3164 <div id="deliveryDateFull"> 3165 <div class=""> 3166 <input 3167 type="text" 3168 id="full-date" 3169 class="date-full calendarbutton btn steps-btn btn-date-time mb-0" 3170 value="Full Calendar" 3171 > 3172 <label for="full-date"><svg version="1.1" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="32" height="32" viewBox="0 0 32 32"> 3173 <title>icon-arrow-right</title> 3174 <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> 3175 </svg></label> 3176 </div> 3177 <button class="btnChangeDeliveryDate hide">Change Delivery Date</button> 3178 </div> 3179 <div class="form-group p-0"> 3180 <input type="text" id="propDeliveryDate" required class="hide"> 3181 </div> 3182 </div> 3183 3184 3185 <div id="row-delivery-time" class="row m-0 mb-3"> 3186 <h4 class="text-center fw-600 text-uppercase col-12 mb-15"> 3187 SEO ZEE 3188 </h4> 3189 <div id="deliveryTime" class="d-flex w-100 m-0"></div> 3190 <div class="form-group p-0"> 3191 <input type="text" id="propDeliveryTime" class="hide" required> 3192 </div> 3193 </div> 3194 3195 3196 3197 3198 3199 <div id="personalizeBtn"> 3200 3201 3202 3203 3204 <button 3205 class="btn text-uppercase w-100 fw-400" 3206 3207 3208 3209 > 3210 3211 customize your flower board 3212 3213 </button> 3214 <div class="button-share-wishlist d-flex justify-content-around mt-3"> 3215 <div class="button-share text-center"> 3216 <p id="shareButton" class="d-flex gap-2"><span>KVTOTO</span><svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="15" height="13" viewBox="0 0 15 13" fill="none"> 3217 <path d="M13.825 5.85006L10 2.02506V4.07506L9.28333 4.18339C5.69167 4.69172 3.25833 6.57506 1.86667 9.45839C3.8 8.09172 6.2 7.43339 9.16667 7.43339H10V9.67506M8.33333 8.28339C4.60833 8.45839 1.94167 9.80006 0 12.5167C0.833333 8.35006 3.33333 4.18339 9.16667 3.35006V0.0167236L15 5.85006L9.16667 11.6834V8.26672C8.89167 8.26672 8.61667 8.27506 8.33333 8.28339Z" fill="#ffffff"/> 3218 </svg> 3219 </p> 3220 </div> 3221 <div class="button-wishlist text-center"> 3222 <p id="wishButton" class="d-flex gap-2 wishlist-toggle" data-product-handle="blossom-shine"><span>Wishlist</span><svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="16" height="15" viewBox="0 0 16 15" fill="none"> 3223 <path d="M2.03341 7.70827C1.70392 7.38096 1.44286 6.99135 1.26546 6.56213C1.08805 6.13292 0.997838 5.67269 1.00008 5.20827C1.00008 4.26896 1.37322 3.36812 2.03741 2.70393C2.7016 2.03974 3.60244 1.6666 4.54175 1.6666C5.85841 1.6666 7.00841 2.38327 7.61675 3.44993H8.55008C8.85934 2.90748 9.30684 2.45667 9.84699 2.14341C10.3871 1.83015 11.0007 1.66563 11.6251 1.6666C12.5644 1.6666 13.4652 2.03974 14.1294 2.70393C14.7936 3.36812 15.1667 4.26896 15.1667 5.20827C15.1667 6.18327 14.7501 7.08327 14.1334 7.70827L8.08341 13.7499L2.03341 7.70827ZM14.7167 8.29993C15.5084 7.49993 16.0001 6.4166 16.0001 5.20827C16.0001 4.04795 15.5391 2.93515 14.7187 2.11467C13.8982 1.2942 12.7854 0.833267 11.6251 0.833267C10.1667 0.833267 8.87508 1.5416 8.08341 2.6416C7.67933 2.08035 7.14725 1.62353 6.53131 1.30904C5.91537 0.994549 5.23333 0.831448 4.54175 0.833267C3.38143 0.833267 2.26863 1.2942 1.44816 2.11467C0.627684 2.93515 0.166748 4.04795 0.166748 5.20827C0.166748 6.4166 0.658415 7.49993 1.45008 8.29993L8.08341 14.9333L14.7167 8.29993Z" fill="#ffffff"/> 3224 </svg> 3225 <!-- 3226 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="34" height="30" viewBox="0 0 34 30" fill="none"> 3227 <path d="M32.8333 9.23082C32.8333 4.51916 29.0142 0.699158 24.3025 0.699158C21.2 0.699158
322718.4933 2.35999 17 4.83582C15.5067 2.36082 12.8 0.699158 9.69749 0.699158C4.98582 0.699991 1.16666 4.51916 1.16666 9.23082C1.16666 10.3075 1.37499 11.3342 1.73916 12.2825C4.55999 20.3967 17 29.3008 17 29.3008C17 29.3008 29.44 20.3967 32.2617 12.2825C32.6258 11.3342 32.8333 10.3075 32.8333 9.23082Z" fill="white" fill-opacity="0.32" stroke="#757575" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 3228 </svg> 3229 --> 3230 </p> 3231 </div> 3232 </div> 3233 </div> 3234 </div> 3235 <div class="purchasePopup purchasePopupSpotify" style="display: none;"> 3236 <div class="purchaseArea"> 3237 <div class="sectionPurchase sectionPurchaseSpotify"> 3238 <div class="wrapperPurchase"> 3239 <div class="headerPurchase"> 3240 <h3>personalize spotify photo print</h3> 3241 <a class="close-purchase-popup"> 3242 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="18" height="18" viewBox="0 0 18 18" fill="none"> 3243 <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> 3244 </svg> 3245 </a> 3246 </div> 3247 <div class="contentPurchase"> 3248 <div class="spotifyAddons"></div> 3249 </div> 3250 3251 <div class="purchase-button btn-addon row m-0" style="display: none;"> 3252 <div class="col-12 col-lg-2 text-left mb-2 p-0"> 3253 <button class="back-purchase-button back-addon text-uppercase"> 3254 <svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png"> 3255 <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> 3256 </svg> 3257 <span>Back</span> 3258 </button> 3259 </div> 3260 <div class="col-12 col-lg-10 text-right" style="display: flex;justify-content: end;gap: 20px;"> 3261 <button class="btn next-purchase-button next-addon text-uppercase"> 3262 <span>continue without add-ons</span> 3263 </button> 3264 </div> 3265 </div> 3266 </div> 3267 </div> 3268 </div> 3269 </div> 3270 3271 <style> 3272 #PBarNextFrameWrapper { 3273 display: none; 3274 } 3275 #backgroundPopup { 3276 display: none; 3277 position: fixed; 3278 _position: absolute; 3279 height: 100%; 3280 width: 100%; 3281 top: 0; 3282 left: 0; 3283 background: rgb(117 117 117 / 24%); 3284 z-index: 1; 3285 } 3286 .sectionPurchase { 3287 height: 100%; 3288 position: relative; 3289 max-width: 1344px; 3290 background-color: #fff; 3291 padding: 0; 3292 overflow: hidden; /* Changed from auto to hidden */ 3293 display: flex; 3294 flex-direction: column; 3295 } 3296 .sectionPurchase.purchaseAddonSpotify { 3297 max-width: 1070px!important; 3298 max-height: 765px!important; 3299 } 3300 .sectionPurchaseBoard { 3301 max-width: 872px!important; 3302 max-height: 821px!important; 3303 } 3304 .purchaseAddonSpotify .btn-action { 3305 position: absolute; 3306 bottom: 0; 3307 left: 0; 3308 width: 100%; 3309 display: flex; 3310 gap: 10px; 3311 } 3312 .wrapperPurchase { 3313 position: relative; 3314 height: 100%; 3315 display: flex; 3316 flex-direction: column; 3317 } 3318 3319 /* New styles for scrollable content and sticky button */ 3320 .purchase-content { 3321 flex: 1; 3322 overflow-y: auto; 3323 overflow-x: hidden; 3324 padding: 20px; 3325 } 3326 3327 .purchase-button-wrapper { 3328 position: sticky; 3329 bottom: 0; 3330 background-color: #fff; 3331 border-top: 1px solid #e0e0e0; 3332 padding: 15px 0; 3333 margin-top: auto; 3334 z-index: 10; 3335 } 3336 3337 .purchasePopup { 3338 display: none; 3339 position: fixed; 3340 background: rgb(117 117 117 / 24%); 3341 z-index: 999; 3342 padding: 40px; 3343 font-size: 13px; 3344 top: 0; 3345 left: 0; 3346 width: 100%; 3347 height: 100%; 3348 } 3349 .popupPurchaseClose{ 3350 font-size:14px; 3351 line-height:14px; 3352 right:45px; 3353 top:45px; 3354 position:absolute; 3355 color:#6fa5fd; 3356 font-weight:700; 3357 display:block; 3358 cursor: pointer; 3359 } 3360 3361 .headerPurchase { 3362 margin-bottom: 30px; 3363 display: flex; 3364 justify-content: space-between; 3365 } 3366 3367 .headerPurchase h3 { 3368 font-size: 16px; 3369 text-transform: uppercase; 3370 } 3371 3372 .sectionPurchaseBoard .headerPurchase { 3373 margin-bottom: 15px; 3374 } 3375 3376 .sectionPurchaseBoard .formAddressPurchase { 3377 padding-top: 0; 3378 } 3379 3380 .purchaseArea { 3381 position: relative; 3382 height: 100%; 3383 } 3384 3385 .purchaseArea h4 { 3386 width: 100%; 3387 font-size: 12px; 3388 font-weight: 600; 3389 margin-bottom: 10px; 3390 text-transform: uppercase; 3391 } 3392 3393 .menuPurchase { 3394 margin-bottom: 30px; 3395 } 3396 3397 .menuPurchase ul { 3398 list-style-type: none; 3399 margin: 0; 3400 } 3401 3402 .menuPurchase ul li { 3403 display: inline-block; 3404 border: 1px solid #ffffff; 3405 padding: 5px 20px; 3406 margin-right: 5px; 3407 margin-bottom: 10px; 3408 font-size: 12px; 3409 font-weight: 400; 3410 } 3411 3412 .menuPurchase ul li:hover, .menuPurchase ul li.selected { 3413 background-color: #ffffff; 3414 color: #ffffff; 3415 } 3416 3417 .contentPurchase h5 { 3418 font-size: 12px; 3419 margin-bottom: 10px; 3420 font-weight: 400; 3421 overflow: hidden; 3422 } 3423 3424 /* Card */ 3425 3426 #itemCards { 3427 max-height: 430px; 3428 overflow: auto; 3429 } 3430 3431 .item-cards { 3432 width: 100%; 3433 } 3434 .item-card.selected { 3435 border: 1px solid #ffffff; 3436 } 3437 .item-card:hover { 3438 border: 1px solid #C4C4C4; 3439 } 3440 .item-cards .item-card { 3441 position: relative; 3442 width: calc(33% - 10px); 3443 max-width: calc(33% - 10px); 3444 flex: 0 0 calc(33% - 10px); 3445 margin-bottom: 20px; 3446 } 3447 .item-cards .item-card label, 3448 .item-addons .item-addon label { 3449 position: absolute; 3450 left: 0; 3451 width: 100%; 3452 height: 100%; 3453 } 3454 .item-cards .item-card .card-image img, 3455 .item-addons .item-addon .card-image img { 3456 display: block; 3457 width: 100%; 3458 } 3459 .item-card .card-meta, 3460 .item-addon .card-meta { 3461 padding: 10px 5px 5px; 3462 } 3463 .item-card.selected .card-meta, 3464 .item-addon.selected .card-meta, 3465 .item-card.selected .card-qty { 3466 background-color: #ffffff; 3467 color: #fff; 3468 visibility: visible!important; 3469 } 3470 .item-card:hover .card-meta, 3471 .item-addon:hover .card-meta, 3472 .item-card:hover .card-qty { 3473 background-color: #C4C4C4; 3474 color: #fff; 3475 visibility: visible!important; 3476 } 3477 .item-cards .item-card p, 3478 .item-addons .item-addon p { 3479 font-size: 12px !important; 3480 margin: 0; 3481 font-weight: 600; 3482 } 3483 .item-card .card-meta input, 3484 .item-addon .card-meta input { 3485 display: none; 3486 } 3487 .item-cards .item-card h5, 3488 .item-addons .item-addon h5 { 3489 text-transform: uppercase; 3490 max-height: 35px; 3491 } 3492 3493 @media (max-width: 768px) { 3494 .item-cards .item-card {
3495 width: calc(50% - 10px); 3496 max-width: calc(50% - 10px); 3497 flex: 0 0 calc(50% - 10px); 3498 margin-bottom: 0; 3499 } 3500 } 3501 3502 .card-qty { 3503 display: flex; 3504 padding: 5px; 3505 visibility: hidden; 3506 background-color: #fff !important; 3507 z-index: 999; 3508 } 3509 .card-qty a { 3510 border-width: 1px; 3511 width: 30%; 3512 cursor: pointer; 3513 text-align: center; 3514 align-self: center; 3515 height: 28px; 3516 display: block; 3517 position: relative; 3518 } 3519 .card-qty a svg { 3520 position: absolute; 3521 top: 50%; 3522 left: 50%; 3523 transform: translate(-50%, -50%); 3524 text-align: center; 3525 } 3526 input.btn-qty { 3527 border-width: 0px; 3528 border-radius: 0; 3529 background-color: #fff; 3530 -webkit-appearance: none; 3531 box-shadow: none !important; 3532 -webkit-box-shadow: none !important; 3533 -moz-box-shadow: none!important; 3534 width: 40%; 3535 border-left: 1px solid #c4c4c4; 3536 border-right: 1px solid #c4c4c4; 3537 padding: 0; 3538 } 3539 3540 .sectionPurchaseBoard #itemAddons .item-card { 3541 width: calc(20% - 15px); 3542 max-width: calc(20% - 15px); 3543 flex: 0 0 calc(20% - 15px); 3544 } 3545 3546 .purchase-button { 3547 width: 100%; 3548 padding: 0; /* Reset padding as it's now handled by wrapper */ 3549 margin: 0; 3550 } 3551 3552 .sectionPurchaseBoard .purchase-button { 3553 margin-top: 0 !important; /* Reset margin */ 3554 } 3555 3556 .back-purchase-button, .back-spotify { 3557 width: 139px; 3558 border: 1px solid; 3559 height: 43px; 3560 } 3561 .purchase-button .btn { 3562 width: 297px; 3563 height: 43px; 3564 background-color: #ffffff; 3565 color: #ffffff; 3566 } 3567 .purchase-button .btn[disabled] { 3568 background-color: #EEEEEE; 3569 } 3570 .back-purchase-button svg, .back-spotify svg { 3571 align-self: center; 3572 vertical-align: middle; 3573 margin-right: 10px; 3574 } 3575 3576 #purchaseProduct .row .error { 3577 font-size: 12px !important; 3578 color: orange; 3579 margin-top: 5px; 3580 } 3581 3582 .reviewCardPurchase { 3583 max-width: 448px; 3584 float: right; 3585 } 3586 3587 .addonsPurchase .addon-item {display: flex;justify-content: space-between;} 3588 .addon-item * {align-self: center;font-size: 12px;} 3589 .addon-itm-title {width: 360px;} 3590 .addon-itm-line-price {color: #757575;width: 80px;justify-content: space-between;display: flex;} 3591 3592 .propsAddonSpotify p { 3593 margin: 0; 3594 display: flex; 3595 font-size: 12px !important; 3596 margin-bottom: 5px; 3597 } 3598 .propsAddonSpotify p span:first-child { 3599 text-transform: uppercase; 3600 font-weight: 600; 3601 -ms-flex: 0 0 150px; 3602 flex: 0 0 150px; 3603 max-width: 150px; 3604 } 3605 3606 .addonsPurchase .addons { 3607 max-height: 250px; 3608 overflow: auto; 3609 } 3610 3611 .btn .loading:after { 3612 content: ""; 3613 display: inline-block; 3614 width: 20px; 3615 height: 20px; 3616 padding: 3px; 3617 aspect-ratio: 1; 3618 border-radius: 50%; 3619 background: #FFFFFF; 3620 --_m: conic-gradient(#0000 10%, #ffffff), linear-gradient(#ffffff 0 0) content-box; 3621 -webkit-mask: var(--_m); 3622 mask: var(--_m); 3623 -webkit-mask-composite: source-out; 3624 mask-composite: subtract; 3625 animation: l3 1s infinite linear; 3626 margin: auto; 3627 vertical-align: middle; 3628 margin-left: 10px; 3629 } 3630 3631 #qrcode img, #qrcode canvas { 3632 width: 50px; 3633 position: absolute; 3634 top: 12px; 3635 left: 16px; 3636 } 3637 3638 .t-preview { 3639 position: absolute; 3640 top: 17px; 3641 left: 75px; 3642 } 3643 .t-preview p { 3644 margin: 0; 3645 font-size: 12px !important; 3646 } 3647 .t-preview .h3 { 3648 font-size: 16px !important; 3649 margin-bottom: 5px; 3650 font-weight: 600; 3651 } 3652 .scanCard { 3653 width: 100%; 3654 border: 1px solid; 3655 height: 76px; 3656 background-color: #fff; 3657 } 3658 .scanCard > div > img { 3659 position: absolute; 3660 right: 0; 3661 width: 55px; 3662 } 3663 3664 @keyframes l3 { 3665 100% { 3666 transform: rotate(1turn); 3667 } 3668 } 3669 3670 @media (min-width: 991px) { 3671 .sectionPurchase { 3672 height: 100%; 3673 position: relative; 3674 max-width: 1344px; 3675 background-color: #fff; 3676 top: 50%; 3677 left: 50%; 3678 transform: translate(-50%, -50%); 3679 } 3680 .headerPurchase h3 { 3681 font-size: 20px; 3682 } 3683 .purchaseArea h4 { 3684 font-size: 16px; 3685 } 3686 3687 .menuPurchase ul li { 3688 font-size: 16px; 3689 } 3690 3691 .contentPurchase { 3692 margin-bottom: 30px; 3693 } 3694 .contentPurchase h5 { 3695 font-size: 16px; 3696 } 3697 3698 .item-cards .item-card p, 3699 .item-addons .item-addon p { 3700 font-size: 16px !important; 3701 } 3702 3703 .cards { 3704 float: right; 3705 width: 400px; 3706 } 3707 3708 .item-cards .item-card { 3709 width: calc(25% - 30px); 3710 max-width: calc(25% - 30px); 3711 flex: 0 0 calc(25% - 30px); 3712 } 3713 3714 #itemAddons .item-card { 3715 position: relative; 3716 width: calc(16% - 40px); 3717 max-width: calc(16% - 40px); 3718 flex: 0 0 calc(16% - 40px); 3719 } 3720 3721 .purchase-button-wrapper { 3722 padding: 10px 20px; 3723 } 3724 } 3725 3726 @media (max-width: 1200px) { 3727 .item-cards .item-card { 3728 width: calc(33% - 30px); 3729 max-width: calc(33% - 30px); 3730 flex: 0 0 calc(33% - 30px); 3731 } 3732 } 3733 3734 @media (max-width: 992px) { 3735 .purchasePopup { 3736 padding: 0; 3737 } 3738 .item-cards .item-card h5, 3739 .item-addons .item-addon h5 { 3740 max-height: 30px; 3741 } 3742 3743 .back-purchase-button, .back-spotify, .next-purchase-button { 3744 width: 100%; 3745 } 3746 .addon-itm-title { 3747 width: 300px; 3748 } 3749 .addon-itm-line-price { 3750 margin-right: 10px; 3751 } 3752 .t-preview { 3753 top: 10px; 3754 } 3755 3756 .card-qty a { 3757 height: 15px; 3758 } 3759 3760 .purchase-button-wrapper { 3761 padding: 15px; 3762 } 3763 } 3764 3765 @media (max-width: 576px) { 3766 .purchase-button .btn { 3767 width: 100%!important; 3768 } 3769 .purchase-button > .col-12 { 3770 padding-left: 0; 3771 padding-right: 0; 3772 } 3773 } 3774 </style> 3775 3776 3777 <div class="purchasePopup"> 3778 <div class="purchaseArea"> 3779 3780 <div class="sectionPurchase purchasePersonalize sectionPurchaseBoard"> 3781 <div class="wrapperPurchase"> 3782 <div class="purchase-content"> 3783 <div class="headerPurchase"> 3784 <h3 class="text-uppercase"> 3785 3786 customize your flower board 3787 3788 </h3> 3789 <a class="close-purchase-popup"> 3790 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="18" height="18" viewBox="0 0 18 18" fill="none"> 3791 <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"/> 3792 </svg> 3793 </a> 3794 3795 </div> 3796 <div class="contentPurchase"> 3797 <div class="row"> 3798 3799 <div class="col-12"> 3800 3801 3802 <style> 3803 3804 3805 .customize-papan .group-field-1 .input-field {float: left;width: 100%;height: 317px;background-color: #E5E5EA;} 3806 .customize-papan .input-field textarea {width: 100%;max-width: 421px;min-height: 150px;font-weight: 400;font-size: 16px;resize: none;background-color: #E5E5EA;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);text-align: center;color: #ffffff;border: none;} 3807 3808 .customize-papan .field-papan.group-field-2 .input-field.field-logo {height: 90px;margin: 0;border-radius: 0;position: relative;-ms-flex: 0 0 174px;flex: 0 0 174px;max-width: 174px;} 3809 .customize-papan .btn-upload-papan svg {width: 21px;height: 25px;display: block;align-self: center;margin: auto;margin-bottom: 12px;} 3810 .svgLogoPapan {position: absolute;width: 100%;top: 50%;left: 50%;transform: translate(-50%, -50%);text-align: center;} 3811 .svgLogoPapan p {color: #8E8E93; margin: 0;} 3812 .svgLogoPapan p span {font-size: 12px;color: #FF0E00;} 3813 .customize-papan .btn-upload-papan img {margin: auto;display: block;position: absolute;width: 80px;top: 50%;left: 50%;transform: translate(-50%, -50%);text-align: center;} 3814 #suggest-messages {position: absolute;bottom: 5px;left: 5px;} 3815 #suggest-messages a {border: 1px solid #979797;background: #fff;color: #979797;border-radius: 3px;padding: 5px 10px;font-size: 10px;font-weight: 600;display: inline-block;} 3816 .case-occasion .nice-select:after {border-bottom: 2px solid #333;border-right: 2px solid #333;right: 20px;top: 42%;width: 10px;height: 10px;} 3817 .customize-papan .input-field input {font-weight: 600;font-size: 16px;width: 100%;height: 90px;min-height: 44px !important;border: none;background: #E5E5EA;margin: 0;border-radius: 0;text-align: center;color: #ffffff;} 3818 .customize-papan .input-field .limit {position: absolute;right: 15px;top: 0;color: #757575;} 3819 3820 @media (min-width: 991px) { 3821 .customize-papan:before {content: "";position: absolute;border: 4px solid #ffffff;bottom: -50px;left: 210px;width: 100px;display: block;-ms-transform: rotate(60deg);-webkit-transform: rotate(60deg);transform: rotate(-65deg);} 3822 .customize-papan:after {content: "";position: absolute;border: 4px solid #ffffff;bottom: -52px;right: 240px;width: 100px;display: block;-ms-transform: rotate(-120deg);-webkit-transform: rotate(70deg);transform: rotate(70deg);} 3823 } 3824 </style> 3825 3826 <input type="hidden" data-properties="penerima" value="-"> 3827 <div class="customize-papan"> 3828 <div class="container"> 3829 <div class="field-papan group-field-1 form-group"> 3830 <div class="input-field">
3831 <textarea id="kartu-ucapan-papan" class="mb-0 has-limit" type="text" data-properties="ucapan" placeholder="Write the message you want to display. Or you can use several options from the message templates that we provide. 3832 (Ex: Selamat Menempuh Hidup Baru A & B)." maxlength="100"></textarea> 3833 <p class="limit">0/100</p> 3834 <div id="suggest-messages"> 3835 <a id="show_note_papan1" href="#"> 3836 <div class="suggest-message" id="note_btn_div1"> 3837 <span class="promo-code-link" id="note_btn_papan1">Contoh Kata WEDDING</span> 3838 </div> 3839 </a> 3840 <a id="show_note_papan2" href="#"> 3841 <div class="suggest-message" id="note_btn_div2"> 3842 <span class="promo-code-link" id="note_btn_papan2">Contoh Kata SELAMAT</span> 3843 </div> 3844 </a> 3845 <a id="show_note_papan3" href="#"> 3846 <div class="suggest-message" id="note_btn_div3"> 3847 <span class="promo-code-link" id="note_btn_papan3">Contoh Kata DUKA CITA</span> 3848 </div> 3849 </a> 3850 </div> 3851 </div> 3852 </div> 3853 <div class="hide"> 3854 <input type="hidden" value="" id="note_id_papan1" name="note_id_papan1" style="top: 0px;"> 3855 <input type="hidden" value="" id="note_btn_id_papan1" name="note_btn_id_papan1"> 3856 </div> 3857 <div class="hide"> 3858 <input type="hidden" value="" id="note_id_papan2" name="note_id_papan2" style="top: 0px;"> 3859 <input type="hidden" value="" id="note_btn_id_papan2" name="note_btn_id_papan2"> 3860 </div> 3861 <div class="hide"> 3862 <input type="hidden" value="" id="note_id_papan3" name="note_id_papan3" style="top: 0px;"> 3863 <input type="hidden" value="" id="note_btn_id_papan3" name="note_btn_id_papan3"> 3864 </div> 3865 <div class="field-papan group-field-2 form-group"> 3866 3867 <label for="logoPapan" onclick="" class="input-field field-logo"> 3868 3869 3870 3871 <div class="btn-upload-papan w-100"> 3872 <?xml version="1.0" encoding="UTF-8"?> 3873 <img src="" style="display:none"> 3874 <div class="svgLogoPapan"> 3875 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="22" height="26" viewBox="0 0 22 26" fill="none"> 3876 <path d="M6.5 20H15.5V11H21.5L11 0.5L0.5 11H6.5V20ZM0.5 23H21.5V26H0.5V23Z" fill="black"/> 3877 </svg> 3878 <p>Upload Logo <span>*optional</span></p> 3879 </div> 3880 </div> 3881 3882 </label> 3883 3884 <input 3885 type="hidden" 3886 data-properties="papan-logo" 3887 value="" 3888 > 3889 <input 3890 type="file" 3891 id="logoPapan" 3892 accept="image/*" 3893 style="position: absolute;width: 1px;height: 1px;padding: 0" 3894 > 3895 3896 <div class="input-field"> 3897 <input class="has-limit sender-name" type="text" placeholder="Nama Pengirim" data-properties="pengirim" maxlength="35"/> 3898 <p class="limit">0/35</p> 3899 </div> 3900 3901 </div> 3902 3903 </div> 3904 </div> 3905 </div> 3906 3907 </div> 3908 </div> 3909 3910 </div> 3911 <div class="purchase-button-wrapper"> 3912 <div class="purchase-button btn-card row m-0"> 3913 <div class="col-12 col-lg-2 text-left mb-2 p-0"> 3914 3915 </div> 3916 <div class="btn-next-card col-12 col-lg-10 text-right"> 3917 3918 3919 <button 3920 3921 3922 3923 class="btn next-purchase-button text-uppercase" 3924 3925 disabled 3926 3927 > 3928 <span>save your flower board</span> 3929 </button> 3930 </div> 3931 </div> 3932 3933 </div> 3934 </div> 3935 </div> 3936 3937 3938 3939 <div 3940 class="sectionPurchase sectionPurchaseBoard hide" 3941 data-section="address" 3942 > 3943 <div class="wrapperPurchase"> 3944 <div class="purchase-content"> 3945 <div class="headerPurchase"> 3946 <h3> 3947 Complete Your Order 3948 </h3> 3949 <a class="close-purchase-popup"> 3950 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="18" height="18" viewBox="0 0 18 18" fill="none"> 3951 <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"/> 3952 </svg> 3953 </a> 3954 3955 </div> 3956 <div class="contentPurchase"> 3957 <div class="row"> 3958 <div class="col-12 position-relative"> 3959 <div class="addressPurchase"> 3960 3961 <h4 class="text-uppercase">recipient delivery address</h4> 3962 <p>Share the delivery address to send your heartfelt blooms straight to their door.</p> 3963 3964 <div class="formAddressPurchase row"> 3965 <div class="col-12"> 3966 <form> 3967 <div class="form-group row mb-2 mb-lg-4"> 3968 <div class="col-6 position-relative"> 3969 <input id="first_name" type="text" class="form-control input__field" placeholder="" required> 3970 <label for="first_name" class="input__label">First Name<span>*</span></label> 3971 </div> 3972 <div class="col-6 position-relative"> 3973 <input id="last_name" type="text" class="form-control input__field" placeholder="" required> 3974 <label for="last_name" class="input__label">Last Name<span>*</span></label> 3975 </div> 3976 <input type="hidden" data-properties="nama-penerima"> 3977 </div> 3978 3979 <h4 class="text-uppercase">how you want to input your address</h4> 3980 <div class="form-group row mb-2 mb-lg-4 form-address-upload"> 3981 <div class="col-6 position-relative"> 3982 <label class="address-manualy"> 3983 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="18" height="17" viewBox="0 0 18 17" fill="none"> 3984 <path d="M3.37484 1.83329C2.79984 1.83329 2.33317 2.29996 2.33317 2.87496V5.16663C2.33317 5.38764 2.24537 5.5996 2.08909 5.75588C1.93281 5.91216 1.72085 5.99996 1.49984 5.99996C1.27882 5.99996 1.06686 5.9
39841216 0.910582 5.75588C0.754301 5.5996 0.666504 5.38764 0.666504 5.16663V2.87496C0.666504 2.15666 0.951845 1.46779 1.45976 0.959878C1.96767 0.451967 2.65654 0.166626 3.37484 0.166626H5.6665C5.88752 0.166626 6.09948 0.254423 6.25576 0.410704C6.41204 0.566984 6.49984 0.778946 6.49984 0.999959C6.49984 1.22097 6.41204 1.43293 6.25576 1.58921C6.09948 1.7455 5.88752 1.83329 5.6665 1.83329H3.37484ZM3.37484 15.1666C2.79984 15.1666 2.33317 14.7 2.33317 14.125V11.8333C2.33317 11.6123 2.24537 11.4003 2.08909 11.244C1.93281 11.0878 1.72085 11 1.49984 11C1.27882 11 1.06686 11.0878 0.910582 11.244C0.754301 11.4003 0.666504 11.6123 0.666504 11.8333V14.125C0.666504 14.4806 0.736557 14.8328 0.872663 15.1614C1.00877 15.49 1.20826 15.7885 1.45976 16.04C1.71125 16.2915 2.00981 16.491 2.3384 16.6271C2.66699 16.7632 3.01917 16.8333 3.37484 16.8333H5.6665C5.88752 16.8333 6.09948 16.7455 6.25576 16.5892C6.41204 16.4329 6.49984 16.221 6.49984 16C6.49984 15.7789 6.41204 15.567 6.25576 15.4107C6.09948 15.2544 5.88752 15.1666 5.6665 15.1666H3.37484ZM15.6665 2.87496C15.6665 2.29996 15.1998 1.83329 14.6248 1.83329H12.3332C12.1122 1.83329 11.9002 1.7455 11.7439 1.58921C11.5876 1.43293 11.4998 1.22097 11.4998 0.999959C11.4998 0.778946 11.5876 0.566984 11.7439 0.410704C11.9002 0.254423 12.1122 0.166626 12.3332 0.166626H14.6248C14.9805 0.166626 15.3327 0.236679 15.6613 0.372786C15.9899 0.508892 16.2884 0.708386 16.5399 0.959878C16.7914 1.21137 16.9909 1.50994 17.127 1.83853C17.2631 2.16712 17.3332 2.5193 17.3332 2.87496V5.16663C17.3332 5.38764 17.2454 5.5996 17.0891 5.75588C16.9328 5.91216 16.7208 5.99996 16.4998 5.99996C16.2788 5.99996 16.0669 5.91216 15.9106 5.75588C15.7543 5.5996 15.6665 5.38764 15.6665 5.16663V2.87496ZM14.6248 15.1666C15.1998 15.1666 15.6665 14.7 15.6665 14.125V11.8333C15.666
39845 11.6123 15.7543 11.4003 15.9106 11.244C16.0669 11.0878 16.2788 11 16.4998 11C16.7208 11 16.9328 11.0878 17.0891 11.244C17.2454 11.4003 17.3332 11.6123 17.3332 11.8333V14.125C17.3332 14.4806 17.2631 14.8328 17.127 15.1614C16.9909 15.49 16.7914 15.7885 16.5399 16.04C16.2884 16.2915 15.9899 16.491 15.6613 16.6271C15.3327 16.7632 14.9805 16.8333 14.6248 16.8333H12.3332C12.1122 16.8333 11.9002 16.7455 11.7439 16.5892C11.5876 16.4329 11.4998 16.221 11.4998 16C11.4998 15.7789 11.5876 15.567 11.7439 15.4107C11.9002 15.2544 12.1122 15.1666 12.3332 15.1666H14.6248ZM4.62484 5.16663C4.62484 4.94561 4.71263 4.73365 4.86892 4.57737C5.0252 4.42109 5.23716 4.33329 5.45817 4.33329H12.5415C12.7625 4.33329 12.9745 4.42109 13.1308 4.57737C13.287 4.73365 13.3748 4.94561 13.3748 5.16663V6.41663C13.3748 6.63764 13.287 6.8496 13.1308 7.00588C12.9745 7.16216 12.7625 7.24996 12.5415 7.24996C12.3205 7.24996 12.1085 7.16216 11.9522 7.00588C11.796 6.8496 11.7082 6.63764 11.7082 6.41663V5.99996H9.83317V11H10.8748C11.0959 11 11.3078 11.0878 11.4641 11.244C11.6204 11.4003 11.7082 11.6123 11.7082 11.8333C11.7082 12.0543 11.6204 12.2663 11.4641 12.4225C11.3078 12.5788 11.0959 12.6666 10.8748 12.6666H7.12484C6.90382 12.6666 6.69186 12.5788 6.53558 12.4225C6.3793 12.2663 6.2915 12.0543 6.2915 11.8333C6.2915 11.6123 6.3793 11.4003 6.53558 11.244C6.69186 11.0878 6.90382 11 7.12484 11H8.1665V5.99996H6.2915V6.41663C6.2915 6.63764 6.20371 6.8496 6.04743 7.00588C5.89115 7.16216 5.67918 7.24996 5.45817 7.24996C5.23716 7.24996 5.0252 7.16216 4.86892 7.00588C4.71263 6.8496 4.62484 6.63764 4.62484 6.41663V5.16663Z" fill="black"/> 3985 </svg> 3986 <span>Input Address Manually</span> 3987 </label> 3988 </div> 3989 <div class="col-6 position-relative"> 3990 <label for="address-upload" class="address-upload"> 3991 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="12" height="13" viewBox="0 0 12 13" fill="none"> 3992 <path d="M5.58317 9.48079V2.27246L3.6415 4.21413L3.0515 3.61579L5.99984 0.666626L8.949 3.61579L8.359 4.21496L6.4165 2.27246V9.48079H5.58317ZM1.51317 12.3333C1.12928 12.3333 0.809004 12.205 0.552337 11.9483C0.29567 11.6916 0.167059 11.3711 0.166504 10.9866V8.96746H0.999837V10.9866C0.999837 11.115 1.05317 11.2327 1.15984 11.34C1.2665 11.4472 1.384 11.5005 1.51234 11.5H10.4873C10.6151 11.5 10.7326 11.4466 10.8398 11.34C10.9471 11.2333 11.0004 11.1155 10.9998 10.9866V8.96746H11.8332V10.9866C11.8332 11.3705 11.7048 11.6908 11.4482 11.9475C11.1915 12.2041 10.8709 12.3327 10.4865 12.3333H1.51317Z" fill="black"/> 3993 </svg> 3994 <span>Upload Address Picture</span> 3995 </label> 3996 <input 3997 id="address-upload" 3998 type="file" 3999 accept="image/png, image/jpeg" 4000 style="position: absolute; padding: 0;width: 1px;height: 1px" 4001 > 4002 <input type="hidden" class="props-address-upload" data-properties="foto-alamat"> 4003 </div> 4004 </div> 4005 <img width="150" height="" src="" class="photo-address" style="display: none;"> 4006 4007 <div class="form-group row position-relative mb-2 mb-lg-4 form-address"> 4008 <div class="col-12"> 4009 <textarea 4010 id="delivery_address" 4011 data-properties="alamat-penerima" 4012 class="form-control input__field col-12" 4013 placeholder="" 4014 required 4015 ></textarea> 4016 <label for="delivery_address" class="input__label">Delivery Address<span>*</span></label> 4017 4018 </div> 4019 </div> 4020 <div class="form-group row mb-2 mb-lg-4 form-address"> 4021 <div class="col-6 position-relative"> 4022 <input 4023 id="recipient_number" 4024 type="text" 4025 data-properties="telepon-penerima" 4026 class="form-control input__field" 4027 placeholder="" 4028 required 4029 > 4030 <label for="recipient_number" class="input__label">Recipient number<span>*</span></label> 4031 </div> 4032 <div class="col-6 position-relative"> 4033 <input 4034 id="company" 4035 type="text" 4036 data-properties="company" 4037 class="form-control input__field" 4038 placeholder="" 4039 > 4040 <label for="company" class="input__label">Company (Optional)</label> 4041 </div> 4042 </div> 4043 <div class="form-group row mb-2 mb-lg-4 form-address"> 4044 <div class="col-6 position-relative"> 4045 <input 4046 id="province" 4047 type="text" 4048 class="form-control input__field" 4049 placeholder="" 4050 value="Jakarta" 4051 data-properties="province" 4052 > 4053 <label for="province" class="input__label">Province</label> 4054 </div> 4055 <div class="col-6 position-relative"> 4056 <select id="zip" class="form-control select-search" required></select> 4057 </div> 4058 </div> 4059 </form> 4060 </div> 4061 </div> 4062 </div> 4063 <div class="addonsPurchase"> 4064 <h4 class="text-uppercase">add-ons</h4> 4065 <div class="addons"> 4066 <p>No Add-Ons</p> 4067 <!-- 4068 <button class="add-addon"> 4069 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="12" height="12" viewBox="0 0 12 12" fill="none"> 4070 <path d="M5.5 6.5H0V5.5H5.5V0H6.5V5.5H12V6.5H6.5V12H5.5V6.5Z" fill="black"/> 4071 </svg>
4072 <span>Enhance my moment with Add-ons</span> 4073 </button> 4074 --> 4075 </div> 4076 </div> 4077 </div> 4078 4079 </div> 4080 </div> 4081 4082
4082<script> 4083 document.addEventListener('DOMContentLoaded', function() { 4084 // Detect iOS 4085 var isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; 4086 4087 if (isIOS) { 4088 document.querySelector('.formAddressPurchase').classList.add('ios'); 4089 4090 // iOS specific fixes 4091 var inputs = document.querySelectorAll('.formAddressPurchase .input__field'); 4092 4093 inputs.forEach(function(input) { 4094 // Force enable touch events on iOS 4095 input.style.webkitUserSelect = 'text'; 4096 input.style.webkitTouchCallout = 'default'; 4097 input.style.pointerEvents = 'auto'; 4098 input.style.touchAction = 'manipulation'; 4099 4100 // Add explicit touch event listeners for iOS 4101 input.addEventListener('touchstart', function(e) { 4102 e.stopPropagation(); 4103 this.focus(); 4104 }, { passive: false }); 4105 4106 input.addEventListener('touchend', function(e) { 4107 e.preventDefault(); 4108 e.stopPropagation(); 4109 this.focus(); 4110 this.click(); 4111 }, { passive: false }); 4112 4113 // Force focus on tap for iOS 4114 input.addEventListener('click', function(e) { 4115 e.stopPropagation(); 4116 if (document.activeElement !== this) { 4117 this.focus(); 4118 } 4119 }); 4120 }); 4121 4122 // Fix for label overlapping on iOS 4123 var labels = document.querySelectorAll('.formAddressPurchase .input__label'); 4124 labels.forEach(function(label) { 4125 label.style.pointerEvents = 'none'; 4126 label.addEventListener('touchstart', function(e) { 4127 e.preventDefault(); 4128 var input = this.parentNode.querySelector('.input__field'); 4129 if (input) { 4130 input.focus(); 4131 } 4132 }); 4133 }); 4134 } 4135 4136 // Handle input state for all browsers, especially iOS 4137 var inputs = document.querySelectorAll('.input__field'); 4138 4139 inputs.forEach(function(input) { 4140 // Handle input events 4141 input.addEventListener('input', function() { 4142 if (this.value.trim() !== '') { 4143 this.classList.add('has-value'); 4144 } else { 4145 this.classList.remove('has-value'); 4146 } 4147 }); 4148 4149 // Handle focus 4150 input.addEventListener('focus', function() { 4151 this.classList.add('focused'); 4152 // iOS specific: ensure input is visible 4153 if (isIOS) { 4154 setTimeout(function() { 4155 input.scrollIntoView({ behavior: 'smooth', block: 'center' }); 4156 }, 300); 4157 } 4158 }); 4159 4160 // Handle blur 4161 input.addEventListener('blur', function() { 4162 this.classList.remove('focused'); 4163 if (this.value.trim() !== '') { 4164 this.classList.add('has-value'); 4165 } else { 4166 this.classList.remove('has-value'); 4167 } 4168 }); 4169 4170 // Initial check for pre-filled values 4171 if (input.value.trim() !== '') { 4172 input.classList.add('has-value'); 4173 } 4174 }); 4175 4176 // Additional iOS fixes 4177 if (isIOS) { 4178 // Prevent iOS Safari from adding default styling 4179 document.addEventListener('touchstart', function() {}, { passive: true }); 4180 4181 // Fix viewport issues on iOS 4182 var viewport = document.querySelector('meta[name=viewport]'); 4183 if (viewport) { 4184 viewport.setAttribute('content', 4185 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' 4186 ); 4187 } 4188 } 4189 }); 4190 </script>
4190 4191 </div> 4192 <div class="purchase-button-wrapper"> 4193 <div class="purchase-button btn-address row m-0"> 4194 <div class="col-12 col-lg-2 text-left mb-2 p-0"> 4195 4196 <button class="back-purchase-button back-address text-uppercase"> 4197 <svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png"> 4198 <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"/> 4199 </svg> 4200 <span>Back</span> 4201 </button> 4202 4203 </div> 4204 <div class="btn-next-card col-12 col-lg-10 text-right"> 4205 4206 <!-- 4207 <button class="back-purchase-button back-address text-uppercase mr-lg-2 mb-2 mb-lg-0"> 4208 <svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png"> 4209 <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"/> 4210 </svg> 4211 <span>Back</span> 4212 </button> 4213 --> 4214 4215 4216 <button 4217 4218 id="addtocart-card" 4219 4220 class="btn next-address text-uppercase" 4221 4222 > 4223 <span>add to cart</span> 4224 </button> 4225 </div> 4226 </div> 4227 4228 </div> 4229 </div> 4230 </div> 4231 4232 </div> 4233 </div> 4234 <div id="backgroundPopup"></div> 4235 4236 4237 4238 <input 4239 data-index="1" 4240 type="hidden" 4241 id="properties-delivery-date" 4242 name="properties[Delivery Date]" 4243 value="-" 4244 > 4245 <input 4246 data-index="2" 4247 type="hidden" 4248 id="properties-delivery-time" 4249 name="properties[Delivery Time]" 4250 value="-" 4251 > 4252 <input 4253 data-index="4" 4254 type="hidden" 4255 id="properties-nama-penerima" 4256 name="properties[Nama Penerima]" 4257 value="-" 4258 > 4259 <input 4260 data-index="5" 4261 type="hidden" 4262 id="properties-alamat-penerima" 4263 name="properties[Alamat Penerima]" 4264 value="-" 4265 > 4266 <input 4267 data-index="6" 4268 type="hidden" 4269 id="properties-kodepos" 4270 name="properties[Kodepos]" 4271 value="-" 4272 > 4273 <input data-index="7" type="hidden" id="properties-telepon-penerima" name="properties[Telepon Penerima]"> 4274 4275 4276 <input 4277 data-index="8" 4278 type="hidden" 4279 id="properties-kartu-nama-penerima" 4280 name="properties[Kartu Nama Penerima]" 4281 value="-" 4282 > 4283 4284 <textarea 4285 data-index="9" 4286 type="hidden" 4287 id="properties-kartu-pesan" 4288 name="properties[Kartu Pesan]" 4289 style="display: none" 4290 >-</textarea> 4291 4292 4293 4294 <input 4295 data-index="10" 4296 type="hidden" 4297 id="properties-kartu-nama-pengirim" 4298 name="properties[Kartu Nama Pengirim]" 4299 value="-" 4300 > 4301 4302 <!-- Additional Shipping --> 4303 <input type="hidden" id="properties-kota-pengiriman-province" name="properties[Province]"> 4304 <input 4305 type="hidden" 4306 id="properties-kota-pengiriman-country" 4307 name="properties[Country]" 4308 value="Indonesia" 4309 > 4310 <input type="hidden" id="properties-shipping" name="properties[Shipping]"> 4311 4312 <input type="hidden" id="properties-time" name="properties[Time]"> 4313 <input type="hidden" id="properties-card" name="properties[Card]"> 4314 <input type="hidden" id="properties-addons" name="properties[Addons]"> 4315 4316 <input 4317 type="hidden" 4318 id="properties-company" 4319 name="properties[Company]" 4320 value="" 4321 > 4322
4322<script> 4323 4324 $(document).ready(function(){ 4325 4326 var text_max_papan1=150; 4327 var msg_text_papan1=""; 4328 $('#kartu-ucapan-ucapan').keyup(function(){ 4329 var text_length_papan1=$('#kartu-ucapan-ucapan').val().length; 4330 var msg_text_papan1=$('#kartu-ucapan-ucapan').val(); 4331 }); 4332 4333 var notes_papan1 = [ 4334 4335 [0,"Happy Wedding (nama & nama)."],[1,"Congratulations lovebirds (nama & nama)."],[2,"Selamat berbahagia (nama & nama)."],[3,"Selamat menempuh hidup baru (nama & nama)."] 4336 4337 ]; 4338 $('#show_note_papan1').click(function(event){ 4339 event.preventDefault(); 4340 var idx_papan1=parseInt($('#note_id_papan1').val()); 4341 if(isNaN(idx_papan1)){ 4342 idx_papan1=0; 4343 }else{ 4344 idx_papan1++; 4345 idx_papan1=idx_papan1%notes_papan1.length; 4346 } 4347 var note_papan1=notes_papan1[idx_papan1][1]; 4348 $('#note_id_papan1').val(idx_papan1); 4349 $('#kartu-ucapan-papan, #properties-kartu-pesan, #properties-kartu-ucapan').val(note_papan1); 4350 $('#msgDelivery').val(note_papan1); 4351 4352 var text_length_papan1=$('#kartu-ucapan-papan').val().length; 4353 var idx_2_papan1=parseInt($('#note_btn_id_papan1').val()); 4354 if(isNaN(idx_2_papan1)){ 4355 idx_2_papan1=0; 4356 }else{ 4357 idx_2_papan1++; 4358 //idx_2_papan1=idx_2_papan1%note_btn_text_papan1.length; 4359 } 4360 $('#note_btn_id_papan1').val(idx_2_papan1); 4361 //var note_btn=note_btn_text[idx_2][1]; 4362 //$('#note_btn').text(note_btn); 4363 }); 4364 4365 var text_max_papan2=150; 4366 var msg_text_papan2=""; 4367 $('#kartu-ucapan-ucapan').keyup(function(){ 4368 var text_length_papan2=$('#kartu-ucapan-ucapan').val().length; 4369 var msg_text_papan2=$('#kartu-ucapan-ucapan').val(); 4370 }); 4371 4372 var notes_papan2 = [ 4373 4374 [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)."] 4375 4376 ]; 4377 $('#show_note_papan2').click(function(event){ 4378 event.preventDefault(); 4379 var idx_papan2=parseInt($('#note_id_papan2').val()); 4380 if(isNaN(idx_papan2)){ 4381 idx_papan2=0; 4382 }else{ 4383 idx_papan2++; 4384 idx_papan2=idx_papan2%notes_papan2.length; 4385 } 4386 var note_papan2=notes_papan2[idx_papan2][1]; 4387 $('#note_id_papan2').val(idx_papan2); 4388 $('#kartu-ucapan-papan, #properties-kartu-pesan, #properties-kartu-ucapan').val(note_papan2); 4389 $('#msgDelivery').val(note_papan2); 4390 var text_length_papan2=$('#kartu-ucapan-papan').val().length; 4391 var idx_2_papan2=parseInt($('#note_btn_id_papan2').val()); 4392 if(isNaN(idx_2_papan2)){ 4393 idx_2_papan2=0; 4394 }else{ 4395 idx_2_papan2++; 4396 //idx_2_papan1=idx_2_papan1%note_btn_text_papan1.length; 4397 } 4398 $('#note_btn_id_papan2').val(idx_2_papan2); 4399 //var note_btn=note_btn_text[idx_2][1]; 4400 //$('#note_btn').text(note_btn); 4401 }); 4402 4403 var text_max_papan3=150; 4404 var msg_text_papan3=""; 4405 $('#kartu-ucapan-ucapan').keyup(function(){ 4406 var text_length_papan3=$('#kartu-ucapan-ucapan').val().length; 4407 var msg_text_papan3=$('#kartu-ucapan-ucapan').val(); 4408 }); 4409 4410 var notes_papan3 = [ 4411 4412 [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)."] 4413 4414 ]; 4415 $('#show_note_papan3').click(function(event){ 4416 event.preventDefault(); 4417 var idx_papan3=parseInt($('#note_id_papan3').val()); 4418 if(isNaN(idx_papan3)){ 4419 idx_papan3=0; 4420 }else{ 4421 idx_papan3++; 4422 idx_papan3=idx_papan3%notes_papan3.length; 4423 } 4424 var note_papan3=notes_papan3[idx_papan3][1]; 4425 $('#note_id_papan3').val(idx_papan3); 4426 $('#kartu-ucapan-papan, #properties-kartu-pesan, #properties-kartu-ucapan').val(note_papan3); 4427 $('#msgDelivery').val(note_papan3);
4428 var text_length_papan3=$('#kartu-ucapan-papan').val().length; 4429 var idx_2_papan3=parseInt($('#note_btn_id_papan3').val()); 4430 if(isNaN(idx_2_papan3)){ 4431 idx_2_papan3=0; 4432 }else{ 4433 idx_2_papan3++; 4434 //idx_2_papan1=idx_2_papan1%note_btn_text_papan1.length; 4435 } 4436 $('#note_btn_id_papan3').val(idx_2_papan3); 4437 //var note_btn=note_btn_text[idx_2][1]; 4438 //$('#note_btn').text(note_btn); 4439 }); 4440 4441 var text_max_papan4=150; 4442 var msg_text_papan4=""; 4443 $('#kartu-ucapan-ucapan').keyup(function(){ 4444 var text_length_papan4=$('#kartu-ucapan-ucapan').val().length; 4445 var msg_text_papan4=$('#kartu-ucapan-ucapan').val(); 4446 }); 4447 4448 $('#show_note_papan4').click(function(event){ 4449 var notes_papan4 = [ 4450 [0,"Hereâs to youâsteadier, stronger and better every day."], 4451 [1,"Warmest wishes for a speedy recovery!"], 4452 [2,"Dengan ucapan terhangat, semoga lekas membaik dan semakin pulih setiap harinya ya."], 4453 [3,"Semoga lekas sembuh untuk kembali beraktivitas dan berkarya."] 4454 ]; 4455 event.preventDefault(); 4456 var idx_papan4=parseInt($('#note_id_papan4').val()); 4457 console.log(idx_papan4, 'idx_papan4') 4458 if(isNaN(idx_papan4)){ 4459 idx_papan4=0; 4460 }else{ 4461 idx_papan4++; 4462 idx_papan4=idx_papan4%notes_papan4.length; 4463 } 4464 var note_papan4=notes_papan4[idx_papan4][1]; 4465 $('#note_id_papan4').val(idx_papan4); 4466 $('#kartu-ucapan-papan, #properties-kartu-ucapan, #properties-kartu-pesan').val(note_papan4); 4467 console.log(note_papan4, 'note_papan4') 4468 var text_length_papan4=$('#kartu-ucapan-papan').val().length; 4469 var idx_2_papan4=parseInt($('#note_btn_id_papan4').val()); 4470 if(isNaN(idx_2_papan4)){ 4471 idx_2_papan4=0; 4472 }else{ 4473 idx_2_papan4++; 4474 //idx_2_papan1=idx_2_papan1%note_btn_text_papan1.length; 4475 } 4476 $('#note_btn_id_papan4').val(idx_2_papan4); 4477 }); 4478 4479 /* 4480 $("#jenisPapan").change(function(){ 4481 $( "select option:selected").each(function(){ 4482 if($(this).attr("value")=="Happy Wedding"){ 4483 $("#suggest-messages a").hide(); 4484 $("#show_note_papan1").show(); 4485 $("#kartu-ucapan-papan").val(""); 4486 } 4487 if($(this).attr("value")=="Congratulations"){ 4488 $("#suggest-messages a").hide(); 4489 $("#show_note_papan2").show(); 4490 $("#kartu-ucapan-papan").val(""); 4491 } 4492 if($(this).attr("value")=="Duka Cita"){ 4493 $("#suggest-messages a").hide(); 4494 $("#show_note_papan3").show(); 4495 $("#kartu-ucapan-papan").val(""); 4496 } 4497 }); 4498 }).change(); 4499 */ 4500 4501 4502 4503 4504 4505 $(".variant-metafield").each(function(){ 4506 const t = $(this) 4507 const id = t.attr("id") 4508 const target = $(`[data-select=${id}]`) 4509 t.on('select2:selecting', function(e) { 4510 const data = e.params.args.data 4511 target.val(data.text) 4512 }); 4513 }) 4514 }) 4515 </script>
4515 4516 4517 <div id="popupCart"> 4518 <div class="container"> 4519 <div class="wrapperPopupCart"> 4520 <div class="headerPopupCart"> 4521 <div class="d-flex pl-5 pr-5 p-4"> 4522 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="16" height="12" viewBox="0 0 16 12" fill="none"> 4523 <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"/> 4524 </svg> 4525 <span>item added to your cart</span> 4526 </div> 4527 <a class="close-purchase-popup"> 4528 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="18" height="18" viewBox="0 0 18 18" fill="none"> 4529 <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"/> 4530 </svg> 4531 </a> 4532 4533 </div> 4534 <div class="contentPopupCart"> 4535 <div class="pl-5 pr-5 p-4"> 4536 <div class="itemContent row m-0 justify-content-between"> 4537 <div class="col-2 align-self-center"> 4538 4539 <img 4540 class="d-block" 4541 width="80" 4542 src="//outerbloom.com/cdn/shop/files/Blossom-Shine-WM_80x.jpg?v=1695788426" 4543 > 4544 </div> 4545 <div class="col-10 align-self-center"> 4546 <div class="row pl-3"> 4547 <div class="col-12 col-lg-7"> 4548 <span class="titleCartPopup text-uppercase">KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya</span> 4549 </div> 4550 <div class="d-flex justify-content-end col-12 col-lg-5"> 4551 <span class="deleteCartPopup hide">Delete</span> 4552 <span class="lineCartPrice align-self-center">Rp 5.000</span> 4553 </div> 4554 </div> 4555 </div> 4556 </div> 4557 <div class="itemProperties"> 4558 4559 <div class="propDeliver"> 4560 <h4>delivery option detail</h4> 4561 <p> 4562 <span>delivery city</span> 4563 <span class="propDeliveryCity">jakarta</span> 4564 </p> 4565 <p> 4566 <span>delivery date</span> 4567 <span class="propDeliveryDate">24/03/2025</span> 4568 </p> 4569 <p> 4570 <span>delivery time</span> 4571 <span class="propDeliveryTime">Afternoon | 13:00 - 18:00</span> 4572 </p> 4573 </div> 4574 <div class="propAddress"> 4575 <h4>delivery option detail</h4> 4576 <p> 4577 <span>RECIPIENT NAME</span> 4578 <span class="propDeliveryName">jane doe</span> 4579 </p> 4580 <p> 4581 <span>delivery address</span> 4582 <span class="propDeliveryAddress" 4583 >Jl. Gatot Subroto No. 25, RT.2/RW.4, Kuningan Barat, Kecamatan Mampang Prapatan, Kota Jakarta 4584 Selatan, Daerah Khusus Ibukota Jakarta 12710, Indonesia</span 4585 > 4586 </p> 4587 <p> 4588 <span>recipient phone number</span> 4589 <span class="propDeliveryPhone">(+62) 812-3456-7890</span> 4590 </p> 4591 <p> 4592 <span>PROVINCE</span> 4593 <span class="propDeliveryProv">Jakarta</span> 4594 </p> 4595 <p> 4596 <span>postal code</span> 4597 <span class="propDeliveryZip">12710</span> 4598 </p> 4599 4600 4601 </div> 4602 4603 </div> 4604 <div class="itemAddonCart"> 4605 <div class="toggleAddonCart d-flex justify-content-between"> 4606 <h4>add-ons (0)</h4> 4607 <svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="5" height="9" viewBox="0 0 5 9" fill="none"> 4608 <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"/> 4609 </svg> 4610 </div> 4611 <div class="wrapperItemAddonCart"></div> 4612 </div> 4613 4614 </div> 4615 </div>
4616 <div class="footerPopupCart"> 4617 <div class="row m-0 pl-5 pr-5 p-4"> 4618 <a class="btn btnViewCart w-100 text-uppercase text-center" href="/cart">View Cart</a> 4619 <a class="btn btnViewCheckout w-100 text-uppercase text-center" href="/checkout"><span>Checkout</span></a> 4620 <a class="btnContinueShopping w-100 text-center" href="/">Continue shopping</a> 4621 </div> 4622 </div> 4623 </div> 4624 </div> 4625 </div> 4626 4627 4628
4628<script> 4629 const shareButton = document.getElementById('shareButton'); 4630 4631 shareButton.addEventListener('click', () => { 4632 if (navigator.share) { 4633 navigator.share({ 4634 title: "KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya", 4635 url: "/products/blossom-shine", 4636 text: 'Check out this page!' 4637 }) 4638 .then(() => console.log('Successful share')) 4639 .catch((error) => console.log('Error sharing', error)); 4640 } else { 4641 alert('Web Share API is not supported in this browser.'); 4642 } 4643 }); 4644 4645 // Inventory validation function 4646 function checkInventoryStatus() { 4647 const productSelect = document.getElementById('productSelect'); 4648 const purchaseButton = document.querySelector('#personalizeBtn button'); 4649 4650 if (!productSelect || !purchaseButton) return; 4651 4652 const selectedVariantId = productSelect.value; 4653 4654 // Get variant data from Shopify 4655 fetch(`/products/blossom-shine.js`) 4656 .then(response => response.json()) 4657 .then(product => { 4658 const selectedVariant = product.variants.find(variant => variant.id == selectedVariantId); 4659 4660 if (selectedVariant) { 4661 const isOutOfStock = selectedVariant.inventory_quantity <= 0 && 4662 selectedVariant.inventory_management === 'shopify' && 4663 selectedVariant.inventory_policy !== 'continue'; 4664 4665 if (isOutOfStock) { 4666 purchaseButton.disabled = true; 4667 purchaseButton.textContent = 'Out of Stock'; 4668 purchaseButton.setAttribute('data-out-of-stock', 'true'); 4669 purchaseButton.style.backgroundColor = '#cccccc'; 4670 purchaseButton.style.cursor = 'not-allowed'; 4671 } else { 4672 // Check if button was disabled due to other conditions 4673 4674 4675 4676 4677 4678 4679 4680 4681 const isOtherDisabled = false || true || false; 4682 4683 if (!isOtherDisabled) { 4684 purchaseButton.disabled = false; 4685 purchaseButton.textContent = 'customize your flower board'; 4686 purchaseButton.removeAttribute('data-out-of-stock'); 4687 purchaseButton.style.backgroundColor = ''; 4688 purchaseButton.style.cursor = ''; 4689 } 4690 } 4691 } 4692 }) 4693 .catch(error => { 4694 console.error('Error checking inventory:', error); 4695 }); 4696 } 4697 4698 // Check inventory on page load 4699 document.addEventListener('DOMContentLoaded', function() { 4700 checkInventoryStatus(); 4701 4702 // Listen for variant changes 4703 const productSelect = document.getElementById('productSelect'); 4704 if (productSelect) { 4705 productSelect.addEventListener('change', checkInventoryStatus); 4706 } 4707 }); 4708 4709 // Prevent form submission if out of stock 4710 document.addEventListener('click', function(e) { 4711 if (e.target.matches('button[data-out-of-stock="true"]')) { 4712 e.preventDefault(); 4713 e.stopPropagation(); 4714 alert('This product is currently out of stock and cannot be purchased.'); 4715 return false; 4716 } 4717 }); 4718 </script>
4718 4719 4720 4721 4722 </div> 4723 4724 </div> 4725 </div> 4726 </div> 4727 </div> 4728 <div id="product-bottom"> 4729 4730 <div class="product-description rte bg-card col-12 py-3 px-0 m-0" itemprop="description"> 4731 <div class="container"> 4732 4733 4734 4735 4736 4737 <div class="short-desc-mobile d-block d-lg-none mb-3"> 4738 <div class="short-desc"> 4739 <ul> 4740 <li><strong>KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari.</strong></li> 4741 </div> 4742 <label class="more-mobile">Show More â</label> 4743 </div> 4744 4745 <style> 4746 .animated-title { 4747 text-align: center; 4748 font-weight: bold; 4749 color: #079c02; 4750 font-size: 28px; 4751 position: relative; 4752 animation: glow 2s infinite alternate, moveUpDown 3s infinite; 4753 } 4754 4755 /* Efek glow / bercahaya hijau */ 4756 @keyframes glow { 4757 0% { text-shadow: 0 0 5px #079c02; color: #079c02; } 4758 50% { text-shadow: 0 0 20px #00ff55; color: #12d12b; } 4759 100% { text-shadow: 0 0 10px #1bff00; color: #079c02; } 4760 } 4761 4762 /* Efek gerakan naik turun */ 4763 @keyframes moveUpDown { 4764 0% { transform: translateY(0px); } 4765 50% { transform: translateY(-5px); } 4766 100% { transform: translateY(0px); } 4767 } 4768 </style> 4769 4770
4770<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/shopify-cartjs/1.1.0/cart.min.js"></script>
4770 4771
4771<script> 4772 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}); 4773 4774 const productType = $("[data-product-type]").data("product-type") 4775 const productDate = Date.parse(new Date()) 4776 4777 const shop = 'outerbloom1.myshopify.com' 4778 const host = 'https://app.asmaraku.com' 4779 // const host = 'http://localhost:5001' 4780 4781 const gsheet = "https://script.google.com/macros/s/AKfycbyqa6mPD6lVjU6hiHr12J8URZ2aJBGyxBsGQ0QtEIDari-rBk_9vSOITjSSmUXL1NwxEg/exec" 4782 4783 const qrID = "041025" + randomString(4, 'aAbCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ') 4784 4785 $("#properties-time").val(new Date().getTime()) 4786 4787 const isIOS = /iPhone|iPad|iPod/i.test(navigator.userAgent); 4788 4789 if(!isIOS) { 4790 $("#full-date").attr("type", "button") 4791 } 4792 4793 let dateTime = new Date(); 4794 let today = dateTime.getDate(); 4795 let day = dateTime.getDay(); 4796 let hour = dateTime.getHours(); 4797 let min = dateTime.getMinutes(); 4798 let timeOfDay = hour + (min / 100); 4799 4800 async function getFetch(url) { 4801 const response = await fetch(url); 4802 let status = false 4803 let result 4804 if(response.ok) { 4805 status = true 4806 result = await response.json(); 4807 } 4808 return { 4809 status, 4810 data: result 4811 } 4812 } 4813 4814 4815 4816 function setCookie(cname, cvalue, exMins) { 4817 var d = new Date(); 4818 d.setTime(d.getTime() + (exMins*60*1000)); 4819 var expires = "expires="+d.toUTCString(); 4820 document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 4821 } 4822 4823 function getCookie(cname) { 4824 let name = cname + "="; 4825 let decodedCookie = decodeURIComponent(document.cookie); 4826 let ca = decodedCookie.split(';'); 4827 for(let i = 0; i <ca.length; i++) { 4828 let c = ca[i]; 4829 while (c.charAt(0) == ' ') { 4830 c = c.substring(1); 4831 } 4832 if (c.indexOf(name) == 0) { 4833 return c.substring(name.length, c.length); 4834 } 4835 } 4836 return ""; 4837 } 4838 4839 async function renderDate() { 4840 let dataDate = await getFetch(`${host}/api/shipping/date?domain=${shop}&productId=8144957800663&v=${Date.now()}`); 4841 console.log(dataDate, 'renderDate') 4842 const data = dataDate?.data 4843 const date = data.date 4844 const time = data.time 4845 4846 console.log(date, 'DATE') 4847 4848 const weekday = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]; 4849 const monthly = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]; 4850 const htmlDate = [] 4851 for(let i = 0;i < date.length;i++) { 4852 const full = date[i].date 4853 const d = new Date(date[i].date); 4854 const day = weekday[d.getDay()]; 4855 const dt = d.getDate(); 4856 const mt = monthly[d.getMonth()]; 4857 const yr = d.getFullYear(); 4858 const isDate = Boolean(date[i].isEnabled) 4859 const cutoffpagi = date[i].cutoff?.pagi 4860 const cutoffsiang = date[i].cutoff?.siang 4861 const cutoffMalam = date[i].cutoff?.Malam 4862 var html = ` 4863 <button data-id="8144957800663" class="date-single calendarbutton btn steps-btn col col-3 btn-date-time" data-day="${day}" data-fulldate="${full}" data-date="${dt < 10 ? '0' + dt : dt}" data-month="${mt}" data-year="${yr}" data-offpagi="${cutoffpagi}" data-offsiang="${cutoffsiang}" data-offMalam="${cutoffMalam}" ${isDate === true ? '' : 'disabled'}> 4864 ${dt === today ? 4865 `Today<span>${dt < 10 ? '0' + dt : dt}</span>` : 4866 `${day}<span>${dt < 10 ? '0' + dt : dt}</span>` 4867 } 4868 </button> 4869 ` 4870 htmlDate.push(html) 4871 } 4872 const htmlTime = [] 4873 for(var i = 0;i < time.length;i++) { 4874 const timeText = time[i].text 4875 const timeTime = time[i].time 4876 const timeEnabled = time[i].isEnabled 4877 var html = ` 4878 <button class="time-single calendarbutton2 btn steps-btn" data-time="${timeText}" ${timeEnabled ? '' : 'disabled'}>${timeText}<br/>${timeTime}</button> 4879 ` 4880 htmlTime.push(html) 4881 } 4882 const deliveryDate = document.getElementById("deliveryDate"); 4883 if(deliveryDate) { 4884 deliveryDate.insertAdjacentHTML("afterbegin", htmlDate.join('')) 4885 $("#deliveryTime").html(htmlTime) 4886 if(productType !== '') { 4887 console.log("clarity event " + productType + ' calendaring') 4888 window.clarity("event", `${productType} calendaringSchedule`) 4889 // window.clarity("set", productType, `calendaringSchedule - ${productDate}`) 4890 } 4891 } 4892 } 4893 4894 async function getProvince(city) { 4895 let { data: { province } } = await getFetch(`${host}/api/shipping/address/province?city=${city}`); 4896 console.log(province, 'province') 4897 $("#province").val(province) 4898 } 4899 4900 async function renderAddress() { 4901 let current 4902 if(getCookie("location_delivery")){ 4903 current = getCookie("location_delivery").charAt(0).toUpperCase() + getCookie("location_delivery").slice(1) 4904 } 4905 let address = await getFetch(`${host}/api/shipping/address?domain=${shop}&productId=8144957800663`); 4906 console.log(address) 4907 const data = address?.data?.city 4908 const htmlAddress = [] 4909 const grouping = []
4910 for(let i = 0;i < data?.length;i++) { 4911 if(data[i]){ 4912 if(data[i]?.group) { 4913 grouping.push(data[i].group) 4914 } 4915 const price = rupiah.format(data[i]?.rate) 4916 let promo = '(Promo Free Delivery)' 4917 if(data[i]?.name === 'Jakarta - PickUp ASHTA'){ 4918 promo = '(at SCBD, Ashta)' 4919 } else if(data[i]?.name === 'Jakarta - PickUp ITC'){ 4920 promo = '(at Kuningan, ITC Kuningan)' 4921 } else if(data[i]?.name === 'BSD - PickUp'){ 4922 promo = '(at Goldfinch Gading Serpong)' 4923 } else if(data[i]?.name === 'Kota Lainnya'){ 4924 promo = '' 4925 } 4926 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>`) 4927 } 4928 } 4929 4930 const deliveryCity = document.getElementById("cities"); 4931 if(deliveryCity) { 4932 deliveryCity.insertAdjacentHTML("beforeend", htmlAddress.join('')) 4933 if(!isIOS) { 4934 $(deliveryCity).select2(); 4935 } 4936 } 4937 } 4938 4939 async function renderZip(v, v2, v3) { 4940 const deliveryZip = document.getElementById("zip"); 4941 if(v === '') { 4942 return 4943 } 4944 let dataZip = await getFetch(`${host}/api/shipping/address/zip?city=${v}&city2=${v2}&city3=${v3}`); 4945 let zip = dataZip?.data?.zip 4946 console.log(zip) 4947 let htmlZip = [] 4948 for(let i = 0; i < zip?.length;i++) { 4949 htmlZip.push(`<option value="${zip[i]?.postalCode} - ${zip[i]?.subdistrict}">${zip[i]?.postalCode} - ${zip[i]?.subdistrict} - ${zip[i]?.city}</option>`) 4950 } 4951 deliveryZip.insertAdjacentHTML("beforeend", htmlZip.join('')) 4952 } 4953 4954 renderDate() 4955 renderAddress() 4956 4957 let rupiah = new Intl.NumberFormat('id-ID', { 4958 style: 'currency', 4959 currency: 'IDR', 4960 maximumFractionDigits: 0, 4961 minimumFractionDigits: 0 4962 }); 4963 4964 async function insertCard(data) { 4965 const response = await fetch(`${host}/api/card/new`, { 4966 method: "POST", 4967 headers: { 4968 'Content-Type': 'application/json', 4969 }, 4970 body: data 4971 }) 4972 const result = await response.json() 4973 let rowIndex = result?.data?.tableRange.split("Outerbloom!A1:J")[1] 4974 $("#greetingCard").attr("data-index", rowIndex) 4975 return result 4976 } 4977 4978 async function updateCard(data){ 4979 const rowIndex = $("#greetingCard").data("index") 4980 const response = await fetch(`${host}/api/card/update?rowIndex=${rowIndex}`, { 4981 method: "PUT", 4982 headers: { 4983 'Content-Type': 'application/json', 4984 }, 4985 body: data 4986 }) 4987 return response 4988 } 4989 4990 function bytesToSize(bytes) { 4991 var sizes = ['b', 'kb', 'mb', 'gb', 'tb', 'p']; 4992 for (var i = 0; i < sizes.length; i++) { 4993 if (bytes <= 1024) { 4994 return bytes + ' ' + sizes[i]; 4995 } else { 4996 bytes = parseFloat(bytes / 1024).toFixed(2) 4997 } 4998 } 4999 return bytes + ' P'; 5000 } 5001 5002 async function uploadMedia(uri, type) { 5003 nameq = $("#properties-nama-penerima").val() 5004 dear = $("#properties-kartu-nama-penerima").val() 5005 card = $("[data-properties=ucapan]").val() 5006 sender = $("#properties-kartu-nama-pengirim").val() 5007 photo = $("#properties-photo").val() 5008 video = $("#properties-video").val() 5009 status = "Product" 5010 5011 const name = qrID 5012 let formData = new FormData(); 5013 formData.append("file", uri); 5014 const response = await fetch(`${host}/api/upload?name=${name}&type=${type}&r=${randomString(3, '0123456789')}`, { 5015 method: "POST", 5016 body: formData 5017 }) 5018 const result = await response.json(); 5019 if(result) { 5020 const url = result.url 5021 if(type === 'image/jpeg') { 5022 $("#properties-photo").val(url) 5023 $(".preview-image").show() 5024 $(".remove-image").show() 5025 photo = url 5026 } else { 5027 $("#properties-video").val(url) 5028 $("#label-input-video span").text("Change File") 5029 $(".case-qrcode-preview p").text("Scan here for a secret message") 5030 $(".remove-media").show() 5031 $("#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>`) 5032 $("[for=input-video]").hide() 5033 video = url 5034 } 5035 $(".case-video-preview").show() 5036 $(".steps-card-preview").removeClass("loading") 5037 // updateCard(nameq, dear, card, sender, photo, video, status) 5038 5039 $(".nextBtn").attr("disabled", false) 5040 } 5041 } 5042 5043 function randomString(length, chars) { 5044 var result = ''; 5045 for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))]; 5046 return result; 5047 } 5048 5049 function getNoteCity(fulldate) { 5050 const h_1 = new Date(new Date().setDate(new Date().getDate() + 1)) 5051 const weekday = ["Min","Sen","Sel","Rab","Kam","Jum","Sab"]; 5052 const monthly = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]; 5053 const d = new Date(h_1); 5054 const day = weekday[d.getDay()]; 5055 const dt = d.getDate(); 5056 const mt = monthly[d.getMonth()]; 5057 const yr = d.getFullYear(); 5058 const p = $("#cities").parent(".form-group") 5059 } 5060 5061 function disabledSameDay() { 5062 let btnFirst = $("#deliveryDate").find("button:first-child") 5063 let getDay = new Date().getDay(); 5064 5065 5066 5067 if(getDay == 1 || getDay == 2 || getDay == 3 || getDay == 4 || getDay == 5){ 5068 if(hour >= 14.00){ 5069 btnFirst.attr("disabled", true) 5070 } 5071 } else if(getDay == 6){ 5072 if(hour >= 16.00){ 5073 btnFirst.attr("disabled", true) 5074 } 5075 } else if(getDay == 0){ 5076 if(hour >= 16.00){ 5077 btnFirst.attr("disabled", true) 5078 } 5079 } 5080 5081 5082 } 5083 5084 function disabledays(date) { 5085 let ymd = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate(); 5086 //if u have to disable a list of day 5087 let removeDays 5088 5089 5090 5091 removeDays = ["2025-2-13", "2025-2-14"]; 5092 5093 if ($.inArray(ymd, removeDays) >= 0) { 5094 return [false]; 5095 } else { 5096 let day = date.getDay(); 5097 if(day == 0 && date.getDate() == 13 && date.getMonth() == 1){ 5098 return [(day == 0), '']; 5099 } 5100 5101 if(day == 0){ 5102 return [(day == 0), '']; 5103 } 5104 5105 5106 return [(day != 0), '']; 5107 } 5108 } 5109 5110 /* Indonesian initialisation for the jQuery UI date picker plugin. */ 5111 /* Written by Deden Fathurahman ([email protected]). */ 5112 ( function( factory ) { 5113 if ( typeof define === "function" && define.amd ) { 5114 5115 // AMD. Register as an anonymous module. 5116 define( [ "../widgets/datepicker" ], factory ); 5117 } else { 5118 5119 // Browser globals 5120 factory( jQuery.datepicker ); 5121 } 5122 }( function( datepicker ) { 5123 5124 datepicker.regional.id = { 5125 closeText: "Tutup", 5126 prevText: "<mundur", 5127 nextText: "maju>", 5128 currentText: "Today", 5129 monthNames: [ "January","February","March","April","May","Juny", 5130 "July","August","September","October","November","December" ], 5131 monthNamesShort: [ "Jan","Feb","Mar","Apr","May","Jun", 5132 "Jul","Agu","Sep","Oct","Nov","Dec" ], 5133 dayNames: [ "Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu" ], 5134 dayNamesShort: [ "Sun","Mon","Tue","Wed","Thu","Fri","Sat" ], 5135 dayNamesMin: [ "Mg","Sn","Sl","Rb","Km","jm","Sb" ], 5136 weekHeader: "Mg", 5137 dateFormat: "D, dd M", 5138 firstDay: 0, 5139 isRTL: false, 5140 showMonthAfterYear: false, 5141 yearSuffix: "" }; 5142 datepicker.setDefaults( datepicker.regional.id ); 5143 5144 return datepicker.regional.id; 5145 5146 } ) ); 5147 5148 function loadPopup() { 5149 $("#backgroundPopup").fadeIn("slow"); 5150 $(".purchasePopup:not(.purchasePopupSpotify)").fadeIn("slow"); 5151 const firstSection = $(".purchasePopup:not(.purchasePopupSpotify) .sectionPurchase").first() 5152 if(firstSection.hasClass("purchasePersonalize")) { 5153 if(productType !== '') { 5154 console.log("clarity event " + productType + ' personalize') 5155 window.clarity("event", `${productType} cardPersonalization`) 5156 // window.clarity("set", productType, `cardPersonalization - ${productDate}`) 5157 } 5158 } else if (firstSection.hasClass("sectionPurchaseBoard")) { 5159 console.log("clarity event " + productType + ' personalizeBoard') 5160 window.clarity("event", `${productType} personalizeBoard`) 5161 // window.clarity("set", productType, `personalizeBoard - ${productDate}`) 5162 } 5163 firstSection.removeClass("hide") 5164 5165 // Auto-trigger addon loading when addon section becomes visible 5166 setTimeout(function() { 5167 const addonSection = $(".purchaseAddon") 5168 if(addonSection.length > 0 && !addonSection.hasClass("hide")) { 5169 if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) { 5170 $("[data-addon=upsell-all]").trigger("click") 5171 } 5172 } 5173 }, 200) 5174 } 5175 5176 function disablePopup() { 5177 $("#backgroundPopup").fadeOut("slow"); 5178 $(".purchasePopup").fadeOut("slow"); 5179 $("#popupCart").fadeOut("slow"); 5180 } 5181
5182 function scrollTo(parent, div, dur) { 5183 $(parent).animate({ 5184 scrollTop: $(div).offset().top 5185 }, dur); 5186 } 5187 5188 function loadPopupPersonalize() { 5189 const div = "#purchaseProduct" 5190 const p = "html, body, .product-meta" 5191 $("p.error").remove() 5192 loadItemOccasion($("[data-occassion]").eq(0), "greeting-card-all") 5193 const isCity = $("#cities[required]") 5194 const isDate = $("#propDeliveryDate[required]") 5195 const isTime = $("#propDeliveryTime[required]") 5196 // loadPopup() 5197 if(isCity.val() !== '' && isDate.val() !== '' && isTime.val() !== '') { 5198 loadPopup() 5199 } 5200 if(isCity.val() == '') { 5201 isCity.parent(".row").append("<p class='error'>Choose delivery city</p>") 5202 scrollTo(p, div, 500) 5203 } 5204 if(isDate.val() == '') { 5205 isDate.parents(".row").append("<p class='error'>Choose delivery date</p>") 5206 scrollTo(p, div, 500) 5207 } 5208 if(isTime.val() == '') { 5209 isTime.parents(".row").append("<p class='error'>Choose delivery time</p>") 5210 scrollTo(p, div, 500) 5211 } 5212 } 5213 5214 function quantityCounter() { 5215 $(document).on("click", ".item-card.selected .q_up", function () { 5216 var C = $(this).attr("data-id"), 5217 S = 5218 parseInt( 5219 $(this) 5220 .siblings(".quantity-cart-" + C) 5221 .val() 5222 ) + 1; 5223 $(this).attr("data-quantity", S), 5224 $(this) 5225 .siblings(".quantity-cart-" + C) 5226 .val(S); 5227 }), 5228 $(document).on("click", ".item-card.selected .q_down", function () { 5229 var C = $(this).attr("data-id"), 5230 S = parseInt( 5231 $(this) 5232 .siblings(".quantity-cart-" + C) 5233 .val() 5234 ); 5235 0 < S && $(this).attr("data-quantity", S - 1), 5236 0 < S && 5237 $(this) 5238 .siblings(".quantity-cart-" + C) 5239 .val(S - 1); 5240 }); 5241 } 5242 5243 quantityCounter() 5244 5245 const itemAddon = $(".item-card").length 5246 const nofree = $(".nofree").length 5247 5248 const upsell = '' 5249 5250 if(nofree === itemAddon) { 5251 // $("#itemAddons").html("<p>No Items available</p>") 5252 } 5253 5254 $("#itemAddons .item-card").each(function(e){ 5255 $("#itemAddons").attr("data-length", e) 5256 }) 5257 5258 $("[data-addon]").click(function(){ 5259 5260 5261 5262 const t = $(this) 5263 5264 const data = t.data("addon") 5265 5266 $("[data-addon]").removeClass("selected") 5267 t.addClass("selected") 5268 $.get(`https://outerbloom.com/collections/${data}/products.json`, function(data, status){ 5269 const products = data.products 5270 const html = [] 5271 for(let i = 0; i < products.length; i++) { 5272 const id = products[i].id 5273 const variantId = products[i].variants[0].id 5274 const img = products[i].images[0].src 5275 let img2 = img.split('.jpg')[0] 5276 const title = products[i].title 5277 const price = products[i].variants[0].price 5278 const tags = products[i].tags 5279 const qty = products[i].variants[0].available 5280 let type_upsell = '' 5281 if(tags.includes('upsell-item-standing')) { 5282 type_upsell = 'standing' 5283 } 5284 console.log(type_upsell) 5285 if(type_upsell !== '') { 5286 const body = `<div class="item-card${price < 1 ? ' free' : ' nofree'} type-${products[i].product_type.toLowerCase()?.replace(' ', '_')}" data-variant="${variantId}" data-id=${id} data-qty="${qty === false ? 0 : ''}" data-upsell="${type_upsell}" data-tags="${tags}"> 5287 5288 <div class="card-image"> 5289 <img src="${img2}_150x.jpg" alt="${title}" width="" height="" /> 5290 </div> 5291 <div class="card-meta"> 5292 <h5>${title}</h5> 5293 <p>${price < 1 ? 'FREE' : rupiah.format(price)}</p> 5294 <input id="card-${variantId}" type="hidden" name="" value="${variantId}"> 5295 </div> 5296 <div class="card-qty"> 5297 <a data-quantity="1" type="submit" id="q_down-${variantId}" class="btn-qty-min q_down drawer-cart" data-id="${variantId}"><svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="12" height="2" viewBox="0 0 12 2" fill="none"><path d="M0 1.90869V0.908691H12V1.90869H0Z" fill="black"/></svg></a> 5298 <input maxlength="3" min="0" class="btn-qty text-center quantity-cart-${variantId}
5298" value="0" data-price=${price} name="quantity"> 5299 <a data-quantity="1" type="submit" class="btn-qty-plus q_up text-green drawer-cart" data-id="${variantId}"><svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="12" height="13" viewBox="0 0 12 13" fill="none"> 5300 <path d="M0 6.87023V5.94715H5.53846V0.408691H6.46154V5.94715H12V6.87023H6.46154V12.4087H5.53846V6.87023H0Z" fill="black"/> 5301 </svg></a> 5302 </div> 5303 </div>` 5304 html.push(body) 5305 } 5306 } 5307 $("#itemAddons .row").html(html.length === 0 ? '<p>No Item available</p>' : html) 5308 $("#itemAddons").attr("data-length", products.length) 5309 // $('#itemAddons')[0].swiper.update(); 5310 }); 5311 }) 5312 5313 async function isAddon(){ 5314 let ids = [] 5315 $("#itemAddons .item-card.selected").each(function(i, e){ 5316 const id = $(this).data("id") 5317 ids.push(id) 5318 }) 5319 console.log(ids) 5320 return ids 5321 } 5322 5323 $("#itemAddons").delegate(".item-card > div:not(.card-qty)", "click", async function(){ 5324 const t = $(this).parent() 5325 const id = t.data("id") 5326 const btn = t.parents(".purchaseAddon").find(".next-purchase-button") 5327 t.toggleClass("selected"); 5328 //$(this).next("input").toggleAttr('name', 'id[]'); 5329 if (t.hasClass('selected')) { 5330 t.find("input").val(1) 5331 t.find("input").attr('name', 'id[]'); 5332 } else { 5333 t.find("input").val(0) 5334 t.find("input").removeAttr('name'); 5335 } 5336 $("#properties-addons").val(addons) 5337 const is = await isAddon() 5338 if(is.length === 0) { 5339 btn.text("continue without add-ons") 5340 return 5341 } 5342 if(is.includes(8835692069079)) { 5343 btn.text("personalize acrylic frame") 5344 } else { 5345 btn.text("Continue") 5346 } 5347 5348 }) 5349 5350 async function myAddon(data) { 5351 const c = $(".addonsPurchase .addons") 5352 let items = [] 5353 5354 const spotifyAddons = $(".spotifyAddons").find("[data-index]") 5355 // if(spotifyAddons.length > 0) { 5356 // $(spotifyAddons).each(function(i, e){ 5357 // const spotifyLink = $(this).find(".spotifyLink").val() 5358 // const spotifySong = $(this).find(".spotifySong").val() 5359 // const spotifyArtist = $(this).find(".spotifyArtist").val() 5360 // const spotifyFotoAddon = $(this).find(".resultPhotoSpotify").val() 5361 // if(spotifyLink !== '') { 5362 // spotifyAddon = `<div class="addon-item" data-id="46067682607319" data-qty="1"> 5363 // <div class="addon-itm-img"> 5364 // <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"/> 5365 // </div> 5366 // <div class="addon-itm-title"> 5367 // <span>[US] Outerbloom Acrylic Frame 4R</span> 5368 // </div> 5369 // <div class="addon-itm-line-total"> 5370 // <span>Rp 99.000</span> 5371 // </div> 5372 // </div> 5373 // <div class="propsAddonSpotify row m-0"> 5374 // <div class="col-12 col-lg-2"></div> 5375 // <div class="col-12 col-lg-10"> 5376 // <p> 5377 // <span>spotify link</span> 5378 // <span class="spotifyLinkAddon">${spotifyLink}</span> 5379 // </p> 5380 // <p> 5381 // <span>uploaded photo</span> 5382 // <span class="spotifyFotoAddon">${spotifyFotoAddon}</span> 5383 // </p> 5384 // <p> 5385 // <span>song / playlist name</span> 5386 // <span class="spotifySongAddon">${spotifySong}</span> 5387 // </p> 5388 // <p> 5389 // <span>artist name</span> 5390 // <span class="spotifyArtistAddon">${spotifyArtist}</span> 5391 // </p> 5392 // </div> 5393 // </div>` 5394 // items.push(spotifyAddon) 5395 // } 5396 // }) 5397 // } 5398 for(let i = 0; i < data.length; i++) { 5399 if(data[i].title !== '[US] Outerbloom Acrylic Frame 4R' ) { 5400 const img = data[i].image 5401 const title = data[i].title
5402 const qty = data[i].qty 5403 const price = data[i].price 5404 const total = Number(qty) * Number(price) 5405 let addons = `<div class="addon-item" data-id="${data[i].id}" data-qty="${qty}"> 5406 <div class="addon-itm-img"> 5407 <img src="${img}" alt="" width="70"/> 5408 </div> 5409 <div class="addon-itm-title"> 5410 <span>${title}</span> 5411 </div> 5412 <div class="addon-itm-line-price"> 5413 <span>${rupiah.format(price)}</span> 5414 ${data[i].title == '[US] Outerbloom Acrylic Frame 4R' ? '' : `<span>x${qty}</span>`} 5415 </div> 5416 <div class="addon-itm-line-total"> 5417 <span>${rupiah.format(total)}</span> 5418 </div> 5419 </div>` 5420 items.push(addons) 5421 } 5422 } 5423 c.html(items) 5424 const parent = $(".purchaseAddon") 5425 const next = parent.next(".sectionPurchase") 5426 parent.addClass("hide") 5427 next.removeClass("hide") 5428 // if(items2.length === 0) return $("#popupCart").addClass("no-addon-cart") 5429 // $(".itemAddonCart").find("h4").text(`add-ons (${items2.length})`) 5430 } 5431 5432 async function listAddon() { 5433 const data = $("#itemAddons").find(".selected") 5434 let ids = [] 5435 $(data).each(function(){ 5436 const id = $(this).data("variant") 5437 const image = $(this).find(".card-image img").attr("src") 5438 const title = $(this).find(".card-meta h5").text() 5439 const qty = $(this).find(".card-qty input").val() 5440 const price = $(this).find(".card-qty input").data("price") 5441 ids.push({ 5442 id: Number(id), 5443 image, 5444 title, 5445 qty, 5446 price 5447 }) 5448 }) 5449 myAddon(ids) 5450 } 5451 5452 async function customSpotify(idx, length, type){ 5453 let isCard = false 5454 5455 let p = $(".purchasePopupSpotify") 5456 const preLink = $(".spotifyLinkFirst").val() 5457 $("[data-index]").hide() 5458 p.find(".headerPurchase h3").text(`personalize spotify photo print${length > 1 ? ` - ${idx}` : ''}`) 5459 p.find(".regulerAddons, .purchase-button").hide() 5460 p.find(".spotifyAddons").show() 5461 5462 const data = await trackUrl(preLink) 5463 5464 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="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="13" height="11" viewB
5464ox="0 0 13 11" fill="none"> 5465 <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"/> 5466 </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=https://photoin.io/images/2026/05/28/logo-kvtoto.png><path d="M14.5799 7.41992L2.32992 7.41992L7.57992 12.6699L6.91992 13.4199L0.419922 6.91992L6.91992 0.419922L7.57992 1.16992L2.32992 6.41992L14.5799 6.41992V7.41992Z"fill=black /></svg> <span>Back</span></button><button data-type="${isCard ? 'card' : ''}" ${isCard ? '' : 'id=addtocart-card'} class="text-uppercase btn w-100${type == 'addon' && idx == length ? ' finished' : ' no-addon'}" disabled>${isCard ? 'Continue Personalizing' : 'add to cart'}</button></div></div></div><div class="col-12 col-lg-6 columnRight"><div class=frame-spotify><div class=frameImage><div class=frameImageUploaded><svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="13" height="11" viewB
5466ox="0 0 13 11" fill="none"> 5467 <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"/> 5468 </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>` 5469 // console.log(html) 5470 5471 $(".spotifyAddons").append(html) 5472 5473 $(`[data-index=${idx}]`).show() 5474 5475 if (preLink !== '') { 5476 $(".btn-action .btn").attr("disabled", false) 5477 } else { 5478 $(".btn-action .btn").attr("disabled", true) 5479 } 5480 5481 return html 5482 5483 } 5484 5485 $(".spotifyLinkFirst").keyup(async function(){ 5486 const v = $(this).val() 5487 if(v.includes('spotify:user:spotify')) { 5488 const correct = v.split('user:spotify:')[1] 5489 console.log(correct, 'BNER') 5490 $(this).val(correct) 5491 return 5492 } 5493 if(v.includes("spotify:") || v.includes("https://open.spotify.com/")){ 5494 const data = await trackUrl(v) 5495 if(!data || !data.status) { 5496 $(this).parent().addClass("error") 5497 // $(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>`) 5498 $("#personalizeBtnSpotify .btn").attr("disabled", true) 5499 return 5500 } 5501 $(this).parent().removeClass("error") 5502 // $(this).parent().remove("txt-error") 5503 $("#personalizeBtnSpotify .btn").attr("disabled", false) 5504 } else { 5505 $("#personalizeBtnSpotify .btn").attr("disabled", true) 5506 } 5507 }) 5508 5509 $(".purchaseAddon").delegate(".next-addon", "click", function(){ 5510 const parent = $(this).parents(".purchaseAddon") 5511 const next = parent.next(".sectionPurchase") 5512 if(next.hasClass("purchaseAddress")) { 5513 if(productType !== '') { 5514 console.log("clarity event " + productType + ' purchaseDelivery') 5515 window.clarity("event", `${productType} purchaseDelivery`) 5516 // window.clarity("set", productType, `purchaseDelivery - ${productDate}`) 5517 } 5518 } 5519 const data = $("#itemAddons").find(".selected") 5520 const length = $(".quantity-cart-46067682607319").val() 5521 const checked = data.length; 5522 if(checked > 0) { 5523 if(length > 0) { 5524 $(".purchaseAddon").addClass("purchaseAddonSpotify") 5525 customSpotify(1, length, 'addon') 5526 } else { 5527 listAddon() 5528 } 5529 } else { 5530 parent.addClass("hide") 5531 next.removeClass("hide") 5532 } 5533 }) 5534 5535 $("#personalizeBtnSpotify .btn").click(async function(){ 5536 const isCity = $("#cities[required]") 5537 const isDate = $("#propDeliveryDate[required]") 5538 if((isDate.length > 0 && isCity.length > 0) && (isCity.val() === '' || isDate.val() === '')) { 5539 alert('Please choose Delivery City & Delivery Date') 5540 return 5541 } 5542 const data = await customSpotify(1, 1, 'product') 5543 if(data) { 5544 $("#backgroundPopup").fadeIn("slow"); 5545 $(".purchasePopupSpotify").fadeIn("slow"); 5546 5547 if(productType !== '') { 5548 console.log("clarity event " + productType + ' spotify') 5549 window.clarity("event", `${productType} spotify`) 5550 // window.clarity("set", productType, `purchaseDelivery - ${productDate}`) 5551 } 5552 } 5553 }) 5554 5555 function formatBytes(bytes, decimals = 2) { 5556 if (!+bytes) return '0 Bytes' 5557
5558 const k = 1024 5559 const dm = decimals < 0 ? 0 : decimals 5560 const sizes = ['B', 'KB', 'MB'] 5561 5562 const i = Math.floor(Math.log(bytes) / Math.log(k)) 5563 5564 return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}` 5565 } 5566 5567 async function trackUrl(link){ 5568 try { 5569 let trackId = link.split('/').pop().split('?')[0]; 5570 let type = '' 5571 if(link.includes("spotify:")) { 5572 const uri = link.split('spotify:')[1] 5573 trackId = uri.split(':')[1] 5574 type = uri.split(':')[0] + 's' 5575 } else { 5576 if(link.match('track')){ 5577 type = 'tracks' 5578 } else if(link.match('playlist')) { 5579 type = 'playlists' 5580 } else if(link.match('artist')) { 5581 type = 'artists' 5582 } else if(link.match('album')) { 5583 type = 'albums' 5584 } 5585 } 5586 console.log(`${host}/api/spotify/${type}/${trackId}`) 5587 const data = await getFetch(`${host}/api/spotify/${type}/${trackId}`) 5588 console.log(data, 'DATA') 5589 const song = data?.data?.name 5590 const artist = data?.data?.artist 5591 return { 5592 song, artist, type, trackId, status: data.status 5593 } 5594 } catch(err) { 5595 console.log(err) 5596 } 5597 } 5598 5599 $(".spotifyAddons").delegate(".uploadPhotoSpotify", "change", async function(){ 5600 const parent = $(this).parents("[data-index]") 5601 const preview = parent.find(".previewImage") 5602 const file = $(this)[0].files[0]; 5603 if (file) { 5604 const reader = new FileReader(); 5605 reader.onload = async function(e) { 5606 parent.find(".uploadResult label").hide() 5607 parent.find(".uploadedResult").remove() 5608 parent.find(".uploadResult").append(`<div class="uploadedResult d-flex" style="justify-content: space-between"> 5609 <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> 5610 <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;">
5610<svg fill="none" height="11" viewBox="0 0 10 11" width="10" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png"> 5611 <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 /> 5612 </svg> 5613 </span></div></div>`) 5614 parent.find(".frameImageUploaded svg").hide() 5615 parent.find(".frameImage").addClass("uploaded") 5616 preview.attr("src", e.target.result); 5617 preview.show(); 5618 let formData = new FormData(); 5619 formData.append("file", file); 5620 const response = await fetch(`${host}/api/upload?name=${file.name}&type=image/jpeg&r=${Date.parse(new Date)}`, { 5621 method: "POST", 5622 body: formData 5623 }) 5624 const result = await response.json(); 5625 if(result){ 5626 parent.find(".resultPhotoSpotify").val(result.url) 5627 } 5628 } 5629 5630 reader.readAsDataURL(file); 5631 } else { 5632 preview.hide(); 5633 } 5634 }); 5635 5636 $(".spotifyAddons").delegate(".uploadResult", "click", function(){ 5637 $(this).next("input[type=file]").trigger("click") 5638 }) 5639 5640 $(".spotifyAddons").delegate(".changeUpload", "click", function(){ 5641 $(this).parents("input[type=file]").trigger("click") 5642 }) 5643 5644 $(".spotifyAddons").delegate(".removeUpload", "click", function(){ 5645 const parent = $(this).parents("[data-index]") 5646 parent.find(".uploadPhotoSpotify").val("") 5647 parent.find(".uploadResult label").show() 5648 parent.find(".uploadedResult").remove() 5649 parent.find(".frameImageUploaded svg").show() 5650 parent.find(".previewImage").hide() 5651 parent.find(".frameImage").removeClass("uploaded") 5652 }) 5653 5654 $(".spotifyAddons").delegate("label.checkbox", "click", function(){ 5655 const parent = $(this).parents("[data-index]") 5656 parent.toggleClass("checked") 5657 }) 5658 5659 $(".spotifyAddons").delegate(".spotifyLink", "change", async function(){ 5660 const parent = $(this).parents("[data-index]") 5661 const link = $(this).val() 5662 const data = await trackUrl(link) 5663 5664 console.log(data) 5665 5666 if(data.song) { 5667 parent.find(".spotifySong").val(data.song) 5668 parent.find(".spotifyData").find("h3").text(data.song) 5669 } 5670 if(data.artist) { 5671 parent.find(".spotifyArtist").val(data.artist) 5672 parent.find(".spotifyData").find("p").text(data.artist) 5673 } 5674 parent.find(".spotifyCode img").attr("src", `https://scannables.scdn.co/uri/plain/png/FFFFFF/black/640/spotify:${data.type.slice(0, -1)}:${data.trackId}`) 5675 // https://scannables.scdn.co/uri/plain/png/FFFFFF/black/640/spotify:track:1er51HCEBhIAtoEemKuC3M 5676 if (data.status === true) { 5677 parent.find(".btn-action .btn").attr("disabled", false) 5678 } else { 5679 parent.find(".btn-action .btn").attr("disabled", true) 5680 } 5681 }) 5682
5683 $(".spotifyAddons").delegate(".spotifySong", "keyup", async function(){ 5684 const parent = $(this).parents("[data-index]") 5685 const v = $(this).val() 5686 parent.find(".spotifyData h3").text(v) 5687 }) 5688 5689 $(".spotifyAddons").delegate(".spotifyArtist", "keyup", async function(){ 5690 const parent = $(this).parents("[data-index]") 5691 const v = $(this).val() 5692 parent.find(".spotifyData p").text(v) 5693 }) 5694 5695 $(".spotifyAddons").delegate(".btn-action .btn:not(.no-addon)", "click", async function(){ 5696 const parent = $(this).parents("[data-index]") 5697 const length = parent.data("length") 5698 const index = parent.data("index") 5699 const indexNext = Number(index) + 1 5700 customSpotify(indexNext, length, 'addon') 5701 }) 5702 5703 5704 $(".spotifyAddons").delegate(".btn-action .btn.finished", "click", async function(){ 5705 const parent = $(this).parents(".purchaseAddon") 5706 const next = parent.next(".sectionPurchase") 5707 parent.addClass("hide") 5708 next.removeClass("hide") 5709 next.find(".purchase-button").show() 5710 listAddon() 5711 }) 5712 5713 $(".spotifyAddons").delegate(".back-spotify", "click", async function(){ 5714 const t = $(this).parents("[data-index]") 5715 const parent = $(this).parents(".sectionPurchase") 5716 const current = t.data("index") 5717 const prevCurrent = Number(current) - 1 5718 if(current == 1) { 5719 parent.removeClass("purchaseAddonSpotify") 5720 parent.find(".purchase-button").show() 5721 parent.find(".headerPurchase h3").text("Make It More Special with Add-Ons!") 5722 $(".spotifyAddons").empty() 5723 $(".regulerAddons").show() 5724 return 5725 } 5726 t.hide() 5727 t.prev("[data-index]").show() 5728 t.remove() 5729 parent.find(".headerPurchase h3").text(`personalize spotify photo print - ${prevCurrent}`) 5730 }) 5731 5732 $("#personalizeBtn .btn").click(async function() { 5733 loadPopupPersonalize() 5734 }); 5735 5736 $(".sectionPurchaseSpotify").delegate(".btn[data-type=card]", "click", function(){ 5737 $(".sectionPurchaseSpotify").hide() 5738 loadPopupPersonalize() 5739 }) 5740 5741 $(".close-purchase-popup").click(function() { 5742 disablePopup(); 5743 }); 5744 $("#backgroundPopup").click(function() { 5745 // disablePopup(); 5746 }); 5747 5748 $("#popupCart .close-purchase-popup").click(function() { 5749 location.reload() 5750 }); 5751 5752 $('#popupCart').on('hide.bs.modal', function (e) { 5753 location.reload() 5754 }) 5755 5756 $(".next-card").click(function(){ 5757 const parent = $(this).parents(".sectionPurchase") 5758 const next = parent.next(".sectionPurchase") 5759 parent.addClass("hide") 5760 next.removeClass("hide") 5761 }) 5762 5763 $(".back-purchase-button").click(function(){ 5764 const parent = $(this).parents(".sectionPurchase") 5765 const prev = parent.prev(".sectionPurchase") 5766 parent.addClass("hide") 5767 prev.removeClass("hide") 5768 }) 5769 5770 $(document).keypress(function(e) { 5771 if (e.keyCode == 27 && popupStatus == 1) { 5772 disablePopup(); 5773 } 5774 }); 5775 5776 const parentImg = $(".case-img-preview") 5777 const parentVid = $(".case-video-preview") 5778 5779 function readURL(input) { 5780 if (input.files && input.files[0]) { 5781 let reader = new FileReader(); 5782 5783 let type = 'image/jpeg' 5784 const size = input.files[0].size 5785 if(input.files[0].type.match('video/')){ 5786 type = 'video/mp4' 5787 if(size > 15728640) { 5788 alert('File size exceeds maximum limit 15 MB') 5789 return 5790 } 5791 } else { 5792 if(size > 5242880) { 5793 alert('File size exceeds maximum limit 5 MB') 5794 return 5795 } 5796 } 5797 5798 reader.onload = function (e) { 5799 $(".nextBtn").attr("disabled", true) 5800 if(type === 'image/jpeg') { 5801 5802 $('.placeholder-image').hide(); 5803 $('.preview-image').show() 5804 $('.preview-image').attr('src', e.target.result); 5805 5806 } else { 5807 // parentVid.find(".ajax-loader").show(); 5808 $(".steps-card-preview").addClass("loading") 5809 } 5810 } 5811 5812 5813 5814 reader.readAsDataURL(input.files[0]); 5815 } 5816 } 5817 5818 async function readURLPapan(input) { 5819 if (input.files && input.files[0]) { 5820 let reader = new FileReader(); 5821 5822 reader.onload = function (e) { 5823 $('.btn-upload-papan').siblings('label').hide(); 5824 $('.btn-upload-papan img').attr('src', e.target.result); 5825 $('.btn-upload-papan img').show(); 5826 $('.svgLogoPapan').hide(); 5827 } 5828 5829 const type = 'image/jpeg' 5830 const name = `logo-8144957800663-${Date.parse(new Date())}` 5831 5832 let formData = new FormData(); 5833 formData.append("file", input.files[0]); 5834 const response = await fetch(`${host}/api/upload?name=${name}&type=${type}&r=${randomString(3, '0123456789')}`, { 5835 method: "POST", 5836 body: formData 5837 }) 5838 const result = await response.json(); 5839 if(result) { 5840 const url = result.url 5841 $("[data-properties=papan-logo]").val(url) 5842 } 5843
5844 reader.readAsDataURL(input.files[0]); 5845 } 5846 } 5847 5848 async function readURLAddress(input) { 5849 console.log(input, 'readURLAddress') 5850 if (input.files && input.files[0]) { 5851 let reader = new FileReader(); 5852 5853 reader.onload = function (e) { 5854 $('.photo-address').attr('src', e.target.result); 5855 $('.photo-address').show(); 5856 } 5857 5858 const type = 'image/jpeg' 5859 const name = input.files[0].name?.split('.')[0] 5860 5861 let formData = new FormData(); 5862 formData.append("file", input.files[0]); 5863 const response = await fetch(`${host}/api/upload?name=${name}&type=${type}&r=${randomString(3, '0123456789')}`, { 5864 method: "POST", 5865 body: formData 5866 }) 5867 const result = await response.json(); 5868 5869 reader.readAsDataURL(input.files[0]); 5870 5871 return result 5872 } 5873 } 5874 5875 5876 5877 5878 async function addToCartUang() { 5879 var productAddOnId1 = 42122101162199; 5880 var productAddOnId2 = 42122101194967; 5881 var product_id = 8144957800663 5882 const data = { 5883 items: [ 5884 { 5885 quantity: $("#Quantity-" + productAddOnId1).val(), 5886 id: productAddOnId1, 5887 "properties": { "Time": $("#properties-time").val() } 5888 }, 5889 { 5890 quantity: $("#Quantity-" + productAddOnId2).val(), 5891 id: productAddOnId2, 5892 "properties": { "Time": $("#properties-time").val() } 5893 } 5894 ] 5895 } 5896 await fetch(window.Shopify.routes.root + 'cart/add.js', { 5897 method: 'POST', 5898 headers: { 5899 'Content-Type': 'application/json' 5900 }, 5901 body: JSON.stringify(data) 5902 }) 5903 .then(response => { 5904 console.error('Sukses Buket Uang:', response); 5905 $(".form-flower").submit() 5906 }) 5907 .catch((error) => { 5908 console.error('Error Buket Uang:', error); 5909 $(".form-flower").submit() 5910 }); 5911 } 5912 5913 async function saveCard(){ 5914 let isCard = true 5915 const kartu_penerima = $("[data-properties=penerima]").val() !== '' ? $("[data-properties=penerima]").val() : '' 5916 const kartu_pengirim = $("[data-properties=pengirim]").val() !== '' ? $("[data-properties=pengirim]").val() : '' 5917 const kartu_ucapan = $("[data-properties=ucapan]").val() !== '' ? $("[data-properties=ucapan]").val() : '' 5918 const foto = $("#properties-photo").val() 5919 const video = $("#properties-video").val() 5920 const data = JSON.stringify({ 5921 "id": qrID, 5922 "penerima": $("#properties-nama-penerima").val(), 5923 "kartu_penerima": kartu_penerima, 5924 "kartu_ucapan": kartu_ucapan, 5925 "kartu_pengirim": kartu_pengirim, 5926 "foto": foto, 5927 "video": video, 5928 "productId": "8144957800663", 5929 "order_name": "", 5930 "status": "Cart" 5931 }) 5932 5933 5934 } 5935 5936 async function additem(items){ 5937 try { 5938 let formData = items 5939 if(items?.length) { 5940 formData = { 5941 'items': items 5942 }; 5943 } 5944 5945 const add = await fetch(window.Shopify.routes.root + 'cart/add.js', { 5946 method: 'POST', 5947 headers: { 5948 'Content-Type': 'application/json', 5949 'X-Requested-With':'xmlhttprequest' /* XMLHttpRequest is ok too, it's case insensitive */ 5950 }, 5951 body: JSON.stringify(formData) 5952 }) 5953 5954 const data = await add.json(); 5955 return data 5956 } catch(err){ 5957 console.log('Error additem', err) 5958 } 5959 } 5960 5961 async function addons(){ 5962 let items = [] 5963 $(".addon-item").each(function(){ 5964 const p = $(this) 5965 const props = p.next(".propsAddonSpotify") 5966 const id = $(this).data("id") 5967 const quantity = $(this).data("qty") 5968 const propId = $("#properties-time").val() 5969 let properties = {} 5970 if(id === 46067682607319) { 5971 const link = props.find(".spotifyLinkAddon").text() 5972 const photo = props.find(".spotifyFotoAddon").text() 5973 const song = props.find(".spotifySongAddon").text() 5974 const artist = props.find(".spotifyArtistAddon").text() 5975 properties = { 5976 id: propId, 5977 "Spotify Link": link !== '' ? link : '-', 5978 "Spotify Photo": photo !== '' ? photo : '-', 5979 "Spotify Song": song !== '' ? song : '-', 5980 "Spotify Artist": artist !== '' ? artist : '-', 5981 type: 'addon' 5982 } 5983 } else { 5984 properties = { 5985 "id": propId, 5986 "type": "addon" 5987 } 5988 } 5989 items.push({ 5990 id, 5991 quantity, 5992 properties 5993 }) 5994 }) 5995 return items 5996 } 5997 5998 async function propItems() { 5999 let props = {} 6000 $("[data-properties]").each(function(e){ 6001 let elementType = this.tagName;
6002 const k = $(this).data("properties") 6003 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') { 6004 const v = elementType === 'SELECT' ? $(this).find(":selected").val() : $(this).val(); 6005 if(v !== '') { 6006 props[k] = v?.replace(/[\s\n]/g, ''); 6007 } 6008 } 6009 }) 6010 return props 6011 } 6012 6013 async function showPopupCart(items){ 6014 if(productType !== '') { 6015 console.log("clarity event " + productType + ' completeOrder') 6016 window.clarity("event", `${productType} completeOrder`) 6017 // window.clarity("set", productType, `completeOrder - ${productDate}`) 6018 } 6019 $("#popupCart").show() 6020 6021 $(".propDeliveryCity").text($("#cities").val()) 6022 $(".propDeliveryDate").text($("#propDeliveryDate").val()) 6023 $(".propDeliveryTime").text($("#propDeliveryTime").val()) 6024 $(".propDeliveryName").text($("[data-properties=nama-penerima]").val()) 6025 $(".propDeliveryAddress").text($("[data-properties=alamat-penerima]").val()) 6026 $(".propDeliveryPhone").text($("[data-properties=telepon-penerima]").val()) 6027 $(".propDeliveryProv").text($("#province").val()) 6028 $(".propDeliveryZip").text($("#zip").val()) 6029 6030 6031 6032 const addons = [] 6033 if(items && items.length > 0) { 6034 for(let i = 1; i < items.length; i++) { 6035 const spotifyLink = items[i].properties['Spotify Link'] 6036 const spotifyPhoto = items[i].properties['Spotify Photo'] 6037 const spotifySong = items[i].properties['Spotify Song'] 6038 const spotifyArtist = items[i].properties['Spotify Artist'] 6039 const price = items[i].price / 100 6040 const props = spotifyLink ? `<div class="propsAddonCart row m-0"> 6041 <div class="col-12 col-lg-2"></div> 6042 <div class="col-12 col-lg-10"> 6043 <p> 6044 <span>spotify link</span> 6045 <span>${spotifyLink}</span> 6046 </p> 6047 <p> 6048 <span>Upload Photo</span> 6049 <span>${spotifyPhoto}</span> 6050 </p> 6051 <p> 6052 <span>song / playlist name</span> 6053 <span>${spotifySong}</span> 6054 </p> 6055 <p> 6056 <span>artist name</span> 6057 <span>${spotifyArtist}</span> 6058 </p> 6059 </div> 6060 </div>` : ''; 6061 addons.push(`<div class="row m-0"> 6062 <div class="imgAddonCart col-2"> 6063 <img 6064 width="43" 6065 src="${items[i].image}" 6066 alt="" 6067 > 6068 </div> 6069 <div class="imgAddonTitlePrice col-10 align-self-center"> 6070 <div class="row justify-content-between m-0"> 6071 <div class="col-12 col-lg-8"> 6072 <h5>${items[i].title}</h5> 6073 </div> 6074 <div class="col-12 col-lg-4 text-lg-right"> 6075 <span>${rupiah.format(price)}</span> 6076 </div> 6077 </div> 6078 </div> 6079 </div>${props}`) 6080 } 6081 } 6082 // console.log(addons) 6083 if(addons.length === 0) { 6084 $(".itemAddonCart").hide() 6085 return 6086 } 6087 $(".toggleAddonCart h4").text(`add-ons (${items.length - 1})`) 6088 $(".wrapperItemAddonCart").html(addons) 6089 } 6090 6091 const money = (money) => { 6092 return new Intl.NumberFormat('id-ID', 6093 { style: 'currency', currency: 'IDR', minimumFractionDigits: 0 } 6094 ).format(money); 6095 } 6096 6097 async function showNoteMoney() { 6098 let qty50k = $("[data-properties='Uang 50k']").val() 6099 let qty100k = $("[data-properties='Uang 100k']").val() 6100 const total50k = Number(qty50k) * 50000 6101 const total100k = Number(qty100k) * 100000 6102 const total_all = total50k + total100k 6103 $(".prop50k").html(`<span>${qty50k} Lembar: <strong class="pl-1">${money(total50k)}</strong></span>`) 6104 $(".prop100k").html(`<span>${qty100k} Lembar: <strong class="pl-1">${money(total100k)}</strong></span>`) 6105 $(".itemMoney").html(`<p>For the money arrangement, please transfer <strong>IDR ${money(total_all)}</strong> to <strong>Bank Mandiri 1020001234522 (PT Modern Mekar Abadi)</strong> and contact our <a href="https://legend.kvtotomat.shop/" target="_blank" style="text-decoration: underline;
6105 color: #8d3f2d">Customer Service</a> to confirm with proof of payment.</p>`) 6106 } 6107 6108 async function removeImage() { 6109 const data = JSON.stringify({ 6110 "ID": $("#properties-properties-qrId").val(), 6111 "Kartu Nama Penerima": $("#properties-kartu-nama-penerima").val(), 6112 "Kartu Nama Pengirim": $("#properties-kartu-nama-pengirim").val(), 6113 "Kartu Ucapan": $("[data-properties=ucapan]").val(), 6114 "Nama Penerima": $("#properties-nama-penerima").val(), 6115 "Order Number":"", 6116 "Status":"Product", 6117 "Foto": "", 6118 "Media": $("#properties-video").val(), 6119 "Image": "8144957800663" 6120 }) 6121 const remove = updateCard(data) 6122 if(remove) { 6123 $(this).hide() 6124 $("#properties-photo").val("-") 6125 $(".placeholder-image").show() 6126 $(".preview-image").attr("src", "") 6127 } 6128 } 6129 6130 async function removeVideo() { 6131 const data = JSON.stringify({ 6132 "ID": $("#properties-properties-qrId").val(), 6133 "Kartu Nama Penerima": $("#properties-kartu-nama-penerima").val(), 6134 "Kartu Nama Pengirim": $("#properties-kartu-nama-pengirim").val(), 6135 "Kartu Ucapan": $("[data-properties=ucapan]").val(), 6136 "Nama Penerima": $("#properties-nama-penerima").val(), 6137 "Order Number":"", 6138 "Status":"Product", 6139 "Foto": $("#properties-photo").val(), 6140 "Media": "", 6141 "Image": "8144957800663" 6142 }) 6143 const remove = updateCard(data) 6144 if(remove) { 6145 $("#properties-video").val("-") 6146 $(this).find("img").hide() 6147 $(this).hide() 6148 $(this).prev("p").text("Add video to make it more special (optional)") 6149 $("#label-input-video").show() 6150 $("#label-input-video span").text("Upload Video") 6151 $(".case-video-preview p span").remove() 6152 } 6153 } 6154 6155 async function loadItemOccasion(t, occasion) { 6156 const name = occasion?.replace('greeting-card-', '') 6157 $("#kartu-ucapan").val("") 6158 $("[data-occassion]").removeClass("selected") 6159 $("[data-properties=ucapan]").val("") 6160 $("#save-card").attr("disabled", true) 6161 t.addClass("selected") 6162 $("#show_note").attr("data-card-occassion", name) 6163 $.get(`https://outerbloom.com/collections/${occasion}/products.json`, function(data, status){ 6164 const products = data.products 6165 const html = [] 6166 for(let i = 0; i < products.length; i++) { 6167 const id = products[i].id 6168 const variantId = products[i].variants[0].id 6169 const img = products[i].images[0].src 6170 const title = products[i].title 6171 const price = products[i].variants[0].price 6172 const qty = products[i].variants[0].inventory_quantity 6173 const body = `<div class="item-card${price < 1 ? ' free' : ' nofree'}${i === 0 ? ' selected' : ''}" data-id=${id}> 6174 <label for="card-${variantId}"></label> 6175 <div class="card-image"> 6176 <img src="${img}" alt="${title}" width="" height="" /> 6177 </div> 6178 <div class="card-meta text-center"> 6179 <h5>${title}</h5> 6180 <p>${price < 1 ? 'FREE' : rupiah.format(price)}</p> 6181 <input id="card-${variantId}" type="radio" name="id" value="${variantId}" data-price="${price}"> 6182 </div> 6183 </div>` 6184 html.push(body) 6185 } 6186 const withoutCard = `<div class="item-card item-without-card"> 6187 <label for="card-0"></label> 6188 <div class="card-image"> 6189 <img src="https://cdn.shopify.com/s/files/1/1589/6833/t/129/assets/without-card.png?v=1747632283" alt="Without card" width="" height="" /> 6190 </div> 6191 <div class="card-meta text-center"> 6192 <h5>
6192Send without a greeting card</h5> 6193 <input id="card-0" type="radio" name="id" value="" data-price=""> 6194 </div> 6195 </div>` 6196 $("#itemCards .items-card").html(html.length === 0 ? '<p>No Item available</p>' : html.join("")) 6197 }); 6198 } 6199 6200 $(document).ready(function(){ 6201 6202 // Observer to auto-trigger addon loading when addon section becomes visible 6203 const addonObserver = new MutationObserver(function(mutations) { 6204 mutations.forEach(function(mutation) { 6205 const target = $(mutation.target) 6206 if(target.hasClass('purchaseAddon') && mutation.type === 'attributes' && mutation.attributeName === 'class') { 6207 if(!target.hasClass('hide')) { 6208 // Addon section just became visible, ensure items are loaded 6209 setTimeout(function() { 6210 if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) { 6211 console.log("Auto-triggering addon load...") 6212 $("[data-addon=upsell-all]").trigger("click") 6213 } 6214 }, 150) 6215 } 6216 } 6217 }) 6218 }) 6219 6220 // Start observing addon section 6221 const addonSection = document.querySelector('.purchaseAddon') 6222 if(addonSection) { 6223 addonObserver.observe(addonSection, { 6224 attributes: true, 6225 attributeFilter: ['class'] 6226 }) 6227 } 6228 6229 $(".purchasePopup").delegate("#addtocart-card", "click", async function(){ 6230 6231 $(this).find("span").addClass("loading") 6232 let isValid = true 6233 $(".formAddressPurchase [required]").each(function(){ 6234 const t = $(this) 6235 const input = t.val() 6236 const p = t.parent() 6237 if(input === '') { 6238 p.addClass("error") 6239 isValid = false 6240 } 6241 }) 6242 6243 if(!isValid) { 6244 $(this).find("span").removeClass("loading") 6245 return 6246 } 6247 6248 let items = [] 6249 const mainProps = { 6250 6251 "Delivery Date": $("#propDeliveryDate").val(), 6252 "Delivery Time": $("#propDeliveryTime").val() !== '' ? $("#propDeliveryTime").val() : '-' , 6253 "Kota Pengiriman": $("#cities").val(), 6254 "Nama Penerima": $("[data-properties=nama-penerima]").val() !== '' ? $("[data-properties=nama-penerima]").val() : '-' , 6255 "Alamat Penerima": $("[data-properties=alamat-penerima]").val() !== '' ? $("[data-properties=alamat-penerima]").val() : '-' , 6256 "Kodepos": $("#zip").val() !== '' ? $("#zip").val() : '-' , 6257 "Telepon Penerima": $("[data-properties=telepon-penerima").val() !== '' ? $("[data-properties=telepon-penerima").val() : '-' , 6258 6259 6260 "Papan Nama Penerima": $("[data-properties=penerima]").val() !== '' ? $("[data-properties=penerima]").val() : '-' , 6261 "Papan Ucapan": $("[data-properties=ucapan]").val() !== '' ? $("[data-properties=ucapan]").val() : '-' , 6262 "Papan Nama Pengirim": $("[data-properties=pengirim]").val() !== '' ? $("[data-properties=pengirim]").val() : '-' , 6263 "Papan Logo": $("[data-properties=papan-logo]").val() !== '' ? $("[data-properties=papan-logo]").val() : '-' , 6264 "Foto Alamat": $("[data-properties=foto-alamat]").val() !== '' ? $("[data-properties=foto-alamat]").val() : '-' , 6265 6266 6267 "Province": $("#province").val() !== '' ? $("#province").val() : '-' , 6268 "Country": $("#properties-kota-pengiriman-country").val() !== '' ? $("#properties-kota-pengiriman-country").val() : '-' , 6269 "Shipping": $("#properties-shipping").val() !== '' ? $("#properties-shipping").val() : '-' , 6270 "Company": $("[data-properties=company]").val() !== '' ? $("[data-properties=company]").val() : '-' , 6271 "id": $("#properties-time").val() !== '' ? $("#properties-time").val() : '-', 6272 "type": 'product' 6273 } 6274 const props = await propItems() 6275 properties = {...mainProps, ...props }; 6276 const id = $("#productSelect").find('option:selected').val() 6277 console.log(id, 'main ID') 6278 const mainItem = { 6279 id: Number(id), 6280 quantity: 1, 6281 properties 6282 } 6283 items.push(mainItem) 6284 const cardId = $("#itemCards").find(".selected input").val() 6285 const cardItem = { 6286 id: Number(cardId), 6287 quantity: 1, 6288 properties: { "id": $("#properties-time").val() !== '' ? $("#properties-time").val() : '-', type: 'card' } 6289 } 6290 console.log(cardId, 'cardId') 6291 if(cardId) { 6292 items.push(cardItem) 6293 } 6294 const addon = await addons() 6295 if(addon) { 6296 for(let i = 0;
6296 i < addon.length; i++){ 6297 items.push({ 6298 id: addon[i].id, 6299 quantity: addon[i].quantity, 6300 properties: addon[i].properties 6301 }) 6302 } 6303 } 6304 const addItems = await additem(items) 6305 console.log(addItems.items, 'add items') 6306 if(addItems) { 6307 $(this).find("span").removeClass("loading") 6308 disablePopup() 6309 showPopupCart(addItems.items) 6310 6311 localStorage.setItem("items", JSON.stringify(addItems.items)) 6312 } 6313 }) 6314 6315 $("#addtocart-cart .btn").click(async function(){ 6316 const id = $("#productSelect").find('option:selected').val() 6317 const mainProps = { 6318 id: $("#properties-time").val() !== '' ? $("#properties-time").val() : '-', 6319 type: 'product' 6320 } 6321 const props = await propItems() 6322 const properties = { ...mainProps, ...props }; 6323 const items = { 6324 id: Number(id), 6325 quantity: 1, 6326 properties 6327 } 6328 const addItems = await additem(items) 6329 if(addItems) { 6330 showPopupCart(addItems.items) 6331 localStorage.setItem("items", JSON.stringify(addItems)) 6332 } 6333 }) 6334 6335 $(".formAddressPurchase [required]").change(function(){ 6336 const t = $(this) 6337 const p = t.parent() 6338 const v = t.val() 6339 if(v !== '') { 6340 p.removeClass("error") 6341 } 6342 }) 6343 6344 $("#save-card").click(async function(){ 6345 const parent = $(this).parents(".sectionPurchase") 6346 const next = parent.next(".sectionPurchase") 6347 $(this).find("span").addClass("loading") 6348 const card = await saveCard() 6349 console.log(card, 'ssaveCCC') 6350 if(card?.status === 200 || card?.status === 201) { 6351 $(".scanCard").removeClass("hide") 6352 $(this).find("span").removeClass("loading") 6353 parent.addClass("hide") 6354 next.removeClass("hide") 6355 if(next.hasClass("purchaseAddon")) { 6356 $("[data-addon=upsell-all]").click() 6357 console.log("clarity event addons") 6358 window.clarity("event", `${productType} add-ons`) 6359 // Ensure addon items are loaded when entering addon popup 6360 setTimeout(function() { 6361 if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) { 6362 $("[data-addon=upsell-all]").trigger("click") 6363 } 6364 }, 100) 6365 } 6366 if(next.hasClass("purchaseAddress")) { 6367 $("#zip").select2() 6368 } 6369 } 6370 }) 6371 6372 $("#skip-card").click(async function(){ 6373 $("#greetingCard [data-properties]").val("") 6374 $("#properties-photo").val("") 6375 $("#properties-video").val("") 6376 const parent = $(this).parents(".sectionPurchase") 6377 const next = parent.next(".sectionPurchase") 6378 parent.addClass("hide") 6379 next.removeClass("hide") 6380 // $("#itemCards").html("") 6381 removeImage() 6382 removeVideo() 6383 if(next.hasClass("purchaseAddon")) { 6384 $("[data-addon='upsell-all']").click() 6385 console.log("clarity event addons") 6386 window.clarity("event", `${productType} add-ons`) 6387 // Ensure addon items are loaded when entering addon popup 6388 setTimeout(function() { 6389 if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) { 6390 $("[data-addon='upsell-all']").trigger("click") 6391 } 6392 }, 100) 6393 } 6394 if(next.hasClass("purchaseAddress")) { 6395 $("#zip").select2() 6396 } 6397 }) 6398 6399 $("#msgCard").click(async function(){ 6400 $(this).parent().addClass("loading") 6401 let occasion = $(".selected[data-occassion]").data("occassion") 6402 occasion = occasion?.replace("greeting-card-", "") 6403 const { data } = await getFetch(`${host}/api/card/template/occasion?name=${occasion}`); 6404 const d = data?.data 6405 for(let i = 0; i < d.length; i++) { 6406 const num = Math.floor(Math.random() * (d.length - 1 + 1) + 1); 6407 const greeting = d[num]?.Greeting 6408 $(".greetingCard textarea").val(greeting) 6409 $(this).parent().removeClass("loading") 6410 } 6411 $("#save-card").attr("disabled", false) 6412 }) 6413 6414 $(".sectionPurchaseBoard .next-purchase-button").click(function(){ 6415 const parent = $(this).parents(".sectionPurchase") 6416 const next = parent.next(".sectionPurchase") 6417 parent.addClass("hide") 6418 next.removeClass("hide") 6419 }) 6420 6421 $("#editCard").click(function(){ 6422 $(".custom-card").show() 6423 $(".preview-card").hide() 6424 }) 6425 6426 $("#first_name, #last_name").change(function(){ 6427 const v = $(this).val() 6428 const first_name = $("#first_name").val() 6429 const last_name = $("#last_name").val() !== '' ? ' ' + $("#last_name").val() : '' 6430 $("[data-properties=nama-penerima]").val(first_name+last_name) 6431 }) 6432 6433 $("[data-occassion]").click(function(){ 6434 const t = $(this) 6435 const p = t.parents(".sectionPurchase") 6436 // $(".greetingCard").addClass("disabled") 6437 const occasion = t.data("occassion") 6438 loadItemOccasion(t, occasion) 6439 }) 6440 6441 $("#itemCards").delegate(".item-card:not(.item-without-card) label", "click", function(){ 6442 const id = $(this).parent(".item-card").data("id") 6443 const t = $(this).parent(".item-card") 6444 const target = t.find("input") 6445 const v = $('.item-card input[type="radio"]:checked').val(); 6446 $("#itemCards .item-card").removeClass("selected") 6447 t.addClass("selected") 6448 $("#itemCards .item-card").find("input").attr("name", "") 6449 if(target.length > 0) { 6450 target.attr("name", "id[]") 6451 $("#properties-card").val(id) 6452 $(".greetingCard").removeClass("disabled") 6453 $("#skip-card").attr("disabled", false) 6454 } else { 6455 $("#properties-card").val("") 6456 } 6457 }) 6458 6459 $("#itemCards").delegate(".item-without-card label", "click", function(){ 6460 const parent = $(this).parents(".sectionPurchase") 6461 const next = parent.next(".sectionPurchase") 6462 $(".greetingCard").addClass("disabled") 6463 parent.addClass("hide") 6464 next.removeClass("hide") 6465 $("[data-addon=upsell-all]").click() 6466 $("#zip").select2() 6467 }) 6468 6469 $("[data-properties=ucapan]").keyup(function(){ 6470 const v = $(this).val() 6471 const p = $(this).parents(".sectionPurchase") 6472 $(".purchaseAddress").find(".greetingCard textarea").val(v) 6473 if(v.length > 3) { 6474 p.find(".next-purchase-button").attr("disabled", false) 6475 } else { 6476 p.find(".next-purchase-button").attr("disabled", true) 6477 } 6478 }) 6479 6480 $("[data-properties=penerima]").keyup(function(){ 6481 const v = $(this).val() 6482 $(".purchaseAddress").find("[data-properties=penerima]").val(v) 6483 }) 6484 6485 $("[data-properties=pengirim]").keyup(function(){ 6486 const v = $(this).val() 6487 $(".purchaseAddress").find("[data-properties=pengirim]").val(v) 6488 }) 6489 6490 $(document).click(function(e){ 6491 6492 if($(e.target).closest('.wrapperPopupCart').length != 0) return false;
6493 // $('#popupCart').fadeOut('slow'); 6494 // location.reload() 6495 }); 6496 6497 $(".toggleAddonCart").click(function(){ 6498 const p = $(this).parent(".itemAddonCart") 6499 p.toggleClass("open") 6500 }) 6501 6502 $(".btnViewCart").click(function(){ 6503 window.location.href = "https://outerbloom.com/cart"; 6504 }) 6505 6506 $(".btnViewCheckout").click(async function(){ 6507 $(this).find("span").addClass("loading") 6508 let zip = $("#zip").val() 6509 const first_name = $("#first_name").val() 6510 const last_name = $("#last_name").val() 6511 const company = $("#company").val() !== '' ? $("#company").val() : '' 6512 const address1 = $("#delivery_address").val() 6513 const address2 = zip && zip !== '' ? zip?.split(' - ')[1] : '' 6514 zip = zip && zip !== '' ? zip?.split(' - ')[0] : '' 6515 const phone = $("#recipient_number").val() 6516 const city = $("#cities").val() 6517 const province = $("#province").val() 6518 const country = 'Indonesia' 6519 const ver = Date.parse(new Date()) 6520 const params = `checkout[email]=&checkout[shipping_address][first_name]=${first_name}&checkout[shipping_address][last_name]=${last_name}&checkout[shipping_address][company]=${company}&checkout[shipping_address][address1]=${address1}&checkout[shipping_address][address2]=${address2}&checkout[shipping_address][city]=${city}&checkout[shipping_address][country]=${country}&checkout[shipping_address][province]=${province}&checkout[shipping_address][zip]=${zip}&checkout[shipping_address][phone]=${phone}&v=${ver}` 6521 6522 const clear = await fetch(`/cart/clear.js`, {method: 'POST'}) 6523 if(clear.status === 200) { 6524 const savedItem = window.localStorage.getItem("items"); 6525 const items = JSON.parse(savedItem) 6526 const addItems = await additem(items) 6527 console.log(addItems, 'new addItems') 6528 if(addItems) { 6529 window.location.href = `https://outerbloom.com/checkout?${params}`; 6530 } 6531 } 6532 }) 6533 6534 $(".btnContinueShopping").click(function(){ 6535 window.location.href = "https://outerbloom.com/"; 6536 }) 6537 6538 if (isIOS) { 6539 $(".empty-state-card").click(function(){ 6540 $("#input-foto").trigger("click") 6541 }) 6542 $(".btn-upload-image").click(function(){ 6543 $("#input-foto").trigger("click") 6544 }) 6545 $("[for=input-video]").click(function(){ 6546 $("#input-video").trigger("click") 6547 }) 6548 $(".btn-upload-papan").click(function(){ 6549 $("#logoPapan").trigger("click") 6550 }) 6551 } 6552 6553 $("[data-properties]").each(function(){ 6554 const select = $(this).parents(".form-group").find("select") 6555 $(this).change(function(){ 6556 const name = $(this).data("properties") 6557 const v = $(this).val() 6558 if (name == 'telepon-penerima') { 6559 let phone = v.replace(/[^0-9]/g, '') 6560 $(this).val(phone); 6561 $("#properties-telepon-penerima").val(phone) 6562 $('.iti__search-input').val('-') 6563 } else { 6564 $("#properties-" + name).val(v) 6565 } 6566 }) 6567 select.on("change", function(){ 6568 const name = $(this).data("properties") 6569 const v = $(this).val() 6570 $("#properties-" + name).val(v) 6571 }) 6572 }) 6573 6574 $("#show_note").click(function(){ 6575 nameq = $("#properties-nama-penerima").val() 6576 dear = $("#properties-kartu-nama-penerima").val() 6577 card = $("[data-properties=ucapan]").val() 6578 sender = $("#properties-kartu-nama-pengirim").val() 6579 photo = $("#properties-photo").val() 6580 video = $("#properties-video").val() 6581 updateCard(nameq, dear, card, sender, photo, video, status) 6582 }) 6583 6584 $(".remove-image").click(function(e){ 6585 e.preventDefault() 6586 $(this).find("img").show() 6587 removeImage() 6588 }) 6589 6590 $(".remove-media").click(function(e){ 6591 e.preventDefault() 6592 $(this).find("img").show() 6593 removeVideo() 6594 }) 6595 6596 6597 6598 $("[data-delivery_method]").click(function(e){ 6599 e.preventDefault() 6600 const t = $(this) 6601 const data = t.data("delivery_method") 6602 $("[data-delivery_method]").removeClass("selected") 6603 t.addClass("selected") 6604 $("#cities").val("") 6605 $("#properties-delivery-date").val("-") 6606 $("#deliveryDate button").removeClass("selected") 6607 $("#full-date").val("Full Calendar â") 6608 $("#propDeliveryDate").val("") 6609 const step3 = $("#step-3") 6610 if(data.match('PickUp')) { 6611 $(".selfpickup-point").show() 6612 step3.find("[data-finished=false]").hide() 6613 $("#panel-4").hide() 6614 step3.find("[data-finished=true]").show() 6615 $("#cities").attr("required", false) 6616 $("#form-group-city").hide() 6617 $("#row-delivery-time").hide() 6618 $("#propDeliveryTime, #properties-delivery-time, #properties-nama-penerima, #properties-alamat-penerima, #properties-kodepos, #properties-kodepos, #properties-telepon-penerima").val("-") 6619 $("#propDeliveryTime").attr("required", false) 6620 // $("#deliveryDate").find("button:first-child").addClass("stop") 6621 $(".form-selfpickup").show() 6622 $(".form-delivery").hide() 6623 $(".form-delivery").find("input, textarea, select").val("") 6624 $(".form-delivery").find("input, textarea, select").attr("required", false) 6625 $("#properties-shipping").val("0") 6626 $("#noteDeliveryDate").hide() 6627 $(".form-delivery .form-control").attr("required", false) 6628 $("#stepNav4").hide() 6629 6630 $("#deliveryDate").find("button:nth-child(1)").addClass("stop") 6631 6632 6633 6634 if(timeOfDay >= 16.01){ 6635 $("#deliveryDate").find("button:nth-child(2)").addClass("stop") 6636 } 6637 } else { 6638 6639 6640 $("#deliveryDate").find("button:nth-child(1)").removeClass("stop") 6641 step3.find("[data-finished=false]").show() 6642 $("#panel-4").show() 6643 step3.find("[data-finished=true]").hide() 6644 $("#cities").attr("required", true) 6645 $(".selfpickup-point").hide() 6646 $("#form-group-city").show() 6647 $("#cities").val('').trigger('change'); 6648 $("#properties-kota-pengiriman").val("-") 6649 6650 $("#row-delivery-date, #row-delivery-time").show() 6651 $("#propDeliveryDate, #propDeliveryTime").attr("required", true) 6652 $("#deliveryDate").find("button").removeClass("stop") 6653 $(".form-selfpickup").hide() 6654 $(".form-delivery").show() 6655 $(".form-delivery").find("input, textarea, select").attr("required", true)
6656 $(".form-delivery [data-properties]").attr("readonly", false) 6657 $("#properties-kodepos").val("-") 6658 $("#properties-alamat-penerima").val("-") 6659 $(".form-delivery .form-control").attr("required", true) 6660 $(this).parents(".setup-content").attr("id", "step-1") 6661 6662 $("#stepNav4").show() 6663 } 6664 }) 6665 6666 $("[name=selfpickup]").click(function(){ 6667 const p = $(this).parents(".row-pickup") 6668 const pickupCity = $("input[name='selfpickup']:checked").val(); 6669 const pickupAddress = $("input[name='selfpickup']:checked").data("address"); 6670 const pickupZip = $("input[name='selfpickup']:checked").data("zip"); 6671 6672 $(".row-pickup").removeClass("selected") 6673 p.addClass("selected") 6674 6675 $("#properties-kota-pengiriman").val(pickupCity) 6676 $("#province").val("Jakarta") 6677 $("#properties-alamat-penerima").val(pickupAddress) 6678 $("#properties-kodepos").val(pickupZip) 6679 }) 6680 6681 $("#cities").change(function(e){ 6682 e.preventDefault() 6683 $(this).parent(".row").find("p.error").remove() 6684 $("#full-date").val("Full Calendar") 6685 $("#deliveryDate, #deliveryDateFull label ").show() 6686 $("#deliveryDateFull").removeClass("filled") 6687 $(".btnChangeDeliveryDate").addClass("hide") 6688 $("#full-date").prop('disabled', false); 6689 $("#stepNav2, #stepNav3, #stepNav4").removeClass("btn-success") 6690 $("#stepNav2, #stepNav3, #stepNav4").find("a").attr("disabled", true) 6691 const step3 = $("#step-3") 6692 $("#cityNote").remove() 6693 $("#noteDeliveryDate").hide() 6694 $("#noteDeliveryDate").empty() 6695 let v = $(this).val() 6696 let v2 = $('option:selected', this).attr('data-city'); 6697 let v3 = $('option:selected', this).attr('data-province'); 6698 let price = $('option:selected', this).attr('data-price'); 6699 $("#country").val(v) 6700 $("#properties-kota-pengiriman").val(v) 6701 $("#properties-shipping").val(price) 6702 $("#deliveryDate button, #deliveryTime button, .calendarseasonal .button").removeClass("selected") 6703 $("#properties-delivery-date, #properties-delivery-time").val("-") 6704 $("#propDeliveryDate, #propDeliveryTime").val("") 6705 let note = $('option:selected', this).attr('data-note'); 6706 if(v === 'Kota Lainnya') { 6707 $("#noteDeliveryDate").show() 6708 $("#noteDeliveryDate").text("Order akan segera dikirim. Estimasi tanggal diterima akan disesuaikan dengan waktu pengiriman oleh pihak ekspedisi ke lokasi Anda.") 6709 $("#zip").attr("required", false) 6710 $("#zip").hide() 6711 $("#propDeliveryDate, #propDeliveryTime").attr("required", false) 6712 $("#propDeliveryDate, #properties-delivery-date, #propDeliveryTime, #properties-delivery-time").val("-") 6713 $("#row-delivery-date, #row-delivery-time").hide() 6714 $("#properties-shipping").val("") 6715 // $(this).parents(".setup-content").attr("id", "step-2") 6716 6717 } else { 6718 $("#noteDeliveryDate").hide() 6719 $("#zip").attr("required", true) 6720 $("#zip").show() 6721 $("#row-delivery-date, #row-delivery-time").show() 6722 $("#propDeliveryDate, #propDeliveryTime").attr("required", true) 6723 $("#deliveryDate").find("button").removeClass("stop") 6724 // $(this).parents(".setup-content").attr("id", "step-1") 6725 6726 } 6727 6728 6729 6730 // if(v !== 'Jakarta') { 6731 // $("[data-type=upsell]").hide() 6732 // } else { 6733 // $("[data-type=upsell]").show() 6734 // } 6735 // $('.collection-addons')[0].swiper.update(); 6736 6737 6738 getProvince(v) 6739 $("#zip").html(`<option value="">Choose Postal Code</option>`) 6740 renderZip(v, v2, v3) 6741 6742 disabledSameDay() 6743 6744 6745 if(v !== 'Jakarta' && v !== 'Depok' && v !== 'Bekasi' && v !== 'Tangerang') { 6746 6747 $("#cardOccasion, #navAddon, .collection-addons").hide() 6748 6749 $("[data-addon=giftcard]").show() 6750 $("[data-addon=giftcard]").click() 6751 $("#itemAddons").show() 6752 $("#flower-step").addClass("nonjadetabek") 6753 } else { 6754 $("#cardOccasion, #navAddon, .collection-addons").show() 6755 $("[data-addon=all]").click() 6756 $("#flower-step").removeClass("nonjadetabek") 6757 } 6758 6759 if(v !== '') { 6760 $("#personalizeBtn .btn").attr("disabled", false) 6761 } else { 6762 $("#personalizeBtn .btn").attr("disabled", true) 6763 } 6764 6765 }) 6766 6767 $("#zip").change(function(e){ 6768 let v = $(this).val() 6769 var city = $("#cities").find('option:selected'); 6770 $("#properties-kodepos").val(v) 6771 if(city === 'Kota Lainnya') { 6772 $(this).attr("required", true) 6773 $("#recipient-address").val("") 6774 } 6775 }) 6776 6777 6778 var minDate = +7 6779 6780 6781 6782 $("#full-date").datepicker({ 6783 minDate, 6784 dateFormat: 'Mdd_yy', //Nop22_2021, 6785 6786 beforeShowDay: disabledays, 6787 6788 onSelect: function (date) { 6789 $("#deliveryDate, #deliveryDateFull label ").hide() 6790 $("#deliveryDateFull").addClass("filled") 6791 $(".btnChangeDeliveryDate").removeClass("hide") 6792 $("#full-date").prop('disabled', true); 6793 $('#propDeliveryDate, #properties-delivery-date').val('Kirim_'+date); 6794 $(".date-full").addClass("selected") 6795 $(".date-single, .calendar-group").removeClass("selected") 6796 $("#propDeliveryTime").val('') 6797 $("#properties-delivery-time").val('-') 6798 $(".time-single").removeClass("selected") 6799 6800 6801 } 6802 }); 6803 6804 $(".btnChangeDeliveryDate").click(function(){ 6805 $("#deliveryDate, #deliveryDateFull label ").show() 6806 $("#deliveryDateFull").removeClass("filled") 6807 $(".btnChangeDeliveryDate").addClass("hide") 6808 $("#full-date").prop('disabled', false); 6809 }) 6810 6811 $("#deliveryDate").delegate(".calendarbutton:not(.date-full)", "click", function(e){ 6812 e.preventDefault() 6813 $(this).parents("#row-delivery-date").find("p.error").remove() 6814 const fulldate = $(this).data("fulldate") 6815 const day = $(this).data("day") 6816 const date = $(this).data("date")
6817 const month = $(this).data("month") 6818 const year = $(this).data("year") 6819 const off_pagi = $(this).data("offpagi") 6820 const off_siang = $(this).data("offsiang") 6821 const off_Malam = $(this).data("offMalam") 6822 $(".calendarbutton").removeClass("selected") 6823 $(this).addClass("selected") 6824 $("#propDeliveryDate, #properties-delivery-date").val(`Kirim_${month}${date}_${year}`) 6825 $("#propDeliveryTime").val('') 6826 $("#properties-delivery-time").val('-') 6827 $(".calendarbutton2").removeClass("selected") 6828 $("#full-date").val("Full Calendar") 6829 6830 6831 if(off_pagi && timeOfDay > off_pagi) { 6832 $("[data-time=Morning]").attr("disabled", true) 6833 } else { 6834 $("[data-time=Morning]").attr("disabled", false) 6835 } 6836 if(off_siang && timeOfDay > off_siang) { 6837 $("[data-time=Afternoon]").attr("disabled", true) 6838 } else { 6839 $("[data-time=Afternoon]").attr("disabled", false) 6840 } 6841 6842 6843 6844 }) 6845 6846 if(today === 14 && timeOfDay > 17.00) { 6847 $("#deliveryDate button:first-child").attr("disabled", true) 6848 } 6849 6850 $("#deliveryTime").delegate(".calendarbutton2", "click", function(e){ 6851 e.preventDefault() 6852 const time = $(this).data("time") 6853 const date = $("#propDeliveryDate").val() 6854 if(date == '') { 6855 return alert('Silakan pilih tanggal terlebih dahulu') 6856 } 6857 $(".calendarbutton2").removeClass("selected") 6858 $(this).addClass("selected") 6859 $("#propDeliveryTime, #properties-delivery-time").val(`KirimJam_${date.replace('Kirim_','')}_${time}`) 6860 }) 6861 6862 $('textarea.has-limit, input.has-limit').keyup(function () { 6863 max = this.getAttribute("maxlength"); 6864 let len = $(this).val().length; 6865 let limit = $(this).siblings(".limit"); 6866 if (len > max) { 6867 alert('you have reached the limit'); 6868 } else { 6869 limit.text(`${len}/${max}`); 6870 } 6871 }); 6872 6873 $("#button-action-step .btn").click(function(){ 6874 $(this).find("span").text("Processing..."); 6875 }); 6876 6877 $(".finishBtn").on('click', function() { 6878 $(this).addClass("is-adding"); 6879 // $(this).click(); 6880 }); 6881 6882 $('.setup-panel .nav-item a.btn-success').trigger('click'); 6883 6884 $("#button-action .btn").click(function(){ 6885 $("#flower-step").addClass("block"); 6886 $("#button-action").hide(); 6887 }); 6888 6889 $(".close-how-order").click(function(){ 6890 $("#flower-step").removeClass("block"); 6891 $("#button-action").show(); 6892 }); 6893 6894 $("#input-foto, #input-video").change(function(e){ 6895 readURL(this); 6896 }); 6897 6898 $("#logoPapan").change(function(){ 6899 readURLPapan(this); 6900 }); 6901 6902 $("#address-upload").change(async function(){ 6903 const upload_address = await readURLAddress(this) 6904 if(upload_address) { 6905 const url = upload_address.url 6906 $(".props-address-upload").val(url) 6907 $(".form-address").addClass("address-uploaded") 6908 $(".form-address-upload").addClass("uploaded") 6909 6910 $(this).parents(".form-group").siblings(".form-group").find("[required]").attr("required", false) 6911 } 6912 }) 6913 6914 $(".address-manualy").click(function(){ 6915 $(".form-address-upload").removeClass("uploaded"); 6916 $(".photo-address").hide(); 6917 $(".form-address").removeClass("address-uploaded") 6918 $("#formAddressPurchase").find(".form-control").attr("required", true) 6919 }); 6920 6921 $(".case-video-preview").delegate(".replace-video", "click", function(){ 6922 $("#input-video").trigger("click") 6923 }) 6924 6925 $('.date-single').click(function(e) { 6926 e.preventDefault(); 6927 $('.date-single').removeClass('selected'); 6928 $('#full-date').removeClass('selected'); 6929 $(this).addClass('selected'); 6930 $('#full-date').html('Full' + '<br/>' + 'Calendar'); 6931 }); 6932 $('#full-date').click(function(e){ 6933 e.preventDefault(); 6934 $('.date-single').removeClass('selected'); 6935 $(this).addClass('selected'); 6936 }); 6937 6938 // $("tr").each(function(){ 6939 // if($(this).text().match('SKU')) { 6940 // $(".sku-product").html($(this).parents("table").html()) 6941 // } 6942 // }) 6943 6944 $("#product-image").scroll(function(){ 6945 $(".desc-add").each(function(){ 6946 const img = $(this).find("img") 6947 const src = img.data("src") 6948 img.attr("src", src) 6949 }) 6950 }) 6951 6952 $(".product-fixed").hide() 6953 6954 let target = $("#personalizeBtn") 6955 6956 6957 $(".product-meta").scroll(function() { 6958 if ($(window).scrollTop() >= target.offset().top ) { 6959 $(".product-fixed").addClass("show") 6960 } else { 6961 $(".product-fixed").removeClass("show") 6962 } 6963 }); 6964 6965 $(window).scroll(function() { 6966 if ($(window).scrollTop() >= target.offset().top ) { 6967 $(".product-fixed").addClass("show") 6968 } else { 6969 $(".product-fixed").removeClass("show") 6970 } 6971 }); 6972 }); 6973 </script>
6973 6974 6975
6975<script> 6976 // 6977 </script>
6977 6978 6979
6979<script> 6980 $(document).ready(function(){ 6981 $('table tr td').each(function(){ 6982 var texto = $(this).text(); 6983 var nextto = $(this).next("td"); 6984 var sku = $("#data-sku").val() 6985 if(texto == 'SKU'){ 6986 nextto.text(sku) 6987 } 6988 }); 6989 6990 $(".stamped-summary-actions-newquestion").text("Tulis Pertanyaan"); 6991 $(".stamped-summary-actions-newreview").text("Tulis Review"); 6992 $("#tab-questions").text("Pertanyaan"); 6993 6994 $(".freeship .icon").click(function(){ 6995 $(".fs-content").slideToggle(); 6996 $(this).parents(".freeship").toggleClass("expand"); 6997 }); 6998 6999 var $easyzoom = $('.easyzoom').easyZoom(); 7000 // Setup thumbnails example 7001 var api1 = $easyzoom.filter('.easyzoom--with-thumbnails').data('easyZoom'); 7002 $('.thumbnails').on('click', 'a', function(e) { 7003 var $this = $(this); 7004 e.preventDefault(); 7005 // Use EasyZoom's `swap` method 7006 api1.swap($this.data('standard'), $this.attr('href')); 7007 }); 7008 7009 $('#playerID').click(function(){ 7010 var videoURL = $('#VdoID').attr('src'), 7011 dataplay = $('#VdoID').attr('data-play'); 7012 7013 //for check autoplay 7014 //if not set autoplay=1 7015 if(dataplay == 0 ){ 7016 $('#VdoID').attr('src',videoURL+'?autoplay=1'); 7017 $('#VdoID').attr('data-play',1); 7018 } 7019 else{ 7020 var videoURL = $('#VdoID').attr('src'); 7021 videoURL = videoURL.replace("?autoplay=1", ""); 7022 $('#VdoID').prop('src',''); 7023 $('#VdoID').prop('src',videoURL); 7024 7025 $('#VdoID').attr('data-play',0); 7026 } 7027 7028 }); 7029 7030 $(".product-photo-thumb-video").click(function(e){ 7031 e.preventDefault(); 7032 7033 var newEmbed = $(this).attr('href'); 7034 $("#featured-image-product").addClass("img-video"); 7035 $("#ProductPhotoImg").hide(); 7036 $("#featured-image-product .video").show(); 7037 $("#featured-image-product iframe").attr('src', newEmbed); 7038 $("#VdoID")[0].src += "&autoplay=1"; 7039 }); 7040 $(".product-single__thumbnail").click(function(evt){ 7041 evt.preventDefault(); 7042 $("#featured-image-product").removeClass("img-video"); 7043 $("#ProductPhotoImg").show(); 7044 $("#featured-image-product .video").hide(); 7045 $("#featured-image-product iframe").attr('src', ''); 7046 }); 7047 7048 if($('#product-meta .short-desc > div').length >= 1){ 7049 //console.log('div detected') 7050 var replacer = $('#product-meta .short-desc > div').contents(); 7051 $('#product-meta .short-desc > div').replaceWith(replacer); 7052 7053 var cAssured = $('.c-assured').detach(); 7054 cAssured.insertAfter('.meta-sds .stock-info'); 7055 } 7056 7057 7058 7059 $(".heading-toggle").click(function(){ 7060 $(this).parent().toggleClass("open") 7061 7062 }); 7063 }); 7064 </script>
7064 7065 7066 7067
7067<script type="application/json" id="ProductJson-Product"> 7068 7069 {"id":8144957800663,"title":"KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya","handle":"blossom-shine","description":"\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eKVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari."} 7070 </script>
7070 7071 7072
7072<script type="application/json" id="VariantJson-Product"> 7073 [ 7074 7075 { 7076 "incoming": false, 7077 "next_incoming_date": null 7078 } 7079 7080 ] 7081 </script>
7081 7082 7083 7084 7085 7086 </div> 7087 7088 7089
7089<script src="//outerbloom.com/cdn/shopifycloud/storefront/assets/themes_support/option_selection-b017cd28.js" type="text/javascript"></script>
7089 7090 <style> 7091 .stamped-review-header-title, 7092 .stamped-review-header .author, 7093 .stamped-review-content-body, 7094 .stamped-sort-select, 7095 .stamped-review-header .verified-badge[data-type=buyer]:after, 7096 .stamped-review-header-byline, 7097 .stamped-review-reply-body {font-size: 14px!important;font-family: 'Barlow',sans-serif!important;} 7098 .stamped-review {margin-bottom: 0;} 7099 .stamped-review-body {padding-left: 65px;} 7100 .stamped-review:first-child {padding-top: 25px;} 7101 .stamped-review-content {clear: none;} 7102 .stamped-review-reply {margin: 15px 0 0 65px;background: #f2f2f2;border-left: none;} 7103 .stamped-review-reply-body {padding-left: 65px;} 7104 .stamped-review-header .author {text-transform: capitalize;} 7105 .stamped-questions .stamped-review-content {padding-left: 65px;} 7106 7107 .stamped-pagination {margin: 20px 0 0;} 7108 .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;} 7109 .stamped-pagination li a {color: #121212;padding: 13px 18px;vertical-align: middle;display: block;} 7110 .stamped-pagination li.active a {background-color: #ddd;font-weight: 400;} 7111 .stamped-pagination li:hover a {background: #ddd;} 7112 .stamped-pagination .next {border-right: 1px solid #ccc;} 7113 .stamped-pagination li:first-child {border-top-left-radius: 5px;border-bottom-left-radius: 5px;} 7114 .stamped-pagination li:last-child {border-top-right-radius: 5px;border-bottom-right-radius: 5px;} 7115 7116 #stamped-pagination-question span.page {display: inline-block;border: 1px solid #ccc;width: 47px;} 7117 #stamped-pagination-question span {font-size: 14px;} 7118 #stamped-pagination-question .page.active {padding: 12px;font-weight: 400;background: #ddd;} 7119 #stamped-pagination-question a, #stamped-pagination-question .page.active {color: #121212;padding: 13px 18px;vertical-align: middle;display: inline-block;} 7120 .stamped-pagination-deco {color: #121212;padding: 13px 18px;width: 47px;vertical-align: middle;display: inline-block;border: 1px solid #ccc;padding: 12px;} 7121 .stamped-pagination-prev, .stamped-pagination-next {position: inherit;} 7122 .stamped-pagination-prev a, .stamped-pagination-next a {width: auto!important;border: 1px solid #ccc;} 7123 7124 @media (max-width: 480px){ 7125 .stamped-review-reply {margin-left: 0!important;} 7126 select.stamped-sort-select {font-size: 13px!important;} 7127 } 7128 7129 #product-reviews .stamped-summary-ratings, #product-reviews .stamped-summary-actions, .stamped-content { 7130 display: block !important; 7131 } 7132 </style> 7133
7133<script> 7134 var selectCallback = function(variant, selector) { 7135 timber.productPage({ 7136 money_format: "Rp {{amount_no_decimals}}", 7137 variant: variant, 7138 selector: selector 7139 }); 7140 }; 7141 7142 jQuery(function($) { 7143 new Shopify.OptionSelectors('productSelect', { 7144 product: 7145 7146 7147 7148 7149 7150 7151 7152 {"id":8144957800663,"title":"KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya","handle":"blossom-shine","description":"\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eKVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari."}, 7153 onVariantSelected: selectCallback, 7154 enableHistoryState: true 7155 }); 7156 7157 // Add label if only one product option and it isn't 'Title'. Could be 'Size'. 7158 7159 7160 // Hide selectors if we only have 1 variant and its title contains 'Default'. 7161 7162 $('.selector-wrapper').hide(); 7163 7164 }); 7165 </script>
7165 7166 7167 7168 7169
7169<script type="application/ld+json"> 7170 { 7171 "@context": "http://schema.org", 7172 "@type": "Product", 7173 "offers": { 7174 "@type": "Offer", 7175 "availability":"https://schema.org/InStock", 7176 "price": 835000, 7177 "priceValidUntil": "05-10-2025", 7178 "priceCurrency": "IDR", 7179 "url": "https://kvtotomatoa.com/" 7180 }, 7181 "brand": { 7182 "@type": "Brand", 7183 "name": "Outerbloom Florist" 7184 }, 7185 "sku": "8144957800663", 7186 "gtin13": "Jawa", 7187 "name": "KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya", 7188 "description": "KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari.", 7189 "category": "KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari.", 7190 "url": "https://kvtotomatoa.com/", 7191 "image": { 7192 "@type": "ImageObject", 7193 "url": "https://outerbloom.com/cdn/shop/files/Blossom-Shine-WM_small.jpg?v=1695788426", 7194 "image": "https://outerbloom.com/cdn/shop/files/Blossom-Shine-WM_small.jpg?v=1695788426", 7195 "name": "KVTOTO : Situs Login Pasaran Togel Online Terlengkap & Terpercaya", 7196 "width": 1024, 7197 "height": 1024 7198 } 7199 } 7200 </script>
7200 7201 7202 7203 7204 7205 7206
7206<script id="bss-ltap-hide-price" type="text/javascript" > 7207 !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)}))}
7207)),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)}
7207)),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()}
7207if("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)}
7207if(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");
7207c&&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
7207-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");
7207i&&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
7207--product_buttons");e&&t.push(e)}if(s=c.closest(".product-page--cart-form-block"),s){let e=s.querySelector(".add-to-cart");e&&t.push(e)}if(s=c.closest(".price__sale"),s){let e=s.querySelector(".price-item--regular");e&&t.push(e)}if(s=c.closest(".product-item-v1"),s){let e=s.querySelector(".price-old"),o=s.querySelector(".product-icon-action");e&&t.push(e),o&&t.push(o)}if(s=c.closest(".detail-info > .relative"),s){let e=s.querySelector("#AddToCartForm > .btn-action"),o=s.querySelector('div.shopify-payment-button[data-shopify="payment-button"]'),r=s.querySelector(".product-price > del");e&&t.push(e),o&&t.push(o),r&&t.push(r)}if(s=c.closest(".product-details"),s){let e=s.querySelector(".product-block--form>.product-form--regular");e&&"eurosafetysystems.myshopify.com"!==o&&e.remove();let t=s.querySelector(".button-cart");t&&t.remove()}if("annabellenoeldesigns-com.myshopify.com"==o&&(s=c.closest(".product-block-list__item .card__section"),s)){let e=s.querySelector("#MULTIVARIANTS_APP_SECTION_PLACE .multivariants_block_qty_box");e&&e.remove();let t=s.querySelector("#MULTIVARIANTS_APP_SECTION_PLACE .multivariants_block_last_holder .multivariants_block_prc_holder");t&&t.remove();let o=s.querySelector("#MULTIVARIANTS_APP_SECTION_PLACE #multivariants_add_to_cart_button_h");o&&o.remove();let r=s.querySelector("#MULTIVARIANTS_APP_SECTION_PLACE #multivariants_block_subtotal_h");r&&r.remove()}if("fedua-b2b.myshopify.com"==o){if(s=c.closest(".gp-product-detail .container"),s){let e=s.querySelector(".gp-product-main-button button[type='submit']");e&&e.remove();let t=s.querySelector(".cbb-also-bought-add-to-cart-button");t&&t.remove();let o=s.querySelector(".cbb-also-bought-product-price-container");o&&o.remove()}if(s=c.closest(".gp-product-widget .product-card-grid"),s){let e=s.querySelector(".product-buttons .btn-quick-view ");e&&e.remove()}}if(s=c.closest(".product--price-container"),s){let e=s.querySelectorAll(".product--price-wrapper > a");e.length&&e.forEach(e=>e.remove())}if("linis-bites-b2b.myshopify.com"==window.location.host&&c.querySelector("[bss-customize-ltsp-message]")){let e=c.closest(".price .price__container");if(e){let o=e.querySelector(".unit-price.caption");o&&t.push(o)}}if(s=c.closest(".product-price--wrapper"),s){let e=s.querySelector(".product-price--compare");e&&e.remove()}if(s=c.closest(".price__pricing-group"),s){let e=s.querySelector(".price-item.price-item--regular[data-regular-price]");e&&(e.classList.remove("price-item"),e.classList.remove("price-item--regular"))}if(l.forEach((function(e){c.closest(e)&&t.push(c.closest(e))})),s=c.closest(".product-page-info"),s){let e=s.querySelector("[data-js-footbar-product-limit]");e&&t.push(e)}if(s=c.closest(".product-wrap"),s){let e=s.querySelector(".purchase-details button.button--add-to-cart"),o=s.querySelector(".product-action");if(e&&t.push(e),o&&t.push(o),window.Shopify&&"dermafirmusa.myshopify.com"===window.Shopify.shop){let e=s.querySelector(".price.sale");e&&t.push(e)}}if(s=c.closest(".seven.columns.omega"),s){let e=s.querySelector(".purchase-details__buttons button.shopify-payment-button__button ");e&&t.push(e)}if(s=c.closest("#collectionPr"),s){let e=s.querySelectorAll("#PageContainer .collection .btn.add-to-cart");e.length&&e.forEach(e=>{t.push(e)})}if(s=c.closest(".grid.product-single"),s){let e=s.querySelector('#PageContainer .wrap-product-info button[type="submit"].btn.btn1.pr_btn.addtocart_js');e&&t.push(e)}if(s=c.closest(".gryffeditor"),s){let e=s.querySelector(".module-wrap .gf_add-to-cart.product-form-product-template");e&&t.push(e)}if(s=c.closest(".product-single .product-single__meta"),s){let e=s.querySelector('.product-form__item button[name="add"].product-form__cart-submit');e&&t.push(e)}if(s=c.closest(".shopify-product-form"),s){let e=s.querySelector("#product-price");e&&t.push(e)}if(s=c.closest(".product-item-price"),s){let e=s.querySelector(".money");e&&t.push(e)}if(s=c.closest('main#main[role="main"]'),s){let e=s.querySelector("div.atc-bar");e&&t.push(e)}if(s=c.closest("#CartDrawer"),s){let e=s.querySelector("#CartDrawer-CartItems .cart-item .cart-item__details dl .product-option");e&&t.push(e);let o=s.querySelector("#CartDrawer-CartItems .cart-item .cart-item__totals .cart-item__price-wrapper");o&&t.push(o);let r=s.querySelector("#CartDrawer-CartItems .cart-item .cart-item__quantity");r&&t.push(r);let c=s.querySelector(".drawer__footer");c&&t.push(c)}if(s=c.closest("#main-cart-items"),s){let e=s.querySelector(".cart-item .cart-item__details dl .product-option");e&&t.push(e);let o=s.querySelector(".cart-item .cart-item__quantity .cart-item__quantity-wrapper");o&&t.push(o);let r=s.querySelector(".cart-item .cart-item__totals.right.small-hide .cart-item__price-wrapper");r&&t.push(r)}if(s=c.closest("#main-cart-footer"),s){let e=s.querySelector(".cart__footer");e&&t.push(e)}if(s=c.closest(".product-single__meta"),s&&window.Shopify&&("asiadirectfurniture.mysh
7207opify.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");
7207e.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=
7207o.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");
7207if(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();
7207let 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()}]); 7208 </script>
7208 7209 7210 </main> 7211 7212 <div id="shopify-section-newsletter" class="shopify-section"><br> 7213 <style> 7214 #shopify-section-newsletter { 7215 background-attachment: fixed; 7216 margin-bottom: 0; 7217 } 7218 input:-webkit-autofill, 7219 input:-webkit-autofill:hover, 7220 input:-webkit-autofill:active, 7221 input:-webkit-autofill:focus { 7222 -webkit-box-shadow:0 0 0 50px white inset; 7223 -webkit-text-fill-color: #ffffff; 7224 } 7225 .section-newsletter { 7226 max-width: 800px; 7227 margin: auto; 7228 padding: 50px 0; 7229 } 7230 .section-newsletter h2 { 7231 font-weight: 700; 7232 font-size: 24px; 7233 } 7234 .section-newsletter input[type="email"] { 7235 width: 100%; 7236 text-align: center; 7237 border: none; 7238 border-bottom: 1px solid #ffffff; 7239 font-size: 16px; 7240 color: #757575; 7241 background-color: #eeeeee; 7242 } 7243 .section-newsletter .row label { 7244 font-size: 14px; 7245 cursor: pointer; 7246 } 7247 .section-newsletter .radio-inline input { 7248 width: auto; 7249 } 7250 .section-newsletter .btn { 7251 width: 130px; 7252 border: 1px solid #ffffff; 7253 box-shadow: none; 7254 font-size: 16px; 7255 font-weight: 500; 7256 text-transform: uppercase; 7257 } 7258 .section-newsletter form { 7259 margin: 30px 0 60px; 7260 } 7261 .section-newsletter input[type="radio"] { 7262 position: absolute; 7263 width: 1px; 7264 height: 1px; 7265 } 7266 .section-newsletter [type="radio"]:checked + label, .section-newsletter [type="radio"]:not(:checked) + label { 7267 position: relative; 7268 padding-left: 28px; 7269 cursor: pointer; 7270 line-height: 20px; 7271 display: inline-block; 7272 color: #666; 7273 } 7274 .section-newsletter [type="radio"]:checked + label:before, .section-newsletter [type="radio"]:not(:checked) + label:before { 7275 content: ''; 7276 position: absolute; 7277 left: 0; 7278 top: 0; 7279 width: 18px; 7280 height: 18px; 7281 border: 1px solid #ddd; 7282 border-radius: 100%; 7283 background: #fff; 7284 } 7285 .section-newsletter [type="radio"]:checked + label:after, .section-newsletter [type="radio"]:not(:checked) + label:after { 7286 content: ''; 7287 width: 12px; 7288 height: 12px; 7289 background: #ffffff; 7290 position: absolute; 7291 top: 3px; 7292 left: 3px; 7293 border-radius: 100%; 7294 -webkit-transition: all 0.2s ease; 7295 transition: all 0.2s ease; 7296 } 7297 .section-newsletter [type="radio"]:not(:checked) + label:after { 7298 opacity: 0; 7299 -webkit-transform: scale(0); 7300 transform: scale(0); 7301 } 7302 .opt-newsletter {display:none;} 7303 .footer-newsletter p, .footer-newsletter p a { 7304 color: #757575; 7305 } 7306 @media (max-width:991px){ 7307 .section-newsletter h2 { 7308 font-size: 32px; 7309 } 7310 .section-newsletter input { 7311 width: 300px; 7312 font-size: 14px; 7313 } 7314 .section-newsletter { 7315 padding: 50px 20px; 7316 } 7317 } 7318 @media (max-width: 480px){ 7319 .section-newsletter input[type="email"] {font-size: 16px;} 7320 } 7321 </style> 7322 <style> 7323 .icon-img-footer { 7324 width: 80px; 7325 padding: 0px 5px; 7326 } 7327 @media (min-width: 768px) { 7328 .icon-img-footer { 7329 width: 120px; 7330 } 7331 } 7332 @media (min-width: 992px) { 7333 .icon-img-footer { 7334 width: 120px; 7335 } 7336 } 7337 7338 .button-login-daftar { 7339 display: grid; 7340 grid-template-columns: repeat(2, 1fr); 7341 font-weight: 700; 7342 } 7343 .button-login-daftar a { 7344 text-align: center; 7345 } 7346 .login, 7347 .register { 7348 color: #ff0000; 7349 padding: 15px 10px; 7350 font-size: 23px; 7351 } 7352 .login, 7353 .login-button { 7354 background: linear-gradient(to bottom,#000000 0,#000000 100%); 7355 border: 2px solid #ff0000; 7356 } 7357 .register, 7358 .register-button { 7359 background: linear-gradient(to bottom,#000000 0,#000000 100%); 7360 border: 2px solid #ff0000; 7361 } 7362 7363 7364 7365 </style> 7366 7367 <!-- wp:html --> 7368
7368<script> 7369 document.addEventListener('DOMContentLoaded', 7370 function(){const faqItems=document.querySelectorAll('.faq-item'); 7371 faqItems.forEach(item=>{const question=item.querySelector('.faq-question'); 7372 question.addEventListener('click', 7373 ()=>{const isActive=item.classList.contains('active'); 7374 faqItems.forEach(otherItem=>{otherItem.classList.remove('active')}); 7375 if(!isActive){item.classList.add('active')}})})}); 7376 </script>
7376 7377 7378 7379 <div class="page__overlay" data-view="offCanvasNavToggle" data-off-canvas="close" bis_skin_checked="1"> 7380 </div> 7381 <div class="faq-section"> 7382 ```html 7383<h2>FAQ TERBAIK KVTOTO</h2> 7384 7385<div class="faq-container"> 7386 7387 <div class="faq-item"> 7388 <button class="faq-question"> 7389 1. Apa itu KVTOTO? 7390 <span></span> 7391 </button> 7392 <div class="faq-answer"> 7393 <p> 7394 KVTOTO merupakan situs login pasaran togel online yang menghadirkan berbagai informasi pasaran dalam satu akses. Pengguna dapat menemukan jadwal, hasil keluaran terbaru, serta informasi pasaran yang disusun secara rapi dan mudah dipahami. 7395 </p> 7396 </div> 7397 </div> 7398 7399 <div class="faq-item"> 7400 <button class="faq-question"> 7401 2. Mengapa KVTOTO dikenal sebagai situs pasaran togel online terlengkap? 7402 <span></span> 7403 </button> 7404 <div class="faq-answer"> 7405 <p> 7406 KVTOTO menyediakan beragam pilihan pasaran togel online yang diperbarui secara berkala. Informasi jadwal dan hasil keluaran disajikan secara terstruktur sehingga pengguna dapat menemukan data yang dibutuhkan dengan lebih cepat melalui satu platform. 7407 </p> 7408 </div> 7409 </div> 7410 7411 <div class="faq-item"> 7412 <button class="faq-question"> 7413 3. Apa keunggulan login melalui KVTOTO? 7414 <span></span> 7415 </button> 7416 <div class="faq-answer"> 7417 <p> 7418 KVTOTO menghadirkan proses login yang praktis, tampilan responsif, serta navigasi yang sederhana. Pengguna dapat mengakses berbagai informasi pasaran melalui perangkat desktop maupun smartphone dengan lebih nyaman. 7419 </p> 7420 </div> 7421 </div> 7422 7423 <div class="faq-item"> 7424 <button class="faq-question"> 7425 4. Apakah KVTOTO menyediakan akses selama 24 jam? 7426 <span></span> 7427 </button> 7428 <div class="faq-answer"> 7429 <p> 7430 Ya, KVTOTO dapat diakses selama 24 jam sehingga pengguna dapat memantau jadwal pasaran, informasi terbaru, serta pembaruan hasil keluaran kapan saja sesuai kebutuhan. 7431 </p> 7432 </div> 7433 </div> 7434 7435 <div class="faq-item"> 7436 <button class="faq-question"> 7437 5. Mengapa KVTOTO menjadi pilihan untuk mencari informasi pasaran togel online? 7438 <span></span> 7439 </button> 7440 <div class="faq-answer"> 7441 <p> 7442 KVTOTO mengutamakan kelengkapan informasi, kemudahan akses, pembaruan data secara rutin, serta tampilan yang mudah digunakan. Hal tersebut membantu pengguna memperoleh informasi pasaran togel online secara lebih praktis dalam satu halaman. 7443 </p> 7444 </div> 7445 </div> 7446 7447</div> 7448 7449 7450 </div> 7451 7452 7453 <div class="overlay overlay-cart"></div> 7454 <div id="CartDrawer" class="drawer drawer--right"> 7455 <div class="drawer__header pl-2 pr-2"> 7456 <div class="drawer__icon-cart display-table-cell"> 7457 <a href="/cart" class=""> 7458 <svg class="icon icon-cart" version="1.1" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="32" height="32" viewBox="0 0 32 32"> <path fill="#fff" d="M13.638 23.203c0 0 3.5-2.113 3.502-4.11 0.002-2.304-2.689-3.537-3.497-1.76-0.916-1.778-3.493-1.714-3.497 0.59-0.003 1.999 3.491 5.28 3.491 5.28z"></path> <path fill="#fff" d="M8.112 9.809v16.662l11.063 2.491v-17.58l-11.063-1.573zM7.74 8.858l11.925 1.696c0.213 0.030 0.372 0.218 0.372 0.44v18.519c0 0.284-0.254 0.495-0.523 0.434l-11.925-2.685c-0.198-0.045-0.339-0.225-0.339-0.434v-17.53c0-0.27 0.231-0.477 0.49-0.44z"></path> <path fill="#fff" d="M23.7 10.046l-3.275 0.146-0.388 0.897v17.656l3.664-2.174v-16.526zM24.346 27.214l-4.526 2.685c-0.287 0.17-0.646-0.043-0.646-0.385v-18.519l0.037-0.181 0.534-1.235c0.067-0.154 0.212-0.256 0.375-0.263l3.991-0.178c0.245-0.011 0.45 0.191 0.45 0.444v17.247c0 0.159-0.082 0.306-0.216 0.385z"></path> <path fill="#000" d="M20.772 27.081l-0.501 2.383c-0.050 0.24-0.28 0.392-0.512 0.34s-0.38-0.289-0.33-0.528l0.569-2.707v-16.588c0-0.245 0.193-0.444 0.431-0.444s0.431 0.199 0.431 0.444v16.215l3.296 0.189c0.238 0.014 0.42 0.223 0.406 0.468s-0.217 0.433-0.454 0.419l-3.335-0.191z"></path> <path fill="#fff" d="M20.772 27.081l-0.501 2.383c-0.050 0.24-0.28 0.392-0.512 0.34s-0.38-0.289-0.33-0.528l0.569-2.707v-16.588c0-0.245 0.193-0.444 0.431-0.444s0.431 0.199 0.431 0.444v16.215l3.296 0.189c0.238 0.014 0.42 0.223 0.406 0.468s-0.217 0.433-0.454 0.419l-3.335-0.191z"></path> <path fill="#fff" d="M11.336 8.354l-0.257-0.333c-0.243-0.315 0.012-0.774 0.398-0.717l12.51 1.838c0.236 0.035 0.399 0.26 0.366 0.503s-0.252 0.412-0.487 0.377l-11.436-1.68 0.056 0.073c0.209 0.27 0.052 0.672-0.281 0.718l-4.467 0.607c-0.236 0.032-0.452-0.139-0.484-0.383s0.135-0.467 0.371-0.499l3.711-0.504z"></path> <path fill="#fff" d="M17.152 11.344c0.026-0.003 0.053-0.005 0.079-0.005 0.357 0 0.645 0.297 0.645 0.665s-0.288 0.665-0.645 0.665c-0.322 0-0.59-0.245-0.637-0.565-0.383-0.45-0.515-1.321-0.521-2.536-0.003-0.556 0.026-1.149 0.076-1.739 0.028-0.339 0.057-0.603 0.074-0.735 0.195-2.391-2.008-3.379-3.568-1.658-0.64 0.707-1.041 1.855-1.266 3.412-0.092 0.634-0.137 1.111-0.194 2.024 0.107 0.119 0.172 0.278 0.172 0.453 0 0.342-0.251 0.624-0.573 0.661-0.031 0.005-0.064 0.007-0.097 0.005-0.015-0.001-0.029-0.003-0.044-0.
7458005-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> 7459 </a> 7460 </div> 7461 <div class="drawer__title h4">Keranjang Belanja</div> 7462 <div class="drawer__close js-drawer-close"> 7463 <button type="button"> 7464 <svg class="icon icon-close" version="1.1" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="32" height="32" viewBox="0 0 32 32"> 7465 <title>icon-close</title> 7466 <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> 7467 </svg> 7468 </button> 7469 </div> 7470 </div> 7471 <div id="CartContainer" class="p-2"></div> 7472 </div> 7473 7474
7474<script> 7475 7476 </script>
7476 7477
7477<script src="//outerbloom.com/cdn/shop/t/138/assets/handlebars.min.js?v=79044469952368397291752652415" defer></script>
7477 7478 <!-- /snippets/ajax-cart-template.liquid --> 7479 7480
7480<script id="CartTemplate" type="text/template"> 7481 7482 <form action="/cart" method="post" novalidate class="cart ajaxcart"> 7483 <div class="ajaxcart__inner" {{ cart.item_count }}> 7484 {{#items}} 7485 <div class="ajaxcart__product"> 7486 <div class="ajaxcart__row" data-line="{{line}}"> 7487 <div class="grid"> 7488 <div class="grid__item one-quarter"> 7489 <a href="{{url}}" class="ajaxcart__product-image"><img src="{{img}}" alt=""></a> 7490 </div> 7491 <div class="grid__item three-quarters"> 7492 <p class="d-block mb-3"> 7493 <a class="h4 d-block mb-2" href="{{url}}" class="ajaxcart__product-name">{{name}}</a> 7494 {{#if variation}} 7495 <span class="ajaxcart__product-meta p">{{variation}}</span> 7496 {{/if}} 7497 {{#properties}} 7498 {{#each this}} 7499 {{#if this}} 7500 <span class="ajaxcart__product-meta p hide">{{@key}}: {{this}}</span> 7501 {{/if}} 7502 {{/each}} 7503 {{/properties}} 7504 7505 </p> 7506 <div class="grid--full display-table"> 7507 <div class="grid__item display-table-cell one-half"> 7508 <div class="ajaxcart__qty"> 7509 <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus" data-id="{{key}}" data-qty="{{itemMinus}}" data-line="{{line}}"> 7510 <svg version="1.1" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="24" height="24" viewBox="0 0 32 32"><title>icon-minus</title><path d="M6.667 16.667c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h18.667c0.368 0 0.667 0.298 0.667 0.667s-0.298 0.667-0.667 0.667h-18.667z"></path></svg> 7511 <span class="visually-hidden">Kurangi jumlah barang</span> 7512 </button> 7513 <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]*"> 7514 <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus" data-id="{{key}}" data-line="{{line}}" data-qty="{{itemAdd}}"> 7515 <svg version="1.1" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="24" height="24" viewBox="0 0 32 32"><title>icon-plus</title><path d="M16.667 15.333h8.667c0.368 0 0.667 0.298 0.667 0.667s-0.298 0.667-0.667 0.667h-8.667v8.667c0 0.368-0.298 0.667-0.667 0.667s-0.667-0.298-0.667-0.667v-8.667h-8.667c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h8.667v-8.667c0-0.368 0.298-0.667 0.667-0.667s0.667 0.298 0.667 0.667v8.667z"></path></svg> 7516 <span class="visually-hidden">Tambahkan jumlah barang</span> 7517 </button> 7518 </div> 7519 </div> 7520 <div class="grid__item display-table-cell one-half text-right"> 7521 {{#if discountsApplied}} 7522 <small class="ajaxcart-item__price-strikethrough"><s>{{{originalLinePrice}}}</s></small> 7523 <br><span class="h4">{{{linePrice}}}</span> 7524 {{else}} 7525 <span class="h4">{{{linePrice}}}</span> 7526 {{/if}} 7527 </div> 7528 </div> 7529 {{#if discountsApplied}} 7530 <div class="grid--full display-table"> 7531 <div class="grid__item text-right"> 7532 {{#each discounts}} 7533 <small class="ajaxcart-item__discount">{{ this.title }}</small><br> 7534 {{/each}} 7535 </div> 7536 </div> 7537 {{/if}} 7538 </div> 7539 </div> 7540 </div> 7541 </div> 7542 </div> 7543 </div> 7544 {{/items}} 7545 </div> 7546 <div class="ajaxcart__footer"> 7547 <div class="grid--full cart-subtotal py-2"> 7548 <p>Subtotal</p> 7549 <h3 class="primary">{{{totalPrice}}}</h3> 7550 {{#if totalCartDiscount}} 7551 <p class="ajaxcart__savings text-center"><em>{{{totalCartDiscount}}}</em></p> 7552 {{/if}} 7553 </div> 7554 7555 <a href="/cart" class="btn btn-cta view-more btn-block cart__checkout mt-2">Checkout</a> 7556 7557 <p class="cart-checkout-shipping hide">Free Ongkir dengan belanja di atas Rp.10.000 <a href="/pages/pengiriman">detail</a></p> 7558 </div> 7559 </form> 7560 7561 </script>
7561 7562
7562<script id="AjaxQty" type="text/template"> 7563 7564 <div class="ajaxcart__qty"> 7565 <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus" data-id="{{key}}" data-qty="{{itemMinus}}"> 7566 <svg version="1.1" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="24" height="24" viewBox="0 0 32 32"> 7567 <title>icon-minus</title> 7568 <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> 7569 </svg> 7570 <span class="visually-hidden">Kurangi jumlah barang</span> 7571 </button> 7572 <input type="text" class="ajaxcart__qty-num" value="{{itemQty}}" min="0" data-id="{{key}}" aria-label="quantity" pattern="[0-9]*"> 7573 <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus" data-id="{{key}}" data-qty="{{itemAdd}}"> 7574 <svg version="1.1" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="24" height="24" viewBox="0 0 32 32"><title>icon-plus</title><path d="M16.667 15.333h8.667c0.368 0 0.667 0.298 0.667 0.667s-0.298 0.667-0.667 0.667h-8.667v8.667c0 0.368-0.298 0.667-0.667 0.667s-0.667-0.298-0.667-0.667v-8.667h-8.667c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h8.667v-8.667c0-0.368 0.298-0.667 0.667-0.667s0.667 0.298 0.667 0.667v8.667z"></path></svg> 7575 <span class="visually-hidden">Tambahkan jumlah barang</span> 7576 </button> 7577 </div> 7578 7579 </script>
7579 7580
7580<script id="JsQty" type="text/template"> 7581 7582 <div class="js-qty mx-auto mt-2"> 7583 <button type="button" class="js-qty__adjust js-qty__adjust--minus" data-id="{{key}}" data-qty="{{itemMinus}}"> 7584 <svg version="1.1" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="24" height="24" viewBox="0 0 32 32"><title>icon-minus</title><path d="M6.667 16.667c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h18.667c0.368 0 0.667 0.298 0.667 0.667s-0.298 0.667-0.667 0.667h-18.667z"></path></svg> 7585 <span class="visually-hidden">Kurangi jumlah barang</span> 7586 </button> 7587 <input type="text" class="js-qty__num" value="{{itemQty}}" min="1" data-id="{{key}}" aria-label="quantity" pattern="[0-9]*" name="{{inputName}}" id="{{inputId}}"> 7588 <button type="button" class="js-qty__adjust js-qty__adjust--plus" data-id="{{key}}" data-qty="{{itemAdd}}"> 7589 <svg version="1.1" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="24" height="24" viewBox="0 0 32 32"><title>icon-plus</title><path d="M16.667 15.333h8.667c0.368 0 0.667 0.298 0.667 0.667s-0.298 0.667-0.667 0.667h-8.667v8.667c0 0.368-0.298 0.667-0.667 0.667s-0.667-0.298-0.667-0.667v-8.667h-8.667c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h8.667v-8.667c0-0.368 0.298-0.667 0.667-0.667s0.667 0.298 0.667 0.667v8.667z"></path></svg> 7590 <span class="visually-hidden">Tambahkan jumlah barang</span> 7591 </button> 7592 </div> 7593 7594 </script>
7594 7595 7596 <style> 7597 #CartDrawer .ajaxcart__product.nExtra.Shipping.Cost .ajaxcart__qty button, 7598 #CartDrawer .ajaxcart__product.n3D2N .ajaxcart__qty button, 7599 #CartDrawer .ajaxcart__product.n4D3N .ajaxcart__qty button {display: none;} 7600 #CartDrawer .ajaxcart__product.nExtra.Shipping.Cost .ajaxcart__qty input, 7601 #CartDrawer .ajaxcart__product.n3D2N .ajaxcart__qty input, 7602 #CartDrawer .ajaxcart__product.n4D3N .ajaxcart__qty input {pointer-events: none;opacity: 0.5;} 7603 #CartDrawer .ajaxcart__product.nExtra.Shipping.Cost .ajaxcart__qty input, 7604 #CartDrawer .ajaxcart__product.n3D2N .ajaxcart__qty input, 7605 #CartDrawer .ajaxcart__product.n4D3N .ajaxcart__qty input {pointer-events: none;} 7606 </style> 7607
7607<script src="//outerbloom.com/cdn/shop/t/138/assets/ajax-cart.js?v=51128912329657147331752652452" defer></script>
7607 7608
7608<script> 7609 jQuery(function($) { 7610 ajaxCart.init({ 7611 formSelector: '#AddToCartForm', 7612 cartContainer: '#CartContainer', 7613 addToCartSelector: '#AddToCartXX', 7614 cartCountSelector: '#CartCount, #CartCount2', 7615 cartCostSelector: '#CartCost', 7616 moneyFormat: "Rp {{amount_no_decimals}}" 7617 }); 7618 }); 7619 7620 jQuery(document.body).on('afterCartLoad.ajaxCart', function(evt, cart) { 7621 // Bind to 'afterCartLoad.ajaxCart' to run any javascript after the cart has loaded in the DOM 7622 timber.RightDrawer.open(); 7623 }); 7624 </script>
7624 7625 7626 7627 7628 7629 <style> 7630 /** Search AutoComplete **/ 7631 .resultsearch .ui-menu-item[data-cat="Collection"], 7632 .resultsearch .ui-menu-item[data-cat="Collection"] {display: none;} 7633 .resultsearch .ui-widget.ui-widget-content { 7634 width: 100%; 7635 top: 48px; 7636 border: none; 7637 box-shadow: 0 4px 8px rgba(255, 255, 255, 0.3); 7638 } 7639 .resultsearch .ui-menu-item {text-align: left;} 7640 .resultsearch .ui-menu-item>a, .resultsearch .ui-menu-item>span {display: inline-block;width: 100%;font-size: 16px;}.resultsearch .ui-menu-item img {vertical-align: middle;}.resultsearch .ui-menu-item a[data-cat="Collection"] img {display: none;}.resultsearch .ui-menu .ui-state-focus, .resultsearch .ui-menu .ui-state-active {margin: 0;}.ui-state-active, .ui-widget-content .ui-state-active {background: #f2f2f2;border: none;color: #ffffff;}.resultsearch .ui-menu-item>a,.resultsearch .ui-menu-item>span {display: inline-block;width: 100%;font-size: 13px;}.resultsearch .ui-menu-item a[data-cat="Produk"] img {margin-right: 10px;}.resultsearch .ui-menu-item a[data-cat="Produk"] .price {float: right;padding: 15px 0;}.ui-autocomplete-category.ui-menu-item[data-cat="Produk"]:before {content: "Product Populer";font-size: 13px;padding: 5px;margin: 5px 0;background: #f2f2f2;width: 100%;display: block;color: #ffffff;}.ui-autocomplete-category.ui-menu-item[data-cat="Produk"] span {display: none;} 7641 .ui-state-active { 7642 border: none!important; 7643 background-color: #fafafa!important; 7644 color: #000!important; 7645 } 7646 .ui-menu-item a[data-cat="Collection"] {padding: 5px 12px;} 7647 .ui-menu .ui-menu-item {line-height: normal;} 7648 </style> 7649
7649<script> 7650 $(window).load(function(){ 7651 7652 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;} 7653 7654 $.widget("custom.catcomplete", $.ui.autocomplete, { 7655 _renderMenu: function (ul, items) { 7656 // have search reults split up in categories 7657 var that = this, 7658 currentCategory = ""; 7659 $.each(items, function (index, item) { 7660 if (item.category != currentCategory) { 7661 ul.append("<li class='ui-autocomplete-category' data-cat=" + item.category + ">" + "<span>" + item.category + "</span>" + "</li>"); 7662 currentCategory = item.category; 7663 } 7664 that._renderItemData(ul, item); 7665 }); 7666 } 7667 }); 7668 7669 // higlight searched for term 7670 $.ui.autocomplete.prototype._renderItem = function( ul, item ) { 7671 var term = this.element.val(), 7672 html = item.label.replace( term, "<b>$&</b>" ); 7673 return $( "<li>" ) 7674 .append(format(item)) 7675 .appendTo( ul ); 7676 }; 7677 7678 7679 var data = [ 7680 { label: "< Rp 500.000", category: "Collection", url: "/collections/rp-500-000", images: " ", price: " " },{ label: "> Rp 1.000.000", category: "Collection", url: "/collections/rp-1-000-000", images: " ", price: " " },{ label: "Acrylic Jewelry Box", category: "Collection", url: "/collections/acrylic-jewelry-box", images: " ", price: " " },{ label: "Ajmal", category: "Collection", url: "/collections/ajmal", images: " ", price: " " },{ label: "Alamat Rumah Duka", category: "Collection", url: "/collections/rumah-duka", images: " ", price: " " },{ label: "Anggrek Bulan", category: "Collection", url: "/collections/anggrek-bulan", images: " ", price: " " },{ label: "Anniversary Gift", category: "Collection", url: "/collections/kado-anniversary", images: " ", price: " " },{ label: "Aquarius âï¸ 20Jan - 18Feb", category: "Collection", url: "/collections/kado-untuk-zodiak-aquarius", images: " ", price: " " },{ label: "Aries âï¸ 21March - 19April", category: "Collection", url: "/collections/kado-untuk-zodiak-aries", images: " ", price: " " },{ label: "Armaf", category: "Collection", url: "/collections/armaf", images: " ", price: " " },{ label: "Aromatherapy Diffuser", category: "Collection", url: "/collections/aromatherapy-diffuser", images: " ", price: " " },{ label: "Artisan Soap", category: "Collection", url: "/collections/artisan-soap", images: " ", price: " " },{ label: "Artisan Tea", category: "Collection", url: "/collections/artisan-tea", images: " ", price: " " },{ label: "AsmaraKu", category: "Collection", url: "/collections/asmaraku", images: " ", price: " " },{ label: "Atkinsons", category: "Collection", url: "/collections/atkinsons", images: " ", price: " " },{ label: "Autumn by Outerbloom", category: "Collection", url: "/collections/autumn-by-outerbloom", images: " ", price: " " },{ label: "Autumn by Outerbloom Chinese New Year", category: "Collection", url: "/collections/autumn-by-outerbloom-chinese-new-year", images: " ", price: " " },{ label: "Autumn by Outerbloom Christmas", category: "Collection", url: "/collections/autumn-by-outerbloom-christmas", images: " ", price: " " },{ label: "Autumn by Outerbloom Luar Jadetabek", category: "Collection", url: "/collections/autumn-by-outerbloom-luar-jadetabek", images: " ", price: " " },{ label: "Autumn by Outerbloom Ramadan", category: "Collection", url: "/collections/autumn-by-outerbloom-ramadan", images: " ", price: " " },{ label: "Autumn Pop", category: "Collection", url: "/collections/autumn-pop", images: " ", price: " " },{ label: "Bachelorette", category: "Collection", url: "/collections/bachelorette", images: " ", price: " " },{ label: "Bag Newborn Hampers", category: "Collection", url: "/collections/bag-newborn-hampers", images: " ", price: " " },{ label: "Balon", category: "Collection", url: "/collections/balon", images: " ", price: " " },{ label: "Beauty Package", category: "Collection", url: "/collections/beauty-package", images: " ", price: " " },{ label: "Best Deal", category: "Collection", url: "/collections/best-deal", images: " ", price: " " },{ label: "Best Seller", category: "Collection", url: "/collections/best-seller", images: " ", price: " " },{ label: "Best Valentine's Deals", category: "Collection", url: "/collections/bes-valentines-deals", images: " ", price: " " },{ label: "Best Value Newborn Hampers Collection", category: "Collection", url: "/collections/best-value-newborn-hampers-collection", images: " ", price: " " },{ label: "Black Tea", category: "Collection", url: "/collections/black-tea", images: " ", price: " " },{ label: "Blessing Hampers", category: "Collection", url: "/collections/blessing-hampers", images: " ", price: " " },{ label: "Bloom Box", category: "Collection", url: "/collections/bloom-box", images: " ", price: " " },{ label: "Bloomcard", category: "Collection", url: "/collections/bloomcard", images: " ", price: " " },{ label: "Boutonniere", category: "Collection", url: "/collections/boutonniere", images: " ", price: " " },{ label: "Bracelet", category: "Collection", url: "/collections/gelang", images: " ", price: " " },{ label: "Buket Bunga Bali", category: "Collection", url: "/collections/buket-bunga-bali", images: " ", price: " " },{ label: "Buket Bunga Bandung", category: "Collection", url: "/collections/buket-bunga-bandung", images: " ", price: " " },{ label: "Buket Bunga Batam", category: "Collection", url: "/collections/buket-bunga-batam", images: " ", price: " " },{ label: "Buket Bunga Demak", category: "Collection", url: "/collections/buket-bunga-demak", images: " ", price: " " },{ label: "Buket Bunga Fresh", category: "Collection", url: "/collections/buket-bunga", images: " ", price: " " },{ label: "Buket Bunga Jepara", category: "Collection", url: "/collections/buket-bunga-jepara", images: " ", price: " " },{ label: "Buket Bunga Medan", category: "Collection", url: "/collections/buket-bunga-medan", images: " ", price: " " },{ label: "Buket Bunga Nusantara", category: "Collection", url: "/collections/buket-bunga-nusantara", images: " ", price: " " },{ label: "Buket Bunga Semarang", category: "Collection", url: "/collections/buket-bunga-semarang", images: " ", price: " " },{ label: "Buket Bunga Sidoarjo", category: "Collection", url: "/collections/buket-bunga-sidoarjo", images: " ", price: " " },{ label: "Buket Bunga Surabaya", category: "Collection", url: "/collections/buket-bunga-surabaya", images: " ", price: " " },{ label: "Buket Bunga Tangerang", category: "Collection", url: "/collections/buket-bunga-tangerang", images: " ", price: " " },{ label: "Buket Bunga Uang", category: "Collection", url: "/collections/buket-bunga-uang", images: " ", price: " " },{ label: "Buket Bunga Valentine", category: "Collection", url: "/collections/buket-bunga-valentine", images: " ", price: " " },{ label: "Buket Bunga Yogyakarta", category: "Collection", url: "/collections/buket-bunga-jogja", images: " ", price: " " },{ label: "Bunga Anggrek Bali", category: "Collection", url: "/collections/bunga-anggrek-bali", images: " ", price: " " },{ label: "Bunga Anggrek Bandung", category: "Collection", url: "/collections/bunga-anggrek-bandung", images: " ", price: " " },{ label: "Bunga Anggrek Surabaya", category: "Collection", url: "/collections/bunga-anggrek-surabaya", images: " ", price: " " },{ label: "Bunga Anniversary", category: "Collection", url: "/collections/bunga-anniversary", images: " ", price: " " },{ label: "Bunga Artificial", category: "Collection", url: "/collections/bunga-artificial", images: " ", price: " " },{ label: "Bunga Buket", category: "Collection", url: "/collections/bunga-buket", images: " ", price: " " },{ label: "Bunga Carnations Bali", category: "Collection", url: "/collections/bunga-carnations-bali", images: " ", price: " " },{ label: "Bunga Carnations Bandung", category: "Collection", url: "/collections/bunga-carnations-bandung", images: " ", price: " " },{ label: "Bunga Carnations Surabaya", category: "Collection", url: "/collections/bunga-carnations-surabaya", images: " ", price: " " },{ label: "Bunga Daisy Bali", category: "Collection", url: "/collections/bunga-daisy-bali", images: " ", price: " " },{ label: "Bunga Daisy Bandung", category: "Collection", url: "/collections/bunga-daisy-bandung", images: " ", price: " " },{ label: "Bunga Daisy Surabaya", category: "Collection", url: "/collections/bunga-daisy-surabaya", images: " ", price: " " },{ label: "Bunga Gerbera Bali", category: "Collection", url: "/collections/bunga-gerbera-bali", images: " ", price: " " },{ label: "Bunga Gerbera Bandung", category: "Collection", url: "/collections/bunga-gerbera-bandung", images: " ", price: " " },{ label: "Bunga Gerbera Surabaya", category: "Collection", url: "/collections/bunga-gerbera-surabaya", images: " ", price: " " },{ label: "Bunga Imlek", category: "Collection", url: "/collections/rangkaian-bunga-tahun-baru-imlek", images: " ", price: " " },{ label: "Bunga Lebaran", category: "Collection", url: "/collections/rangkaian-bunga-lebaran", images: " ", price: " " },{ label: "Bunga Lily Bali", category: "Collection", url: "/collections/bunga-lily-bali", images: " ", price: " " },{ label: "Bunga Lily Bandung", category: "Collection", url: "/collections/bunga-lily-bandung", images: " ", price: " " },{ label: "Bunga Lily Surabaya", category: "Collection", url: "/collections/bunga-lily-surabaya", images: " ", price: " " },{ label: "Bunga Matahari Bali", category: "Collection", url: "/collections/bunga-matahari-bali", images: " ", price: " " },{ label: "Bunga Matahari Bandung", category: "Collection", url: "/collections/bunga-matahari-bandung", images: " ", price: " " },{ label: "Bunga Matahari Surabaya", category: "Collection", url: "/collections/bunga-matahari-surabaya", images: " ", price: " " },{ label: "Bunga Mawar Bali", category: "Collection", url: "/collections/bunga-mawar-bali", images: " ", price: " " },{ label: "Bunga Mawar Bandung", category: "Collection", url: "/collections/bunga-mawar-bandung", images: " ", price: " " },{ label: "Bunga Mawar Surabaya", category: "Collection", url: "/collections/bunga-mawar-surabaya", images: " ", price: " " },{ label: "Bunga Meja", category: "Collection", url: "/collections/bunga-meja", images: " ", price: " " },{ label: "Bunga Meja Bali", category: "Collection", url: "/collections/bunga-meja-bali", images: " ", price: " " },{ label: "Bunga Meja Bandung", category: "Collection", url: "/collections/bunga-meja-bandung", images: " ", price: " " },{ label: "Bunga Meja Batam", category: "Collection", url: "/collections/bunga-meja-batam", images: " ", price: " " },{ label: "Bunga Meja Jepara", category: "Collection", url: "/collections/bunga-meja-jepara", images: " ", price: " " },{ label: "Bunga Meja Medan", category: "Collection", url: "/collections/bunga-meja-medan", images: " ", price: " " },{ label: "Bunga Meja Semarang", category: "Collection", url: "/collections/bunga-meja-semarang", images: " ", price: " " },{ label: "Bunga Meja Sidoarjo", category: "Collection", url: "/collections/bunga-meja-sidoarjo", images: " ", price: " " },{ label: "Bunga Meja Surabaya", category: "Collection", url: "/collections/bunga-meja-surabaya", images: " ", price: " " },{ label: "Bunga Meja Tangerang", category: "Collection", url: "/collections/bunga-meja-tangerang", images: " ", price: " " },{ label: "Bunga Meja Yogyakarta", category: "Collection", url: "/collections/bunga-meja-jogja", images: " ", price: " " },{ label: "Bunga Modern Pastel Bali", category: "Collection", url: "/collections/bunga-modern-pastel-bali", images: " ", price: " " },{ label: "Bunga Modern Pastel Bandung", category: "Collection", url: "/collections/bunga-modern-pastel-bandung", images: " ", price: " " },{ label: "Bunga Modern Pastel Medan", category: "Collection", url: "/collections/bunga-modern-pastel-medan", images: " ", price: " " },{ label: "Bunga Modern Pastel Semarang", category: "Collection", url: "/collections/bunga-modern-pastel-semarang", images: " ", price: " " },{ label: "Bunga Modern Pastel Surabaya", category: "Collection", url: "/collections/bunga-modern-pastel-surabaya", images: " ", price: " " },{ label: "Bunga Modern Pastel Yogyakarta", category: "Collection", url: "/collections/bunga-modern-pastel-yogyakarta", images: " ", price: " " },{ label: "Bunga Natal", category: "Collection", url: "/collections/rangkaian-bunga-christmas", images: " ", price: " " },{ label: "Bunga Papan", category: "Collection", url: "/collections/bunga-papan", images: " ", price: " " },{ label: "Bunga Pernikahan", category: "Collection", url: "/collections/bunga-pernikahan", images: " ", price: " " },{ label: "Bunga Plastik", category: "Collection", url: "/collections/bunga-plastik", images: " ", price: " " },{ label: "Bunga Tulip", category: "Collection", url: "/collections/bunga-tulip", images: " ", price: " " },{ label: "Bunga Ulang Tahun", category: "Collection", url: "/collections/bunga-ulang-tahun", images: " ", price: " " },{ label: "Bunga Wisuda", category: "Collection", url: "/collections/karangan-bunga-wisuda", images: " ", price: " " },{ label: "Cake", category: "Collection", url: "/collections/kue", images: " ", price: " " },{ label: "Cake", category: "Collection", url: "/collections/cake", images: " ", price: " " },{ label: "Cake Sameday Delivery", category: "Collection", url: "/collections/cake-sameday-delivery", images: " ", price: " " },{ label: "Cake, Hampers & Gifts", category: "Collection", url: "/collections/cake-hampers", images: " ", price: " " },{ label: "Cancer âï¸ 22June - 22July", category: "Collection", url: "/collections/kado-untuk-zodiak-cancer", images: " ", price: " " },{ label: "Capricorn âï¸ 21Dec - 19Jan", category: "Collection", url: "/collections/kado-untuk-zodiak-capricorn", images: " ", price: " " },{ label: "Care Packages", category: "Collection", url: "/collections/toko-parcel-murah", images: " ", price: " " },{ label: "Care Packages (Keluarga, Sahabat, Karyawan)", category: "Collection", url: "/collections/sehat-bebas-corona", images: " ", price: " " },{ label: "Carnations", category: "Collection", url: "/collections/bunga-anyelir", images: " ", price: " " },{ label: "Celebration", category: "Collection", url: "/collections/celebration", images: " ", price: " " },{ label: "Chléa Paperie", category: "Collection", url: "/collections/chlea-paperie", images: " ", price: " " },{ label: "Chocodot", category: "Collection", url: "/collections/chocodot", images: " ", price: " " },{ label: "Christmas", category: "Collection", url: "/collections/christmas", images: " ", price: " " },{ label: "Classic Cake", category: "Collection", url: "/collections/classic-cake", images: " ", price: " " },{ label: "Classic CNY Hampers", category: "Collection", url: "/collections/classic-cny-hampers", images: " ", price: " " },{ label: "Classic CNY Hampers Luar Jabodetabek", category: "Collection", url: "/collections/classic-cny-hampers-luar-jabodetabek", images: " ", price: " " },{ label: "Classic Hampers", category: "Collection", url: "/collections/classic-hampers", images: " ", price: " " },{ label: "Classic Hampers Luar Jadetabek", category: "Collection", url: "/collections/classic-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Classic Style Flowers", category: "Collection", url: "/collections/classic-style-flowers", images: " ", price: " " },{ label: "Cokelat", category: "Collection", url: "/collections/permen-coklat", images: " ", price: " " },{ label: "Collection List", category: "Collection", url: "/collections/collection-list", images: " ", price: " " },{ label: "Condolences", category: "Collection", url: "/collections/axa-condolences", images: " ", price: " " },{ label: "Congratulations", category: "Collection", url: "/collections/rangkaian-bunga-ucapan-selamat", images: " ", price: " " },{ label: "Corporate Gifts", category: "Collection", url: "/collections/corporate-gifts", images: " ", price: " " },{ label: "Corporate Hampers", category: "Collection", url: "/collections/corporate-hampers", images: " ", price: " " },{ label: "Couple Gift", category: "Collection", url: "/collections/couple-gift", images: " ", price: " " },{ label: "Craft Sweetbox Newborn", category: "Co
7680llection", url: "/collections/craft-sweetbox-newborn", images: " ", price: " " },{ label: "Crystal Florarium", category: "Collection", url: "/collections/crystal-florarium", images: " ", price: " " },{ label: "Cuddlemate Doll", category: "Collection", url: "/collections/boneka-lucu", images: " ", price: " " },{ label: "Cufflinks", category: "Collection", url: "/collections/cufflinks", images: " ", price: " " },{ label: "Cupcakes", category: "Collection", url: "/collections/cupcakes", images: " ", price: " " },{ label: "Custom Alat Tulis", category: "Collection", url: "/collections/alat-tulis", images: " ", price: " " },{ label: "Custom Cake", category: "Collection", url: "/collections/custom-cake", images: " ", price: " " },{ label: "Custom Card Holder", category: "Collection", url: "/collections/custom-card-holder", images: " ", price: " " },{ label: "Custom Coaster", category: "Collection", url: "/collections/custom-coaster", images: " ", price: " " },{ label: "Custom Cutlery", category: "Collection", url: "/collections/custom-cutlery", images: " ", price: " " },{ label: "Custom E-Money", category: "Collection", url: "/collections/custom-e-money", images: " ", price: " " },{ label: "Custom Earpod", category: "Collection", url: "/collections/custom-earpod", images: " ", price: " " },{ label: "Custom Fan", category: "Collection", url: "/collections/custom-fan", images: " ", price: " " },{ label: "Custom Jewelry", category: "Collection", url: "/collections/custom-jewelry", images: " ", price: " " },{ label: "Custom Keychain", category: "Collection", url: "/collections/custom-keychain", images: " ", price: " " },{ label: "Custom Medallion", category: "Collection", url: "/collections/custom-medallion", images: " ", price: " " },{ label: "Custom Mirror", category: "Collection", url: "/collections/custom-mirror", images: " ", price: " " },{ label: "Custom Mug", category: "Collection", url: "/collections/custom-mug", images: " ", price: " " },{ label: "Custom Necklace", category: "Collection", url: "/collections/custom-necklace", images: " ", price: " " },{ label: "Custom Notebook", category: "Collection", url: "/collections/custom-notebook", images: " ", price: " " },{ label: "Custom Pen & Pencil", category: "Collection", url: "/collections/custom-pen-pencil", images: " ", price: " " },{ label: "Custom Photo Frame", category: "Collection", url: "/collections/photo-frame", images: " ", price: " " },{ label: "Custom Pillow", category: "Collection", url: "/collections/bantal-custom", images: " ", price: " " },{ label: "Custom Powerbank", category: "Collection", url: "/collections/custom-powerbank", images: " ", price: " " },{ label: "Custom Scarf", category: "Collection", url: "/collections/custom-scarf", images: " ", price: " " },{ label: "Custom Speaker", category: "Collection", url: "/collections/custom-speaker", images: " ", price: " " },{ label: "Custom T-Shirt", category: "Collection", url: "/collections/custom-t-shirt", images: " ", price: " " },{ label: "Custom Tote Bag", category: "Collection", url: "/collections/custom-tote-bag", images: " ", price: " " },{ label: "Custom Tumbler Minuman", category: "Collection", url: "/collections/custom-tumbler-minuman", images: " ", price: " " },{ label: "D'paris", category: "Collection", url: "/collections/dparis", images: " ", price: " " },{ label: "Daisy", category: "Collection", url: "/collections/bunga-aster", images: " ", price: " " },{ label: "Dekorasi", category: "Collection", url: "/collections/dekorasi", images: " ", price: " " },{ label: "Dekorasi Duka Cita", category: "Collection", url: "/collections/dekorasi-bunga-duka-cita", images: " ", price: " " },{ label: "Dekorasi Pemakaman", category: "Collection", url: "/collections/dekorasi-pemakaman", images: " ", price: " " },{ label: "Dekorasi Pernikahan", category: "Collection", url: "/collections/dekorasi-bunga-pernikahan", images: " ", price: " " },{ label: "Dekorasi Ulang Tahun", category: "Collection", url: "/collections/dekorasi-bunga-ulang-tahun", images: " ", price: " " },{ label: "Delivery", category: "Collection", url: "/collections/delivery", images: " ", price: " " },{ label: "Deluxe Newborn Hampers Collection", category: "Collection", url: "/collections/deluxe-newborn-hampers-collection", images: " ", price: " " },{ label: "Digital Gift", category: "Collection", url: "/collections/digital-gift", images: " ", price: " " },{ label: "Donasi", category: "Collection", url: "/collections/donasi", images: " ", price: " " },{ label: "E-Card", category: "Collection", url: "/collections/ecard", images: " ", price: " " },{ label: "E-Gift Card", category: "Collection", url: "/collections/e-gift-card", images: " ", price: " " },{ label: "Earrings", category: "Collection", url: "/collections/anting", images: " ", price: " " },{ label: "Edible Gift", category: "Collection", url: "/collections/edible-gift", images: " ", price: " " },{ label: "Enchanted Grande Love Pirouette", category: "Collection", url: "/collections/enchanted-grande-love-pirouette", images: " ", price: " " },{ label: "Enchanted Love Pirouette", category: "Collection", url: "/collections/enchanted-love-pirouette", images: " ", price: " " },{ label: "Engagement", category: "Collection", url: "/collections/rangkaian-bunga-lamaran", images: " ", price: " " },{ label: "Expression", category: "Collection", url: "/collections/expression", images: " ", price: " " }
7680,{ label: "Father's Day Special", category: "Collection", url: "/collections/kado-untuk-ayah", images: " ", price: " " },{ label: "Ferrari", category: "Collection", url: "/collections/ferrari", images: " ", price: " " },{ label: "Ferrero Rocher", category: "Collection", url: "/collections/ferrero-rocher", images: " ", price: " " },{ label: "Festival Belanja Online", category: "Collection", url: "/collections/fbo-2018", images: " ", price: " " },{ label: "Floatbox", category: "Collection", url: "/collections/floatbox", images: " ", price: " " },{ label: "Flower", category: "Collection", url: "/collections/flower", images: " ", price: " " },{ label: "Flower Best Deals", category: "Collection", url: "/collections/flower-best-deals", images: " ", price: " " },{ label: "Flowers", category: "Collection", url: "/collections/toko-bunga", images: " ", price: " " },{ label: "Flowers For Him", category: "Collection", url: "/collections/bunga-untuk-pria", images: " ", price: " " },{ label: "Flowers Style", category: "Collection", url: "/collections/style", images: " ", price: " " },{ label: "Flowers Type", category: "Collection", url: "/collections/type", images: " ", price: " " },{ label: "For Her", category: "Collection", url: "/collections/kado-untuk-wanita", images: " ", price: " " },{ label: "For Him", category: "Collection", url: "/collections/kado-untuk-pria", images: " ", price: " " },{ label: "Forever Flower", category: "Collection", url: "/collections/forever-flower", images: " ", price: " " },{ label: "Forever Flower Holo Series", category: "Collection", url: "/collections/forever-flower-holo-series", images: " ", price: " " },{ label: "Forever Flower x NestBloom", category: "Collection", url: "/collections/forever-flower-x-nestbloom", images: " ", price: " " },{ label: "Fortune Hampers", category: "Collection", url: "/collections/fortune-hampers", images: " ", price: " " },{ label: "Frank & Co", category: "Collection", url: "/collections/franknco", images: " ", price: " " },{ label: "Fresh Flowers", category: "Collection", url: "/collections/fresh-flower", images: " ", price: " " },{ label: "Gantungan Kunci", category: "Collection", url: "/collections/gantungan-kunci", images: " ", price: " " },{ label: "Gelato", category: "Collection", url: "/collections/gelato", images: " ", price: " " },{ label: "Gelato Pie", category: "Collection", url: "/collections/gelato-pie", images: " ", price: " " },{ label: "Gemini âï¸ 21May - 21June", category: "Collection", url: "/collections/kado-untuk-zodiak-gemini", images: " ", price: " " },{ label: "Gerbera", category: "Collection", url: "/collections/gerbera", images: " ", price: " " },{ label: "Get Well Soon", category: "Collection", url: "/collections/rangkaian-bunga-gws", images: " ", price: " " },{ label: "Giant Flower Bali", category: "Collection", url: "/collections/giant-flower-bali", images: " ", price: " " },{ label: "Giant Flower Bandung", category: "Collection", url: "/collections/giant-flower-bandung", images: " ", price: " " },{ label: "Giant Flower Bouquet", category: "Collection", url: "/collections/giant-flower", images: " ", price: " " },{ label: "Gift", category: "Collection", url: "/collections/souvenir-kado-hadiah", images: " ", price: " " },{ label: "Gift by Recipient", category: "Collection", url: "/collections/gift-by-recipient", images: " ", price: " " },{ label: "Gift for Your Girlfriend", category: "Collection", url: "/collections/kado-untuk-pacar-wanita", images: " ", price: " " },{ label: "Gifts", category: "Collection", url: "/collections/gifts", images: " ", price: " " },{ label: "Glassbox Hampers", category: "Collection", url: "/collections/glassbox-hampers", images: " ", price: " " },{ label: "Glassware Hampers", category: "Collection", url: "/collections/parcel-pecah-belah", images: " ", price: " " },{ label: "Gold Jewelry", category: "Collection", url: "/collections/perhiasan-emas", images: " ", price: " " },{ label: "Grand Opening", category: "Collection", url: "/collections/grand-opening", images: " ", price: " " },{ label: "Granola", category: "Collection", url: "/collections/granola", images: " ", price: " " },{ label: "Green Tea", category: "Collection", url: "/collections/green-tea", images: " ", price: " " },{ label: "Greeting Card All", category: "Collection", url: "/collections/greeting-card-all", images: " ", price: " " },{ label: "Greeting Card Anniversary", category: "Collection", url: "/collections/greeting-card-anniversary", images: " ", price: " " },{ label: "Greeting Card Birthday", category: "Collection", url: "/collections/greeting-card-birthday", images: " ", price: " " },{ label: "Greeting Card Eid", category: "Collection", url: "/collections/greeting-card-eid", images: " ", price: " " },{ label: "Greeting Card Graduation", category: "Collection", url: "/collections/greeting-card-graduation", images: " ", price: " " },{ label: "Greeting Card Mother's Day", category: "Collection", url: "/collections/greeting-card-mothers-day", images: " ", price: " " },{ label: "Greeting Card Newborn", category: "Collection", url: "/collections/greeting-card-newborn", images: " ", price: " " },{ label: "Greeting Card Others", category: "Collection", url: "/collections/greeting-card-others", images: " ", price: " " },{ label: "Greeting Card Valentine", category: "Collection", url: "/collections/greeting-card-valentine", images: " ", price: " " },{ label: "Greeting Card Wedding", category: "Collection", url: "/collections/greeting-card-wedding", images: " ", price: " " },{ label: "Grooming", category: "Collection", url: "/collections/grooming", images: " ", price: " " },{ label: "Hadiah Tahun Baru Imlek", category: "Collection", url: "/collections/kado-imlek", images: " ", price: " " },{ label: "Hadiah untuk Bayi", category: "Collection", url: "/collections/kado-untuk-bayi", images: " ", price: " " },{ label: "Hadiah untuk Pacar", category: "Collection", url: "/collections/kado-untuk-pacar", images: " ", price: " " },{ label: "Hadiah untuk Pernikahan", category: "Collection", url: "/collections/kado-untuk-pernikahan", images: " ", price: " " },{ label: "Hadiah untuk Sahabat", category: "Collection", url: "/collections/kado-untuk-sahabat", images: " ", price: " " },{ label: "Hampers", category: "Collection", url: "/collections/hampers", images: " ", price: " " },{ label: "Hampers Baby Boy", category: "Collection", url: "/collections/hampers-baby-boy", images: " ", price: " " },{ label: "Hampers Baby Girl", category: "Collection", url: "/collections/hampers-baby-girl", images: " ", price: " " },{ label: "Hampers Baby Unisex", category: "Collection", url: "/collections/hampers-baby-unisex", images: " ", price: " " },{ label: "Hampers Delivery Indonesia", category: "Collection", url: "/collections/parcel-indonesia", images: " ", price: " " },{ label: "Hampers Lebaran 2025", category: "Collection", url: "/collections/parcel-lebaran", images: " ", price: " " },{ label: "Hampers Lebaran Bali", category: "Collection", url: "/collections/hampers-lebaran-bali", images: " ", price: " " },{ label: "Hampers Lebaran Bandung", category: "Collection", url: "/collections/hampers-lebaran-bandung", images: " ", price: " " },{ label: "Hampers Lebaran Jakarta", category: "Collection", url: "/collections/hampers-lebaran-jakarta", images: " ", price: " " },{ label: "Hampers Lebaran Semarang", category: "Collection", url: "/collections/hampers-lebaran-semarang", images: " ", price: " " },{ label: "Hampers Lebaran Surabaya", category: "Collection", url: "/collections/hampers-lebaran-surabaya", images: " ", price: " " },{ label: "Hampers Lebaran Yogyakarta", category: "Collection", url: "/collections/hampers-lebaran-yogyakarta", images: " ", price: " " },{ label: "Hand Sanitizer", category: "Collection", url: "/collections/hand-sanitizer", images: " ", price: " " },{ label: "Happy Birthday", category: "Collection", url: "/collections/kado-ulang-tahun", images: " ", price: " " },{ label: "Harbolnas", category: "Collection", url: "/collections/harbolnas-2018", images: " ", price: " " },{ label: "Harbolnas Produk Lokal", category: "Collection", url: "/collections/produk-lokal", images: " ", price: " " },{ label: "Hari Belanja Online Nasional", category: "Collection", url: "/collections/harbolnas", images: " ", price: " " },{ label: "Hari Guru", category: "Collection", url: "/collections/hari-guru", images: " ", price: " " },{ label: "Healthy Creations", category: "Collection", url: "/collections/healthy-creations", images: " ", price: " " },{ label: "Healthy Hampers", category: "Collection", url: "/collections/healthy-hampers", images: " ", price: " " },{ label: "Heritage Box", category: "Collection", url: "/collections/heritage-boxes", images: " ", price: " " },{ label: "Heritage Chinese New Year Hampers", category: "Collection", url: "/collections/heritage-chinese-new-year-hampers", images: " ", price: " " },{ label: "Heritage Christmas Hampers", category: "Collection", url: "/collections/heritage-christmas-hampers", images: " ", price: " " },{ label: "Heritage Hampers", category: "Collection", url: "/collections/heritage-hampers", images: " ", price: " " },{ label: "Heritage Ramadan Hampers", category: "Collection", url: "/collections/heritage-ramadan-hampers", images: " ", price: " " },{ label: "Hexa Hampers", category: "Collection", url: "/collections/hexa-hampers", images: " ", price: " " },{ label: "Hexa Hampers Luar Jadetabek", category: "Collection", url: "/collections/hexa-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Hexa Newborn", category: "Collection", url: "/collections/hexa-newborn", images: " ", price: " " },{ label: "Holo Bag", category: "Collection", url: "/collections/holo-bag", images: " ", price: " " },{ label: "Holo Series", category: "Collection", url: "/collections/holo-series", images: " ", price: " " },{ label: "Home Decoration & Photo Frame", category: "Collection", url: "/collections/home-decoration", images: " ", price: " " }
7680,{ label: "Hospitalization", category: "Collection", url: "/collections/axa-hospitalization", images: " ", price: " " },{ label: "House Hampers", category: "Collection", url: "/collections/house-hampers", images: " ", price: " " },{ label: "I'm Sorry", category: "Collection", url: "/collections/rangkaian-bunga-sorry", images: " ", price: " " },{ label: "Ice Cream Cake", category: "Collection", url: "/collections/ice-cream-cake", images: " ", price: " " },{ label: "Idul Fitri", category: "Collection", url: "/collections/rangkaian-bunga-idul-fitri", images: " ", price: " " },{ label: "Jam Tangan", category: "Collection", url: "/collections/jam-tangan", images: " ", price: " " },{ label: "Jam Tangan Couple", category: "Collection", url: "/collections/jam-tangan-couple", images: " ", price: " " },{ label: "Jam Tangan Pria", category: "Collection", url: "/collections/jam-tangan-pria", images: " ", price: " " },{ label: "Jam Tangan Wanita", category: "Collection", url: "/collections/jam-tangan-wanita", images: " ", price: " " },{ label: "Jasa Packing Parcel", category: "Collection", url: "/collections/jasa-packing-parcel", images: " ", price: " " },{ label: "Jewelry", category: "Collection", url: "/collections/jewelry", images: " ", price: " " },{ label: "Jolly Hampers", category: "Collection", url: "/collections/jolly-hampers", images: " ", price: " " },{ label: "Jual Custom Cake & Hampers Termurah & Terlengkap | Outerbloom Florist & Gift", category: "Collection", url: "/collections/custom-cake-hampers", images: " ", price: " " },{ label: "Just Because", category: "Collection", url: "/collections/just-because", images: " ", price: " " },{ label: "Kado Makanan", category: "Collection", url: "/collections/kado-makanan", images: " ", price: " " },{ label: "Kado Minuman", category: "Collection", url: "/collections/kado-minuman", images: " ", price: " " },{ label: "Kado Natal", category: "Collection", url: "/collections/kado-natal", images: " ", price: " " },{ label: "Kado Unik", category: "Collection", url: "/collections/kado-unik", images: " ", price: " " },{ label: "Kado Valentine Nusantara", category: "Collection", url: "/collections/kado-valentine-nusantara", images: " ", price: " " },{ label: "Kado Valentine untuk Pria", category: "Collection", url: "/collections/kado-valentine-untuk-pria", images: " ", price: " " },{ label: "Kado Wisuda", category: "Collection", url: "/collections/kado-wisuda", images: " ", price: " " },{ label: "Kado Zodiak", category: "Collection", url: "/collections/kado-untuk-zodiak", images: " ", price: " " },{ label: "Karangan Bunga Aceh", category: "Collection", url: "/collections/karangan-bunga-aceh", images: " ", price: " " },{ label: "Karangan Bunga Ambon", category: "Collection", url: "/collections/karangan-bunga-ambon", images: " ", price: " " },{ label: "Karangan Bunga Atambua", category: "Collection", url: "/collections/karangan-bunga-atambua", images: " ", price: " " },{ label: "Karangan Bunga Bali", category: "Collection", url: "/collections/karangan-bunga-bali", images: " ", price: " " },{ label: "Karangan Bunga Balikpapan", category: "Collection", url: "/collections/karangan-bunga-balikpapan", images: " ", price: " " },{ label: "Karangan Bunga Bandung", category: "Collection", url: "/collections/karangan-bunga-bandung", images: " ", price: " " },{ label: "Karangan Bunga Bandung Barat", category: "Collection", url: "/collections/karangan-bunga-bandung-barat", images: " ", price: " " },{ label: "Karangan Bunga Bangka", category: "Collection", url: "/collections/karangan-bunga-bangka", images: " ", price: " " },{ label: "Karangan Bunga Banjarmasin", category: "Collection", url: "/collections/karangan-bunga-banjarmasin", images: " ", price: " " },{ label: "Karangan Bunga Banten", category: "Collection", url: "/collections/karangan-bunga-banten", images: " ", price: " " },{ label: "Karangan Bunga Banyumas", category: "Collection", url: "/collections/karangan-bunga-banyumas", images: " ", price: " " },{ label: "Karangan Bunga Banyuwangi", category: "Collection", url: "/collections/karangan-bunga-banyuwangi", images: " ", price: " " },{ label: "Karangan Bunga Batam", category: "Collection", url: "/collections/karangan-bunga-batam", images: " ", price: " " },{ label: "Karangan Bunga Baubau", category: "Collection", url: "/collections/karangan-bunga-baubau", images: " ", price: " " },{ label: "Karangan Bunga Bengkalis", category: "Collection", url: "/collections/karangan-bunga-bengkalis", images: " ", price: " " },{ label: "Karangan Bunga Bengkayang", category: "Collection", url: "/collections/karangan-bunga-bengkayang", images: " ", price: " " },{ label: "Karangan Bunga Bengkulu", category: "Collection", url: "/collections/karangan-bunga-bengkulu", images: " ", price: " " },{ label: "Karangan Bunga Blora", category: "Collection", url: "/collections/karangan-bunga-blora", images: " ", price: " " },{ label: "Karangan Bunga Bogor", category: "Collection", url: "/collections/karangan-bunga-bogor", images: " ", price: " " },{ label: "Karangan Bunga Bojonegoro", category: "Collection", url: "/collections/karangan-bunga-bojonegoro", images: " ", price: " " },{ label: "Karangan Bunga Boyolali", category: "Collection", url: "/collections/karangan-bunga-boyolali", images: " ", price: " " },{ label: "Karangan Bunga Brebes", category: "Collection", url: "/collections/karangan-bunga-brebes", images: " ", price: " " },{ label: "Karangan Bunga Bukittinggi", category: "Collection", url: "/collections/karangan-bunga-bukittinggi", images: " ", price: " " },{ label: "Karangan Bunga Ciamis", category: "Collection", url: "/collections/karangan-bunga-ciamis", images: " ", price: " " }
7680,{ label: "Karangan Bunga Cianjur", category: "Collection", url: "/collections/karangan-bunga-cianjur", images: " ", price: " " },{ label: "Karangan Bunga Cikarang", category: "Collection", url: "/collections/karangan-bunga-cikarang", images: " ", price: " " },{ label: "Karangan Bunga Cikupa", category: "Collection", url: "/collections/karangan-bunga-cikupa", images: " ", price: " " },{ label: "Karangan Bunga Cilacap", category: "Collection", url: "/collections/karangan-bunga-cilacap", images: " ", price: " " },{ label: "Karangan Bunga Cileunyi", category: "Collection", url: "/collections/karangan-bunga-cileunyi", images: " ", price: " " },{ label: "Karangan Bunga Cimahi", category: "Collection", url: "/collections/karangan-bunga-cimahi", images: " ", price: " " },{ label: "Karangan Bunga Cirebon", category: "Collection", url: "/collections/karangan-bunga-cirebon", images: " ", price: " " },{ label: "Karangan Bunga Ciwidey", category: "Collection", url: "/collections/karangan-bunga-ciwidey", images: " ", price: " " },{ label: "Karangan Bunga Danau Toba", category: "Collection", url: "/collections/karangan-bunga-danau-toba", images: " ", price: " " },{ label: "Karangan Bunga Demak", category: "Collection", url: "/collections/karangan-bunga-demak", images: " ", price: " " },{ label: "Karangan Bunga Denpasar", category: "Collection", url: "/collections/karangan-bunga-denpasar", images: " ", price: " " },{ label: "Karangan Bunga Depok", category: "Collection", url: "/collections/karangan-bunga-depok", images: " ", price: " " },{ label: "Karangan Bunga Duka Cita", category: "Collection", url: "/collections/karangan-bunga-duka-cita", images: " ", price: " " },{ label: "Karangan Bunga Garut", category: "Collection", url: "/collections/karangan-bunga-garut", images: " ", price: " " },{ label: "Karangan Bunga Gianyar", category: "Collection", url: "/collections/karangan-bunga-gianyar", images: " ", price: " " },{ label: "Karangan Bunga Gorontalo", category: "Collection", url: "/collections/karangan-bunga-gorontalo", images: " ", price: " " },{ label: "Karangan Bunga Gowa", category: "Collection", url: "/collections/karangan-bunga-gowa", images: " ", price: " " },{ label: "Karangan Bunga Gresik", category: "Collection", url: "/collections/karangan-bunga-gresik", images: " ", price: " " },{ label: "Karangan Bunga Grobogan", category: "Collection", url: "/collections/karangan-bunga-grobogan", images: " ", price: " " },{ label: "Karangan Bunga Gunung Kidul", category: "Collection", url: "/collections/karangan-bunga-gunungkidul", images: " ", price: " " },{ label: "Karangan Bunga Indramayu", category: "Collection", url: "/collections/karangan-bunga-indramayu", images: " ", price: " " },{ label: "Karangan Bunga Jakarta", category: "Collection", url: "/collections/karangan-bunga-jakarta", images: " ", price: " " },{ label: "Karangan Bunga Jambi", category: "Collection", url: "/collections/karangan-bunga-jambi", images: " ", price: " " },{ label: "Karangan Bunga Jayapura", category: "Collection", url: "/collections/karangan-bunga-jayapura", images: " ", price: " " },{ label: "Karangan Bunga Jember", category: "Collection", url: "/collections/karangan-bunga-jember", images: " ", price: " " },{ label: "Karangan Bunga Jembrana", category: "Collection", url: "/collections/karangan-bunga-jembrana", images: " ", price: " " },{ label: "Karangan Bunga Jepara", category: "Collection", url: "/collections/karangan-bunga-jepara", images: " ", price: " " },{ label: "Karangan Bunga Jombang", category: "Collection", url: "/collections/karangan-bunga-jombang", images: " ", price: " " },{ label: "Karangan Bunga Kampung Baru", category: "Collection", url: "/collections/karangan-bunga-kampung-baru", images: " ", price: " " },{ label: "Karangan Bunga Kapuas", category: "Collection", url: "/collections/karangan-bunga-kapuas", images: " ", price: " " },{ label: "Karangan Bunga Karanganyar", category: "Collection", url: "/collections/karangan-bunga-karanganyar", images: " ", price: " " },{ label: "Karangan Bunga Karangasem", category: "Collection", url: "/collections/karangan-bunga-karangasem", images: " ", price: " " },{ label: "Karangan Bunga Karawang", category: "Collection", url: "/collections/karangan-bunga-karawang", images: " ", price: " " },{ label: "Karangan Bunga Kartosuro", category: "Collection", url: "/collections/karangan-bunga-kartosuro", images: " ", price: " " },{ label: "Karangan Bunga Kebumen", category: "Collection", url: "/collections/karangan-bunga-kebumen", images: " ", price: " " },{ label: "Karangan Bunga Kediri", category: "Collection", url: "/collections/karangan-bunga-kediri", images: " ", price: " " },{ label: "Karangan Bunga Kendal", category: "Collection", url: "/collections/karangan-bunga-ken
7680dal", images: " ", price: " " },{ label: "Karangan Bunga Kendari", category: "Collection", url: "/collections/karangan-bunga-kendari", images: " ", price: " " },{ label: "Karangan Bunga Ketapang", category: "Collection", url: "/collections/karangan-bunga-ketapang", images: " ", price: " " },{ label: "Karangan Bunga Klaten", category: "Collection", url: "/collections/karangan-bunga-klaten", images: " ", price: " " },{ label: "Karangan Bunga Kota Batu", category: "Collection", url: "/collections/karangan-bunga-kota-batu", images: " ", price: " " },{ label: "Karangan Bunga Kudus", category: "Collection", url: "/collections/karangan-bunga-kudus", images: " ", price: " " },{ label: "Karangan Bunga Kupang", category: "Collection", url: "/collections/karangan-bunga-kupang", images: " ", price: " " },{ label: "Karangan Bunga Lamongan", category: "Collection", url: "/collections/karangan-bunga-lamongan", images: " ", price: " " },{ label: "Karangan Bunga Lampung", category: "Collection", url: "/collections/karangan-bunga-lampung", images: " ", price: " " },{ label: "Karangan Bunga Langkat", category: "Collection", url: "/collections/karangan-bunga-langkat", images: " ", price: " " },{ label: "Karangan Bunga Lembang", category: "Collection", url: "/collections/karangan-bunga-lembang", images: " ", price: " " },{ label: "Karangan Bunga Lombok", category: "Collection", url: "/collections/karangan-bunga-lombok", images: " ", price: " " },{ label: "Karangan Bunga Lubuk Pakam", category: "Collection", url: "/collections/karangan-bunga-lubuk-pakam", images: " ", price: " " },{ label: "Karangan Bunga Lumajang", category: "Collection", url: "/collections/karangan-bunga-lumajang", images: " ", price: " " },{ label: "Karangan Bunga Madiun", category: "Collection", url: "/collections/karangan-bunga-madiun", images: " ", price: " " },{ label: "Karangan Bunga Magelang", category: "Collection", url: "/collections/karangan-bunga-magelang", images: " ", price: " " },{ label: "Karangan Bunga Majalengka", category: "Collection", url: "/collections/karangan-bunga-majalengka", images: " ", price: " " },{ label: "Karangan Bunga Makassar", category: "Collection", url: "/collections/karangan-bunga-makassar", images: " ", price: " " },{ label: "Karangan Bunga Malang", category: "Collection", url: "/collections/karangan-bunga-malang", images: " ", price: " " },{ label: "Karangan Bunga Mamuju", category: "Collection", url: "/collections/karangan-bunga-mamuju", images: " ", price: " " },{ label: "Karangan Bunga Manado", category: "Collection", url: "/collections/karangan-bunga-manado", images: " ", price: " " },{ label: "Karangan Bunga Manokwari", category: "Collection", url: "/collections/karangan-bunga-manokwari", images: " ", price: " " },{ label: "Karangan Bunga Maros", category: "Collection", url: "/collections/karangan-bunga-maros", images: " ", price: " " },{ label: "Karangan Bunga Mataram", category: "Collection", url: "/collections/karangan-bunga-mataram", images: " ", price: " " },{ label: "Karangan Bunga Mojokerto", category: "Collection", url: "/collections/karangan-bunga-mojokerto", images: " ", price: " " },{ label: "Karangan Bunga Nganjuk", category: "Collection", url: "/collections/karangan-bunga-nganjuk", images: " ", price: " " },{ label: "Karangan Bunga Nias", category: "Collection", url: "/collections/karangan-bunga-nias", images: " ", price: " " },{ label: "Karangan Bunga Padang", category: "Collection", url: "/collections/karangan-bunga-padang", images: " ", price: " " },{ label: "Karangan Bunga Palangkaraya", category: "Collection", url: "/collections/karangan-bunga-palangkaraya", images: " ", price: " " },{ label: "Karangan Bunga Palu", category: "Collection", url: "/collections/karangan-bunga-palu", images: " ", price: " " },{ label: "Karangan Bunga Pangkal Pinang", category: "Collection", url: "/collections/karangan-bunga-pangkal-pinang", images: " ", price: " " },{ label: "Karangan Bunga Papan", category: "Collection", url: "/collections/karangan-bunga", images: " ", price: " " },{ label: "Karangan Bunga Papan Bandar Lampung", category: "Collection", url: "/collections/karangan-bunga-bandar-lampung", images: " ", price: " " },{ label: "Karangan Bunga Papan Bekasi", category: "Collection", url: "/collections/karangan-bunga-bekasi", images: " ", price: " " },{ label: "Karangan Bunga Papan Binjai", category: "Collection", url: "/collections/karangan-bunga-binjai", images: " ", price: " " },{ label: "Karangan Bunga Papan Blitar", category: "Collection", url: "/collections/karangan-bunga-blitar", images: " ", price: " " },{ label: "Karangan Bunga Papan Buleleng", category: "Collection", url: "/collections/karangan-bunga-buleleng", images: " ", price: " " },{ label: "Karangan Bunga Papan Cibubur", category: "Collection", url: "/collections/karangan-bunga-cibubur", images: " ", price: " " },{ label: "Karangan Bunga Papan Deli Serdang", category: "Collection", url: "/collections/karangan-bunga-deli-serdang", images: " ", price: " " },{ label: "Karangan Bunga Papan Jakarta Timur", category: "Collection", url: "/collections/karangan-bunga-jakarta-timur", images: " ", price: " " },{ label: "Karangan Bunga Papan Karo", category: "Collection", url: "/collections/karangan-bunga-karo", images: " ", price: " " },{ label: "Karangan Bunga Papan Medan", category: "Collection", url: "/collections/karangan-bunga-medan", images: " ", price: " " },{ label: "Karangan Bunga Papan Ngawi", category: "Collection", url: "/collections/karangan-bunga-ngawi", images: " ", price: " " },{ label: "Karangan Bunga Papan Palembang", category: "Collection", url: "/collections/karangan-bunga-palembang", images: " ", price: " " },{ label: "Karangan Bunga Papan Pemalang", category: "Collection", url: "/collections/karangan-bunga-pemalang", images: " ", price: " " },{ label: "Karangan Bunga Papan Rembang", category: "Collection", url: "/collections/karangan-bunga-rembang", images: " ", price: " " },{ label: "Karangan Bunga Papan Sragen", category: "Collection", url: "/collections/karangan-bunga-sragen", images: " ", price: " " },{ label: "Karangan Bunga Papan Tegal", category: "Collection", url: "/collections/karangan-bunga-tegal", images: " ", price: " " },{ label: "Karangan Bunga Papan Temanggung", category: "Collection", url: "/collections/karangan-bunga-temanggung", images: " ", price: " " },{ label: "Karangan Bunga Parepare", category: "Collection", url: "/collections/karangan-bunga-parepare", images: " ", price: " " },{ label: "Karangan Bunga Pasuruan", category: "Collection", url: "/collections/karangan-bunga-pasuruan", images: " ", price: " " },{ label: "Karangan Bunga Pati", category: "Collection", url: "/collections/karangan-bunga-pati", images: " ", price: " " },{ label: "Karangan Bunga Pekalongan", category: "Collection", url: "/collections/karangan-bunga-pekalongan", images: " ", price: " " },{ label: "Karangan Bunga Pekanbaru", category: "Collection", url: "/collections/karangan-bunga-pekanbaru", images: " ", price: " " },{ label: "Karangan Bunga Pematangsiantar", category: "Collection", url: "/collections/karangan-bunga-pematangsiantar", images: " ", price: " " },{ label: "Karangan Bunga Ponorogo", category: "Collection", url: "/collections/karangan-bunga-ponorogo", images: " ", price: " " },{ label: "Karangan Bunga Pontianak", category: "Collection", url: "/collections/karangan-bunga-pontianak", images: " ", price: " " },{ label: "Karangan Bunga Probolinggo", category: "Collection", url: "/collections/karangan-bunga-probolinggo", images: " ", price: " " },{ label: "Karangan Bunga Purbalingga", category: "Collection", url: "/collections/karangan-bunga-purbalingga", images: " ", price: " " },{ label: "Karangan Bunga Purwokerto", category: "Collection", url: "/collections/karangan-bunga-purwokerto", images: " ", price: " " },{ label: "Karangan Bunga Purworejo", category: "Collection", url: "/collections/karangan-bunga-purworejo", images: " ", price: " " },{ label: "Karangan Bunga Riau", category: "Collection", url: "/collections/karangan-bunga-riau", images: " ", price: " " },{ label: "Karangan Bunga Salatiga", category: "Collection", url: "/collections/karangan-bunga-salatiga", images: " ", price: " " },{ label: "Karangan Bunga Samarinda", category: "Collection", url: "/collections/karangan-bunga-samarinda", images: " ", price: " " },{ label: "Karangan Bunga Semarang", category: "Collection", url: "/collections/karangan-bunga-semarang", images: " ", price: " " },{ label: "Karangan Bunga Serang", category: "Collection", url: "/collections/karangan-bunga-serang", images: " ", price: " " },{ label: "Karangan Bunga Sibolga", category: "Collection", url: "/collections/karangan-bunga-sibolga", images: " ", price: " " },{ label: "Karangan Bunga Sidoarjo", category: "Collection", url: "/collections/karangan-bunga-sidoarjo", images: " ", price: " " },{ label: "Karangan Bunga Singkawang", category: "Collection", url: "/collections/karangan-bunga-singkawang", images: " ", price: " " },{ label: "Karangan Bunga Solo", category: "Collection", url: "/collections/karangan-bunga-solo", images: " ", price: " " },{ label: "Karangan Bunga Sorong", category: "Collection", url: "/collections/karangan-bunga-sorong", images: " ", price: " " },{ label: "Karangan Bunga Subang", category: "Collection", url: "/collections/karangan-bunga-subang", images: " ", price: " " },{ label: "Karangan Bunga Sukabumi", category: "Collection", url: "/collections/karangan-bunga-sukabumi", images: " ", price: " " },{ label: "Karangan Bunga Sumbawa", category: "Collection", url: "/collections/karangan-bunga-sumbawa", images: " ", price: " " },{ label: "Karangan Bunga Surabaya", category: "Collection", url: "/collections/karangan-bunga-surabaya", images: " ", price: " " },{ label: "Karangan Bunga Surakarta", category: "Collection", url: "/collections/karangan-bunga-surakarta", images: " ", price: " " },{ label: "Karangan Bunga Tangerang", category: "Collection", url: "/collections/karangan-bunga-tangerang", images: " ", price: " " },{ label: "Karangan Bunga Tasikmalaya", category: "Collection", url: "/collections/karangan-bunga-tasikmalaya", images: " ", price: " " },{ label: "Karangan Bunga Ternate", category: "Collection", url: "/collections/karangan-bunga-ternate", images: " ", price: " " },{ label: "Karangan Bunga Tolitoli", category: "Collection", url: "/collections/karangan-bunga-tolitoli", images: " ", price: " " },{ label: "Karangan Bunga Toraja", category: "Collection", url: "/collections/karangan-bunga-toraja", images: " ", price: " " },{ label: "Karangan Bunga Tuban", category: "Collection", url: "/collections/karangan-bunga-tuban", images: " ", price: " " },{ label: "Karangan Bunga Tulungagung", category: "Collection", url: "/collections/karangan-bunga-tulungagung", images: " ", price: " " },{ label: "Karangan Bunga Wakatobi", category: "Collection", url: "/collections/karangan-bunga-wakatobi", images: " ", price: " " },{ label: "Karangan Bunga Wiyung", category: "Collection", url: "/collections/karangan-bunga-wiyung", images: " ", price: " " },{ label: "Karangan Bunga Wonogiri", category: "Collection", url: "/collections/karangan-bunga-wonogiri", images: " ", price: " " },{ label: "Karangan Bunga Wonokromo", category: "Collection", url: "/collections/karangan-bunga-wonokromo", images: " ", price: " " },{ label: "Karangan Bunga Wonosobo", category: "Collection", url: "/collections/karangan-bunga-wonosobo", images: " ", price: " " },{ label: "Karangan Bunga Yogyakarta", category: "Collection", url: "/collections/karangan-bunga-yogyakarta", images: " ", price: " " },{ label: "Kartu Ucapan", category: "Collection", url: "/collections/kartu-ucapan", images: " ", price: " " },{ label: "Kue Anniversary", category: "Collection", url: "/collections/kue-anniversary", images: " ", price: " " },{ label: "Kue Bachelorette", category: "Collection", url: "/collections/kue-bachelorette", images: " ", price: " " },{ label: "Kue Bandung", category: "Collection", url: "/collections/kue-bandung", images: " ", price: " " },{ label: "Kue Bulan", category: "Collection", url: "/collections/kue-bulan", images: " ", price: " " },{ label: "Kue Imlek", category: "Collection", url: "/collections/kue-imlek", images: " ", price: " " },{ label: "Kue Kering", category: "Collection", url: "/collections/kue-kering", images: " ", price: " " },{ label: "Kue Natal", category: "Collection", url: "/collections/kue-natal", images: " ", price: " " },{ label: "Kue Pernikahan", category: "Collection", url: "/collections/kue-pernikahan", images: " ", price: " " },{ label: "Kue Tart", category: "Collection", url: "/collections/kue-tart", images: " ", price: " " },{ label: "Kue Tart Oma Elly", category: "Collection", url: "/collections/kue-tart-oma-elly", images: " ", price: " " },{ label: "Kue Ulang Tahun", category: "Collection", url: "/collections/kue-ulang-tahun", images: " ", price: " " },{ label: "Lalique", category: "Collection", url: "/collections/lalique", images: " ", price: " " },{ label: "Le Sucre Du Patisserie", category: "Collection", url: "/collections/le-sucre-du-patisserie", images: " ", price: " " },{ label: "Leo âï¸ 23July - 22Augst", category: "Collection", url: "/collections/kado-untuk-zodiak-leo", images: " ", price: " " },{ label: "Letter Box", category: "Collection", url: "/collections/letter-box", images: " ", price: " " },{ label: "Libra âï¸ 23Sept - 23Oct", category: "Collection", url: "/collections/kado-untuk-zodiak-libra", images: " ", price: " " },{ label: "Lilin Aromaterapi", category: "Collection", url: "/collections/lilin-aromaterapi", images: " ", price: " " },{ label: "Lily", category: "Collection", url: "/collections/bunga-lily", images: " ", price: " " },{ label: "Lindt", category: "Collection", url: "/collections/lindt", images: " ", price: " " },{ label: "Locations", category: "Collection", url: "/collections/locations", images: " ", price: " " },{ label: "Love & Romance", category: "Collection", url: "/collections/rangkaian-bunga-i-love-you", images: " ", price: " " },{ label: "Love Bag Collection", category: "Collection", url: "/collections/love-bag-collection", images: " ", price: " " },{ label: "Love Bundle", category: "Collection", url: "/collections/paket-promo-spesial-valentine", images: " ", price: " " },{ label: "Love Bundle Nusantara", category: "Collection", url: "/collections/love-bundle-nusantara", images: " ", price: " " },{ label: "Luxury Chinese New Year Hampers", category: "Collection", url: "/collections/luxury-chinese-new-year-hampers", images: " ", price: " " },{ label: "Luxury Christmas Hampers", category: "Collection", url: "/collections/luxury-christmas-hampers", images: " ", price: " " },{ label: "Luxury Hampers", category: "Collection", url: "/collections/luxury-hampers", images: " ", price: " " },{ label: "Luxury Hampers Luar Jadetabek", category: "Collection", url: "/collections/luxury-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Luxury Newborn Hampers Collection", category: "Collection", url: "/collections/luxury-newborn-hampers-collection", images: " ", price: " " },{ label: "Luxury Ramadan Hampers", category: "Collection", url: "/collections/luxury-ramadan-hampers", images: " ", price: " " },{ label: "Luxury Set", category: "Collection", url: "/collections/luxury", images: " ", price: " " },{ label: "Manual", category: "Collection", url: "/collections/manual", images: " ", price: " " },{ label: "Massimo Gelato", category: "Collection", url: "/collections/massimo-gelato", images: " ", price: " " },{ label: "Men's Collection", category: "Collection", url: "/collections/mens-collection", images: " ", price: " " },{ label: "Mercedes Benz", category: "Collection", url: "/collections/mercedes-benz", images: " ", price: " " },{ label: "Mercy Hampers", category: "Collection", url: "/collections/mercy-
7680hampers", images: " ", price: " " },{ label: "Merry Hampers", category: "Collection", url: "/collections/merry-hampers", images: " ", price: " " },{ label: "Merry Hampers Luar Jabodetabek", category: "Collection", url: "/collections/merry-hampers-luar-jabodetabek", images: " ", price: " " },{ label: "Mini Bouquet", category: "Collection", url: "/collections/mini-bouquet", images: " ", price: " " },{ label: "Miss Mondial", category: "Collection", url: "/collections/miss-mondial", images: " ", price: " " },{ label: "Modern & Chic Chinese New Year", category: "Collection", url: "/collections/modern-chic-chinese-new-year", images: " ", price: " " },{ label: "Modern & Chic Christmas Hampers", category: "Collection", url: "/collections/modern-chic-christmas", images: " ", price: " " },{ label: "Modern & Chic Hampers", category: "Collection", url: "/collections/modern-chic-hampers", images: " ", price: " " },{ label: "Modern & Chic Hampers Luar Jadetabek", category: "Collection", url: "/collections/modern-chic-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Modern & Chic Ramadan Hampers", category: "Collection", url: "/collections/modern-chic-ramadan-hampers", images: " ", price: " " },{ label: "Modern & Classy Hampers", category: "Collection", url: "/collections/parcel-unik", images: " ", price: " " },{ label: "Modern 3D Cake", category: "Collection", url: "/collections/custom-3d-cake", images: " ", price: " " },{ label: "Modern Style Flowers", category: "Collection", url: "/collections/modern-style-flowers", images: " ", price: " " },{ label: "Monochrome Hampers", category: "Collection", url: "/collections/monochrome-hampers", images: " ", price: " " },{ label: "Monochrome Hampers Luar Jadetabek", category: "Collection", url: "/collections/monochrome-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Mooncake", category: "Collection", url: "/collections/kue-bulan-mooncake-2025-mid-autumn-festival", images: " ", price: " " },{ label: "Mooncake Assorted Selection", category: "Collection", url: "/collections/mooncake-assorted-selection", images: " ", price: " " },{ label: "Mother's Day", category: "Collection", url: "/collections/rangkaian-bunga-hari-ibu", images: " ", price: " " },{ label: "Mother's Day Special", category: "Collection", url: "/collections/kado-untuk-ibu", images: " ", price: " " },{ label: "Necklace", category: "Collection", url: "/collections/kalung", images: " ", price: " " },{ label: "NestBloom Bird Nest Hampers", category: "Collection", url: "/collections/nestbloom-birds-nest", images: " ", price: " " },{ label: "NestBloom Gift Set", category: "Collection", url: "/collections/nestbloom-gift-set", images: " ", price: " " },{ label: "Nestbloom Ritual Kit", category: "Collection", url: "/collections/nestbloom-ritual-kit", images: " ", price: " " },{ label: "NestBloom Single Bloom", category: "Collection", url: "/collections/nestbloom-single-bloom", images: " ", price: " " },{ label: "New Collection", category: "Collection", url: "/collections/produk-baru", images: " ", price: " " },{ label: "New Product", category: "Collection", url: "/collections/new-product", images: " ", price: " " },{ label: "Newborn", category: "Collection", url: "/collections/rangkaian-bunga-newborn-baby", images: " ", price: " " },{ label: "Newborn Hampers", category: "Collection", url: "/collections/parcel-newborn", images: " ", price: " " },{ label: "Occasions", category: "Collection", url: "/collections/occasions", images: " ", price: " " },{ label: "Oma Elly", category: "Collection", url: "/collections/oma-elly", images: " ", price: " " },{ label: "Oma Elly Gelato", category: "Collection", url: "/collections/oma-elly-gelato", images: " ", price: " " },{ label: "Orchid", category: "Collection", url: "/collections/bunga-anggrek", images: " ", price: " " },{ label: "Orori", category: "Collection", url: "/collections/orori", images: " ", price: " " },{ label: "Outerbloom", category: "Collection", url: "/collections/outerbloom", images: " ", price: " " },{ label: "Outerbloom Cake", category: "Collection", url: "/collections/outerbloom-cake", images: " ", price: " " },{ label: "Outerbloom Florist", category: "Collection", url: "/collections/outerbloom-florist", images: " ", price: " " },{ label: "Outerbloom Gift", category: "Collection", url: "/collections/outerbloom-gift", images: " ", price: " " },{ label: "Outerbloom Hampers", category: "Collection", url: "/collections/outerbloom-hampers", images: " ", price: " " },{ label: "Outerbloom Indonesia", category: "Collection", url: "/collections/indonesia", images: " ", price: " " },{ label: "Outerbloom x Boho Panna", category: "Collection", url: "/collections/outerbloom-x-boh
7680o-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: " " }
7680,{ 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: " " }
7680,{ 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: " " }
7680,{ 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: " " }
7680,{ 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: " " }
7680,{ 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: " " }
7680,{ 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: " " }
7680,{ label: "Paper Flower Board", category: "Collection", url: "/collections/papan-bunga-kertas", images: " ", price: " " },{ label: "Paper Flower Board Bali", category: "Collection", url: "/collections/papan-bunga-kertas-bali", images: " ", price: " " },{ label: "Paper Flower Board Gresik", category: "Collection", url: "/collections/papan-bunga-kertas-gresik", images: " ", price: " " },{ label: "Paper Flower Board Sidoarjo", category: "Collection", url: "/collections/papan-bunga-kertas-sidoarjo", images: " ", price: " " },{ label: "Paper Flower Board Surabaya", category: "Collection", url: "/collections/papan-bunga-kertas-surabaya", images: " ", price: " " },{ label: "Paper Flower Board Yogyakarta", category: "Collection", url: "/collections/papan-bunga-kertas-yogyakarta", images: " ", price: " " },{ label: "Parcel", category: "Collection", url: "/collections/parcel", images: " ", price: " " },{ label: "Parcel Buah", category: "Collection", url: "/collections/parcel-buah-segar", images: " ", price: " " },{ label: "Parcel Buah Bandung", category: "Collection", url: "/collections/parcel-buah-bandung", images: " ", price: " " },{ label: "Parcel Buah Semarang", category: "Collection", url: "/collections/parcel-buah-semarang", images: " ", price: " " },{ label: "Parcel Buah Sidoarjo", category: "Collection", url: "/collections/parcel-buah-sidoarjo", images: " ", price: " " },{ label: "Parcel Buah Surabaya", category: "Collection", url: "/collections/parcel-buah-surabaya", images: " ", price: " " },{ label: "Parcel Imlek 2025", category: "Collection", url: "/collections/parcel-imlek", images: " ", price: " " },{ label: "Parcel Imlek Bandung", category: "Collection", url: "/collections/parcel-imlek-bandung", images: " ", price: " " },{ label: "Parcel Imlek Nusantara", category: "Collection", url: "/collections/parcel-imlek-nusantara", images: " ", price: " " },{ label: "Parcel Lebaran Bandung", category: "Collection", url: "/collections/parcel-lebaran-bandung", images: " ", price: " " },{ label: "Parcel Lebaran Nusantara", category: "Collection", url: "/collections/parcel-lebaran-indonesia", images: " ", price: " " },{ label: "Parcel Lebaran Surabaya", category: "Collection", url: "/collections/parcel-lebaran-surabaya", images: " ", price: " " },{ label: "Parcel Makanan", category: "Collection", url: "/collections/parcel-makanan", images: " ", price: " " },{ label: "Parcel Natal & Tahun Baru 2026", category: "Collection", url: "/collections/hampers-natal", images: " ", price: " " },{ label: "Parcel Natal & Tahun Baru Bandung", category: "Collection", url: "/collections/parcel-natal-bandung", images: " ", price: " " },{ label: "Parcel Newborn Nusantara", category: "Collection", url: "/collections/parcel-newborn-nusantara", images: " ", price: " " },{ label: "Parcel Tahun Baru", category: "Collection", url: "/collections/new-year-tahun-baru", images: " ", price: " " },{ label: "Party Supplies", category: "Collection", url: "/collections/party-supplies", images: " ", price: " " },{ label: "Partysaurus", category: "Collection", url: "/collections/partysaurus", images: " ", price: " " },{ label: "Pasar Bunga Splendid Malang", category: "Collection", url: "/collections/pasar-bunga-splendid-malang", images: " ", price: " " },{ label: "Passionate Red Valentine", category: "Collection", url: "/collections/red-valentine", images: " ", price: " " },{ label: "Pendant", category: "Collection", url: "/collections/liontin", images: " ", price: " " },{ label: "Personalized Fashion", category: "Collection", url: "/collections/fashion", images: " ", price: " " },{ label: "Personalized Gift", category: "Collection", url: "/collections/personalized-gift", images: " ", price: " " },{ label: "Personalized Gift Pria", category: "Collection", url: "/collections/personalized-gift-pria", images: " ", price: " " },{ label: "Personalized Gift Wanita", category: "Collection", url: "/collections/personalized-gift-wanita", images: " ", price: " " },{ label: "Personalized Gifts", category: "Collection", url: "/collections/personalized-gifts", images: " ", price: " " },{ label: "Pesca Ice Cream Cakes", category: "Collection", url: "/collections/pesca", images: " ", price: " " },{ label: "Phone Case", category: "Collection", url: "/collections/phone-case", images: " ", price: " " },{ label: "Photobook", category: "Collection", url: "/collections/photobook", images: " ", price: " " },{ label: "Pisces âï¸ 19Feb - 20March", category: "Collection", url: "/collections/kado-untuk-zodiak-pisces", images: " ", price: " " },{ label: "Pohon Natal", category: "Collection", url: "/collections/pohon-natal", images: " ", price: " " },{ label: "Premium Hampers", category: "Collection", url: "/collections/parcel-premium", images: " ", price: " " },{ label: "Premium Newborn Hampers Collection", category: "Collection", url: "/collections/premium-newborn-hampers-collection", images: " ", price: " " },{ label: "Printing Cake", category: "Collection", url: "/collections/printing-cake", images: " ", price: " " },{ label: "Prom", category: "Collection", url: "/collections/prom", images: " ", price: " " },{ label: "Promo Merdeka", category: "Collection", url: "/collections/merdeka", images: " ", price: " " },{ label: "Rangkaian Bunga", category: "Collection", url: "/collections/rangkaian-bunga", images: " ", price: " " },{ label: "Rangkaian Bunga Dekorasi", category: "Collection", url: "/collections/rangkaian-bunga-dekorasi", images: " ", price: " " },{ label: "Rangkaian Bunga Ulang Tahun", category: "Collection", url: "/collections/rangkaian-bunga-ulang-tahun", images: " ", price: " " },{ label: "Romantic & Sweets", category: "Collection", url: "/collections/romantic-sweets", images: " ", price: " " },{ label: "Romantic Package", category: "Collection", url: "/collections/romantic-package", images: " ", price: " " },{ label: "Rose Beam", category: "Collection", url: "/collections/rose-beam", images: " ", price: " " },{ label: "Rose Box", category: "Collection", url: "/collections/rose-box", images: " ", price: " " },{ label: "Roses", category: "Collection", url: "/collections/bunga-mawar", images: " ", price: " " },{ label: "Rp 500.000 - Rp 800.000", category: "Collection", url: "/collections/rp-500-000-rp-800-000", images: " ", price: " " },{ label: "Rp 800.000 - Rp 1.000.000", category: "Collection", url: "/collections/rp-800-000-rp-1-000-000", images: " ", price: " " },{ label: "Rustic & Monochrome Ramadan Hampers", category: "Collection", url: "/collections/rustic-monochrome-ramadanhampers", images: " ", price: " " },{ label: "Rustic Bloom", category: "Collection", url: "/collections/dried-flowers", images: " ", price: " " },{ label: "Rustic Style Flowers", category: "Collection", url: "/collections/rustic-style-flowers", images: " ", price: " " },{ label: "Sagittarius âï¸ 22Nov - 21Des", category: "Collection", url: "/collections/kado-untuk-zodiak-sagittarius", images: " ", price: " " },{ label: "Sameday Delivery", category: "Collection", url: "/collections/sameday", images: " ", price: " " },{ label: "Savoury Dish", category: "Collection", url: "/collections/savoury-dish", images: " ", price: " " },{ label: "Saychiz", category: "Collection", url: "/collections/saychiz", images: " ", price: " " },{ label: "Scented Candles", category: "Collection", url: "/collections/scented-candles", images: " ", price: " " },{ label: "Scorpio âï¸ 24Oct - 21Nov", category: "Collection", url: "/collections/kado-untuk-zodiak-scorpio", images: " ", price: " " },{ label: "Self Pick-Up", category: "Collection", url: "/collections/self-pick-up", images: " ", price: " " },{ label: "Semua Produk", category: "Collection", url: "/collections/all", images: " ", price: " " },{ label: "Serenitea", category: "Collection", url: "/collections/serenitea", images: " ", price: " " },{ label: "Share Outerbloom Moment", category: "Collection", url: "/collections/share-moment", images: " ", price: " " },{ label: "Share your Happiness", category: "Collection", url: "/collections/share-happiness", images: " ", price: " " },{ label: "Signature Cake", category: "Collection", url: "/collections/signature-cake", images: " ", price: " " },{ label: "Signature Chinese New Year Hampers", category: "Collection", url: "/collections/signature-chinese-new-year-hampers", images: " ", price: " " },{ label: "Signature Christmas & New Year Hampers", category: "Collection", url: "/collections/signature-christmas-hampers", images: " ", price: " " },{ label: "Signature Hampers", category: "Collection", url: "/collections/signature-hampers", images: " ", price: " " },{ label: "Signature Hampers Luar Jadetabek", category: "Collection", url: "/collections/signature-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Signature Hampers Sameday", category: "Collection", url: "/collections/signature-hampers-sameday", images: " ", price: " " },{ label: "Signature Ramadan Hampers", category: "Collection", url: "/collections/signature-ramadan-hampers", images: " ", price: " " },{ label: "Slice Cake", category: "Collection", url: "/collections/slice-cake", images: " ", price: " " },{ label: "Snack Box", category: "Collection", url: "/collections/snack-box", images: " ", price: " " },{ label: "Sol et Terre", category: "Collection", url: "/collections/sol-et-terre", images: " ", price: " " },{ label: "Sorbet", category: "Collection", url: "/collections/sorbet", images: " ", price: " " },{ label: "Special Day", category: "Collection", url: "/collections/special-day", images: " ", price: " " },{ label: "Special Edition", category: "Collection", url: "/collections/special-edition", images: " ", price: " " },{ label: "Special For Her", category: "Collection", url: "/collections/special-for-her", images: " ", price: " " },{ label: "KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari.", category: "Collection", url: "/collections/standing-flower", images: " ", price: " " },{ label: "KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari. Bali", category: "Collection", url: "/collections/standing-flower-bali", images: " ", price: " " },{ label: "KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari. Bandung", category: "Collection", url: "/collections/standing-flower-bandung", images: " ", price: " " },{ label: "KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari. Congratulations", category: "Collection", url: "/collections/standing-flower-congratulations", images: " ", price: " " },{ label: "KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari. Demak", category: "Collection", url: "/collections/standing-flower-demak", images: " ", price: " " },{ label: "KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari. Jepara", category: "Collection", url: "/collections/standing-flower-jepara", images: " ", price: " " },{ label: "KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari. Semarang", category: "Collection", url: "/collections/standing-flower-semarang", images: " ", price: " " },{ label: "KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari. Sidoarjo", category: "Collection", url: "/collections/standing-flower-sidoarjo", images: " ", price: " " },{ label: "KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari. Surabaya", category: "Collection", url: "/collections/standing-flower-surabaya", images: " ", price: " " },{ label: "KVTOTO hadir sebagai situs login pasaran togel online terlengkap dan terpercaya dengan akses cepat, informasi pasaran terbaru, serta layanan yang mudah digunakan setiap hari. Yogyakarta", category: "Collection", url: "/collections/standing-flower-yogyakarta", images: " ", price: " " },{ label: "Standing Giant Flower", category: "Collection", url: "/collections/standing-giant-flower", images: " ", price: " " },{ label: "Stationery", category: "Collection", url: "/collections/stationery", images: " ", price: " " },{ label: "Steekwerk", category: "Collection", url: "/collections/steekwerk", images: " ", price: " " },{ label: "Stylish Hampers", category: "Collection", url: "/collections/stylish-hampers", images: " ", price: " " },{ label: "Stylish Hampers Luar Jadetabek", category: "Collection", url: "/collections/stylish-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Succulent", category: "Collection", url: "/collections/succulent", images: " ", price: " " },{ label: "Sunflower", category: "Collection", url: "/collections/bunga-matahari", images: " ", price: " " },{ label: "Sweet & Savoury Hampers", category: "Collection", url: "/collections/sweet-savoury-hampers", images: " ", price: " " },{ label: "Sweet Gracie", category: "Collection", url: "/collections/sweet-gracie", images: " ", price: " " },{ label: "Sweet Pastel Love", category: "Collection", url: "/collections/pastel-love", images: " ", price: " " },{ label: "Sweet Pastel Love Nusantara", category: "Collection", url: "/collections/sweet-pastel-love-nusantara", images: " ", price: " " },{ label: "Sweet Treats", category: "Collection", url: "/collections/sweet-treats", images: " ", price: " " },{ label: "Sweetooth", category: "Collection", url: "/collections/sweetooth", images: " ", price: " " },{ label: "Taurus âï¸ 20April - 20May", category: "Collection", url: "/collections/kado-untuk-zodiak-taurus", images: " ", price: " " },{ label: "Teddy Bear", category: "Collection", url: "/collections/boneka-teddy-bear", images: " ", price: " " },{ label: "Teh", category: "Collection", url: "/collections/teh", images: " ", price: " " },{ label: "Test Error", category: "Collection", url: "/collections/test-error", images: " ", price: " " },{ label: "Testing", category: "Collection", url: "/collections/testing", images: " ", price: " " },{ label: "Thank You", category: "Collection", url: "/collections/rangkaian-bunga-ucapan-terima-kasih", images: " ", price: " " },{ label: "The Classic Astoria", category: "Collection", url: "/collections/astoria", images: " ", price: " " },{ label: "The Classic Enchanted Dome", category: "Collection", url: "/collections/enchanted-dome", images: " ", price: " " },{ label: "The Enchanted Love Pirouette Special Edition", category: "Collection", url: "/collections/the-enchanted-love-pirouette-special-edition", images: " ", price: " " },{ label: "The F Thing", category: "Collection", url: "/collections/the-f-thing", images: " ", price: " " },{ label: "The First", category: "Collection", url: "/collections/the-first", images: " ", price: " " },{ label: "The Novo Astoria", category: "Collection", url: "/collections/the-novo-astoria", images: " ", price: " " },{ label: "The Novo Enchanted Dome", category: "Collection", url: "/collections/the-novo-enchanted-dome", images: " ", price: " " },{ label: "The Novo Enchanted Dome Special Edition", category: "Collection", url: "/collections/the-novo-enchanted-dome-special-edition", images: " ", price: " " },{ label: "The Palace", category: "Collection", url: "/collections/the-palace", images: " ", price: " " },{ label: "Ties", category: "Collection", url: "/collections/dasi", images: " ", price: " " },{ label: "Tisane", category: "Collection", url: "/collections/tisane", images: " ", price: " " },{ label: "Toko Bunga Aceh", category: "Collection", url: "/collections/toko-bunga-aceh", images: " ", price: " " },{ label: "Toko Bunga Ambon", category: "Collection", url: "/collection
7680s/toko-bunga-ambon", images: " ", price: " " },{ label: "Toko Bunga Atambua", category: "Collection", url: "/collections/toko-bunga-atambua", images: " ", price: " " },{ label: "Toko Bunga Bali", category: "Collection", url: "/collections/toko-bunga-bali", images: " ", price: " " },{ label: "Toko Bunga Balikpapan", category: "Collection", url: "/collections/toko-bunga-balikpapan", images: " ", price: " " },{ label: "Toko Bunga Bandar Lampung", category: "Collection", url: "/collections/toko-bunga-bandar-lampung", images: " ", price: " " },{ label: "Toko Bunga Bandung", category: "Collection", url: "/collections/toko-bunga-bandung", images: " ", price: " " },{ label: "Toko Bunga Bandung Barat", category: "Collection", url: "/collections/toko-bunga-bandung-barat", images: " ", price: " " },{ label: "Toko Bunga Banjarmasin", category: "Collection", url: "/collections/toko-bunga-banjarmasin", images: " ", price: " " },{ label: "Toko Bunga Banten", category: "Collection", url: "/collections/toko-bunga-banten", images: " ", price: " " },{ label: "Toko Bunga Banyumas", category: "Collection", url: "/collections/toko-bunga-banyumas", images: " ", price: " " },{ label: "Toko Bunga Banyuwangi", category: "Collection", url: "/collections/toko-bunga-banyuwangi", images: " ", price: " " },{ label: "Toko Bunga Batam", category: "Collection", url: "/collections/toko-bunga-batam", images: " ", price: " " },{ label: "Toko Bunga Baubau", category: "Collection", url: "/collections/toko-bunga-baubau", images: " ", price: " " },{ label: "Toko Bunga Bekasi", category: "Collection", url: "/collections/toko-bunga-bekasi", images: " ", price: " " },{ label: "Toko Bunga Bengkalis", category: "Collection", url: "/collections/toko-bunga-bengkalis", images: " ", price: " " },{ label: "Toko Bunga Bengkayang", category: "Collection", url: "/collections/toko-bunga-bengkayang", images: " ", price: " " },{ label: "Toko Bunga Binjai", category: "Collection", url: "/collections/toko-bunga-binjai", images: " ", price: " " },{ label: "Toko Bunga Bintaro", category: "Collection", url: "/collections/toko-bunga-bintaro", images: " ", price: " " },{ label: "Toko Bunga Blitar", category: "Collection", url: "/collections/toko-bunga-blitar", images: " ", price: " " },{ label: "Toko Bunga Blora", category: "Collection", url: "/collections/toko-bunga-blora", images: " ", price: " " },{ label: "Toko Bunga Bogor", category: "Collection", url: "/collections/toko-bunga-bogor", images: " ", price: " " },{ label: "Toko Bunga Bojonegoro", category: "Collection", url: "/collections/toko-bunga-bojonegoro", images: " ", price: " " },{ label: "Toko Bunga Boyolali", category: "Collection", url: "/collections/toko-bunga-boyolali", images: " ", price: " " },{ label: "Toko Bunga Brebes", category: "Collection", url: "/collections/toko-bunga-brebes", images: " ", price: " " },{ label: "Toko Bunga Bukittinggi", category: "Collection", url: "/collections/toko-bunga-bukittinggi", images: " ", price: " " },{ label: "Toko Bunga Buleleng", category: "Collection", url: "/collections/toko-bunga-buleleng", images: " ", price: " " },{ label: "Toko Bunga Cakung", category: "Collection", url: "/collections/toko-bunga-cakung", images: " ", price: " " },{ label: "Toko Bunga Cawang", category: "Collection", url: "/collections/toko-bunga-cawang", images: " ", price: " " },{ label: "Toko Bunga Cempaka Putih", category: "Collection", url: "/collections/toko-bunga-cempaka-putih", images: " ", price: " " },{ label: "Toko Bunga Cengkareng", category: "Collection", url: "/collections/toko-bunga-cengkareng", images: " ", price: " " },{ label: "Toko Bunga Ciamis", category: "Collection", url: "/collections/toko-bunga-ciamis", images: " ", price: " " },{ label: "Toko Bunga Cianjur", category: "Collection", url: "/collections/toko-bunga-cianjur", images: " ", price: " " },{ label: "Toko Bunga Cibinong", category: "Collection", url: "/collections/toko-bunga-cibinong", images: " ", price: " " },{ label: "Toko Bunga Cibubur", category: "Collection", url: "/collections/toko-bunga-cibubur", images: " ", price: " " },{ label: "Toko Bunga Cijantung", category: "Collection", url: "/collections/toko-bunga-cijantung", images: " ", price: " " },{ label: "Toko Bunga Cikarang", category: "Collection", url: "/collections/toko-bunga-cikarang", images: " ", price: " " },{ label: "Toko Bunga Cikini", category: "Collection", url: "/collections/toko-bunga-cikini", images: " ", price: " " },{ label: "Toko Bunga Cilacap", category: "Collection", url: "/collections/toko-bunga-cilacap", images: " ", price: " " },{ label: "Toko Bunga Cilandak", category: "Collection", url: "/collections/toko-bunga-cilandak", images: " ", price: " " },{ label: "Toko Bunga Cileunyi", category: "Collection", url: "/collections/toko-bunga-cileunyi", images: " ", price: " " },{ label: "Toko Bunga Ciracas", category: "Collection", url: "/collections/toko-bunga-ciracas", images: " ", price: " " },{ label: "Toko Bunga Cirebon", category: "Collection", url: "/collections/toko-bunga-cirebon", images: " ", price: " " }
7680,{ label: "Toko Bunga Ciwidey", category: "Collection", url: "/collections/toko-bunga-ciwidey", images: " ", price: " " },{ label: "Toko Bunga Danau Toba", category: "Collection", url: "/collections/toko-bunga-danau-toba", images: " ", price: " " },{ label: "Toko Bunga Demak", category: "Collection", url: "/collections/toko-bunga-demak", images: " ", price: " " },{ label: "Toko Bunga Denpasar", category: "Collection", url: "/collections/toko-bunga-denpasar", images: " ", price: " " },{ label: "Toko Bunga Depok", category: "Collection", url: "/collections/toko-bunga-depok", images: " ", price: " " },{ label: "Toko Bunga Duren Sawit", category: "Collection", url: "/collections/toko-bunga-duren-sawit", images: " ", price: " " },{ label: "Toko Bunga Garut", category: "Collection", url: "/collections/toko-bunga-garut", images: " ", price: " " },{ label: "Toko Bunga Gianyar", category: "Collection", url: "/collections/toko-bunga-gianyar", images: " ", price: " " },{ label: "Toko Bunga Gowa", category: "Collection", url: "/collections/toko-bunga-gowa", images: " ", price: " " },{ label: "Toko Bunga Gresik", category: "Collection", url: "/collections/toko-bunga-gresik", images: " ", price: " " },{ label: "Toko Bunga Grobogan", category: "Collection", url: "/collections/toko-bunga-grobogan", images: " ", price: " " },{ label: "Toko Bunga Grogol", category: "Collection", url: "/collections/toko-bunga-grogol", images: " ", price: " " },{ label: "Toko Bunga Gunungkidul", category: "Collection", url: "/collections/toko-bunga-gunungkidul", images: " ", price: " " },{ label: "Toko Bunga Indramayu", category: "Collection", url: "/collections/toko-bunga-indramayu", images: " ", price: " " },{ label: "Toko Bunga Jakarta", category: "Collection", url: "/collections/toko-bunga-jakarta", images: " ", price: " " },{ label: "Toko Bunga Jakarta Barat", category: "Collection", url: "/collections/toko-bunga-jakarta-barat", images: " ", price: " " },{ label: "Toko Bunga Jakarta Pusat", category: "Collection", url: "/collections/toko-bunga-jakarta-pusat", images: " ", price: " " },{ label: "Toko Bunga Jakarta Selatan", category: "Collection", url: "/collections/toko-bunga-jakarta-selatan", images: " ", price: " " },{ label: "Toko Bunga Jakarta Timur", category: "Collection", url: "/collections/toko-bunga-jakarta-timur", images: " ", price: " " },{ label: "Toko Bunga Jakarta Utara", category: "Collection", url: "/collections/toko-bunga-jakarta-utara", images: " ", price: " " },{ label: "Toko Bunga Jambi", category: "Collection", url: "/collections/toko-bunga-jambi", images: " ", price: " " },{ label: "Toko Bunga Jatinegara", category: "Collection", url: "/collections/toko-bunga-jatinegara", images: " ", price: " " },{ label: "Toko Bunga Jawa & Bali", category: "Collection", url: "/collections/toko-bunga-jawa-bali", images: " ", price: " " },{ label: "Toko Bunga Jayapura", category: "Collection", url: "/collections/toko-bunga-jayapura", images: " ", price: " " },{ label: "Toko Bunga Jelambar - Florist Onine 24 Jam", category: "Collection", url: "/collections/toko-bunga-jelambar", images: " ", price: " " },{ label: "Toko Bunga Jember", category: "Collection", url: "/collections/toko-bunga-jember", images: " ", price: " " },{ label: "Toko Bunga Jembrana", category: "Collection", url: "/collections/toko-bunga-jembrana", images: " ", price: " " },{ label: "Toko Bunga Jepara", category: "Collection", url: "/collections/toko-bunga-jepara", images: " ", price: " " },{ label: "Toko Bunga Joglo", category: "Collection", url: "/collections/toko-bunga-joglo", images: " ", price: " " },{ label: "Toko Bunga Jombang", category: "Collection", url: "/collections/toko-bunga-jombang", images: " ", price: " " },{ label: "Toko Bunga Kalibata", category: "Collection", url: "/collections/toko-bunga-kalibata", images: " ", price: " " },{ label: "Toko Bunga Kalimantan", category: "Collection", url: "/collections/toko-bunga-kalimantan", images: " ", price: " " },{ label: "Toko Bunga Kalisari Semarang", category: "Collection", url: "/collections/toko-bunga-kalisari-semarang", images: " ", price: " " },{ label: "Toko Bunga Kampung Baru", category: "Collection", url: "/collections/toko-bunga-kampung-baru", images: " ", price: " " },{ label: "Toko Bunga Kapuas", category: "Collection", url: "/collections/toko-bunga-kapuas", images: " ", price: " " },{ label: "Toko Bunga Karanganyar", category: "Collection", url: "/collections/toko-bunga-karanganyar", images: " ", price: " " },{ label: "Toko Bunga Karangasem", category: "Collection", url: "/collections/toko-bunga-karangasem", images: " ", price: " " },{ label: "Toko Bunga Karawang", category: "Collection", url: "/collections/toko-bunga-karawang", images: " ", price: " " },{ label: "Toko Bunga Kartosuro", category: "Collection", url: "/collections/toko-bunga-kartosuro", images: " ", price: " " },{ label: "Toko Bunga Kayoon Surabaya", category: "Collection", url: "/collections/toko-bunga-kayoon-surabaya", images: " ", price: " " },{ label: "Toko Bunga Kebayoran Baru", category: "Collection", url: "/collections/toko-bunga-kebayoran-baru", images: " ", price: " " },{ label: "Toko Bunga Kebon Jeruk", category: "Collection", url: "/collections/toko-bunga-kebon-jeruk", images: " ", price: " " },{ label: "Toko Bunga Kebumen", category: "Collection", url: "/collections/toko-bunga-kebumen", images: " ", price: " " },{ label: "Toko Bunga Kediri", category: "Collection", url: "/collections/toko-bunga-kediri", images: " ", price: " " },{ label: "Toko Bunga Kelapa Gading", category: "Collection", url: "/collections/toko-bunga-kelapa-gading", images: " ", price: " " },{ label: "Toko Bunga Kemayoran", category: "Collection", url: "/collections/toko-bunga-kemayoran", images: " ", price: " " },{ label: "Toko Bunga Kendal", category: "Collection", url: "/collections/toko-bunga-ken
7680dal", images: " ", price: " " },{ label: "Toko Bunga Kendari", category: "Collection", url: "/collections/toko-bunga-kendari", images: " ", price: " " },{ label: "Toko Bunga Ketapang", category: "Collection", url: "/collections/toko-bunga-ketapang", images: " ", price: " " },{ label: "Toko Bunga Klaten", category: "Collection", url: "/collections/toko-bunga-klaten", images: " ", price: " " },{ label: "Toko Bunga Klender", category: "Collection", url: "/collections/toko-bunga-klender", images: " ", price: " " },{ label: "Toko Bunga Kota Baru Yogyakarta", category: "Collection", url: "/collections/toko-bunga-kota-baru-yogyakarta", images: " ", price: " " },{ label: "Toko Bunga Kota Batu", category: "Collection", url: "/collections/toko-bunga-kota-batu", images: " ", price: " " },{ label: "Toko Bunga Kramat Jati", category: "Collection", url: "/collections/toko-bunga-kramat-jati", images: " ", price: " " },{ label: "Toko Bunga Kudus", category: "Collection", url: "/collections/toko-bunga-kudus", images: " ", price: " " },{ label: "Toko Bunga Kupang", category: "Collection", url: "/collections/toko-bunga-kupang", images: " ", price: " " },{ label: "Toko Bunga Lamongan", category: "Collection", url: "/collections/toko-bunga-lamongan", images: " ", price: " " },{ label: "Toko Bunga Langkat", category: "Collection", url: "/collections/toko-bunga-langkat", images: " ", price: " " },{ label: "Toko Bunga Lebak Bulus", category: "Collection", url: "/collections/toko-bunga-lebak-bulus", images: " ", price: " " },{ label: "Toko Bunga Lembang", category: "Collection", url: "/collections/toko-bunga-lembang", images: " ", price: " " },{ label: "Toko Bunga Lenteng Agung", category: "Collection", url: "/collections/toko-bunga-lenteng-agung", images: " ", price: " " },{ label: "Toko Bunga Lombok", category: "Collection", url: "/collections/toko-bunga-lombok", images: " ", price: " " },{ label: "Toko Bunga Lubuk Pakam", category: "Collection", url: "/collections/toko-bunga-lubuk-pakam", images: " ", price: " " },{ label: "Toko Bunga Lumajang", category: "Collection", url: "/collections/toko-bunga-lumajang", images: " ", price: " " },{ label: "Toko Bunga Madiun", category: "Collection", url: "/collections/toko-bunga-madiun", images: " ", price: " " },{ label: "Toko Bunga Magelang", category: "Collection", url: "/collections/toko-bunga-magelang", images: " ", price: " " },{ label: "Toko Bunga Majalengka", category: "Collection", url: "/collections/toko-bunga-majalengka", images: " ", price: " " },{ label: "Toko Bunga Makassar", category: "Collection", url: "/collections/toko-bunga-makassar", images: " ", price: " " },{ label: "Toko Bunga Malang", category: "Collection", url: "/collections/toko-bunga-malang", images: " ", price: " " },{ label: "Toko Bunga Manado", category: "Collection", url: "/collections/toko-bunga-manado", images: " ", price: " " },{ label: "Toko Bunga Mangga Besar", category: "Collection", url: "/collections/toko-bunga-mangga-besar", images: " ", price: " " },{ label: "Toko Bunga Manokwari", category: "Collection", url: "/collections/toko-bunga-manokwari", images: " ", price: " " },{ label: "Toko Bunga Maros", category: "Collection", url: "/collections/toko-bunga-maros", images: " ", price: " " },{ label: "Toko Bunga Mataram", category: "Collection", url: "/collections/toko-bunga-mataram", images: " ", price: " " },{ label: "Toko Bunga Medan", category: "Collection", url: "/collections/toko-bunga-medan", images: " ", price: " " },{ label: "Toko Bunga Mojokerto", category: "Collection", url: "/collections/toko-bunga-mojokerto", images: " ", price: " " },{ label: "Toko Bunga Nganjuk", category: "Collection", url: "/collections/toko-bunga-nganjuk", images: " ", price: " " },{ label: "Toko Bunga Ngawi", category: "Collection", url: "/collections/toko-bunga-ngawi", images: " ", price: " " },{ label: "Toko Bunga Nias", category: "Collection", url: "/collections/toko-bunga-nias", images: " ", price: " " },{ label: "Toko Bunga Nusa Tenggara", category: "Collection", url: "/collections/toko-bunga-nusa-tenggara", images: " ", price: " " },{ label: "Toko Bunga Padang", category: "Collection", url: "/collections/toko-bunga-padang", images: " ", price: " " },{ label: "Toko Bunga Palembang", category: "Collection", url: "/collections/toko-bunga-palembang", images: " ", price: " " },{ label: "Toko Bunga Palu", category: "Collection", url: "/collections/toko-bunga-palu", images: " ", price: " " },{ label: "Toko Bunga Pangkal Pinang", category: "Collection", url: "/collections/toko-bunga-pangkal-pinang", images: " ", price: " " },{ label: "Toko Bunga Papua", category: "Collection", url: "/collections/toko-bunga-papua", images: " ", price: " " },{ label: "Toko Bunga Parepare", category: "Collection", url: "/collections/toko-bunga-parepare", images: " ", price: " " },{ label: "Toko Bunga Pasar Baru", category: "Collection", url: "/collections/toko-bunga-pasar-baru", images: " ", price: " " },{ label: "Toko Bunga Pasar Minggu", category: "Collection", url: "/collections/toko-bunga-pasar-minggu", images: " ", price: " " },{ label: "Toko Bunga Pasar Rebo", category: "Collection", url: "/collections/toko-bunga-pasar-rebo", images: " ", price: " " },{ label: "Toko Bunga Pasuruan", category: "Collection", url: "/collections/toko-bunga-pasuruan", images: " ", price: " " },{ label: "Toko Bunga Pati", category: "Collection", url: "/collections/toko-bunga-pati", images: " ", price: " " },{ label: "Toko Bunga Pekalongan", category: "Collection", url: "/collections/toko-bunga-pekalongan", images: " ", price: " " },{ label: "Toko Bunga Pekanbaru", category: "Collection", url: "/collections/toko-bunga-pekanbaru", images: " ", price: " " },{ label: "Toko Bunga Pemalang", category: "Collection", url: "/collections/toko-bunga-pemalang", images: " ", price: " " }, 7681 { label: "grand salutation jabodetabek", category: "Produk", url: "/products/grand-salutation", images: "//outerbloom.com/cdn/shop/files/JKTCON1005_Grand-Salutation-Jabodetabek-WM_thumb.jpg?v=1703241523", price: "Rp 435.000" },{ label: "consolantibus jabodetabek", category: "Produk", url: "/products/consolantibus", images: "//outerbloom.com/cdn/shop/files/JKTDUK1011_Consolantibus-Jabodetabek-WM_thumb.jpg?v=1703239823", price: "Rp 435.000" },{ label: "classic midnight hand bouquet fiery red", category: "Produk", url: "/products/the-classic-midnight-hand-bouquet-fiery-red", images: "//outerbloom.com/cdn/shop/files/OBVBUN1422_Classic-Midnight-Hand-Bouquet---Fiery-Red-large_thumb.jpg?v=1757302521", price: "Rp 385.000" },{ label: "enchanted dome passionate red", category: "Produk", url: "/products/enchanted-dome-passionate-red", images: "//outerbloom.com/cdn/shop/files/Enchanted-dome-red-new-box_3_2_26c081bf-f2a5-42b4-9ce4-3c0304c498e5_thumb.jpg?v=1712639476", price: "Rp 1.435.000" },{ label: "endearing ruby", category: "Produk", url: "/products/endearing-ruby", images: "//outerbloom.com/cdn/shop/products/OUTSTF1003_Endearing-Ruby_thumb.jpg?v=1631296611", price: "Rp 585.000" },{ label: "gentle soul jabodetabek", category: "Produk", url: "/products/gentle-soul-jabodetabek", images: "//outerbloom.com/cdn/shop/files/JKTDUK1030_Gentle-Soul-Jabodetabek-WM_thumb.jpg?v=1703239894", price: "Rp 435.000" },{ label: "belleza jabodetabek", category: "Produk", url: "/products/belleza", images: "//outerbloom.com/cdn/shop/files/Belleza-Jabodetabek-LED_aecb756a-0737-45cc-8bfb-008515ca0a37_thumb.gif?v=1759229680", price: "Rp 435.000" }
7681,{ label: "majestic pink roses with baby breath bouquet", category: "Produk", url: "/products/majestic-pink-roses-with-baby-breath-bouquet", images: "//outerbloom.com/cdn/shop/products/ef4a3be9-c938-4c70-98ac-4873e7da82bf_90820a66-923a-463d-a464-81bcbe6e6644_thumb.jpg?v=1581413440", price: "Rp 485.000" },{ label: "sentiments jabodetabek", category: "Produk", url: "/products/sentiments", images: "//outerbloom.com/cdn/shop/files/Sentiments-Jabodetabek-WM_thumb.jpg?v=1759224099", price: "Rp 485.000" },{ label: "rose poetry bouquet", category: "Produk", url: "/products/rose-poetry-bouquet", images: "//outerbloom.com/cdn/shop/products/Rose-Poetry-Bouquet-20-tangkai_thumb.jpg?v=1675151039", price: "Rp 385.000" },{ label: "genuine feeling", category: "Produk", url: "/products/genuine-feeling", images: "//outerbloom.com/cdn/shop/products/OUTSTF1004Genuine-Feeling_981ade89-af27-433e-81aa-8d76175a0e4d_thumb.jpg?v=1612352389", price: "Rp 585.000" },{ label: "eternal fidelity jabodetabek", category: "Produk", url: "/products/eternal-fidelity-jabodetabek", images: "//outerbloom.com/cdn/shop/products/0b89df45-dcc1-4876-820e-61b2243a1945_964e211d-2972-46c9-8593-976210929089_thumb.jpg?v=1590491458", price: "Rp 435.000" },{ label: "rosabelle hand bouquet", category: "Produk", url: "/products/rosabelle-hand-bouquet", images: "//outerbloom.com/cdn/shop/files/OBVBUN1429_Rosabelle-Hand-Bouquet-Medium_thumb.jpg?v=1756971848", price: "Rp 385.000" },{ label: "dreaming in pink luxury in vase", category: "Produk", url: "/products/dreaming-in-pink-luxury-in-vase", images: "//outerbloom.com/cdn/shop/products/OBVBUN1051_Dreaming-In-Pink-Luxury-In-Vase_3_thumb.jpg?v=1614594504", price: "Rp 735.000" },{ label: "excito jabodetabek", category: "Produk", url: "/products/excito", images: "//outerbloom.com/cdn/shop/files/JKTCON1010_Excito-Jabodetabek-2023_thumb.gif?v=1717494677", price: "Rp 485.000" },{ label: "golden toast jabodetabek", category: "Produk", url: "/products/golden-toast", images: "//outerbloom.com/cdn/shop/products/LED-GoldenToast_thumb.gif?v=1579249585", price: "Rp 485.000" },{ label: "spirit of eminance jabodetabek", category: "Produk", url: "/products/spirit-of-eminance-jabodetabek", images: "//outerbloom.com/cdn/shop/files/JKTCON1026_Spirit-of-Eminance-Jabodetabek-newest-WM_thumb.jpg?v=1693297526", price: "Rp 485.000" },{ label: "white elysian bloom box", category: "Produk", url: "/products/white-elysian-bloom-box", images: "//outerbloom.com/cdn/shop/files/OBVBUN1704_White-Elysian-Bloom-Box_thumb.jpg?v=1757328247", price: "Rp 685.000" },{ label: "charming forevermore jabodetabek", category: "Produk", url: "/products/charming-forevermore-jabodetabek", images: "//outerbloom.com/cdn/shop/files/JKTWED1036_Charming-Forevermore-Jabodetabek-WM_thumb.jpg?v=1703239534", price: "Rp 485.000" },{ label: "moment of glory jabodetabek", category: "Produk", url: "/products/moment-of-glory-jabodetabek", images: "//outerbloom.com/cdn/shop/products/JKTCON1051_Moment-of-Glory-Jabodetabek_2_thumb.jpg?v=1596614663", price: "Rp 385.000" },{ label: "sweet romance jabodetabek", category: "Produk", url: "/products/sweet-romance", images: "//outerbloom.com/cdn/shop/products/JKTWED1005_Sweet-Romance-Jabodetabek_thumb.gif?v=1677134791", price: "Rp 635.000" },{ label: "with love bouquet", category: "Produk", url: "/products/with-love-bouquet", images: "//outerbloom.com/cdn/shop/products/c5d6fed6-8ada-4c38-ae0f-36d395aacb19_613f78f0-d52c-443b-9e13-63a151cd8ec5_thumb.jpg?v=1590748429", price: "Rp 535.000" },{ label: "sunflower yellow and with white daisies in vase", category: "Produk", url: "/products/sunflower-yellow-roses-with-white-and-yellow-daisies-in-a-glass-vase", images: "//outerbloom.com/cdn/shop/files/OBVBUN1132_Sunflower-Yellow-And-With-White-Daisies-in-Vase_thumb.jpg?v=1757930628", price: "Rp 435.000" },{ label: "everlasting peace jabodetabek", category: "Produk", url: "/products/everlasting-peace-jabodetabek", images: "//outerbloom.com/cdn/shop/products/JKTDUK1034_Everlasting-Peace-Jabodetabek_2_thumb.jpg?v=1596614613", price: "Rp 385.000" },{ label: "astoria passionate red", category: "Produk", url: "/products/astoria-passionate-red", images: "//outerbloom.com/cdn/shop/products/Astoria-passionate-red_b59b26f6-c39d-46d3-adcb-262c675bb16f_thumb.jpg?v=1633502742", price: "Rp 685.000" },{ label: "classic purple orchid majesty in vase", category: "Produk", url: "/products/classic-purple-orchid-majesty-in-vase", images: "//outerbloom.com/cdn/shop/products/Classic-Purple-Orchid-Majesty-in-Vase---White---4-Tangkai_40a5e337-283f-40f5-911c-5df9b506b9da_thumb.jpg?v=1639981404", price: "Rp 435.000" },{ label: "passion rouge bloom box", category: "Produk", url: "/products/passion-rouge-bloom-box", images: "//outerbloom.com/cdn/shop/files/OBVBUN1725_Passion-Rouge-Bloom-Box_thumb.jpg?v=1756972410", price: "Rp 385.000" },{ label: "classic white orchid majesty in vase", category: "Produk", url: "/products/classic-white-orchid-majesty-in-vase", images: "//outerbloom.com/cdn/shop/products/Classic-white-Orchid-Majesty-in-Vase---white---4-Tangkai_thumb.jpg?v=1644205542", price: "Rp 435.000" }
7681,{ label: "majestic blue romance bouquet", category: "Produk", url: "/products/majestic-blue-romance-bouquet", images: "//outerbloom.com/cdn/shop/files/OBVBUN1357_Majestic-Blue-Romance-Bouquet_99b8ba96-0e67-4eef-a00e-b2daedcddb6a_thumb.jpg?v=1757390540", price: "Rp 435.000" },{ label: "sincerely", category: "Produk", url: "/products/sincerely", images: "//outerbloom.com/cdn/shop/files/Sincerely-WM_thumb.jpg?v=1688354677", price: "Rp 585.000" },{ label: "happy days jabodetabek", category: "Produk", url: "/products/happy-days-jabodetabek", images: "//outerbloom.com/cdn/shop/files/Happy-Days-Jabodetabek_WM_thumb.jpg?v=1759224026", price: "Rp 485.000" },{ label: "solemn comfort jabodetabek", category: "Produk", url: "/products/solemn-comfort-jabodetabek", images: "//outerbloom.com/cdn/shop/products/7fe123d8-6bb2-4c0d-bd4c-f8c3032823f2_6b9c33b6-4a23-41cb-8709-fc9223fe096a_thumb.png?v=1590662086", price: "Rp 635.000" },{ label: "big dreams jabodetabek", category: "Produk", url: "/products/big-dreams", images: "//outerbloom.com/cdn/shop/files/JKTCON1002_Big-Dreams-Jabodetabek_thumb.gif?v=1717494603", price: "Rp 485.000" },{ label: "signature ramadan deluxe hampers", category: "Produk", url: "/products/outerbloom-signature-ramadhan-deluxe-hampers", images: "//outerbloom.com/cdn/shop/files/Signature-Deluxe-Hampers_thumb.jpg?v=1739242254", price: "Rp 985.000" },{ label: "amorous amos jabodetabek", category: "Produk", url: "/products/amorous-amos-jabodetabek", images: "//outerbloom.com/cdn/shop/files/Amorous-Amos-Jabodetabek-WM_thumb.jpg?v=1759224071", price: "Rp 485.000" },{ label: "pink darling bouquet", category: "Produk", url: "/products/pink-darling-bouquet", images: "//outerbloom.com/cdn/shop/products/Pink-Darling-Bouquet_thumb.jpg?v=1669969725", price: "Rp 485.000" },{ label: "black pink bouquet", category: "Produk", url: "/products/black-pink-bouquet", images: "//outerbloom.com/cdn/shop/files/Black-Pink-Bouquet_thumb.jpg?v=1756434063", price: "Rp 485.000" },{ label: "profound happiness jabodetabek", category: "Produk", url: "/products/profound-happiness-jabodetabek", images: "//outerbloom.com/cdn/shop/files/profound-happiness_thumb.gif?v=1689940309", price: "Rp 635.000" },{ label: "healing trove", category: "Produk", url: "/products/healing-trove", images: "//outerbloom.com/cdn/shop/products/2ef5379f-27a6-41ba-85c7-c65cf3ec3f08_thumb.jpg?v=1571471845", price: "Rp 485.000" },{ label: "sincerity solace", category: "Produk", url: "/products/sincerity-solace", images: "//outerbloom.com/cdn/shop/products/OUTSTF1038_sincerity-solace-WM_thumb.jpg?v=1612352477", price: "Rp 485.000" },{ label: "bellarosa bloom box", category: "Produk", url: "/products/bellarosa-bloom-box", images: "//outerbloom.com/cdn/shop/files/OBVBUN1783_Bellarosa-Bloom-Box_c0000424-411c-48ed-abf4-0de7d925ea53_thumb.jpg?v=1757316757", price: "Rp 785.000" } 7682 ]; 7683 7684 7685 $( ".header-input-search" ).catcomplete({ 7686 appendTo: ".searchResult",source: function(request, response) { 7687 var results = $.ui.autocomplete.filter(data, request.term); 7688 var predicate = function () { 7689 var counter = { Collection: 0, Produk: 0 }; 7690 var fn = function(item) {counter[item.category] += 1;return (counter[item.category] <= 5);} 7691 return fn 7692 }(); 7693 response(results.filter(predicate)); 7694 }, 7695 minLength:1, 7696 //results are clickable 7697 select: function( event, ui ) {window.location = ui.item.url;} 7698 }); 7699 $( ".header-input-search2" ).catcomplete({ 7700 appendTo: ".searchResult2", 7701 source: function(request, response) { 7702 var results = $.ui.autocomplete.filter(data, request.term); 7703 var predicate = function () { 7704 var counter = { Collection: 0, Produk: 0 }; 7705 var fn = function(item) { 7706 counter[item.category] += 1; 7707 return (counter[item.category] <= 5); 7708 } 7709 return fn 7710 }(); 7711 response(results.filter(predicate)); 7712 }, 7713 minLength:1, 7714 //results are clickable 7715 select: function( event, ui ) { 7716 window.location = ui.item.url; 7717 } 7718 }); 7719 }); 7720 </script>
7720 7721 7722
7722<script src="//outerbloom.com/cdn/shop/t/138/assets/vendors.js?v=6349622868601634021752652419" defer></script>
7722 7723
7723<script src="//outerbloom.com/cdn/shop/t/138/assets/app.js?v=136050180318808583701752652452" defer></script>
7723 7724 7725
7725<script> 7726 ( function() { 7727 var youtube = document.querySelectorAll( ".youtube" ); 7728 for (var i = 0; i < youtube.length; i++) { 7729 var source = "https://img.youtube.com/vi/"+ youtube[i].dataset.embed +"/sddefault_1x.jpg"; 7730 var datasource = "https://img.youtube.com/vi/"+ youtube[i].dataset.embed +"/sddefault.jpg"; 7731 var image = new Image(); 7732 image.src = source; 7733 image.setAttribute("data-src", datasource); 7734 image.classList.add("swiper-lazy"); 7735 image.addEventListener( "load", function() { 7736 youtube[ i ].appendChild( image ); 7737 }( i ) ); 7738 youtube[i].addEventListener( "click", function() { 7739 var iframe = document.createElement( "iframe" ); 7740 iframe.setAttribute( "width", "480" ); 7741 iframe.setAttribute( "height", "480" ); 7742 iframe.setAttribute( "frameborder", "0" ); 7743 iframe.setAttribute( "allowfullscreen", "" ); 7744 iframe.setAttribute( "src", "https://www.youtube.com/embed/"+ this.dataset.embed +"?rel=0&showinfo=0&autoplay=1" ); 7745 this.innerHTML = ""; 7746 this.appendChild( iframe ); 7747 } ); 7748 }; 7749 7750 } )(); 7751 7752 /* Lazy Load */ 7753 const mainLazyLoad = new LazyLoad({threshold:400}); 7754 $(document).ready(function(){ 7755 7756 $("selectxxx").addClass("needsclick"); 7757 FastClick.attach(document.body); 7758 7759 var $customSelects = $('.select-search'); 7760 $customSelects.select2({ 7761 templateResult: function(result, container) { 7762 if (!result.id) { 7763 return result.text; 7764 } 7765 container.className += ' needsclick'; 7766 return result.text; 7767 } 7768 }); 7769 $customSelects.each(function(index, el){$(el).data('select2').$container.find('*').addClass('needsclick');}); 7770 $(document).on('select2:open', () => { 7771 document.querySelector('.select2-search__field').focus(); 7772 }); 7773 7774 7775 $(".overlay").click(function(){ 7776 $(".js-drawer-close").click(); 7777 }); 7778 $(".site-nav--mobile .js-drawer-open-left, #NavDrawer .icon-close, .overlay-nav").click(function(){ 7779 $("html").toggleClass("nav_open"); 7780 }); 7781 7782 $('.swatch-element label').on('click', function(){ 7783 var srcImg = $(this).data('src'); 7784 $('#thumb-image-product .product-single__thumbnail').each(function(){ 7785 if ($(this).attr("href") == srcImg) { 7786 $(this).trigger('click'); 7787 } 7788 }); 7789 }); 7790 var defaultValue = $(".swatch input:checked").val() 7791 7792 $('#purchaseProduct .swatch [type=radio]').change(function() { 7793 var optionIndex = $(this).closest('.swatch').attr('data-option-index'); 7794 var optionValue = $(this).val(); 7795 console.log(optionIndex, optionValue) 7796 var value = parseInt(optionValue.split(' ')[0]) 7797 $(this) 7798 .closest('#purchaseProduct') 7799 .find('.single-option-selector') 7800 .eq(optionIndex) 7801 .val(optionValue) 7802 .trigger('change'); 7803 7804 }); 7805 7806 }); 7807 $(document).ready(function(){ 7808 $(".nav-search a").click(function(e){ 7809 e.preventDefault(); 7810 $(".icon-navsearch").toggle(); 7811 $(".icon-navclose").toggle(); 7812 $(".site-nav__item > .site-nav__link").toggle(); 7813 $(".open-search").toggle(); 7814 $(".open-search input").focus(); 7815 }); 7816 $(".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'>"); 7817 if ($(window).width() < 768) { 7818 $(".bg-products .label-tag.valentine").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-valentine_75x.png?v=82732945490105366961752652419' alt='Icon Valentine'>"); 7819 $(".bg-products .label-tag.cny").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-cny_45x.png?v=101884295148001743851752652418' alt='Icon CNY'>"); 7820 $(".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'>"); 7821 } else { 7822 $(".bg-products .label-tag.valentine").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-valentine_60x.png?v=82732945490105366961752652419' alt='Icon Valentine'>"); 7823 $(".bg-products .label-tag.cny").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-cny_60x.png?v=101884295148001743851752652418' alt='Icon CNY'>"); 7824 $(".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'>"); 7825 } 7826 $(".bg-products .label-tag.free-cookies").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/free-cookies_80x.png?51468' alt='Icon Free Cookies'>"); 7827 $(".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'>"); 7828 }); 7829 </script>
7829 7830 7831 7832 7833 7834
7834<script type="text/javascript"> 7835 var wishlistpage = 0; 7836 7837 var quickShop_money_format="<span class='money'>"+"Rp {{amount_no_decimals}}"+"</span>"; 7838 </script>
7838 7839 7840 <!-- Remove duplicate wishlist.js reference --> 7841 <style> 7842 .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:999999;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.fade.in{opacity:1}.modal-open .modal{overflow-x:hidden;overflow-y:auto;z-index:999999;background-color:rgba(0,0,0,.3)}.modal-dialog{position:relative;width:auto;margin:10px}.wishlist-model .modal-dialog{width:700px}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.wishlist-model .modal-content{}.wishlist-model .modal-header{min-height:0;padding:0;border-bottom:0}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #121212;filter:alpha(opacity=20);opacity:.2}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-header .close{margin-top:-2px}.wishlist-model .close{position:absolute;top:-10px;right:-10px;background:#fff;opacity:1;width:30px;height:30px;font-size:15px;border-radius:50%;z-index:10;box-shadow:0 1px 4px 0 #121212}.wishlist-model .close .icon-close{width:25px;height:25px}.modal-body{position:relative;padding:15px}.wishlist-model .modal-body{padding:0 30px;display:flex}.wishlist-model .wishlist-left{width:66.67%;border-right:1px solid #ccc;padding:30px 0}.wishlist-model .wishlist-note{position:relative;display:inline-block;margin-bottom:20px;margin-left:35px;border-bottom:1px solid #121212;color:#121212}.wishlist-model .wishlist-note a{color: #ffffff;}.wishlist-model .wishlist-note .cirle{position:absolute;top:-4px;left:-35px;width:25px;height:25px;color:#fff;background:#121212;line-height:25px;border-radius:50%;text-align:center}.wishlist-model .wishlist-note svg{fill:#fff}.wishlist-model .wishlist-note .cirle .icon-check{vertical-align:middle}.wishlist-model .product-left{width:33.33%;float:left;margin-right:30px}.wishlist-model .wishlist-image{overflow:hidden}.wishlist-model .wishlist-image img{transition:all .3s linear}.wishlist-model .wishlist-name{padding:0;margin-bottom:10px}.wishlist-model .wishlist-name a{color: #ffffff;}.wishlist-model .wishlist-price{margin-bottom:10px}.wishlist-model .wishlist-price .price{font-weight:700;margin-right:10px;font-size:15px}.wishlist-model .wishlist-price .price_compare{color:#ccc}.wishlist-model .wishlist-right{width:33.33%;padding:30px 0;padding-left:30px}.wishlist-model .btn-quick-shop{width:100%;border-color:#121212;background:#fff;color:#121212;padding:0 30px;transition:all .2s linear;height:36px;margin-bottom:10px;text-transform:uppercase}.wishlist-model .btn-cta{width:100%;font-size:1em;border-color:#ffffff;background:#ffffff;color:#fff;padding:0;transition:all .2s linear;height:36px;line-height:36px;margin-bottom:10px}.wishlist-model .quantity-content{text-align:center}.wishlist-model .quantity-content input{outline:none;text-align:center;font-weight:600;border:1px solid #121212}.wishlist-model .quantity-content button{border-color:#121212}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}} 7843 </style> 7844 7845 <div class="modal fade" id="modalwishlist0" tabindex="-1" role="dialog"> 7846 <div class="modal-dialog" role="document"> 7847 <div class="modal-content"> 7848 <div class="modal-body">Your Wishlist is empty!</div> 7849 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> 7850 </div> 7851 </div> 7852 </div> 7853 7854 <div class="wishlist-model"> 7855 <div class="modal fade" id="modalwishlist1" tabindex="-1" role="dialog" aria-hidden="true"> 7856 <div class="modal-dialog white-modal"> 7857 <div class="modal-content"> 7858 <div class="modal-header"> 7859 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 7860 <svg class="icon icon-close" version="1.1" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="32" height="32" viewBox="0 0 32 32"> 7861 <title>icon-close</title> 7862 <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> 7863 </svg> 7864 </button> 7865 </div> 7866 <div class="modal-body"> 7867 <div class="wishlist-left"> 7868 <div class="wishlist-note">
7869 <span class="cirle"><svg version="1.1" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="32" height="32" viewBox="0 0 32 32"> 7870 <title>icon-check</title> 7871 <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> 7872 </svg></span> 7873 Product added to <a href="/pages/wish-list">Wishlist</a> 7874 </div> 7875 <div class="wishlist-product"> 7876 <div class="product-left"> 7877 <div class="wishlist-image"></div> 7878 </div> 7879 <div class="product-right"> 7880 <div class="wishlist-name"></div> 7881 <div class="wishlist-price"></div> 7882 </div> 7883 </div> 7884 </div> 7885 <div class="wishlist-right"> 7886 <div class="wishlist-cart"> 7887 <form action="/cart/add" method="post" class="variants-form variants" id="AddToCartForm" enctype="multipart/form-data"> 7888 <div class="others-bottom"> 7889 <a class="btn btn-quick-shop" href="/pages/wish-list">View Wishlist</a> 7890 <button type="submit" name="add" id="AddToCart" class="btn btn-cta"> 7891 <span id="AddToCartText" class="">Beli Sekarang</span> 7892 </button> 7893 </div> 7894 <div id="wishlist-variants-container" class="variants-wrapper"></div> 7895 <div class="quantity-content"> 7896 <label>QTY</label> 7897 <input type="number" size="5" class="" name="quantity" value="1" /> 7898 </div> 7899 </form> 7900 </div> 7901 </div> 7902 </div> 7903 </div> 7904 </div> 7905 </div> 7906 </div> 7907 7908 7909 <style> 7910 .stamped-badge[data-rating="0.0"]{display: none !Important;} 7911 7912 div[data-load-type="continue"] ul.stamped-pagination li.next a, div[data-widget-load-type="continue"] ul.stamped-pagination li.next a { 7913 border-radius: 0px; 7914 } 7915 .stamped-review-body { 7916 padding-left: 0px !important; 7917 } 7918 #product-reviews .stamped-header:after { 7919 display:none !Important; 7920 } 7921 #stamped-main-widget .stamped-container, .stamped-badge-caption,#stamped-reviews-widget { 7922 font-family:inherit !important; 7923 } 7924 </style> 7925 7926 7927 7928 <div id='stamped-rewards-init' class='stamped-rewards-init' 7929 data-key-public='' 7930 7931 ></div> 7932 7933
7933<script src="//outerbloom.com/cdn/shop/t/138/assets/variant-sku-handler.js?v=91239063692820757781752652418" defer></script>
7933 7934 <!-- Remove duplicate jQuery reference and load wishlist script properly --> 7935
7935<script src="//outerbloom.com/cdn/shop/t/138/assets/wishlist-fixed.js?v=35991423018869066281754360012" defer></script>
7935 7936 7937
7937<script> 7938 function myInit(){ StampedFn.init({ apiKey: 'pubkey-hCS8DHE9QbBHhHN89WXFkuJ0Y3422D', sId: '23462' }); } 7939 </script>
7939 7940
7940<script async onload="myInit()" type="text/javascript" src="https://cdn1.stamped.io/files/widget.min.js"></script>
7940<style> 7941 .jss59 { 7942 background-color: rgba(0, 0, 0, 0.6); 7943 } 7944 .MuiBackdrop-root { 7945 top: 0; 7946 left: 0; 7947 right: 0; 7948 bottom: 0; 7949 display: flex; 7950 z-index: -1; 7951 position: fixed; 7952 align-items: center; 7953 justify-content: center; 7954 background-color: rgba(0, 0, 0, 0.5); 7955 -webkit-tap-highlight-color: transparent; 7956 } 7957 .MuiDialog-scrollPaper { 7958 display: flex; 7959 align-items: center; 7960 justify-content: center; 7961 } 7962 .MuiDialog-container { 7963 height: 100%; 7964 outline: 0; 7965 } 7966 .MuiPaper-elevation24 { 7967 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); 7968 } 7969 .MuiDialog-paper { 7970 margin: 32px; 7971 position: relative; 7972 overflow-y: auto; 7973 } 7974 .MuiDialog-paperScrollPaper { 7975 display: flex; 7976 max-height: calc(100% - 64px); 7977 flex-direction: column; 7978 } 7979 .MuiDialog-paperWidthSm { 7980 max-width: 600px; 7981 } 7982 #location-lock-dialog { 7983 top: 20%; 7984 left: 0; 7985 right: 0; 7986 width: 30%; 7987 margin: 0px auto; 7988 display: block; 7989 padding: 30px; 7990 z-index: 99999; 7991 position: fixed; 7992 font-size: 14px; 7993 background: rgb(0, 0, 0); 7994 box-shadow: rgba(11, 11, 12, 0.2) 2px 4px 5px 0px; 7995 text-align: center; 7996 font-family: Roboto, Arial, sans-serif; 7997 line-height: 1; 7998 border-radius: 8px; 7999 -webkit-font-smoothing: subpixel-antialiased; 8000 } 8001 .MuiButtonBase-root { 8002 color: inherit; 8003 border: 0; 8004 cursor: pointer; 8005 margin: 0; 8006 display: inline-flex; 8007 outline: 0; 8008 padding: 0; 8009 position: relative; 8010 align-items: center; 8011 user-select: none; 8012 border-radius: 0; 8013 vertical-align: middle; 8014 -moz-appearance: none; 8015 justify-content: center; 8016 text-decoration: none; 8017 background-color: transparent; 8018 -webkit-appearance: none; 8019 -webkit-tap-highlight-color: transparent; 8020 } 8021 .MuiIconButton-root { 8022 flex: 0 0 auto; 8023 color: rgba(0, 0, 0, 0.54); 8024 padding: 12px; 8025 overflow: visible; 8026 font-size: 1.5rem; 8027 text-align: center; 8028 transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; 8029 border-radius: 50%; 8030 } 8031 .MuiIconButton-label { 8032 width: 100%; 8033 display: flex; 8034 align-items: inherit; 8035 justify-content: inherit; 8036 } 8037 .MuiSvgIcon-root { 8038 fill: currentColor; 8039 width: 1em; 8040 height: 1em; 8041 display: inline-block; 8042 font-size: 1.5rem; 8043 transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; 8044 flex-shrink: 0; 8045 user-select: none; 8046 } 8047 .MuiTouchRipple-root { 8048 top: 0; 8049 left: 0; 8050 right: 0; 8051 bottom: 0; 8052 z-index: 0; 8053 overflow: hidden; 8054 position: absolute; 8055 border-radius: inherit; 8056 pointer-events: none; 8057 } 8058 .jss36 { 8059 color: #222222; 8060 font-size: 24px; 8061 font-family: Roboto, Arial, sans-serif; 8062 font-weight: 500; 8063 } 8064 .jss37 { 8065 color: #555555; 8066 padding: 10px 0px 0px; 8067 font-size: 14px; 8068 } 8069 .MuiFormGroup-root { 8070 display: flex; 8071 flex-wrap: wrap; 8072 flex-direction: column; 8073 } 8074 .MuiFormGroup-row { 8075 flex-direction: row; 8076 } 8077 .jss63 { 8078 width: 85%; 8079 margin: 15px auto; 8080 display: flex; 8081 padding: 11px 0px 0px; 8082 justify-content: space-evenly; 8083 } 8084 .MuiFormControlLabel-root { 8085 cursor: pointer; 8086 display: inline-flex; 8087 align-items: center; 8088 margin-left: -11px; 8089 margin-right: 16px; 8090 vertical-align: middle; 8091 -webkit-tap-highlight-color: transparent; 8092 } 8093 .jss70 { 8094 margin: 0; 8095 } 8096 .MuiButtonBase-root { 8097 color: inherit; 8098 border: 0; 8099 cursor: pointer; 8100 margin: 0; 8101 display: inline-flex; 8102 outline: 0; 8103 padding: 0; 8104 position: relative; 8105 align-items: center; 8106 user-select: none; 8107 border-radius: 0; 8108 vertical-align: middle; 8109 -moz-appearance: none; 8110 justify-content: center; 8111 text-decoration: none; 8112 background-color: transparent; 8113 -webkit-appearance: none; 8114 -webkit-tap-highlight-color: transparent; 8115 } 8116 .MuiIconButton-root { 8117 flex: 0 0 auto; 8118 color: rgba(0, 0, 0, 0.54); 8119 padding: 12px; 8120 overflow: visible; 8121 font-size: 1.5rem; 8122 text-align: center; 8123 transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; 8124 border-radius: 50%; 8125 } 8126 .MuiIconButton-colorSecondary { 8127 color: #f50057; 8128 } 8129 .jss71 { 8130 padding: 9px; 8131 } 8132 .MuiRadio-root { 8133 color: rgba(0, 0, 0, 0.54); 8134 } 8135 .jss64 { 8136 padding: 2px; 8137 } 8138 .MuiRadio-colorSecondary.Mui-checked { 8139 color: #f50057; 8140 } 8141 .MuiIconButton-label { 8142 width: 100%; 8143 display: flex; 8144 align-items: inherit; 8145 justify-content: inherit; 8146 } 8147 .MuiTypography-root { 8148 margin: 0; 8149 } 8150 .MuiTypography-body1 { 8151 font-size: 18px; 8152 font-family: Roboto,sans-serif; 8153 font-weight: 400; 8154 line-height: 1.5; 8155 } 8156 .location-popup_area-block__sp9Ws { 8157 display: -moz-box; 8158 display: flex; 8159 -moz-box-orient: vertical; 8160 -moz-box-direction: normal; 8161 flex-direction: column; 8162 -moz-box-pack: center; 8163 justify-content: center; 8164 position: relative; 8165 margin: 10px 10% 0; 8166 } 8167 .location-popup_pin-search-box__3l5mJ { 8168 width: 100%; 8169 display: -moz-box; 8170 display: flex; 8171 -moz-box-align: center; 8172 align-items: center; 8173 } 8174 .location-popup_place-icon-city__1XAX5, .location-popup_place-icon__jSG0Q { 8175 position: absolute; 8176 z-index: 999; 8177 } 8178 .location-popup_place-icon__jSG0Q { 8179 color: #ffffff; 8180 padding-left: 8px; 8181 } 8182 .location-popup_place-icon__jSG0Q svg { 8183 width: 18px; 8184 height: 18px; 8185 } 8186 .location-popup_cancel-icon__FHujU { 8187 color: #fff; 8188 right: 10px; 8189 width: 16px; 8190 cursor: pointer; 8191 height: 16px; 8192 display: none; 8193 padding: 5px; 8194 position: absolute; 8195 background: #999; 8196 text-align: center; 8197 border-radius: 50%; 8198 } 8199 .location-popup_pin-search-box__3l5mJ>div>select { 8200 /* -webkit-box-shadow: 0 0 10px #ffffff; 8201 box-shadow: 0 0 10px #ffffff; */ 8202 text-transform: capitalize; 8203 border: 1px solid #ffffff; 8204 color: #ffffff; 8205 width: 100%; 8206 margin: 0; 8207 display: -moz-box; 8208 display: flex;
8209 padding: 0 30px; 8210 -webkit-animation: location-popup_focuses__1I8Gj 1.5s ease-in-out infinite; 8211 -moz-animation: location-popup_focuses__1I8Gj 1.5s ease-in-out infinite; 8212 animation: location-popup_focuses__1I8Gj 1.5s ease-in-out infinite; 8213 font-size: 16px; 8214 border-radius: 4px; 8215 height: 44px; 8216 moz-animation: location-popup_focuses__1I8Gj ease-in-out 1.5s infinite; 8217 webkit-animation: location-popup_focuses__1I8Gj ease-in-out 1.5s infinite; 8218 } 8219 .MuiButtonBase-root { 8220 color: inherit; 8221 border: 0; 8222 cursor: pointer; 8223 margin: 0; 8224 display: inline-flex; 8225 outline: 0; 8226 padding: 0; 8227 position: relative; 8228 align-items: center; 8229 user-select: none; 8230 border-radius: 0; 8231 vertical-align: middle; 8232 -moz-appearance: none; 8233 justify-content: center; 8234 text-decoration: none; 8235 background-color: transparent; 8236 -webkit-appearance: none; 8237 -webkit-tap-highlight-color: transparent; 8238 } 8239 .MuiButton-root { 8240 color: rgba(0, 0, 0, 0.87); 8241 padding: 6px 16px; 8242 font-size: 0.875rem; 8243 min-width: 64px; 8244 box-sizing: border-box; 8245 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; 8246 font-family: Roboto,sans-serif; 8247 font-weight: 500; 8248 line-height: 1.75; 8249 border-radius: 4px; 8250 text-transform: uppercase; 8251 } 8252 .MuiButton-contained { 8253 color: rgba(0, 0, 0, 0.87); 8254 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); 8255 background-color: #e0e0e0; 8256 } 8257 .MuiButtonBase-root.Mui-disabled { 8258 cursor: default; 8259 pointer-events: none; 8260 } 8261 .MuiButton-label { 8262 width: 100%; 8263 display: inherit; 8264 align-items: inherit; 8265 justify-content: inherit; 8266 } 8267 .cartButton_login_content__2j1f7 { 8268 display: -moz-box; 8269 display: flex; 8270 text-align: center; 8271 z-index: 9; 8272 font-size: 18px; 8273 font-weight: 500; 8274 color: #fff; 8275 } 8276 8277 .jss35 { 8278 top: 5px; 8279 right: 5px; 8280 padding: 4px; 8281 position: absolute; 8282 border-radius: 50%; 8283 } 8284 .jss67 { 8285 cursor: pointer; 8286 font-size: 15px; 8287 line-height: 1.3; 8288 padding-left: 5px; 8289 } 8290 .jss69 { 8291 color: #222222; 8292 } 8293 .jss80 { 8294 color: #fff; 8295 width: 100%; 8296 height: 52px; 8297 padding: 11px 16px; 8298 font-size: 18px; 8299 min-width: 88px; 8300 min-height: 36px; 8301 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; 8302 font-weight: 500; 8303 line-weight: 1em; 8304 border-radius: 4px; 8305 text-transform: uppercase; 8306 background-color: #ff6600; 8307 } 8308 @media (min-width: 991px){ 8309 .cartButton_login_content__2j1f7 { 8310 font-weight: 500; 8311 } 8312 } 8313 8314 @media (max-width: 992px) { 8315 #location-lock-dialog { 8316 width: 100%; 8317 top: auto; 8318 bottom: 0; 8319 padding-left: 0; 8320 padding-right: 0; 8321 } 8322 .MuiFormGroup-row { 8323 display: block 8324 } 8325 .MuiIconButton-label input { 8326 margin: 0; 8327 } 8328 } 8329 </style> 8330 <div role="presentation" class="MuiDialog-root jss34" style="display: none;position: fixed; z-index: 9999; inset: 0px;"> 8331 <div class="MuiBackdrop-root" aria-hidden="true" style="opacity: 1; transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;"></div> 8332 <div tabindex="0" data-test="sentinelStart"></div> 8333 <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;"> 8334 <div class="MuiPaper-root MuiDialog-paper MuiDialog-paperScrollPaper MuiDialog-paperWidthSm MuiPaper-elevation24 MuiPaper-rounded" role="dialog"> 8335 <div class="jss31 undefined" id="location-lock-dialog"> 8336 <button id="close-popup-delivery" class="MuiButtonBase-root MuiIconButton-root jss35" tabindex="0" type="button" aria-label="close"> 8337 <span class="MuiIconButton-label"> 8338 <svg class="MuiSvgIcon-root" focusable="false" viewBox="0 0 24 24" aria-hidden="true"> 8339 <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> 8340 </svg> 8341 </span>
8342 <span class="MuiTouchRipple-root"></span> 8343 </button> 8344 <div> 8345 <div class="jss36">Select Delivery Location</div> 8346 <div class="jss37">Select a delivery location to see product availability</div> 8347 </div> 8348 <div class="MuiFormGroup-root jss63 MuiFormGroup-row" role="radiogroup"> 8349 <label for="jabodetabek" class="MuiFormControlLabel-root jss45"> 8350 <span class="MuiButtonBase-root MuiIconButton-root jss46 MuiRadio-root MuiRadio-colorSecondary jss39 jss47 Mui-checked MuiIconButton-colorSecondary" aria-disabled="false"> 8351 <span class="MuiIconButton-label"> 8352 <input id="jabodetabek" class="jss49" type="radio" value="Jabodetabek" checked="" name="location"> 8353 <span class="jss41"></span> 8354 </span> 8355 <span class="MuiTouchRipple-root"></span> 8356 </span> 8357 <span class="MuiTypography-root MuiFormControlLabel-label MuiTypography-body1"> 8358 <span class="jss67 jss69">Jabodetabek</span> 8359 </span> 8360 </label> 8361 <label for="non-jabodetabek" class="MuiFormControlLabel-root jss45"> 8362 <span class="MuiButtonBase-root MuiIconButton-root jss46 MuiRadio-root MuiRadio-colorSecondary jss39 MuiIconButton-colorSecondary" aria-disabled="false"> 8363 <span class="MuiIconButton-label"> 8364 <input id="non-jabodetabek" class="jss49" type="radio" value="Outside Jabodetabek" name="location"> 8365 <span class="jss40"></span> 8366 </span> 8367 <span class="MuiTouchRipple-root"></span> 8368 </span> 8369 <span class="MuiTypography-root MuiFormControlLabel-label MuiTypography-body1"> 8370 <span class="jss67 jss68">Outside Jabodetabek</span> 8371 </span> 8372 </label> 8373 </div> 8374 <div> 8375 <div class="MuiGrid-root location-popup_area-block__sp9Ws"> 8376 <div class="MuiGrid-root location-popup_pin-search-box__3l5mJ false"> 8377 <div class="MuiGrid-root location-popup_place-icon__jSG0Q"> 8378 <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> 8379 </div> 8380 <div class="MuiGrid-root location-popup_cancel-icon__FHujU false"> 8381 <i class="material-icons location-popup_clear-pin__s1dRc">close</i> 8382 </div> 8383 <div style="width: 100%;"> 8384 <select id="choose-location" class="form-control"> 8385 <option value="">Choose Location</option> 8386 <option value="jakarta">Jakarta</option> 8387 <option value="bogor">Bogor</option> 8388 <option value="depok">Depok</option> 8389 <option value="tangerang">Tangerang</option> 8390 <option value="bekasi">Bekasi</option> 8391 </select> 8392 </div> 8393 </div> 8394 </div> 8395 </div> 8396 <button class="MuiButtonBase-root MuiButton-root MuiButton-contained jss55" tabindex="-1" type="button" title="" id="location-lock-submit" data-idforcdp="actionBtn-cdp" data-testid="location-lock-submit" style="background-color: #ffffff; width: 80%; padding: 14px 0px 12px; margin: 20px 0px; font-size: 18px; font-weight: 500; box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 4px 0px; border-radius: 4px; color: rgb(0, 0, 0); height: 44px;" data-content=""> 8397 <span class="MuiButton-label"> 8398 <span class=""></span> 8399 <span id="location-lock-continue-btn" class="cartButton_login_content__2j1f7" style="font-weight: 500;" data-content="">Continue Shopping</span> 8400 </span> 8401 </button> 8402 </div> 8403 </div> 8404 </div> 8405 <div tabindex="0" data-test="sentinelEnd"></div> 8406 </div> 8407 8408
8408<script> 8409 const jabodetabek = [ 8410 { 8411 "code": "jakarta", 8412 "city": "jakarta", 8413 "zip": [] 8414 }, 8415 { 8416 "code": "bogor", 8417 "city": "bogor", 8418 "zip": [] 8419 }, 8420 { 8421 "code": "depok", 8422 "city": "depok", 8423 "zip": [] 8424 }, 8425 { 8426 "code": "tangerang", 8427 "city": "tangerang", 8428 "zip": [] 8429 }, 8430 { 8431 "code": "bekasi", 8432 "city": "bekasi", 8433 "zip": [] 8434 } 8435 ] 8436 let cityNonJabodetabek = [ 8437 8438 8439 8440 8441 "pengiriman_aceh", 8442 8443 8444 8445 8446 8447 "pengiriman_ambon", 8448 8449 8450 8451 8452 8453 "pengiriman_atambua", 8454 8455 8456 8457 8458 8459 "pengiriman_badung", 8460 8461 8462 8463 8464 8465 "pengiriman_bali", 8466 8467 8468 8469 8470 8471 "pengiriman_balikpapan", 8472 8473 8474 8475 8476 8477 "pengiriman_bandar lampung", 8478 8479 8480 8481 8482 8483 "pengiriman_bandung", 8484 8485 8486 8487 8488 8489 "pengiriman_bandung barat", 8490 8491 8492 8493 8494 8495 "pengiriman_banjarmasin", 8496 8497 8498 8499 8500 8501 "pengiriman_banyumas", 8502 8503 8504 8505 8506 8507 "pengiriman_banyuwangi", 8508 8509 8510 8511 8512 8513 "pengiriman_batam", 8514 8515 8516 8517 8518 8519 8520 8521 8522 8523 "pengiriman_biak", 8524 8525 8526 8527 8528 8529 "pengiriman_binjai", 8530 8531 8532 8533 8534 8535 "pengiriman_blitar", 8536 8537 8538 8539 8540 8541 "pengiriman_blora", 8542 8543 8544 8545 8546 8547 8548 8549 8550 8551 "pengiriman_bojonegoro", 8552 8553 8554 8555 8556 8557 "pengiriman_boyolali", 8558 8559 8560 8561 8562 8563 "pengiriman_bukittinggi", 8564 8565 8566 8567 8568 8569 "pengiriman_buleleng", 8570 8571 8572 8573 8574 8575 "pengiriman_ciamis", 8576 8577 8578 8579 8580 8581 "pengiriman_cianjur", 8582 8583 8584 8585 8586 8587 "pengiriman_cibinong", 8588 8589 8590 8591 8592 8593 "pengiriman_cikarang", 8594 8595 8596 8597 8598 8599 "pengiriman_cikupa", 8600 8601 8602 8603 8604 8605 "pengiriman_cilacap", 8606 8607 8608 8609 8610 8611 "pengiriman_cileunyi", 8612 8613 8614 8615 8616 8617 "pengiriman_cimahi", 8618 8619 8620 8621 8622 8623 "pengiriman_cirebon", 8624 8625 8626 8627 8628 8629 "pengiriman_ciwidey", 8630 8631 8632 8633 8634 8635 "pengiriman_deli serdang", 8636 8637 8638 8639 8640 8641 "pengiriman_demak", 8642 8643 8644 8645 8646 8647 "pengiriman_denpasar", 8648 8649 8650 8651 8652 8653 8654 "pengiriman_garut", 8655 8656 8657 8658 8659 8660 "pengiriman_gianyar", 8661 8662 8663 8664 8665 8666 "pengiriman_gresik", 8667 8668 8669 8670 8671 8672 "pengiriman_gunung kidul", 8673 8674 8675 8676 8677 8678 8679 "pengiriman_jambi", 8680 8681 8682 8683 8684 8685 "pengiriman_jayapura", 8686 8687 8688 8689 8690 8691 "pengiriman_jember", 8692 8693 8694 8695 8696 8697 "pengiriman_jepara", 8698 8699 8700 8701 8702 8703 "pengiriman_jombang", 8704 8705 8706 8707 8708 8709 "pengiriman_karanganyar", 8710 8711 8712 8713 8714 8715 "pengiriman_karawang", 8716 8717 8718 8719 8720 8721 "pengiriman_karo", 8722 8723 8724 8725 8726 8727 "pengiriman_kebumen", 8728 8729 8730 8731 8732 8733 "pengiriman_kediri", 8734 8735 8736 8737 8738 8739 "pengiriman_keerom", 8740 8741 8742 8743 8744 8745 "pengiriman_kendal", 8746 8747 8748 8749 8750 8751 "pengiriman_klaten", 8752 8753 8754 8755 8756 8757 "pengiriman_kudus", 8758 8759 8760 8761 8762 8763 "pengiriman_kupang", 8764 8765 8766 8767 8768 8769 "pengiriman_lainnya", 8770 8771 8772 8773 8774 8775 "pengiriman_lamongan", 8776 8777 8778 8779 8780 8781 "pengiriman_lampung", 8782 8783 8784 8785 8786 8787 "pengiriman_lampung barat", 8788 8789 8790 8791 8792 8793 "pengiriman_lembang", 8794 8795 8796 8797 8798 8799 "pengiriman_lombok", 8800 8801 8802 8803 8804 8805 "pengiriman_lumajang", 8806 8807 8808 8809 8810 8811 "pengiriman_madiun", 8812 8813 8814 8815 8816 8817 "pengiriman_magelang", 8818 8819 8820 8821 8822 8823 "pengiriman_majalengka", 8824 8825 8826 8827 8828 8829 "pengiriman_makassar", 8830 8831 8832 8833 8834 8835 "pengiriman_malang", 8836 8837 8838 8839 8840 8841 "pengiriman_manado", 8842 8843 8844 8845 8846 8847 "pengiriman_medan", 8848 8849 8850 8851 8852 8853 "pengiriman_mengwi", 8854 8855 8856 8857 8858 8859 "pengiriman_mojokerto", 8860 8861 8862 8863 8864 8865 "pengiriman_nganjuk", 8866 8867 8868 8869 8870 8871 "pengiriman_ngawi", 8872 8873 8874 8875 8876 8877 "pengiriman_padang", 8878 8879 8880 8881 8882 8883 "pengiriman_palembang", 8884 8885 8886 8887 8888 8889 "pengiriman_pasuruan", 8890 8891 8892 8893 8894 8895 "pengiriman_pati", 8896 8897 8898 8899 8900 8901 "pengiriman_pekalongan", 8902 8903 8904 8905 8906 8907 "pengiriman_pekanbaru", 8908 8909 8910 8911 8912 8913 "pengiriman_pemalang", 8914 8915 8916 8917 8918 8919 "pengiriman_ponorogo", 8920 8921 8922 8923 8924 8925 "pengiriman_pontianak", 8926 8927 8928 8929 8930 8931 "pengiriman_probolinggo", 8932 8933 8934 8935 8936 8937 "pengiriman_purbalingga", 8938 8939 8940 8941 8942 8943 "pengiriman_purwakarta", 8944 8945 8946 8947 8948 8949 "pengiriman_purwokerto", 8950 8951 8952 8953 8954 8955 "pengiriman_rembang", 8956 8957 8958 8959 8960 8961 "pengiriman_riau", 8962 8963 8964 8965 8966 8967 "pengiriman_salatiga", 8968 8969 8970 8971 8972 8973 "pengiriman_samarinda", 8974 8975 8976 8977 8978 8979 "pengiriman_semarang", 8980 8981 8982 8983 8984 8985 "pengiriman_sentani", 8986 8987 8988 8989 8990 8991 "pengiriman_serang", 8992 8993 8994 8995 8996 8997 "pengiriman_sidoarjo", 8998 8999 9000 9001 9002 9003 "pengiriman_singkawang", 9004 9005 9006 9007 9008 9009 "pengiriman_sragen", 9010 9011 9012 9013 9014 9015 "pengiriman_subang", 9016 9017 9018 9019 9020 9021 "pengiriman_sukabumi", 9022 9023 9024 9025 9026 9027 "pengiriman_sumbawa", 9028 9029 9030 9031 9032 9033 "pengiriman_surabaya", 9034 9035 9036 9037 9038 9039 "pengiriman_surakarta solo", 9040 9041 9042 9043 9044 "pengiriman_tasikmalaya", 9045 9046 9047 9048 9049 9050 "pengiriman_tegal", 9051 9052 9053 9054 9055 9056 "pengiriman_timika", 9057 9058 9059 9060 9061 9062 "pengiriman_wamena", 9063 9064 9065 9066 9067 9068 "pengiriman_wiyung", 9069 9070 9071 9072 9073 9074 "pengiriman_wonokromo", 9075 9076 9077 9078 9079 9080 "pengiriman_yogyakarta", 9081 9082 ] 9083 console.log(cityNonJabodetabek) 9084 let non_jabodetabek = [] 9085 for(var i=0;i<cityNonJabodetabek.length;i++) { 9086 const obj = { 9087 "code": cityNonJabodetabek[i].toLowerCase().replace('pengiriman_', '').replace(' ','-'), 9088 "city": cityNonJabodetabek[i].replace('pengiriman_', '').replace(' ','-'), 9089 "zip": [] 9090 } 9091 non_jabodetabek.push(obj) 9092 } 9093 let current_location = getCookie("location_delivery") 9094 $("[name=location]").change(function(){ 9095 let v = $(this).val() 9096 let option = [] 9097 if(v == 'Jabodetabek') { 9098 for(var i=0;i<jabodetabek.length;i++) { 9099 const jabodetabekHtml = `<option value=${jabodetabek[i].city}>${jabodetabek[i].city}</option>` 9100 option.push(jabodetabekHtml) 9101 } 9102 $("#choose-location").html(`<option value="">Choose Location</option>${option}`) 9103 } else { 9104 for(var i=0;i<non_jabodetabek.length;i++) { 9105 const nonjabodetabekHtml = `<option value=${non_jabodetabek[i].city}>${non_jabodetabek[i].city}</option>` 9106 option.push(nonjabodetabekHtml) 9107 } 9108 $("#choose-location").html(`<option value="">Choose Location</option>${option}`) 9109 } 9110 }) 9111 9112 $("#location-lock-submit").click(function(e){ 9113 let select = $("#choose-location") 9114 let value = select.val().toLowerCase() 9115 console.log(value) 9116 if(select.val() == "") { 9117 return alert("Choose Your Location") 9118 e.preventDefault() 9119 }
9120 setCookie("location_delivery",value,1000000); 9121 9122 location.reload(); 9123 9124 }) 9125 9126 $("#close-popup-delivery").click(function(){ 9127 $(".MuiDialog-root").hide() 9128 if(!current_location){ 9129 setCookie("location_delivery","jakarta",1000000); 9130 $("#loc_delivery_city, #loc_delivery_city_mobile").text("Jakarta") 9131 } 9132 }) 9133 $("#loc_delivery, #loc_delivery_mobile").click(function(){ 9134 $(".MuiDialog-root").show() 9135 }) 9136 9137 9138 if(!current_location){ 9139 9140 } else { 9141 $("#loc_delivery_city, #loc_delivery_city_mobile").text(current_location) 9142 console.log(current_location) 9143 $("#choose-location").each(function(){ 9144 if(current_location == 'jakarta' || current_location == 'depok' || current_location == 'bogor' || current_location == 'tangerang' || current_location == 'bekasi'){ 9145 $("#jabodetabek").trigger("click") 9146 } else { 9147 $("#non-jabodetabek").trigger("click") 9148 } 9149 $("#choose-location").find("option[value="+current_location+"]").attr("selected", "selected") 9150 }) 9151 } 9152 9153 // 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'){ 9154 // $("#timeMalam").attr("disabled", false) 9155 // } else { 9156 // $("#timeMalam").attr("disabled", true) 9157 // } 9158 9159 if(current_location && current_location != 'jakarta') { 9160 $("#self-pickup").attr("disabled", true) 9161 } 9162 9163 function setCookie(name,value,days) { 9164 var expires = ""; 9165 if (days) { 9166 var date = new Date(); 9167 date.setTime(date.getTime() + (days*24*60*60*1000)); 9168 expires = "; expires=" + date.toUTCString(); 9169 } 9170 document.cookie = name + "=" + (value || "") + expires + "; path=/"; 9171 } 9172 function getCookie(name) { 9173 var nameEQ = name + "="; 9174 var ca = document.cookie.split(';'); 9175 for(var i=0;i < ca.length;i++) { 9176 var c = ca[i]; 9177 while (c.charAt(0)==' ') c = c.substring(1,c.length); 9178 if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 9179 } 9180 return null; 9181 } 9182 </script>
9182 9183 <!-- One Tap --> 9184
9184<script> 9185 console.log("Outerbloom..."); 9186 </script>
9186 9187 <div id="shopify-block-ANVEzSUcxTUxZOGpwZ__9703700522657871012" class="shopify-block shopify-app-block"> 9188 9189 9190 9191 9192 9193 9194 9195 9196 9197 9198 9199 9200 9201 9202 9203 9204 9205 9206 9207 9208 9209 9210 9211 9212 9213 9214 9215 9216 9217 9218 9219 9220 9221 9222 9223 9224 9225 9226 9227 9228 9229 9230 9231 9232 9233 9234 <link rel="stylesheet" href="https://cdn1.bitbybit.studio/bitbybit/static/bitChat_widget/widget.css" /> 9235
9235<script src="https://cdn1.bitbybit.studio/bitbybit/static/bitChat_widget/widget.js" defer></script>
9235 9236
9236<script> 9237 const widgetConfig = { 9238 id: "clz7897za002cz7otleaz0d3d", 9239 showQuickResponse: false, 9240 quickResponsesData: [], 9241 themeColor: "#ffffff", 9242 widgetText: "", 9243 radiusType: "circle", 9244 widgetIconType: "whatsapp", 9245 position: "right", 9246 storeLogo: "", 9247 storeName: "Outerbloom", 9248 storeDescription: "", 9249 size: "small", 9250 showCard: false, 9251 widgetColorType: "solid", 9252 widgetColor1: "#008069", 9253 widgetColor2: "#008069", 9254 social: { 9255 socialOrders: ["instagram","tiktok","facebook","x","youtube","linkedin","email"], 9256 values: { 9257 instagram: { 9258 enabled: false, 9259 value: "", 9260 }, 9261 facebook: { 9262 enabled: false, 9263 value: "", 9264 }, 9265 email: { 9266 enabled: false, 9267 value: "", 9268 }, 9269 x: { 9270 enabled: false, 9271 value: "", 9272 }, 9273 tiktok: { 9274 enabled: false, 9275 value: "", 9276 }, 9277 linkedin: { 9278 enabled: false, 9279 value: "", 9280 }, 9281 youtube: { 9282 enabled: false, 9283 value: "", 9284 }, 9285 }, 9286 }, 9287 }; 9288 9289 function initializeWidget() { 9290 if (typeof BBBWidget !== 'undefined') { 9291 BBBWidget.init(widgetConfig); 9292 } else { 9293 setTimeout(initializeWidget, 100); 9294 } 9295 } 9296 9297 initializeWidget();</script>
9297 9298 9299 9300 </div><div id="shopify-block-ATzRpVTBPU3k1R2pnW__286197278318599166" class="shopify-block shopify-app-block"> 9301 9302 9303 <div style="position: fixed; bottom: 0; right: 0"></div> 9304 9305
9305<script> 9306 console.info("bitlogin extension version: v2.5.7"); 9307 9308 const googleScript = document.createElement("script"); 9309 googleScript.setAttribute("src", "https://accounts.google.com/gsi/client"); 9310 document.head.append(googleScript); 9311 9312 const bitLoginBaseUrl = "https://api.bitbybit.studio"; 9313 const apiUrl = `${bitLoginBaseUrl}/bitlogin/api`; 9314 9315 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"}}; 9316 const config = [{"domain":"outerbloom1.myshopify.com","provider":"FACEBOOK","enabledMobile":false,"enabledWeb":true,"clientId":"922184709213757","clientSecret":"e3c874c8bce6da4211538ebda706d1cb","appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":false,"position":null},{"domain":"outerbloom1.myshopify.com","provider":"GOOGLE","enabledMobile":true,"enabledWeb":true,"clientId":"933600373534-vk6hiu9lqrtbblj0357q0gsoo7mqvsd0.apps.googleusercontent.com","clientSecret":"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","appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":true,"position":null},{"domain":"outerbloom1.myshopify.com","provider":"APPLE","enabledMobile":true,"enabledWeb":true,"clientId":"com.bitlogin.outerbloom","clientSecret":"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","appleTeamId":"1A","applePrivateKey":"1A","usePersonalOauth":false,"position":null},{"domain":"outerbloom1.myshopify.com","provider":"WHATSAPP","enabledMobile":false,"enabledWeb":true,"clientId":null,"clientSecret":null,"appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":false,"position":null},{"domain":"outerbloom1.myshopify.com","provider":"MICROSOFT","enabledMobile":false,"enabledWeb":false,"clientId":null,"clientSecret":null,"appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":false,"position":null},{"domain":"outerbloom1.myshopify.com","provider":"TWITTER","enabledMobile":false,"enabledWeb":false,"clientId":null,"clientSecret":null,"appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":false,"position":null},{"domain":"outerbloom1.myshopify.com","provider":"AMAZON","enabledMobile":false,"enabledWeb":false,"clientId":"amzn1.application-oa2-client.5b560a5e3e2943d6b25c50cd6dca5532","clientSecret":"amz
9316n1.oa2-cs.v1.1cb5f9085a202341f60daf5a7be16c570ccc0b4bd5908b3afd080f34e9b8935d","appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":false,"position":null}]; 9317 const redirectUrl = appearance.redirectLink; 9318 9319 let locationCacheSet = false; 9320 let errorLocation = false; 9321 let oneTapSet = false; 9322 9323 let bitloginCache = { 9324 appearance: appearance, 9325 config: config 9326 }; 9327 9328 let isInitializing = false; 9329 const queue = []; 9330 9331 // Add CSS for the popup 9332 const popupStyles = document.createElement('style'); 9333 popupStyles.textContent = ` 9334 /* Styles for login popup */ 9335 .bitlogin-popup-overlay { 9336 position: fixed; 9337 top: 0; 9338 left: 0; 9339 width: 100%; 9340 height: 100%; 9341 background: rgba(0, 0, 0, 0.45); 9342 backdrop-filter: blur(4px); 9343 display: flex; 9344 align-items: center; 9345 justify-content: center; 9346 opacity: 0; 9347 transition: opacity 0.3s ease-in-out; 9348 z-index: 999999; 9349 } 9350 9351 .bitlogin-popup-overlay.visible { 9352 opacity: 1; 9353 } 9354 9355 .bitlogin-popup { 9356 background: #FFFFFF; 9357 box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); 9358 border-radius: 16px; 9359 width: 100%; 9360 max-width: 560px; 9361 display: flex; 9362 overflow: hidden; 9363 position: relative; 9364 opacity: 0; 9365 transform: translateY(20px) scale(0.98); 9366 transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1); 9367 } 9368 9369 .bitlogin-popup.visible { 9370 opacity: 1; 9371 transform: translateY(0) scale(1); 9372 } 9373 9374 .bitlogin-popup-with-image { 9375 max-width: 640px; 9376 } 9377 9378 .bitlogin-popup-right-image { 9379 flex-direction: row-reverse; 9380 } 9381 9382 .bitlogin-popup-image { 9383 object-fit: cover; 9384 width: 50%; 9385 height: auto; 9386 } 9387 9388 .bitlogin-popup-content { 9389 padding: 32px; 9390 position: relative; 9391 width: 50%; 9392 } 9393 9394 .bitlogin-popup-close { 9395 position: absolute; 9396 top: 16px; 9397 right: 16px; 9398 background: white; 9399 border: none; 9400 width: 30px; 9401 height: 30px; 9402 display: flex; 9403 align-items: center; 9404 justify-content: center; 9405 cursor: pointer; 9406 transition: background-color 0.2s; 9407 color: inherit; 9408 padding: 0; 9409 } 9410 9411 .bitlogin-popup-close:hover { 9412 background-color: #e5e5e5; 9413 } 9414 9415 .bitlogin-popup-buttons { 9416 display: flex; 9417 flex-direction: column; 9418 gap: 12px; 9419 margin-top: 24px; 9420 } 9421 9422 /* Button styles within popup - override width for popup buttons */ 9423 .bitlogin-popup-buttons #google-login, 9424 .bitlogin-popup-buttons #facebook-login, 9425 .bitlogin-popup-buttons #apple-login, 9426 .bitlogin-popup-buttons #whatsapp-login, 9427 .bitlogin-popup-buttons #microsoft-login, 9428 .bitlogin-popup-buttons #twitter-login, 9429 .bitlogin-popup-buttons #amazon-login, 9430 .bitlogin-popup-buttons #instagram-login, 9431 .bitlogin-popup-buttons #magic-link-login, 9432 .bitlogin-popup-buttons #mobile-app-login { 9433 width: 100% !important; 9434 font-family: inherit !important; 9435 } 9436 9437 .bitlogin-popup-footer { 9438 margin-top: 32px; 9439 text-align: center; 9440 font-size: 14px; 9441 opacity: 0.6; 9442 } 9443 9444 /* Modern Typography */ 9445 .bitlogin-popup h2 { 9446 margin-top: 12px; 9447 font-size: 21px !important; 9448 line-height: 1.2 !important; 9449 font-weight: 700 !important; 9450 letter-spacing: -0.02em !important; 9451 margin-bottom: 16px !important; 9452 } 9453 9454 .bitlogin-popup-header { 9455 position: relative; 9456 margin-bottom: 24px; 9457 } 9458 9459 /* Modern gradient accent */ 9460 .bitlogin-popup-content > div { 9461 font-size: 16px !important; 9462 line-height: 1.2 !important; 9463 opacity: 0.85 !important; 9464 } 9465 9466 /* Enhanced button interactions */ 9467 .bitlogin-popup-buttons button { 9468 position: relative; 9469 overflow: hidden; 9470 } 9471 9472 @keyframes ripple { 9473 0% { 9474 transform: scale(0, 0); 9475 opacity: 0.5; 9476 } 9477 100% { 9478 transform: scale(100, 100); 9479 opacity: 0; 9480 } 9481 } 9482 9483 /* Responsive adjustments */ 9484 @media (max-width: 640px) { 9485 .bitlogin-popup { 9486 max-width: 90%; 9487 width: 90%; 9488 margin: 0 16px; 9489 } 9490 9491 .bitlogin-popup-with-image { 9492 flex-direction: column !important; 9493 } 9494 9495 .bitlogin-popup-image { 9496 width: 100%; 9497 height: 180px; 9498 } 9499 9500 .bitlogin-popup-content { 9501 padding: 24px; 9502 } 9503 9504 .bitlogin-popup h2 { 9505 font-size: 24px !important; 9506 } 9507 } 9508 `; 9509
9510 document.head.appendChild(popupStyles); 9511 9512 // Add fonts link for different font options 9513 const fontsLink = document.createElement('link'); 9514 fontsLink.rel = 'stylesheet'; 9515 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'; 9516 document.head.appendChild(fontsLink); 9517 9518 (async () => { 9519 try { 9520 let host = window.location.host; 9521 if (host === "admin.shopify.com") { 9522 host = `${window.location.pathname.split("/")[2]}.myshopify.com`; 9523 } 9524 9525 const urlSearchParams = new URLSearchParams(window.location.search); 9526 const checkoutUrl = urlSearchParams.get("checkout_url"); 9527 9528 async function init({ inputRef, index }) { 9529 if (isInitializing) { 9530 queue.push(() => init({ inputRef, index })); 9531 return; 9532 } 9533 9534 isInitializing = true; 9535 9536 try { 9537 let bitLoginSectionRoot = document.querySelector( 9538 `.bitlogin-root[data-index="${index}"]` 9539 ); 9540 9541 const formRef = inputRef?.closest( 9542 "form:not([action='/account/recover'])" 9543 ); 9544 9545 if (formRef && !bitLoginSectionRoot) { 9546 await getLocation(); 9547 9548 bitLoginSectionRoot = document.createElement(`div`); 9549 9550 bitLoginSectionRoot.setAttribute("class", "bitlogin-root"); 9551 bitLoginSectionRoot.setAttribute("data-index", `${index}`); 9552 9553 updateAppearance({ 9554 formRef, 9555 rootRef: bitLoginSectionRoot, 9556 host, 9557 }); 9558 } 9559 } catch (err) { 9560 console.error(`error while initiating bitlogin extensions`, err); 9561 } finally { 9562 // Release the lock 9563 isInitializing = false; 9564 9565 // Check if there are pending items in the queue 9566 if (queue.length > 0) { 9567 // Process the next function in the queue 9568 const nextFunction = queue.shift(); 9569 nextFunction(); 9570 } 9571 } 9572 } 9573 9574 function initAll() { 9575 return new Promise((resolve, reject) => { 9576 setTimeout(async () => { 9577 const inputRefs = document.querySelectorAll( 9578 'input[name="customer[email]"]' 9579 ); 9580 9581 for (let i = 0; i < inputRefs.length; i++) { 9582 const currentInputRef = inputRefs[i]; 9583 const isVisible = isElementVisible(currentInputRef); 9584 9585 if (isVisible) { 9586 await init({ inputRef: currentInputRef, index: i }); 9587 } 9588 } 9589 9590 resolve("ok"); 9591 }, 100); 9592 }); 9593 } 9594 9595 const observer = new MutationObserver((mutationsList) => { 9596 for (let mutation of mutationsList) { 9597 initAll(); 9598 } 9599 }); 9600 9601 observer.observe(document.body, { 9602 childList: true, 9603 subtree: true, 9604 attributes: true, 9605 }); 9606 9607 initAll(); 9608 9609 if (appearance.googleOneTap) { 9610 setupOneTap({ host, checkoutUrl }); 9611 } 9612 9613 // Initialize popup 9614 await initPopup(host); 9615 } catch (error) { 9616 console.error("Error initializing BitLogin:", error); 9617 } 9618 })(); 9619 9620 async function initPopup(host) { 9621 // Check if user is already logged in using Liquid checks properly 9622 const isLoggedIn = false || 9623 document.querySelector('.customer-logout-link') || 9624 document.querySelector('.account-link') || 9625 window.location.pathname.includes('/account'); 9626 9627 if (isLoggedIn) { 9628 return; // User is logged in, don't show popup 9629 } 9630 9631 try { 9632 // Fetch the popup configuration 9633 const popupConfig = await fetch(`${apiUrl}/appearance/popup/domain/${host}`) 9634 .then(res => res.json()) 9635 .catch(err => { 9636 console.error('Error fetching popup configuration:', err); 9637 return null; 9638 }); 9639 9640 if (!popupConfig || !popupConfig.enabled) { 9641 return;
9641 // Don't show popup if disabled or config not found 9642 } 9643 9644 // Create popup after 10 seconds 9645 setTimeout(() => { 9646 // Check if user is still on the page and still not logged in 9647 if (document.visibilityState === 'visible') { 9648 // Additional check in case user logged in during the 10 second wait 9649 const currentlyLoggedIn = false || 9650 document.querySelector('.customer-logout-link') || 9651 document.querySelector('.account-link'); 9652 9653 if (!currentlyLoggedIn) { 9654 createLoginPopup(popupConfig, host); 9655 } 9656 } 9657 }, 10000); 9658 } catch (error) { 9659 console.error('Error initializing popup:', error); 9660 } 9661 } 9662 9663 function createLoginPopup(popupConfig, host) { 9664 // Font mapping 9665 const fontFamilyMap = { 9666 system_fonts: 'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif', 9667 montserrat: 'Montserrat, sans-serif', 9668 roboto: 'Roboto, sans-serif', 9669 open_sans: 'Open Sans, sans-serif', 9670 noto_sans: 'Noto Sans, sans-serif', 9671 lato: 'Lato, sans-serif', 9672 poppins: 'Poppins, sans-serif', 9673 quicksand: 'Quicksand, sans-serif', 9674 raleway: 'Raleway, sans-serif', 9675 pt_sans: 'PT Sans, sans-serif', 9676 oswald: 'Oswald, sans-serif', 9677 }; 9678 9679 // Create overlay 9680 const overlay = document.createElement('div'); 9681 overlay.className = 'bitlogin-popup-overlay'; 9682 9683 // Create popup container with appropriate styling 9684 const popup = document.createElement('div'); 9685 popup.className = 'bitlogin-popup'; 9686 9687 if (popupConfig.layout === 'default') { 9688 popup.style.maxWidth = '400px'; 9689 } 9690 9691 // Function to close the popup 9692 const closePopup = () => { 9693 overlay.classList.remove('visible'); 9694 popup.classList.remove('visible'); 9695 setTimeout(() => { 9696 if (document.body.contains(overlay)) { 9697 document.body.removeChild(overlay); 9698 } 9699 }, 300); 9700 }; 9701 9702 // Add click handler to the overlay to close when clicking outside 9703 overlay.addEventListener('click', (event) => { 9704 // Close only if clicking directly on the overlay, not its children 9705 if (event.target === overlay) { 9706 closePopup(); 9707 } 9708 }); 9709 9710 // Add escape key handler to close popup 9711 document.addEventListener('keydown', (event) => { 9712 if (event.key === 'Escape' && document.body.contains(overlay)) { 9713 closePopup(); 9714 } 9715 }); 9716 9717 // Create layout with image if specified 9718 let contentWrapper; 9719 if (popupConfig.layout !== 'default' && popupConfig.popupImage) { 9720 popup.classList.add('bitlogin-popup-with-image'); 9721 9722 if (popupConfig.layout === 'right') { 9723 popup.classList.add('bitlogin-popup-right-image'); 9724 } 9725 9726 // Add image 9727 const image = document.createElement('img'); 9728 image.className = 'bitlogin-popup-image'; 9729 image.src = popupConfig.popupImage; 9730 image.alt = 'Login'; 9731 image.loading = 'lazy'; 9732 popup.appendChild(image); 9733 9734 // Create content container 9735 contentWrapper = document.createElement('div'); 9736 contentWrapper.className = 'bitlogin-popup-content'; 9737 9738 if (popupConfig.layout === 'right') { 9739 const closeButton = document.createElement('button'); 9740 closeButton.className = 'bitlogin-popup-close'; 9741 closeButton.innerHTML = `<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png"> 9742 <path d="M13 1L1 13M1 1L13 13" stroke="${popupConfig.fontColor}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 9743 </svg>`; 9744 closeButton.setAttribute('aria-label', 'Close'); 9745 closeButton.onclick = closePopup; 9746 9747 popup.appendChild(closeButton); 9748 } 9749 } else { 9750 contentWrapper = document.createElement('div'); 9751 contentWrapper.className = 'bitlogin-popup-content'; 9752 contentWrapper.style.width = '100%'; 9753 } 9754 9755 // Set background style 9756 if (popupConfig.backgroundTheme === 'gradient') { 9757 contentWrapper.style.background = `linear-gradient(135deg, ${popupConfig.backgroundPopupColor}, ${popupConfig.gradientColor})`; 9758 } else { 9759 contentWrapper.style.backgroundColor = popupConfig.backgroundPopupColor; 9760 } 9761 9762 // Apply font family 9763 contentWrapper.style.setProperty('font-family', fontFamilyMap[popupConfig.font] || fontFamilyMap.system_fonts, 'important'); 9764 9765 if (popupConfig.layout !== 'right') { 9766 const closeButton = document.createElement('button'); 9767 closeButton.className = 'bitlogin-popup-close'; 9768 closeButton.innerHTML = `<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png"> 9769 <path d="M13 1L1 13M1 1L13 13" stroke="${popupConfig.fontColor}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 9770 </svg>`; 9771 closeButton.setAttribute('aria-label', 'Close'); 9772 closeButton.onclick = closePopup; 9773 9774 contentWrapper.appendChild(closeButton); 9775 } 9776 9777 // Add heading with subtle animation effect 9778 const header = document.createElement('div'); 9779 header.className = 'bitlogin-popup-header'; 9780 9781 const heading = document.createElement('h2'); 9782 heading.textContent = popupConfig.headingText || 'Sign in for exclusive benef
9782its'; 9783 heading.style.color = popupConfig.fontColor; 9784 header.appendChild(heading); 9785 9786 // Add body text with improved formatting 9787 const bodyText = document.createElement('div'); 9788 bodyText.innerHTML = popupConfig.bodyText || 'Join our community to access exclusive offers and a personalized shopping experience.'; 9789 bodyText.style.color = popupConfig.fontColor; 9790 header.appendChild(bodyText); 9791 9792 contentWrapper.appendChild(header); 9793 9794 // Create buttons container with modern styling 9795 const buttonsContainer = document.createElement('div'); 9796 buttonsContainer.className = 'bitlogin-popup-buttons'; 9797 9798 // Add social buttons 9799 const providerLabels = { 9800 'GOOGLE': 'Continue with Google', 9801 'FACEBOOK': 'Continue with Facebook', 9802 'APPLE': 'Continue with Apple', 9803 'WHATSAPP': 'Continue with WhatsApp', 9804 'MAGIC_LINK': 'Continue with Email', 9805 }; 9806 9807 // Add first login provider button 9808 if (popupConfig.loginProvider1 !== 'NONE') { 9809 const buttonConfig = { 9810 theme: popupConfig.colorScheme || 'match', 9811 customColor: popupConfig.textColor, 9812 format: 'contentFlex', 9813 buttonText: bitloginCache.appearance.buttonList[popupConfig.loginProvider1.toLowerCase()], 9814 hasShadow: popupConfig.hasShadow !== undefined ? popupConfig.hasShadow : true, 9815 style: popupConfig.style || 'rounded', 9816 size: popupConfig.size || 'medium', 9817 colorScheme: popupConfig.colorScheme || 'match', 9818 backgroundColor: popupConfig.backgroundColor || '#3B82F6', 9819 textColor: popupConfig.textColor || '#FFFFFF', 9820 outlineColor: popupConfig.outlineColor || '#3B82F6', 9821 host: host 9822 }; 9823 9824 const button1 = createSocialLoginButton(popupConfig.loginProvider1, buttonConfig); 9825 9826 // Handle click event - this overrides the default click handler in createSocialLoginButton 9827 button1.onclick = () => { 9828 onClickSocialLogin({ provider: popupConfig.loginProvider1.toLowerCase(), host }); 9829 closePopup(); 9830 }; 9831 9832 buttonsContainer.appendChild(button1); 9833 } 9834 9835 // Add second login provider button if enabled 9836 if (popupConfig.loginProvider2 !== 'NONE') { 9837 const buttonConfig = { 9838 theme: popupConfig.colorScheme || 'match', 9839 customColor: popupConfig.textColor, 9840 format: 'contentFlex', 9841 buttonText: bitloginCache.appearance.buttonList[popupConfig.loginProvider2.toLowerCase()], 9842 hasShadow: popupConfig.hasShadow !== undefined ? popupConfig.hasShadow : true, 9843 style: popupConfig.style || 'rounded', 9844 size: popupConfig.size || 'medium', 9845 colorScheme: popupConfig.colorScheme || 'match', 9846 backgroundColor: popupConfig.backgroundColor || '#3B82F6', 9847 textColor: popupConfig.textColor || '#FFFFFF', 9848 outlineColor: popupConfig.outlineColor || '#3B82F6', 9849 host: host 9850 }; 9851 9852 const button2 = createSocialLoginButton(popupConfig.loginProvider2, buttonConfig); 9853 9854 // Handle click event - this overrides the default click handler in createSocialLoginButton 9855 button2.onclick = () => { 9856 onClickSocialLogin({ provider: popupConfig.loginProvider2.toLowerCase(), host }); 9857 closePopup(); 9858 }; 9859 9860 buttonsContainer.appendChild(button2); 9861 } 9862 9863 contentWrapper.appendChild(buttonsContainer); 9864 9865 // Append content to popup 9866 popup.appendChild(contentWrapper); 9867 9868 // Append popup to overlay 9869 overlay.appendChild(popup); 9870 9871 // Append overlay to body 9872 document.body.appendChild(overlay); 9873 9874 // Trigger animation with slight delay for better perceived performance 9875 setTimeout(() => { 9876 overlay.classList.add('visible'); 9877 setTimeout(() => { 9878 popup.classList.add('visible'); 9879 }, 50); 9880 }, 10); 9881 } 9882 9883 window.addEventListener("load", () => { 9884 window.addEventListener("message", (event) => { 9885 const receivedData = event.data; 9886 9887 if (receivedData.type === "authorize") { 9888 post( 9889 JSON.parse( 9890 JSON.stringify({ 9891 "customer[email]": receivedData.email, 9892 "customer[password]": receivedData.password, 9893 form_type: "customer_login", 9894 utf8: "â", 9895 return_url: redirectUrl, 9896 }) 9897 ) 9898 ); 9899 } else if (receivedData.type === "rejected") { 9900 if (receivedData.reason === "customer_account_disabled") { 9901 showAlert( 9902 "Your account needs to be activated. We've sent you an activation link - please check your email to complete this step." 9903 ); 9904 } else if (receivedData.reason === "customer_entry_created_email_not_set") { 9905 showAlert( 9906 "A new account was created but requires an email address. Please update your account with a valid email address to continue." 9907 ); 9908 } else if (receivedData.reason === "customer_exist_email_not_set") { 9909 showAlert( 9910 "Your existing account is missing an email address. Please contact support to update your account with a valid email address." 9911 ); 9912 } 9913 } 9914 9915 if (receivedData.type === "customer_authenticated") { 9916 // Dispatch a custom event that merchants can listen for to implement their custom logic 9917 const customerAuthEvent = new CustomEvent('bitlogin:customer_authenticated', { 9918 detail: { 9919 provider: receivedData.provider, 9920 customer: receivedData.customer, 9921 shopifyCustomerCreated: receivedData.shopifyCustomerCreated 9922 } 9923 }); 9924 9925 // Dispatch the event on the window object so merchants can listen for it 9926 window.dispatchEvent(customerAuthEvent); 9927 9928 } 9929 }); 9930 }); 9931 9932 // Reusable functions for social login buttons 9933 function createSocialLoginButton(provider, config = {}) { 9934 const { 9935 theme = 'match', 9936 customColor = null, 9937 format = 'contentFlex', 9938 buttonText = null, 9939 hasShadow = true, 9940 style = 'rounded', 9941 size = 'medium', 9942 colorScheme = 'match', 9943 backgroundColor = '#3B82F6', 9944 textColor = '#FFFFFF', 9945 outlineColor = '#3B82F6', 9946 rootRef = null, 9947 host = null 9948 } = config; 9949 9950 // Create button element with appropriate ID and attributes 9951 const button = document.createElement('button'); 9952 button.id = `${provider.toLowerCase()}-login`; 9953 button.type = 'button'; 9954 9955 // Set the inner SVG based on provider 9956 switch (provider.toUpperCase()) {
9957 case 'GOOGLE': 9958 button.innerHTML = googleLoginIcon(theme, customColor); 9959 break; 9960 case 'FACEBOOK': 9961 button.innerHTML = facebookLoginIcon(theme, customColor); 9962 break; 9963 case 'APPLE': 9964 button.innerHTML = appleLoginIcon(theme, customColor); 9965 break; 9966 case 'WHATSAPP': 9967 button.innerHTML = whatsappLoginIcon(theme, customColor); 9968 break; 9969 case 'MICROSOFT': 9970 button.innerHTML = microsoftLoginIcon(theme, customColor); 9971 break; 9972 case 'TWITTER': 9973 button.innerHTML = twitterLoginIcon(theme, customColor); 9974 break; 9975 case 'AMAZON': 9976 button.innerHTML = amazonLoginIcon(theme, customColor); 9977 break; 9978 case 'INSTAGRAM': 9979 button.innerHTML = instagramLoginIcon(theme, customColor); 9980 break; 9981 case 'MAGIC_LINK': 9982 button.innerHTML = magicLinkLoginIcon(theme, customColor); 9983 break; 9984 case 'MOBILE_APP': 9985 button.innerHTML = mobileAppLoginIcon(theme, customColor); 9986 break; 9987 case 'LINKEDIN': 9988 button.innerHTML = linkedinLoginIcon(theme, customColor); 9989 break; 9990 } 9991 9992 // Add text if format isn't icon-only and buttonText is provided 9993 if (format !== "wrapperFlexContainerOnlyLogo" && buttonText) { 9994 button.innerHTML += `<p>${buttonText}</p>`; 9995 } 9996 9997 // Apply styling 9998 // Shadow 9999 if (hasShadow) { 10000 const shadowProperties = `0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)`; 10001 button.style["box-shadow"] = shadowProperties; 10002 } 10003 10004 // Border radius 10005 const radiusProperties = 10006 style === "rounded" 10007 ? "8px" 10008 : style === "square" 10009 ? "0px" 10010 : style === "fullRounded" 10011 ? format === "wrapperFlexContainerOnlyLogo" 10012 ? "50%" 10013 : "50px" 10014 : undefined; 10015 button.style["border-radius"] = radiusProperties; 10016 10017 // Size 10018 const sizeProperties = 10019 size === "medium" 10020 ? "12px" 10021 : size === "small" 10022 ? "8px" 10023 : size === "large" 10024 ? "16px" 10025 : "8px"; 10026 10027 button.style["padding-block"] = sizeProperties; 10028 10029 // Format styling 10030 if (format) { 10031 if ( 10032 format === "contentFlexReverse" || 10033 format === "contentFlexCenterReverse" 10034 ) { 10035 const flexDir = `row-reverse`; 10036 button.style["flex-direction"] = flexDir; 10037 } 10038 10039 if ( 10040 format === "contentFlexCenter" || 10041 format === "contentFlexCenterReverse" 10042 ) { 10043 const justifyContent = `center`; 10044 button.style["justify-content"] = justifyContent; 10045 } else if ( 10046 format === "contentFlex" || 10047 format === "contentFlexReverse" 10048 ) { 10049 const buttonTextElement = button.querySelector("p"); 10050 if (buttonTextElement) { 10051 buttonTextElement.style["flex-grow"] = 1; 10052 buttonTextElement.style["text-align"] = "center"; 10053 } 10054 } 10055 10056 if (format === "wrapperFlexContainerOnlyLogo" && rootRef) { 10057 rootRef.style["flex-direction"] = "row"; 10058 rootRef.style["gap"] = "8px"; 10059 rootRef.style["display"] = "flex"; 10060 rootRef.style["flex-wrap"] = "wrap"; 10061 10062 const sizeMapping = { 10063 small: "52px", 10064 medium: "62px", 10065 large: "72px", 10066 }; 10067 const buttonSize = sizeMapping[size] || "52px"; 10068 10069 button.style["margin"] = 0; 10070 button.style["width"] = buttonSize; 10071 button.style["height"] = buttonSize; 10072 button.style["display"] = "flex"; 10073 button.style["align-items"] = "center"; 10074 button.style["justify-content"] = "center"; 10075 10076 const svgElement = button.querySelector("svg"); 10077 if (svgElement) { 10078 svgElement.style["flex"] = "none"; 10079 } 10080 } 10081 } 10082 10083 // Color scheme styling 10084 if (colorScheme === "black") { 10085 button.classList.add("scheme-black"); 10086 } else if (colorScheme === "white") { 10087 button.classList.add("scheme-white"); 10088 } else if (colorScheme === "custom") { 10089 button.style["background-color"] = backgroundColor; 10090 button.style["color"] = textColor; 10091 button.style["border-color"] = outlineColor; 10092 10093 const darkenColor = (color, percentage) => { 10094 const value = parseInt(color.slice(1), 16); 10095 const r = Math.max(0, ((value >> 16) & 0xff) - (0xff * percentage)); 10096 const g = Math.max(0, ((value >> 8) & 0xff) - (0xff * percentage)); 10097 const b = Math.max(0, (value & 0xff) - (0xff * percentage)); 10098 return `rgb(${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)})`; 10099 }; 10100 10101 button.addEventListener("mouseover", () => {
10102 button.style["background-color"] = darkenColor(backgroundColor, 0.2); 10103 }); 10104 button.addEventListener("mouseout", () => { 10105 button.style["background-color"] = backgroundColor; 10106 }); 10107 } else if (colorScheme === "match") { 10108 button.classList.add("scheme-match"); 10109 } else if (colorScheme === "matchOutline") { 10110 button.classList.add("scheme-match-outline"); 10111 } 10112 10113 // Add click event listener if host is provided 10114 if (host) { 10115 button.addEventListener("click", () => 10116 onClickSocialLogin({ provider: provider.toLowerCase(), host }) 10117 ); 10118 } 10119 10120 return button; 10121 } 10122 10123 function setupSocialLoginButtons(config, rootRef, data, host) { 10124 // Clear any existing content 10125 rootRef.innerHTML = ''; 10126 10127 const sortedEnabledProviders = config 10128 .filter(c => c.enabledWeb) 10129 .sort((a, b) => a.position - b.position); 10130 10131 sortedEnabledProviders.forEach(provider => { 10132 const key = provider.provider; 10133 const lowerKey = key.toLowerCase(); 10134 10135 const buttonText = data.format !== "wrapperFlexContainerOnlyLogo" 10136 ? (lowerKey === 'twitter' 10137 ? data.buttonList.twitter.replace('Twitter', 'X') 10138 : data.buttonList[lowerKey]) 10139 : null; 10140 10141 const button = createSocialLoginButton(key, { 10142 theme: data.colorScheme || 'match', 10143 customColor: data.textColor, 10144 format: data.format, 10145 buttonText: buttonText, 10146 hasShadow: data.hasShadow !== undefined ? data.hasShadow : true, 10147 style: data.style, 10148 size: data.size, 10149 colorScheme: data.colorScheme, 10150 backgroundColor: data.backgroundColor, 10151 textColor: data.textColor, 10152 outlineColor: data.outlineColor, 10153 rootRef: rootRef, 10154 host: host 10155 }); 10156 10157 rootRef.appendChild(button); 10158 }); 10159 10160 return rootRef; 10161 } 10162 10163 function updateAppearance({ formRef, rootRef, host }) { 10164 if (!formRef) return; 10165 10166 const data = bitloginCache.appearance || { 10167 style: "square", 10168 hasShadow: false, 10169 colorScheme: "match", 10170 backgroundColor: "#FFFFFF", 10171 outlineColor: "#000000", 10172 textColor: "#000000", 10173 position: "bottom", 10174 hideDivider: "false", 10175 dividerText: "OR", 10176 size: "small", 10177 format: "contentFlex", 10178 language: "en", 10179 buttonText: "Continue with", 10180 redirectLink: "/account", 10181 googleOneTap: true, 10182 googleOneTapBanner: true, 10183 customerTag: "bitLogin", 10184 redirectOneTapDesktop: null, 10185 redirectOneTapMobile: null, 10186 buttonList: { 10187 google: "Continue with Google", 10188 facebook: "Continue with Facebook", 10189 apple: "Continue with Apple", 10190 whatsapp: "Continue with WhatsApp", 10191 microsoft: "Continue with Microsoft", 10192 twitter: "Continue with X", 10193 amazon: "Continue with Amazon", 10194 instagram: "Continue with Instagram", 10195 magic_link: "Continue with Magic Link", 10196 mobile_app: "Continue with Mobile App", 10197 linkedin: "Continue with LinkedIn", 10198 }, 10199 }; 10200 10201 // Use the new setupSocialLoginButtons function to create and configure all buttons 10202 setupSocialLoginButtons(bitloginCache.config, rootRef, data, host); 10203 10204 let divider; 10205 10206 if (!data.hideDivider) { 10207 divider = document.createElement("div"); 10208 const dividerStyle = "text-align:center;margin-block:16px"; 10209 divider.setAttribute("style", dividerStyle); 10210 divider.innerHTML = data.dividerText; 10211 } 10212 10213 if (data.position === "bottom") { 10214 if (divider) { 10215 formRef.appendChild(divider); 10216 } 10217 formRef.appendChild(rootRef); 10218 } else if (data.position === "top") { 10219 if (divider) { 10220 formRef.prepend(divider); 10221 } 10222 formRef.prepend(rootRef); 10223 } 10224 } 10225 10226 10227 async function onClickSocialLogin({ provider, host }) { 10228 const rand = Math.random().toString(); 10229 10230 const locationQueryString = bitloginCache.location 10231 ? `&${objectToQueryString(bitloginCache.location)}` 10232 : ""; 10233 10234 const width = 800; 10235 const height = 600; 10236 const left = (window.screen.width / 2) - (width / 2); 10237 const top = (window.screen.height / 2) - (height / 2) - 50; 10238 10239 if(provider === 'whatsapp') { 10240 window.open( 10241 `/apps/bitlogin/whatsapp${locationQueryString ? `?${locationQueryString}` : ''}`, 10242 "mywindow", 10243 `menubar=1,resizable=1,width=${width},height=${height},top=${top},left=${left}` 10244 ); 10245 } else { 10246 window.open( 10247 `${apiUrl}/login/${provider}?referrerId=${rand}&shop=${host}${locationQueryString}`, 10248 "mywindow", 10249 `menubar=1,resizable=1,width=${width},height=${height},top=${top},left=${left}` 10250 ); 10251 } 10252 } 10253 10254 function objectToQueryString(obj) { 10255 return Object.keys(obj) 10256 .map((key) => { 10257 return encodeURIComponent(key) + "=" + encodeURIComponent(obj[key]); 10258 }) 10259 .join("&"); 10260 } 10261 10262 async function getLocation() { 10263 if (locationCacheSet) return; 10264 10265 try { 10266 const response = await fetch("https://ipapi.co/json/"); 10267 10268 if (!response.ok) { 10269 console.error(`error retrieving location...`, response.status); 10270 errorLocation = true; 10271 } else { 10272 const data = await response.json(); 10273 10274 const { city, region, country_name, country_code } = data; 10275 10276 const formattedLocationData = { 10277 city, 10278 region, 10279 country_name, 10280 country_code, 10281 }; 10282 10283 bitloginCache.location = formattedLocationData; 10284 locationCacheSet = true; 10285 errorLocation = false;
10286 } 10287 } catch (err) { 10288 console.error(`error fetching location`, err); 10289 errorLocation = true; 10290 } 10291 } 10292 10293 function post(params) { 10294 // The rest of this code assumes you are not using a library. 10295 // It can be made less verbose if you use one. 10296 const form = document.createElement("form"); 10297 form.method = "post"; 10298 form.action = `/account/login`; 10299 form.acceptCharset = "UTF-8"; 10300 form.setAttribute("data-login-with-shop-sign-in", "true"); 10301 form.setAttribute("novalidate", "novalidate"); 10302 10303 for (const key in params) { 10304 if (params.hasOwnProperty(key)) { 10305 const hiddenField = document.createElement("input"); 10306 hiddenField.type = "hidden"; 10307 hiddenField.name = key; 10308 hiddenField.value = params[key]; 10309 10310 form.appendChild(hiddenField); 10311 } 10312 } 10313 10314 document.body.appendChild(form); 10315 form.submit(); 10316 } 10317 10318 async function setupOneTap({ host, checkoutUrl }) { 10319 if (oneTapSet) return; 10320 10321 const redirectOneTapDesktop = JSON.parse(JSON.stringify(bitloginCache.appearance.redirectOneTapDesktop || '[]')); 10322 const redirectOneTapMobile = JSON.parse(JSON.stringify(bitloginCache.appearance.redirectOneTapMobile || '[]')); 10323 10324 const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); 10325 const redirectList = JSON.parse(isMobile ? redirectOneTapMobile : redirectOneTapDesktop); 10326 10327 const currentPath = window.location.pathname.toLowerCase(); 10328 const currentUrl = window.location.href.toLowerCase(); 10329 10330 const shouldHideGoogleOneTap = redirectList.some(({ value }) => { 10331 switch (value) { 10332 case 'home': 10333 return currentPath === '/'; 10334 case 'product': 10335 return currentPath.startsWith('/products/'); 10336 case 'collections': 10337 return currentPath.startsWith('/collections'); 10338 case 'cart': 10339 return currentPath === '/cart'; 10340 case 'checkout': 10341 return currentPath.startsWith('/checkouts') && !currentPath.includes('thank_you'); 10342 case 'thank_you': 10343 return currentPath.includes('/thank_you'); 10344 case 'account': 10345 return currentPath.startsWith('/account'); 10346 case 'pages': 10347 return currentPath.startsWith('/pages'); 10348 case 'blogs': 10349 return currentPath === '/blogs' || currentPath === '/blogs/news'; 10350 case 'blog_post': 10351 return currentPath.startsWith('/blogs/') && currentPath.split('/').length > 3; 10352 default: 10353 return false; 10354 } 10355 }); 10356 10357 if (shouldHideGoogleOneTap) return; 10358 10359 const oneTapClientId = bitloginCache.config.find( 10360 (config) => config.provider === "GOOGLE" 10361 )?.clientId; 10362 10363 const isLoggedIn = false; 10364 10365 if (bitloginCache.appearance.googleOneTap && oneTapClientId && !isLoggedIn) { 10366 const googleOneTapButton = document.createElement("div"); 10367 googleOneTapButton.setAttribute("id", "g_id_onload"); 10368 googleOneTapButton.setAttribute("data-client_id", oneTapClientId); 10369 googleOneTapButton.setAttribute("data-context", "signin"); 10370 googleOneTapButton.setAttribute( 10371 "data-callback", 10372 "handleGoogleOneTapResponse" 10373 ); 10374 googleOneTapButton.setAttribute("data-itp_support", "true"); 10375 10376 const googleOneTapScript = document.createElement("script"); 10377 10378 googleOneTapScript.innerHTML += ` 10379 function handleGoogleOneTapResponse(response) { 10380 if (response.credential) { 10381 const idToken = response.credential; 10382 fetch('${bitLoginBaseUrl}/bitlogin/api/login/google-one-tap', { 10383 method: 'POST', 10384 headers: { 'Content-Type': 'application/json' }, 10385 body: JSON.stringify({ idToken, shop: "${host}", ...bitloginCache.location }) 10386 }).then(response => { 10387 response.json().then((data) => { 10388 post( 10389 JSON.parse( 10390 JSON.stringify({ 10391 "customer[email]": data.email, 10392 "customer[password]": data.password, 10393 form_type: "customer_login", 10394 utf8: "â", 10395 return_url: redirectUrl, 10396 }) 10397 ) 10398 ); 10399 }); 10400 }).catch(error => { 10401 console.error('Error occurred:', error); 10402 }); 10403 } else { 10404 console.error('No credential available'); 10405 } 10406 } 10407 `; 10408 10409 document.body.append(googleOneTapButton); 10410 document.body.append(googleOneTapScript); 10411 } 10412 10413 oneTapSet = true; 10414 } 10415 10416 const googleLoginIcon = ( 10417 theme, 10418 customColor 10419 ) => ` 10420 ${ 10421 theme === "match" || theme === "matchOutline" || theme === "custom" 10422 ? `<svg 10423 xmlns='https://photoin.io/images/2026/05/28/logo-kvtoto.png' 10424 xmlns:v='https://vecta.io/nano' 10425 width='24' 10426 height='24'
10427 viewBox='0 0 186.69 190.5' 10428 > 10429 <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="${ 10430 theme === "custom" ? customColor : "#4285f4" 10431 }"/><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="${ 10432 theme === "custom" ? customColor : "#34a853" 10433 }"/><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="${ 10434 theme === "custom" ? customColor : "#fbbc05" 10435 }"/><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="${ 10436 theme === "custom" ? customColor : "#ea4335" 10437 }" clip-path="none" mask="none"/></g> 10438 </svg>` 10439 : `<svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="25" height="25" viewBox="0 0 25 25" fill="none"> 10440 <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="${ 10441 theme !== "black" ? "black" : "white" 10442 }"/> 10443 <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="${ 10444 theme !== "black" ? "black" : "white" 10445 }"/> 10446 <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="${ 10447 theme !== "black" ? "black" : "white" 10448 }"/> 10449 <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="${ 10450 theme !== "black" ? "black" : "white" 10451 }"/> 10452 </svg>` 10453 }`; 10454 10455 const appleLoginIcon = ( 10456 theme, 10457 customColor 10458 ) => `<svg width="24" height="24" viewBox="0 0 19 24" fill="none" xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png"> 10459 <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="${ 10460 theme === "custom" 10461 ? customColor 10462 : theme === "match" || theme === "black" 10463 ? "white" 10464 : "black" 10465 }"/> 10466 </svg>`; 10467 10468 const facebookLoginIcon = ( 10469 theme, 10470 customColor 10471 ) => ` 10472 ${ 10473 theme === "match" || theme === "matchOutline" || theme === "custom" 10474 ? `<svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="24" height="25" viewBox="0 0 24 25" fill="none"> 10475 <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="${ 10476 theme === "custom" ? customColor : theme === "match" ? "white" : "#1977F3" 10477 }"/> 10478 <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="${ 10479 theme === "match" ? "#1778f2" : "transparent" 10480 }"/> 10481 </svg>` 10482 : `<svg xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" width="24" height="25" viewB
10482ox="0 0 24 25" fill="none"> 10483 <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="${ 10484 theme === "black" ? "white" : "black" 10485 }"/> 10486 <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="${ 10487 theme === "black" ? "black" : "white" 10488 }"/> 10489 </svg>` 10490 }`; 10491 10492 const whatsappLoginIcon = ( 10493 theme, 10494 customColor 10495 ) => `<svg 10496 viewBox="0 0 24 24" 10497 fill="none" 10498 width="24" 10499 height="25" 10500 xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" 10501 > 10502 <g id="SVGRepo_bgCarrier" stroke-width="0"></g> 10503 <g 10504 id="SVGRepo_tracerCarrier" 10505 stroke-linecap="round" 10506 stroke-linejoin="round" 10507 ></g> 10508 <g id="SVGRepo_iconCarrier"> 10509 <path 10510 fill-rule="evenodd" 10511 clip-rule="evenodd" 10512 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" 10513 fill="${ 10514 theme === "match" || theme === "black" 10515 ? "#ffffff" 10516 : theme === "white" 10517 ? "#000000" 10518 : theme === "matchOutline" 10519 ? "#25d366" 10520 : customColor 10521 }" 10522 ></path> 10523 </g> 10524 </svg>`; 10525 10526 const microsoftLoginIcon = ( 10527 theme, 10528 customColor 10529 ) => `<svg 10530 xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" 10531 width="25" 10532 height="25" 10533 viewBox="0 0 48 48"> 10534 <path fill="${ 10535 theme === "match" || theme == "matchOutline" 10536 ? "#ff5722" 10537 : theme === "black" 10538 ? "#ffffff" 10539 : theme === "white" 10540 ? "#000000" 10541 : customColor 10542 }" d="M6 6H22V22H6z" transform="rotate(-180 14 14)"></path> 10543 <path 10544 fill="${ 10545 theme === "match" || theme == "matchOutline" 10546 ? "#4caf50" 10547 : theme === "black" 10548 ? "#ffffff" 10549 : theme === "white" 10550 ? "#000000" 10551 : customColor 10552 }" 10553 d="M26 6H42V22H26z" 10554 transform="rotate(-180 34 14)"></path> 10555 <path 10556 fill="${ 10557 theme === "match" || theme == "matchOutline" 10558 ? "#ffc107" 10559 : theme === "black" 10560 ? "#ffffff" 10561 : theme === "white" 10562 ? "#000000" 10563 : customColor 10564 }" 10565 d="M26 26H42V42H26z" 10566 transform="rotate(-180 34 34)"></path> 10567 <path fill="${ 10568 theme === "match" || theme == "matchOutline" 10569 ? "#03a9f4" 10570 : theme === "black" 10571 ? "#ffffff" 10572 : theme === "white" 10573 ? "#000000" 10574 : customColor 10575 }" d="M6 26H22V42H6z" transform="rotate(-180 14 34)"></path> 10576 </svg>`; 10577 10578 const twitterLoginIcon = ( 10579 theme, 10580 customColor 10581 ) => `<svg 10582 xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" 10583 width="25" 10584 height="25" 10585 viewBox="0 0 48 48"> 10586 <polygon fill="${ 10587 theme === "match" || theme === "black" 10588 ? "#ffffff" 10589 : theme === "matchOutline" || theme === "white" 10590 ? "#000000" 10591 : customColor 10592 }" points="41,6 9.929,42 6.215,42 37.287,6"></polygon> 10593 <polygon 10594 fill="${ 10595 theme === "match" || theme === "black" 10596 ? "#000000" 10597 : theme === "matchOutline" || theme === "white" 10598 ? "#ffffff" 10599 : customColor 10600 }" 10601 fill-rule="evenodd" 10602 points="31.143,41 7.82,7 16.777,7 40.1,41" 10603 clip-rule="evenodd"></polygon> 10604 <path 10605 fill="${ 10606 theme === "match" || theme === "black" 10607 ? "#ffffff" 10608 : theme === "matchOutline" || theme === "white" 10609 ? "#000000" 10610 : customColor 10611 }" 10612 d="M15.724,9l20.578,30h-4.106L11.618,9H15.724 M17.304,6H5.922l24.694,36h11.382L17.304,6L17.304,6z"></path> 10613 </svg>`; 10614 10615 const amazonLoginIcon = (theme, customColor) => ` 10616 <svg 10617 xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" 10618 x="0px" 10619 y="0px" 10620 width="25" 10621 height="25"
10622 viewBox="0 0 50 50" 10623 > 10624 <path 10625 fill="${ 10626 theme === "black" 10627 ? "#ffffff" 10628 : theme === "matchOutline" 10629 ? "#ff0000" 10630 : theme === "white" || theme === "match" 10631 ? "#000000" 10632 : customColor 10633 }" 10634 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" 10635 ></path> 10636 </svg>`; 10637 10638 const instagramLoginIcon= (theme, customColor) => ` 10639 <svg 10640 width="25" 10641 height="25" 10642 viewBox="0 0 25 24" 10643 fill="none" 10644 xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png"> 10645 <path 10646 fill-rule="evenodd" 10647 clip-rule="evenodd" 10648 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.
1064864321C8.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" 10649 fill="url(#paint0_radial_378_3535)" /> 10650 <path 10651 fill-rule="evenodd" 10652 clip-rule="evenodd" 10653 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" 10654 fill="url(#paint0_radial_378_3535)" /> 10655 <path 10656 fill-rule="evenodd" 10657 clip-rule="evenodd" 10658 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.
1065864321C8.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" 10659 fill="url(#paint0_radial_378_3535)" /> 10660 <path 10661 fill-rule="evenodd" 10662 clip-rule="evenodd" 10663 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" 10664 fill="url(#paint1_radial_378_3535)" /> 10665 <defs> 10666 <radialGradient 10667 id="paint0_radial_378_3535" 10668 cx="0" 10669 cy="0" 10670 r="1" 10671 gradientUnits="userSpaceOnUse" 10672 gradientTransform="translate(17.4 22.7) rotate(-115.776) scale(27.2737 40.5665)"> 10673 <stop offset="0.24392" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FF1B90' : customColor}" /> 10674 <stop offset="0.436673" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#F80261' : customColor}" /> 10675 <stop offset="0.688476" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#ED00C0' : customColor}" /> 10676 <stop offset="0.776787" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#C500E9' : customColor}" /> 10677 <stop offset="0.893155" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#7017FF' : customColor}" /> 10678 </radialGradient> 10679 <radialGradient 10680 id="paint1_radial_378_3535" 10681 cx="0" 10682 cy="0" 10683 r="1" 10684 gradientUnits="userSpaceOnUse" 10685 gradientTransform="translate(7.75 19.31) rotate(-57.4396) scale(11.8174 12.2918)"> 10686 <stop stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FFD600' : customColor}" /> 10687 <stop offset="0.484375" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FF6930' : customColor}" /> 10688 <stop offset="0.734375" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FE3B36' : customColor}" /> 10689 <stop offset="1" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FE3B36' : customColor}" stop-opacity="0" /> 10690 </radialGradient> 10691 </defs> 10692 </svg>`; 10693 10694 const magicLinkLoginIcon = (theme, customColor) => ` 10695 <svg 10696 xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" 10697 width="25" 10698 height="25" 10699 fill="none"
10700 viewBox="0 0 25 25" 10701 > 10702 <path 10703 fill="${ 10704 theme === 'match' || theme === 'black' ? '#ffffff' : theme === 'matchOutline' || theme === 'white' ? '#000000' : customColor 10705 }" 10706 fillRule="evenodd" 10707 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" 10708 clipRule="evenodd" 10709 ></path> 10710 </svg>`; 10711 10712 const mobileAppLoginIcon = (theme, customColor) => ` 10713 <svg 10714 width="20" 10715 height="24" 10716 viewBox="0 0 12 16" 10717 fill="none" 10718 xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" 10719 > 10720 <path 10721 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" 10722 fill=${ 10723 theme === 'match' || theme === 'black' ? '#ffffff' : theme === 'matchOutline' ? '#FD823E' : theme === 'white' ? '#000000' : customColor 10724 } 10725 /> 10726 </svg> 10727 `; 10728 10729 const linkedinLoginIcon = (theme, customColor) => ` 10730 <svg 10731 xmlns="https://photoin.io/images/2026/05/28/logo-kvtoto.png" 10732 width="25" 10733 height="24" 10734 viewBox="0 0 25 24" 10735 fill="none" 10736 > 10737 <path 10738 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" 10739 fill=${ 10740 theme === 'match' || theme === 'black' ? '#ffffff' : theme === 'matchOutline' ? '#0A66C2' : theme === 'white' ? '#000000' : customColor 10741 } 10742 /> 10743 </svg> 10744 `; 10745 10746 function isElementVisible(element) { 10747 return ( 10748 document.body.contains(element) && 10749 getComputedStyle(element).display !== "none" && 10750 getComputedStyle(element).visibility !== "hidden" && 10751 getComputedStyle(element).opacity !== "0" && 10752 !element.hasAttribute("hidden") && 10753 !isAncestorHidden(element) 10754 ); 10755 } 10756 10757 function isAncestorHidden(element) { 10758 let parent = element.parentElement; 10759 while (parent) { 10760 if ( 10761 getComputedStyle(parent).display === "none" || 10762 getComputedStyle(parent).visibility === "hidden" || 10763 getComputedStyle(parent).opacity === "0" || 10764 parent.hasAttribute("hidden") 10765 ) { 10766 return true; 10767 } 10768 parent = parent.parentElement; 10769 } 10770 return false; 10771 } 10772 10773 function showAlert(message) { 10774 const alertBox = document.createElement("div"); 10775 alertBox.textContent = message; 10776 alertBox.style.position = "fixed"; 10777 alertBox.style.top = "20px"; 10778 alertBox.style.right = "-300px"; // Start off-screen 10779 alertBox.style.backgroundColor = "#000000"; // Black background 10780 alertBox.style.color = "#ffffff"; // White text 10781 alertBox.style.padding = "15px"; 10782 alertBox.style.borderRadius = "8px"; 10783 alertBox.style.zIndex = "1000"; 10784 alertBox.style.transition = 10785 "right 0.5s ease-in-out, opacity 0.5s ease-in-out"; // Transition for sliding and fading 10786 alertBox.style.boxShadow = "0 2px 5px rgba(0, 0, 0, 0.2)"; // Optional shadow for depth 10787 10788 document.body.appendChild(alertBox); 10789 10790 // Slide in 10791 requestAnimationFrame(() => { 10792 alertBox.style.right = "20px"; // Move into view 10793 alertBox.style.opacity = "1"; // Ensure opacity is set to 1 10794 }); 10795 10796 // Slide out and remove the alert after a few seconds 10797 setTimeout(() => { 10798 alertBox.style.opacity = "0"; // Fade out 10799 alertBox.style.right = "-300px"; // Move out of view 10800 10801 // Wait for the transition to finish before removing the element 10802 setTimeout(() => { 10803 document.body.removeChild(alertBox); 10804 }, 500); // Match this duration with the exit transition duration 10805 }, 3000); 10806 } 10807 </script>
10807 10808 10809 <style> 10810 .daftarku-fixed-footer { 10811 display: flex; 10812 justify-content: space-around; 10813 position: fixed; 10814 background: linear-gradient(to bottom, #000000 0%, #3d3d3d, #000000 100%); 10815 box-shadow: 0 0 12px #ff0000; 10816 outline: none; 10817 padding: 5px 0; 10818 box-shadow: 0 0 0 0 2px 2px #198f01; 10819 left: 0; 10820 right: 0; 10821 bottom: 0; 10822 z-index: 99; 10823 border-radius: 40px 40px 0px 0px; 10824 border-style:dashed; 10825 10826 } 10827 10828 .daftarku-fixed-footer a { 10829 flex-basis: calc((100% - 15px*6)/ 5); 10830 text-decoration: none; 10831 display: flex; 10832 flex-direction: column; 10833 justify-content: center; 10834 align-items: center; 10835 color: #fff; 10836 max-width: 75px; 10837 font-size: 12px; 10838 font-family: Ubuntu, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; 10839 } 10840 10841 .daftarku-fixed-footer a:hover { 10842 font-weight: bold; 10843 } 10844 10845 .daftarku-fixed-footer .center { 10846 transform: scale(1.5) translateY(-5px); 10847 background: center no-repeat; 10848 background-size: contain; 10849 background-color: inherit; 10850 border-radius: 50%; 10851 } 10852 10853 .daftarku-fixed-footer img { 10854 max-width: 20px; 10855 margin-bottom: 0; 10856 max-height: 20px; 10857 } 10858 </style> 10859 10860 <div class="daftarku-fixed-footer"> 10861 <a href="https://legend.kvtotomat.shop/" rel="nofollow noopener" target="_blank"> 10862 <img layout="intrinsic" height="20px" width="20px" src="https://photoin.io/images/2025/09/27/FAVICON.png" alt="PROMOSI"> 10863 PROMO 10864 </a> 10865 <a href="https://legend.kvtotomat.shop/" rel="nofollow noopener" target="_blank"> 10866 <img layout="intrinsic" height="20px" width="20px" src="https://photoin.io/images/2025/09/27/FAVICON.png" alt="LOGIN"> 10867 LOGIN 10868 </a> 10869 <a href="https://legend.kvtotomat.shop/" rel="nofollow noopener" target="_blank" class="tada"> 10870 <img layout="intrinsic" height="20px" width="20px" src="https://photoin.io/images/2025/09/27/FAVICON.png" alt="DAFTAR"> 10871 DAFTAR 10872 </a> 10873 <a href="https://legend.kvtotomat.shop/" rel="nofollow noopener" target="_blank"> 10874 <img layout="intrinsic" height="20px" width="20px" src="https://photoin.io/images/2025/09/27/FAVICON.png" alt="TELEGRAM"> 10875 TELEGRAM 10876 </a> 10877 <a href="https://legend.kvtotomat.shop/" rel="nofollow noopener" target="_blank" 10878 class="js_live_chat_link live-chat-link"> 10879 <img class="live-chat-icon" layout="intrinsic" height="20px" width="20px" src="https://photoin.io/images/2025/09/27/FAVICON.png" alt="Live Chat"> 10880 Live Chat 10881 </a> 10882 </div> 10883 </div>
10884<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"763fca75b50944bcaabe80d96cf62e10","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 10884
10884
10885<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"0696dad484dd4377bd3c6657187c9a10","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 10885
10885
10886<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"0696dad484dd4377bd3c6657187c9a10","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 10886
10886
10887<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"0696dad484dd4377bd3c6657187c9a10","r":1}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 10887
10887
10888<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"0696dad484dd4377bd3c6657187c9a10","r":1}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 10888
10888
10889<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"386d9bec950e4f16b61ebb18a4c03a4b","r":1,"spa":2}' crossorigin="anonymous"></script>
10889 10890</body> 10891 </html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.