1<!doctype html> 2 <html class="no-js"> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="pinterest" content="nopin"/> 6 <meta name="pinterest" content="nosearch"> 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 <meta name="pinterest" content="nopin"/> 11 <meta name="robots" content="index, follow"> 12 <link rel="icon" type="image/x-icon" href="https://imagekoi.io/images/2025/03/07/favicon-koi-2025.png"> 13 <title>KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang</title> 14 <meta name="description" content="KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat."> 15 <link rel="canonical" href="https://koitigan.com/"> 16 <link rel="alternate" href="https://amp.koitoto-tigan.com/"> 17 <link rel="alternate" href="https://amp.koitoto-tigan.com/" hreflang="id"> 18 <link rel="alternate" href="https://amp.koitoto-tigan.com/" hreflang="en"> 19 <link rel="alternate" href="https://amp.koitoto-tigan.com/" hreflang="en"> 20 <link rel="alternate" href="https://amp.koitoto-tigan.com/" hreflang="x-default"> 21 <link rel="alternate" hreflang="id-ID" href="https://amp.koitoto-tigan.com/" /> 22 <link rel="alternate" hreflang="en-US" href="https://amp.koitoto-tigan.com/" /> 23 <link rel="alternate" hreflang="en-SG" href="https://amp.koitoto-tigan.com/" /> 24 <link rel="amphtml" href="https://amp.koitoto-tigan.com/"/> 25 <meta property="og:type" content="KOITOTO"> 26 <meta property="og:title" content="KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang"> 27 <meta property="og:image" content="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg"> 28 <meta property="og:image:secure_url" content="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg"> 29 <meta property="og:image" content="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg"> 30 <meta property="og:image:secure_url" content="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg"> 31 <meta property="og:image" content="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg"> 32 <meta property="og:image:secure_url" content="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg"> 33 <meta property="og:description" content="KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat."> 34 <meta name="google-site-verification" content="5QsPyxOIxjmdk6WiPCF_cnChe_St6wzkUl6H3RdNb5o" /> 35 <meta property="og:price:amount" content="10,000-,"> 36 <meta property="og:price:currency" content="IDR"> 37 <meta property="og:url" content="https://koitigan.com/"> 38 <meta property="og:site_name" content="KOITOTO"> 39 <meta name="twitter:site" content="@KOITOTO"> 40 <meta name="twitter:card" content="summary"> 41 <meta name="twitter:title" content="KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang"> 42 <meta name="twitter:description" content="KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat."> 43 <meta name="twitter:image" content="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg"> 44 <meta name="twitter:image:width" content="600"> 45 <meta name="twitter:image:height" content="600"> 46 <link rel="shortcut icon" href="https://imagekoi.io/images/2025/03/07/favicon-koi-2025.png" type="image/png"> 47 <meta name="theme-color" content="#ffffff"> 48 <link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700&family=Poppins&display=swap" rel="stylesheet"> 49 <link href="//outerbloom.com/cdn/shop/t/138/assets/custom-styles.css?v=94643080714485117621752652418" rel="stylesheet" type="text/css" media="all" /> 50 <link rel="stylesheet" href="//outerbloom.com/cdn/shop/t/138/assets/wishlist-styles.css?v=166819525406734116961754385201">
50<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js" defer></script>
50 51 52
52<script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js" async="async"></script>
52 53
53<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/select2.min.js" defer></script>
53 54 55 <div class="button-login-daftar"> 56 <a class="login" href="//mikale.me/login-koi" rel="nofollow noreferrer" style="color: #111111;"> 57 LOGIN 58 </a> 59 <a class="register" 60 href="//mikale.me/seotegerta77" 61 rel="nofollow noreferrer" 62 style=" 63 color:#111111; 64 text-shadow: 65 0 1px 0 #555, 66 0 2px 3px rgba(0,0,0,.8), 67 0 0 8px rgba(255,255,255,.35); 68 "> 69 DAFTAR 70 </a> 71 </div> 72 73
73<script src="//cdnjs.cloudflare.com/ajax/libs/vissense/0.9.0/vissense.js" defer></script>
73 74 75 <!-- Bing UET --> 76
76<script> 77 (function(w,d,t,r,u) 78 { 79 var f,n,i; 80 w[u]=w[u]||[],f=function() 81 { 82 var o={ti:"343051754", tm:"shpfy_ui", enableAutoSpaTracking: true}; 83 o.q=w[u],w[u]=new UET(o),w[u].push("pageLoad") 84 }, 85 n=d.createElement(t),n.src=r,n.async=1,n.onload=n.onreadystatechange=function() 86 { 87 var s=this.readyState; 88 s&&s!=="loaded"&&s!=="complete"||(f(),n.onload=n.onreadystatechange=null) 89 }, 90 i=d.getElementsByTagName(t)[0],i.parentNode.insertBefore(n,i) 91 }) 92 (window,document,"script","//bat.bing.com/bat.js","uetq"); 93 </script>
93 94
94<script> 95 window.uetq = window.uetq || []; 96 window.uetq.push('event', '', {"revenue_value":0,"currency":"IDR"}); 97 </script>
97 98 <!-- End Bing UET --> 99 100 <!-- Microsoft Clarity --> 101
101<script type="text/javascript"> 102 (function(c,l,a,r,i,t,y){ 103 c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; 104 t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; 105 y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); 106 })(window, document, "clarity", "script", "h7rbxqry9k"); 107 </script>
107 108 <!-- End Microsoft Clarity --> 109 110 111 <link href="//outerbloom.com/cdn/shop/t/138/assets/combine.min.css?v=111340648424012527321754385205" rel="stylesheet" type="text/css" media="all" /> 112 113 <link href="//outerbloom.com/cdn/shop/t/138/assets/font-awesome.css?v=132324219581463622051752652421" rel="stylesheet" type="text/css" media="all" /> 114 <link rel="stylesheet" href="//code.jquery.com/ui/1.13.0/themes/base/jquery-ui.min.css"> 115 116
116<script src="//code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
116 117
117<script src="//outerbloom.com/cdn/shop/t/138/assets/combine.js?v=140218079523075729301752652421" type="text/javascript"></script>
117 118
118<script src="//code.jquery.com/ui/1.13.0/jquery-ui.min.js"></script>
118 119
119<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
119 120 <meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/15896833/digital_wallets/dialog"> 121 <link rel="alternate" type="application/json+oembed" href="https://koitigan.com/.oembed"> 122
122<script async="async" src="/checkouts/internal/preloads.js?locale=en-ID"></script>
122 123
123<script id="shopify-features" type="application/json">{"accessToken":"d2e176e59f6658d5056234d6249b3ab4","betas":["rich-media-storefront-analytics"],"domain":"outerbloom.com","predictiveSearch":true,"shopId":15896833,"locale":"en"}</script>
123 124
124<script>var Shopify = Shopify || {}; 125 Shopify.shop = "outerbloom1.myshopify.com"; 126 Shopify.locale = "en"; 127 Shopify.currency = {"active":"IDR","rate":"1.0"}; 128 Shopify.country = "ID"; 129 Shopify.theme = {"name":"web-outerbloom-shopify\/main","id":153139282135,"schema_name":null,"schema_version":null,"theme_store_id":null,"role":"main"}; 130 Shopify.theme.handle = "null"; 131 Shopify.theme.style = {"id":null,"handle":null}; 132 Shopify.cdnHost = "outerbloom.com/cdn"; 133 Shopify.routes = Shopify.routes || {}; 134 Shopify.routes.root = "/";</script>
134 135
135<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
135 136
136<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
136 137
137<script id="shop-js-analytics" type="application/json">{"pageType":"product"}</script>
137 138
138<script defer="defer" async="async" src="//outerbloom.com/cdn/shopifycloud/shop-js/client.js" onload="window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 139 "></script>
139 140
140<script>(function() { 141 var isLoaded = false; 142 function asyncLoad() { 143 if (isLoaded) return; 144 isLoaded = true; 145 var urls = ["https:\/\/e9e1-180-254-64-204.ngrok.io\/public\/scripts\/shopifyPageScript.js?shop=outerbloom1.myshopify.com","https:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/3.5.1\/jquery.min.js?shop=outerbloom1.myshopify.com","https:\/\/14e1-180-254-64-204.ngrok.io\/public\/scripts\/shopifyPageScript.js?shop=outerbloom1.myshopify.com","https:\/\/6403-180-254-64-204.ngrok.io\/public\/scripts\/shopify-page-script.js?shop=outerbloom1.myshopify.com","https:\/\/googlesignintest.loca.lt\/public\/scripts\/shopify-page-script.js?shop=outerbloom1.myshopify.com","https:\/\/api-na1.hubapi.com\/scriptloader\/v1\/6800477.js?shop=outerbloom1.myshopify.com"]; 146 for (var i = 0; i < urls.length; i++) { 147 var s = document.createElement('script'); 148 s.type = 'text/javascript'; 149 s.async = true; 150 s.src = urls[i]; 151 var x = document.getElementsByTagName('script')[0]; 152 x.parentNode.insertBefore(s, x); 153 } 154 }; 155 if(window.attachEvent) { 156 window.attachEvent('onload', asyncLoad); 157 } else { 158 window.addEventListener('load', asyncLoad, false); 159 } 160 })();</script>
160 161
161<script id="__st">var __st={"a":15896833,"offset":25200,"reqid":"78149bf2-9ab6-43c0-b2ce-821afbfe5bd0-1759566675","pageurl":"outerbloom.com\/products\/blossom-shine","u":"381e6a1da038","p":"product","rtyp":"product","rid":8359546319899};</script>
161 162
162<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
162 163
163<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.2.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!1,!0)}();</script>
163 164
164<script integrity="sha256-52AcMU7V7pcBOXWImdc/TAGTFKeNjmkeM1Pvks/DTgc=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//outerbloom.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-81c60534.js" crossorigin="anonymous"></script>
164 165
165<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://outerbloom.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 166 </script>
166 167
167<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 168 function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent); 169 </script>
169 170
170<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}})); 171 </script>
171 172 173
173<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
173 174 <!-- /snippets/oldIE-js.liquid --> 175 176 177 <!--[if lt IE 9]> 178
178<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js" type="text/javascript"></script>
178 179
179<script src="//outerbloom.com/cdn/shop/t/138/assets/respond.min.js?v=52248677837542619231752652418" type="text/javascript"></script>
179 180 <link href="//outerbloom.com/cdn/shop/t/138/assets/respond-proxy.html" id="respond-proxy" rel="respond-proxy" /> 181 <link href="//outerbloom.com/search?q=142e9156869335090161dced0ac98b64" id="respond-redirect" rel="respond-redirect" /> 182
182<script src="//outerbloom.com/search?q=142e9156869335090161dced0ac98b64" type="text/javascript"></script>
182 183 <![endif]--> 184 185 186 187 188 189 <link href="https://cdn.shopify.com/extensions/5c1bf460-65bd-4bca-82d0-995a5814b48d/bitlogin-social-login-135/assets/app.css" rel="stylesheet" type="text/css" media="all"> 190 <link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch"> 191
191<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 15896833,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "product"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
191 192
192<script id="web-pixels-manager-setup">(function e(e,d,r,n,o){if(void 0===o&&(o={}),!Boolean(null===(a=null===(i=window.Shopify)||void 0===i?void 0:i.analytics)||void 0===a?void 0:a.replayQueue)){var i,a;window.Shopify=window.Shopify||{};var t=window.Shopify;t.analytics=t.analytics||{};var s=t.analytics;s.replayQueue=[],s.publish=function(e,d,r){return s.replayQueue.push([e,d,r]),!0};try{self.performance.mark("wpm:start")}catch(e){}var l=function(){var e={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(13[5-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(13[5-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/},d=e.modern,r=e.legacy,n=navigator.userAgent;return n.match(d)?"modern":n.match(r)?"legacy":"unknown"}(),u="modern"===l?"modern":"legacy",c=(null!=n?n:{modern:"",legacy:""})[u],f=function(e){return[e.baseUrl,"/wpm","/b",e.hashVersion,"modern"===e.buildTarget?"m":"l",".js"].join("")}({baseUrl:d,hashVersion:r,buildTarget:u}),m=function(e){var d=e.version,r=e.bundleTarget,n=e.surface,o=e.pageUrl,i=e.monorailEndpoint;return{emit:function(e){var a=e.status,t=e.errorMsg,s=(new Date).getTime(),l=JSON.stringify({metadata:{event_sent_at_ms:s},events:[{schema_id:"web_pixels_manager_load/3.1",payload:{version:d,bundle_target:r,page_url:o,status:a,surface:n,error_msg:t},metadata:{event_created_at_ms:s}}]});if(!i)return console&&console.warn&&console.warn("[Web Pixels Manager] No Monorail endpoint provided, skipping logging."),!1;try{return self.navigator.sendBeacon.bind(self.navigator)(i,l)}catch(e){}var u=new XMLHttpRequest;try{return u.open("POST",i,!0),u.setRequestHeader("Content-Type","text/plain"),u.send(l),!0}catch(e){return console&&console.warn&&console.warn("[Web Pixels Manager] Got an unhandled error while logging to Monorail."),!1}}}}({version:r,bundleTarget:l,surface:e.surface,pageUrl:self.location.href,monorailEndpoint:e.monorailEndpoint});try{o.browserTarget=l,function(e){var d=e.src,r=e.async,n=void 0===r||r,o=e.onload,i=e.onerror,a=e.sri,t=e.scriptDataAttributes,s=void 0===t?{}:t,l=document.createElement("script"),u=document.querySelector("head"),c=document.querySelector("body");if(l.async=n,l.src=d,a&&(l.integrity=a,l.crossOrigin="anonymous"),s)for(var f in s)if(Object.prototype.hasOwnProperty.call(s,f))try{l.dataset[f]=s[f]}catch(e){}if(o&&l.addEventListener("load",o),i&&l.addEventListener("error",i),u)u.appendChild(l);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(l)}}({src:f,async:!0,onload:function(){if(!function(){var e,d;return Boolean(null===(d=null===(e=window.Shopify)||void 0===e?void 0:e.analytics)||void 0===d?void 0:d.initialized)}()){var d=window.webPixelsManager.init(e)||void 0;if(d){var r=window.Shopify.analytics;r.replayQueue.forEach((function(e){var r=e[0],n=e[1],o=e[2];d.publishCustomEvent(r,n,o)})),r.replayQueue=[],r.publish=d.publishCustomEvent,r.visitor=d.visitor,r.initialized=!0}}},onerror:function(){return m.emit({status:"failed",errorMsg:"".concat(f," has failed to load")})},sri:function(e){var d=/^sha384-[A-Za-z0-9+/=]+$/;return"string"==typeof e&&d.test(e)}(c)?c:"",scriptDataAttributes:o}),m.emit({status:"loading"})}catch(e){m.emit({status:"failed",errorMsg:(null==e?void 0:e.message)||"Unknown error"})}}})({shopId: 15896833,storefrontBaseUrl: "https://outerbloom.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://monorail-edge.shopifysvc.com/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: [],webPixelsConfigList: [{"id":"870383831","configuration":"{\"accountID\":\"outerbloom1\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"162380e6ffd3e5a2854f1aabf54537bb","type":"APP","apiClientId":32196493313,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"]},{"id":"824574167","configuration":"{\"shop\":\"outerbloom1.myshopify.com\", \"backend\": \"api.bitbybit.studio\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"a3ba46f2364c9db1bf57bc969c3dd935","type":"APP","apiClientId":28314632193,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"]},{"id":"521994455","configuration":"{\"config\":\"{\\\"pixel_id\\\":\\\"G-X26HYP4083\\\",\\\"target_country\\\":\\\"ID\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/YjjSCKiog9gZEMHe74Yp\\\"]},{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/RHfSCK6og9gZEMHe74Yp\\\"]},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/dMv0CKWog9gZEMHe74Yp\\\",\\\"MC-HY9J2ZJTNZ\\\"]},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/Y2DbCJ-og9gZEMHe74Yp\\\",\\\"MC-HY9J2ZJTNZ\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/xwQ2CKKog9gZEMHe74Yp\\\",\\\"MC-HY9J2ZJTNZ\\\"]},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/i9yRCLGog9gZEMHe74Yp\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/T9poCKuog9gZEMHe74Yp\\\"]}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"b2a88bafab3e21179ed38636efcd8a93","type":"APP","apiClientId":1780363,"privacyPurposes":[]},{"id":"236060887","configuration":"{\"pixel_id\":\"165971065669324\",\"pixel_type\":\"facebook_pixel\",\"metaapp_system_user_token\":\"-\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"6d8c3ef0426b37b2a9b717daeb719f58","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"]},{"id":"62947543","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["MARKETING"],"name":"Meta pixel (migrated)"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0450","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0450","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Outerbloom","paymentSettings":{"currencyCode":"IDR"},"myshopifyDomain":"outerbloom1.myshopify.com","countryCode":"ID","storefrontUrl":"https:\/\/outerbloom.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[{"price":{"amount":835000.0,"currencyCode":"IDR"},"product":{"title":"KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang","vendor":"Outerbloom Florist","id":"8359546319899","untranslatedTitle":"KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang","url":"\/products\/blossom-shine","type":"KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat."},"id":"44083045826775","image":{"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Blossom-Shine-WM.jpg?v=1695788426"},"sku":"GOJSTRU2598","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\":\"KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang\",\"vendor\":\"Outerbloom Florist\",\"id\":\"8359546319899\",\"untranslatedTitle\":\"KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang\",\"url\":\"\/products\/blossom-shine\",\"type\":\"KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat.\"},\"id\":\"44083045826775\",\"image\":{\"src\":\"\/\/outerbloom.com\/cdn\/shop\/files\/Blossom-Shine-WM.jpg?v=1695788426\"},\"sku\":\"GOJSTRU2598\",\"title\":\"Default Title\",\"untranslatedTitle\":\"Default Title\"}}]]"});</script>
192<script> 193 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 194 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 195 window.ShopifyAnalytics.meta.currency = 'IDR'; 196 var meta = {"product":{"id":8359546319899,"gid":"gid:\/\/shopify\/Product\/8359546319899","vendor":"Outerbloom Florist","type":"KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat.","variants":[{"id":44083045826775,"price":1000000 197 ,"name":"KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang","public_title":null,"sku":"GOJSTRU2598"}],"remote":false},"page":{"pageType":"product","resourceType":"product","resourceId":8359546319899}}; 198 for (var attr in meta) { 199 window.ShopifyAnalytics.meta[attr] = meta[attr]; 200 } 201 </script>
201 202
202<script class="analytics"> 203 (function () { 204 var customDocumentWrite = function(content) { 205 var jquery = null; 206 207 if (window.jQuery) { 208 jquery = window.jQuery; 209 } else if (window.Checkout && window.Checkout.$) { 210 jquery = window.Checkout.$; 211 } 212 213 if (jquery) { 214 jquery('body').append(content); 215 } 216 }; 217 218 var hasLoggedConversion = function(token) { 219 if (token) { 220 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 221 } 222 return false; 223 } 224 225 var setCookieIfConversion = function(token) { 226 if (token) { 227 var twoMonthsFromNow = new Date(Date.now()); 228 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 229 230 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 231 } 232 } 233 234 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 235 if (trekkie.integrations) { 236 return; 237 } 238 trekkie.methods = [ 239 'identify', 240 'page', 241 'ready', 242 'track', 243 'trackForm', 244 'trackLink' 245 ]; 246 trekkie.factory = function(method) { 247 return function() { 248 var args = Array.prototype.slice.call(arguments); 249 args.unshift(method); 250 trekkie.push(args); 251 return trekkie; 252 }; 253 }; 254 for (var i = 0; i < trekkie.methods.length; i++) { 255 var key = trekkie.methods[i]; 256 trekkie[key] = trekkie.factory(key); 257 } 258 trekkie.load = function(config) { 259 trekkie.config = config || {}; 260 trekkie.config.initialDocumentCookie = document.cookie; 261 var first = document.getElementsByTagName('script')[0]; 262 var script = document.createElement('script'); 263 script.type = 'text/javascript'; 264 script.onerror = function(e) { 265 var scriptFallback = document.createElement('script'); 266 scriptFallback.type = 'text/javascript'; 267 scriptFallback.onerror = function(error) { 268 var Monorail = { 269 produce: function produce(monorailDomain, schemaId, payload) { 270 var currentMs = new Date().getTime(); 271 var event = { 272 schema_id: schemaId, 273 payload: payload, 274 metadata: { 275 event_created_at_ms: currentMs, 276 event_sent_at_ms: currentMs 277 } 278 }; 279 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 280 }, 281 sendRequest: function sendRequest(endpointUrl, payload) { 282 // Try the sendBeacon API 283 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 284 var blobData = new window.Blob([payload], { 285 type: 'text/plain' 286 }); 287 288 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 289 return true; 290 } // sendBeacon was not successful 291 292 } // XHR beacon 293 294 var xhr = new XMLHttpRequest(); 295 296 try { 297 xhr.open('POST', endpointUrl); 298 xhr.setRequestHeader('Content-Type', 'text/plain'); 299 xhr.send(payload); 300 } catch (e) { 301 console.log(e); 302 } 303 304 return false; 305 }, 306 isIos12: function isIos12() { 307 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 308 } 309 }; 310 Monorail.produce('monorail-edge.shopifysvc.com', 311 'trekkie_storefront_load_errors/1.1', 312 {shop_id: 15896833, 313 theme_id: 153139282135, 314 app_name: "storefront", 315 context_url: window.location.href, 316 source_url: "//outerbloom.com/cdn/s/trekkie.storefront.10b9e06bd1980b2ce8435c2fe6c8f07eb6305ae4.min.js"}); 317 318 }; 319 scriptFallback.async = true; 320 scriptFallback.src = '//outerbloom.com/cdn/s/trekkie.storefront.10b9e06bd1980b2ce8435c2fe6c8f07eb6305ae4.min.js'; 321 first.parentNode.insertBefore(scriptFallback, first); 322 }; 323 script.async = true; 324 script.src = '//outerbloom.com/cdn/s/trekkie.storefront.10b9e06bd1980b2ce8435c2fe6c8f07eb6305ae4.min.js'; 325 first.parentNode.insertBefore(script, first); 326 }; 327 trekkie.load( 328 {"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}} 329 ); 330 331 var loaded = false;
332 trekkie.ready(function() { 333 if (loaded) return; 334 loaded = true; 335 336 window.ShopifyAnalytics.lib = window.trekkie; 337 338 var originalDocumentWrite = document.write; 339 document.write = customDocumentWrite; 340 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 341 document.write = originalDocumentWrite; 342 343 window.ShopifyAnalytics.lib.page(null,{"pageType":"product","resourceType":"product","resourceId":8359546319899,"shopifyEmitted":true}); 344 345 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 346 var token = match? match[1]: undefined; 347 if (!hasLoggedConversion(token)) { 348 setCookieIfConversion(token); 349 window.ShopifyAnalytics.lib.track("Viewed Product",{"currency":"IDR","variantId":44083045826775,"productId":8359546319899,"productGid":"gid:\/\/shopify\/Product\/8359546319899","name":"KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang","price":"835000.00","sku":"GOJSTRU2598","brand":"Outerbloom Florist","variant":null,"category":"KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat.","nonInteraction":true,"remote":false},undefined,undefined,{"shopifyEmitted":true}); 350 window.ShopifyAnalytics.lib.track("monorail:\/\/trekkie_storefront_viewed_product\/1.1",{"currency":"IDR","variantId":44083045826775,"productId":8359546319899,"productGid":"gid:\/\/shopify\/Product\/8359546319899","name":"KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang","price":"835000.00","sku":"GOJSTRU2598","brand":"Outerbloom Florist","variant":null,"category":"KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat.","nonInteraction":true,"remote":false,"referer":"https:\/\/outerbloom.com\/products\/blossom-shine"}); 351 } 352 }); 353 354 355 var eventsListenerScript = document.createElement('script'); 356 eventsListenerScript.async = true; 357 eventsListenerScript.src = "//outerbloom.com/cdn/shopifycloud/storefront/assets/shop_events_listener-abeef7a0.js"; 358 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 359 360 })();</script>
360 361
361<script> 362 if (!window.ga || (window.ga && typeof window.ga !== 'function')) { 363 window.ga = function ga() { 364 (window.ga.q = window.ga.q || []).push(arguments); 365 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 366 window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"}); 367 } 368 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."); 369 }; 370 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 371 window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"}); 372 } 373 } 374 </script>
374 375
375<script 376 defer 377 src="https://outerbloom.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-2.0.13.min.js" 378 data-application="storefront-renderer" 379 data-shop-id="15896833" 380 data-render-region="gcp-asia-southeast1" 381 data-page-type="product" 382 data-theme-instance-id="153139282135" 383 data-theme-name="" 384 data-theme-version="" 385 data-monorail-region="shop_domain" 386 data-resource-timing-sampling-rate="10" 387 data-shs="true" 388 data-shs-beacon="true" 389 data-shs-export-with-fetch="true" 390 data-shs-logs-sample-rate="1" 391 ></script>
391 392 </head><body 393 data-template="product" 394 id="blossom-shine" 395 class="template-product template-product" 396 > 397 <!-- Google Tag Manager (noscript) -->
vendor: 90 bytes, lines 397-400
397 398 <noscript 399 ><iframe 400 src="https://www.googletagmanager.com/ns.html?id=
400GTM-MF9VVZX
vendor: 129 bytes, lines 400-406
400" 401 height="0" 402 width="0" 403 style="display:none;visibility:hidden" 404 ></iframe 405 ></noscript> 406
406<!-- End Google Tag Manager (noscript) --> 407 408 409 410 <div class="header-wrapper"> 411 412 <div id="shopify-section-NotifBar" class="shopify-section m-0"> 413 414 <style> 415 #notification {z-index: 99;width: 100%;transition: top 0.2s ease-in-out;} 416 #notification.promo-up {top: -48px!important;} 417 .promo-bg {width: 100%;padding: 6px 0;background-color: #242424;} 418 .notification__message p {margin: 0;color: #000000;font-size: 14px!important;} 419 .notification__message p a {text-decoration: underline;color: #ffffff;} 420 @media (max-width: 991px){ 421 .notification__message p {font-size: 14px!important;} 422 } 423 </style> 424 <input id="clearCookie" class="hide" type="button" value="Delete Cookie" /> 425 <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"> 426 <div class="page-width notification__inner "> 427 428 429 <div class="notification__message text-center"> 430 <p><a href="https://koitigan.com/" title="KOITOTO">KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang</a></p> 431 </div> 432 </div> 433 </div> 434 435 436 437 438 </div> 439 <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"/> 440 441 442 <header style="background-image: url(https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg); background-attachment: fixed;"> 443 <div class="container"> 444 <div class="header-container row justify-content-between pl-lg-0 pr-lg-0"> 445 <a href="https://koitigan.com/"> 446 <img src="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" alt="LOGO SITUS KOITOTO" style="width: 190px;"></a> 447 <link href="https://imagekoi.io/images/2025/03/07/favicon-koi-2025.png" rel="shortcut icon" type="image/x-icon" /> 448 <div id="menu-hamburger" class="d-lg-none"> 449 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="16" height="10" viewBox="0 0 16 10" fill="none"> 450 <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"/> 451 </svg> 452 453 <a href="/"><svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" viewBox="0 0 854 78.29"> 454 <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> 455 </svg> 456 </a> 457 </div> 458 459 <div class="header-icon-right header-icons col-3"> 460 <div class="icon icon-account-header d-none d-lg-block">
461 <a href="https://koitigan.com/"> 462 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="20" height="21" viewBox="0 0 20 21" fill="none"> 463 <path d="M19.015 19.8549C18.4842 18.3662 17.3117 17.0514 15.6819 16.1134C14.052 15.1754 12.0547 14.6667 5.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"/> 464 <path d="M5.0002 10C12.5775 10 14.6668 7.91068 14.6668 5.33335C14.6668 2.75602 12.5775 0.666687 5.0002 0.666687C7.42283 0.666687 5.3335 2.75602 5.3335 5.33335C5.3335 7.91068 7.42283 10 5.0002 10Z" stroke="#ffffff" stroke-linecap="round"/> 465 </svg> 466 467 </a> 468 </div> 469 <div class="icon icon-wishlist-header"> 470 <a href="https://koitigan.com/"> 471 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="24" height="21" viewBox="0 0 24 21" fill="none"> 472 <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.
47211233C11.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"/> 473 </svg> 474 475 <span class="wishlist-count d-none">0</span> 476 </a> 477 </div> 478 <div class="icon icon-cart-header"> 479 <a href="https://koitigan.com/"> 480 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="22" height="21" viewBox="0 0 22 21" fill="none"> 481 <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"/> 482 <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"/> 483 </svg> 484 485 </a> 486 </div> 487 </div> 488 </div> 489 </div> 490 </header> 491 492 <nav class="nav-header" style="background: linear-gradient(to bottom, #9e0d0d 0%, #e60002 70%, #e60002 100%);"> 493 <div class="nav-account-mobile row m-0 d-lg-none"> 494 <div class="col-6 welcome-cust p-0"> 495 496 <h1 class="logo"> 497 <a href="https://koitigan.com/"> 498 <img src="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" alt="KOITOTO" style="max-height:60px;"> 499 </a> 500 </h1> 501 502 503 </div> 504 505 <div class="col-6 login-register text-right p-0"> 506 <a href="https://amp.koitoto-tigan.com/">Log In</a> | <a href="https://amp.koitoto-tigan.com/">Sign Up</a> 507 </div> 508 </div> 509 <ul class="nav-menu container"> 510 511 <style> 512/* ========================================= 513 RUNNING TEXT MERAH HITAM 514========================================= */ 515 516.red-running-bar { 517 width: 100%; 518 overflow: hidden; 519 background: #050505; 520 border-top: 2px solid #ff0000; 521 border-bottom: 2px solid #ff0000; 522 box-shadow: 0 0 12px rgba(255, 0, 0, 0.35); 523 box-sizing: border-box; 524} 525 526.red-running-track { 527 display: flex; 528 align-items: center; 529 width: max-content; 530 white-space: nowrap; 531 532 animation: redRunning 22s linear infinite; 533} 534 535.red-running-group { 536 display: flex; 537 align-items: center; 538 flex-shrink: 0; 539} 540 541.red-running-item { 542 display: inline-block; 543 padding: 13px 20px; 544 545 color: #ff2020 !important; 546 font-size: 14px; 547 font-weight: 800; 548 text-decoration: none !important; 549 550 white-space: nowrap; 551 552 text-shadow: 553 0 0 5px rgba(255, 0, 0, 0.7), 554 0 0 10px rgba(255, 0, 0, 0.4); 555} 556 557/* Pemisah merah terang */ 558.red-running-item::after { 559 content: "â"; 560 margin-left: 20px; 561 color: #ffffff; 562 font-size: 8px; 563 text-shadow: none; 564} 565 566/* Animasi kanan ke kiri */ 567@keyframes redRunning { 568 0% { 569 transform: translateX(0); 570 } 571 572 100% { 573 transform: translateX(-50%); 574 } 575} 576 577/* Pause saat diarahkan mouse */ 578.red-running-bar:hover .red-running-track { 579 animation-play-state: paused; 580} 581 582/* ========================================= 583 MOBILE 584========================================= */ 585 586@media (max-width: 600px) { 587 588 .red-running-track { 589 animation-duration: 18s; 590 } 591 592 .red-running-item { 593 padding: 11px 15px; 594 font-size: 12px; 595 } 596 597 .red-running-item::after { 598 margin-left: 15px; 599 } 600} 601</style> 602 603 604<!-- ========================================= 605 RUNNING TEXT 606========================================= --> 607 608<div class="red-running-bar"> 609 610 <div class="red-running-track"> 611 612 <!-- GROUP 1 --> 613 <div class="red-running-group"> 614 615 <a class="red-running-item" href="https://koitigan.com/"> 616 KOITOTO 617 </a> 618
619 <a class="red-running-item" href="https://koitigan.com/"> 620 KOI TOTO 621 </a> 622 623 <a class="red-running-item" href="https://koitigan.com/"> 624 BANDAR TOGEL 625 </a> 626 627 <a class="red-running-item" href="https://koitigan.com/"> 628 TOGEL ONLINE 629 </a> 630 631 <a class="red-running-item" href="https://koitigan.com/"> 632 TOGEL RESMI 633 </a> 634 635 <a class="red-running-item" href="https://koitigan.com/"> 636 KOITOTO DAFTAR 637 </a> 638 639 <a class="red-running-item" href="https://koitigan.com/"> 640 KOITOTO LOGIN 641 </a> 642 643 <a class="red-running-item" href="https://koitigan.com/"> 644 KOITOTO TOGEL 645 </a> 646 647 <a class="red-running-item" href="https://koitigan.com/"> 648 BANDAR TOGEL ONLINE 649 </a> 650 651 </div> 652 653 654 <!-- GROUP 2 UNTUK LOOP --> 655 <div class="red-running-group"> 656 657 <a class="red-running-item" href="https://koitigan.com/"> 658 KOITOTO 659 </a> 660 661 <a class="red-running-item" href="https://koitigan.com/"> 662 KOI TOTO 663 </a> 664 665 <a class="red-running-item" href="https://koitigan.com/"> 666 BANDAR TOGEL 667 </a> 668 669 <a class="red-running-item" href="https://koitigan.com/"> 670 TOGEL ONLINE 671 </a> 672 673 <a class="red-running-item" href="https://koitigan.com/"> 674 TOGEL RESMI 675 </a> 676 677 <a class="red-running-item" href="https://koitigan.com/"> 678 KOITOTO DAFTAR 679 </a> 680 681 <a class="red-running-item" href="https://koitigan.com/"> 682 KOITOTO LOGIN 683 </a> 684 685 <a class="red-running-item" href="https://koitigan.com/"> 686 KOITOTO TOGEL 687 </a> 688 689 <a class="red-running-item" href="https://koitigan.com/"> 690 BANDAR TOGEL ONLINE 691 </a> 692 693 </div> 694 695 </div> 696 697</div> 698 699 <div class="overlay-nav"> 700 <!-- Mobile Close Button in Overlay --> 701 <button id="nav-close" class="nav-close-btn d-lg-none"> 702 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif"> 703 <path d="M18 6L6 18M6 6L18 18" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 704 </svg> 705 </button> 706 </div> 707 <!-- ========================================= 708 OVERLAY GAMBAR BERJATUHAN 709 KOITOTO + KOI GROUP 710========================================= --> 711 712<style> 713/* LAYER OVERLAY */ 714.falling-overlay { 715 position: fixed; 716 top: 0; 717 left: 0; 718 719 width: 100vw; 720 height: 100vh; 721 722 overflow: hidden; 723 pointer-events: none; 724 725 z-index: 999999; 726 727 /* Jangan sampai membuat scrollbar */ 728 max-width: 100%; 729} 730 731/* ITEM GAMBAR / UANG DOLAR */ 732.falling-logo { 733 position: absolute; 734 top: -120px; 735 736 display: flex; 737 align-items: center; 738 justify-content: center; 739 740 background-repeat: no-repeat; 741 background-position: center; 742 background-size: contain; 743 744 opacity: 0; 745 746 animation-name: fallingDollar; 747 animation-timing-function: linear; 748 animation-iteration-count: infinite; 749 750 will-change: transform, opacity; 751 752 /* Style untuk Teks/Icon Dolar */ 753 font-size: 40px; 754 font-weight: bold; 755 color: #85bb65; 756 text-shadow: 0 0 8px rgba(0, 255, 100, 0.6), 0 2px 4px rgba(0,0,0,0.5); 757 user-select: none; 758} 759 760/* ANIMASI JATUH & BERPUTAR */ 761@keyframes fallingDollar { 762 0% { 763 transform: translate3d(0, -150px, 0) rotate(0deg); 764 opacity: 0; 765 } 766 767 8% { 768 opacity: 0.9; 769 } 770 771 30% { 772 transform: translate3d(45px, 30vh, 0) rotate(90deg); 773 } 774 775 55% { 776 transform: translate3d(-35px, 60vh, 0) rotate(180deg); 777 } 778 779 80% { 780 transform: translate3d(50px, 90vh, 0) rotate(270deg); 781 opacity: 0.8; 782 } 783 784 100% { 785 transform: translate3d(-30px, 120vh, 0) rotate(360deg); 786 opacity: 0; 787 } 788} 789 790/* ========================================= 791 VARIASI DUIT DOLAR (POSISI & POSISI WAKTU) 792========================================= */ 793 794.falling-logo.logo-1 { left: 3%; font-size: 45px; animation-duration: 8s; animation-delay: 0s; } 795.falling-logo.logo-2 { left: 14%; font-size: 35px; animation-duration: 11s; animation-delay: 2.5s; } 796.falling-logo.logo-3 { left: 25%; font-size: 50px; animation-duration: 9s; animation-delay: 4s; }
797.falling-logo.logo-4 { left: 36%; font-size: 38px; animation-duration: 12s; animation-delay: 1s; } 798.falling-logo.logo-5 { left: 48%; font-size: 48px; animation-duration: 10s; animation-delay: 5s; } 799.falling-logo.logo-6 { left: 59%; font-size: 36px; animation-duration: 13s; animation-delay: 2s; } 800.falling-logo.logo-7 { left: 70%; font-size: 44px; animation-duration: 9.5s;animation-delay: 6s; } 801.falling-logo.logo-8 { left: 81%; font-size: 38px; animation-duration: 11.5s;animation-delay: 3.5s; } 802.falling-logo.logo-9 { left: 91%; font-size: 52px; animation-duration: 14s; animation-delay: 0.5s; } 803.falling-logo.logo-10{ left: 96%; font-size: 32px; animation-duration: 10.5s;animation-delay: 4.5s; } 804 805/* ========================================= 806 RESPONSIVE MOBILE 807========================================= */ 808@media (max-width: 600px) { 809 .falling-logo { 810 font-size: 28px !important; 811 } 812} 813</style> 814 815<!-- ========================================= 816 OVERLAY HUJAN DUIT DOLAR 817========================================= --> 818<div class="falling-overlay"> 819 <div class="falling-logo logo-1">ðµ</div> 820 <div class="falling-logo logo-2">ð²</div> 821 <div class="falling-logo logo-3">ðµ</div> 822 <div class="falling-logo logo-4">ð°</div> 823 <div class="falling-logo logo-5">ðµ</div> 824 <div class="falling-logo logo-6">ð²</div> 825 <div class="falling-logo logo-7">ðµ</div> 826 <div class="falling-logo logo-8">ð°</div> 827 <div class="falling-logo logo-9">ðµ</div> 828 <div class="falling-logo logo-10">ð²</div> 829</div> 830 831
832<script> 833 if ($(window).width() < 992) { 834 // Level 1 menu accordion (main menu items) 835 $(".nav-menu .nav-menu container > a").click(function(e){ 836 e.preventDefault() 837 const parentLi = $(this).parent() 838 const isCurrentlyOpen = parentLi.hasClass("menu-open") 839 840 // Close all other open menus (accordion behavior) 841 $(".nav-menu .nav-menu container").not(parentLi).removeClass("menu-open") 842 $(".nav-menu .megamenu").not($(this).next(".megamenu")).slideUp() 843 844 // Toggle current menu 845 if (isCurrentlyOpen) { 846 parentLi.removeClass("menu-open") 847 $(this).next(".megamenu").slideUp() 848 } else { 849 parentLi.addClass("menu-open") 850 $(this).next(".megamenu").slideDown() 851 } 852 }) 853 854 // Level 2 menu accordion (submenu items with grandchildren) 855 $(document).on('click', '.dropdown-menu .has-submenu > a', function(e){ 856 e.preventDefault() 857 const parentLi = $(this).parent() 858 const isCurrentlyOpen = parentLi.hasClass("submenu-open") 859 const grandchild = $(this).next(".grandchild") 860 861 // Close all other open submenus in the same dropdown (accordion behavior) 862 parentLi.siblings('.has-submenu').removeClass("submenu-open") 863 parentLi.siblings('.has-submenu').find('.grandchild').slideUp() 864 parentLi.siblings('.has-submenu').find('.chevron-right').css('transform', 'rotate(0deg)') 865 866 // Toggle current submenu 867 if (isCurrentlyOpen) { 868 parentLi.removeClass("submenu-open") 869 grandchild.slideUp() 870 $(this).find('.chevron-right').css('transform', 'rotate(0deg)') 871 } else { 872 parentLi.addClass("submenu-open") 873 grandchild.slideDown() 874 $(this).find('.chevron-right').css('transform', 'rotate(90deg)') 875 } 876 }) 877 878 $("#menu-hamburger").click(function(e){ 879 e.preventDefault() 880 $("body").toggleClass("nav_open") 881 }) 882 883 // Handle close button click 884 $("#nav-close").click(function(e){ 885 e.preventDefault() 886 $("body").removeClass("nav_open") 887 // Close all open menus when close button is clicked 888 $(".nav-menu .nav-menu container").removeClass("menu-open") 889 $(".nav-menu .megamenu").slideUp() 890 $(".dropdown-menu .has-submenu").removeClass("submenu-open") 891 $(".dropdown-menu .grandchild").slideUp() 892 $(".dropdown-menu .chevron-right").css('transform', 'rotate(0deg)') 893 }) 894 } 895 896 $(".overlay-nav").click(function(e){ 897 e.preventDefault() 898 $("body").removeClass("nav_open") 899 // Close all open menus when overlay is clicked 900 $(".nav-menu .nav-menu container").removeClass("menu-open") 901 $(".nav-menu .megamenu").slideUp() 902 $(".dropdown-menu .has-submenu").removeClass("submenu-open") 903 $(".dropdown-menu .grandchild").slideUp() 904 $(".dropdown-menu .chevron-right").css('transform', 'rotate(0deg)') 905 }) 906</script>
906 907 908 <div id="shopify-section-search-popup" class="shopify-section m-0"><style> 909 #search-trigger { 910 cursor: pointer; 911 } 912 #search-popup { 913 display: none; 914 position: fixed; 915 left: 0; 916 width: 100%; 917 top: 0; 918 height: 100%; 919 justify-content: center; 920 z-index: 9999; 921 background: rgb(196 196 196 / 30%); 922 } 923 #search-input { 924 align-self: center; 925 width: 100%; 926 height: 80px; 927 position: absolute; 928 top: 0; 929 border-bottom: 0.5px solid #A3A3A3; 930 background-color: #fff; 931 } 932 #search-input * { 933 align-self: center; 934 } 935 #search-type { 936 width: 100%; 937 border: none; 938 padding-right: 20px; 939 padding-left: 20px; 940 font-size: 16px; 941 color: #757575; 942 } 943 #search-btn { 944 font-size: 16px; 945 font-weight: 500; 946 } 947 #search-result { 948 min-height: 490px; 949 width: 100%; 950 padding-top: 80px; 951 } 952 #search-result .container { 953 background-color: #fff; 954 padding: 20px 40px; 955 } 956 body.search-popup-open { 957 /* .search-popup-open */ 958 overflow: hidden; 959 } 960 .search-popup-open #loc_delivery { 961 display: none 962 } 963 .search-header svg { 964 display: none; 965 cursor: pointer; 966 } 967 .wrapper-search-popup { 968 max-height: calc(100vh - 150px); 969 overflow-y: auto; 970 overflow-x: hidden; 971 } 972 973 .group-recommend { 974 padding: 20px 40px; 975 } 976 977 .resultsearch { 978 display: none; 979 } 980 .results { padding: 20px 40px } 981 .resultsearch label { 982 font-weight: 600; 983 padding-bottom: 20px; 984 display: block; 985 margin-bottom: 20px; 986 border-bottom: 1px solid #AAAAAA; 987 } 988 989 ul.result_product { 990 max-height: 300px; 991 overflow: auto; 992 } 993 994 .group-promotion ul { 995 margin: 0; 996 } 997 .group-promotion li { 998 list-style: none; 999 margin-bottom: 12px; 1000 } 1001 .group-promotion li a { 1002 color: inherit; 1003 } 1004 1005 .group-recent { 1006 position: relative; 1007 padding: 20px 40px; 1008 } 1009 .group-recent ul { 1010 margin: 0; 1011 } 1012 .group-recent li { 1013 list-style: none; 1014 display: inline-block; 1015 margin-right: 60px; 1016 } 1017 .group-recent li a { 1018 color: inherit; 1019 } 1020 1021 .last-search svg { 1022 width: 20px; 1023 vertical-align: middle; 1024 } 1025 ul.last-search a { 1026 vertical-align: middle; 1027 padding: 0 10px; 1028 } 1029 ul.last-search li span { 1030 cursor: pointer; 1031 } 1032 .delete-all-history { 1033 position: absolute; 1034 top: 25px; 1035 right: 40px; 1036 text-decoration: underline; 1037 color: #e11d1d; 1038 cursor: pointer; 1039 font-size: 12px; 1040 } 1041 1042 form.search.search-modal__form { 1043 position: relative; 1044 } 1045 1046 button.search__button svg { 1047 width: 25px; 1048 color: #495057; 1049 fill: #757582; 1050 } 1051 1052 button.search__button.field__button { 1053 position: absolute; 1054 top: 50%; 1055 margin-top: -12px; 1056 } 1057 1058 .close-search { 1059 display: none; 1060 position: absolute; 1061 right: 65px; 1062 top: 10px; 1063 cursor: pointer; 1064 } 1065 1066 .site-overlay { 1067 position: fixed; 1068 top: 0; 1069 width: 100vw; 1070 height: 100vh; 1071 z-index: 1000; 1072 background: #0000005c; 1073 visibility: hidden; 1074 opacity: 0; 1075 pointer-events: none; 1076 transition: all .3s linear; 1077 display: block !important; 1078 } 1079 1080 .search-popup-open .site-overlay { 1081 opacity: 1; 1082 visibility: visible; 1083 pointer-events: all; 1084 z-index: -1; 1085 cursor: pointer; 1086 } 1087 1088 @media (min-width: 991px) { 1089 .group-recent ul { 1090 column-count: 3; 1091 } 1092 .group-promotion li a { 1093 font-size: 12px; 1094 font-weight: 400; 1095 } 1096 .group-recent li a { 1097 font-size: 12px; 1098 font-weight: 400; 1099 } 1100 } 1101 1102 .moreresult { 1103 padding: 10px 40px; 1104 border-top: 1px solid #AAAAAA; 1105 } 1106 .moreresult * { 1107 align-self: center; 1108 } 1109 .moreresult p { 1110 margin: 0; 1111 font-size: 12px !important; 1112 } 1113 .moreresult svg { 1114 width: 13px; 1115 } 1116 1117 @media (max-width: 992px) { 1118 .icon-key-mobile { 1119 height: auto!important; 1120 width: 10px!important; 1121 } 1122 body.grid-view.search-popup-open .products { 1123 -ms-flex: 0 0 100%!important; 1124 flex: 0 0 100%!important; 1125 max-width: 100%!important; 1126 } 1127 button.search__button svg {
1128 width: 20px; 1129 } 1130 #search-result { 1131 padding-left: 0; 1132 padding-right: 0; 1133 } 1134 #search-result { 1135 padding-top: 55px; 1136 } 1137 #search-input { 1138 height: 55px; 1139 } 1140 .group-recommend { 1141 padding: 20px; 1142 } 1143 #search-input .container { 1144 padding: 0 20px; 1145 } 1146 #search-type { 1147 font-size: 14px; 1148 } 1149 #search-btn { 1150 font-size: 12px; 1151 text-decoration: underline; 1152 } 1153 .results { 1154 padding: 20px; 1155 } 1156 .group-recommend h3 { 1157 font-size: 16px; 1158 } 1159 .products .card-body { 1160 padding: 8px 0px 10px; 1161 } 1162 .moreresult { 1163 padding: 10px 20px; 1164 } 1165 } 1166 </style> 1167<style type="text/css"> 1168 div.advertisement-placeholder { 1169 text-align: center; 1170 padding-bottom: 20px; 1171 display: flex; 1172 flex-direction: column; 1173 justify-content: center; 1174 } 1175 1176 div.advertisement-text p { 1177 margin: 0; 1178 font-family: Open Sans; 1179 font-style: normal; 1180 font-weight: normal; 1181 font-size: 10px; 1182 line-height: 20px; 1183 color: #c91414; 1184 } 1185 1186 div.advertisement-banner { 1187 margin: 0px auto; 1188 } 1189 1190 div#div-gpt-ad-billboard-placeholder { 1191 width: 996px; 1192 margin: 0 auto; 1193 background: #f0f2f8; 1194 padding-bottom: unset !important; 1195 min-height: 200px; 1196 } 1197 1198 div#div-gpt-ad-lb-placeholder { 1199 background: #f0f2f8; 1200 padding-bottom: unset !important; 1201 min-height: 280px; 1202 } 1203 1204 :root { 1205 --fx-red: #cd1f1f; 1206 --fx-red: #cd1f1f; 1207 --fx-silver: #c91414; 1208 --fx-text: #f5f7ff; 1209 --fx-border: rgba(192, 192, 192, .45); 1210 --fx-bg: rgba(230 13 13 / 72%); 1211 --fx-shadow: 0 20px 60px rgba(206 18 18 / 28%); 1212 --purple: #cd1f1f; 1213 --accent: #c91414; 1214 --white: #ffffff; 1215 } 1216 1217 .fx-video-bg { 1218 position: relative; 1219 width: 100%; 1220 min-height: 100vh; 1221 overflow: hidden; 1222 } 1223 1224 .fx-video-bg video { 1225 position: absolute; 1226 top: 50%; 1227 left: 50%; 1228 min-width: 100%; 1229 min-height: 100%; 1230 width: auto; 1231 height: auto; 1232 transform: translate(-50%, -50%); 1233 object-fit: cover; 1234 z-index: 1; 1235 } 1236 1237 .fx-video-overlay { 1238 position: absolute; 1239 inset: 0; 1240 z-index: 2; 1241 background: 1242 radial-gradient(circle at 30% 20%, rgba(176 7 7), transparent 55%), 1243 radial-gradient(circle at 70% 80%, rgba(230, 0, 2, .35), transparent 60%), 1244 linear-gradient(180deg, rgba(176 7 7), rgba(230, 0, 2, .18)); 1245 } 1246 1247 .fx-article-wrap { 1248 position: relative; 1249 z-index: 3; 1250 max-width: 1280px; 1251 margin: 0 auto; 1252 padding: 60px 14px; 1253 } 1254 1255 .fx-article { 1256 position: relative; 1257 border-radius: 22px; 1258 padding: 26px 22px; 1259 color: var(--fx-text); 1260 background: rgba(211 11 11 / 42%); 1261 border: 1px solid var(--fx-border); 1262 box-shadow: var(--fx-shadow); 1263 backdrop-filter: blur(6px); 1264 } 1265 1266 .fx-badge { 1267 display: inline-block; 1268 margin-bottom: 12px; 1269 padding: 6px 12px; 1270 font-size: 12px; 1271 font-weight: 700; 1272 letter-spacing: .6px; 1273 border-radius: 999px; 1274 color: #fff; 1275 background: linear-gradient(90deg, #cd1f1f, #c91414); 1276 box-shadow: 0 0 18px rgba(192, 192, 192, .45); 1277 } 1278 1279 .fx-article h1 { 1280 font-size: 1.8rem; 1281 margin-bottom: 14px; 1282 text-shadow: 0 0 18px rgba(192, 192, 192, .45); 1283 } 1284 1285 .fx-article h2 { 1286 font-size: 1.3rem; 1287 margin: 18px 0 10px; 1288 border-left: 4px solid var(--fx-red); 1289 padding-left: 10px; 1290 } 1291 1292 .fx-article p { 1293 line-height: 1.75; 1294 margin-bottom: 14px; 1295 color: rgba(255, 255, 255, .92); 1296 } 1297 1298 .fx-article a { 1299 color: #dce6ff; 1300 border-bottom: 1px dashed rgba(192, 192, 192, .75); 1301 text-decoration: none; 1302 } 1303 1304 .fx-article a:hover { 1305 color: #ffffff; 1306 text-shadow: 0 0 12px rgba(192, 192, 192, .7); 1307 } 1308 1309 .fx-callout { 1310 margin: 18px 0; 1311 padding: 14px; 1312 border-radius: 14px; 1313 background: rgba(65, 105, 225, .16); 1314 border: 1px solid rgba(192, 192, 192, .45); 1315 } 1316 1317 @media (max-width: 768px) { 1318 .fx-article-wrap { 1319 padding: 40px 12px; 1320 } 1321 1322 .fx-article h1 { 1323 font-size: 1.5rem; 1324 } 1325 } 1326 1327 .faq-review-section { 1328 position: relative; 1329 max-width: 1190px; 1330 margin: 60px auto; 1331 padding: 40px 30px; 1332 border-radius: 25px; 1333 background: linear-gradient(145deg, rgba(65, 105, 225, .08), rgba(192, 192, 192, .05)); 1334 overflow: hidden; 1335 box-shadow: 0 0 40px rgba(65, 105, 225, .85); 1336 } 1337 1338 .faq-review-section::before { 1339 content: ""; 1340 position: absolute; 1341 width: 150%; 1342 height: 150%; 1343 background: radial-gradient(circle at center, rgba(192, 192, 192, .10), transparent 70%); 1344 animation: spinAura 15s linear infinite; 1345 top: -25%; 1346 left: -25%; 1347 } 1348
1349 @keyframes spinAura { 1350 to { 1351 transform: rotate(360deg); 1352 } 1353 } 1354 1355 .section-title { 1356 text-align: center; 1357 color: var(--fx-silver); 1358 font-size: 1.9rem; 1359 letter-spacing: 1px; 1360 font-weight: 700; 1361 text-shadow: 0 0 20px rgba(65, 105, 225, .75); 1362 position: relative; 1363 z-index: 2; 1364 margin-bottom: 25px; 1365 } 1366 1367 .section-title::after { 1368 content: ''; 1369 width: 100px; 1370 height: 3px; 1371 background: linear-gradient(90deg, var(--fx-red), var(--fx-silver)); 1372 display: block; 1373 margin: 10px auto; 1374 border-radius: 2px; 1375 box-shadow: 0 0 10px rgba(192, 192, 192, .55); 1376 animation: pulseLine 2s infinite alternate; 1377 } 1378 1379 @keyframes pulseLine { 1380 from { 1381 opacity: .6; 1382 transform: scaleX(.7); 1383 } 1384 1385 to { 1386 opacity: 1; 1387 transform: scaleX(1); 1388 } 1389 } 1390 1391 .faq-item, 1392 .review-item { 1393 background: rgba(65, 105, 225, .45); 1394 border: 1px solid rgba(192, 192, 192, .35); 1395 border-radius: 18px; 1396 padding: 18px 20px; 1397 margin: 18px 0; 1398 color: var(--white); 1399 box-shadow: inset 0 0 0 rgba(65, 105, 225, 0); 1400 transform: perspective(800px) rotateX(15deg) scale(0.95); 1401 opacity: 0; 1402 transition: all 0.7s ease, box-shadow 0.4s ease; 1403 } 1404 1405 .faq-item.show, 1406 .review-item.show { 1407 opacity: 1; 1408 transform: perspective(800px) rotateX(0deg) scale(1); 1409 } 1410 1411 .faq-item:hover, 1412 .review-item:hover { 1413 background: rgba(192, 192, 192, .32); 1414 box-shadow: 0 0 25px rgba(65, 105, 225, .55); 1415 transform: scale(1.02); 1416 } 1417 1418 .faq-question { 1419 cursor: pointer; 1420 font-weight: 600; 1421 color: var(--fx-silver); 1422 position: relative; 1423 font-size: 1.9rem; 1424 padding-right: 25px; 1425 text-shadow: 0 0 10px rgba(65, 105, 225, .85); 1426 } 1427 1428 .faq-question::after { 1429 content: "+"; 1430 position: absolute; 1431 right: 0; 1432 top: 0; 1433 color: #ffffff; 1434 font-weight: bold; 1435 font-size: 1.4rem; 1436 transition: transform .3s; 1437 } 1438 1439 .faq-item.active .faq-question::after { 1440 transform: rotate(45deg); 1441 } 1442 1443 .faq-answer { 1444 display: none; 1445 color: #ffffff; 1446 line-height: 1.6em; 1447 padding-top: 10px; 1448 border-top: 1px dashed rgba(192, 192, 192, .45); 1449 margin-top: 10px; 1450 } 1451 1452 .faq-item.active .faq-answer { 1453 display: block; 1454 animation: fadeUp .4s ease; 1455 } 1456 1457 @keyframes fadeUp { 1458 from { 1459 opacity: 0; 1460 transform: translateY(10px); 1461 } 1462 1463 to { 1464 opacity: 1; 1465 transform: translateY(0); 1466 } 1467 } 1468 1469 .review-author { 1470 font-weight: 700; 1471 color: var(--fx-silver); 1472 font-size: 1.9rem; 1473 text-shadow: 0 0 10px rgba(65, 105, 225, .85); 1474 } 1475 1476 .review-text { 1477 color: #ffffff; 1478 margin: 6px 0; 1479 font-style: italic; 1480 } 1481 1482 .review-rating { 1483 color: var(--fx-silver); 1484 font-weight: bold; 1485 font-size: 1rem; 1486 text-shadow: 0 0 8px rgba(255, 255, 255, .45); 1487 } 1488 1489 .faq-item::before { 1490 content: ''; 1491 position: absolute; 1492 inset: 0; 1493 border-radius: inherit; 1494 border: 2px solid transparent; 1495 background: linear-gradient(120deg, var(--fx-red), var(--fx-silver), var(--fx-red)) border-box; 1496 mask: linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0); 1497 opacity: 0; 1498 transition: opacity .3s ease; 1499 } 1500 1501 @keyframes borderGlow { 1502 to { 1503 transform: rotate(360deg); 1504 } 1505 } 1506 1507 @media (max-width:768px) { 1508 .faq-review-section { 1509 padding: 28px 18px; 1510 } 1511 1512 .section-title { 1513 font-size: 1.5rem; 1514 } 1515 } 1516</style> 1517 <div id="search-popup"> 1518 <div id="search-input" class="row"> 1519 <div class="container w-100"> 1520 <form 1521 action="/search" 1522 method="get" 1523 role="search" 1524 class="search search-modal__form d-flex justify-content-between" 1525 > 1526 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="20" height="20" viewBox="0 0 20 20" fill="none"> 1527 <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"/> 1528 </svg> 1529 1530 <input type="hidden" name="type" value="product"> 1531 <input 1532 type="text" 1533 id="search-type" 1534 name="q" 1535 class="search-popup" 1536 placeholder="Gifts that linger: Uncover treasures for cherished moments." 1537 > 1538 <div class="close-search"><svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="18" height="18" viewBox="0 0 18 18" fill="none"> 1539 <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
153912.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"/> 1540 </svg> 1541 </div> 1542 <button id="search-btn">Search</button> 1543 </form> 1544 </div> 1545 </div> 1546 <div id="search-result" class="container m-auto"> 1547 <div class="container p-0"> 1548 <div class="group-promotion"> 1549 <div class="resultsearch"> 1550 <div class="row results"> 1551 <div class="col-12 col-lg-6 mb-3 mb-lg-0"> 1552 <label>SUGGESTIONS</label> 1553 <ul class="result_collection"></ul> 1554 </div> 1555 <div class="col-12 col-lg-6"> 1556 <label>PRODUCTS</label> 1557 <ul class="result_product"></ul> 1558 </div> 1559 </div> 1560 <div class="d-flex justify-content-between moreresult m-0"> 1561 <p>Search for<span></span></p> 1562 <svg version="1.1" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="32" height="32" viewBox="0 0 32 32"> 1563 <title>icon-arrow-right</title> 1564 <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> 1565 </svg> 1566 </div> 1567 </div> 1568 </div> 1569 <div class="group-recent hide"> 1570 <h3>RECENT SEARCH</h3> 1571 <span class="delete-all-history">Hapus riwayat</span> 1572 <ul class="last-search"></ul> 1573 </div> 1574 <div class="group-recommend"> 1575 <h3>YOU MAY ALSO LIKE</h3> 1576 1577 1578 <div class="row popup-recommend c-products-grid infinite-case product-multi-"> 1579 <div class="swiper-wrapper justify-content-between" style="margin-left:1px;"> 1580 1581 1582 <div class="swiper-slide card"> 1583 1584 1585 1586 1587 <div class="products" data-lazy="false"> 1588 <div class="bg-products"> 1589 <div class="wishlist-toggle" data-product-handle="mid-autumn-of-love-mooncake"> 1590 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1591 <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.
159111233C11.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"/> 1592 </svg> 1593 1594 </div> 1595 <a href="/products/mid-autumn-of-love-mooncake"> 1596 1597 <div class="product-card-img-container p-0 position-relative"> 1598 1599 <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"> 1600 </div> 1601 <div class="card-body product-card-info"> 1602 <h5 class="h5 mb-0"> 1603 Mid Autumn of Love Mooncake 1604 </h5> 1605 <div class="product-card-price"> 1606 1607 <div class="product-price-sale"> 1608 <s class="product-card-price-before card-money">Rp 588.000</s> 1609 <span class="product-card-discount small"> 1610 (-40%) 1611 </span> 1612 </div> 1613 1614 1615 1616 <div class="price-discount"> 1617 <h4 class="product-card-price-after card-money">Rp 348.000</h4> 1618 </div> 1619 1620 1621 1622 1623 1624 </div> 1625 1626 </div> 1627 </a> 1628 </div> 1629 1630 </div> 1631 1632 </div> 1633 1634 1635 1636 <div class="swiper-slide card"> 1637 1638 1639 1640 1641 <div class="products" data-lazy="false"> 1642 <div class="bg-products"> 1643 <div class="wishlist-toggle" data-product-handle="mid-autumn-of-joy-mooncake"> 1644 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1645 <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.
164511233C11.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"/> 1646 </svg> 1647 1648 </div> 1649 <a href="/products/mid-autumn-of-joy-mooncake"> 1650 1651 <div class="product-card-img-container p-0 position-relative"> 1652 1653 <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"> 1654 </div> 1655 <div class="card-body product-card-info"> 1656 <h5 class="h5 mb-0"> 1657 Mid Autumn of Joy Mooncake 1658 </h5> 1659 <div class="product-card-price"> 1660 1661 <div class="product-price-sale"> 1662 <s class="product-card-price-before card-money">Rp 888.000</s> 1663 <span class="product-card-discount small"> 1664 (-33%) 1665 </span> 1666 </div> 1667 1668 1669 1670 <div class="price-discount"> 1671 <h4 class="product-card-price-after card-money">Rp 588.000</h4> 1672 </div> 1673 1674 1675 1676 1677 1678 </div> 1679 1680 </div> 1681 </a> 1682 </div> 1683 1684 </div> 1685 1686 </div> 1687 1688 1689 1690 <div class="swiper-slide card"> 1691 1692 1693 1694 1695 <div class="products" data-lazy="false"> 1696 <div class="bg-products"> 1697 <div class="wishlist-toggle" data-product-handle="mid-autumn-of-fortune-mooncake"> 1698 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1699 <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.
169911233C11.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"/> 1700 </svg> 1701 1702 </div> 1703 <a href="/products/mid-autumn-of-fortune-mooncake"> 1704 1705 <div class="product-card-img-container p-0 position-relative"> 1706 1707 <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"> 1708 </div> 1709 <div class="card-body product-card-info"> 1710 <h5 class="h5 mb-0"> 1711 Mid Autumn of Fortune Mooncake 1712 </h5> 1713 <div class="product-card-price"> 1714 1715 <div class="product-price-sale"> 1716 <s class="product-card-price-before card-money">Rp 1.188.000</s> 1717 <span class="product-card-discount small"> 1718 (-33%) 1719 </span> 1720 </div> 1721 1722 1723 1724 <div class="price-discount"> 1725 <h4 class="product-card-price-after card-money">Rp 788.000</h4> 1726 </div> 1727 1728 1729 1730 1731 1732 </div> 1733 1734 </div> 1735 </a> 1736 </div> 1737 1738 </div> 1739 1740 </div> 1741 1742 1743 1744 <div class="swiper-slide card"> 1745 1746 1747 1748 1749 <div class="products" data-lazy="false"> 1750 <div class="bg-products"> 1751 <div class="wishlist-toggle" data-product-handle="mid-autumn-festival-mooncake"> 1752 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1753 <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.
175311233C11.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"/> 1754 </svg> 1755 1756 </div> 1757 <a href="/products/mid-autumn-festival-mooncake"> 1758 1759 <div class="product-card-img-container p-0 position-relative"> 1760 1761 <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"> 1762 </div> 1763 <div class="card-body product-card-info"> 1764 <h5 class="h5 mb-0"> 1765 Mid Autumn Festival Mooncake 1766 </h5> 1767 <div class="product-card-price"> 1768 1769 <div class="product-price-sale"> 1770 <s class="product-card-price-before card-money">Rp 1.288.000</s> 1771 <span class="product-card-discount small"> 1772 (-23%) 1773 </span> 1774 </div> 1775 1776 1777 1778 <div class="price-discount"> 1779 <h4 class="product-card-price-after card-money">Rp 988.000</h4> 1780 </div> 1781 1782 1783 1784 1785 1786 </div> 1787 1788 </div> 1789 </a> 1790 </div> 1791 1792 </div> 1793 1794 </div> 1795 1796 1797 1798 <div class="swiper-slide card"> 1799 1800 1801 1802 1803 <div class="products" data-lazy="false"> 1804 <div class="bg-products"> 1805 <div class="wishlist-toggle" data-product-handle="the-jade-bouquet"> 1806 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1807 <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.
180711233C11.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"/> 1808 </svg> 1809 1810 </div> 1811 <a href="/products/the-jade-bouquet"> 1812 1813 <div class="product-card-img-container p-0 position-relative"> 1814 1815 <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"> 1816 </div> 1817 <div class="card-body product-card-info"> 1818 <h5 class="h5 mb-0"> 1819 The Jade Bouquet 1820 </h5> 1821 <div class="product-card-price"> 1822 1823 <div class="product-price-sale"> 1824 <s class="product-card-price-before card-money">Rp 435.000</s> 1825 <span class="product-card-discount small"> 1826 (-34%) 1827 </span> 1828 </div> 1829 1830 1831 1832 <div class="price-discount"> 1833 <h4 class="product-card-price-after card-money">Rp 285.000</h4> 1834 </div> 1835 1836 1837 1838 1839 1840 </div> 1841 1842 </div> 1843 </a> 1844 </div> 1845 1846 </div> 1847 1848 </div> 1849 1850 1851 1852 <div class="swiper-slide card"> 1853 1854 1855 1856 1857 <div class="products" data-lazy="false"> 1858 <div class="bg-products"> 1859 <div class="wishlist-toggle" data-product-handle="the-selena-bouquet"> 1860 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1861 <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.
186111233C11.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"/> 1862 </svg> 1863 1864 </div> 1865 <a href="/products/the-selena-bouquet"> 1866 1867 <div class="product-card-img-container p-0 position-relative"> 1868 1869 <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"> 1870 </div> 1871 <div class="card-body product-card-info"> 1872 <h5 class="h5 mb-0"> 1873 The Selena Bouquet 1874 </h5> 1875 <div class="product-card-price"> 1876 1877 <div class="product-price-sale"> 1878 <s class="product-card-price-before card-money">Rp 335.000</s> 1879 <span class="product-card-discount small"> 1880 (-29%) 1881 </span> 1882 </div> 1883 1884 1885 1886 <div class="price-discount"> 1887 <h4 class="product-card-price-after card-money">Rp 235.000</h4> 1888 </div> 1889 1890 1891 1892 1893 1894 </div> 1895 1896 </div> 1897 </a> 1898 </div> 1899 1900 </div> 1901 1902 </div> 1903 1904 1905 1906 <div class="swiper-slide card"> 1907 1908 1909 1910 1911 <div class="products" data-lazy="false"> 1912 <div class="bg-products"> 1913 <div class="wishlist-toggle" data-product-handle="the-viola-bouquet"> 1914 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1915 <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.
191511233C11.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"/> 1916 </svg> 1917 1918 </div> 1919 <a href="/products/the-viola-bouquet"> 1920 1921 <div class="product-card-img-container p-0 position-relative"> 1922 1923 <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"> 1924 </div> 1925 <div class="card-body product-card-info"> 1926 <h5 class="h5 mb-0"> 1927 The Viola Bouquet 1928 </h5> 1929 <div class="product-card-price"> 1930 1931 <div class="product-price-sale"> 1932 <s class="product-card-price-before card-money">Rp 385.000</s> 1933 <span class="product-card-discount small"> 1934 (-25%) 1935 </span> 1936 </div> 1937 1938 1939 1940 <div class="price-discount"> 1941 <h4 class="product-card-price-after card-money">Rp 285.000</h4> 1942 </div> 1943 1944 1945 1946 1947 1948 </div> 1949 1950 </div> 1951 </a> 1952 </div> 1953 1954 </div> 1955 1956 </div> 1957 1958 1959 1960 <div class="swiper-slide card"> 1961 1962 1963 1964 1965 <div class="products" data-lazy="false"> 1966 <div class="bg-products"> 1967 <div class="wishlist-toggle" data-product-handle="the-minerva-bouquet"> 1968 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1969 <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.
196911233C11.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"/> 1970 </svg> 1971 1972 </div> 1973 <a href="/products/the-minerva-bouquet"> 1974 1975 <div class="product-card-img-container p-0 position-relative"> 1976 1977 <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"> 1978 </div> 1979 <div class="card-body product-card-info"> 1980 <h5 class="h5 mb-0"> 1981 The Minerva Bouquet 1982 </h5> 1983 <div class="product-card-price"> 1984 1985 <div class="product-price-sale"> 1986 <s class="product-card-price-before card-money">Rp 385.000</s> 1987 <span class="product-card-discount small"> 1988 (-25%) 1989 </span> 1990 </div> 1991 1992 1993 1994 <div class="price-discount"> 1995 <h4 class="product-card-price-after card-money">Rp 285.000</h4> 1996 </div> 1997 1998 1999 2000 2001 2002 </div> 2003 2004 </div> 2005 </a> 2006 </div> 2007 2008 </div> 2009 2010 </div> 2011 2012 2013 2014 <div class="swiper-slide card"> 2015 2016 2017 2018 2019 <div class="products" data-lazy="false"> 2020 <div class="bg-products"> 2021 <div class="wishlist-toggle" data-product-handle="congraduations-bouquet"> 2022 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="24" height="21" viewBox="0 0 24 21" fill="none"> 2023 <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.
202311233C11.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"/> 2024 </svg> 2025 2026 </div> 2027 <a href="/products/congraduations-bouquet"> 2028 2029 <div class="product-card-img-container p-0 position-relative"> 2030 2031 <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"> 2032 </div> 2033 <div class="card-body product-card-info"> 2034 <h5 class="h5 mb-0"> 2035 Congraduations Bouquet 2036 </h5> 2037 <div class="product-card-price"> 2038 2039 <div class="product-price-sale"> 2040 <s class="product-card-price-before card-money">Rp 380.000</s> 2041 <span class="product-card-discount small"> 2042 (-25%) 2043 </span> 2044 </div> 2045 2046 2047 2048 <div class="price-discount"> 2049 <h4 class="product-card-price-after card-money">Rp 285.000</h4> 2050 </div> 2051 2052 2053 2054 2055 2056 </div> 2057 2058 </div> 2059 </a> 2060 </div> 2061 2062 </div> 2063 2064 </div> 2065 2066 2067 2068 <div class="swiper-slide card"> 2069 2070 2071 2072 2073 <div class="products" data-lazy="false"> 2074 <div class="bg-products"> 2075 <div class="wishlist-toggle" data-product-handle="grad-gorgeous-bouquet"> 2076 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="24" height="21" viewBox="0 0 24 21" fill="none"> 2077 <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.
207711233C11.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"/> 2078 </svg> 2079 2080 </div> 2081 <a href="/products/grad-gorgeous-bouquet"> 2082 2083 <div class="product-card-img-container p-0 position-relative"> 2084 2085 <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"> 2086 </div> 2087 <div class="card-body product-card-info"> 2088 <h5 class="h5 mb-0"> 2089 Grad & Gorgeous Bouquet 2090 </h5> 2091 <div class="product-card-price"> 2092 2093 <div class="product-price-sale"> 2094 <s class="product-card-price-before card-money">Rp 380.000</s> 2095 <span class="product-card-discount small"> 2096 (-25%) 2097 </span> 2098 </div> 2099 2100 2101 2102 <div class="price-discount"> 2103 <h4 class="product-card-price-after card-money">Rp 285.000</h4> 2104 </div> 2105 2106 2107 2108 2109 2110 </div> 2111 2112 </div> 2113 </a> 2114 </div> 2115 2116 </div> 2117 2118 </div> 2119 2120 2121 </div> 2122 </div> 2123 2124 </div> 2125 </div> 2126 </div> 2127 2128 <div class="site-overlay" style="display: none"></div> 2129 </div> 2130
2130<script> 2131 2132 var swiper = new Swiper('.popup-recommend', { 2133 slidesPerView : 4, 2134 spaceBetween: 30, 2135 lazy: true , 2136 speed: 300, 2137 breakpoints: { 2138 // when window width is <= 576px 2139 576: { 2140 slidesPerView: 2, 2141 spaceBetween: 10, 2142 freeMode: true, 2143 resistance : true, 2144 resistanceRatio : 0, 2145 freeModeMomentumRatio : 0.45, 2146 freeModeMomentumVelocityRatio : 1.5 2147 }, 2148 768: { 2149 slidesPerView: 2, 2150 spaceBetween: 10 2151 }, 2152 992: { 2153 slidesPerView: 3, 2154 spaceBetween: 20 2155 } 2156 } 2157 }); 2158 2159 const searchContainer = $("#search-popup") 2160 const searchInput = $(".search-popup") 2161 const result_collection = $('.result_collection') 2162 const result_product = $('.result_product') 2163 const resultsearch = $('.resultsearch') 2164 const resultrecommend = $(".group-recommend") 2165 const moreresult = $(".moreresult") 2166 2167 searchInput.keyup(function(){ 2168 const input = $(this).val() 2169 moreresult.find("p span").text(` â${input}â`) 2170 if(input.length > 2) { 2171 $(".close-search").show() 2172 const url = `https://outerbloom.com/search/suggest.json?resources[limit]=10&resources[limit_scope]=each&resources[type]=collection,product&q=${input}` 2173 $.ajax({ 2174 type: 'GET', 2175 url, 2176 beforeSend: function() { 2177 // setting a timeout 2178 // $(placeholder).addClass('loading'); 2179 }, 2180 success: function(response) { 2181 resultsearch.show() 2182 resultrecommend.hide() 2183 result_collection.html("") 2184 result_product.html("") 2185 const collections = response.resources.results.collections 2186 const products = response.resources.results.products 2187 let collection_length = collections.length 2188 let product_length = products.length 2189 // if(collections.length > 5) { 2190 // collection_length = 5 2191 // } 2192 // if(products.length > 5) { 2193 // product_length = 5 2194 // } 2195 for(let i=0;i<collection_length;i++){ 2196 const title = collections[i].title 2197 const url = collections[i].url 2198 let html_collection 2199 if(!title.includes('AIA') && !title.includes('AXA') && !title.includes('WOM') && !title.includes('Upsell')) { 2200 html_collection = ` 2201 <li class="item" data-title="${title}"> 2202 <a href="${url}" data-type="collection" class="item_url" data-title="${title}" data-url="${url}">${title}</a> 2203 </li> 2204 ` 2205 } 2206 result_collection.append(html_collection) 2207 } 2208 for(let i=0;i<product_length;i++){ 2209 const title = products[i].title 2210 const url = products[i].url 2211 const image = products[i].featured_image.url 2212 const vendor = products[i].vendor 2213 let html_product 2214 if(vendor !== 'AIA' && vendor !== 'AXA' && vendor !== 'WOM Finance' && !title.includes('Extra Shipping Cost') && !title.includes('[US]') && !title.includes('Rp')){ 2215 html_product = ` 2216 <li class="item" data-vendor="${vendor}"> 2217 <a href="${url}" class="item_url" data-type="product" data-title="${title}" data-url="${url}"> 2218 <img src="${image}" alt="${title}" style="width: 70px;vertical-align: middle;margin-right: 20px;"><span>${title}</span> 2219 </a> 2220 </li> 2221 ` 2222 } 2223 result_product.append(html_product) 2224 } 2225 }, 2226 error: function(xhr) { // if error occured 2227 alert("Error occured.please try again"); 2228 }, 2229 complete: function(response) { 2230 // $(placeholder).removeClass('loading'); 2231 }, 2232 dataType: 'JSON' 2233 }); 2234 } else { 2235 result_collection.html("") 2236 result_product.html("") 2237 2238 resultsearch.hide() 2239 resultrecommend.show() 2240 } 2241 }) 2242 2243 moreresult.click(function(){ 2244 $("#search-btn").trigger("click"); 2245 }) 2246 2247 $(".close-search").click(function(){ 2248 $(this).hide() 2249 searchInput.val("") 2250 searchInput.focus() 2251 resultsearch.hide() 2252 resultrecommend.show() 2253 }) 2254 2255 function setCookie(name,value,days) { 2256 var expires = ""; 2257 if (days) { 2258 var date = new Date(); 2259 date.setTime(date.getTime() + (days*24*60*60*1000)); 2260 expires = "; expires=" + date.toUTCString(); 2261 } 2262 document.cookie = name + "=" + (value || "") + expires + "; path=/"; 2263 } 2264 function getCookie(name) { 2265 var nameEQ = name + "="; 2266 var ca = document.cookie.split(';');
2267 for(var i=0;i < ca.length;i++) { 2268 var c = ca[i]; 2269 while (c.charAt(0)==' ') c = c.substring(1,c.length); 2270 if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 2271 } 2272 return null; 2273 } 2274 let last_search_name = [] 2275 let last_search_url = [] 2276 $(".group-recent").hide() 2277 if(getCookie("last_search_name") != null && getCookie("last_search_url") != null){ 2278 if(getCookie("last_search_name") != "" && getCookie("last_search_url") != ""){ 2279 $(".group-recent").show() 2280 last_search_name = getCookie("last_search_name"); 2281 last_search_url = getCookie("last_search_url"); 2282 const arrName = last_search_name.substring(1).split(',').reverse() 2283 const arrUrl = last_search_url.substring(1).split(',').reverse() 2284 console.log(arrName, 'Array Name') 2285 console.log(arrUrl, 'Array Url') 2286 let length = arrName.length 2287 if(arrName.length > 5) { 2288 length = 5 2289 } 2290 for(let n=0;n<length;n++){ 2291 let html2 = `<li><svg viewBox="0 0 24 24" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif"><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>` 2292 $(".group-recent ul").append(html2) 2293 } 2294 } 2295 } 2296 console.log(last_search_name, 'Name') 2297 console.log(last_search_url, 'url') 2298 2299 resultsearch.delegate(".item a", "click", function(){ 2300 let name = [last_search_name] 2301 let url = [last_search_url] 2302 name.push($(this).attr('data-title')) 2303 url.push($(this).attr('data-url')) 2304 setCookie("last_search_name",name,7); 2305 setCookie("last_search_url",url,7); 2306 }) 2307 2308 $(".delete-all-history").click(function() { 2309 setCookie("last_search_name",null,0); 2310 setCookie("last_search_url",null,0); 2311 $(".last-search").hide(); 2312 setTimeout(function(){ 2313 location.reload(); 2314 }, 500); 2315 }) 2316 2317 $("#search-trigger").click(function(){ 2318 search_open() 2319 }) 2320 $(".icon-search-mobile").click(function(){ 2321 search_open() 2322 }) 2323 $(".search-header svg").click(function(){ 2324 search_close() 2325 }) 2326 $(".icon-key-mobile").click(function(){ 2327 search_close() 2328 }) 2329 2330 function search_open() { 2331 $("body").addClass("search-popup-open") 2332 $("#nav-mobile-icon, .search-header label, .icon-search-mobile").hide() 2333 $("#search-popup, .search-header svg, .icon-key-mobile").show() 2334 $(".search-popup").focus() 2335 $('.popup-recommend')[0].swiper.update(); 2336 } 2337 function search_close() { 2338 $("body").removeClass("search-popup-open") 2339 $("#nav-mobile-icon, .search-header label, .icon-search-mobile").show() 2340 $("#search-popup, .search-header svg, .icon-key-mobile").hide() 2341 searchInput.val("") 2342 resultsearch.hide() 2343 resultrecommend.show() 2344 } 2345 2346 $(".site-overlay").click(function(){ 2347 search_close() 2348 }) 2349 </script>
2349 2350 2351 </div> 2352 </div> 2353 2354 <div id="PageContainer" class="is-moved-by-drawerx" style="background-color: #000000;"> 2355 <main class="main-content pt-0" role="main"> 2356 2357 <div id="breadcrumbProduct" class="d-none d-lg-block"> 2358 <style> 2359 #breadcrumbProduct { 2360 padding: 20px 0; 2361 } 2362 #breadcrumbProduct ul { 2363 display: flex; 2364 padding: 0; 2365 list-style: none; 2366 margin: 0; 2367 gap: 12px; 2368 } 2369 #breadcrumbProduct ul li { 2370 text-transform: uppercase; 2371 margin: 0; 2372 font-size: 12px; 2373 } 2374 #breadcrumbProduct ul li a { 2375 color: #757575; 2376 } 2377 2378 #breadcrumbProduct ul li svg { 2379 width: 10px; 2380 height: 10px; 2381 padding: 0; 2382 color: #757575; 2383 vertical-align: middle; 2384 } 2385 </style> 2386 <div class="container" style="color: #ffffff;"> 2387 <ul role="navigation" aria-label="breadcrumbs"> 2388 <li><a href="https://koitigan.com/" style="color: #ffffff;">KOITOTO</a></li> 2389 <li><svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="7" height="10" viewBox="0 0 7 10" fill="none"> 2390 <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"/> 2391 </svg></li> 2392 <li>Bandar Togel</li> 2393 <li>Togel Online</li> 2394 <li>Togel Resmi</li> 2395 <li>Bandar Togel Online</li> 2396 <li>KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang</li> 2397 2398 </ul> 2399 </div> 2400 2401 </div> 2402 2403
2403<script type="application/ld+json"> 2404 { 2405 "@context": "https://schema.org", 2406 "@type": "Product", 2407 "name": "KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang", 2408 "image": "https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg", 2409 "description": "KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat.", 2410 "brand": { 2411 "@type": "Brand", 2412 "name": "KOITOTO" 2413 }, 2414 "sku": "KOITOTO", 2415 "mpn": "KOITOTO", 2416 "url": "https://koitigan.com/", 2417 "offers": { 2418 "@type": "Offer", 2419 "url": "https://koitigan.com/", 2420 "priceCurrency": "USD", 2421 "price": "10.00", 2422 "priceValidUntil": "2025-12-25", 2423 "itemCondition": "https://schema.org/NewCondition", 2424 "availability": "https://schema.org/InStock", 2425 "seller": { 2426 "@type": "Organization", 2427 "name": "KOITOTO" 2428 } 2429 }, 2430 "aggregateRating": { 2431 "@type": "AggregateRating", 2432 "ratingValue": "5.0", 2433 "reviewCount": 858 2434 }, 2435 "review": [ 2436 { 2437 "@type": "Review", 2438 "reviewRating": { 2439 "@type": "Rating", 2440 "ratingValue": "5", 2441 "bestRating": "5" 2442 }, 2443 "author": { 2444 "@type": "Person", 2445 "name": "Slamet Haryono" 2446 } 2447 }, 2448 { 2449 "@type": "Review", 2450 "reviewRating": { 2451 "@type": "Rating", 2452 "ratingValue": "5", 2453 "bestRating": "5" 2454 }, 2455 "author": { 2456 "@type": "Person", 2457 "name": "Dwi Kurniawan" 2458 } 2459 } 2460 ] 2461 } 2462 </script>
2462 2463
2463<script type="application/ld+json"> 2464 { 2465 "@context": "https://schema.org", 2466 "@type": "BreadcrumbList", 2467 "itemListElement": [ 2468 { 2469 "@type": "ListItem", 2470 "position": 1, 2471 "name": "KOITOTO", 2472 "item": "https://koitigan.com/" 2473 }, 2474 { 2475 "@type": "ListItem", 2476 "position": 2, 2477 "name": "KOI TOTO", 2478 "item": "https://koitigan.com/" 2479 }, 2480 { 2481 "@type": "ListItem", 2482 "position": 3, 2483 "name": "BANDAR TOGEL", 2484 "item": "https://koitigan.com/" 2485 }, 2486 { 2487 "@type": "ListItem", 2488 "position": 4, 2489 "name": "TOGEL ONLINE", 2490 "item": "https://koitigan.com/" 2491 }, 2492 { 2493 "@type": "ListItem", 2494 "position": 5, 2495 "name": "TOGEL RESMI", 2496 "item": "https://koitigan.com/" 2497 }, 2498 { 2499 "@type": "ListItem", 2500 "position": 6, 2501 "name": "BANDAR TOGEL ONLINE", 2502 "item": "https://koitigan.com/" 2503 }, 2504 { 2505 "@type": "ListItem", 2506 "position": 7, 2507 "name": "KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang", 2508 "item": "https://koitigan.com/" 2509 } 2510 ] 2511 } 2512 </script>
2512 2513 2514 <!--faq--> 2515 2516
2516<script type="application/ld+json" id="faq-schema"> 2517 { 2518 "@context": "https://schema.org", 2519 "@type": "FAQPage", 2520 "mainEntity": [ 2521 { 2522 "@type": "Question", 2523 "name": "Apa itu KOITOTO dan mengapa disebut bandar togel online resmi?", 2524 "acceptedAnswer": { 2525 "@type": "Answer", 2526 "text": "KOITOTO adalah platform togel online yang berfokus pada keamanan dan kenyamanan member. Disebut resmi karena menyediakan cara akses bandar togel online resmi tanpa jalur belakang, sehingga member tidak perlu menggunakan cara-cara berisiko. Manfaat utamanya adalah ketenangan bermain, transaksi yang lebih aman, dan pengalaman yang profesional namun tetap santai." 2527 } 2528}, 2529{ 2530 "@type": "Question", 2531 "name": "Bagaimana cara mengakses KOITOTO tanpa jalur belakang?", 2532 "acceptedAnswer": { 2533 "@type": "Answer", 2534 "text": "KOITOTO menyediakan akses resmi yang dirancang agar member bisa masuk dengan mudah dan aman. Dengan mengikuti panduan yang disediakan, Anda tidak perlu melewati jalur belakang yang berpotensi berbahaya. Manfaatnya jelas: risiko phishing berkurang, koneksi lebih stabil, dan Anda bisa fokus menikmati permainan tanpa gangguan teknis." 2535 } 2536}, 2537{ 2538 "@type": "Question", 2539 "name": "Apa manfaat utama bermain di bandar togel online resmi seperti KOITOTO?", 2540 "acceptedAnswer": { 2541 "@type": "Answer", 2542 "text": "Manfaat utamanya adalah keamanan data, kenyamanan akses, dan ketenangan pikiran. Karena KOITOTO menyediakan cara akses bandar togel online resmi tanpa jalur belakang, member tidak perlu khawatir soal link palsu atau gangguan akses. Selain itu, proses transaksi yang cepat dan support yang responsif membuat pengalaman bermain jauh lebih menyenangkan." 2543 } 2544}, 2545{ 2546 "@type": "Question", 2547 "name": "Apakah KOITOTO cocok untuk pemula?", 2548 "acceptedAnswer": { 2549 "@type": "Answer", 2550 "text": "Sangat cocok. Platform ini dirancang agar mudah digunakan, bahkan bagi yang baru pertama kali mencoba. Dengan cara akses bandar togel online resmi tanpa jalur belakang, pemula tidak perlu bingung mencari link alternatif. Manfaatnya: proses belajar menjadi lebih cepat, risiko kesalahan lebih kecil, dan bisa langsung menikmati fitur-fitur yang tersedia dengan tenang." 2551 } 2552}, 2553{ 2554 "@type": "Question", 2555 "name": "Bagaimana keamanan data member di KOITOTO?", 2556 "acceptedAnswer": { 2557 "@type": "Answer", 2558 "text": "Keamanan menjadi prioritas utama. Karena itu KOITOTO menerapkan sistem akses resmi tanpa jalur belakang. Manfaat yang dirasakan member adalah rasa aman saat login, deposit, maupun withdraw. Data pribadi terlindungi dengan baik, sehingga Anda bisa bermain dengan lebih percaya diri dan tanpa rasa khawatir." 2559 } 2560}, 2561{ 2562 "@type": "Question", 2563 "name": "Apakah proses deposit dan withdraw di KOITOTO cepat?", 2564 "acceptedAnswer": { 2565 "@type": "Answer", 2566 "text": "Ya, salah satu keunggulan KOITOTO adalah proses transaksi yang relatif cepat dan lancar. Ditambah dengan cara akses bandar togel online resmi tanpa jalur belakang, member bisa melakukan deposit maupun withdraw kapan saja tanpa hambatan teknis. Manfaatnya: waktu lebih efisien dan fokus tetap pada permainan." 2567 } 2568} 2569 ] 2570 }, 2571 2572 { 2573 "@type": "Product", 2574 "name": "KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang", 2575 "image": "https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg", 2576 "description": "KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat.", 2577 "url": "https://koitigan.com/", 2578 "aggregateRating": { 2579 "@type": "AggregateRating", 2580 "ratingValue": "5.0", 2581 "reviewCount": "7935" 2582 }, 2583 "review": [ 2584{ 2585 "@type": "Review", 2586 "author": { "@type": "Person", "name": "Ester" }, 2587 "datePublished": "2026-01-12", 2588 "reviewBody": "Saya sudah mencoba berbagai platform sebelumnya, tapi baru di KOITOTO saya benar-benar merasakan perbedaan. Cara akses bandar togel online resmi tanpa jalur belakang yang mereka sediakan membuat prosesnya jauh lebih aman, cepat, dan tanpa ribet. Manfaatnya jelas: tidak perlu takut terkena phishing atau akun bodong, semua transaksi terasa transparan, dan support-nya responsif. Buat yang masih ragu, saya sarankan langsung c
2588oba sendiri. Pengalaman bermain jadi jauh lebih tenang dan menyenangkan.", 2589 "name": "" 2590}, 2591{ 2592 "@type": "Review", 2593 "author": { "@type": "Person", "name": "Arif" }, 2594 "datePublished": "2026-01-10", 2595 "reviewBody": "Yang saya suka dari KOITOTO adalah komitmen mereka menyediakan cara akses bandar togel online resmi tanpa jalur belakang. Ini bukan sekadar slogan, tapi benar-benar diterapkan. Hasilnya, saya bisa main kapan saja tanpa khawatir koneksi terputus atau terkena blokir. Manfaatnya terasa nyata: waktu lebih efisien, risiko lebih rendah, dan fokus bisa sepenuhnya pada permainan. Bahasa profesional tapi tetap ramah dari customer service-nya juga menambah nilai plus.", 2596 "name": "" 2597}, 2598{ 2599 "@type": "Review", 2600 "author": { "@type": "Person", "name": "Sinta" }, 2601 "datePublished": "2026-01-08", 2602 "reviewBody": "Setelah hampir 3 bulan setia di KOITOTO, akhirnya saya berhasil memenangkan hadiah sebesar Rp 87.500.000 dari pasaran Singapore. Yang paling membuat saya tenang adalah karena dari awal saya menggunakan cara akses bandar togel online resmi tanpa jalur belakang, jadi tidak ada rasa khawatir sama sekali. Proses claim hadiahnya juga sangat cepat dan profesional. Terima kasih KOITOTO, pengalaman kemenangan ini benar-benar membuat saya semakin percaya.", 2603 "name": "" 2604}, 2605{ 2606 "@type": "Review", 2607 "author": { "@type": "Person", "name": "Reza" }, 2608 "datePublished": "2026-01-06", 2609 "reviewBody": "Setelah beberapa kali mencoba di tempat lain, akhirnya saya menemukan kemenangan besar di KOITOTO. Total yang saya dapatkan Rp 98.200.000 dari pasaran Sydney. Manfaat paling terasa adalah rasa aman karena dari awal saya hanya menggunakan cara akses bandar togel online resmi tanpa jalur belakang. Semuanya berjalan mulus, mulai dari pasang nomor sampai withdraw. Terima kasih KOITOTO, semoga semakin sukses.", 2610 "name": "" 2611}, 2612{ 2613 "@type": "Review", 2614 "author": { "@type": "Person", "name": "Fajar" }, 2615 "datePublished": "2026-01-04", 2616 "reviewBody": "Saya ingin berbagi kabar gembira. Tadi siang berhasil claim kemenangan sebesar Rp 154.000.000 di KOITOTO. Yang membuat saya semakin yakin adalah karena platform ini konsisten menyediakan cara akses bandar togel online resmi tanpa jalur belakang. Tidak perlu pusing cari link, tidak takut kena blokir. Prosesnya cepat, aman, dan sangat profesional. Kemenangan ini benar-benar membuat saya bersyukur.", 2617 "name": "" 2618}, 2619{ 2620 "@type": "Review", 2621 "author": { "@type": "Person", "name": "Dimas" }, 2622 "datePublished": "2026-01-02", 2623 "reviewBody": "Saya sudah merekomendasikan KOITOTO ke beberapa teman dekat. Alasan utamanya sederhana: cara akses bandar togel online resmi tanpa jalur belakang yang mereka sediakan benar-benar mempermudah. Manfaatnya bukan hanya soal keamanan, tapi juga efisiensi waktu. Deposit cepat, withdraw lancar, dan antarmuka yang clean membuat saya betah berlama-lama. Kalau Anda mencari platform yang meyakinkan dan terpercaya, ini salah satu yang layak dicoba..", 2624 "name": "" 2625}, 2626{ 2627 "@type": "Review", 2628 "author": { "@type": "Person", "name": "Gina" }, 2629 "datePublished": "2025-12-30", 2630 "reviewBody": "Buat saya, keamanan adalah prioritas utama. Karena itu saya sangat menghargai KOITOTO yang secara konsisten menawarkan cara akses bandar togel online resmi tanpa jalur belakang. Manfaatnya jelas terasa: tenang saat bermain, percaya diri saat bertransaksi, dan tidak khawatir soal privasi. Ditambah dengan fitur-fitur yang lengkap dan support yang selalu siap membantu, platform ini terasa seperti brand premium yang memang peduli pada kenyamanan membernya.", 2631 "name": "" 2632}, 2633{ 2634 "@type": "Review", 2635 "author": { "@type": "Person", "name": "Budi" }, 2636 "datePublished": "2025-12-28", 2637 "reviewBody": "Sudah hampir setahun saya aktif di KOITOTO, dan sampai sekarang masih merasa puas. Cara akses bandar togel online resmi tanpa jalur belakang yang mereka sediakan membuat saya tidak pernah mengalami kesulitan masuk ke akun. Manfaat jangka panjangnya sangat terasaâwaktu tidak terbuang, risiko diminimalisir, dan fokus bisa sepenuhnya pada strategi permainan. Saya rasa ini salah satu keputusan terbaik dalam memilih platform togel online.", 2638 "name": "" 2639}, 2640{ 2641 "@type": "Review", 2642 "author": { "@type": "Person", "name": "Andi" }, 2643 "datePublished": "2025-12-26", 2644 "reviewBody": Kalau ditanya platform mana yang paling meyakinkan saat ini, jawaban saya KOITOTO. Mereka berhasil menyediakan cara akses bandar togel online resmi tanpa jalur belakang yang benar-benar mudah dan aman. Manfaat yang didapat bukan hanya soal kemudahan akses, tapi juga rasa percaya yang tumbuh seiring waktu. Transaksi aman, pelayanan ramah profesional, dan sistem yang stabil. Sangat recommended bagi siapa saja yang ingin bermain dengan nyaman dan tanpa khawatir., 2645 "name": "" 2646} 2647 ] 2648 } 2649 ] 2650} 2651</script>
2651 2652
2652<script type="application/ld+json"> 2653 { 2654 "@context": "https://schema.org", 2655 "@type": "Organization", 2656 "name": "KOITOTO", 2657 "url": "https://koitigan.com/", 2658 "logo": "https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif", 2659 "sameAs": [ 2660 "https://www.facebook.com/KOITOTO", 2661 "https://twitter.com/KOITOTO", 2662 "https://www.instagram.com/KOITOTO" 2663 ], 2664 "contactPoint": { 2665 "@type": "ContactPoint", 2666 "telephone": "+62-821-4789-3138", 2667 "contactType": "customer support", 2668 "areaServed": "ID", 2669 "availableLanguage": ["Indonesian", "English"] 2670 } 2671 } 2672 </script>
2672 2673 2674
2674<script type="application/ld+json"> 2675 { 2676 "@context": "https://schema.org", 2677 "@type": "VideoObject", 2678 "name": "KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang", 2679 "description": "KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat.", 2680 "thumbnailUrl": [ 2681 "https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg", 2682 "https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2683 ], 2684 "uploadDate": "2025-09-28T04:19:10-04:00", 2685 "duration": "GJ298", 2686 "contentUrl": "https://koitigan.com/" 2687 } 2688 </script>
2688 2689 2690
2690<script type="application/ld+json"> 2691 { 2692 "@context": "https://schema.org", 2693 "@type": "BreadcrumbList", 2694 "itemListElement": [ 2695 { 2696 "@type": "ListItem", 2697 "position": 1, 2698 "name": "Home", 2699 "item": "https://koitigan.com/" 2700 } 2701 ] 2702 } 2703 </script>
2703 2704 2705
2705<script type="application/ld+json"> 2706 { 2707 "@context": "https://schema.org", 2708 "@graph": [ 2709 { 2710 "@type": "Organization", 2711 "@id": "https://koitigan.com/#org", 2712 "name": "KOITOTO", 2713 "url": "https://koitigan.com/", 2714 "logo": "https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2715 }, 2716 { 2717 "@type": "WebSite", 2718 "@id": "https://koitigan.com/#website", 2719 "url": "https://koitigan.com/", 2720 "name": "KOITOTO", 2721 "publisher": { "@id": "https://koitigan.com/#org" }, 2722 "inLanguage": "id-ID", 2723 "potentialAction": { 2724 "@type": "SearchAction", 2725 "target": "https://koitigan.com/?s={search_term_string}", 2726 "query-input": "required name=search_term_string" 2727 } 2728 }, 2729 { 2730 "@type": "SoftwareApplication", 2731 "@id": "https://koitigan.com/#app", 2732 "name": "KOITOTO", 2733 "applicationCategory": "GameApplication", 2734 "operatingSystem": "Android, iOS, Windows", 2735 "offers": { "@type": "Offer", "price": "0", "priceCurrency": "IDR" }, 2736 "aggregateRating": { "@type": "AggregateRating", "ratingValue": 4.9, "ratingCount": 62595 } 2737 } 2738 ] 2739 } 2740 </script>
2740 2741 2742 <div id="shopify-section-Product" class="shopify-section product-section mt-0"><link href="https://asset-jko.b-cdn.net/footer-warna.css" rel="stylesheet" type="text/css" media="all" /> 2743 2744 2745 <style> 2746 .bg-card { 2747 background-color: #000000; 2748 } 2749 </style> 2750 2751 <!-- /templates/product.liquid --> 2752 2753 2754 <!-- <div itemscope itemtype="http://schema.org/Product"> --> 2755 2756 2757 <div class="product-standing-flower" data-product-type="flowerBoard"> 2758 <meta itemprop="url" content="https://koitigan.com/"> 2759 <meta itemprop="image" content="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg"> 2760 2761 2762 2763 <input id="data-sku" type="hidden" value="GOJSTRU2598"> 2764 <div class="product-single" style="background-image: url(https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg); background-attachment: fixed;"> 2765 <div id="product-top" class="container"> 2766 <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;"> 2767 <div id="product-image" class="col-lg-7 text-center"> 2768 <div class="product-image"> 2769 <div class="row no-gutters"> 2770 2771 <div id="product-featured-image" class="row w-100"> 2772 2773 <div id="thumb-image-product" class="col-lg-2 col-12 d-none d-lg-block"> 2774 2775 <div class="swiper-container gallery-thumbs" style="min-height: 500px"> 2776 <ul class="list-unstyled slider swiper-wrapper slider-nav ProductThumbs thumbnails" id="ProductThumbsx"> 2777 2778 <li class="swiper-slide" data-type="image"> 2779 <a 2780 href="files/Blossom-Shine-WM.jpg" 2781 data-standard="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2782 data-image="files/Blossom-Shine-WM.jpg" 2783 data-position="1" 2784 class="product-single__thumbnail" 2785 > 2786 <img 2787 class="lazyload w-100" 2788 src="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2789 alt="KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang" 2790 width="" 2791 height="" 2792 > 2793 </a> 2794 </li> 2795 2796 2797 2798 2799 <li class="swiper-slide" data-type="image"> 2800 <a 2801 href="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2802 data-standard="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2803 data-image="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2804 data-position="2" 2805 class="product-single__thumbnail" 2806 > 2807 <img 2808 class="lazyload w-100" 2809 src="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2810 alt="KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang" 2811 width="" 2812 height="" 2813 > 2814 </a> 2815 </li> 2816 2817 2818 2819 2820 <li class="swiper-slide" data-type="image"> 2821 <a 2822 href="files/Blossom-Shine_3-WM.jpg" 2823 data-standard="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2824 data-image="files/Blossom-Shine_3-WM.jpg" 2825 data-position="3" 2826 class="product-single__thumbnail" 2827 > 2828 <img 2829 class="lazyload w-100" 2830 src="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2831 alt="KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang" 2832 width="" 2833 height="" 2834 > 2835 </a> 2836 </li> 2837 2838 2839 2840 2841 <li class="swiper-slide" data-type="image"> 2842 <a 2843 href="files/Blossom-Shine_4.jpg" 2844 data-standard="https://imgmahasuhu.io/images/2026/08/21/21-cara-akse
2844s.jpeg" 2845 data-image="files/Blossom-Shine_4.jpg" 2846 data-position="4" 2847 class="product-single__thumbnail" 2848 > 2849 <img 2850 class="lazyload w-100" 2851 src="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2852 alt="KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang" 2853 width="" 2854 height="" 2855 > 2856 </a> 2857 </li> 2858 2859 2860 2861 </ul> 2862 </div> 2863 2864 </div> 2865 2866 <div 2867 id="featured-image-product" 2868 class="col-lg-10 col-12 d-none d-lg-block" 2869 > 2870 <div class="swiper-container gallery-top"> 2871 <div class="swiper-slide product-single__image"> 2872 2873 <div class="product-single__photos slider slider-for" id="ProductPhoto"> 2874 2875 2876 <div class="easyzoom easyzoom--overlay easyzoom--with-thumbnails"> 2877 <a href="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg"> 2878 <img 2879 src="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2880 alt="KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang" 2881 id="ProductPhotoImg" 2882 class="lazyload" 2883 > 2884 2885 </a> 2886 </div> 2887 </div> 2888 2889 </div> 2890 <div class="swiper-slide product-single__video" style="display: none"> 2891 <video 2892 src="https://cdn.shopify.com/videos/c/vp/05d379ea115d41c2bd0f7d08b1496bd9/05d379ea115d41c2bd0f7d08b1496bd9.HD-1080p-7.2Mbps-24002195.mp4" 2893 playsinline 2894 loop 2895 muted 2896 ></video> 2897 </div> 2898 </div> 2899 </div> 2900 </div> 2901 2902 <div id="featured-image-product2" class="col-12 d-lg-none"> 2903 <div class="swiper-container gallery-mobile"> 2904 <ul class="swiper-wrapper"> 2905 <li class="swiper-slide img"> 2906 2907 <img 2908 class="swiper-lazy" 2909 src="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2910 data-src="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2911 alt="KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang" 2912 width="" 2913 height="" 2914 > 2915 2916 </li> 2917 2918 2919 <li class="swiper-slide img"> 2920 2921 <img 2922 class="swiper-lazy" 2923 src="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2924 data-src="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2925 alt="KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang" 2926 width="" 2927 height="" 2928 > 2929 2930 </li> 2931 2932 2933 <li class="swiper-slide img"> 2934 2935 <img 2936 class="swiper-lazy" 2937 src="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2938 data-src="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2939 alt="KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang" 2940 width="" 2941 height="" 2942 > 2943 2944 </li> 2945 2946 2947 <li class="swiper-slide img"> 2948 2949 <img 2950 class="swiper-lazy" 2951 src="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2952 data-src="https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg" 2953 alt="KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang" 2954 width="" 2955 height="" 2956 > 2957 2958 </li> 2959 2960 2961 </ul> 2962 2963 <div class="swiper-button-prev"><svg class="icon icon-chevron-left" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" 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> 2964 <div class="swiper-button-next"><svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="7" height="10" viewB
2964ox="0 0 7 10" fill="none"> 2965 <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"/> 2966 </svg></div> 2967 2968 <!-- Add Pagination --> 2969 <div class="swiper-pagination"></div> 2970 2971 </div> 2972 </div> 2973 2974 <div class="product-m-pageleb-video col-12 text-center d-lg-none"> 2975 <!-- product video --> 2976 <style> 2977 .view-video{display:block; margin:auto; padding:5px 10px;font-size:16px;font-weight:bold;border:2px solid #ffffff;background:#fff;} 2978 .view-video .icon-play{fill:#ffffff;vertical-align: middle;} 2979 .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;} 2980 .close-video{position:absolute;right:9px; top:8%;z-index:2;padding:5px;} 2981 .close-video .icon{width:30px;height:30px;} 2982 /*responsive iframe */ 2983 .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);} 2984 .video-container iframe {position: absolute;top:60%;left: 0;width: 100%;height: 100%;} 2985 2986 .youtube { 2987 background-color: #000; 2988 margin-bottom: 30px; 2989 position: relative; 2990 padding-top: 56.25%; 2991 overflow: hidden; 2992 cursor: pointer; 2993 width: 100%; 2994 } 2995 .swiper-slide .youtube { 2996 max-width: 480px; 2997 } 2998 .youtube img { 2999 width: 100%; 3000 top: -16.82%; 3001 left: 0; 3002 opacity: 0.7; 3003 } 3004 .youtube .play-button { 3005 width: 90px; 3006 height: 60px; 3007 background-color: #333; 3008 box-shadow: 0 0 30px rgba( 0,0,0,0.6 ); 3009 z-index: 1; 3010 opacity: 0.8; 3011 border-radius: 6px; 3012 } 3013 .youtube .play-button:before { 3014 content: ""; 3015 border-style: solid; 3016 border-width: 15px 0 15px 26.0px; 3017 border-color: transparent transparent transparent #fff; 3018 } 3019 .youtube img, 3020 .youtube .play-button { 3021 cursor: pointer; 3022 } 3023 .youtube img, 3024 .youtube iframe, 3025 .youtube .play-button, 3026 .youtube .play-button:before { 3027 position: absolute; 3028 } 3029 .youtube .play-button, 3030 .youtube .play-button:before { 3031 top: 50%; 3032 left: 50%; 3033 transform: translate3d( -50%, -50%, 0 ); 3034 } 3035 .youtube iframe { 3036 height: 100%; 3037 width: 100%; 3038 top: 0; 3039 left: 0; 3040 } 3041 </style> 3042 3043 3044 </div> 3045 </div> 3046 3047 <div class="product-desc-add position-relative d-none d-lg-block m-0"> 3048 3049 </div> 3050 3051
3051<script> 3052 if ($(window).width() < 991) { 3053 var direction = 'horizontal' 3054 } else { 3055 var direction = 'vertical' 3056 $(".gallery-thumbs").height($("#ProductPhotoImg").height()) 3057 } 3058 var swiper = new Swiper('.gallery-thumbs', { 3059 3060 direction, 3061 slidesPerView: 4.5, 3062 spaceBetween: 12, 3063 navigation: { 3064 nextEl: '.swiper-button-next', 3065 prevEl: '.swiper-button-prev', 3066 } 3067 }); 3068 3069 var swiper = new Swiper('.gallery-mobile', { 3070 //loop: true, 3071 lazy: true, 3072 speed: 300, 3073 resistance : true, 3074 resistanceRatio : 0, 3075 freeModeMomentumRatio : 0.45, 3076 freeModeMomentumVelocityRatio : 1.5, 3077 navigation: { 3078 nextEl: '.swiper-button-next', 3079 prevEl: '.swiper-button-prev', 3080 }, 3081 pagination: { 3082 el: '.swiper-pagination' 3083 }, 3084 useCSS3Transforms: false, 3085 loop: false, 3086 on: { 3087 init: function () { 3088 console.log('swiper initialized'); 3089 var currentVideo = $("[data-swiper-slide-index=" + this.realIndex + "]").find("video"); 3090 currentVideo.trigger('play'); 3091 }, 3092 }, 3093 }); 3094 3095 /* GET ALL VIDEOS */ 3096 var sliderVideos = $(".swiper-slide video"); 3097 3098 /* SWIPER API - Event will be fired after animation to other slide (next or previous) */ 3099 swiper.on('slideChange', function () { 3100 console.log('slide changed'); 3101 /* stop all videos */ 3102 sliderVideos.each(function( index ) { 3103 this.currentTime = 0; 3104 }); 3105 3106 /* SWIPER GET CURRENT AND PREV SLIDE (AND The VIDEO INSIDE) */ 3107 var prevVideo = $(`[data-swiper-slide-index="${this.previousIndex}]"`).find("video"); 3108 var currentVideo = $(`[data-swiper-slide-index="${this.realIndex}"]`).find("video"); 3109 prevVideo.trigger('stop'); 3110 currentVideo.trigger('play'); 3111 }); 3112 3113 3114 $("[data-video]").click(function(){ 3115 const file = $(this).data("video") 3116 $(".product-single__video").show() 3117 $(".product-single__image").hide() 3118 $(".product-single__video").find("video").attr("src", file) 3119 $(".product-single__video").find("video")[0].play(); 3120 }) 3121 $("[data-image]").click(function(){ 3122 $(".product-single__video").hide() 3123 $(".product-single__image").show() 3124 $(".product-single__video").find("video")[0].pause(); 3125 }) 3126 3127 $("#product-image .swiper-slide").each(function(){ 3128 let width = $(this).width() 3129 $(this).height(width) 3130 }) 3131 3132 $(window).resize(function() { 3133 $("#product-image .swiper-slide").each(function(){ 3134 let width = $(this).width() 3135 $(this).height(width) 3136 }) 3137 }) 3138 </script>
3138 3139 3140 </div> 3141 3142 3143 3144 3145 3146 3147 3148 3149 <style> 3150 .c-pdp-product-info__service--active { 3151 font-size: 12px; 3152 padding-left: 10px; 3153 text-align: left; 3154 max-width: 550px; 3155 margin: auto; 3156 } 3157 .c-pdp-product-info__service--active li { 3158 list-style: disc; 3159 } 3160 .c-pdp-product-info { 3161 background-color: #f5f5f5; 3162 padding: 12px; 3163 margin: 0; 3164 } 3165 .freeship em { 3166 font-style: italic; 3167 font-size: 12px !important; 3168 } 3169 3170 3171 </style> 3172 3173
3173<script> 3174 $(document).ready(function(){ 3175 if ( $(".c-pdp-product-info__service li").length == 1 ) { 3176 $(".c-pdp-product-info__service").addClass("no-bullet"); 3177 $(".c-pdp-product-info__service li").addClass("no-bullets"); 3178 } 3179 }); 3180 </script>
3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 </div> 3194 <div id="product-meta" class="col-lg-5 p-0"> 3195 <div class="product-meta"> 3196 <style> 3197 .product-meta--review {margin-top:10px} 3198 .freeship * {font-size: 14px !important;font-style: normal;} 3199 </style> 3200 <h1 itemprop="name" 3201 class="mb-2" 3202 style=" 3203 color:#ffffff; 3204 text-shadow: 3205 0 0 5px #ff0000, 3206 0 0 10px #e60002, 3207 0 0 20px #e60002, 3208 2px 2px 4px #9e0000, 3209 -1px -1px 2px #ff3b3b; 3210 font-weight:bold; 3211 "> 3212 KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang 3213</h1> 3214 3215 <div itemprop="offers" itemscope itemtype="http://schema.org/Offer"> 3216 <meta itemprop="priceCurrency" content="IDR"> 3217 3218 <link itemprop="availability" href="https://schema.org/InStock"> 3219
3219<script 3220 type="text/javascript" 3221 src="//platform-api.sharethis.com/js/sharethis.js#property=5acdc0aa3ef3c0001396fd50&product=custom-share-buttons" 3222 async="async" 3223 ></script>
3223 3224 3225 3226 3227 3228 <span class="visually-hidden">Translation missing: en.products.general.regular_price</span> 3229 3230 <span class="visually-hidden">Translation missing: en.products.general.sale_price</span> 3231 3232 <div class="row no-gutters mb-3"> 3233 <span 3234 id="ProductPrice" 3235 class="h2 ProductPrice" 3236 itemprop="price" 3237 content="835000" style="color: #ffffff;" 3238 > 3239 Rp 10.000 3240 </span> 3241 <div class="discount-product-detail"> 3242 <p id="ComparePrice" class="ComparePrice mt-2 mt-lg-0"> 3243 Rp 35.000 3244 </p> 3245 <span class=" tag-discount"> 3246 3247 3248 <span id="newDiscount" class="product-tag persentase-discount hide"> 3249 (90%) 3250 </span><br> 3251 3252 </span> 3253 </div> 3254 </div> 3255 3256 <div class="row no-gutters meta-sds"> 3257 <div class="col-12 mb-2 mb-lg-0 stock-info"> 3258 3259 3260 <span 3261 id="ProductStock-Product" 3262 class="product-single__stock mb-2 hide" 3263 > 3264 3265 3266 3267 3268 Barang dikirim pada 3269 3270 3271 3272 </span> 3273 3274 <style> 3275 .short-desc-desktop { 3276 margin-bottom: 2rem; 3277 color: white; 3278 } 3279 .short-desc ul li:nth-child(n + 4) { 3280 display: none; 3281 } 3282 .short-desc ul li.showList:nth-child(n + 4) { 3283 display: list-item; 3284 } 3285 label.more { 3286 display: none; 3287 } 3288 label.more.showMe { 3289 display: block; 3290 font-size: 12px; 3291 text-transform: uppercase; 3292 font-weight: 700; 3293 cursor: pointer; 3294 } 3295 </style> 3296 3297 <div class="short-desc-desktop d-none d-lg-block"> 3298 <div class="short-desc"> 3299 3300 <p style="text-align: justify;">KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat.</p> 3301 3302 </div> 3303 <label class="more">Show More â</label>
3304 </div><br> 3305 3306 3307
3307<script> 3308 var liCount; 3309 $(document).ready(function () { 3310 $(".short-desc ul").each(function() { 3311 liCount = $(this).children("li").length; 3312 if (liCount > 3) { 3313 $(this).parent(".short-desc").next(".more").addClass("showMe"); 3314 } 3315 }); 3316 3317 $(".more").click(function () { 3318 //$(".short-desc").find("li").addClass("showList"); 3319 // $(this).hide(); 3320 $("#product-desc").find("ul").show() 3321 $('html, body').animate({ 3322 scrollTop: $("#product-desc").offset().top - 250 3323 }, 2000); 3324 $("#product-desc").css("height","auto"); 3325 $("#more_content").remove(); 3326 $(".product-spec").append("<div id='less_content' class='readmore'><span class='less_content'>Less</span></div>") 3327 }); 3328 }); 3329 </script>
3329 3330 3331 3332 </div> 3333 </div> 3334 3335 <div id="purchaseProduct"> 3336 3337 3338 3339 3340 <style> 3341 .variant-metafield { 3342 display: block!important; 3343 width: 1px; 3344 padding: 0; 3345 border-color: #fff; 3346 } 3347 .select2-results__option[aria-disabled] { 3348 display: none; 3349 } 3350 3351 .towel-bordir { 3352 width: 100%; 3353 display: flex; 3354 align-items: center; 3355 justify-content: space-around; 3356 } 3357 </style> 3358 3359 3360 3361 3362
3362<script> 3363 3364 3365 </script>
3365 3366 3367 3368 3369 3370 3371 3372 <select 3373 name="id[]" 3374 id="productSelect" 3375 class="product-single__variants ignore hide hide" 3376 > 3377 3378 3379 3380 <option 3381 3382 selected="selected" 3383 3384 data-sku="GOJSTRU2598" 3385 value="44083045826775" 3386 > 3387 Default Title 3388 </option> 3389 3390 3391 3392 </select> 3393 3394
3394<script src="//outerbloom.com/cdn/shop/t/138/assets/jquery.magnific-popup.min.js?v=184369421263510081681752652422" type="text/javascript"></script>
3394 3395 3396
3396<script> 3397 $('.size-chart-open-popup').magnificPopup({ 3398 type:'inline', 3399 midClick: true 3400 }); 3401 </script>
3401 3402 3403 3404 3405 3406 <div class="upload-image-preview"> 3407 3408 3409 3410 3411 3412 <style> 3413 .file-dnd * { 3414 margin: 0; 3415 padding: 0; 3416 box-sizing: border-box; 3417 } 3418 .file-dnd { 3419 width: 100%; 3420 height: 250px; 3421 border: 1px solid #ddd; 3422 border-radius: 10px; 3423 padding: 15px; 3424 display: flex; 3425 flex-direction: column; 3426 gap: 10px; 3427 /* box-shadow: 0px 2px 10px 2px rgba(0,0,0,0.05); */ 3428 margin: auto; 3429 } 3430 .file-dnd input { 3431 display: none; 3432 } 3433 .file-dnd .before-upload { 3434 border: 1px dashed #888; 3435 flex: 1; 3436 border-radius: 5px; 3437 display: flex; 3438 justify-content: center; 3439 align-items: center; 3440 text-align: center; 3441 cursor: pointer; 3442 } 3443 .file-dnd .before-upload > div { 3444 display: flex; 3445 flex-direction: column; 3446 align-items: center; 3447 gap: 8px; 3448 } 3449 .file-dnd .before-upload > div h4 { 3450 width: 150px; 3451 } 3452 .file-dnd .before-upload > div p { 3453 font-size: 12px !important; 3454 color: #555; 3455 } 3456 .file-dnd.active .before-upload { 3457 border: 1px solid #5750d9; 3458 background-color: #f5f5ff; 3459 } 3460 .file-dnd .after-upload { 3461 position: relative; 3462 display: none; 3463 } 3464 .file-dnd .after-upload img { 3465 width: 100%; 3466 border-radius: 5px; 3467 max-height: 180px; 3468 object-fit: contain; 3469 display: block; 3470 } 3471 .file-dnd .after-upload .clear-btn { 3472 position: absolute; 3473 top: 10px; 3474 right: 10px; 3475 background: rgba(0, 0, 0, 0.5); 3476 width: 15px; 3477 height: 15px; 3478 text-align: center; 3479 line-height: 15px; 3480 border-radius: 50%; 3481 color: #fff; 3482 cursor: pointer; 3483 font-size: 14px; 3484 } 3485 </style> 3486 3487 <div 3488 class="file-dnd mb-3" 3489 3490 style="display: none" 3491 3492 > 3493 <label for="upload-photo">Upload your Photo:</label> 3494 <input type="file" id="upload-photo" accept="image/*"> 3495 <input type="hidden" data-properties="Photo"> 3496 <div class="before-upload"> 3497 <div> 3498 <svg id="surface1" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="33.053" height="41.719" viewBox="0 0 33.053 41.719"> 3499 <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> 3500 <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> 3501 <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> 3502 </svg> 3503 3504 <h4>Drag & Drop Photo file or Browse</h4> 3505 <p>Supports: JPEG, PNG, GIF, TIFF</p> 3506 </div> 3507 </div> 3508 <div class="after-upload"> 3509 <div class="clear-btn">×</div> 3510 <img src="" width="" height=""> 3511 </div> 3512 </div> 3513
3513<script> 3514 function applyDndFile(el) { 3515 const parent = document.querySelector(".file-dnd") 3516 const beforeUploadEl = el.querySelector(".before-upload") 3517 const afterUploadEl = el.querySelector(".after-upload") 3518 const inputFile = el.querySelector("input[type=file]") 3519 const imagePreview = el.querySelector(".after-upload img") 3520 const clearBtn = el.querySelector(".after-upload .clear-btn") 3521 const inputProps = parent.querySelector("[data-properties]"); 3522 3523 async function upload(name, uri, type) { 3524 try { 3525 const filename = name.split('.')[0] 3526 let formData = new FormData(); 3527 formData.append("file", uri); 3528 const response = await fetch(`${host}/upload?name=${filename}&dir=gift&type=${type}`, { 3529 method: "POST", 3530 body: formData 3531 }) 3532 if(response) { 3533 const res = await response.json() 3534 return res 3535 } 3536 } catch(err){ 3537 console.log(err) 3538 } 3539 } 3540 3541 function showImagePreview(img) { 3542 if(img){ 3543 const blobUrl = URL.createObjectURL(img) 3544 imagePreview.src = blobUrl 3545 afterUploadEl.style.display = "block" 3546 beforeUploadEl.style.display = "none" 3547 } 3548 } 3549 3550 beforeUploadEl.addEventListener("click", (e) => { 3551 e.preventDefault() 3552 inputFile.click() 3553 }) 3554 3555 inputFile.addEventListener("change", async (e) => { 3556 e.preventDefault() 3557 showImagePreview(e.target.files[0]) 3558 var uploadData = await upload(e.target.files[0].name, e.target.files[0], e.target.files[0].type) 3559 inputProps.value = uploadData?.url 3560 }) 3561 3562 clearBtn.addEventListener("click", (e) => { 3563 afterUploadEl.style.display = "none" 3564 beforeUploadEl.style.display = "flex" 3565 inputProps.value = "" 3566 }) 3567 3568 beforeUploadEl.addEventListener("dragover", (e) => { 3569 e.preventDefault() 3570 el.classList.add("active") 3571 }) 3572 3573 beforeUploadEl.addEventListener("dragleave", (e) => { 3574 e.preventDefault() 3575 el.classList.remove("active") 3576 }) 3577 3578 beforeUploadEl.addEventListener("drop", async (e) => { 3579 e.preventDefault() 3580 el.classList.remove("active") 3581 showImagePreview(e.dataTransfer.files[0]) 3582 var uploadData = await upload(e.dataTransfer.files[0].name, e.dataTransfer.files[0], e.dataTransfer.files[0].type) 3583 console.log(uploadData) 3584 inputProps.value = uploadData?.url 3585 }) 3586 } 3587 3588 applyDndFile(document.querySelector(".file-dnd")) 3589 3590 $(document).ready(function(){ 3591 $(".variant-swatch").change(function(){ 3592 const v = $(this).val().toLowerCase() 3593 const list = ["photo", "custom one side", "custom two side", "small", "big"] 3594 if(list.some(item => v.includes(item))) return $(".file-dnd").show() 3595 $(".file-dnd").hide() 3596 $(".file-dnd").find("[data-properties]").val("") 3597 $(".after-upload").hide() 3598 $(".before-upload").css("display", "flex") 3599 }) 3600 }) 3601 </script>
3601 3602 3603 </div> 3604 3605 3606 <div class="delivery-city mb-4"> 3607 <a href="https://amp.koitoto-tigan.com/"> 3608 <center> 3609 <img src="https://imagekoi.io/images/2026/03/08/gifkoi_sultan.gif" alt="logo-daftar" style="width: 260px; margin-top: -20px; border-radius: 22px;"> 3610 </center> 3611 </a><br> 3612 <h4 class="fw-600 text-uppercase mb-15" 3613 style=" 3614 text-align:center; 3615 color:#ffffff; 3616 text-shadow: 3617 0 0 5px #ff0000, 3618 0 0 10px #e60002, 3619 0 0 20px #e60002, 3620 2px 2px 4px #9e0000, 3621 -1px -1px 2px #ff3b3b; 3622 "> 3623 KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang 3624</h4> 3625 </h4> 3626 <div class="row justify-content-between m-0"> 3627 <select id="cities" class="form-control select-search" required> 3628 <option value=""> 3629 KOITOTO hanya menyediakan link resmi & alternatif aman melalui domain terverifikasi ini. Hindari link palsu/phishing! 3630 </option> 3631 </select> 3632 </div> 3633</div> 3634 3635 <style> 3636 @media (max-width: 768px) { 3637 .select2-search__field { 3638 pointer-events: none !important; 3639 } 3640 3641 .select2-search { 3642 display: none !important; 3643 } 3644 } 3645 </style> 3646 3647
3647<script> 3648 $(document).ready(function() { 3649 // Check if mobile 3650 if (window.innerWidth <= 768) { 3651 // When cities select2 opens on mobile, remove focus from search 3652 $('#cities').on('select2:open', function() { 3653 setTimeout(function() { 3654 $('.select2-search__field').blur(); 3655 $('.select2-search__field').prop('readonly', true); 3656 }, 100); 3657 }); 3658 } 3659 }); 3660 </script>
3660 3661 3662 <style> 3663 .icon-img-footer { 3664 width: 80px; 3665 padding: 0px 5px; 3666 } 3667 @media (min-width: 768px) { 3668 .icon-img-footer { 3669 width: 120px; 3670 } 3671 } 3672 @media (min-width: 992px) { 3673 .icon-img-footer { 3674 width: 120px; 3675 } 3676 } 3677 3678 3679 </style> 3680 <div id="row-delivery-date" class="row m-0 mb-3"> 3681 <h4 class="fw-600 text-uppercase col-12 p-0 mb-15" 3682 style=" 3683 text-align:center; 3684 color:#ffffff; 3685 text-shadow: 3686 0 0 5px #e60002, 3687 0 0 10px #e60002, 3688 2px 2px 4px #9e0000, 3689 -1px -1px 2px #ff3b3b; 3690 "> 3691 ð AnakBaik21 3692</h4> 3693 <div id="deliveryDate" class="m-0"></div> 3694 <div id="deliveryDateFull"> 3695 <div class=""> 3696 <input 3697 type="text" 3698 id="full-date" 3699 class="date-full calendarbutton btn steps-btn btn-date-time mb-0" 3700 value="Full Calendar" 3701 > 3702 <label for="full-date"><svg version="1.1" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="32" height="32" viewBox="0 0 32 32"> 3703 <title>icon-arrow-right</title> 3704 <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> 3705 </svg></label> 3706 </div> 3707 <button class="btnChangeDeliveryDate hide">Change Delivery Date</button> 3708 </div> 3709 <div class="form-group p-0"> 3710 <input type="text" id="propDeliveryDate" required class="hide"> 3711 </div> 3712 </div> 3713 3714 3715 <div id="row-delivery-time" class="row m-0 mb-3"> 3716 <h4 class="text-center fw-600 text-uppercase col-12 mb-15" 3717 style=" 3718 text-align:center; 3719 color:#ffffff; 3720 text-shadow: 3721 0 0 5px #ff0000, 3722 0 0 10px #e60002, 3723 0 0 20px #e60002, 3724 2px 2px 4px #9e0000, 3725 -1px -1px 2px #ff3b3b; 3726 "> 3727 KOITOTO 3728</h4> 3729 <div id="deliveryTime" class="d-flex w-100 m-0"></div> 3730 <div class="form-group p-0"> 3731 <input type="text" id="propDeliveryTime" class="hide" required> 3732 </div> 3733 </div> 3734 3735 3736 3737 3738 3739 <div id="personalizeBtn"> 3740 3741 3742 3743 3744 <button 3745 class="btn text-uppercase w-100 fw-400" 3746 3747 3748 3749 > 3750 3751 customize your flower board 3752 3753 </button> 3754 <div class="button-share-wishlist d-flex justify-content-around mt-3"> 3755 <div class="button-share text-center"> 3756 <p id="shareButton" class="d-flex gap-2"><span>Share</span><svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="15" height="13" viewBox="0 0 15 13" fill="none"> 3757 <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"/> 3758 </svg> 3759 </p> 3760 </div> 3761 <div class="button-wishlist text-center"> 3762 <p id="wishButton" class="d-flex gap-2 wishlist-toggle" data-product-handle="blossom-shine"><span>Wishlist</span><svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="16" height="15" viewBox="0 0 16 15" fill="none"> 3763 <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
37631.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"/> 3764 </svg> 3765 <!-- 3766 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="34" height="30" viewBox="0 0 34 30" fill="none"> 3767 <path d="M32.8333 9.23082C32.8333 4.51916 29.0142 0.699158 24.3025 0.699158C21.2 0.699158 18.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"/> 3768 </svg> 3769 --> 3770 </p> 3771 </div> 3772 </div> 3773 </div> 3774 </div> 3775 <div class="purchasePopup purchasePopupSpotify" style="display: none;"> 3776 <div class="purchaseArea"> 3777 <div class="sectionPurchase sectionPurchaseSpotify"> 3778 <div class="wrapperPurchase"> 3779 <div class="headerPurchase"> 3780 <h3>personalize spotify photo print</h3> 3781 <a class="close-purchase-popup"> 3782 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="18" height="18" viewBox="0 0 18 18" fill="none"> 3783 <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> 3784 </svg> 3785 </a> 3786 </div> 3787 <div class="contentPurchase"> 3788 <div class="spotifyAddons"></div> 3789 </div> 3790 3791 <div class="purchase-button btn-addon row m-0" style="display: none;"> 3792 <div class="col-12 col-lg-2 text-left mb-2 p-0"> 3793 <button class="back-purchase-button back-addon text-uppercase"> 3794 <svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif"> 3795 <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> 3796 </svg> 3797 <span>Back</span> 3798 </button> 3799 </div> 3800 <div class="col-12 col-lg-10 text-right" style="display: flex;justify-content: end;gap: 20px;"> 3801 <button class="btn next-purchase-button next-addon text-uppercase"> 3802 <span>continue without add-ons</span> 3803 </button> 3804 </div> 3805 </div> 3806 </div> 3807 </div> 3808 </div> 3809 </div> 3810 3811 <style> 3812 #PBarNextFrameWrapper { 3813 display: none; 3814 } 3815 #backgroundPopup { 3816 display: none; 3817 position: fixed; 3818 _position: absolute; 3819 height: 100%; 3820 width: 100%; 3821 top: 0; 3822 left: 0; 3823 background: rgb(117 117 117 / 24%); 3824 z-index: 1; 3825 } 3826 .sectionPurchase { 3827 height: 100%; 3828 position: relative; 3829 max-width: 1344px; 3830 background-color: #fff; 3831 padding: 0; 3832 overflow: hidden; /* Changed from auto to hidden */ 3833 display: flex; 3834 flex-direction: column; 3835 } 3836 .sectionPurchase.purchaseAddonSpotify { 3837 max-width: 1070px!important; 3838 max-height: 765px!important; 3839 } 3840 .sectionPurchaseBoard { 3841 max-width: 872px!important; 3842 max-height: 821px!important; 3843 } 3844 .purchaseAddonSpotify .btn-action { 3845 position: absolute; 3846 bottom: 0; 3847 left: 0; 3848 width: 100%; 3849 display: flex; 3850 gap: 10px; 3851 } 3852 .wrapperPurchase { 3853 position: relative; 3854 height: 100%; 3855 display: flex; 3856 flex-direction: column; 3857 } 3858 3859 /* New styles for scrollable content and sticky button */ 3860 .purchase-content { 3861 flex: 1; 3862 overflow-y: auto; 3863 overflow-x: hidden; 3864 padding: 20px; 3865 } 3866 3867 .purchase-button-wrapper { 3868 position: sticky; 3869 bottom: 0; 3870 background-color: #fff; 3871 border-top: 1px solid #e0e0e0; 3872 padding: 15px 0; 3873 margin-top: auto; 3874 z-index: 10; 3875 } 3876 3877 .purchasePopup { 3878 display: none; 3879 position: fixed; 3880 background: rgb(117 117 117 / 24%); 3881 z-index: 999; 3882 padding: 40px; 3883 font-size: 13px; 3884 top: 0; 3885 left: 0; 3886 width: 100%; 3887 height: 100%; 3888 } 3889 .popupPurchaseClose{ 3890 font-size:14px; 3891 line-height:14px; 3892 right:45px; 3893 top:45px; 3894 position:absolute; 3895 color:#6fa5fd; 3896 font-weight:700; 3897 display:block; 3898 cursor: pointer; 3899 } 3900 3901 .headerPurchase { 3902 margin-bottom: 30px; 3903 display: flex; 3904 justify-content: space-between; 3905 } 3906 3907 .headerPurchase h3 { 3908 font-size: 16px; 3909 text-transform: uppercase; 3910 } 3911 3912 .sectionPurchaseBoard .headerPurchase { 3913 margin-bottom: 15px; 3914 } 3915 3916 .sectionPurchaseBoard .formAddressPurchase { 3917 padding-top: 0; 3918 } 3919 3920 .purchaseArea { 3921 position: relative; 3922 height: 100%; 3923 } 3924 3925 .purchaseArea h4 { 3926 width: 100%; 3927 font-size: 12px; 3928 font-weight: 600; 3929 margin-bottom: 10px; 3930 text-transform: uppercase; 3931 } 3932 3933 .menuPurchase { 3934 margin-bottom: 30px; 3935 } 3936 3937 .menuPurchase ul { 3938 list-style-type: none; 3939 margin: 0; 3940 } 3941 3942 .menuPurchase ul li { 3943 display: inline-block; 3944 border: 1px solid #ffffff; 3945 padding: 5px 20px; 3946 margin-right: 5px; 3947 margin-bottom: 10px; 3948 font-size: 12px; 3949 font-weight: 400; 3950 } 3951 3952 .menuPurchase ul li:hover, .menuPurchase ul li.selected { 3953 background-color: #ffffff; 3954 color: #ffffff; 3955 } 3956 3957 .contentPurchase h5 { 3958 font-size: 12px; 3959 margin-bottom: 10px; 3960 font-weight: 400; 3961 overflow: hidden; 3962 } 3963 3964 /* Card */ 3965 3966 #itemCards { 3967 max-height: 430px; 3968 overflow: auto; 3969 } 3970 3971 .item-cards { 3972 width: 100%; 3973 } 3974 .item-card.selected { 3975 border: 1px solid #ffffff; 3976 } 3977 .item-card:hover { 3978 border: 1px solid #C4C4C4; 3979 } 3980 .item-cards .item-card { 3981 position: relative; 3982 width: calc(33% - 10px); 3983 max-width: calc(33% - 10px); 3984 flex: 0 0 calc(33% - 10px); 3985 margin-bottom: 20px; 3986 } 3987 .item-cards .item-card label, 3988 .item-addons .item-addon label { 3989 position: absolute; 3990 left: 0; 3991 width: 100%; 3992 height: 100%; 3993 } 3994 .item-cards .item-card .card-image img, 3995 .item-addons .item-addon .card-image img { 3996 display: block; 3997 width: 100%; 3998 } 3999 .item-card .card-meta, 4000 .item-addon .card-meta { 4001 padding: 10px 5px 5px; 4002 } 4003 .item-card.selected .card-meta, 4004 .item-addon.selected .card-meta, 4005 .item-card.selected .card-qty { 4006 background-color: #ffffff; 4007 color: #fff; 4008 visibility: visible!important; 4009 } 4010 .item-card:hover .card-meta, 4011 .item-addon:hover .card-meta, 4012 .item-card:hover .card-qty { 4013 background-color: #C4C4C4; 4014 color: #fff; 4015 visibility: visible!important; 4016 } 4017 .item-cards .item-card p, 4018 .item-addons .item-addon p { 4019 font-size: 12px !important; 4020 margin: 0; 4021 font-weight: 600; 4022 } 4023 .item-card .card-meta input, 4024 .item-addon .card-meta input { 4025 display: none; 4026 } 4027 .item-cards .item-card h5, 4028 .item-addons .item-addon h5 { 4029 text-transform: uppercase; 4030 max-height: 35px; 4031 } 4032 4033 @media (max-width: 768px) { 4034 .item-cards .item-card {
4035 width: calc(50% - 10px); 4036 max-width: calc(50% - 10px); 4037 flex: 0 0 calc(50% - 10px); 4038 margin-bottom: 0; 4039 } 4040 } 4041 4042 .card-qty { 4043 display: flex; 4044 padding: 5px; 4045 visibility: hidden; 4046 background-color: #fff !important; 4047 z-index: 999; 4048 } 4049 .card-qty a { 4050 border-width: 1px; 4051 width: 30%; 4052 cursor: pointer; 4053 text-align: center; 4054 align-self: center; 4055 height: 28px; 4056 display: block; 4057 position: relative; 4058 } 4059 .card-qty a svg { 4060 position: absolute; 4061 top: 50%; 4062 left: 50%; 4063 transform: translate(-50%, -50%); 4064 text-align: center; 4065 } 4066 input.btn-qty { 4067 border-width: 0px; 4068 border-radius: 0; 4069 background-color: #fff; 4070 -webkit-appearance: none; 4071 box-shadow: none !important; 4072 -webkit-box-shadow: none !important; 4073 -moz-box-shadow: none!important; 4074 width: 40%; 4075 border-left: 1px solid #c4c4c4; 4076 border-right: 1px solid #c4c4c4; 4077 padding: 0; 4078 } 4079 4080 .sectionPurchaseBoard #itemAddons .item-card { 4081 width: calc(20% - 15px); 4082 max-width: calc(20% - 15px); 4083 flex: 0 0 calc(20% - 15px); 4084 } 4085 4086 .purchase-button { 4087 width: 100%; 4088 padding: 0; /* Reset padding as it's now handled by wrapper */ 4089 margin: 0; 4090 } 4091 4092 .sectionPurchaseBoard .purchase-button { 4093 margin-top: 0 !important; /* Reset margin */ 4094 } 4095 4096 .back-purchase-button, .back-spotify { 4097 width: 139px; 4098 border: 1px solid; 4099 height: 43px; 4100 } 4101 .purchase-button .btn { 4102 width: 297px; 4103 height: 43px; 4104 background-color: #ffffff; 4105 color: #ffffff; 4106 } 4107 .purchase-button .btn[disabled] { 4108 background-color: #EEEEEE; 4109 } 4110 .back-purchase-button svg, .back-spotify svg { 4111 align-self: center; 4112 vertical-align: middle; 4113 margin-right: 10px; 4114 } 4115 4116 #purchaseProduct .row .error { 4117 font-size: 12px !important; 4118 color: orange; 4119 margin-top: 5px; 4120 } 4121 4122 .reviewCardPurchase { 4123 max-width: 448px; 4124 float: right; 4125 } 4126 4127 .addonsPurchase .addon-item {display: flex;justify-content: space-between;} 4128 .addon-item * {align-self: center;font-size: 12px;} 4129 .addon-itm-title {width: 360px;} 4130 .addon-itm-line-price {color: #757575;width: 80px;justify-content: space-between;display: flex;} 4131 4132 .propsAddonSpotify p { 4133 margin: 0; 4134 display: flex; 4135 font-size: 12px !important; 4136 margin-bottom: 5px; 4137 } 4138 .propsAddonSpotify p span:first-child { 4139 text-transform: uppercase; 4140 font-weight: 600; 4141 -ms-flex: 0 0 150px; 4142 flex: 0 0 150px; 4143 max-width: 150px; 4144 } 4145 4146 .addonsPurchase .addons { 4147 max-height: 250px; 4148 overflow: auto; 4149 } 4150 4151 .btn .loading:after { 4152 content: ""; 4153 display: inline-block; 4154 width: 20px; 4155 height: 20px; 4156 padding: 3px; 4157 aspect-ratio: 1; 4158 border-radius: 50%; 4159 background: #FFFFFF; 4160 --_m: conic-gradient(#0000 10%, #ffffff), linear-gradient(#ffffff 0 0) content-box; 4161 -webkit-mask: var(--_m); 4162 mask: var(--_m); 4163 -webkit-mask-composite: source-out; 4164 mask-composite: subtract; 4165 animation: l3 1s infinite linear; 4166 margin: auto; 4167 vertical-align: middle; 4168 margin-left: 10px; 4169 } 4170 4171 #qrcode img, #qrcode canvas { 4172 width: 50px; 4173 position: absolute; 4174 top: 12px; 4175 left: 16px; 4176 } 4177 4178 .t-preview { 4179 position: absolute; 4180 top: 17px; 4181 left: 75px; 4182 } 4183 .t-preview p { 4184 margin: 0; 4185 font-size: 12px !important; 4186 } 4187 .t-preview .h3 { 4188 font-size: 16px !important; 4189 margin-bottom: 5px; 4190 font-weight: 600; 4191 } 4192 .scanCard { 4193 width: 100%; 4194 border: 1px solid; 4195 height: 76px; 4196 background-color: #fff; 4197 } 4198 .scanCard > div > img { 4199 position: absolute; 4200 right: 0; 4201 width: 55px; 4202 } 4203 4204 @keyframes l3 { 4205 100% { 4206 transform: rotate(1turn); 4207 } 4208 } 4209 4210 @media (min-width: 991px) { 4211 .sectionPurchase { 4212 height: 100%; 4213 position: relative; 4214 max-width: 1344px; 4215 background-color: #fff; 4216 top: 50%; 4217 left: 50%; 4218 transform: translate(-50%, -50%); 4219 } 4220 .headerPurchase h3 { 4221 font-size: 20px; 4222 } 4223 .purchaseArea h4 { 4224 font-size: 16px; 4225 } 4226 4227 .menuPurchase ul li { 4228 font-size: 16px; 4229 } 4230 4231 .contentPurchase { 4232 margin-bottom: 30px; 4233 } 4234 .contentPurchase h5 { 4235 font-size: 16px; 4236 } 4237 4238 .item-cards .item-card p, 4239 .item-addons .item-addon p { 4240 font-size: 16px !important; 4241 } 4242 4243 .cards { 4244 float: right; 4245 width: 400px; 4246 } 4247 4248 .item-cards .item-card { 4249 width: calc(25% - 30px); 4250 max-width: calc(25% - 30px); 4251 flex: 0 0 calc(25% - 30px); 4252 } 4253 4254 #itemAddons .item-card { 4255 position: relative; 4256 width: calc(16% - 40px); 4257 max-width: calc(16% - 40px); 4258 flex: 0 0 calc(16% - 40px); 4259 } 4260 4261 .purchase-button-wrapper { 4262 padding: 10px 20px; 4263 } 4264 } 4265 4266 @media (max-width: 1200px) { 4267 .item-cards .item-card { 4268 width: calc(33% - 30px); 4269 max-width: calc(33% - 30px); 4270 flex: 0 0 calc(33% - 30px); 4271 } 4272 } 4273 4274 @media (max-width: 992px) { 4275 .purchasePopup { 4276 padding: 0; 4277 } 4278 .item-cards .item-card h5, 4279 .item-addons .item-addon h5 { 4280 max-height: 30px; 4281 } 4282 4283 .back-purchase-button, .back-spotify, .next-purchase-button { 4284 width: 100%; 4285 } 4286 .addon-itm-title { 4287 width: 300px; 4288 } 4289 .addon-itm-line-price { 4290 margin-right: 10px; 4291 } 4292 .t-preview { 4293 top: 10px; 4294 } 4295 4296 .card-qty a { 4297 height: 15px; 4298 } 4299 4300 .purchase-button-wrapper { 4301 padding: 15px; 4302 } 4303 } 4304 4305 @media (max-width: 576px) { 4306 .purchase-button .btn { 4307 width: 100%!important; 4308 } 4309 .purchase-button > .col-12 { 4310 padding-left: 0; 4311 padding-right: 0; 4312 } 4313 } 4314 </style> 4315 4316 4317 <div class="purchasePopup"> 4318 <div class="purchaseArea"> 4319 4320 <div class="sectionPurchase purchasePersonalize sectionPurchaseBoard"> 4321 <div class="wrapperPurchase"> 4322 <div class="purchase-content"> 4323 <div class="headerPurchase"> 4324 <h3 class="text-uppercase"> 4325 4326 customize your flower board 4327 4328 </h3> 4329 <a class="close-purchase-popup"> 4330 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="18" height="18" viewBox="0 0 18 18" fill="none"> 4331 <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"/> 4332 </svg> 4333 </a> 4334 4335 </div> 4336 <div class="contentPurchase"> 4337 <div class="row"> 4338 4339 <div class="col-12"> 4340 4341 4342 <style> 4343 4344 4345 .customize-papan .group-field-1 .input-field {float: left;width: 100%;height: 317px;background-color: #E5E5EA;} 4346 .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;} 4347 4348 .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;} 4349 .customize-papan .btn-upload-papan svg {width: 21px;height: 25px;display: block;align-self: center;margin: auto;margin-bottom: 12px;} 4350 .svgLogoPapan {position: absolute;width: 100%;top: 50%;left: 50%;transform: translate(-50%, -50%);text-align: center;} 4351 .svgLogoPapan p {color: #8E8E93; margin: 0;} 4352 .svgLogoPapan p span {font-size: 12px;color: #FF0E00;} 4353 .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;} 4354 #suggest-messages {position: absolute;bottom: 5px;left: 5px;} 4355 #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;} 4356 .case-occasion .nice-select:after {border-bottom: 2px solid #333;border-right: 2px solid #333;right: 20px;top: 42%;width: 10px;height: 10px;} 4357 .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;} 4358 .customize-papan .input-field .limit {position: absolute;right: 15px;top: 0;color: #757575;} 4359 4360 @media (min-width: 991px) { 4361 .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);} 4362 .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);} 4363 } 4364 </style> 4365 4366 <input type="hidden" data-properties="penerima" value="-"> 4367 <div class="customize-papan"> 4368 <div class="container"> 4369 <div class="field-papan group-field-1 form-group"> 4370 <div class="input-field">
4371 <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. 4372 (Ex: Selamat Menempuh Hidup Baru A & B)." maxlength="100"></textarea> 4373 <p class="limit">0/100</p> 4374 <div id="suggest-messages"> 4375 <a id="show_note_papan1" href="#"> 4376 <div class="suggest-message" id="note_btn_div1"> 4377 <span class="promo-code-link" id="note_btn_papan1">Contoh Kata WEDDING</span> 4378 </div> 4379 </a> 4380 <a id="show_note_papan2" href="#"> 4381 <div class="suggest-message" id="note_btn_div2"> 4382 <span class="promo-code-link" id="note_btn_papan2">Contoh Kata SELAMAT</span> 4383 </div> 4384 </a> 4385 <a id="show_note_papan3" href="#"> 4386 <div class="suggest-message" id="note_btn_div3"> 4387 <span class="promo-code-link" id="note_btn_papan3">Contoh Kata DUKA CITA</span> 4388 </div> 4389 </a> 4390 </div> 4391 </div> 4392 </div> 4393 <div class="hide"> 4394 <input type="hidden" value="" id="note_id_papan1" name="note_id_papan1" style="top: 0px;"> 4395 <input type="hidden" value="" id="note_btn_id_papan1" name="note_btn_id_papan1"> 4396 </div> 4397 <div class="hide"> 4398 <input type="hidden" value="" id="note_id_papan2" name="note_id_papan2" style="top: 0px;"> 4399 <input type="hidden" value="" id="note_btn_id_papan2" name="note_btn_id_papan2"> 4400 </div> 4401 <div class="hide"> 4402 <input type="hidden" value="" id="note_id_papan3" name="note_id_papan3" style="top: 0px;"> 4403 <input type="hidden" value="" id="note_btn_id_papan3" name="note_btn_id_papan3"> 4404 </div> 4405 <div class="field-papan group-field-2 form-group"> 4406 4407 <label for="logoPapan" onclick="" class="input-field field-logo"> 4408 4409 4410 4411 <div class="btn-upload-papan w-100"> 4412 <?xml version="1.0" encoding="UTF-8"?> 4413 <img src="" style="display:none"> 4414 <div class="svgLogoPapan"> 4415 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="22" height="26" viewBox="0 0 22 26" fill="none"> 4416 <path d="M6.5 20H15.5V11H21.5L11 0.5L0.5 11H6.5V20ZM0.5 23H21.5V26H0.5V23Z" fill="black"/> 4417 </svg> 4418 <p>Upload Logo <span>*optional</span></p> 4419 </div> 4420 </div> 4421 4422 </label> 4423 4424 <input 4425 type="hidden" 4426 data-properties="papan-logo" 4427 value="" 4428 > 4429 <input 4430 type="file" 4431 id="logoPapan" 4432 accept="image/*" 4433 style="position: absolute;width: 1px;height: 1px;padding: 0" 4434 > 4435 4436 <div class="input-field"> 4437 <input class="has-limit sender-name" type="text" placeholder="Nama Pengirim" data-properties="pengirim" maxlength="35"/> 4438 <p class="limit">0/35</p> 4439 </div> 4440 4441 </div> 4442 4443 </div> 4444 </div> 4445 </div> 4446 4447 </div> 4448 </div> 4449 4450 </div> 4451 <div class="purchase-button-wrapper"> 4452 <div class="purchase-button btn-card row m-0"> 4453 <div class="col-12 col-lg-2 text-left mb-2 p-0"> 4454 4455 </div> 4456 <div class="btn-next-card col-12 col-lg-10 text-right"> 4457 4458 4459 <button 4460 4461 4462 4463 class="btn next-purchase-button text-uppercase" 4464 4465 disabled 4466 4467 > 4468 <span>save your flower board</span> 4469 </button> 4470 </div> 4471 </div> 4472 4473 </div> 4474 </div> 4475 </div> 4476 4477 4478 4479 <div 4480 class="sectionPurchase sectionPurchaseBoard hide" 4481 data-section="address" 4482 > 4483 <div class="wrapperPurchase"> 4484 <div class="purchase-content"> 4485 <div class="headerPurchase"> 4486 <h3> 4487 Complete Your Order 4488 </h3> 4489 <a class="close-purchase-popup"> 4490 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="18" height="18" viewBox="0 0 18 18" fill="none"> 4491 <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"/> 4492 </svg> 4493 </a> 4494 4495 </div> 4496 <div class="contentPurchase"> 4497 <div class="row"> 4498 <div class="col-12 position-relative"> 4499 <div class="addressPurchase"> 4500 4501 <h4 class="text-uppercase">recipient delivery address</h4> 4502 <p>Share the delivery address to send your heartfelt blooms straight to their door.</p> 4503 4504 <div class="formAddressPurchase row"> 4505 <div class="col-12"> 4506 <form> 4507 <div class="form-group row mb-2 mb-lg-4"> 4508 <div class="col-6 position-relative"> 4509 <input id="first_name" type="text" class="form-control input__field" placeholder="" required> 4510 <label for="first_name" class="input__label">First Name<span>*</span></label> 4511 </div> 4512 <div class="col-6 position-relative"> 4513 <input id="last_name" type="text" class="form-control input__field" placeholder="" required> 4514 <label for="last_name" class="input__label">Last Name<span>*</span></label> 4515 </div> 4516 <input type="hidden" data-properties="nama-penerima"> 4517 </div> 4518 4519 <h4 class="text-uppercase">how you want to input your address</h4> 4520 <div class="form-group row mb-2 mb-lg-4 form-address-upload"> 4521 <div class="col-6 position-relative"> 4522 <label class="address-manualy"> 4523 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="18" height="17" viewBox="0 0 18 17" fill="none"> 4524 <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
45241216 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
45245 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"/> 4525 </svg> 4526 <span>Input Address Manually</span> 4527 </label> 4528 </div> 4529 <div class="col-6 position-relative"> 4530 <label for="address-upload" class="address-upload"> 4531 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="12" height="13" viewBox="0 0 12 13" fill="none"> 4532 <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"/> 4533 </svg> 4534 <span>Upload Address Picture</span> 4535 </label> 4536 <input 4537 id="address-upload" 4538 type="file" 4539 accept="image/png, image/jpeg" 4540 style="position: absolute; padding: 0;width: 1px;height: 1px" 4541 > 4542 <input type="hidden" class="props-address-upload" data-properties="foto-alamat"> 4543 </div> 4544 </div> 4545 <img width="150" height="" src="" class="photo-address" style="display: none;"> 4546 4547 <div class="form-group row position-relative mb-2 mb-lg-4 form-address"> 4548 <div class="col-12"> 4549 <textarea 4550 id="delivery_address" 4551 data-properties="alamat-penerima" 4552 class="form-control input__field col-12" 4553 placeholder="" 4554 required 4555 ></textarea> 4556 <label for="delivery_address" class="input__label">Delivery Address<span>*</span></label> 4557 4558 </div> 4559 </div> 4560 <div class="form-group row mb-2 mb-lg-4 form-address"> 4561 <div class="col-6 position-relative"> 4562 <input 4563 id="recipient_number" 4564 type="text" 4565 data-properties="telepon-penerima" 4566 class="form-control input__field" 4567 placeholder="" 4568 required 4569 > 4570 <label for="recipient_number" class="input__label">Recipient number<span>*</span></label> 4571 </div> 4572 <div class="col-6 position-relative"> 4573 <input 4574 id="company" 4575 type="text" 4576 data-properties="company" 4577 class="form-control input__field" 4578 placeholder="" 4579 > 4580 <label for="company" class="input__label">Company (Optional)</label> 4581 </div> 4582 </div> 4583 <div class="form-group row mb-2 mb-lg-4 form-address"> 4584 <div class="col-6 position-relative"> 4585 <input 4586 id="province" 4587 type="text" 4588 class="form-control input__field" 4589 placeholder="" 4590 value="Jakarta" 4591 data-properties="province" 4592 > 4593 <label for="province" class="input__label">Province</label> 4594 </div> 4595 <div class="col-6 position-relative"> 4596 <select id="zip" class="form-control select-search" required></select> 4597 </div> 4598 </div> 4599 </form> 4600 </div> 4601 </div> 4602 </div> 4603 <div class="addonsPurchase"> 4604 <h4 class="text-uppercase">add-ons</h4> 4605 <div class="addons"> 4606 <p>No Add-Ons</p> 4607 <!-- 4608 <button class="add-addon"> 4609 <svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="12" height="12" viewBox="0 0 12 12" fill="none"> 4610 <path d="M5.5 6.5H0V5.5H5.5V0H6.5V5.5H12V6.5H6.5V12H5.5V6.5Z" fill="black"/> 4611 </svg>
4612 <span>Enhance my moment with Add-ons</span> 4613 </button> 4614 --> 4615 </div> 4616 </div> 4617 </div> 4618 4619 </div> 4620 </div> 4621 4622
4622<script> 4623 document.addEventListener('DOMContentLoaded', function() { 4624 // Detect iOS 4625 var isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; 4626 4627 if (isIOS) { 4628 document.querySelector('.formAddressPurchase').classList.add('ios'); 4629 4630 // iOS specific fixes 4631 var inputs = document.querySelectorAll('.formAddressPurchase .input__field'); 4632 4633 inputs.forEach(function(input) { 4634 // Force enable touch events on iOS 4635 input.style.webkitUserSelect = 'text'; 4636 input.style.webkitTouchCallout = 'default'; 4637 input.style.pointerEvents = 'auto'; 4638 input.style.touchAction = 'manipulation'; 4639 4640 // Add explicit touch event listeners for iOS 4641 input.addEventListener('touchstart', function(e) { 4642 e.stopPropagation(); 4643 this.focus(); 4644 }, { passive: false }); 4645 4646 input.addEventListener('touchend', function(e) { 4647 e.preventDefault(); 4648 e.stopPropagation(); 4649 this.focus(); 4650 this.click(); 4651 }, { passive: false }); 4652 4653 // Force focus on tap for iOS 4654 input.addEventListener('click', function(e) { 4655 e.stopPropagation(); 4656 if (document.activeElement !== this) { 4657 this.focus(); 4658 } 4659 }); 4660 }); 4661 4662 // Fix for label overlapping on iOS 4663 var labels = document.querySelectorAll('.formAddressPurchase .input__label'); 4664 labels.forEach(function(label) { 4665 label.style.pointerEvents = 'none'; 4666 label.addEventListener('touchstart', function(e) { 4667 e.preventDefault(); 4668 var input = this.parentNode.querySelector('.input__field'); 4669 if (input) { 4670 input.focus(); 4671 } 4672 }); 4673 }); 4674 } 4675 4676 // Handle input state for all browsers, especially iOS 4677 var inputs = document.querySelectorAll('.input__field'); 4678 4679 inputs.forEach(function(input) { 4680 // Handle input events 4681 input.addEventListener('input', function() { 4682 if (this.value.trim() !== '') { 4683 this.classList.add('has-value'); 4684 } else { 4685 this.classList.remove('has-value'); 4686 } 4687 }); 4688 4689 // Handle focus 4690 input.addEventListener('focus', function() { 4691 this.classList.add('focused'); 4692 // iOS specific: ensure input is visible 4693 if (isIOS) { 4694 setTimeout(function() { 4695 input.scrollIntoView({ behavior: 'smooth', block: 'center' }); 4696 }, 300); 4697 } 4698 }); 4699 4700 // Handle blur 4701 input.addEventListener('blur', function() { 4702 this.classList.remove('focused'); 4703 if (this.value.trim() !== '') { 4704 this.classList.add('has-value'); 4705 } else { 4706 this.classList.remove('has-value'); 4707 } 4708 }); 4709 4710 // Initial check for pre-filled values 4711 if (input.value.trim() !== '') { 4712 input.classList.add('has-value'); 4713 } 4714 }); 4715 4716 // Additional iOS fixes 4717 if (isIOS) { 4718 // Prevent iOS Safari from adding default styling 4719 document.addEventListener('touchstart', function() {}, { passive: true }); 4720 4721 // Fix viewport issues on iOS 4722 var viewport = document.querySelector('meta[name=viewport]'); 4723 if (viewport) { 4724 viewport.setAttribute('content', 4725 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' 4726 ); 4727 } 4728 } 4729 }); 4730 </script>
4730 4731 </div> 4732 <div class="purchase-button-wrapper"> 4733 <div class="purchase-button btn-address row m-0"> 4734 <div class="col-12 col-lg-2 text-left mb-2 p-0"> 4735 4736 <button class="back-purchase-button back-address text-uppercase"> 4737 <svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif"> 4738 <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"/> 4739 </svg> 4740 <span>Back</span> 4741 </button> 4742 4743 </div> 4744 <div class="btn-next-card col-12 col-lg-10 text-right"> 4745 4746 <!-- 4747 <button class="back-purchase-button back-address text-uppercase mr-lg-2 mb-2 mb-lg-0"> 4748 <svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif"> 4749 <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"/> 4750 </svg> 4751 <span>Back</span> 4752 </button> 4753 --> 4754 4755 4756 <button 4757 4758 id="addtocart-card" 4759 4760 class="btn next-address text-uppercase" 4761 4762 > 4763 <span>add to cart</span> 4764 </button> 4765 </div> 4766 </div> 4767 4768 </div> 4769 </div> 4770 </div> 4771 4772 </div> 4773 </div> 4774 <div id="backgroundPopup"></div> 4775 4776 4777 4778 <input 4779 data-index="1" 4780 type="hidden" 4781 id="properties-delivery-date" 4782 name="properties[Delivery Date]" 4783 value="-" 4784 > 4785 <input 4786 data-index="2" 4787 type="hidden" 4788 id="properties-delivery-time" 4789 name="properties[Delivery Time]" 4790 value="-" 4791 > 4792 <input 4793 data-index="4" 4794 type="hidden" 4795 id="properties-nama-penerima" 4796 name="properties[Nama Penerima]" 4797 value="-" 4798 > 4799 <input 4800 data-index="5" 4801 type="hidden" 4802 id="properties-alamat-penerima" 4803 name="properties[Alamat Penerima]" 4804 value="-" 4805 > 4806 <input 4807 data-index="6" 4808 type="hidden" 4809 id="properties-kodepos" 4810 name="properties[Kodepos]" 4811 value="-" 4812 > 4813 <input data-index="7" type="hidden" id="properties-telepon-penerima" name="properties[Telepon Penerima]"> 4814 4815 4816 <input 4817 data-index="8" 4818 type="hidden" 4819 id="properties-kartu-nama-penerima" 4820 name="properties[Kartu Nama Penerima]" 4821 value="-" 4822 > 4823 4824 <textarea 4825 data-index="9" 4826 type="hidden" 4827 id="properties-kartu-pesan" 4828 name="properties[Kartu Pesan]" 4829 style="display: none" 4830 >-</textarea> 4831 4832 4833 4834 <input 4835 data-index="10" 4836 type="hidden" 4837 id="properties-kartu-nama-pengirim" 4838 name="properties[Kartu Nama Pengirim]" 4839 value="-" 4840 > 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860
4860<script> 4861 const shareButton = document.getElementById('shareButton'); 4862 4863 shareButton.addEventListener('click', () => { 4864 if (navigator.share) { 4865 navigator.share({ 4866 title: "KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang", 4867 url: "/products/blossom-shine", 4868 text: 'Check out this page!' 4869 }) 4870 .then(() => console.log('Successful share')) 4871 .catch((error) => console.log('Error sharing', error)); 4872 } else { 4873 alert('Web Share API is not supported in this browser.'); 4874 } 4875 }); 4876 4877 // Inventory validation function 4878 function checkInventoryStatus() { 4879 const productSelect = document.getElementById('productSelect'); 4880 const purchaseButton = document.querySelector('#personalizeBtn button'); 4881 4882 if (!productSelect || !purchaseButton) return; 4883 4884 const selectedVariantId = productSelect.value; 4885 4886 // Get variant data from Shopify 4887 fetch(`/products/blossom-shine.js`) 4888 .then(response => response.json()) 4889 .then(product => { 4890 const selectedVariant = product.variants.find(variant => variant.id == selectedVariantId); 4891 4892 if (selectedVariant) { 4893 const isOutOfStock = selectedVariant.inventory_quantity <= 0 && 4894 selectedVariant.inventory_management === 'shopify' && 4895 selectedVariant.inventory_policy !== 'continue'; 4896 4897 if (isOutOfStock) { 4898 purchaseButton.disabled = true; 4899 purchaseButton.textContent = 'Out of Stock'; 4900 purchaseButton.setAttribute('data-out-of-stock', 'true'); 4901 purchaseButton.style.backgroundColor = '#cccccc'; 4902 purchaseButton.style.cursor = 'not-allowed'; 4903 } else { 4904 // Check if button was disabled due to other conditions 4905 4906 4907 4908 4909 4910 4911 4912 4913 const isOtherDisabled = false || true || false; 4914 4915 if (!isOtherDisabled) { 4916 purchaseButton.disabled = false; 4917 purchaseButton.textContent = 'customize your flower board'; 4918 purchaseButton.removeAttribute('data-out-of-stock'); 4919 purchaseButton.style.backgroundColor = ''; 4920 purchaseButton.style.cursor = ''; 4921 } 4922 } 4923 } 4924 }) 4925 .catch(error => { 4926 console.error('Error checking inventory:', error); 4927 }); 4928 } 4929 4930 // Check inventory on page load 4931 document.addEventListener('DOMContentLoaded', function() { 4932 checkInventoryStatus(); 4933 4934 // Listen for variant changes 4935 const productSelect = document.getElementById('productSelect'); 4936 if (productSelect) { 4937 productSelect.addEventListener('change', checkInventoryStatus); 4938 } 4939 }); 4940 4941 // Prevent form submission if out of stock 4942 document.addEventListener('click', function(e) { 4943 if (e.target.matches('button[data-out-of-stock="true"]')) { 4944 e.preventDefault(); 4945 e.stopPropagation(); 4946 alert('This product is currently out of stock and cannot be purchased.'); 4947 return false; 4948 } 4949 }); 4950 </script>
4950 4951 4952 4953 4954 </div> 4955 4956 </div> 4957 </div> 4958 </div> 4959 </div> 4960 <div id="product-bottom"> 4961 4962 <div class="product-description rte bg-card col-12 py-3 px-0 m-0" itemprop="description"> 4963 <div class="container"> 4964 4965 4966 4967 4968 4969 <div class="short-desc-mobile d-block d-lg-none mb-3"> 4970 <div class="short-desc"> 4971 <ul> 4972 <li><strong>KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat.</strong></li> 4973 </div> 4974 <label class="more-mobile">Show More â</label> 4975 </div> 4976 4977 <style> 4978 .animated-title { 4979 text-align: center; 4980 font-weight: bold; 4981 color: #079c02; 4982 font-size: 28px; 4983 position: relative; 4984 animation: glow 2s infinite alternate, moveUpDown 3s infinite; 4985 } 4986 4987 /* Efek glow / bercahaya hijau */ 4988 @keyframes glow { 4989 0% { text-shadow: 0 0 5px #079c02; color: #079c02; } 4990 50% { text-shadow: 0 0 20px #00ff55; color: #12d12b; } 4991 100% { text-shadow: 0 0 10px #1bff00; color: #079c02; } 4992 } 4993 4994 /* Efek gerakan naik turun */ 4995 @keyframes moveUpDown { 4996 0% { transform: translateY(0px); } 4997 50% { transform: translateY(-5px); } 4998 100% { transform: translateY(0px); } 4999 } 5000 </style> 5001 5002
5002<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/shopify-cartjs/1.1.0/cart.min.js"></script>
5002 5003
5003<script> 5004 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}); 5005 5006 const productType = $("[data-product-type]").data("product-type") 5007 const productDate = Date.parse(new Date()) 5008 5009 const shop = 'outerbloom1.myshopify.com' 5010 const host = 'https://app.asmaraku.com' 5011 // const host = 'http://localhost:5001' 5012 5013 const gsheet = "https://script.google.com/macros/s/AKfycbyqa6mPD6lVjU6hiHr12J8URZ2aJBGyxBsGQ0QtEIDari-rBk_9vSOITjSSmUXL1NwxEg/exec" 5014 5015 const qrID = "041025" + randomString(4, 'aAbCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ') 5016 5017 $("#properties-time").val(new Date().getTime()) 5018 5019 const isIOS = /iPhone|iPad|iPod/i.test(navigator.userAgent); 5020 5021 if(!isIOS) { 5022 $("#full-date").attr("type", "button") 5023 } 5024 5025 let dateTime = new Date(); 5026 let today = dateTime.getDate(); 5027 let day = dateTime.getDay(); 5028 let hour = dateTime.getHours(); 5029 let min = dateTime.getMinutes(); 5030 let timeOfDay = hour + (min / 100); 5031 5032 async function getFetch(url) { 5033 const response = await fetch(url); 5034 let status = false 5035 let result 5036 if(response.ok) { 5037 status = true 5038 result = await response.json(); 5039 } 5040 return { 5041 status, 5042 data: result 5043 } 5044 } 5045 5046 5047 5048 function setCookie(cname, cvalue, exMins) { 5049 var d = new Date(); 5050 d.setTime(d.getTime() + (exMins*60*1000)); 5051 var expires = "expires="+d.toUTCString(); 5052 document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 5053 } 5054 5055 function getCookie(cname) { 5056 let name = cname + "="; 5057 let decodedCookie = decodeURIComponent(document.cookie); 5058 let ca = decodedCookie.split(';'); 5059 for(let i = 0; i <ca.length; i++) { 5060 let c = ca[i]; 5061 while (c.charAt(0) == ' ') { 5062 c = c.substring(1); 5063 } 5064 if (c.indexOf(name) == 0) { 5065 return c.substring(name.length, c.length); 5066 } 5067 } 5068 return ""; 5069 } 5070 5071 async function renderDate() { 5072 let dataDate = await getFetch(`${host}/api/shipping/date?domain=${shop}&productId=8359546319899&v=${Date.now()}`); 5073 console.log(dataDate, 'renderDate') 5074 const data = dataDate?.data 5075 const date = data.date 5076 const time = data.time 5077 5078 console.log(date, 'DATE') 5079 5080 const weekday = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]; 5081 const monthly = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]; 5082 const htmlDate = [] 5083 for(let i = 0;i < date.length;i++) { 5084 const full = date[i].date 5085 const d = new Date(date[i].date); 5086 const day = weekday[d.getDay()]; 5087 const dt = d.getDate(); 5088 const mt = monthly[d.getMonth()]; 5089 const yr = d.getFullYear(); 5090 const isDate = Boolean(date[i].isEnabled) 5091 const cutoffpagi = date[i].cutoff?.pagi 5092 const cutoffsiang = date[i].cutoff?.siang 5093 const cutoffMalam = date[i].cutoff?.Malam 5094 var html = ` 5095 <button data-id="8359546319899" 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'}> 5096 ${dt === today ? 5097 `Today<span>${dt < 10 ? '0' + dt : dt}</span>` : 5098 `${day}<span>${dt < 10 ? '0' + dt : dt}</span>` 5099 } 5100 </button> 5101 ` 5102 htmlDate.push(html) 5103 } 5104 const htmlTime = [] 5105 for(var i = 0;i < time.length;i++) { 5106 const timeText = time[i].text 5107 const timeTime = time[i].time 5108 const timeEnabled = time[i].isEnabled 5109 var html = ` 5110 <button class="time-single calendarbutton2 btn steps-btn" data-time="${timeText}" ${timeEnabled ? '' : 'disabled'}>${timeText}<br/>${timeTime}</button> 5111 ` 5112 htmlTime.push(html) 5113 } 5114 const deliveryDate = document.getElementById("deliveryDate"); 5115 if(deliveryDate) { 5116 deliveryDate.insertAdjacentHTML("afterbegin", htmlDate.join('')) 5117 $("#deliveryTime").html(htmlTime) 5118 if(productType !== '') { 5119 console.log("clarity event " + productType + ' calendaring') 5120 window.clarity("event", `${productType} calendaringSchedule`) 5121 // window.clarity("set", productType, `calendaringSchedule - ${productDate}`) 5122 } 5123 } 5124 } 5125 5126 async function getProvince(city) { 5127 let { data: { province } } = await getFetch(`${host}/api/shipping/address/province?city=${city}`); 5128 console.log(province, 'province') 5129 $("#province").val(province) 5130 } 5131 5132 async function renderAddress() { 5133 let current 5134 if(getCookie("location_delivery")){ 5135 current = getCookie("location_delivery").charAt(0).toUpperCase() + getCookie("location_delivery").slice(1) 5136 } 5137 let address = await getFetch(`${host}/api/shipping/address?domain=${shop}&productId=8359546319899`); 5138 console.log(address) 5139 const data = address?.data?.city 5140 const htmlAddress = [] 5141 const grouping = []
5142 for(let i = 0;i < data?.length;i++) { 5143 if(data[i]){ 5144 if(data[i]?.group) { 5145 grouping.push(data[i].group) 5146 } 5147 const price = rupiah.format(data[i]?.rate) 5148 let promo = '(Promo Free Delivery)' 5149 if(data[i]?.name === 'Jakarta - PickUp ASHTA'){ 5150 promo = '(at SCBD, Ashta)' 5151 } else if(data[i]?.name === 'Jakarta - PickUp ITC'){ 5152 promo = '(at Kuningan, ITC Kuningan)' 5153 } else if(data[i]?.name === 'BSD - PickUp'){ 5154 promo = '(at Goldfinch Gading Serpong)' 5155 } else if(data[i]?.name === 'Kota Lainnya'){ 5156 promo = '' 5157 } 5158 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>`) 5159 } 5160 } 5161 5162 const deliveryCity = document.getElementById("cities"); 5163 if(deliveryCity) { 5164 deliveryCity.insertAdjacentHTML("beforeend", htmlAddress.join('')) 5165 if(!isIOS) { 5166 $(deliveryCity).select2(); 5167 } 5168 } 5169 } 5170 5171 async function renderZip(v, v2, v3) { 5172 const deliveryZip = document.getElementById("zip"); 5173 if(v === '') { 5174 return 5175 } 5176 let dataZip = await getFetch(`${host}/api/shipping/address/zip?city=${v}&city2=${v2}&city3=${v3}`); 5177 let zip = dataZip?.data?.zip 5178 console.log(zip) 5179 let htmlZip = [] 5180 for(let i = 0; i < zip?.length;i++) { 5181 htmlZip.push(`<option value="${zip[i]?.postalCode} - ${zip[i]?.subdistrict}">${zip[i]?.postalCode} - ${zip[i]?.subdistrict} - ${zip[i]?.city}</option>`) 5182 } 5183 deliveryZip.insertAdjacentHTML("beforeend", htmlZip.join('')) 5184 } 5185 5186 renderDate() 5187 renderAddress() 5188 5189 let rupiah = new Intl.NumberFormat('id-ID', { 5190 style: 'currency', 5191 currency: 'IDR', 5192 maximumFractionDigits: 0, 5193 minimumFractionDigits: 0 5194 }); 5195 5196 async function insertCard(data) { 5197 const response = await fetch(`${host}/api/card/new`, { 5198 method: "POST", 5199 headers: { 5200 'Content-Type': 'application/json', 5201 }, 5202 body: data 5203 }) 5204 const result = await response.json() 5205 let rowIndex = result?.data?.tableRange.split("Outerbloom!A1:J")[1] 5206 $("#greetingCard").attr("data-index", rowIndex) 5207 return result 5208 } 5209 5210 async function updateCard(data){ 5211 const rowIndex = $("#greetingCard").data("index") 5212 const response = await fetch(`${host}/api/card/update?rowIndex=${rowIndex}`, { 5213 method: "PUT", 5214 headers: { 5215 'Content-Type': 'application/json', 5216 }, 5217 body: data 5218 }) 5219 return response 5220 } 5221 5222 function bytesToSize(bytes) { 5223 var sizes = ['b', 'kb', 'mb', 'gb', 'tb', 'p']; 5224 for (var i = 0; i < sizes.length; i++) { 5225 if (bytes <= 1024) { 5226 return bytes + ' ' + sizes[i]; 5227 } else { 5228 bytes = parseFloat(bytes / 1024).toFixed(2) 5229 } 5230 } 5231 return bytes + ' P'; 5232 } 5233 5234 async function uploadMedia(uri, type) { 5235 nameq = $("#properties-nama-penerima").val() 5236 dear = $("#properties-kartu-nama-penerima").val() 5237 card = $("[data-properties=ucapan]").val() 5238 sender = $("#properties-kartu-nama-pengirim").val() 5239 photo = $("#properties-photo").val() 5240 video = $("#properties-video").val() 5241 status = "Product" 5242 5243 const name = qrID 5244 let formData = new FormData(); 5245 formData.append("file", uri); 5246 const response = await fetch(`${host}/api/upload?name=${name}&type=${type}&r=${randomString(3, '0123456789')}`, { 5247 method: "POST", 5248 body: formData 5249 }) 5250 const result = await response.json(); 5251 if(result) { 5252 const url = result.url 5253 if(type === 'image/jpeg') { 5254 $("#properties-photo").val(url) 5255 $(".preview-image").show() 5256 $(".remove-image").show() 5257 photo = url 5258 } else { 5259 $("#properties-video").val(url) 5260 $("#label-input-video span").text("Change File") 5261 $(".case-qrcode-preview p").text("Scan here for a secret message") 5262 $(".remove-media").show() 5263 $("#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>`) 5264 $("[for=input-video]").hide() 5265 video = url 5266 } 5267 $(".case-video-preview").show() 5268 $(".steps-card-preview").removeClass("loading") 5269 // updateCard(nameq, dear, card, sender, photo, video, status) 5270 5271 $(".nextBtn").attr("disabled", false) 5272 } 5273 } 5274 5275 function randomString(length, chars) { 5276 var result = ''; 5277 for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))]; 5278 return result; 5279 } 5280 5281 function getNoteCity(fulldate) { 5282 const h_1 = new Date(new Date().setDate(new Date().getDate() + 1)) 5283 const weekday = ["Min","Sen","Sel","Rab","Kam","Jum","Sab"]; 5284 const monthly = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]; 5285 const d = new Date(h_1); 5286 const day = weekday[d.getDay()]; 5287 const dt = d.getDate(); 5288 const mt = monthly[d.getMonth()]; 5289 const yr = d.getFullYear(); 5290 const p = $("#cities").parent(".form-group") 5291 } 5292 5293 function disabledSameDay() { 5294 let btnFirst = $("#deliveryDate").find("button:first-child") 5295 let getDay = new Date().getDay(); 5296 5297 5298 5299 if(getDay == 1 || getDay == 2 || getDay == 3 || getDay == 4 || getDay == 5){ 5300 if(hour >= 14.00){ 5301 btnFirst.attr("disabled", true) 5302 } 5303 } else if(getDay == 6){ 5304 if(hour >= 16.00){ 5305 btnFirst.attr("disabled", true) 5306 } 5307 } else if(getDay == 0){ 5308 if(hour >= 16.00){ 5309 btnFirst.attr("disabled", true) 5310 } 5311 } 5312 5313 5314 } 5315 5316 function disabledays(date) { 5317 let ymd = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate(); 5318 //if u have to disable a list of day 5319 let removeDays 5320 5321 5322 5323 removeDays = ["2025-2-13", "2025-2-14"]; 5324 5325 if ($.inArray(ymd, removeDays) >= 0) { 5326 return [false]; 5327 } else { 5328 let day = date.getDay(); 5329 if(day == 0 && date.getDate() == 13 && date.getMonth() == 1){ 5330 return [(day == 0), '']; 5331 } 5332 5333 if(day == 0){ 5334 return [(day == 0), '']; 5335 } 5336 5337 5338 return [(day != 0), '']; 5339 } 5340 } 5341 5342 /* Indonesian initialisation for the jQuery UI date picker plugin. */ 5343 /* Written by Deden Fathurahman ([email protected]). */ 5344 ( function( factory ) { 5345 if ( typeof define === "function" && define.amd ) { 5346 5347 // AMD. Register as an anonymous module. 5348 define( [ "../widgets/datepicker" ], factory ); 5349 } else { 5350 5351 // Browser globals 5352 factory( jQuery.datepicker ); 5353 } 5354 }( function( datepicker ) { 5355 5356 datepicker.regional.id = { 5357 closeText: "Tutup", 5358 prevText: "<mundur", 5359 nextText: "maju>", 5360 currentText: "Today", 5361 monthNames: [ "January","February","March","April","May","Juny", 5362 "July","August","September","October","November","December" ], 5363 monthNamesShort: [ "Jan","Feb","Mar","Apr","May","Jun", 5364 "Jul","Agu","Sep","Oct","Nov","Dec" ], 5365 dayNames: [ "Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu" ], 5366 dayNamesShort: [ "Sun","Mon","Tue","Wed","Thu","Fri","Sat" ], 5367 dayNamesMin: [ "Mg","Sn","Sl","Rb","Km","jm","Sb" ], 5368 weekHeader: "Mg", 5369 dateFormat: "D, dd M", 5370 firstDay: 0, 5371 isRTL: false, 5372 showMonthAfterYear: false, 5373 yearSuffix: "" }; 5374 datepicker.setDefaults( datepicker.regional.id ); 5375 5376 return datepicker.regional.id; 5377 5378 } ) ); 5379 5380 function loadPopup() { 5381 $("#backgroundPopup").fadeIn("slow"); 5382 $(".purchasePopup:not(.purchasePopupSpotify)").fadeIn("slow"); 5383 const firstSection = $(".purchasePopup:not(.purchasePopupSpotify) .sectionPurchase").first() 5384 if(firstSection.hasClass("purchasePersonalize")) { 5385 if(productType !== '') { 5386 console.log("clarity event " + productType + ' personalize') 5387 window.clarity("event", `${productType} cardPersonalization`) 5388 // window.clarity("set", productType, `cardPersonalization - ${productDate}`) 5389 } 5390 } else if (firstSection.hasClass("sectionPurchaseBoard")) { 5391 console.log("clarity event " + productType + ' personalizeBoard') 5392 window.clarity("event", `${productType} personalizeBoard`) 5393 // window.clarity("set", productType, `personalizeBoard - ${productDate}`) 5394 } 5395 firstSection.removeClass("hide") 5396 5397 // Auto-trigger addon loading when addon section becomes visible 5398 setTimeout(function() { 5399 const addonSection = $(".purchaseAddon") 5400 if(addonSection.length > 0 && !addonSection.hasClass("hide")) { 5401 if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) { 5402 $("[data-addon=upsell-all]").trigger("click") 5403 } 5404 } 5405 }, 200) 5406 } 5407 5408 function disablePopup() { 5409 $("#backgroundPopup").fadeOut("slow"); 5410 $(".purchasePopup").fadeOut("slow"); 5411 $("#popupCart").fadeOut("slow"); 5412 } 5413
5414 function scrollTo(parent, div, dur) { 5415 $(parent).animate({ 5416 scrollTop: $(div).offset().top 5417 }, dur); 5418 } 5419 5420 function loadPopupPersonalize() { 5421 const div = "#purchaseProduct" 5422 const p = "html, body, .product-meta" 5423 $("p.error").remove() 5424 loadItemOccasion($("[data-occassion]").eq(0), "greeting-card-all") 5425 const isCity = $("#cities[required]") 5426 const isDate = $("#propDeliveryDate[required]") 5427 const isTime = $("#propDeliveryTime[required]") 5428 // loadPopup() 5429 if(isCity.val() !== '' && isDate.val() !== '' && isTime.val() !== '') { 5430 loadPopup() 5431 } 5432 if(isCity.val() == '') { 5433 isCity.parent(".row").append("<p class='error'>Choose delivery city</p>") 5434 scrollTo(p, div, 500) 5435 } 5436 if(isDate.val() == '') { 5437 isDate.parents(".row").append("<p class='error'>Choose delivery date</p>") 5438 scrollTo(p, div, 500) 5439 } 5440 if(isTime.val() == '') { 5441 isTime.parents(".row").append("<p class='error'>Choose delivery time</p>") 5442 scrollTo(p, div, 500) 5443 } 5444 } 5445 5446 function quantityCounter() { 5447 $(document).on("click", ".item-card.selected .q_up", function () { 5448 var C = $(this).attr("data-id"), 5449 S = 5450 parseInt( 5451 $(this) 5452 .siblings(".quantity-cart-" + C) 5453 .val() 5454 ) + 1; 5455 $(this).attr("data-quantity", S), 5456 $(this) 5457 .siblings(".quantity-cart-" + C) 5458 .val(S); 5459 }), 5460 $(document).on("click", ".item-card.selected .q_down", function () { 5461 var C = $(this).attr("data-id"), 5462 S = parseInt( 5463 $(this) 5464 .siblings(".quantity-cart-" + C) 5465 .val() 5466 ); 5467 0 < S && $(this).attr("data-quantity", S - 1), 5468 0 < S && 5469 $(this) 5470 .siblings(".quantity-cart-" + C) 5471 .val(S - 1); 5472 }); 5473 } 5474 5475 quantityCounter() 5476 5477 const itemAddon = $(".item-card").length 5478 const nofree = $(".nofree").length 5479 5480 const upsell = '' 5481 5482 if(nofree === itemAddon) { 5483 // $("#itemAddons").html("<p>No Items available</p>") 5484 } 5485 5486 $("#itemAddons .item-card").each(function(e){ 5487 $("#itemAddons").attr("data-length", e) 5488 }) 5489 5490 $("[data-addon]").click(function(){ 5491 5492 5493 5494 const t = $(this) 5495 5496 const data = t.data("addon") 5497 5498 $("[data-addon]").removeClass("selected") 5499 t.addClass("selected") 5500 $.get(`https://outerbloom.com/collections/${data}/products.json`, function(data, status){ 5501 const products = data.products 5502 const html = [] 5503 for(let i = 0; i < products.length; i++) { 5504 const id = products[i].id 5505 const variantId = products[i].variants[0].id 5506 const img = products[i].images[0].src 5507 let img2 = img.split('.jpg')[0] 5508 const title = products[i].title 5509 const price = products[i].variants[0].price 5510 const tags = products[i].tags 5511 const qty = products[i].variants[0].available 5512 let type_upsell = '' 5513 if(tags.includes('upsell-item-standing')) { 5514 type_upsell = 'standing' 5515 } 5516 console.log(type_upsell) 5517 if(type_upsell !== '') { 5518 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}"> 5519 5520 <div class="card-image"> 5521 <img src="${img2}_150x.jpg" alt="${title}" width="" height="" /> 5522 </div> 5523 <div class="card-meta"> 5524 <h5>${title}</h5> 5525 <p>${price < 1 ? 'FREE' : rupiah.format(price)}</p> 5526 <input id="card-${variantId}" type="hidden" name="" value="${variantId}"> 5527 </div> 5528 <div class="card-qty"> 5529 <a data-quantity="1" type="submit" id="q_down-${variantId}" class="btn-qty-min q_down drawer-cart" data-id="${variantId}"><svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="12" height="2" viewBox="0 0 12 2" fill="none"><path d="M0 1.90869V0.908691H12V1.90869H0Z" fill="black"/></svg></a> 5530 <input maxlength="3" min="0" class="btn-qty text-center quantity-cart-${variantId}
5530" value="0" data-price=${price} name="quantity"> 5531 <a data-quantity="1" type="submit" class="btn-qty-plus q_up text-green drawer-cart" data-id="${variantId}"><svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="12" height="13" viewBox="0 0 12 13" fill="none"> 5532 <path d="M0 6.87023V5.94715H5.53846V0.408691H6.46154V5.94715H12V6.87023H6.46154V12.4087H5.53846V6.87023H0Z" fill="black"/> 5533 </svg></a> 5534 </div> 5535 </div>` 5536 html.push(body) 5537 } 5538 } 5539 $("#itemAddons .row").html(html.length === 0 ? '<p>No Item available</p>' : html) 5540 $("#itemAddons").attr("data-length", products.length) 5541 // $('#itemAddons')[0].swiper.update(); 5542 }); 5543 }) 5544 5545 async function isAddon(){ 5546 let ids = [] 5547 $("#itemAddons .item-card.selected").each(function(i, e){ 5548 const id = $(this).data("id") 5549 ids.push(id) 5550 }) 5551 console.log(ids) 5552 return ids 5553 } 5554 5555 $("#itemAddons").delegate(".item-card > div:not(.card-qty)", "click", async function(){ 5556 const t = $(this).parent() 5557 const id = t.data("id") 5558 const btn = t.parents(".purchaseAddon").find(".next-purchase-button") 5559 t.toggleClass("selected"); 5560 //$(this).next("input").toggleAttr('name', 'id[]'); 5561 if (t.hasClass('selected')) { 5562 t.find("input").val(1) 5563 t.find("input").attr('name', 'id[]'); 5564 } else { 5565 t.find("input").val(0) 5566 t.find("input").removeAttr('name'); 5567 } 5568 $("#properties-addons").val(addons) 5569 const is = await isAddon() 5570 if(is.length === 0) { 5571 btn.text("continue without add-ons") 5572 return 5573 } 5574 if(is.includes(8835692069079)) { 5575 btn.text("personalize acrylic frame") 5576 } else { 5577 btn.text("Continue") 5578 } 5579 5580 }) 5581 5582 async function myAddon(data) { 5583 const c = $(".addonsPurchase .addons") 5584 let items = [] 5585 5586 const spotifyAddons = $(".spotifyAddons").find("[data-index]") 5587 // if(spotifyAddons.length > 0) { 5588 // $(spotifyAddons).each(function(i, e){ 5589 // const spotifyLink = $(this).find(".spotifyLink").val() 5590 // const spotifySong = $(this).find(".spotifySong").val() 5591 // const spotifyArtist = $(this).find(".spotifyArtist").val() 5592 // const spotifyFotoAddon = $(this).find(".resultPhotoSpotify").val() 5593 // if(spotifyLink !== '') { 5594 // spotifyAddon = `<div class="addon-item" data-id="46067682607319" data-qty="1"> 5595 // <div class="addon-itm-img"> 5596 // <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"/> 5597 // </div> 5598 // <div class="addon-itm-title"> 5599 // <span>[US] Outerbloom Acrylic Frame 4R</span> 5600 // </div> 5601 // <div class="addon-itm-line-total"> 5602 // <span>Rp 99.000</span> 5603 // </div> 5604 // </div> 5605 // <div class="propsAddonSpotify row m-0"> 5606 // <div class="col-12 col-lg-2"></div> 5607 // <div class="col-12 col-lg-10"> 5608 // <p> 5609 // <span>spotify link</span> 5610 // <span class="spotifyLinkAddon">${spotifyLink}</span> 5611 // </p> 5612 // <p> 5613 // <span>uploaded photo</span> 5614 // <span class="spotifyFotoAddon">${spotifyFotoAddon}</span> 5615 // </p> 5616 // <p> 5617 // <span>song / playlist name</span> 5618 // <span class="spotifySongAddon">${spotifySong}</span> 5619 // </p> 5620 // <p> 5621 // <span>artist name</span> 5622 // <span class="spotifyArtistAddon">${spotifyArtist}</span> 5623 // </p> 5624 // </div> 5625 // </div>` 5626 // items.push(spotifyAddon) 5627 // } 5628 // }) 5629 // } 5630 for(let i = 0; i < data.length; i++) { 5631 if(data[i].title !== '[US] Outerbloom Acrylic Frame 4R' ) { 5632 const img = data[i].image 5633 const title = data[i].title
5634 const qty = data[i].qty 5635 const price = data[i].price 5636 const total = Number(qty) * Number(price) 5637 let addons = `<div class="addon-item" data-id="${data[i].id}" data-qty="${qty}"> 5638 <div class="addon-itm-img"> 5639 <img src="${img}" alt="" width="70"/> 5640 </div> 5641 <div class="addon-itm-title"> 5642 <span>${title}</span> 5643 </div> 5644 <div class="addon-itm-line-price"> 5645 <span>${rupiah.format(price)}</span> 5646 ${data[i].title == '[US] Outerbloom Acrylic Frame 4R' ? '' : `<span>x${qty}</span>`} 5647 </div> 5648 <div class="addon-itm-line-total"> 5649 <span>${rupiah.format(total)}</span> 5650 </div> 5651 </div>` 5652 items.push(addons) 5653 } 5654 } 5655 c.html(items) 5656 const parent = $(".purchaseAddon") 5657 const next = parent.next(".sectionPurchase") 5658 parent.addClass("hide") 5659 next.removeClass("hide") 5660 // if(items2.length === 0) return $("#popupCart").addClass("no-addon-cart") 5661 // $(".itemAddonCart").find("h4").text(`add-ons (${items2.length})`) 5662 } 5663 5664 async function listAddon() { 5665 const data = $("#itemAddons").find(".selected") 5666 let ids = [] 5667 $(data).each(function(){ 5668 const id = $(this).data("variant") 5669 const image = $(this).find(".card-image img").attr("src") 5670 const title = $(this).find(".card-meta h5").text() 5671 const qty = $(this).find(".card-qty input").val() 5672 const price = $(this).find(".card-qty input").data("price") 5673 ids.push({ 5674 id: Number(id), 5675 image, 5676 title, 5677 qty, 5678 price 5679 }) 5680 }) 5681 myAddon(ids) 5682 } 5683 5684 async function customSpotify(idx, length, type){ 5685 let isCard = false 5686 5687 let p = $(".purchasePopupSpotify") 5688 const preLink = $(".spotifyLinkFirst").val() 5689 $("[data-index]").hide() 5690 p.find(".headerPurchase h3").text(`personalize spotify photo print${length > 1 ? ` - ${idx}` : ''}`) 5691 p.find(".regulerAddons, .purchase-button").hide() 5692 p.find(".spotifyAddons").show() 5693 5694 const data = await trackUrl(preLink) 5695 5696 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://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="13" height="11" viewB
5696ox="0 0 13 11" fill="none"> 5697 <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"/> 5698 </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://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif><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://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="13" height="11" viewB
5698ox="0 0 13 11" fill="none"> 5699 <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"/> 5700 </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>` 5701 // console.log(html) 5702 5703 $(".spotifyAddons").append(html) 5704 5705 $(`[data-index=${idx}]`).show() 5706 5707 if (preLink !== '') { 5708 $(".btn-action .btn").attr("disabled", false) 5709 } else { 5710 $(".btn-action .btn").attr("disabled", true) 5711 } 5712 5713 return html 5714 5715 } 5716 5717 $(".spotifyLinkFirst").keyup(async function(){ 5718 const v = $(this).val() 5719 if(v.includes('spotify:user:spotify')) { 5720 const correct = v.split('user:spotify:')[1] 5721 console.log(correct, 'BNER') 5722 $(this).val(correct) 5723 return 5724 } 5725 if(v.includes("spotify:") || v.includes("https://open.spotify.com/")){ 5726 const data = await trackUrl(v) 5727 if(!data || !data.status) { 5728 $(this).parent().addClass("error") 5729 // $(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>`) 5730 $("#personalizeBtnSpotify .btn").attr("disabled", true) 5731 return 5732 } 5733 $(this).parent().removeClass("error") 5734 // $(this).parent().remove("txt-error") 5735 $("#personalizeBtnSpotify .btn").attr("disabled", false) 5736 } else { 5737 $("#personalizeBtnSpotify .btn").attr("disabled", true) 5738 } 5739 }) 5740 5741 $(".purchaseAddon").delegate(".next-addon", "click", function(){ 5742 const parent = $(this).parents(".purchaseAddon") 5743 const next = parent.next(".sectionPurchase") 5744 if(next.hasClass("purchaseAddress")) { 5745 if(productType !== '') { 5746 console.log("clarity event " + productType + ' purchaseDelivery') 5747 window.clarity("event", `${productType} purchaseDelivery`) 5748 // window.clarity("set", productType, `purchaseDelivery - ${productDate}`) 5749 } 5750 } 5751 const data = $("#itemAddons").find(".selected") 5752 const length = $(".quantity-cart-46067682607319").val() 5753 const checked = data.length; 5754 if(checked > 0) { 5755 if(length > 0) { 5756 $(".purchaseAddon").addClass("purchaseAddonSpotify") 5757 customSpotify(1, length, 'addon') 5758 } else { 5759 listAddon() 5760 } 5761 } else { 5762 parent.addClass("hide") 5763 next.removeClass("hide") 5764 } 5765 }) 5766 5767 $("#personalizeBtnSpotify .btn").click(async function(){ 5768 const isCity = $("#cities[required]") 5769 const isDate = $("#propDeliveryDate[required]") 5770 if((isDate.length > 0 && isCity.length > 0) && (isCity.val() === '' || isDate.val() === '')) { 5771 alert('Please choose Delivery City & Delivery Date') 5772 return 5773 } 5774 const data = await customSpotify(1, 1, 'product') 5775 if(data) { 5776 $("#backgroundPopup").fadeIn("slow"); 5777 $(".purchasePopupSpotify").fadeIn("slow"); 5778 5779 if(productType !== '') { 5780 console.log("clarity event " + productType + ' spotify') 5781 window.clarity("event", `${productType} spotify`) 5782 // window.clarity("set", productType, `purchaseDelivery - ${productDate}`) 5783 } 5784 } 5785 }) 5786 5787 function formatBytes(bytes, decimals = 2) { 5788 if (!+bytes) return '0 Bytes' 5789
5790 const k = 1024 5791 const dm = decimals < 0 ? 0 : decimals 5792 const sizes = ['B', 'KB', 'MB'] 5793 5794 const i = Math.floor(Math.log(bytes) / Math.log(k)) 5795 5796 return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}` 5797 } 5798 5799 async function trackUrl(link){ 5800 try { 5801 let trackId = link.split('/').pop().split('?')[0]; 5802 let type = '' 5803 if(link.includes("spotify:")) { 5804 const uri = link.split('spotify:')[1] 5805 trackId = uri.split(':')[1] 5806 type = uri.split(':')[0] + 's' 5807 } else { 5808 if(link.match('track')){ 5809 type = 'tracks' 5810 } else if(link.match('playlist')) { 5811 type = 'playlists' 5812 } else if(link.match('artist')) { 5813 type = 'artists' 5814 } else if(link.match('album')) { 5815 type = 'albums' 5816 } 5817 } 5818 console.log(`${host}/api/spotify/${type}/${trackId}`) 5819 const data = await getFetch(`${host}/api/spotify/${type}/${trackId}`) 5820 console.log(data, 'DATA') 5821 const song = data?.data?.name 5822 const artist = data?.data?.artist 5823 return { 5824 song, artist, type, trackId, status: data.status 5825 } 5826 } catch(err) { 5827 console.log(err) 5828 } 5829 } 5830 5831 $(".spotifyAddons").delegate(".uploadPhotoSpotify", "change", async function(){ 5832 const parent = $(this).parents("[data-index]") 5833 const preview = parent.find(".previewImage") 5834 const file = $(this)[0].files[0]; 5835 if (file) { 5836 const reader = new FileReader(); 5837 reader.onload = async function(e) { 5838 parent.find(".uploadResult label").hide() 5839 parent.find(".uploadedResult").remove() 5840 parent.find(".uploadResult").append(`<div class="uploadedResult d-flex" style="justify-content: space-between"> 5841 <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> 5842 <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;">
5842<svg fill="none" height="11" viewBox="0 0 10 11" width="10" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif"> 5843 <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 /> 5844 </svg> 5845 </span></div></div>`) 5846 parent.find(".frameImageUploaded svg").hide() 5847 parent.find(".frameImage").addClass("uploaded") 5848 preview.attr("src", e.target.result); 5849 preview.show(); 5850 let formData = new FormData(); 5851 formData.append("file", file); 5852 const response = await fetch(`${host}/api/upload?name=${file.name}&type=image/jpeg&r=${Date.parse(new Date)}`, { 5853 method: "POST", 5854 body: formData 5855 }) 5856 const result = await response.json(); 5857 if(result){ 5858 parent.find(".resultPhotoSpotify").val(result.url) 5859 } 5860 } 5861 5862 reader.readAsDataURL(file); 5863 } else { 5864 preview.hide(); 5865 } 5866 }); 5867 5868 $(".spotifyAddons").delegate(".uploadResult", "click", function(){ 5869 $(this).next("input[type=file]").trigger("click") 5870 }) 5871 5872 $(".spotifyAddons").delegate(".changeUpload", "click", function(){ 5873 $(this).parents("input[type=file]").trigger("click") 5874 }) 5875 5876 $(".spotifyAddons").delegate(".removeUpload", "click", function(){ 5877 const parent = $(this).parents("[data-index]") 5878 parent.find(".uploadPhotoSpotify").val("") 5879 parent.find(".uploadResult label").show() 5880 parent.find(".uploadedResult").remove() 5881 parent.find(".frameImageUploaded svg").show() 5882 parent.find(".previewImage").hide() 5883 parent.find(".frameImage").removeClass("uploaded") 5884 }) 5885 5886 $(".spotifyAddons").delegate("label.checkbox", "click", function(){ 5887 const parent = $(this).parents("[data-index]") 5888 parent.toggleClass("checked") 5889 }) 5890 5891 $(".spotifyAddons").delegate(".spotifyLink", "change", async function(){ 5892 const parent = $(this).parents("[data-index]") 5893 const link = $(this).val() 5894 const data = await trackUrl(link) 5895 5896 console.log(data) 5897 5898 if(data.song) { 5899 parent.find(".spotifySong").val(data.song) 5900 parent.find(".spotifyData").find("h3").text(data.song) 5901 } 5902 if(data.artist) { 5903 parent.find(".spotifyArtist").val(data.artist) 5904 parent.find(".spotifyData").find("p").text(data.artist) 5905 } 5906 parent.find(".spotifyCode img").attr("src", `https://scannables.scdn.co/uri/plain/png/FFFFFF/black/640/spotify:${data.type.slice(0, -1)}:${data.trackId}`) 5907 // https://scannables.scdn.co/uri/plain/png/FFFFFF/black/640/spotify:track:1er51HCEBhIAtoEemKuC3M 5908 if (data.status === true) { 5909 parent.find(".btn-action .btn").attr("disabled", false) 5910 } else { 5911 parent.find(".btn-action .btn").attr("disabled", true) 5912 } 5913 }) 5914
5915 $(".spotifyAddons").delegate(".spotifySong", "keyup", async function(){ 5916 const parent = $(this).parents("[data-index]") 5917 const v = $(this).val() 5918 parent.find(".spotifyData h3").text(v) 5919 }) 5920 5921 $(".spotifyAddons").delegate(".spotifyArtist", "keyup", async function(){ 5922 const parent = $(this).parents("[data-index]") 5923 const v = $(this).val() 5924 parent.find(".spotifyData p").text(v) 5925 }) 5926 5927 $(".spotifyAddons").delegate(".btn-action .btn:not(.no-addon)", "click", async function(){ 5928 const parent = $(this).parents("[data-index]") 5929 const length = parent.data("length") 5930 const index = parent.data("index") 5931 const indexNext = Number(index) + 1 5932 customSpotify(indexNext, length, 'addon') 5933 }) 5934 5935 5936 $(".spotifyAddons").delegate(".btn-action .btn.finished", "click", async function(){ 5937 const parent = $(this).parents(".purchaseAddon") 5938 const next = parent.next(".sectionPurchase") 5939 parent.addClass("hide") 5940 next.removeClass("hide") 5941 next.find(".purchase-button").show() 5942 listAddon() 5943 }) 5944 5945 $(".spotifyAddons").delegate(".back-spotify", "click", async function(){ 5946 const t = $(this).parents("[data-index]") 5947 const parent = $(this).parents(".sectionPurchase") 5948 const current = t.data("index") 5949 const prevCurrent = Number(current) - 1 5950 if(current == 1) { 5951 parent.removeClass("purchaseAddonSpotify") 5952 parent.find(".purchase-button").show() 5953 parent.find(".headerPurchase h3").text("Make It More Special with Add-Ons!") 5954 $(".spotifyAddons").empty() 5955 $(".regulerAddons").show() 5956 return 5957 } 5958 t.hide() 5959 t.prev("[data-index]").show() 5960 t.remove() 5961 parent.find(".headerPurchase h3").text(`personalize spotify photo print - ${prevCurrent}`) 5962 }) 5963 5964 $("#personalizeBtn .btn").click(async function() { 5965 loadPopupPersonalize() 5966 }); 5967 5968 $(".sectionPurchaseSpotify").delegate(".btn[data-type=card]", "click", function(){ 5969 $(".sectionPurchaseSpotify").hide() 5970 loadPopupPersonalize() 5971 }) 5972 5973 $(".close-purchase-popup").click(function() { 5974 disablePopup(); 5975 }); 5976 $("#backgroundPopup").click(function() { 5977 // disablePopup(); 5978 }); 5979 5980 $("#popupCart .close-purchase-popup").click(function() { 5981 location.reload() 5982 }); 5983 5984 $('#popupCart').on('hide.bs.modal', function (e) { 5985 location.reload() 5986 }) 5987 5988 $(".next-card").click(function(){ 5989 const parent = $(this).parents(".sectionPurchase") 5990 const next = parent.next(".sectionPurchase") 5991 parent.addClass("hide") 5992 next.removeClass("hide") 5993 }) 5994 5995 $(".back-purchase-button").click(function(){ 5996 const parent = $(this).parents(".sectionPurchase") 5997 const prev = parent.prev(".sectionPurchase") 5998 parent.addClass("hide") 5999 prev.removeClass("hide") 6000 }) 6001 6002 $(document).keypress(function(e) { 6003 if (e.keyCode == 27 && popupStatus == 1) { 6004 disablePopup(); 6005 } 6006 }); 6007 6008 const parentImg = $(".case-img-preview") 6009 const parentVid = $(".case-video-preview") 6010 6011 function readURL(input) { 6012 if (input.files && input.files[0]) { 6013 let reader = new FileReader(); 6014 6015 let type = 'image/jpeg' 6016 const size = input.files[0].size 6017 if(input.files[0].type.match('video/')){ 6018 type = 'video/mp4' 6019 if(size > 15728640) { 6020 alert('File size exceeds maximum limit 15 MB') 6021 return 6022 } 6023 } else { 6024 if(size > 5242880) { 6025 alert('File size exceeds maximum limit 5 MB') 6026 return 6027 } 6028 } 6029 6030 reader.onload = function (e) { 6031 $(".nextBtn").attr("disabled", true) 6032 if(type === 'image/jpeg') { 6033 6034 $('.placeholder-image').hide(); 6035 $('.preview-image').show() 6036 $('.preview-image').attr('src', e.target.result); 6037 6038 } else { 6039 // parentVid.find(".ajax-loader").show(); 6040 $(".steps-card-preview").addClass("loading") 6041 } 6042 } 6043 6044 6045 6046 reader.readAsDataURL(input.files[0]); 6047 } 6048 } 6049 6050 async function readURLPapan(input) { 6051 if (input.files && input.files[0]) { 6052 let reader = new FileReader(); 6053 6054 reader.onload = function (e) { 6055 $('.btn-upload-papan').siblings('label').hide(); 6056 $('.btn-upload-papan img').attr('src', e.target.result); 6057 $('.btn-upload-papan img').show(); 6058 $('.svgLogoPapan').hide(); 6059 } 6060 6061 const type = 'image/jpeg' 6062 const name = `logo-8359546319899-${Date.parse(new Date())}` 6063 6064 let formData = new FormData(); 6065 formData.append("file", input.files[0]); 6066 const response = await fetch(`${host}/api/upload?name=${name}&type=${type}&r=${randomString(3, '0123456789')}`, { 6067 method: "POST", 6068 body: formData 6069 }) 6070 const result = await response.json(); 6071 if(result) { 6072 const url = result.url 6073 $("[data-properties=papan-logo]").val(url) 6074 } 6075
6076 reader.readAsDataURL(input.files[0]); 6077 } 6078 } 6079 6080 async function readURLAddress(input) { 6081 console.log(input, 'readURLAddress') 6082 if (input.files && input.files[0]) { 6083 let reader = new FileReader(); 6084 6085 reader.onload = function (e) { 6086 $('.photo-address').attr('src', e.target.result); 6087 $('.photo-address').show(); 6088 } 6089 6090 const type = 'image/jpeg' 6091 const name = input.files[0].name?.split('.')[0] 6092 6093 let formData = new FormData(); 6094 formData.append("file", input.files[0]); 6095 const response = await fetch(`${host}/api/upload?name=${name}&type=${type}&r=${randomString(3, '0123456789')}`, { 6096 method: "POST", 6097 body: formData 6098 }) 6099 const result = await response.json(); 6100 6101 reader.readAsDataURL(input.files[0]); 6102 6103 return result 6104 } 6105 } 6106 6107 6108 6109 6110 async function addToCartUang() { 6111 var productAddOnId1 = 42122101162199; 6112 var productAddOnId2 = 42122101194967; 6113 var product_id = 8359546319899 6114 const data = { 6115 items: [ 6116 { 6117 quantity: $("#Quantity-" + productAddOnId1).val(), 6118 id: productAddOnId1, 6119 "properties": { "Time": $("#properties-time").val() } 6120 }, 6121 { 6122 quantity: $("#Quantity-" + productAddOnId2).val(), 6123 id: productAddOnId2, 6124 "properties": { "Time": $("#properties-time").val() } 6125 } 6126 ] 6127 } 6128 await fetch(window.Shopify.routes.root + 'cart/add.js', { 6129 method: 'POST', 6130 headers: { 6131 'Content-Type': 'application/json' 6132 }, 6133 body: JSON.stringify(data) 6134 }) 6135 .then(response => { 6136 console.error('Sukses Buket Uang:', response); 6137 $(".form-flower").submit() 6138 }) 6139 .catch((error) => { 6140 console.error('Error Buket Uang:', error); 6141 $(".form-flower").submit() 6142 }); 6143 } 6144 6145 async function saveCard(){ 6146 let isCard = true 6147 const kartu_penerima = $("[data-properties=penerima]").val() !== '' ? $("[data-properties=penerima]").val() : '' 6148 const kartu_pengirim = $("[data-properties=pengirim]").val() !== '' ? $("[data-properties=pengirim]").val() : '' 6149 const kartu_ucapan = $("[data-properties=ucapan]").val() !== '' ? $("[data-properties=ucapan]").val() : '' 6150 const foto = $("#properties-photo").val() 6151 const video = $("#properties-video").val() 6152 const data = JSON.stringify({ 6153 "id": qrID, 6154 "penerima": $("#properties-nama-penerima").val(), 6155 "kartu_penerima": kartu_penerima, 6156 "kartu_ucapan": kartu_ucapan, 6157 "kartu_pengirim": kartu_pengirim, 6158 "foto": foto, 6159 "video": video, 6160 "productId": "8359546319899", 6161 "order_name": "", 6162 "status": "Cart" 6163 }) 6164 6165 6166 } 6167 6168 async function additem(items){ 6169 try { 6170 let formData = items 6171 if(items?.length) { 6172 formData = { 6173 'items': items 6174 }; 6175 } 6176 6177 const add = await fetch(window.Shopify.routes.root + 'cart/add.js', { 6178 method: 'POST', 6179 headers: { 6180 'Content-Type': 'application/json', 6181 'X-Requested-With':'xmlhttprequest' /* XMLHttpRequest is ok too, it's case insensitive */ 6182 }, 6183 body: JSON.stringify(formData) 6184 }) 6185 6186 const data = await add.json(); 6187 return data 6188 } catch(err){ 6189 console.log('Error additem', err) 6190 } 6191 } 6192 6193 async function addons(){ 6194 let items = [] 6195 $(".addon-item").each(function(){ 6196 const p = $(this) 6197 const props = p.next(".propsAddonSpotify") 6198 const id = $(this).data("id") 6199 const quantity = $(this).data("qty") 6200 const propId = $("#properties-time").val() 6201 let properties = {} 6202 if(id === 46067682607319) { 6203 const link = props.find(".spotifyLinkAddon").text() 6204 const photo = props.find(".spotifyFotoAddon").text() 6205 const song = props.find(".spotifySongAddon").text() 6206 const artist = props.find(".spotifyArtistAddon").text() 6207 properties = { 6208 id: propId, 6209 "Spotify Link": link !== '' ? link : '-', 6210 "Spotify Photo": photo !== '' ? photo : '-', 6211 "Spotify Song": song !== '' ? song : '-', 6212 "Spotify Artist": artist !== '' ? artist : '-', 6213 type: 'addon' 6214 } 6215 } else { 6216 properties = { 6217 "id": propId, 6218 "type": "addon" 6219 } 6220 } 6221 items.push({ 6222 id, 6223 quantity, 6224 properties 6225 }) 6226 }) 6227 return items 6228 } 6229 6230 async function propItems() { 6231 let props = {} 6232 $("[data-properties]").each(function(e){ 6233 let elementType = this.tagName;
6234 const k = $(this).data("properties") 6235 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') { 6236 const v = elementType === 'SELECT' ? $(this).find(":selected").val() : $(this).val(); 6237 if(v !== '') { 6238 props[k] = v?.replace(/[\s\n]/g, ''); 6239 } 6240 } 6241 }) 6242 return props 6243 } 6244 6245 async function showPopupCart(items){ 6246 if(productType !== '') { 6247 console.log("clarity event " + productType + ' completeOrder') 6248 window.clarity("event", `${productType} completeOrder`) 6249 // window.clarity("set", productType, `completeOrder - ${productDate}`) 6250 } 6251 $("#popupCart").show() 6252 6253 $(".propDeliveryCity").text($("#cities").val()) 6254 $(".propDeliveryDate").text($("#propDeliveryDate").val()) 6255 $(".propDeliveryTime").text($("#propDeliveryTime").val()) 6256 $(".propDeliveryName").text($("[data-properties=nama-penerima]").val()) 6257 $(".propDeliveryAddress").text($("[data-properties=alamat-penerima]").val()) 6258 $(".propDeliveryPhone").text($("[data-properties=telepon-penerima]").val()) 6259 $(".propDeliveryProv").text($("#province").val()) 6260 $(".propDeliveryZip").text($("#zip").val()) 6261 6262 6263 6264 const addons = [] 6265 if(items && items.length > 0) { 6266 for(let i = 1; i < items.length; i++) { 6267 const spotifyLink = items[i].properties['Spotify Link'] 6268 const spotifyPhoto = items[i].properties['Spotify Photo'] 6269 const spotifySong = items[i].properties['Spotify Song'] 6270 const spotifyArtist = items[i].properties['Spotify Artist'] 6271 const price = items[i].price / 100 6272 const props = spotifyLink ? `<div class="propsAddonCart row m-0"> 6273 <div class="col-12 col-lg-2"></div> 6274 <div class="col-12 col-lg-10"> 6275 <p> 6276 <span>spotify link</span> 6277 <span>${spotifyLink}</span> 6278 </p> 6279 <p> 6280 <span>Upload Photo</span> 6281 <span>${spotifyPhoto}</span> 6282 </p> 6283 <p> 6284 <span>song / playlist name</span> 6285 <span>${spotifySong}</span> 6286 </p> 6287 <p> 6288 <span>artist name</span> 6289 <span>${spotifyArtist}</span> 6290 </p> 6291 </div> 6292 </div>` : ''; 6293 addons.push(`<div class="row m-0"> 6294 <div class="imgAddonCart col-2"> 6295 <img 6296 width="43" 6297 src="${items[i].image}" 6298 alt="" 6299 > 6300 </div> 6301 <div class="imgAddonTitlePrice col-10 align-self-center"> 6302 <div class="row justify-content-between m-0"> 6303 <div class="col-12 col-lg-8"> 6304 <h5>${items[i].title}</h5> 6305 </div> 6306 <div class="col-12 col-lg-4 text-lg-right"> 6307 <span>${rupiah.format(price)}</span> 6308 </div> 6309 </div> 6310 </div> 6311 </div>${props}`) 6312 } 6313 } 6314 // console.log(addons) 6315 if(addons.length === 0) { 6316 $(".itemAddonCart").hide() 6317 return 6318 } 6319 $(".toggleAddonCart h4").text(`add-ons (${items.length - 1})`) 6320 $(".wrapperItemAddonCart").html(addons) 6321 } 6322 6323 const money = (money) => { 6324 return new Intl.NumberFormat('id-ID', 6325 { style: 'currency', currency: 'IDR', minimumFractionDigits: 0 } 6326 ).format(money); 6327 } 6328 6329 async function showNoteMoney() { 6330 let qty50k = $("[data-properties='Uang 50k']").val() 6331 let qty100k = $("[data-properties='Uang 100k']").val() 6332 const total50k = Number(qty50k) * 50000 6333 const total100k = Number(qty100k) * 100000 6334 const total_all = total50k + total100k 6335 $(".prop50k").html(`<span>${qty50k} Lembar: <strong class="pl-1">${money(total50k)}</strong></span>`) 6336 $(".prop100k").html(`<span>${qty100k} Lembar: <strong class="pl-1">${money(total100k)}</strong></span>`) 6337 $(".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://amp.koitoto-tigan.com/" target="_blank" style="text-decoration: underline;
6337 color: #8d3f2d">Customer Service</a> to confirm with proof of payment.</p>`) 6338 } 6339 6340 async function removeImage() { 6341 const data = JSON.stringify({ 6342 "ID": $("#properties-properties-qrId").val(), 6343 "Kartu Nama Penerima": $("#properties-kartu-nama-penerima").val(), 6344 "Kartu Nama Pengirim": $("#properties-kartu-nama-pengirim").val(), 6345 "Kartu Ucapan": $("[data-properties=ucapan]").val(), 6346 "Nama Penerima": $("#properties-nama-penerima").val(), 6347 "Order Number":"", 6348 "Status":"Product", 6349 "Foto": "", 6350 "Media": $("#properties-video").val(), 6351 "Image": "8359546319899" 6352 }) 6353 const remove = updateCard(data) 6354 if(remove) { 6355 $(this).hide() 6356 $("#properties-photo").val("-") 6357 $(".placeholder-image").show() 6358 $(".preview-image").attr("src", "") 6359 } 6360 } 6361 6362 async function removeVideo() { 6363 const data = JSON.stringify({ 6364 "ID": $("#properties-properties-qrId").val(), 6365 "Kartu Nama Penerima": $("#properties-kartu-nama-penerima").val(), 6366 "Kartu Nama Pengirim": $("#properties-kartu-nama-pengirim").val(), 6367 "Kartu Ucapan": $("[data-properties=ucapan]").val(), 6368 "Nama Penerima": $("#properties-nama-penerima").val(), 6369 "Order Number":"", 6370 "Status":"Product", 6371 "Foto": $("#properties-photo").val(), 6372 "Media": "", 6373 "Image": "8359546319899" 6374 }) 6375 const remove = updateCard(data) 6376 if(remove) { 6377 $("#properties-video").val("-") 6378 $(this).find("img").hide() 6379 $(this).hide() 6380 $(this).prev("p").text("Add video to make it more special (optional)") 6381 $("#label-input-video").show() 6382 $("#label-input-video span").text("Upload Video") 6383 $(".case-video-preview p span").remove() 6384 } 6385 } 6386 6387 async function loadItemOccasion(t, occasion) { 6388 const name = occasion?.replace('greeting-card-', '') 6389 $("#kartu-ucapan").val("") 6390 $("[data-occassion]").removeClass("selected") 6391 $("[data-properties=ucapan]").val("") 6392 $("#save-card").attr("disabled", true) 6393 t.addClass("selected") 6394 $("#show_note").attr("data-card-occassion", name) 6395 $.get(`https://outerbloom.com/collections/${occasion}/products.json`, function(data, status){ 6396 const products = data.products 6397 const html = [] 6398 for(let i = 0; i < products.length; i++) { 6399 const id = products[i].id 6400 const variantId = products[i].variants[0].id 6401 const img = products[i].images[0].src 6402 const title = products[i].title 6403 const price = products[i].variants[0].price 6404 const qty = products[i].variants[0].inventory_quantity 6405 const body = `<div class="item-card${price < 1 ? ' free' : ' nofree'}${i === 0 ? ' selected' : ''}" data-id=${id}> 6406 <label for="card-${variantId}"></label> 6407 <div class="card-image"> 6408 <img src="${img}" alt="${title}" width="" height="" /> 6409 </div> 6410 <div class="card-meta text-center"> 6411 <h5>${title}</h5> 6412 <p>${price < 1 ? 'FREE' : rupiah.format(price)}</p> 6413 <input id="card-${variantId}" type="radio" name="id" value="${variantId}" data-price="${price}"> 6414 </div> 6415 </div>` 6416 html.push(body) 6417 } 6418 const withoutCard = `<div class="item-card item-without-card"> 6419 <label for="card-0"></label> 6420 <div class="card-image"> 6421 <img src="https://cdn.shopify.com/s/files/1/1589/6833/t/129/assets/without-card.png?v=1747632283" alt="Without card" width="" height="" /> 6422 </div> 6423 <div class="card-meta text-center"> 6424 <h5>
6424Send without a greeting card</h5> 6425 <input id="card-0" type="radio" name="id" value="" data-price=""> 6426 </div> 6427 </div>` 6428 $("#itemCards .items-card").html(html.length === 0 ? '<p>No Item available</p>' : html.join("")) 6429 }); 6430 } 6431 6432 $(document).ready(function(){ 6433 6434 // Observer to auto-trigger addon loading when addon section becomes visible 6435 const addonObserver = new MutationObserver(function(mutations) { 6436 mutations.forEach(function(mutation) { 6437 const target = $(mutation.target) 6438 if(target.hasClass('purchaseAddon') && mutation.type === 'attributes' && mutation.attributeName === 'class') { 6439 if(!target.hasClass('hide')) { 6440 // Addon section just became visible, ensure items are loaded 6441 setTimeout(function() { 6442 if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) { 6443 console.log("Auto-triggering addon load...") 6444 $("[data-addon=upsell-all]").trigger("click") 6445 } 6446 }, 150) 6447 } 6448 } 6449 }) 6450 }) 6451 6452 // Start observing addon section 6453 const addonSection = document.querySelector('.purchaseAddon') 6454 if(addonSection) { 6455 addonObserver.observe(addonSection, { 6456 attributes: true, 6457 attributeFilter: ['class'] 6458 }) 6459 } 6460 6461 $(".purchasePopup").delegate("#addtocart-card", "click", async function(){ 6462 6463 $(this).find("span").addClass("loading") 6464 let isValid = true 6465 $(".formAddressPurchase [required]").each(function(){ 6466 const t = $(this) 6467 const input = t.val() 6468 const p = t.parent() 6469 if(input === '') { 6470 p.addClass("error") 6471 isValid = false 6472 } 6473 }) 6474 6475 if(!isValid) { 6476 $(this).find("span").removeClass("loading") 6477 return 6478 } 6479 6480 let items = [] 6481 const mainProps = { 6482 6483 "Delivery Date": $("#propDeliveryDate").val(), 6484 "Delivery Time": $("#propDeliveryTime").val() !== '' ? $("#propDeliveryTime").val() : '-' , 6485 "Kota Pengiriman": $("#cities").val(), 6486 "Nama Penerima": $("[data-properties=nama-penerima]").val() !== '' ? $("[data-properties=nama-penerima]").val() : '-' , 6487 "Alamat Penerima": $("[data-properties=alamat-penerima]").val() !== '' ? $("[data-properties=alamat-penerima]").val() : '-' , 6488 "Kodepos": $("#zip").val() !== '' ? $("#zip").val() : '-' , 6489 "Telepon Penerima": $("[data-properties=telepon-penerima").val() !== '' ? $("[data-properties=telepon-penerima").val() : '-' , 6490 6491 6492 "Papan Nama Penerima": $("[data-properties=penerima]").val() !== '' ? $("[data-properties=penerima]").val() : '-' , 6493 "Papan Ucapan": $("[data-properties=ucapan]").val() !== '' ? $("[data-properties=ucapan]").val() : '-' , 6494 "Papan Nama Pengirim": $("[data-properties=pengirim]").val() !== '' ? $("[data-properties=pengirim]").val() : '-' , 6495 "Papan Logo": $("[data-properties=papan-logo]").val() !== '' ? $("[data-properties=papan-logo]").val() : '-' , 6496 "Foto Alamat": $("[data-properties=foto-alamat]").val() !== '' ? $("[data-properties=foto-alamat]").val() : '-' , 6497 6498 6499 "Province": $("#province").val() !== '' ? $("#province").val() : '-' , 6500 "Country": $("#properties-kota-pengiriman-country").val() !== '' ? $("#properties-kota-pengiriman-country").val() : '-' , 6501 "Shipping": $("#properties-shipping").val() !== '' ? $("#properties-shipping").val() : '-' , 6502 "Company": $("[data-properties=company]").val() !== '' ? $("[data-properties=company]").val() : '-' , 6503 "id": $("#properties-time").val() !== '' ? $("#properties-time").val() : '-', 6504 "type": 'product' 6505 } 6506 const props = await propItems() 6507 properties = {...mainProps, ...props }; 6508 const id = $("#productSelect").find('option:selected').val() 6509 console.log(id, 'main ID') 6510 const mainItem = { 6511 id: Number(id), 6512 quantity: 1, 6513 properties 6514 } 6515 items.push(mainItem) 6516 const cardId = $("#itemCards").find(".selected input").val() 6517 const cardItem = { 6518 id: Number(cardId), 6519 quantity: 1, 6520 properties: { "id": $("#properties-time").val() !== '' ? $("#properties-time").val() : '-', type: 'card' } 6521 } 6522 console.log(cardId, 'cardId') 6523 if(cardId) { 6524 items.push(cardItem) 6525 } 6526 const addon = await addons() 6527 if(addon) { 6528 for(let i = 0;
6528 i < addon.length; i++){ 6529 items.push({ 6530 id: addon[i].id, 6531 quantity: addon[i].quantity, 6532 properties: addon[i].properties 6533 }) 6534 } 6535 } 6536 const addItems = await additem(items) 6537 console.log(addItems.items, 'add items') 6538 if(addItems) { 6539 $(this).find("span").removeClass("loading") 6540 disablePopup() 6541 showPopupCart(addItems.items) 6542 6543 localStorage.setItem("items", JSON.stringify(addItems.items)) 6544 } 6545 }) 6546 6547 $("#addtocart-cart .btn").click(async function(){ 6548 const id = $("#productSelect").find('option:selected').val() 6549 const mainProps = { 6550 id: $("#properties-time").val() !== '' ? $("#properties-time").val() : '-', 6551 type: 'product' 6552 } 6553 const props = await propItems() 6554 const properties = { ...mainProps, ...props }; 6555 const items = { 6556 id: Number(id), 6557 quantity: 1, 6558 properties 6559 } 6560 const addItems = await additem(items) 6561 if(addItems) { 6562 showPopupCart(addItems.items) 6563 localStorage.setItem("items", JSON.stringify(addItems)) 6564 } 6565 }) 6566 6567 $(".formAddressPurchase [required]").change(function(){ 6568 const t = $(this) 6569 const p = t.parent() 6570 const v = t.val() 6571 if(v !== '') { 6572 p.removeClass("error") 6573 } 6574 }) 6575 6576 $("#save-card").click(async function(){ 6577 const parent = $(this).parents(".sectionPurchase") 6578 const next = parent.next(".sectionPurchase") 6579 $(this).find("span").addClass("loading") 6580 const card = await saveCard() 6581 console.log(card, 'ssaveCCC') 6582 if(card?.status === 200 || card?.status === 201) { 6583 $(".scanCard").removeClass("hide") 6584 $(this).find("span").removeClass("loading") 6585 parent.addClass("hide") 6586 next.removeClass("hide") 6587 if(next.hasClass("purchaseAddon")) { 6588 $("[data-addon=upsell-all]").click() 6589 console.log("clarity event addons") 6590 window.clarity("event", `${productType} add-ons`) 6591 // Ensure addon items are loaded when entering addon popup 6592 setTimeout(function() { 6593 if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) { 6594 $("[data-addon=upsell-all]").trigger("click") 6595 } 6596 }, 100) 6597 } 6598 if(next.hasClass("purchaseAddress")) { 6599 $("#zip").select2() 6600 } 6601 } 6602 }) 6603 6604 $("#skip-card").click(async function(){ 6605 $("#greetingCard [data-properties]").val("") 6606 $("#properties-photo").val("") 6607 $("#properties-video").val("") 6608 const parent = $(this).parents(".sectionPurchase") 6609 const next = parent.next(".sectionPurchase") 6610 parent.addClass("hide") 6611 next.removeClass("hide") 6612 // $("#itemCards").html("") 6613 removeImage() 6614 removeVideo() 6615 if(next.hasClass("purchaseAddon")) { 6616 $("[data-addon='upsell-all']").click() 6617 console.log("clarity event addons") 6618 window.clarity("event", `${productType} add-ons`) 6619 // Ensure addon items are loaded when entering addon popup 6620 setTimeout(function() { 6621 if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) { 6622 $("[data-addon='upsell-all']").trigger("click") 6623 } 6624 }, 100) 6625 } 6626 if(next.hasClass("purchaseAddress")) { 6627 $("#zip").select2() 6628 } 6629 }) 6630 6631 $("#msgCard").click(async function(){ 6632 $(this).parent().addClass("loading") 6633 let occasion = $(".selected[data-occassion]").data("occassion") 6634 occasion = occasion?.replace("greeting-card-", "") 6635 const { data } = await getFetch(`${host}/api/card/template/occasion?name=${occasion}`); 6636 const d = data?.data 6637 for(let i = 0; i < d.length; i++) { 6638 const num = Math.floor(Math.random() * (d.length - 1 + 1) + 1); 6639 const greeting = d[num]?.Greeting 6640 $(".greetingCard textarea").val(greeting) 6641 $(this).parent().removeClass("loading") 6642 } 6643 $("#save-card").attr("disabled", false) 6644 }) 6645 6646 $(".sectionPurchaseBoard .next-purchase-button").click(function(){ 6647 const parent = $(this).parents(".sectionPurchase") 6648 const next = parent.next(".sectionPurchase") 6649 parent.addClass("hide") 6650 next.removeClass("hide") 6651 }) 6652 6653 $("#editCard").click(function(){ 6654 $(".custom-card").show() 6655 $(".preview-card").hide() 6656 }) 6657 6658 $("#first_name, #last_name").change(function(){ 6659 const v = $(this).val() 6660 const first_name = $("#first_name").val() 6661 const last_name = $("#last_name").val() !== '' ? ' ' + $("#last_name").val() : '' 6662 $("[data-properties=nama-penerima]").val(first_name+last_name) 6663 }) 6664 6665 $("[data-occassion]").click(function(){ 6666 const t = $(this) 6667 const p = t.parents(".sectionPurchase") 6668 // $(".greetingCard").addClass("disabled") 6669 const occasion = t.data("occassion") 6670 loadItemOccasion(t, occasion) 6671 }) 6672 6673 $("#itemCards").delegate(".item-card:not(.item-without-card) label", "click", function(){ 6674 const id = $(this).parent(".item-card").data("id") 6675 const t = $(this).parent(".item-card") 6676 const target = t.find("input") 6677 const v = $('.item-card input[type="radio"]:checked').val(); 6678 $("#itemCards .item-card").removeClass("selected") 6679 t.addClass("selected") 6680 $("#itemCards .item-card").find("input").attr("name", "") 6681 if(target.length > 0) { 6682 target.attr("name", "id[]") 6683 $("#properties-card").val(id) 6684 $(".greetingCard").removeClass("disabled") 6685 $("#skip-card").attr("disabled", false) 6686 } else { 6687 $("#properties-card").val("") 6688 } 6689 }) 6690 6691 $("#itemCards").delegate(".item-without-card label", "click", function(){ 6692 const parent = $(this).parents(".sectionPurchase") 6693 const next = parent.next(".sectionPurchase") 6694 $(".greetingCard").addClass("disabled") 6695 parent.addClass("hide") 6696 next.removeClass("hide") 6697 $("[data-addon=upsell-all]").click() 6698 $("#zip").select2() 6699 }) 6700 6701 $("[data-properties=ucapan]").keyup(function(){ 6702 const v = $(this).val() 6703 const p = $(this).parents(".sectionPurchase") 6704 $(".purchaseAddress").find(".greetingCard textarea").val(v) 6705 if(v.length > 3) { 6706 p.find(".next-purchase-button").attr("disabled", false) 6707 } else { 6708 p.find(".next-purchase-button").attr("disabled", true) 6709 } 6710 }) 6711 6712 $("[data-properties=penerima]").keyup(function(){ 6713 const v = $(this).val() 6714 $(".purchaseAddress").find("[data-properties=penerima]").val(v) 6715 }) 6716 6717 $("[data-properties=pengirim]").keyup(function(){ 6718 const v = $(this).val() 6719 $(".purchaseAddress").find("[data-properties=pengirim]").val(v) 6720 }) 6721 6722 $(document).click(function(e){ 6723 6724 if($(e.target).closest('.wrapperPopupCart').length != 0) return false;
6725 // $('#popupCart').fadeOut('slow'); 6726 // location.reload() 6727 }); 6728 6729 $(".toggleAddonCart").click(function(){ 6730 const p = $(this).parent(".itemAddonCart") 6731 p.toggleClass("open") 6732 }) 6733 6734 $(".btnViewCart").click(function(){ 6735 window.location.href = "https://outerbloom.com/cart"; 6736 }) 6737 6738 $(".btnViewCheckout").click(async function(){ 6739 $(this).find("span").addClass("loading") 6740 let zip = $("#zip").val() 6741 const first_name = $("#first_name").val() 6742 const last_name = $("#last_name").val() 6743 const company = $("#company").val() !== '' ? $("#company").val() : '' 6744 const address1 = $("#delivery_address").val() 6745 const address2 = zip && zip !== '' ? zip?.split(' - ')[1] : '' 6746 zip = zip && zip !== '' ? zip?.split(' - ')[0] : '' 6747 const phone = $("#recipient_number").val() 6748 const city = $("#cities").val() 6749 const province = $("#province").val() 6750 const country = 'Indonesia' 6751 const ver = Date.parse(new Date()) 6752 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}` 6753 6754 const clear = await fetch(`/cart/clear.js`, {method: 'POST'}) 6755 if(clear.status === 200) { 6756 const savedItem = window.localStorage.getItem("items"); 6757 const items = JSON.parse(savedItem) 6758 const addItems = await additem(items) 6759 console.log(addItems, 'new addItems') 6760 if(addItems) { 6761 window.location.href = `https://outerbloom.com/checkout?${params}`; 6762 } 6763 } 6764 }) 6765 6766 $(".btnContinueShopping").click(function(){ 6767 window.location.href = "https://outerbloom.com/"; 6768 }) 6769 6770 if (isIOS) { 6771 $(".empty-state-card").click(function(){ 6772 $("#input-foto").trigger("click") 6773 }) 6774 $(".btn-upload-image").click(function(){ 6775 $("#input-foto").trigger("click") 6776 }) 6777 $("[for=input-video]").click(function(){ 6778 $("#input-video").trigger("click") 6779 }) 6780 $(".btn-upload-papan").click(function(){ 6781 $("#logoPapan").trigger("click") 6782 }) 6783 } 6784 6785 $("[data-properties]").each(function(){ 6786 const select = $(this).parents(".form-group").find("select") 6787 $(this).change(function(){ 6788 const name = $(this).data("properties") 6789 const v = $(this).val() 6790 if (name == 'telepon-penerima') { 6791 let phone = v.replace(/[^0-9]/g, '') 6792 $(this).val(phone); 6793 $("#properties-telepon-penerima").val(phone) 6794 $('.iti__search-input').val('-') 6795 } else { 6796 $("#properties-" + name).val(v) 6797 } 6798 }) 6799 select.on("change", function(){ 6800 const name = $(this).data("properties") 6801 const v = $(this).val() 6802 $("#properties-" + name).val(v) 6803 }) 6804 }) 6805 6806 $("#show_note").click(function(){ 6807 nameq = $("#properties-nama-penerima").val() 6808 dear = $("#properties-kartu-nama-penerima").val() 6809 card = $("[data-properties=ucapan]").val() 6810 sender = $("#properties-kartu-nama-pengirim").val() 6811 photo = $("#properties-photo").val() 6812 video = $("#properties-video").val() 6813 updateCard(nameq, dear, card, sender, photo, video, status) 6814 }) 6815 6816 $(".remove-image").click(function(e){ 6817 e.preventDefault() 6818 $(this).find("img").show() 6819 removeImage() 6820 }) 6821 6822 $(".remove-media").click(function(e){ 6823 e.preventDefault() 6824 $(this).find("img").show() 6825 removeVideo() 6826 }) 6827 6828 6829 6830 $("[data-delivery_method]").click(function(e){ 6831 e.preventDefault() 6832 const t = $(this) 6833 const data = t.data("delivery_method") 6834 $("[data-delivery_method]").removeClass("selected") 6835 t.addClass("selected") 6836 $("#cities").val("") 6837 $("#properties-delivery-date").val("-") 6838 $("#deliveryDate button").removeClass("selected") 6839 $("#full-date").val("Full Calendar â") 6840 $("#propDeliveryDate").val("") 6841 const step3 = $("#step-3") 6842 if(data.match('PickUp')) { 6843 $(".selfpickup-point").show() 6844 step3.find("[data-finished=false]").hide() 6845 $("#panel-4").hide() 6846 step3.find("[data-finished=true]").show() 6847 $("#cities").attr("required", false) 6848 $("#form-group-city").hide() 6849 $("#row-delivery-time").hide() 6850 $("#propDeliveryTime, #properties-delivery-time, #properties-nama-penerima, #properties-alamat-penerima, #properties-kodepos, #properties-kodepos, #properties-telepon-penerima").val("-") 6851 $("#propDeliveryTime").attr("required", false) 6852 // $("#deliveryDate").find("button:first-child").addClass("stop") 6853 $(".form-selfpickup").show() 6854 $(".form-delivery").hide() 6855 $(".form-delivery").find("input, textarea, select").val("") 6856 $(".form-delivery").find("input, textarea, select").attr("required", false) 6857 $("#properties-shipping").val("0") 6858 $("#noteDeliveryDate").hide() 6859 $(".form-delivery .form-control").attr("required", false) 6860 $("#stepNav4").hide() 6861 6862 $("#deliveryDate").find("button:nth-child(1)").addClass("stop") 6863 6864 6865 6866 if(timeOfDay >= 16.01){ 6867 $("#deliveryDate").find("button:nth-child(2)").addClass("stop") 6868 } 6869 } else { 6870 6871 6872 $("#deliveryDate").find("button:nth-child(1)").removeClass("stop") 6873 step3.find("[data-finished=false]").show() 6874 $("#panel-4").show() 6875 step3.find("[data-finished=true]").hide() 6876 $("#cities").attr("required", true) 6877 $(".selfpickup-point").hide() 6878 $("#form-group-city").show() 6879 $("#cities").val('').trigger('change'); 6880 $("#properties-kota-pengiriman").val("-") 6881 6882 $("#row-delivery-date, #row-delivery-time").show() 6883 $("#propDeliveryDate, #propDeliveryTime").attr("required", true) 6884 $("#deliveryDate").find("button").removeClass("stop") 6885 $(".form-selfpickup").hide() 6886 $(".form-delivery").show() 6887 $(".form-delivery").find("input, textarea, select").attr("required", true)
6888 $(".form-delivery [data-properties]").attr("readonly", false) 6889 $("#properties-kodepos").val("-") 6890 $("#properties-alamat-penerima").val("-") 6891 $(".form-delivery .form-control").attr("required", true) 6892 $(this).parents(".setup-content").attr("id", "step-1") 6893 6894 $("#stepNav4").show() 6895 } 6896 }) 6897 6898 $("[name=selfpickup]").click(function(){ 6899 const p = $(this).parents(".row-pickup") 6900 const pickupCity = $("input[name='selfpickup']:checked").val(); 6901 const pickupAddress = $("input[name='selfpickup']:checked").data("address"); 6902 const pickupZip = $("input[name='selfpickup']:checked").data("zip"); 6903 6904 $(".row-pickup").removeClass("selected") 6905 p.addClass("selected") 6906 6907 $("#properties-kota-pengiriman").val(pickupCity) 6908 $("#province").val("Jakarta") 6909 $("#properties-alamat-penerima").val(pickupAddress) 6910 $("#properties-kodepos").val(pickupZip) 6911 }) 6912 6913 $("#cities").change(function(e){ 6914 e.preventDefault() 6915 $(this).parent(".row").find("p.error").remove() 6916 $("#full-date").val("Full Calendar") 6917 $("#deliveryDate, #deliveryDateFull label ").show() 6918 $("#deliveryDateFull").removeClass("filled") 6919 $(".btnChangeDeliveryDate").addClass("hide") 6920 $("#full-date").prop('disabled', false); 6921 $("#stepNav2, #stepNav3, #stepNav4").removeClass("btn-success") 6922 $("#stepNav2, #stepNav3, #stepNav4").find("a").attr("disabled", true) 6923 const step3 = $("#step-3") 6924 $("#cityNote").remove() 6925 $("#noteDeliveryDate").hide() 6926 $("#noteDeliveryDate").empty() 6927 let v = $(this).val() 6928 let v2 = $('option:selected', this).attr('data-city'); 6929 let v3 = $('option:selected', this).attr('data-province'); 6930 let price = $('option:selected', this).attr('data-price'); 6931 $("#country").val(v) 6932 $("#properties-kota-pengiriman").val(v) 6933 $("#properties-shipping").val(price) 6934 $("#deliveryDate button, #deliveryTime button, .calendarseasonal .button").removeClass("selected") 6935 $("#properties-delivery-date, #properties-delivery-time").val("-") 6936 $("#propDeliveryDate, #propDeliveryTime").val("") 6937 let note = $('option:selected', this).attr('data-note'); 6938 if(v === 'Kota Lainnya') { 6939 $("#noteDeliveryDate").show() 6940 $("#noteDeliveryDate").text("Order akan segera dikirim. Estimasi tanggal diterima akan disesuaikan dengan waktu pengiriman oleh pihak ekspedisi ke lokasi Anda.") 6941 $("#zip").attr("required", false) 6942 $("#zip").hide() 6943 $("#propDeliveryDate, #propDeliveryTime").attr("required", false) 6944 $("#propDeliveryDate, #properties-delivery-date, #propDeliveryTime, #properties-delivery-time").val("-") 6945 $("#row-delivery-date, #row-delivery-time").hide() 6946 $("#properties-shipping").val("") 6947 // $(this).parents(".setup-content").attr("id", "step-2") 6948 6949 } else { 6950 $("#noteDeliveryDate").hide() 6951 $("#zip").attr("required", true) 6952 $("#zip").show() 6953 $("#row-delivery-date, #row-delivery-time").show() 6954 $("#propDeliveryDate, #propDeliveryTime").attr("required", true) 6955 $("#deliveryDate").find("button").removeClass("stop") 6956 // $(this).parents(".setup-content").attr("id", "step-1") 6957 6958 } 6959 6960 6961 6962 // if(v !== 'Jakarta') { 6963 // $("[data-type=upsell]").hide() 6964 // } else { 6965 // $("[data-type=upsell]").show() 6966 // } 6967 // $('.collection-addons')[0].swiper.update(); 6968 6969 6970 getProvince(v) 6971 $("#zip").html(`<option value="">Choose Postal Code</option>`) 6972 renderZip(v, v2, v3) 6973 6974 disabledSameDay() 6975 6976 6977 if(v !== 'Jakarta' && v !== 'Depok' && v !== 'Bekasi' && v !== 'Tangerang') { 6978 6979 $("#cardOccasion, #navAddon, .collection-addons").hide() 6980 6981 $("[data-addon=giftcard]").show() 6982 $("[data-addon=giftcard]").click() 6983 $("#itemAddons").show() 6984 $("#flower-step").addClass("nonjadetabek") 6985 } else { 6986 $("#cardOccasion, #navAddon, .collection-addons").show() 6987 $("[data-addon=all]").click() 6988 $("#flower-step").removeClass("nonjadetabek") 6989 } 6990 6991 if(v !== '') { 6992 $("#personalizeBtn .btn").attr("disabled", false) 6993 } else { 6994 $("#personalizeBtn .btn").attr("disabled", true) 6995 } 6996 6997 }) 6998 6999 $("#zip").change(function(e){ 7000 let v = $(this).val() 7001 var city = $("#cities").find('option:selected'); 7002 $("#properties-kodepos").val(v) 7003 if(city === 'Kota Lainnya') { 7004 $(this).attr("required", true) 7005 $("#recipient-address").val("") 7006 } 7007 }) 7008 7009 7010 var minDate = +7 7011 7012 7013 7014 $("#full-date").datepicker({ 7015 minDate, 7016 dateFormat: 'Mdd_yy', //Nop22_2021, 7017 7018 beforeShowDay: disabledays, 7019 7020 onSelect: function (date) { 7021 $("#deliveryDate, #deliveryDateFull label ").hide() 7022 $("#deliveryDateFull").addClass("filled") 7023 $(".btnChangeDeliveryDate").removeClass("hide") 7024 $("#full-date").prop('disabled', true); 7025 $('#propDeliveryDate, #properties-delivery-date').val('Kirim_'+date); 7026 $(".date-full").addClass("selected") 7027 $(".date-single, .calendar-group").removeClass("selected") 7028 $("#propDeliveryTime").val('') 7029 $("#properties-delivery-time").val('-') 7030 $(".time-single").removeClass("selected") 7031 7032 7033 } 7034 }); 7035 7036 $(".btnChangeDeliveryDate").click(function(){ 7037 $("#deliveryDate, #deliveryDateFull label ").show() 7038 $("#deliveryDateFull").removeClass("filled") 7039 $(".btnChangeDeliveryDate").addClass("hide") 7040 $("#full-date").prop('disabled', false); 7041 }) 7042 7043 $("#deliveryDate").delegate(".calendarbutton:not(.date-full)", "click", function(e){ 7044 e.preventDefault() 7045 $(this).parents("#row-delivery-date").find("p.error").remove() 7046 const fulldate = $(this).data("fulldate") 7047 const day = $(this).data("day") 7048 const date = $(this).data("date")
7049 const month = $(this).data("month") 7050 const year = $(this).data("year") 7051 const off_pagi = $(this).data("offpagi") 7052 const off_siang = $(this).data("offsiang") 7053 const off_Malam = $(this).data("offMalam") 7054 $(".calendarbutton").removeClass("selected") 7055 $(this).addClass("selected") 7056 $("#propDeliveryDate, #properties-delivery-date").val(`Kirim_${month}${date}_${year}`) 7057 $("#propDeliveryTime").val('') 7058 $("#properties-delivery-time").val('-') 7059 $(".calendarbutton2").removeClass("selected") 7060 $("#full-date").val("Full Calendar") 7061 7062 7063 if(off_pagi && timeOfDay > off_pagi) { 7064 $("[data-time=Morning]").attr("disabled", true) 7065 } else { 7066 $("[data-time=Morning]").attr("disabled", false) 7067 } 7068 if(off_siang && timeOfDay > off_siang) { 7069 $("[data-time=Afternoon]").attr("disabled", true) 7070 } else { 7071 $("[data-time=Afternoon]").attr("disabled", false) 7072 } 7073 7074 7075 7076 }) 7077 7078 if(today === 14 && timeOfDay > 17.00) { 7079 $("#deliveryDate button:first-child").attr("disabled", true) 7080 } 7081 7082 $("#deliveryTime").delegate(".calendarbutton2", "click", function(e){ 7083 e.preventDefault() 7084 const time = $(this).data("time") 7085 const date = $("#propDeliveryDate").val() 7086 if(date == '') { 7087 return alert('Silakan pilih tanggal terlebih dahulu') 7088 } 7089 $(".calendarbutton2").removeClass("selected") 7090 $(this).addClass("selected") 7091 $("#propDeliveryTime, #properties-delivery-time").val(`KirimJam_${date.replace('Kirim_','')}_${time}`) 7092 }) 7093 7094 $('textarea.has-limit, input.has-limit').keyup(function () { 7095 max = this.getAttribute("maxlength"); 7096 let len = $(this).val().length; 7097 let limit = $(this).siblings(".limit"); 7098 if (len > max) { 7099 alert('you have reached the limit'); 7100 } else { 7101 limit.text(`${len}/${max}`); 7102 } 7103 }); 7104 7105 $("#button-action-step .btn").click(function(){ 7106 $(this).find("span").text("Processing..."); 7107 }); 7108 7109 $(".finishBtn").on('click', function() { 7110 $(this).addClass("is-adding"); 7111 // $(this).click(); 7112 }); 7113 7114 $('.setup-panel .nav-item a.btn-success').trigger('click'); 7115 7116 $("#button-action .btn").click(function(){ 7117 $("#flower-step").addClass("block"); 7118 $("#button-action").hide(); 7119 }); 7120 7121 $(".close-how-order").click(function(){ 7122 $("#flower-step").removeClass("block"); 7123 $("#button-action").show(); 7124 }); 7125 7126 $("#input-foto, #input-video").change(function(e){ 7127 readURL(this); 7128 }); 7129 7130 $("#logoPapan").change(function(){ 7131 readURLPapan(this); 7132 }); 7133 7134 $("#address-upload").change(async function(){ 7135 const upload_address = await readURLAddress(this) 7136 if(upload_address) { 7137 const url = upload_address.url 7138 $(".props-address-upload").val(url) 7139 $(".form-address").addClass("address-uploaded") 7140 $(".form-address-upload").addClass("uploaded") 7141 7142 $(this).parents(".form-group").siblings(".form-group").find("[required]").attr("required", false) 7143 } 7144 }) 7145 7146 $(".address-manualy").click(function(){ 7147 $(".form-address-upload").removeClass("uploaded"); 7148 $(".photo-address").hide(); 7149 $(".form-address").removeClass("address-uploaded") 7150 $("#formAddressPurchase").find(".form-control").attr("required", true) 7151 }); 7152 7153 $(".case-video-preview").delegate(".replace-video", "click", function(){ 7154 $("#input-video").trigger("click") 7155 }) 7156 7157 $('.date-single').click(function(e) { 7158 e.preventDefault(); 7159 $('.date-single').removeClass('selected'); 7160 $('#full-date').removeClass('selected'); 7161 $(this).addClass('selected'); 7162 $('#full-date').html('Full' + '<br/>' + 'Calendar'); 7163 }); 7164 $('#full-date').click(function(e){ 7165 e.preventDefault(); 7166 $('.date-single').removeClass('selected'); 7167 $(this).addClass('selected'); 7168 }); 7169 7170 // $("tr").each(function(){ 7171 // if($(this).text().match('SKU')) { 7172 // $(".sku-product").html($(this).parents("table").html()) 7173 // } 7174 // }) 7175 7176 $("#product-image").scroll(function(){ 7177 $(".desc-add").each(function(){ 7178 const img = $(this).find("img") 7179 const src = img.data("src") 7180 img.attr("src", src) 7181 }) 7182 }) 7183 7184 $(".product-fixed").hide() 7185 7186 let target = $("#personalizeBtn") 7187 7188 7189 $(".product-meta").scroll(function() { 7190 if ($(window).scrollTop() >= target.offset().top ) { 7191 $(".product-fixed").addClass("show") 7192 } else { 7193 $(".product-fixed").removeClass("show") 7194 } 7195 }); 7196 7197 $(window).scroll(function() { 7198 if ($(window).scrollTop() >= target.offset().top ) { 7199 $(".product-fixed").addClass("show") 7200 } else { 7201 $(".product-fixed").removeClass("show") 7202 } 7203 }); 7204 }); 7205 </script>
7205 7206 7207
7207<script> 7208 // 7209 </script>
7209 7210 7211
7211<script> 7212 $(document).ready(function(){ 7213 $('table tr td').each(function(){ 7214 var texto = $(this).text(); 7215 var nextto = $(this).next("td"); 7216 var sku = $("#data-sku").val() 7217 if(texto == 'SKU'){ 7218 nextto.text(sku) 7219 } 7220 }); 7221 7222 $(".stamped-summary-actions-newquestion").text("Tulis Pertanyaan"); 7223 $(".stamped-summary-actions-newreview").text("Tulis Review"); 7224 $("#tab-questions").text("Pertanyaan"); 7225 7226 $(".freeship .icon").click(function(){ 7227 $(".fs-content").slideToggle(); 7228 $(this).parents(".freeship").toggleClass("expand"); 7229 }); 7230 7231 var $easyzoom = $('.easyzoom').easyZoom(); 7232 // Setup thumbnails example 7233 var api1 = $easyzoom.filter('.easyzoom--with-thumbnails').data('easyZoom'); 7234 $('.thumbnails').on('click', 'a', function(e) { 7235 var $this = $(this); 7236 e.preventDefault(); 7237 // Use EasyZoom's `swap` method 7238 api1.swap($this.data('standard'), $this.attr('href')); 7239 }); 7240 7241 $('#playerID').click(function(){ 7242 var videoURL = $('#VdoID').attr('src'), 7243 dataplay = $('#VdoID').attr('data-play'); 7244 7245 //for check autoplay 7246 //if not set autoplay=1 7247 if(dataplay == 0 ){ 7248 $('#VdoID').attr('src',videoURL+'?autoplay=1'); 7249 $('#VdoID').attr('data-play',1); 7250 } 7251 else{ 7252 var videoURL = $('#VdoID').attr('src'); 7253 videoURL = videoURL.replace("?autoplay=1", ""); 7254 $('#VdoID').prop('src',''); 7255 $('#VdoID').prop('src',videoURL); 7256 7257 $('#VdoID').attr('data-play',0); 7258 } 7259 7260 }); 7261 7262 $(".product-photo-thumb-video").click(function(e){ 7263 e.preventDefault(); 7264 7265 var newEmbed = $(this).attr('href'); 7266 $("#featured-image-product").addClass("img-video"); 7267 $("#ProductPhotoImg").hide(); 7268 $("#featured-image-product .video").show(); 7269 $("#featured-image-product iframe").attr('src', newEmbed); 7270 $("#VdoID")[0].src += "&autoplay=1"; 7271 }); 7272 $(".product-single__thumbnail").click(function(evt){ 7273 evt.preventDefault(); 7274 $("#featured-image-product").removeClass("img-video"); 7275 $("#ProductPhotoImg").show(); 7276 $("#featured-image-product .video").hide(); 7277 $("#featured-image-product iframe").attr('src', ''); 7278 }); 7279 7280 if($('#product-meta .short-desc > div').length >= 1){ 7281 //console.log('div detected') 7282 var replacer = $('#product-meta .short-desc > div').contents(); 7283 $('#product-meta .short-desc > div').replaceWith(replacer); 7284 7285 var cAssured = $('.c-assured').detach(); 7286 cAssured.insertAfter('.meta-sds .stock-info'); 7287 } 7288 7289 7290 7291 $(".heading-toggle").click(function(){ 7292 $(this).parent().toggleClass("open") 7293 7294 }); 7295 }); 7296 </script>
7296 7297 7298 7299
7299<script type="application/json" id="ProductJson-Product"> 7300 7301 {"id":8359546319899,"title":"KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang","handle":"blossom-shine","description":"\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eKOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat."} 7302 </script>
7302 7303 7304
7304<script type="application/json" id="VariantJson-Product"> 7305 [ 7306 7307 { 7308 "incoming": false, 7309 "next_incoming_date": null 7310 } 7311 7312 ] 7313 </script>
7313 7314 7315 7316 7317 7318 </div> 7319 7320 7321
7321<script src="//outerbloom.com/cdn/shopifycloud/storefront/assets/themes_support/option_selection-b017cd28.js" type="text/javascript"></script>
7321 7322 <style> 7323 .stamped-review-header-title, 7324 .stamped-review-header .author, 7325 .stamped-review-content-body, 7326 .stamped-sort-select, 7327 .stamped-review-header .verified-badge[data-type=buyer]:after, 7328 .stamped-review-header-byline, 7329 .stamped-review-reply-body {font-size: 14px!important;font-family: 'Barlow',sans-serif!important;} 7330 .stamped-review {margin-bottom: 0;} 7331 .stamped-review-body {padding-left: 65px;} 7332 .stamped-review:first-child {padding-top: 25px;} 7333 .stamped-review-content {clear: none;} 7334 .stamped-review-reply {margin: 15px 0 0 65px;background: #9e1313;border-left: none;} 7335 .stamped-review-reply-body {padding-left: 65px;} 7336 .stamped-review-header .author {text-transform: capitalize;} 7337 .stamped-questions .stamped-review-content {padding-left: 65px;} 7338 7339 .stamped-pagination {margin: 20px 0 0;} 7340 .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;} 7341 .stamped-pagination li a {color: #121212;padding: 13px 18px;vertical-align: middle;display: block;} 7342 .stamped-pagination li.active a {background-color: #ddd;font-weight: 400;} 7343 .stamped-pagination li:hover a {background: #ddd;} 7344 .stamped-pagination .next {border-right: 1px solid #ccc;} 7345 .stamped-pagination li:first-child {border-top-left-radius: 5px;border-bottom-left-radius: 5px;} 7346 .stamped-pagination li:last-child {border-top-right-radius: 5px;border-bottom-right-radius: 5px;} 7347 7348 #stamped-pagination-question span.page {display: inline-block;border: 1px solid #ccc;width: 47px;} 7349 #stamped-pagination-question span {font-size: 14px;} 7350 #stamped-pagination-question .page.active {padding: 12px;font-weight: 400;background: #ddd;} 7351 #stamped-pagination-question a, #stamped-pagination-question .page.active {color: #121212;padding: 13px 18px;vertical-align: middle;display: inline-block;} 7352 .stamped-pagination-deco {color: #121212;padding: 13px 18px;width: 47px;vertical-align: middle;display: inline-block;border: 1px solid #ccc;padding: 12px;} 7353 .stamped-pagination-prev, .stamped-pagination-next {position: inherit;} 7354 .stamped-pagination-prev a, .stamped-pagination-next a {width: auto!important;border: 1px solid #ccc;} 7355 7356 @media (max-width: 480px){ 7357 .stamped-review-reply {margin-left: 0!important;} 7358 select.stamped-sort-select {font-size: 13px!important;} 7359 } 7360 7361 #product-reviews .stamped-summary-ratings, #product-reviews .stamped-summary-actions, .stamped-content { 7362 display: block !important; 7363 } 7364 </style> 7365
7365<script> 7366 var selectCallback = function(variant, selector) { 7367 timber.productPage({ 7368 money_format: "Rp {{amount_no_decimals}}", 7369 variant: variant, 7370 selector: selector 7371 }); 7372 }; 7373 7374 jQuery(function($) { 7375 new Shopify.OptionSelectors('productSelect', { 7376 product: 7377 7378 7379 7380 7381 7382 {"id":8359546319899,"title":"KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang","handle":"blossom-shine","description":"\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eKOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat."}, 7383 onVariantSelected: selectCallback, 7384 enableHistoryState: true 7385 }); 7386 7387 // Add label if only one product option and it isn't 'Title'. Could be 'Size'. 7388 7389 7390 // Hide selectors if we only have 1 variant and its title contains 'Default'. 7391 7392 $('.selector-wrapper').hide(); 7393 7394 }); 7395 </script>
7395 7396 7397 7398 7399
7399<script type="application/ld+json"> 7400 { 7401 "@context": "http://schema.org", 7402 "@type": "Product", 7403 "offers": { 7404 "@type": "Offer", 7405 "availability":"https://schema.org/InStock", 7406 "price": 835000, 7407 "priceValidUntil": "05-10-2025", 7408 "priceCurrency": "IDR", 7409 "url": "https://koitigan.com/" 7410 }, 7411 "brand": { 7412 "@type": "Brand", 7413 "name": "KOITOTO" 7414 }, 7415 "sku": "8359546319899", 7416 "gtin13": "Jakarta", 7417 "name": "KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang", 7418 "description": "KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat.", 7419 "category": "KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat.", 7420 "url": "https://koitigan.com/", 7421 "image": { 7422 "@type": "ImageObject", 7423 "url": "https://outerbloom.com/cdn/shop/files/Blossom-Shine-WM_small.jpg?v=1695788426", 7424 "image": "https://outerbloom.com/cdn/shop/files/Blossom-Shine-WM_small.jpg?v=1695788426", 7425 "name": "KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang", 7426 "width": 1024, 7427 "height": 1024 7428 } 7429 } 7430 </script>
7430 7431 7432 7433 7434 7435 7436
7436<script id="bss-ltap-hide-price" type="text/javascript" > 7437 !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)}))}
7437)),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)}
7437)),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("sparklinredwholesale.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()}
7437if("redbasketb2b.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)}
7437if(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");
7437c&&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&&"sparklinredwholesale.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
7437-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");
7437i&&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
7437--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
7437opify.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&&"sparklinredwholesale.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");
7437e.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=
7437o.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");
7437if(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","sparklinredwholesale.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();
7437let 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("redbasketb2b.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()}]); 7438 </script>
7438 7439 7440 </main> 7441 7442 <div id="shopify-section-newsletter" class="shopify-section"><br> 7443 <style> 7444 #shopify-section-newsletter { 7445 background: url(https://imgmahasuhu.io/images/2026/08/21/21-cara-akses.jpeg); 7446 background-attachment: fixed; 7447 margin-bottom: 0; 7448 } 7449 input:-webkit-autofill, 7450 input:-webkit-autofill:hover, 7451 input:-webkit-autofill:active, 7452 input:-webkit-autofill:focus { 7453 -webkit-box-shadow:0 0 0 50px white inset; 7454 -webkit-text-fill-color: #ffffff; 7455 } 7456 .section-newsletter { 7457 max-width: 800px; 7458 margin: auto; 7459 padding: 50px 0; 7460 } 7461 .section-newsletter h2 { 7462 font-weight: 700; 7463 font-size: 24px; 7464 } 7465 .section-newsletter input[type="email"] { 7466 width: 100%; 7467 text-align: center; 7468 border: none; 7469 border-bottom: 1px solid #ffffff; 7470 font-size: 16px; 7471 color: #757575; 7472 background-color: #eeeeee; 7473 } 7474 .section-newsletter .row label { 7475 font-size: 14px; 7476 cursor: pointer; 7477 } 7478 .section-newsletter .radio-inline input { 7479 width: auto; 7480 } 7481 .section-newsletter .btn { 7482 width: 130px; 7483 border: 1px solid #ffffff; 7484 box-shadow: none; 7485 font-size: 16px; 7486 font-weight: 500; 7487 text-transform: uppercase; 7488 } 7489 .section-newsletter form { 7490 margin: 30px 0 60px; 7491 } 7492 .section-newsletter input[type="radio"] { 7493 position: absolute; 7494 width: 1px; 7495 height: 1px; 7496 } 7497 .section-newsletter [type="radio"]:checked + label, .section-newsletter [type="radio"]:not(:checked) + label { 7498 position: relative; 7499 padding-left: 28px; 7500 cursor: pointer; 7501 line-height: 20px; 7502 display: inline-block; 7503 color: #666; 7504 } 7505 .section-newsletter [type="radio"]:checked + label:before, .section-newsletter [type="radio"]:not(:checked) + label:before { 7506 content: ''; 7507 position: absolute; 7508 left: 0; 7509 top: 0; 7510 width: 18px; 7511 height: 18px; 7512 border: 1px solid #ddd; 7513 border-radius: 100%; 7514 background: #fff; 7515 } 7516 .section-newsletter [type="radio"]:checked + label:after, .section-newsletter [type="radio"]:not(:checked) + label:after { 7517 content: ''; 7518 width: 12px; 7519 height: 12px; 7520 background: #ffffff; 7521 position: absolute; 7522 top: 3px; 7523 left: 3px; 7524 border-radius: 100%; 7525 -webkit-transition: all 0.2s ease; 7526 transition: all 0.2s ease; 7527 } 7528 .section-newsletter [type="radio"]:not(:checked) + label:after { 7529 opacity: 0; 7530 -webkit-transform: scale(0); 7531 transform: scale(0); 7532 } 7533 .opt-newsletter {display:none;} 7534 .footer-newsletter p, .footer-newsletter p a { 7535 color: #757575; 7536 } 7537 @media (max-width:991px){ 7538 .section-newsletter h2 { 7539 font-size: 32px; 7540 } 7541 .section-newsletter input { 7542 width: 300px; 7543 font-size: 14px; 7544 } 7545 .section-newsletter { 7546 padding: 50px 20px; 7547 } 7548 } 7549 @media (max-width: 480px){ 7550 .section-newsletter input[type="email"] {font-size: 16px;} 7551 } 7552 </style> 7553 <style> 7554 .icon-img-footer { 7555 width: 80px; 7556 padding: 0px 5px; 7557 } 7558 @media (min-width: 768px) { 7559 .icon-img-footer { 7560 width: 120px; 7561 } 7562 } 7563 @media (min-width: 992px) { 7564 .icon-img-footer { 7565 width: 120px; 7566 } 7567 } 7568 7569 .button-login-daftar { 7570 display: grid; 7571 grid-template-columns: repeat(2, 1fr); 7572 font-weight: 700; 7573 } 7574 .button-login-daftar a { 7575 text-align: center; 7576 } 7577 .login, 7578 .register { 7579 color: #9e0d0d; 7580 padding: 15px 10px; 7581 font-size: 23px; 7582 } 7583 .login, 7584 .login-button { 7585 background: linear-gradient(to bottom, #9e1313 0%, #c91414 55%, #cd1f1f 100%); 7586 border: 2px solid #cd1f1f; 7587 color: #9e0d0d; /* Royal red */ 7588 text-shadow: 0 0 4px rgba(255,255,255,.8); 7589 } 7590 7591 .register, 7592 .register-button { 7593 background: linear-gradient(to bottom, #cd1f1f 0%, #9e0d0d 70%, #c91414 100%); 7594 border: 2px solid #c91414; 7595 color: #e6e6e6; /* Silver */ 7596 text-shadow: 0 0 6px rgba(192,192,192,.9), 7597 0 0 10px rgba(255,255,255,.5); 7598 } 7599 7600 7601 7602 </style> 7603 7604 <!-- wp:html --> 7605
7605<script> 7606 document.addEventListener('DOMContentLoaded', 7607 function(){const faqItems=document.querySelectorAll('.faq-item'); 7608 faqItems.forEach(item=>{const question=item.querySelector('.faq-question'); 7609 question.addEventListener('click', 7610 ()=>{const isActive=item.classList.contains('active'); 7611 faqItems.forEach(otherItem=>{otherItem.classList.remove('active')}); 7612 if(!isActive){item.classList.add('active')}})})}); 7613 </script>
7613 7614 7615 7616 <div class="page__overlay" data-view="offCanvasNavToggle" data-off-canvas="close" bis_skin_checked="1"> 7617 </div> 7618 <section class="fx-video-bg"> 7619 <video autoplay muted loop playsinline> 7620 <source src="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" type="video/mp4"> 7621 </video> 7622 <div class="fx-video-overlay"></div> 7623 7624 <div class="fx-article-wrap"> 7625 <article class="fx-article"> 7626 <section class="clean-container"> 7627 <div class="clean-wrap"> 7628 <h1 class="clean-title">KOITOTO : 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang</h1> 7629 <div class="clean-divider"></div> 7630 <div class="clean-article"> 7631 <p> <a href="https://koitigan.com/" class="link-merah">KOITOTO</a> menghadirkan pendekatan yang lebih terbuka dan terpercaya bagi pemain yang ingin mengakses bandar togel online resmi. Dengan konsep 21 Cara Akses Bandar Togel Online Resmi Tanpa Jalur Belakang, platform ini menekankan pentingnya menggunakan jalur yang sah dan terverifikasi. Tujuannya agar setiap pemain dapat bermain dengan rasa aman tanpa harus bergantung pada cara-cara tidak resmi yang berisiko.</p> 7632 7633 <p>Keunggulan utama terletak pada kemudahan akses yang disediakan secara resmi. KOITOTO menyusun berbagai alternatif masuk yang tetap berada dalam koridor legal, sehingga pemain tidak perlu mencari jalan memutar. Manfaatnya jelas: proses masuk menjadi lebih cepat, stabil, dan terhindar dari potensi masalah yang sering muncul saat menggunakan jalur tidak resmi.</p> 7634 7635 <p>Selain kemudahan, KOITOTO juga menempatkan edukasi sebagai bagian penting. Melalui informasi yang disajikan, pemain diajak memahami perbedaan antara akses resmi dan jalur belakang. Pengetahuan ini membantu pengguna membuat keputusan yang lebih bijak, sekaligus mengurangi risiko kehilangan data atau dana karena sumber yang tidak jelas.</p> 7636 7637 <p>Aspek lain yang membedakan adalah konsistensi layanan. Tidak hanya menyediakan cara akses, KOITOTO menjaga agar setiap jalur yang ditawarkan tetap aktif dan dapat diandalkan dalam jangka panjang. Pemain yang sudah terbiasa menggunakan platform ini merasakan kenyamanan karena tidak perlu terus-menerus mencari alternatif baru setiap kali muncul kendala. 7638</p> 7639 <p>Pada akhirnya, KOITOTO menawarkan solusi praktis bagi siapa saja yang ingin bermain togel online secara lebih tenang. Dengan mengedepankan 21 Cara Akses Bandar Togel Online Resmi, platform ini memberikan kombinasi antara kemudahan, keamanan, dan kepercayaan. Bagi pemain yang mengutamakan kenyamanan jangka panjang, pendekatan resmi seperti ini layak dijadikan pilihan utama.</p> 7640 </div> 7641 7642 <div class="number-generator"> 7643 7644 <div class="generator-header"> 7645 <span class="generator-icon"></span> 7646 <h2>NUMBER GENERATOR</h2> 7647 <p>Generator angka acak untuk hiburan</p> 7648 </div> 7649 7650 <div class="number-display" id="numberDisplay"> 7651 <span>----</span> 7652 </div> 7653 7654 <div class="generator-status" id="generatorStatus"> 7655 Tekan tombol untuk menghasilkan angka 7656 </div> 7657 7658 <button class="generate-btn" onclick="generateNumber()"> 7659 â¡ GENERATE ANGKA 7660 </button> 7661 7662 <div class="history-title"> 7663 RIWAYAT HASIL 7664 </div> 7665 7666 <div class="number-history" id="numberHistory"> 7667 <span>Belum ada hasil</span> 7668 </div> 7669 7670</div> 7671 7672<style> 7673.number-generator { 7674 width: 100%; 7675 max-width: 650px; 7676 margin: 25px auto; 7677 padding: 25px; 7678 box-sizing: border-box; 7679 7680 background: 7681 radial-gradient(circle at top, #3a0000, transparent 45%), 7682 linear-gradient(145deg, #050505, #160000); 7683 7684 border: 1px solid #8b0000; 7685 border-radius: 15px; 7686 7687 color: #fff; 7688 text-align: center; 7689 7690 box-shadow: 7691 0 0 25px rgba(255, 0, 0, .25), 7692 inset 0 0 30px rgba(255, 0, 0, .05); 7693} 7694 7695.generator-header { 7696 margin-bottom: 20px; 7697} 7698 7699.generator-icon { 7700 display: block; 7701 font-size: 38px; 7702 margin-bottom: 5px; 7703} 7704 7705.generator-header h2 { 7706 margin: 0; 7707 color: #ff1b1b; 7708 font-size: 25px; 7709 font-weight: 800; 7710 letter-spacing: 1px; 7711} 7712 7713.generator-header p { 7714 margin: 7px 0 0; 7715 color: #aaa; 7716 font-size: 13px; 7717} 7718 7719/* ANGKA */ 7720.number-display { 7721 width: 100%; 7722 height: 150px; 7723 display: flex; 7724 align-items: center; 7725 justify-content: center; 7726 7727 margin: 20px 0; 7728 7729 background: 7730 linear-gradient( 7731 135deg, 7732 #080808, 7733 #260000, 7734 #080808 7735 ); 7736 7737 border: 2px solid #b00000; 7738 border-radius: 12px; 7739 7740 box-shadow: 7741 0 0 20px rgba(255, 0, 0, .25), 7742 inset 0 0 25px rgba(255, 0, 0, .1); 7743} 7744 7745.number-display span { 7746 color: #ff2020; 7747 font-size: 65px; 7748 font-weight: 900; 7749 letter-spacing: 10px; 7750 text-shadow: 7751 0 0 10px rgba(255, 0, 0, .8), 7752 0 0 25px rgba(255, 0, 0, .5); 7753} 7754 7755/* STATUS */ 7756.generator-status { 7757 margin: 10px 0 18px; 7758 color: #ccc; 7759 font-size: 13px; 7760} 7761 7762/* BUTTON */ 7763.generate-btn { 7764 width: 100%; 7765 padding: 15px; 7766 7767 border: 0; 7768 border-radius: 8px; 7769 7770 background: 7771 linear-gradient( 7772 90deg, 7773 #8b0000, 7774 #ff0000, 7775 #8b0000 7776 ); 7777 7778 color: #fff; 7779 font-size: 16px; 7780 font-weight: 800; 7781 7782 cursor: pointer; 7783 7784 box-shadow: 7785 0 0 15px rgba(255, 0, 0, .35); 7786 7787 transition: .2s; 7788} 7789 7790.generate-btn:hover { 7791 transform: scale(1.02); 7792 box-shadow: 7793 0 0 25px rgba(255, 0, 0, .6); 7794} 7795 7796.generate-btn:active { 7797 transform: scale(.98); 7798} 7799 7800/* HISTORY */ 7801.history-title { 7802 margin-top: 25px; 7803 margin-bottom: 10px; 7804 7805 color: #ff2020; 7806 font-size: 13px; 7807 font-weight: bold; 7808} 7809 7810.number-history { 7811 display: flex; 7812 flex-wrap: wrap; 7813 justify-content: center; 7814 gap: 7px; 7815 7816 min-height: 35px; 7817} 7818 7819.number-history span { 7820 padding: 7px 12px; 7821 7822 background: #150000; 7823 border: 1px solid #650000; 7824 border-radius: 6px; 7825 7826 color: #ddd; 7827 font-size: 13px; 7828} 7829 7830/* ANIMASI */ 7831.generating { 7832 animation: numberSpin .12s infinite; 7833} 7834 7835@keyframes numberSpin { 7836 0% { 7837 transform: scale(1); 7838 } 7839 7840 50% { 7841 transform: scale(1.08); 7842 } 7843 7844 100% { 7845 transform: scale(1); 7846 } 7847} 7848 7849/* MOBILE */ 7850@media (max-width: 600px) { 7851 7852 .number-generator { 7853 margin: 15px 8px; 7854 width: calc(100% - 16px); 7855 padding: 18px; 7856 } 7857 7858 .generator-header h2 { 7859 font-size: 21px; 7860 } 7861 7862 .number-display { 7863 height: 125px; 7864 } 7865 7866 .number-display span { 7867 font-size: 48px; 7868 letter-spacing: 7px; 7869 } 7870 7871 .generate-btn { 7872 font-size: 14px; 7873 } 7874} 7875</style> 7876
7877<script> 7878let historyNumbers = []; 7879 7880function generateNumber() { 7881 7882 const display = document.getElementById("numberDisplay"); 7883 const numberText = display.querySelector("span"); 7884 const status = document.getElementById("generatorStatus"); 7885 const history = document.getElementById("numberHistory"); 7886 7887 display.classList.add("generating"); 7888 7889 status.innerHTML = " Sedang menghasilkan angka..."; 7890 7891 let counter = 0; 7892 7893 const animation = setInterval(function () { 7894 7895 const randomNumber = Math.floor(Math.random() * 10000) 7896 .toString() 7897 .padStart(4, "0"); 7898 7899 numberText.innerHTML = randomNumber; 7900 7901 counter++; 7902 7903 if (counter >= 20) { 7904 7905 clearInterval(animation); 7906 7907 const finalNumber = Math.floor(Math.random() * 10000) 7908 .toString() 7909 .padStart(4, "0"); 7910 7911 numberText.innerHTML = finalNumber; 7912 7913 display.classList.remove("generating"); 7914 7915 status.innerHTML = 7916 "â Angka berhasil dibuat"; 7917 7918 historyNumbers.unshift(finalNumber); 7919 7920 if (historyNumbers.length > 8) { 7921 historyNumbers.pop(); 7922 } 7923 7924 history.innerHTML = ""; 7925 7926 historyNumbers.forEach(function(number) { 7927 7928 const item = document.createElement("span"); 7929 7930 item.innerHTML = number; 7931 7932 history.appendChild(item); 7933 7934 }); 7935 7936 } 7937 7938 }, 80); 7939} 7940</script>
7940 7941 7942 7943 <section class="koitoto-block" id="faq"> 7944 <div class="koitoto-head"><span class="koitoto-dot"></span><span>FAQ Eksklusif KOITOTO</span></div> 7945 7946 <div class="koitoto-faq"> 7947 7948<details class="koitoto-item"> 7949 <summary>Apa itu KOITOTO dan mengapa disebut bandar togel online resmi?</summary> 7950 <div class="koitoto-ans">KOITOTO adalah platform togel online yang berfokus pada keamanan dan kenyamanan member. Disebut resmi karena menyediakan cara akses bandar togel online resmi tanpa jalur belakang, sehingga member tidak perlu menggunakan cara-cara berisiko. Manfaat utamanya adalah ketenangan bermain, transaksi yang lebih aman, dan pengalaman yang profesional namun tetap santai.</div> 7951</details> 7952 7953<details class="koitoto-item"> 7954 <summary>Bagaimana cara mengakses KOITOTO tanpa jalur belakang?</summary> 7955 <div class="koitoto-ans">KOITOTO menyediakan akses resmi yang dirancang agar member bisa masuk dengan mudah dan aman. Dengan mengikuti panduan yang disediakan, Anda tidak perlu melewati jalur belakang yang berpotensi berbahaya. Manfaatnya jelas: risiko phishing berkurang, koneksi lebih stabil, dan Anda bisa fokus menikmati permainan tanpa gangguan teknis.</div> 7956</details> 7957 7958<details class="koitoto-item"> 7959 <summary>Apa manfaat utama bermain di bandar togel online resmi seperti KOITOTO?</summary> 7960 <div class="koitoto-ans">Manfaat utamanya adalah keamanan data, kenyamanan akses, dan ketenangan pikiran. Karena KOITOTO menyediakan cara akses bandar togel online resmi tanpa jalur belakang, member tidak perlu khawatir soal link palsu atau gangguan akses. Selain itu, proses transaksi yang cepat dan support yang responsif membuat pengalaman bermain jauh lebih menyenangkan.</div> 7961</details> 7962 7963<details class="koitoto-item"> 7964 <summary>Apakah KOITOTO cocok untuk pemula?</summary> 7965 <div class="koitoto-ans">Sangat cocok. Platform ini dirancang agar mudah digunakan, bahkan bagi yang baru pertama kali mencoba. Dengan cara akses bandar togel online resmi tanpa jalur belakang, pemula tidak perlu bingung mencari link alternatif. Manfaatnya: proses belajar menjadi lebih cepat, risiko kesalahan lebih kecil, dan bisa langsung menikmati fitur-fitur yang tersedia dengan tenang.</div> 7966</details> 7967 7968<details class="koitoto-item"> 7969 <summary>Bagaimana keamanan data member di KOITOTO?</summary> 7970 <div class="koitoto-ans">Keamanan menjadi prioritas utama. Karena itu KOITOTO menerapkan sistem akses resmi tanpa jalur belakang. Manfaat yang dirasakan member adalah rasa aman saat login, deposit, maupun withdraw. Data pribadi terlindungi dengan baik, sehingga Anda bisa bermain dengan lebih percaya diri dan tanpa rasa khawatir.</div> 7971</details> 7972 7973<details class="koitoto-item"> 7974 <summary>Apakah proses deposit dan withdraw di KOITOTO cepat?</summary> 7975 <div class="koitoto-ans">Ya, salah satu keunggulan KOITOTO adalah proses transaksi yang relatif cepat dan lancar. Ditambah dengan cara akses bandar togel online resmi tanpa jalur belakang, member bisa melakukan deposit maupun withdraw kapan saja tanpa hambatan teknis. Manfaatnya: waktu lebih efisien dan fokus tetap pada permainan.</div> 7976</details> 7977 7978 </div> 7979</section> 7980 7981<section class="koitoto-block" id="testimoni" style="margin-top:16px"> 7982 <div class="koitoto-head"><span class="koitoto-dot"></span><span>TESTIMONI PENGGUNA KOITOTO</span></div> 7983 7984<div class="koitoto-testi-grid" aria-label="Testimoni"> 7985 7986 <article class="koitoto-testi"> 7987 <div class="koitoto-top"><div class="koitoto-title"></div><div class="koitoto-stars">â â â â â </div></div> 7988 <div class="koitoto-name">Ester</div> 7989 <div class="koitoto-text">Wah, akhirnya nemu panduan yang jelas banget. Habis coba beberapa cara di artikel KOITOTO ini, aksesnya jauh lebih enak. Nggak perlu ribet cari jalur belakang lagi, dan yang paling enak, deposit sama withdrawnya lancar. Buat yang masih ragu, coba aja salah satu caranya, bedanya kerasa.</div> 7990 </article> 7991 7992 <article class="koitoto-testi"> 7993 <div class="koitoto-top"><div class="koitoto-title"></div><div class="koitoto-stars">â â â â â </div></div> 7994 <div class="koitoto-name">Cinta</div> 7995 <div class="koitoto-text">Saya emang udah lama cari cara yang lebih aman buat akses bandar togel. Pas baca artikel 21 cara ini, langsung c
7995oba. Ternyata emang beda, lebih stabil dan nggak bikin was-was. Sekarang lebih tenang tiap kali main.</div> 7996 </article> 7997 7998 <article class="koitoto-testi"> 7999 <div class="koitoto-top"><div class="koitoto-title"></div><div class="koitoto-stars">â â â â â </div></div> 8000 <div class="koitoto-name">Sinta</div> 8001 <div class="koitoto-text">Dulu sering banget gangguan akses, kadang malah susah masuk. Setelah ikutin salah satu metode di KOITOTO, sekarang jauh lebih lega. Transaksinya juga terasa lebih aman. Worth it sih buat dicoba.</div> 8002 </article> 8003 8004 <article class="koitoto-testi"> 8005 <div class="koitoto-top"><div class="koitoto-title"></div><div class="koitoto-stars">â â â â </div></div> 8006 <div class="koitoto-name">Dian</div> 8007 <div class="koitoto-text">Sebagai yang udah main cukup lama, saya bilang panduan ini termasuk yang paling gampang dipahami. Bahasanya santai tapi tetep jelas. Pemula juga pasti bisa ngikutin. Yang penting, aksesnya jadi lebih aman dan nyaman.</div> 8008 </article> 8009 8010 <article class="koitoto-testi"> 8011 <div class="koitoto-top"><div class="koitoto-title"></div><div class="koitoto-stars">â â â â </div></div> 8012 <div class="koitoto-name">Emon</div> 8013 <div class="koitoto-text">Buat temen-temen yang masih pake cara lama, mending coba liat artikel ini. Ada banyak pilihan cara yang lebih resmi dan aman. Saya pribadi udah ngerasain bedanya, jadi nggak mau balik lagi ke jalur belakang.</div> 8014 </article> 8015 8016 <article class="koitoto-testi"> 8017 <div class="koitoto-top"><div class="koitoto-title"></div><div class="koitoto-stars">â â â â â </div></div> 8018 <div class="koitoto-name">Gina</div> 8019 <div class="koitoto-text">Yang saya suka dari artikel ini, penjelasannya nggak cuma langkah-langkah doang, tapi juga dikasih alasan kenapa cara itu lebih baik. Jadi lebih yakin pas nerapin. Sekarang mainnya lebih tenang, nggak takut akses tiba-tiba bermasalah.</div> 8020 </article> 8021</div> 8022 8023</section> 8024 8025<!-- ================================ 8026 TRENDING TAGS MERAH HITAM 8027================================ --> 8028 8029<style> 8030.trending-box { 8031 width: 100%; 8032 overflow: hidden; 8033 padding: 12px 0; 8034 box-sizing: border-box; 8035 background: #050505; 8036} 8037 8038.trending-title { 8039 margin: 0 0 12px; 8040 padding-left: 15px; 8041 color: #ff2020; 8042 font-size: 20px; 8043 font-weight: 800; 8044 text-shadow: 0 0 8px rgba(255, 0, 0, .5); 8045} 8046 8047.trending-scroll { 8048 width: 100%; 8049 overflow: hidden; 8050} 8051 8052.trending-track { 8053 display: flex; 8054 align-items: center; 8055 width: max-content; 8056 8057 animation: trendingSlide 22s linear infinite; 8058} 8059 8060.trending-track:hover { 8061 animation-play-state: paused; 8062} 8063 8064/* BADGE MERAH HITAM */ 8065.trending-tag { 8066 flex: 0 0 auto; 8067 display: inline-block; 8068 8069 margin-right: 10px; 8070 padding: 12px 20px; 8071 8072 background: linear-gradient( 8073 135deg, 8074 #ff0000, 8075 #8b0000 8076 ); 8077 8078 color: #ffffff !important; 8079 8080 border: 1px solid #ff3333; 8081 border-radius: 50px; 8082 8083 font-size: 14px; 8084 font-weight: 800; 8085 8086 text-decoration: none !important; 8087 white-space: nowrap; 8088 8089 box-shadow: 8090 0 0 8px rgba(255, 0, 0, .35), 8091 inset 0 0 8px rgba(0, 0, 0, .35); 8092 8093 transition: .2s; 8094} 8095 8096.trending-tag:hover { 8097 background: linear-gradient( 8098 135deg, 8099 #ff3333, 8100 #a00000 8101 ); 8102 8103 box-shadow: 8104 0 0 18px rgba(255, 0, 0, .65); 8105 8106 transform: scale(1.04); 8107} 8108 8109/* ANIMASI KANAN KE KIRI */ 8110@keyframes trendingSlide { 8111 0% { 8112 transform: translateX(0); 8113 } 8114 8115 100% { 8116 transform: translateX(-50%); 8117 } 8118} 8119 8120/* MOBILE */ 8121@media (max-width: 600px) { 8122 8123 .trending-box { 8124 padding: 10px 0; 8125 } 8126 8127 .trending-title { 8128 padding-left: 10px; 8129 font-size: 18px; 8130 } 8131 8132 .trending-tag { 8133 padding: 10px 16px; 8134 margin-right: 8px; 8135 font-size: 12px; 8136 } 8137 8138 .trending-track { 8139 animation-duration: 18s; 8140 } 8141} 8142</style> 8143 8144 8145<section class="trending-box"> 8146 8147 <h2 class="trending-title"> 8148 ð¥ Trending Tags 8149 </h2> 8150 8151 <div class="trending-scroll"> 8152 8153 <div class="trending-track"> 8154 8155 <!-- GROUP 1 --> 8156 8157 <a class="trending-tag" href="https://koitigan.com/"> 8158 KOITOTO 8159 </a> 8160 8161 <a class="trending-tag" href="https://koitigan.com/"> 8162 KOI TOTO 8163 </a> 8164
8165 <a class="trending-tag" href="https://koitigan.com/"> 8166 BANDAR TOGEL 8167 </a> 8168 8169 <a class="trending-tag" href="https://koitigan.com/"> 8170 TOGEL ONLINE 8171 </a> 8172 8173 <a class="trending-tag" href="https://koitigan.com/"> 8174 TOGEL RESMI 8175 </a> 8176 8177 <a class="trending-tag" href="https://koitigan.com/"> 8178 KOITOTO TOGEL 8179 </a> 8180 8181 <a class="trending-tag" href="https://koitigan.com/"> 8182 KOITOTO DAFTAR 8183 </a> 8184 8185 <a class="trending-tag" href="https://koitigan.com/"> 8186 KOITOTO LOGIN 8187 </a> 8188 8189 <a class="trending-tag" href="https://koitigan.com/"> 8190 BANDAR TOGEL ONLINE 8191 </a> 8192 8193 8194 <!-- GROUP 2 --> 8195 8196 <a class="trending-tag" href="https://koitigan.com/"> 8197 KOITOTO 8198 </a> 8199 8200 <a class="trending-tag" href="https://koitigan.com/"> 8201 KOI TOTO 8202 </a> 8203 8204 <a class="trending-tag" href="https://koitigan.com/"> 8205 BANDAR TOGEL 8206 </a> 8207 8208 <a class="trending-tag" href="https://koitigan.com/"> 8209 TOGEL ONLINE 8210 </a> 8211 8212 <a class="trending-tag" href="https://koitigan.com/"> 8213 TOGEL RESMI 8214 </a> 8215 8216 <a class="trending-tag" href="https://koitigan.com/"> 8217 KOITOTO TOGEL 8218 </a> 8219 8220 <a class="trending-tag" href="https://koitigan.com/"> 8221 KOITOTO DAFTAR 8222 </a> 8223 8224 <a class="trending-tag" href="https://koitigan.com/"> 8225 KOITOTO LOGIN 8226 </a> 8227 8228 <a class="trending-tag" href="https://koitigan.com/"> 8229 BANDAR TOGEL ONLINE 8230 </a> 8231 8232 </div> 8233 8234 </div> 8235 8236</section> 8237 </section> 8238 8239 8240 <style id="koitoto-faq-testi-styles"> 8241 .koitoto-block { 8242 position: relative; 8243 margin: 10px; 8244 } 8245 8246 .koitoto-head { 8247 display: flex; 8248 align-items: center; 8249 gap: 10px; 8250 margin: 10px 0 12px; 8251 font-weight: 800; 8252 letter-spacing: .9px; 8253 font-size: 14px; 8254 color: #ffffff; 8255 text-transform: uppercase; 8256 text-shadow: 0 0 8px rgba(192, 192, 192, .85); 8257 } 8258 8259 .koitoto-dot { 8260 width: 10px; 8261 height: 10px; 8262 border-radius: 50%; 8263 background: radial-gradient(circle at 30% 30%, #c91414, #cd1f1f 70%); 8264 box-shadow: 0 0 0 4px rgba(65, 105, 225, .22), 0 0 18px rgba(192, 192, 192, .55); 8265 } 8266 8267 .koitoto-faq { 8268 display: grid; 8269 gap: 10px; 8270 } 8271 8272 .koitoto-item { 8273 border-radius: 16px; 8274 border: 1px solid rgba(192, 192, 192, .85); 8275 background: linear-gradient(135deg, #cd1f1f, #9e0d0d); 8276 box-shadow: 0 0 0 1px rgba(255, 255, 255, .08), 0 18px 50px rgba(0, 0, 0, .45); 8277 overflow: hidden; 8278 } 8279 8280 .koitoto-item summary { 8281 list-style: none; 8282 cursor: pointer; 8283 padding: 14px 14px 14px 16px; 8284 position: relative; 8285 font-weight: 700; 8286 color: #fff; 8287 text-shadow: 0 0 6px rgba(149 17 17 / 65%); 8288 } 8289 8290 .koitoto-item summary::-webkit-details-marker { 8291 display: none; 8292 } 8293 8294 .koitoto-item summary:after { 8295 content: "+"; 8296 position: absolute; 8297 right: 14px; 8298 top: 50%; 8299 transform: translateY(-50%); 8300 width: 34px; 8301 height: 34px; 8302 display: grid; 8303 place-items: center; 8304 border-radius: 12px; 8305 background: rgba(230, 0, 2, .7); 8306 border: 1px solid rgba(192, 192, 192, .75); 8307 box-shadow: 8308 0 0 10px rgba(230, 0, 2, .7), 8309 0 0 25px rgba(230, 0, 2, .35), 8310 0 8px 18px rgba(0, 0, 0, .35); 8311 transition: transform .2s ease; 8312 } 8313 8314 .koitoto-item[open] summary:after { 8315 content: "â"; 8316 transform: translateY(-50%) rotate(180deg); 8317 } 8318 8319 .koitoto-ans { 8320 padding: 0 16px 14px; 8321 color: rgba(255, 255, 255, .9); 8322 line-height: 1.6; 8323 } 8324 8325 .koitoto-item[open] { 8326 border-color: rgba(230, 230, 230, .95); 8327 } 8328 8329 .koitoto-testi-grid { 8330 display: grid; 8331 grid-template-columns: repeat(3, minmax(0, 1fr)); 8332 gap: 12px; 8333 } 8334 8335 .koitoto-testi { 8336 border-radius: 18px; 8337 padding: 14px; 8338 background: 8339 radial-gradient(80% 80% at 0% 0%, rgba(149 17 17 / 65%), #cd1f1f 60%), 8340 radial-gradient(70% 70% at 100% 0%, rgba(255, 255, 255, .7), #de0808 55%), 8341 linear-gradient(135deg, #820808, #cd1f1f); 8342 box-shadow: 0 0 0 1px rgba(255, 255, 255, .08), 0 18px 55px rgba(0, 0, 0, .5); 8343 position: relative; 8344 overflow: hidden; 8345 } 8346 8347 .koitoto-testi:before { 8348 content: ""; 8349 position: absolute; 8350 inset: -2px; 8351 background: linear-gradient(90deg, transparent, rgba(192, 192, 192, .45), transparent); 8352 filter: blur(10px); 8353 opacity: .85; 8354 animation: neoSweep 3.6s ease-in-out infinite; 8355 } 8356 8357 @keyframes neoSweep { 8358 0% { transform: translateX(-40%); } 8359 50% { transform: translateX(40%); } 8360 100% { transform: translateX(-40%); } 8361 } 8362 8363 .koitoto-testi>* { 8364 position: relative; 8365 z-index: 1; 8366 } 8367 8368 .koitoto-top { 8369 display: flex; 8370 align-items: center; 8371 justify-content: space-between; 8372 gap: 10px; 8373 margin-bottom: 6px; 8374 } 8375 8376 .koitoto-title { 8377 font-weight: 800; 8378 color: #fff; 8379 text-shadow: 0 0 7px rgba(192, 192, 192, .7); 8380 } 8381 8382 .koitoto-stars { 8383 font-size: 13px; 8384 letter-spacing: 1px; 8385 color: #d9d9d9; 8386 text-shadow: 0 0 10px rgba(255, 255, 255, .45); 8387 } 8388 8389 .koitoto-name { 8390 font-weight: 700; 8391 color: rgba(245, 245, 245, .95); 8392 margin-bottom: 6px; 8393 } 8394 8395 .koitoto-text { 8396 color: rgba(255, 255, 255, .88); 8397 line-height: 1.55; 8398 } 8399 8400 @media (max-width: 991px) { 8401 .koitoto-testi-grid { 8402 grid-template-columns: repeat(2, minmax(0, 1fr)); 8403 } 8404 } 8405 8406 @media (max-width: 575px) { 8407 .koitoto-testi-grid { 8408 grid-template-columns: 1fr; 8409 } 8410 8411 .koitoto-item summary { 8412 padding-right: 56px; 8413 } 8414 } 8415 8416 .footer-main>.container, 8417 .cms-section .footer-main>.boxed { 8418 padding-top: 15px; 8419 } 8420 8421 .koitoto-generator-box { 8422 margin: 18px 10px; 8423 padding: 18px; 8424 border-radius: 20px; 8425 background: linear-gradient(135deg, #820808, #cd1f1f); 8426 border: 1px solid rgba(192,192,192,.85); 8427 box-shadow: 0 0 25px rgba(65,105,225,.55), inset 0 0 18px rgba(255,255,255,.08); 8428 color: #fff; 8429 text-align: center; 8430 } 8431 8432 .koitoto-generator-title { 8433 font-weight: 800; 8434 font-size: 18px; 8435 letter-spacing: 1px; 8436 text-transform: uppercase; 8437 color: #ffffff; 8438 text-shadow: 0 0 8px #c91414, 0 0 14px #cd1f1f; 8439 margin-bottom: 14px; 8440 } 8441 8442 .koitoto-number-display { 8443 display: inline-grid; 8444 grid-template-columns: repeat(4, 54px); 8445 gap: 10px; 8446 margin-bottom: 14px; 8447 } 8448 8449 .koitoto-digit { 8450 height: 58px; 8451 display: grid; 8452 place-items: center; 8453 border-radius: 14px; 8454 background: linear-gradient(180deg, #f5f5f5, #a9a9a9); 8455 color: #9e0d0d; 8456 font-size: 30px; 8457 font-weight: 900; 8458 box-shadow: 0 0 14px rgba(192,192,192,.65); 8459 } 8460 8461 .koitoto-generate-btn { 8462 border: 1px solid rgba(255,255,255,.65); 8463 background: linear-gradient(90deg, #cd1f1f, #c91414); 8464 color: #fff; 8465 font-weight: 800; 8466 padding: 10px 18px; 8467 border-radius: 999px; 8468 cursor: pointer; 8469 text-transform: uppercase; 8470 box-shadow: 0 0 16px rgba(192,192,192,.45); 8471 } 8472 8473 .koitoto-result-grid { 8474 margin: 16px 10px; 8475 display: grid; 8476 grid-template-columns: repeat(4, minmax(0, 1fr)); 8477 gap: 12px; 8478 } 8479 8480 .koitoto-result-card { 8481 border-radius: 18px; 8482 padding: 16px; 8483 text-align: center; 8484 background: 8485 radial-gradient(80% 80% at 0% 0%, rgba(192,192,192,.45), #cd1f1f 60%), 8486 linear-gradient(135deg, #820808, #de0808); 8487 border: 1px solid rgba(192,192,192,.8); 8488 box-shadow: 0 0 20px rgba(65,105,225,.45); 8489 color: #fff; 8490 } 8491 8492 .koitoto-market { 8493 font-weight: 800; 8494 font-size: 14px; 8495 text-transform: uppercase; 8496 color: #ffffff; 8497 text-shadow: 0 0 8px rgba(192,192,192,.75); 8498 margin-bottom: 8px; 8499 } 8500 8501 .koitoto-result-number { 8502 font-size: 32px; 8503 font-weight: 900; 8504 color: #e6e6e6; 8505 text-shadow: 0 0 8px #cd1f1f, 0 0 12px #c91414; 8506 margin-bottom: 6px; 8507 } 8508 8509 .koitoto-result-date { 8510 font-size: 12px; 8511 color: rgba(255,255,255,.82); 8512 } 8513 8514 @media (max-width: 991px) { 8515 .koitoto-result-grid { 8516 grid-template-columns: repeat(2, minmax(0, 1fr)); 8517 } 8518 } 8519 8520 @media (max-width: 575px) { 8521 .koitoto-number-display { 8522 grid-template-columns: repeat(4, 44px); 8523 } 8524 8525 .koitoto-digit { 8526 height: 50px; 8527 font-size: 26px; 8528 } 8529 8530 .koitoto-result-grid { 8531 grid-template-columns: 1fr; 8532 } 8533 } 8534 8535 </style> 8536
8536<script> 8537 function generate4D() { 8538 const digits = document.querySelectorAll("#koitotoGenerator .koitoto-digit"); 8539 digits.forEach(function(digit) { 8540 digit.textContent = Math.floor(Math.random() * 10); 8541 }); 8542 } 8543 </script>
8543 8544 </article> 8545 </div> 8546</section> 8547 8548 </div> 8549 8550 8551 <div class="overlay overlay-cart"></div> 8552 <div id="CartDrawer" class="drawer drawer--right"> 8553 <div class="drawer__header pl-2 pr-2"> 8554 <div class="drawer__icon-cart display-table-cell"> 8555 <a href="/cart" class=""> 8556 <svg class="icon icon-cart" version="1.1" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="32" height="32" viewBox="0 0 32 32"> <path fill="#fff" d="M13.638 23.203c0 0 3.5-2.113 3.502-4.11 0.002-2.304-2.689-3.537-3.497-1.76-0.916-1.778-3.493-1.714-3.497 0.59-0.003 1.999 3.491 5.28 3.491 5.28z"></path> <path fill="#fff" d="M8.112 9.809v16.662l11.063 2.491v-17.58l-11.063-1.573zM7.74 8.858l11.925 1.696c0.213 0.030 0.372 0.218 0.372 0.44v18.519c0 0.284-0.254 0.495-0.523 0.434l-11.925-2.685c-0.198-0.045-0.339-0.225-0.339-0.434v-17.53c0-0.27 0.231-0.477 0.49-0.44z"></path> <path fill="#fff" d="M23.7 10.046l-3.275 0.146-0.388 0.897v17.656l3.664-2.174v-16.526zM24.346 27.214l-4.526 2.685c-0.287 0.17-0.646-0.043-0.646-0.385v-18.519l0.037-0.181 0.534-1.235c0.067-0.154 0.212-0.256 0.375-0.263l3.991-0.178c0.245-0.011 0.45 0.191 0.45 0.444v17.247c0 0.159-0.082 0.306-0.216 0.385z"></path> <path fill="#000" d="M20.772 27.081l-0.501 2.383c-0.050 0.24-0.28 0.392-0.512 0.34s-0.38-0.289-0.33-0.528l0.569-2.707v-16.588c0-0.245 0.193-0.444 0.431-0.444s0.431 0.199 0.431 0.444v16.215l3.296 0.189c0.238 0.014 0.42 0.223 0.406 0.468s-0.217 0.433-0.454 0.419l-3.335-0.191z"></path> <path fill="#fff" d="M20.772 27.081l-0.501 2.383c-0.050 0.24-0.28 0.392-0.512 0.34s-0.38-0.289-0.33-0.528l0.569-2.707v-16.588c0-0.245 0.193-0.444 0.431-0.444s0.431 0.199 0.431 0.444v16.215l3.296 0.189c0.238 0.014 0.42 0.223 0.406 0.468s-0.217 0.433-0.454 0.419l-3.335-0.191z"></path> <path fill="#fff" d="M11.336 8.354l-0.257-0.333c-0.243-0.315 0.012-0.774 0.398-0.717l12.51 1.838c0.236 0.035 0.399 0.26 0.366 0.503s-0.252 0.412-0.487 0.377l-11.436-1.68 0.056 0.073c0.209 0.27 0.052 0.672-0.281 0.718l-4.467 0.607c-0.236 0.032-0.452-0.139-0.484-0.383s0.135-0.467 0.371-0.499l3.711-0.504z"></path> <path fill="#fff" d="M17.152 11.344c0.026-0.003 0.053-0.005 0.079-0.005 0.357 0 0.645 0.297 0.645 0.665s-0.288 0.665-0.645 0.665c-0.322 0-0.59-0.245-0.637-0.565-0.383-0.45-0.515-1.321-0.521-2.536-0.003-0.556 0.026-1.149 0.076-1.739 0.028-0.339 0.057-0.603 0.074-0.735 0.195-2.391-2.008-3.379-3.568-1.658-0.64 0.707-1.041 1.855-1.266 3.412-0.092 0.634-0.137 1.111-0.194 2.024 0.107 0.119 0.172 0.278 0.172 0.453 0 0.342-0.251 0.624-0.573 0.661-0.031 0.005-0.064 0.007-0.097 0.005-0.015-0.001-0.029-0.003-0.044-0.005-0.324-0.036-0.576-0.318-0.576-0.661 0-0.218 0.102-0.412 0.259-0.533 0.058-0.924 0.105-1.415 0.201-2.075 0.249-1.719 0.703-3.020 1.489-3.888 2.114-2.335 5.321-0.897 5.054 2.359-0.018 0.141-0.045 0.392-0.072 0.717-0.047 0.566-0.075 1.133-0.073 1.658 0.004 0.839 0.098 1.47 0.216 1.78z"></path> <path fill="#fff" d="M14.43 8.138c-0.008 0.245-0.207 0.438-0.445 0.43s-0.424-0.213-0.417-0.459c0.001-0.026 0.001-0.026 0.002-0.051 0.029-0.909 0.047-1.282 0.102-1.792 0.164-1.528 0.58-2.665 1.434-3.481 2.037-1.949 5.235-0.623 5.066 2.208-0.007 0.119-0.018 0.331-0.029 0.608-0.022 0.539-0.033 1.084-0.029 1.59 0.007 0.797 0.053 1.412 0.139 1.744 0.062 0.237-0.075 0.481-0.305 0.544s-0.466-0.077-0.528-0.314c-0.111-0.427-0.161-1.097-0.168-1.966-0.004-0.523 0.007-1.081 0.029-1.634 0.011-0.284 0.023-0.502 0.030-0.626 0.119-1.995-2.13-2.927-3.619-1.501-0.673 0.644-1.021 1.591-1.164 2.927-0.051 0.479-0.069 0.838-0.097 1.723-0.001 0.026-0.001 0.026-0.002 0.052z"></path> </svg> 8557 </a> 8558 </div> 8559 <div class="drawer__title h4">Keranjang Belanja</div> 8560 <div class="drawer__close js-drawer-close"> 8561 <button type="button"> 8562 <svg class="icon icon-close" version="1.1" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="32" height="32" viewBox="0 0 32 32"> 8563 <title>icon-close</title> 8564 <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> 8565 </svg> 8566 </button>
8567 </div> 8568 </div> 8569 <div id="CartContainer" class="p-2"></div> 8570 </div> 8571 8572
8572<script> 8573 8574 </script>
8574 8575
8575<script src="//outerbloom.com/cdn/shop/t/138/assets/handlebars.min.js?v=79044469952368397291752652415" defer></script>
8575 8576 <!-- /snippets/ajax-cart-template.liquid --> 8577 8578
8578<script id="CartTemplate" type="text/template"> 8579 8580 <form action="/cart" method="post" novalidate class="cart ajaxcart"> 8581 <div class="ajaxcart__inner" {{ cart.item_count }}> 8582 {{#items}} 8583 <div class="ajaxcart__product"> 8584 <div class="ajaxcart__row" data-line="{{line}}"> 8585 <div class="grid"> 8586 <div class="grid__item one-quarter"> 8587 <a href="{{url}}" class="ajaxcart__product-image"><img src="{{img}}" alt=""></a> 8588 </div> 8589 <div class="grid__item three-quarters"> 8590 <p class="d-block mb-3"> 8591 <a class="h4 d-block mb-2" href="{{url}}" class="ajaxcart__product-name">{{name}}</a> 8592 {{#if variation}} 8593 <span class="ajaxcart__product-meta p">{{variation}}</span> 8594 {{/if}} 8595 {{#properties}} 8596 {{#each this}} 8597 {{#if this}} 8598 <span class="ajaxcart__product-meta p hide">{{@key}}: {{this}}</span> 8599 {{/if}} 8600 {{/each}} 8601 {{/properties}} 8602 8603 </p> 8604 <div class="grid--full display-table"> 8605 <div class="grid__item display-table-cell one-half"> 8606 <div class="ajaxcart__qty"> 8607 <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus" data-id="{{key}}" data-qty="{{itemMinus}}" data-line="{{line}}"> 8608 <svg version="1.1" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" 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> 8609 <span class="visually-hidden">Kurangi jumlah barang</span> 8610 </button> 8611 <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]*"> 8612 <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus" data-id="{{key}}" data-line="{{line}}" data-qty="{{itemAdd}}"> 8613 <svg version="1.1" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" 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> 8614 <span class="visually-hidden">Tambahkan jumlah barang</span> 8615 </button> 8616 </div> 8617 </div> 8618 <div class="grid__item display-table-cell one-half text-right"> 8619 {{#if discountsApplied}} 8620 <small class="ajaxcart-item__price-strikethrough"><s>{{{originalLinePrice}}}</s></small> 8621 <br><span class="h4">{{{linePrice}}}</span> 8622 {{else}} 8623 <span class="h4">{{{linePrice}}}</span> 8624 {{/if}} 8625 </div> 8626 </div> 8627 {{#if discountsApplied}} 8628 <div class="grid--full display-table"> 8629 <div class="grid__item text-right"> 8630 {{#each discounts}} 8631 <small class="ajaxcart-item__discount">{{ this.title }}</small><br> 8632 {{/each}} 8633 </div> 8634 </div> 8635 {{/if}} 8636 </div> 8637 </div> 8638 </div> 8639 </div> 8640 </div> 8641 </div> 8642 {{/items}} 8643 </div> 8644 <div class="ajaxcart__footer"> 8645 <div class="grid--full cart-subtotal py-2"> 8646 <p>Subtotal</p> 8647 <h3 class="primary">{{{totalPrice}}}</h3> 8648 {{#if totalCartDiscount}} 8649 <p class="ajaxcart__savings text-center"><em>{{{totalCartDiscount}}}</em></p> 8650 {{/if}} 8651 </div> 8652 8653 <a href="/cart" class="btn btn-cta view-more btn-block cart__checkout mt-2">Checkout</a> 8654 8655 <p class="cart-checkout-shipping hide">Free Ongkir dengan belanja di atas Rp.100.000 <a href="/pages/pengiriman">detail</a></p> 8656 </div> 8657 </form> 8658 8659 </script>
8659 8660
8660<script id="AjaxQty" type="text/template"> 8661 8662 <div class="ajaxcart__qty"> 8663 <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus" data-id="{{key}}" data-qty="{{itemMinus}}"> 8664 <svg version="1.1" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="24" height="24" viewBox="0 0 32 32"> 8665 <title>icon-minus</title> 8666 <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> 8667 </svg> 8668 <span class="visually-hidden">Kurangi jumlah barang</span> 8669 </button> 8670 <input type="text" class="ajaxcart__qty-num" value="{{itemQty}}" min="0" data-id="{{key}}" aria-label="quantity" pattern="[0-9]*"> 8671 <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus" data-id="{{key}}" data-qty="{{itemAdd}}"> 8672 <svg version="1.1" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" 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> 8673 <span class="visually-hidden">Tambahkan jumlah barang</span> 8674 </button> 8675 </div> 8676 8677 </script>
8677 8678
8678<script id="JsQty" type="text/template"> 8679 8680 <div class="js-qty mx-auto mt-2"> 8681 <button type="button" class="js-qty__adjust js-qty__adjust--minus" data-id="{{key}}" data-qty="{{itemMinus}}"> 8682 <svg version="1.1" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" 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> 8683 <span class="visually-hidden">Kurangi jumlah barang</span> 8684 </button> 8685 <input type="text" class="js-qty__num" value="{{itemQty}}" min="1" data-id="{{key}}" aria-label="quantity" pattern="[0-9]*" name="{{inputName}}" id="{{inputId}}"> 8686 <button type="button" class="js-qty__adjust js-qty__adjust--plus" data-id="{{key}}" data-qty="{{itemAdd}}"> 8687 <svg version="1.1" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" 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> 8688 <span class="visually-hidden">Tambahkan jumlah barang</span> 8689 </button> 8690 </div> 8691 8692 </script>
8692 8693 8694 <style> 8695 #CartDrawer .ajaxcart__product.nExtra.Shipping.Cost .ajaxcart__qty button, 8696 #CartDrawer .ajaxcart__product.n3D2N .ajaxcart__qty button, 8697 #CartDrawer .ajaxcart__product.n4D3N .ajaxcart__qty button {display: none;} 8698 #CartDrawer .ajaxcart__product.nExtra.Shipping.Cost .ajaxcart__qty input, 8699 #CartDrawer .ajaxcart__product.n3D2N .ajaxcart__qty input, 8700 #CartDrawer .ajaxcart__product.n4D3N .ajaxcart__qty input {pointer-events: none;opacity: 0.5;} 8701 #CartDrawer .ajaxcart__product.nExtra.Shipping.Cost .ajaxcart__qty input, 8702 #CartDrawer .ajaxcart__product.n3D2N .ajaxcart__qty input, 8703 #CartDrawer .ajaxcart__product.n4D3N .ajaxcart__qty input {pointer-events: none;} 8704 </style> 8705
8705<script src="//outerbloom.com/cdn/shop/t/138/assets/ajax-cart.js?v=51128912329657147331752652452" defer></script>
8705 8706
8706<script> 8707 jQuery(function($) { 8708 ajaxCart.init({ 8709 formSelector: '#AddToCartForm', 8710 cartContainer: '#CartContainer', 8711 addToCartSelector: '#AddToCartXX', 8712 cartCountSelector: '#CartCount, #CartCount2', 8713 cartCostSelector: '#CartCost', 8714 moneyFormat: "Rp {{amount_no_decimals}}" 8715 }); 8716 }); 8717 8718 jQuery(document.body).on('afterCartLoad.ajaxCart', function(evt, cart) { 8719 // Bind to 'afterCartLoad.ajaxCart' to run any javascript after the cart has loaded in the DOM 8720 timber.RightDrawer.open(); 8721 }); 8722 </script>
8722 8723 8724 8725 8726 8727 <style> 8728 /** Search AutoComplete **/ 8729 .resultsearch .ui-menu-item[data-cat="Collection"], 8730 .resultsearch .ui-menu-item[data-cat="Collection"] {display: none;} 8731 .resultsearch .ui-widget.ui-widget-content { 8732 width: 100%; 8733 top: 48px; 8734 border: none; 8735 box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); 8736 } 8737 .resultsearch .ui-menu-item {text-align: left;} 8738 .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: #9e1313;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: #9e1313;width: 100%;display: block;color: #ffffff;}.ui-autocomplete-category.ui-menu-item[data-cat="Produk"] span {display: none;} 8739 .ui-state-active { 8740 border: none!important; 8741 background-color: #fafafa!important; 8742 color: #000!important; 8743 } 8744 .ui-menu-item a[data-cat="Collection"] {padding: 5px 12px;} 8745 .ui-menu .ui-menu-item {line-height: normal;} 8746 </style> 8747
8747<script> 8748 $(window).load(function(){ 8749 8750 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;} 8751 8752 $.widget("custom.catcomplete", $.ui.autocomplete, { 8753 _renderMenu: function (ul, items) { 8754 // have search reults split up in categories 8755 var that = this, 8756 currentCategory = ""; 8757 $.each(items, function (index, item) { 8758 if (item.category != currentCategory) { 8759 ul.append("<li class='ui-autocomplete-category' data-cat=" + item.category + ">" + "<span>" + item.category + "</span>" + "</li>"); 8760 currentCategory = item.category; 8761 } 8762 that._renderItemData(ul, item); 8763 }); 8764 } 8765 }); 8766 8767 // higlight searched for term 8768 $.ui.autocomplete.prototype._renderItem = function( ul, item ) { 8769 var term = this.element.val(), 8770 html = item.label.replace( term, "<b>$&</b>" ); 8771 return $( "<li>" ) 8772 .append(format(item)) 8773 .appendTo( ul ); 8774 }; 8775 8776 8777 var data = [ 8778 { 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: "Colle
8778ction", 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: " " }
8778,{ 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: " " }
8778,{ 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: " " }
8778,{ 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
8778dal", 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-
8778hampers", 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
8778o-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: " " }
8778,{ 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: " " }
8778,{ 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: " " }
8778,{ 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: " " }
8778,{ 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: " " }
8778,{ 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: " " }
8778,{ 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: " " }
8778,{ 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: "KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat.", category: "Collection", url: "/collections/standing-flower", images: " ", price: " " },{ label: "KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat. Bali", category: "Collection", url: "/collections/standing-flower-bali", images: " ", price: " " },{ label: "KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat. Bandung", category: "Collection", url: "/collections/standing-flower-bandung", images: " ", price: " " },{ label: "KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat. Congratulations", category: "Collection", url: "/collections/standing-flower-congratulations", images: " ", price: " " },{ label: "KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat. Demak", category: "Collection", url: "/collections/standing-flower-demak", images: " ", price: " " },{ label: "KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat. Jepara", category: "Collection", url: "/collections/standing-flower-jepara", images: " ", price: " " },{ label: "KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat. Semarang", category: "Collection", url: "/collections/standing-flower-semarang", images: " ", price: " " },{ label: "KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat. Sidoarjo", category: "Collection", url: "/collections/standing-flower-sidoarjo", images: " ", price: " " },{ label: "KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat. Surabaya", category: "Collection", url: "/collections/standing-flower-surabaya", images: " ", price: " " },{ label: "KOITOTO menghadirkan 21 cara akses bandar togel online resmi tanpa jalur belakang. Prosesnya aman, mudah, dan terpercaya. Manfaatnya akses lebih lancar, data akurat, serta pengalaman bermain yang nyaman dan profesional setiap saat. 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",
8778url: "/collections/the-novo-enchanted-dome-special-edition", images: " ", price: " " },{ label: "The Palace", category: "Collection", url: "/collections/the-palace", images: " ", price: " " },{ label: "Ties", category: "Collection", url: "/collections/dasi", images: " ", price: " " },{ label: "Tisane", category: "Collection", url: "/collections/tisane", images: " ", price: " " },{ label: "Toko Bunga Aceh", category: "Collection", url: "/collections/toko-bunga-aceh", images: " ", price: " " },{ label: "Toko Bunga Ambon", category: "Collection", url: "/collections/toko-bunga-ambon", images: " ", price: " " },{ label: "Toko Bunga Atambua", category: "Collection", url: "/collections/toko-bunga-atambua", 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: " " }
8778,{ 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: " " },{ 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
8778dal", 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: " " }, 8779 { 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" }
8779,{ 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" }
8779,{ label: "majestic red romance bouquet", category: "Produk", url: "/products/majestic-red-romance-bouquet", images: "//outerbloom.com/cdn/shop/files/OBVBUN1357_Majestic-red-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" } 8780 ]; 8781 8782 8783 $( ".header-input-search" ).catcomplete({ 8784 appendTo: ".searchResult",source: function(request, response) { 8785 var results = $.ui.autocomplete.filter(data, request.term); 8786 var predicate = function () { 8787 var counter = { Collection: 0, Produk: 0 }; 8788 var fn = function(item) {counter[item.category] += 1;return (counter[item.category] <= 5);} 8789 return fn 8790 }(); 8791 response(results.filter(predicate)); 8792 }, 8793 minLength:1, 8794 //results are clickable 8795 select: function( event, ui ) {window.location = ui.item.url;} 8796 }); 8797 $( ".header-input-search2" ).catcomplete({ 8798 appendTo: ".searchResult2", 8799 source: function(request, response) { 8800 var results = $.ui.autocomplete.filter(data, request.term); 8801 var predicate = function () { 8802 var counter = { Collection: 0, Produk: 0 }; 8803 var fn = function(item) { 8804 counter[item.category] += 1; 8805 return (counter[item.category] <= 5); 8806 } 8807 return fn 8808 }(); 8809 response(results.filter(predicate)); 8810 }, 8811 minLength:1, 8812 //results are clickable 8813 select: function( event, ui ) { 8814 window.location = ui.item.url; 8815 } 8816 }); 8817 }); 8818 </script>
8818 8819 8820
8820<script src="//outerbloom.com/cdn/shop/t/138/assets/vendors.js?v=6349622868601634021752652419" defer></script>
8820 8821
8821<script src="//outerbloom.com/cdn/shop/t/138/assets/app.js?v=136050180318808583701752652452" defer></script>
8821 8822 8823
8823<script> 8824 ( function() { 8825 var youtube = document.querySelectorAll( ".youtube" ); 8826 for (var i = 0; i < youtube.length; i++) { 8827 var source = "https://img.youtube.com/vi/"+ youtube[i].dataset.embed +"/sddefault_1x.jpg"; 8828 var datasource = "https://img.youtube.com/vi/"+ youtube[i].dataset.embed +"/sddefault.jpg"; 8829 var image = new Image(); 8830 image.src = source; 8831 image.setAttribute("data-src", datasource); 8832 image.classList.add("swiper-lazy"); 8833 image.addEventListener( "load", function() { 8834 youtube[ i ].appendChild( image ); 8835 }( i ) ); 8836 youtube[i].addEventListener( "click", function() { 8837 var iframe = document.createElement( "iframe" ); 8838 iframe.setAttribute( "width", "480" ); 8839 iframe.setAttribute( "height", "480" ); 8840 iframe.setAttribute( "frameborder", "0" ); 8841 iframe.setAttribute( "allowfullscreen", "" ); 8842 iframe.setAttribute( "src", "https://www.youtube.com/embed/"+ this.dataset.embed +"?rel=0&showinfo=0&autoplay=1" ); 8843 this.innerHTML = ""; 8844 this.appendChild( iframe ); 8845 } ); 8846 }; 8847 8848 } )(); 8849 8850 /* Lazy Load */ 8851 const mainLazyLoad = new LazyLoad({threshold:400}); 8852 $(document).ready(function(){ 8853 8854 $("selectxxx").addClass("needsclick"); 8855 FastClick.attach(document.body); 8856 8857 var $customSelects = $('.select-search'); 8858 $customSelects.select2({ 8859 templateResult: function(result, container) { 8860 if (!result.id) { 8861 return result.text; 8862 } 8863 container.className += ' needsclick'; 8864 return result.text; 8865 } 8866 }); 8867 $customSelects.each(function(index, el){$(el).data('select2').$container.find('*').addClass('needsclick');}); 8868 $(document).on('select2:open', () => { 8869 document.querySelector('.select2-search__field').focus(); 8870 }); 8871 8872 8873 $(".overlay").click(function(){ 8874 $(".js-drawer-close").click(); 8875 }); 8876 $(".site-nav--mobile .js-drawer-open-left, #NavDrawer .icon-close, .overlay-nav").click(function(){ 8877 $("html").toggleClass("nav_open"); 8878 }); 8879 8880 $('.swatch-element label').on('click', function(){ 8881 var srcImg = $(this).data('src'); 8882 $('#thumb-image-product .product-single__thumbnail').each(function(){ 8883 if ($(this).attr("href") == srcImg) { 8884 $(this).trigger('click'); 8885 } 8886 }); 8887 }); 8888 var defaultValue = $(".swatch input:checked").val() 8889 8890 $('#purchaseProduct .swatch [type=radio]').change(function() { 8891 var optionIndex = $(this).closest('.swatch').attr('data-option-index'); 8892 var optionValue = $(this).val(); 8893 console.log(optionIndex, optionValue) 8894 var value = parseInt(optionValue.split(' ')[0]) 8895 $(this) 8896 .closest('#purchaseProduct') 8897 .find('.single-option-selector') 8898 .eq(optionIndex) 8899 .val(optionValue) 8900 .trigger('change'); 8901 8902 }); 8903 8904 }); 8905 $(document).ready(function(){ 8906 $(".nav-search a").click(function(e){ 8907 e.preventDefault(); 8908 $(".icon-navsearch").toggle(); 8909 $(".icon-navclose").toggle(); 8910 $(".site-nav__item > .site-nav__link").toggle(); 8911 $(".open-search").toggle(); 8912 $(".open-search input").focus(); 8913 }); 8914 $(".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'>"); 8915 if ($(window).width() < 768) { 8916 $(".bg-products .label-tag.valentine").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-valentine_75x.png?v=82732945490105366961752652419' alt='Icon Valentine'>"); 8917 $(".bg-products .label-tag.cny").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-cny_45x.png?v=101884295148001743851752652418' alt='Icon CNY'>"); 8918 $(".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'>"); 8919 } else { 8920 $(".bg-products .label-tag.valentine").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-valentine_60x.png?v=82732945490105366961752652419' alt='Icon Valentine'>"); 8921 $(".bg-products .label-tag.cny").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-cny_60x.png?v=101884295148001743851752652418' alt='Icon CNY'>"); 8922 $(".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'>"); 8923 } 8924 $(".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'>"); 8925 $(".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'>"); 8926 }); 8927 </script>
8927 8928 8929 8930 8931 8932 8933 8934 8935
8935<script type="text/javascript"> 8936 var wishlistpage = 0; 8937 8938 var quickShop_money_format="<span class='money'>"+"Rp {{amount_no_decimals}}"+"</span>"; 8939 </script>
8939 8940 8941 <!-- Remove duplicate wishlist.js reference --> 8942 <style> 8943 .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)}} 8944 </style> 8945 8946 <div class="modal fade" id="modalwishlist0" tabindex="-1" role="dialog"> 8947 <div class="modal-dialog" role="document"> 8948 <div class="modal-content"> 8949 <div class="modal-body">Your Wishlist is empty!</div> 8950 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> 8951 </div> 8952 </div> 8953 </div> 8954 8955 <div class="wishlist-model"> 8956 <div class="modal fade" id="modalwishlist1" tabindex="-1" role="dialog" aria-hidden="true"> 8957 <div class="modal-dialog white-modal"> 8958 <div class="modal-content"> 8959 <div class="modal-header"> 8960 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 8961 <svg class="icon icon-close" version="1.1" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="32" height="32" viewBox="0 0 32 32"> 8962 <title>icon-close</title> 8963 <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> 8964 </svg> 8965 </button> 8966 </div> 8967 <div class="modal-body"> 8968 <div class="wishlist-left"> 8969 <div class="wishlist-note">
8970 <span class="cirle"><svg version="1.1" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="32" height="32" viewBox="0 0 32 32"> 8971 <title>icon-check</title> 8972 <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> 8973 </svg></span> 8974 Product added to <a href="/pages/wish-list">Wishlist</a> 8975 </div> 8976 <div class="wishlist-product"> 8977 <div class="product-left"> 8978 <div class="wishlist-image"></div> 8979 </div> 8980 <div class="product-right"> 8981 <div class="wishlist-name"></div> 8982 <div class="wishlist-price"></div> 8983 </div> 8984 </div> 8985 </div> 8986 <div class="wishlist-right"> 8987 <div class="wishlist-cart"> 8988 <form action="/cart/add" method="post" class="variants-form variants" id="AddToCartForm" enctype="multipart/form-data"> 8989 <div class="others-bottom"> 8990 <a class="btn btn-quick-shop" href="/pages/wish-list">View Wishlist</a> 8991 <button type="submit" name="add" id="AddToCart" class="btn btn-cta"> 8992 <span id="AddToCartText" class="">Beli Sekarang</span> 8993 </button> 8994 </div> 8995 <div id="wishlist-variants-container" class="variants-wrapper"></div> 8996 <div class="quantity-content"> 8997 <label>QTY</label> 8998 <input type="number" size="5" class="" name="quantity" value="1" /> 8999 </div> 9000 </form> 9001 </div> 9002 </div> 9003 </div> 9004 </div> 9005 </div> 9006 </div> 9007 </div> 9008 9009 9010 <style> 9011 .stamped-badge[data-rating="0.0"]{display: none !Important;} 9012 9013 div[data-load-type="continue"] ul.stamped-pagination li.next a, div[data-widget-load-type="continue"] ul.stamped-pagination li.next a { 9014 border-radius: 0px; 9015 } 9016 .stamped-review-body { 9017 padding-left: 0px !important; 9018 } 9019 #product-reviews .stamped-header:after { 9020 display:none !Important; 9021 } 9022 #stamped-main-widget .stamped-container, .stamped-badge-caption,#stamped-reviews-widget { 9023 font-family:inherit !important; 9024 } 9025 </style> 9026 9027 9028 9029 <div id='stamped-rewards-init' class='stamped-rewards-init' 9030 data-key-public='' 9031 9032 ></div> 9033 9034
9034<script src="//outerbloom.com/cdn/shop/t/138/assets/variant-sku-handler.js?v=91239063692820757781752652418" defer></script>
9034 9035 <!-- Remove duplicate jQuery reference and load wishlist script properly --> 9036
9036<script src="//outerbloom.com/cdn/shop/t/138/assets/wishlist-fixed.js?v=35991423018869066281754360012" defer></script>
9036 9037 9038
9038<script> 9039 function myInit(){ StampedFn.init({ apiKey: 'pubkey-hCS8DHE9QbBHhHN89WXFkuJ0Y3422D', sId: '23462' }); } 9040 </script>
9040 9041
9041<script async onload="myInit()" type="text/javascript" src="https://cdn1.stamped.io/files/widget.min.js"></script>
9041<style> 9042 .jss59 { 9043 background-color: rgba(0, 0, 0, 0.6); 9044 } 9045 .MuiBackdrop-root { 9046 top: 0; 9047 left: 0; 9048 right: 0; 9049 bottom: 0; 9050 display: flex; 9051 z-index: -1; 9052 position: fixed; 9053 align-items: center; 9054 justify-content: center; 9055 background-color: rgba(0, 0, 0, 0.5); 9056 -webkit-tap-highlight-color: transparent; 9057 } 9058 .MuiDialog-scrollPaper { 9059 display: flex; 9060 align-items: center; 9061 justify-content: center; 9062 } 9063 .MuiDialog-container { 9064 height: 100%; 9065 outline: 0; 9066 } 9067 .MuiPaper-elevation24 { 9068 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); 9069 } 9070 .MuiDialog-paper { 9071 margin: 32px; 9072 position: relative; 9073 overflow-y: auto; 9074 } 9075 .MuiDialog-paperScrollPaper { 9076 display: flex; 9077 max-height: calc(100% - 64px); 9078 flex-direction: column; 9079 } 9080 .MuiDialog-paperWidthSm { 9081 max-width: 600px; 9082 } 9083 #location-lock-dialog { 9084 top: 20%; 9085 left: 0; 9086 right: 0; 9087 width: 30%; 9088 margin: 0px auto; 9089 display: block; 9090 padding: 30px; 9091 z-index: 99999; 9092 position: fixed; 9093 font-size: 14px; 9094 background: rgb(0, 0, 0); 9095 box-shadow: rgba(11, 11, 12, 0.2) 2px 4px 5px 0px; 9096 text-align: center; 9097 font-family: Roboto, Arial, sans-serif; 9098 line-height: 1; 9099 border-radius: 8px; 9100 -webkit-font-smoothing: subpixel-antialiased; 9101 } 9102 .MuiButtonBase-root { 9103 color: inherit; 9104 border: 0; 9105 cursor: pointer; 9106 margin: 0; 9107 display: inline-flex; 9108 outline: 0; 9109 padding: 0; 9110 position: relative; 9111 align-items: center; 9112 user-select: none; 9113 border-radius: 0; 9114 vertical-align: middle; 9115 -moz-appearance: none; 9116 justify-content: center; 9117 text-decoration: none; 9118 background-color: transparent; 9119 -webkit-appearance: none; 9120 -webkit-tap-highlight-color: transparent; 9121 } 9122 .MuiIconButton-root { 9123 flex: 0 0 auto; 9124 color: rgba(0, 0, 0, 0.54); 9125 padding: 12px; 9126 overflow: visible; 9127 font-size: 1.5rem; 9128 text-align: center; 9129 transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; 9130 border-radius: 50%; 9131 } 9132 .MuiIconButton-label { 9133 width: 100%; 9134 display: flex; 9135 align-items: inherit; 9136 justify-content: inherit; 9137 } 9138 .MuiSvgIcon-root { 9139 fill: currentColor; 9140 width: 1em; 9141 height: 1em; 9142 display: inline-block; 9143 font-size: 1.5rem; 9144 transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; 9145 flex-shrink: 0; 9146 user-select: none; 9147 } 9148 .MuiTouchRipple-root { 9149 top: 0; 9150 left: 0; 9151 right: 0; 9152 bottom: 0; 9153 z-index: 0; 9154 overflow: hidden; 9155 position: absolute; 9156 border-radius: inherit; 9157 pointer-events: none; 9158 } 9159 .jss36 { 9160 color: #222222; 9161 font-size: 24px; 9162 font-family: Roboto, Arial, sans-serif; 9163 font-weight: 500; 9164 } 9165 .jss37 { 9166 color: #555555; 9167 padding: 10px 0px 0px; 9168 font-size: 14px; 9169 } 9170 .MuiFormGroup-root { 9171 display: flex; 9172 flex-wrap: wrap; 9173 flex-direction: column; 9174 } 9175 .MuiFormGroup-row { 9176 flex-direction: row; 9177 } 9178 .jss63 { 9179 width: 85%; 9180 margin: 15px auto; 9181 display: flex; 9182 padding: 11px 0px 0px; 9183 justify-content: space-evenly; 9184 } 9185 .MuiFormControlLabel-root { 9186 cursor: pointer; 9187 display: inline-flex; 9188 align-items: center; 9189 margin-left: -11px; 9190 margin-right: 16px; 9191 vertical-align: middle; 9192 -webkit-tap-highlight-color: transparent; 9193 } 9194 .jss70 { 9195 margin: 0; 9196 } 9197 .MuiButtonBase-root { 9198 color: inherit; 9199 border: 0; 9200 cursor: pointer; 9201 margin: 0; 9202 display: inline-flex; 9203 outline: 0; 9204 padding: 0; 9205 position: relative; 9206 align-items: center; 9207 user-select: none; 9208 border-radius: 0; 9209 vertical-align: middle; 9210 -moz-appearance: none; 9211 justify-content: center; 9212 text-decoration: none; 9213 background-color: transparent; 9214 -webkit-appearance: none; 9215 -webkit-tap-highlight-color: transparent; 9216 } 9217 .MuiIconButton-root { 9218 flex: 0 0 auto; 9219 color: rgba(0, 0, 0, 0.54); 9220 padding: 12px; 9221 overflow: visible; 9222 font-size: 1.5rem; 9223 text-align: center; 9224 transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; 9225 border-radius: 50%; 9226 } 9227 .MuiIconButton-colorSecondary { 9228 color: #f50057; 9229 } 9230 .jss71 { 9231 padding: 9px; 9232 } 9233 .MuiRadio-root { 9234 color: rgba(0, 0, 0, 0.54); 9235 } 9236 .jss64 { 9237 padding: 2px; 9238 } 9239 .MuiRadio-colorSecondary.Mui-checked { 9240 color: #f50057; 9241 } 9242 .MuiIconButton-label { 9243 width: 100%; 9244 display: flex; 9245 align-items: inherit; 9246 justify-content: inherit; 9247 } 9248 .MuiTypography-root { 9249 margin: 0; 9250 } 9251 .MuiTypography-body1 { 9252 font-size: 18px; 9253 font-family: Roboto,sans-serif; 9254 font-weight: 400; 9255 line-height: 1.5; 9256 } 9257 .location-popup_area-block__sp9Ws { 9258 display: -moz-box; 9259 display: flex; 9260 -moz-box-orient: vertical; 9261 -moz-box-direction: normal; 9262 flex-direction: column; 9263 -moz-box-pack: center; 9264 justify-content: center; 9265 position: relative; 9266 margin: 10px 10% 0; 9267 } 9268 .location-popup_pin-search-box__3l5mJ { 9269 width: 100%; 9270 display: -moz-box; 9271 display: flex; 9272 -moz-box-align: center; 9273 align-items: center; 9274 } 9275 .location-popup_place-icon-city__1XAX5, .location-popup_place-icon__jSG0Q { 9276 position: absolute; 9277 z-index: 999; 9278 } 9279 .location-popup_place-icon__jSG0Q { 9280 color: #ffffff; 9281 padding-left: 8px; 9282 } 9283 .location-popup_place-icon__jSG0Q svg { 9284 width: 18px; 9285 height: 18px; 9286 } 9287 .location-popup_cancel-icon__FHujU { 9288 color: #fff; 9289 right: 10px; 9290 width: 16px; 9291 cursor: pointer; 9292 height: 16px; 9293 display: none; 9294 padding: 5px; 9295 position: absolute; 9296 background: #999; 9297 text-align: center; 9298 border-radius: 50%; 9299 } 9300 .location-popup_pin-search-box__3l5mJ>div>select { 9301 /* -webkit-box-shadow: 0 0 10px #ffffff; 9302 box-shadow: 0 0 10px #ffffff; */ 9303 text-transform: capitalize; 9304 border: 1px solid #ffffff; 9305 color: #ffffff; 9306 width: 100%; 9307 margin: 0; 9308 display: -moz-box; 9309 display: flex;
9310 padding: 0 30px; 9311 -webkit-animation: location-popup_focuses__1I8Gj 1.5s ease-in-out infinite; 9312 -moz-animation: location-popup_focuses__1I8Gj 1.5s ease-in-out infinite; 9313 animation: location-popup_focuses__1I8Gj 1.5s ease-in-out infinite; 9314 font-size: 16px; 9315 border-radius: 4px; 9316 height: 44px; 9317 moz-animation: location-popup_focuses__1I8Gj ease-in-out 1.5s infinite; 9318 webkit-animation: location-popup_focuses__1I8Gj ease-in-out 1.5s infinite; 9319 } 9320 .MuiButtonBase-root { 9321 color: inherit; 9322 border: 0; 9323 cursor: pointer; 9324 margin: 0; 9325 display: inline-flex; 9326 outline: 0; 9327 padding: 0; 9328 position: relative; 9329 align-items: center; 9330 user-select: none; 9331 border-radius: 0; 9332 vertical-align: middle; 9333 -moz-appearance: none; 9334 justify-content: center; 9335 text-decoration: none; 9336 background-color: transparent; 9337 -webkit-appearance: none; 9338 -webkit-tap-highlight-color: transparent; 9339 } 9340 .MuiButton-root { 9341 color: rgba(0, 0, 0, 0.87); 9342 padding: 6px 16px; 9343 font-size: 0.875rem; 9344 min-width: 64px; 9345 box-sizing: border-box; 9346 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; 9347 font-family: Roboto,sans-serif; 9348 font-weight: 500; 9349 line-height: 1.75; 9350 border-radius: 4px; 9351 text-transform: uppercase; 9352 } 9353 .MuiButton-contained { 9354 color: rgba(0, 0, 0, 0.87); 9355 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); 9356 background-color: #e0e0e0; 9357 } 9358 .MuiButtonBase-root.Mui-disabled { 9359 cursor: default; 9360 pointer-events: none; 9361 } 9362 .MuiButton-label { 9363 width: 100%; 9364 display: inherit; 9365 align-items: inherit; 9366 justify-content: inherit; 9367 } 9368 .cartButton_login_content__2j1f7 { 9369 display: -moz-box; 9370 display: flex; 9371 text-align: center; 9372 z-index: 9; 9373 font-size: 18px; 9374 font-weight: 500; 9375 color: #fff; 9376 } 9377 9378 .jss35 { 9379 top: 5px; 9380 right: 5px; 9381 padding: 4px; 9382 position: absolute; 9383 border-radius: 50%; 9384 } 9385 .jss67 { 9386 cursor: pointer; 9387 font-size: 15px; 9388 line-height: 1.3; 9389 padding-left: 5px; 9390 } 9391 .jss69 { 9392 color: #222222; 9393 } 9394 .jss80 { 9395 color: #fff; 9396 width: 100%; 9397 height: 52px; 9398 padding: 11px 16px; 9399 font-size: 18px; 9400 min-width: 88px; 9401 min-height: 36px; 9402 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; 9403 font-weight: 500; 9404 line-weight: 1em; 9405 border-radius: 4px; 9406 text-transform: uppercase; 9407 background-color: #E87325; 9408 } 9409 @media (min-width: 991px){ 9410 .cartButton_login_content__2j1f7 { 9411 font-weight: 500; 9412 } 9413 } 9414 9415 @media (max-width: 992px) { 9416 #location-lock-dialog { 9417 width: 100%; 9418 top: auto; 9419 bottom: 0; 9420 padding-left: 0; 9421 padding-right: 0; 9422 } 9423 .MuiFormGroup-row { 9424 display: block 9425 } 9426 .MuiIconButton-label input { 9427 margin: 0; 9428 } 9429 } 9430 </style> 9431 <div role="presentation" class="MuiDialog-root jss34" style="display: none;position: fixed; z-index: 9999; inset: 0px;"> 9432 <div class="MuiBackdrop-root" aria-hidden="true" style="opacity: 1; transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;"></div> 9433 <div tabindex="0" data-test="sentinelStart"></div> 9434 <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;"> 9435 <div class="MuiPaper-root MuiDialog-paper MuiDialog-paperScrollPaper MuiDialog-paperWidthSm MuiPaper-elevation24 MuiPaper-rounded" role="dialog"> 9436 <div class="jss31 undefined" id="location-lock-dialog"> 9437 <button id="close-popup-delivery" class="MuiButtonBase-root MuiIconButton-root jss35" tabindex="0" type="button" aria-label="close"> 9438 <span class="MuiIconButton-label"> 9439 <svg class="MuiSvgIcon-root" focusable="false" viewBox="0 0 24 24" aria-hidden="true"> 9440 <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> 9441 </svg> 9442 </span>
9443 <span class="MuiTouchRipple-root"></span> 9444 </button> 9445 <div> 9446 <div class="jss36">Select Delivery Location</div> 9447 <div class="jss37">Select a delivery location to see product availability</div> 9448 </div> 9449 <div class="MuiFormGroup-root jss63 MuiFormGroup-row" role="radiogroup"> 9450 <label for="jabodetabek" class="MuiFormControlLabel-root jss45"> 9451 <span class="MuiButtonBase-root MuiIconButton-root jss46 MuiRadio-root MuiRadio-colorSecondary jss39 jss47 Mui-checked MuiIconButton-colorSecondary" aria-disabled="false"> 9452 <span class="MuiIconButton-label"> 9453 <input id="jabodetabek" class="jss49" type="radio" value="Jabodetabek" checked="" name="location"> 9454 <span class="jss41"></span> 9455 </span> 9456 <span class="MuiTouchRipple-root"></span> 9457 </span> 9458 <span class="MuiTypography-root MuiFormControlLabel-label MuiTypography-body1"> 9459 <span class="jss67 jss69">Jabodetabek</span> 9460 </span> 9461 </label> 9462 <label for="non-jabodetabek" class="MuiFormControlLabel-root jss45"> 9463 <span class="MuiButtonBase-root MuiIconButton-root jss46 MuiRadio-root MuiRadio-colorSecondary jss39 MuiIconButton-colorSecondary" aria-disabled="false"> 9464 <span class="MuiIconButton-label"> 9465 <input id="non-jabodetabek" class="jss49" type="radio" value="Outside Jabodetabek" name="location"> 9466 <span class="jss40"></span> 9467 </span> 9468 <span class="MuiTouchRipple-root"></span> 9469 </span> 9470 <span class="MuiTypography-root MuiFormControlLabel-label MuiTypography-body1"> 9471 <span class="jss67 jss68">Outside Jabodetabek</span> 9472 </span> 9473 </label> 9474 </div> 9475 <div> 9476 <div class="MuiGrid-root location-popup_area-block__sp9Ws"> 9477 <div class="MuiGrid-root location-popup_pin-search-box__3l5mJ false"> 9478 <div class="MuiGrid-root location-popup_place-icon__jSG0Q"> 9479 <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> 9480 </div> 9481 <div class="MuiGrid-root location-popup_cancel-icon__FHujU false"> 9482 <i class="material-icons location-popup_clear-pin__s1dRc">close</i> 9483 </div> 9484 <div style="width: 100%;"> 9485 <select id="choose-location" class="form-control"> 9486 <option value="">Choose Location</option> 9487 <option value="jakarta">Jakarta</option> 9488 <option value="bogor">Bogor</option> 9489 <option value="depok">Depok</option> 9490 <option value="tangerang">Tangerang</option> 9491 <option value="bekasi">Bekasi</option> 9492 </select> 9493 </div> 9494 </div> 9495 </div> 9496 </div> 9497 <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=""> 9498 <span class="MuiButton-label"> 9499 <span class=""></span> 9500 <span id="location-lock-continue-btn" class="cartButton_login_content__2j1f7" style="font-weight: 500;" data-content="">Continue Shopping</span> 9501 </span> 9502 </button> 9503 </div> 9504 </div> 9505 </div> 9506 <div tabindex="0" data-test="sentinelEnd"></div> 9507 </div> 9508 9509
9509<script> 9510 const jabodetabek = [ 9511 { 9512 "code": "jakarta", 9513 "city": "jakarta", 9514 "zip": [] 9515 }, 9516 { 9517 "code": "bogor", 9518 "city": "bogor", 9519 "zip": [] 9520 }, 9521 { 9522 "code": "depok", 9523 "city": "depok", 9524 "zip": [] 9525 }, 9526 { 9527 "code": "tangerang", 9528 "city": "tangerang", 9529 "zip": [] 9530 }, 9531 { 9532 "code": "bekasi", 9533 "city": "bekasi", 9534 "zip": [] 9535 } 9536 ] 9537 let cityNonJabodetabek = [ 9538 9539 9540 "pengiriman_aceh", 9541 9542 9543 9544 9545 9546 "pengiriman_ambon", 9547 9548 9549 9550 9551 9552 "pengiriman_atambua", 9553 9554 9555 9556 9557 9558 "pengiriman_badung", 9559 9560 9561 9562 9563 9564 "pengiriman_bali", 9565 9566 9567 9568 9569 9570 "pengiriman_balikpapan", 9571 9572 9573 9574 9575 9576 "pengiriman_bandar lampung", 9577 9578 9579 9580 9581 9582 "pengiriman_bandung", 9583 9584 9585 9586 9587 9588 "pengiriman_bandung barat", 9589 9590 9591 9592 9593 9594 "pengiriman_banjarmasin", 9595 9596 9597 9598 9599 9600 "pengiriman_banyumas", 9601 9602 9603 9604 9605 9606 "pengiriman_banyuwangi", 9607 9608 9609 9610 9611 9612 "pengiriman_batam", 9613 9614 9615 9616 9617 9618 9619 9620 9621 9622 "pengiriman_biak", 9623 9624 9625 9626 9627 9628 "pengiriman_binjai", 9629 9630 9631 9632 9633 9634 "pengiriman_blitar", 9635 9636 9637 9638 9639 9640 "pengiriman_blora", 9641 9642 9643 9644 9645 9646 9647 9648 9649 9650 "pengiriman_bojonegoro", 9651 9652 9653 9654 9655 9656 "pengiriman_boyolali", 9657 9658 9659 9660 9661 9662 "pengiriman_bukittinggi", 9663 9664 9665 9666 9667 9668 "pengiriman_buleleng", 9669 9670 9671 9672 9673 9674 "pengiriman_ciamis", 9675 9676 9677 9678 9679 9680 "pengiriman_cianjur", 9681 9682 9683 9684 9685 9686 "pengiriman_cibinong", 9687 9688 9689 9690 9691 9692 "pengiriman_cikarang", 9693 9694 9695 9696 9697 9698 "pengiriman_cikupa", 9699 9700 9701 9702 9703 9704 "pengiriman_cilacap", 9705 9706 9707 9708 9709 9710 "pengiriman_cileunyi", 9711 9712 9713 9714 9715 9716 "pengiriman_cimahi", 9717 9718 9719 9720 9721 9722 "pengiriman_cirebon", 9723 9724 9725 9726 9727 9728 "pengiriman_ciwidey", 9729 9730 9731 9732 9733 9734 "pengiriman_deli serdang", 9735 9736 9737 9738 9739 9740 "pengiriman_demak", 9741 9742 9743 9744 9745 9746 "pengiriman_denpasar", 9747 9748 9749 9750 9751 9752 9753 9754 9755 9756 "pengiriman_garut", 9757 9758 9759 9760 9761 9762 "pengiriman_gianyar", 9763 9764 9765 9766 9767 9768 "pengiriman_gresik", 9769 9770 9771 9772 9773 9774 "pengiriman_gunung kidul", 9775 9776 9777 9778 9779 9780 9781 9782 9783 9784 "pengiriman_jambi", 9785 9786 9787 9788 9789 9790 "pengiriman_jayapura", 9791 9792 9793 9794 9795 9796 "pengiriman_jember", 9797 9798 9799 9800 9801 9802 "pengiriman_jepara", 9803 9804 9805 9806 9807 9808 "pengiriman_jombang", 9809 9810 9811 9812 9813 9814 "pengiriman_karanganyar", 9815 9816 9817 9818 9819 9820 "pengiriman_karawang", 9821 9822 9823 9824 9825 9826 "pengiriman_karo", 9827 9828 9829 9830 9831 9832 "pengiriman_kebumen", 9833 9834 9835 9836 9837 9838 "pengiriman_kediri", 9839 9840 9841 9842 9843 9844 "pengiriman_keerom", 9845 9846 9847 9848 9849 9850 "pengiriman_kendal", 9851 9852 9853 9854 9855 9856 "pengiriman_klaten", 9857 9858 9859 9860 9861 9862 9863 9864 9865 9866 "pengiriman_kudus", 9867 9868 9869 9870 9871 9872 "pengiriman_kupang", 9873 9874 9875 9876 9877 9878 "pengiriman_lainnya", 9879 9880 9881 9882 9883 9884 "pengiriman_lamongan", 9885 9886 9887 9888 9889 9890 "pengiriman_lampung", 9891 9892 9893 9894 9895 9896 "pengiriman_lampung barat", 9897 9898 9899 9900 9901 9902 "pengiriman_lembang", 9903 9904 9905 9906 9907 9908 "pengiriman_lombok", 9909 9910 9911 9912 9913 9914 "pengiriman_lumajang", 9915 9916 9917 9918 9919 9920 "pengiriman_madiun", 9921 9922 9923 9924 9925 9926 "pengiriman_magelang", 9927 9928 9929 9930 9931 9932 "pengiriman_majalengka", 9933 9934 9935 9936 9937 9938 "pengiriman_makassar", 9939 9940 9941 9942 9943 9944 "pengiriman_malang", 9945 9946 9947 9948 9949 9950 "pengiriman_manado", 9951 9952 9953 9954 9955 9956 "pengiriman_medan", 9957 9958 9959 9960 9961 9962 "pengiriman_mengwi", 9963 9964 9965 9966 9967 9968 "pengiriman_mojokerto", 9969 9970 9971 9972 9973 9974 "pengiriman_nganjuk", 9975 9976 9977 9978 9979 9980 "pengiriman_ngawi", 9981 9982 9983 9984 9985 9986 "pengiriman_padang", 9987 9988 9989 9990 9991 9992 "pengiriman_palembang", 9993 9994 9995 9996 9997 9998 "pengiriman_pasuruan", 9999 10000 10001 10002 10003 10004 "pengiriman_pati", 10005 10006 10007 10008 10009 10010 "pengiriman_pekalongan", 10011 10012 10013 10014 10015 10016 "pengiriman_pekanbaru", 10017 10018 10019 10020 10021 10022 "pengiriman_pemalang", 10023 10024 10025 10026 10027 10028 "pengiriman_ponorogo", 10029 10030 10031 10032 10033 10034 "pengiriman_pontianak", 10035 10036 10037 10038 10039 10040 "pengiriman_probolinggo", 10041 10042 10043 10044 10045 10046 "pengiriman_purbalingga", 10047 10048 10049 10050 10051 10052 "pengiriman_purwakarta", 10053 10054 10055 10056 10057 10058 "pengiriman_purwokerto", 10059 10060 10061 10062 10063 10064 "pengiriman_rembang", 10065 10066 10067 10068 10069 10070 "pengiriman_riau", 10071 10072 10073 10074 10075 10076 "pengiriman_salatiga", 10077 10078 10079 10080 10081 10082 "pengiriman_samarinda", 10083 10084 10085 10086 10087 10088 "pengiriman_semarang", 10089 10090 10091 10092 10093 10094 "pengiriman_sentani", 10095 10096 10097 10098 10099 10100 "pengiriman_serang", 10101 10102 10103 10104 10105 10106 "pengiriman_sidoarjo", 10107 10108 10109 10110 10111 10112 "pengiriman_singkawang", 10113 10114 10115 10116 10117 10118 "pengiriman_sragen", 10119 10120 10121 10122 10123 10124 "pengiriman_subang", 10125 10126 10127 10128 10129 10130 "pengiriman_sukabumi", 10131 10132 10133 10134 10135 10136 "pengiriman_sumbawa", 10137 10138 10139 10140 10141 10142 "pengiriman_surabaya", 10143 10144 10145 10146 10147 10148 "pengiriman_surakarta solo", 10149 10150 10151 10152 10153 10154 10155 10156 10157 10158 "pengiriman_tasikmalaya", 10159 10160 10161 10162 10163 10164 "pengiriman_tegal", 10165 10166 10167 10168 10169 10170 "pengiriman_timika", 10171 10172 10173 10174 10175 10176 "pengiriman_wamena", 10177 10178 10179 10180 10181 10182 "pengiriman_wiyung", 10183 10184 10185 10186 10187 10188 "pengiriman_wonokromo", 10189 10190 10191 10192 10193 10194 "pengiriman_yogyakarta", 10195 10196 10197 10198 10199 ] 10200 console.log(cityNonJabodetabek) 10201 let non_jabodetabek = [] 10202 for(var i=0;i<cityNonJabodetabek.length;i++) { 10203 const obj = { 10204 "code": cityNonJabodetabek[i].toLowerCase().replace('pengiriman_', '').replace(' ','-'), 10205 "city": cityNonJabodetabek[i].replace('pengiriman_', '').replace(' ','-'), 10206 "zip": [] 10207 } 10208 non_jabodetabek.push(obj) 10209 } 10210 let current_location = getCookie("location_delivery") 10211 $("[name=location]").change(function(){ 10212 let v = $(this).val() 10213 let option = [] 10214 if(v == 'Jabodetabek') { 10215 for(var i=0;i<jabodetabek.length;i++) { 10216 const jabodetabekHtml = `<option value=${jabodetabek[i].city}>${jabodetabek[i].city}</option>` 10217 option.push(jabodetabekHtml) 10218 } 10219 $("#choose-location").html(`<option value="">Choose Location</option>${option}`) 10220 } else { 10221 for(var i=0;i<non_jabodetabek.length;i++) { 10222 const nonjabodetabekHtml = `<option value=${non_jabodetabek[i].city}>${non_jabodetabek[i].city}</option>` 10223 option.push(nonjabodetabekHtml) 10224 } 10225 $("#choose-location").html(`<option value="">Choose Location</option>${option}`) 10226 } 10227 }) 10228 10229 $("#location-lock-submit").click(function(e){ 10230 let select = $("#choose-location") 10231 let value = select.val().toLowerCase() 10232 console.log(value) 10233 if(select.val() == "") { 10234 return alert("Choose Your Location") 10235 e.preventDefault() 10236 }
10237 setCookie("location_delivery",value,1000000); 10238 10239 location.reload(); 10240 10241 }) 10242 10243 $("#close-popup-delivery").click(function(){ 10244 $(".MuiDialog-root").hide() 10245 if(!current_location){ 10246 setCookie("location_delivery","jakarta",1000000); 10247 $("#loc_delivery_city, #loc_delivery_city_mobile").text("Jakarta") 10248 } 10249 }) 10250 $("#loc_delivery, #loc_delivery_mobile").click(function(){ 10251 $(".MuiDialog-root").show() 10252 }) 10253 10254 10255 if(!current_location){ 10256 10257 } else { 10258 $("#loc_delivery_city, #loc_delivery_city_mobile").text(current_location) 10259 console.log(current_location) 10260 $("#choose-location").each(function(){ 10261 if(current_location == 'jakarta' || current_location == 'depok' || current_location == 'bogor' || current_location == 'tangerang' || current_location == 'bekasi'){ 10262 $("#jabodetabek").trigger("click") 10263 } else { 10264 $("#non-jabodetabek").trigger("click") 10265 } 10266 $("#choose-location").find("option[value="+current_location+"]").attr("selected", "selected") 10267 }) 10268 } 10269 10270 // 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'){ 10271 // $("#timeMalam").attr("disabled", false) 10272 // } else { 10273 // $("#timeMalam").attr("disabled", true) 10274 // } 10275 10276 if(current_location && current_location != 'jakarta') { 10277 $("#self-pickup").attr("disabled", true) 10278 } 10279 10280 function setCookie(name,value,days) { 10281 var expires = ""; 10282 if (days) { 10283 var date = new Date(); 10284 date.setTime(date.getTime() + (days*24*60*60*1000)); 10285 expires = "; expires=" + date.toUTCString(); 10286 } 10287 document.cookie = name + "=" + (value || "") + expires + "; path=/"; 10288 } 10289 function getCookie(name) { 10290 var nameEQ = name + "="; 10291 var ca = document.cookie.split(';'); 10292 for(var i=0;i < ca.length;i++) { 10293 var c = ca[i]; 10294 while (c.charAt(0)==' ') c = c.substring(1,c.length); 10295 if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 10296 } 10297 return null; 10298 } 10299 </script>
10299 10300 <!-- One Tap --> 10301
10301<script> 10302 console.log("Outerbloom..."); 10303 </script>
10303 10304 <div id="shopify-block-ANVEzSUcxTUxZOGpwZ__9703700522657871012" class="shopify-block shopify-app-block"> 10305 10306 10307 10308 <link rel="stylesheet" href="https://cdn1.bitbybit.studio/bitbybit/static/bitChat_widget/widget.css" /> 10309
10309<script src="https://cdn1.bitbybit.studio/bitbybit/static/bitChat_widget/widget.js" defer></script>
10309 10310
10310<script> 10311 const widgetConfig = { 10312 id: "clz7897za002cz7otleaz0d3d", 10313 showQuickResponse: false, 10314 quickResponsesData: [], 10315 themeColor: "#ffffff", 10316 widgetText: "", 10317 radiusType: "circle", 10318 widgetIconType: "whatsapp", 10319 position: "right", 10320 storeLogo: "", 10321 storeName: "Outerbloom", 10322 storeDescription: "", 10323 size: "small", 10324 showCard: false, 10325 widgetColorType: "solid", 10326 widgetColor1: "#008069", 10327 widgetColor2: "#008069", 10328 social: { 10329 socialOrders: ["instagram","tiktok","facebook","x","youtube","linkedin","email"], 10330 values: { 10331 instagram: { 10332 enabled: false, 10333 value: "", 10334 }, 10335 facebook: { 10336 enabled: false, 10337 value: "", 10338 }, 10339 email: { 10340 enabled: false, 10341 value: "", 10342 }, 10343 x: { 10344 enabled: false, 10345 value: "", 10346 }, 10347 tiktok: { 10348 enabled: false, 10349 value: "", 10350 }, 10351 linkedin: { 10352 enabled: false, 10353 value: "", 10354 }, 10355 youtube: { 10356 enabled: false, 10357 value: "", 10358 }, 10359 }, 10360 }, 10361 }; 10362 10363 function initializeWidget() { 10364 if (typeof BBBWidget !== 'undefined') { 10365 BBBWidget.init(widgetConfig); 10366 } else { 10367 setTimeout(initializeWidget, 100); 10368 } 10369 } 10370 10371 initializeWidget();</script>
10371 10372 10373 10374 </div><div id="shopify-block-ATzRpVTBPU3k1R2pnW__286197278318599166" class="shopify-block shopify-app-block"> 10375 10376 10377 <div style="position: fixed; bottom: 0; right: 0"></div> 10378 10379
10379<script> 10380 console.info("bitlogin extension version: v2.5.7"); 10381 10382 const googleScript = document.createElement("script"); 10383 googleScript.setAttribute("src", "https://accounts.google.com/gsi/client"); 10384 document.head.append(googleScript); 10385 10386 const bitLoginBaseUrl = "https://api.bitbybit.studio"; 10387 const apiUrl = `${bitLoginBaseUrl}/bitlogin/api`; 10388 10389 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"}}; 10390 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
10390n1.oa2-cs.v1.1cb5f9085a202341f60daf5a7be16c570ccc0b4bd5908b3afd080f34e9b8935d","appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":false,"position":null}]; 10391 const redirectUrl = appearance.redirectLink; 10392 10393 let locationCacheSet = false; 10394 let errorLocation = false; 10395 let oneTapSet = false; 10396 10397 let bitloginCache = { 10398 appearance: appearance, 10399 config: config 10400 }; 10401 10402 let isInitializing = false; 10403 const queue = []; 10404 10405 // Add CSS for the popup 10406 const popupStyles = document.createElement('style'); 10407 popupStyles.textContent = ` 10408 /* Styles for login popup */ 10409 .bitlogin-popup-overlay { 10410 position: fixed; 10411 top: 0; 10412 left: 0; 10413 width: 100%; 10414 height: 100%; 10415 background: rgba(0, 0, 0, 0.45); 10416 backdrop-filter: blur(4px); 10417 display: flex; 10418 align-items: center; 10419 justify-content: center; 10420 opacity: 0; 10421 transition: opacity 0.3s ease-in-out; 10422 z-index: 999999; 10423 } 10424 10425 .bitlogin-popup-overlay.visible { 10426 opacity: 1; 10427 } 10428 10429 .bitlogin-popup { 10430 background: #FFFFFF; 10431 box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); 10432 border-radius: 16px; 10433 width: 100%; 10434 max-width: 560px; 10435 display: flex; 10436 overflow: hidden; 10437 position: relative; 10438 opacity: 0; 10439 transform: translateY(20px) scale(0.98); 10440 transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1); 10441 } 10442 10443 .bitlogin-popup.visible { 10444 opacity: 1; 10445 transform: translateY(0) scale(1); 10446 } 10447 10448 .bitlogin-popup-with-image { 10449 max-width: 640px; 10450 } 10451 10452 .bitlogin-popup-right-image { 10453 flex-direction: row-reverse; 10454 } 10455 10456 .bitlogin-popup-image { 10457 object-fit: cover; 10458 width: 50%; 10459 height: auto; 10460 } 10461 10462 .bitlogin-popup-content { 10463 padding: 32px; 10464 position: relative; 10465 width: 50%; 10466 } 10467 10468 .bitlogin-popup-close { 10469 position: absolute; 10470 top: 16px; 10471 right: 16px; 10472 background: white; 10473 border: none; 10474 width: 30px; 10475 height: 30px; 10476 display: flex; 10477 align-items: center; 10478 justify-content: center; 10479 cursor: pointer; 10480 transition: background-color 0.2s; 10481 color: inherit; 10482 padding: 0; 10483 } 10484 10485 .bitlogin-popup-close:hover { 10486 background-color: #e5e5e5; 10487 } 10488 10489 .bitlogin-popup-buttons { 10490 display: flex; 10491 flex-direction: column; 10492 gap: 12px; 10493 margin-top: 24px; 10494 } 10495 10496 /* Button styles within popup - override width for popup buttons */ 10497 .bitlogin-popup-buttons #google-login, 10498 .bitlogin-popup-buttons #facebook-login, 10499 .bitlogin-popup-buttons #apple-login, 10500 .bitlogin-popup-buttons #whatsapp-login, 10501 .bitlogin-popup-buttons #microsoft-login, 10502 .bitlogin-popup-buttons #twitter-login, 10503 .bitlogin-popup-buttons #amazon-login, 10504 .bitlogin-popup-buttons #instagram-login, 10505 .bitlogin-popup-buttons #magic-link-login, 10506 .bitlogin-popup-buttons #mobile-app-login { 10507 width: 100% !important; 10508 font-family: inherit !important; 10509 } 10510 10511 .bitlogin-popup-footer { 10512 margin-top: 32px; 10513 text-align: center; 10514 font-size: 14px; 10515 opacity: 0.6; 10516 } 10517 10518 /* Modern Typography */ 10519 .bitlogin-popup h2 { 10520 margin-top: 12px; 10521 font-size: 21px !important; 10522 line-height: 1.2 !important; 10523 font-weight: 700 !important; 10524 letter-spacing: -0.02em !important; 10525 margin-bottom: 16px !important; 10526 } 10527 10528 .bitlogin-popup-header { 10529 position: relative; 10530 margin-bottom: 24px; 10531 } 10532 10533 /* Modern gradient accent */ 10534 .bitlogin-popup-content > div { 10535 font-size: 16px !important; 10536 line-height: 1.2 !important; 10537 opacity: 0.85 !important; 10538 } 10539 10540 /* Enhanced button interactions */ 10541 .bitlogin-popup-buttons button { 10542 position: relative; 10543 overflow: hidden; 10544 } 10545 10546 @keyframes ripple { 10547 0% { 10548 transform: scale(0, 0); 10549 opacity: 0.5; 10550 } 10551 100% { 10552 transform: scale(100, 100); 10553 opacity: 0; 10554 } 10555 } 10556 10557 /* Responsive adjustments */ 10558 @media (max-width: 640px) { 10559 .bitlogin-popup { 10560 max-width: 90%; 10561 width: 90%; 10562 margin: 0 16px; 10563 } 10564 10565 .bitlogin-popup-with-image { 10566 flex-direction: column !important; 10567 } 10568 10569 .bitlogin-popup-image { 10570 width: 100%; 10571 height: 180px; 10572 } 10573 10574 .bitlogin-popup-content { 10575 padding: 24px; 10576 } 10577 10578 .bitlogin-popup h2 { 10579 font-size: 24px !important; 10580 } 10581 } 10582 `; 10583
10584 document.head.appendChild(popupStyles); 10585 10586 // Add fonts link for different font options 10587 const fontsLink = document.createElement('link'); 10588 fontsLink.rel = 'stylesheet'; 10589 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'; 10590 document.head.appendChild(fontsLink); 10591 10592 (async () => { 10593 try { 10594 let host = window.location.host; 10595 if (host === "admin.shopify.com") { 10596 host = `${window.location.pathname.split("/")[2]}.myshopify.com`; 10597 } 10598 10599 const urlSearchParams = new URLSearchParams(window.location.search); 10600 const checkoutUrl = urlSearchParams.get("checkout_url"); 10601 10602 async function init({ inputRef, index }) { 10603 if (isInitializing) { 10604 queue.push(() => init({ inputRef, index })); 10605 return; 10606 } 10607 10608 isInitializing = true; 10609 10610 try { 10611 let bitLoginSectionRoot = document.querySelector( 10612 `.bitlogin-root[data-index="${index}"]` 10613 ); 10614 10615 const formRef = inputRef?.closest( 10616 "form:not([action='/account/recover'])" 10617 ); 10618 10619 if (formRef && !bitLoginSectionRoot) { 10620 await getLocation(); 10621 10622 bitLoginSectionRoot = document.createElement(`div`); 10623 10624 bitLoginSectionRoot.setAttribute("class", "bitlogin-root"); 10625 bitLoginSectionRoot.setAttribute("data-index", `${index}`); 10626 10627 updateAppearance({ 10628 formRef, 10629 rootRef: bitLoginSectionRoot, 10630 host, 10631 }); 10632 } 10633 } catch (err) { 10634 console.error(`error while initiating bitlogin extensions`, err); 10635 } finally { 10636 // Release the lock 10637 isInitializing = false; 10638 10639 // Check if there are pending items in the queue 10640 if (queue.length > 0) { 10641 // Process the next function in the queue 10642 const nextFunction = queue.shift(); 10643 nextFunction(); 10644 } 10645 } 10646 } 10647 10648 function initAll() { 10649 return new Promise((resolve, reject) => { 10650 setTimeout(async () => { 10651 const inputRefs = document.querySelectorAll( 10652 'input[name="customer[email]"]' 10653 ); 10654 10655 for (let i = 0; i < inputRefs.length; i++) { 10656 const currentInputRef = inputRefs[i]; 10657 const isVisible = isElementVisible(currentInputRef); 10658 10659 if (isVisible) { 10660 await init({ inputRef: currentInputRef, index: i }); 10661 } 10662 } 10663 10664 resolve("ok"); 10665 }, 100); 10666 }); 10667 } 10668 10669 const observer = new MutationObserver((mutationsList) => { 10670 for (let mutation of mutationsList) { 10671 initAll(); 10672 } 10673 }); 10674 10675 observer.observe(document.body, { 10676 childList: true, 10677 subtree: true, 10678 attributes: true, 10679 }); 10680 10681 initAll(); 10682 10683 if (appearance.googleOneTap) { 10684 setupOneTap({ host, checkoutUrl }); 10685 } 10686 10687 // Initialize popup 10688 await initPopup(host); 10689 } catch (error) { 10690 console.error("Error initializing BitLogin:", error); 10691 } 10692 })(); 10693 10694 async function initPopup(host) { 10695 // Check if user is already logged in using Liquid checks properly 10696 const isLoggedIn = false || 10697 document.querySelector('.customer-logout-link') || 10698 document.querySelector('.account-link') || 10699 window.location.pathname.includes('/account'); 10700 10701 if (isLoggedIn) { 10702 return; // User is logged in, don't show popup 10703 } 10704 10705 try { 10706 // Fetch the popup configuration 10707 const popupConfig = await fetch(`${apiUrl}/appearance/popup/domain/${host}`) 10708 .then(res => res.json()) 10709 .catch(err => { 10710 console.error('Error fetching popup configuration:', err); 10711 return null; 10712 }); 10713 10714 if (!popupConfig || !popupConfig.enabled) { 10715 return;
10715 // Don't show popup if disabled or config not found 10716 } 10717 10718 // Create popup after 10 seconds 10719 setTimeout(() => { 10720 // Check if user is still on the page and still not logged in 10721 if (document.visibilityState === 'visible') { 10722 // Additional check in case user logged in during the 10 second wait 10723 const currentlyLoggedIn = false || 10724 document.querySelector('.customer-logout-link') || 10725 document.querySelector('.account-link'); 10726 10727 if (!currentlyLoggedIn) { 10728 createLoginPopup(popupConfig, host); 10729 } 10730 } 10731 }, 10000); 10732 } catch (error) { 10733 console.error('Error initializing popup:', error); 10734 } 10735 } 10736 10737 function createLoginPopup(popupConfig, host) { 10738 // Font mapping 10739 const fontFamilyMap = { 10740 system_fonts: 'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif', 10741 montserrat: 'Montserrat, sans-serif', 10742 roboto: 'Roboto, sans-serif', 10743 open_sans: 'Open Sans, sans-serif', 10744 noto_sans: 'Noto Sans, sans-serif', 10745 lato: 'Lato, sans-serif', 10746 poppins: 'Poppins, sans-serif', 10747 quicksand: 'Quicksand, sans-serif', 10748 raleway: 'Raleway, sans-serif', 10749 pt_sans: 'PT Sans, sans-serif', 10750 oswald: 'Oswald, sans-serif', 10751 }; 10752 10753 // Create overlay 10754 const overlay = document.createElement('div'); 10755 overlay.className = 'bitlogin-popup-overlay'; 10756 10757 // Create popup container with appropriate styling 10758 const popup = document.createElement('div'); 10759 popup.className = 'bitlogin-popup'; 10760 10761 if (popupConfig.layout === 'default') { 10762 popup.style.maxWidth = '400px'; 10763 } 10764 10765 // Function to close the popup 10766 const closePopup = () => { 10767 overlay.classList.remove('visible'); 10768 popup.classList.remove('visible'); 10769 setTimeout(() => { 10770 if (document.body.contains(overlay)) { 10771 document.body.removeChild(overlay); 10772 } 10773 }, 300); 10774 }; 10775 10776 // Add click handler to the overlay to close when clicking outside 10777 overlay.addEventListener('click', (event) => { 10778 // Close only if clicking directly on the overlay, not its children 10779 if (event.target === overlay) { 10780 closePopup(); 10781 } 10782 }); 10783 10784 // Add escape key handler to close popup 10785 document.addEventListener('keydown', (event) => { 10786 if (event.key === 'Escape' && document.body.contains(overlay)) { 10787 closePopup(); 10788 } 10789 }); 10790 10791 // Create layout with image if specified 10792 let contentWrapper; 10793 if (popupConfig.layout !== 'default' && popupConfig.popupImage) { 10794 popup.classList.add('bitlogin-popup-with-image'); 10795 10796 if (popupConfig.layout === 'right') { 10797 popup.classList.add('bitlogin-popup-right-image'); 10798 } 10799 10800 // Add image 10801 const image = document.createElement('img'); 10802 image.className = 'bitlogin-popup-image'; 10803 image.src = popupConfig.popupImage; 10804 image.alt = 'Login'; 10805 image.loading = 'lazy'; 10806 popup.appendChild(image); 10807 10808 // Create content container 10809 contentWrapper = document.createElement('div'); 10810 contentWrapper.className = 'bitlogin-popup-content'; 10811 10812 if (popupConfig.layout === 'right') { 10813 const closeButton = document.createElement('button'); 10814 closeButton.className = 'bitlogin-popup-close'; 10815 closeButton.innerHTML = `<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif"> 10816 <path d="M13 1L1 13M1 1L13 13" stroke="${popupConfig.fontColor}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 10817 </svg>`; 10818 closeButton.setAttribute('aria-label', 'Close'); 10819 closeButton.onclick = closePopup; 10820 10821 popup.appendChild(closeButton); 10822 } 10823 } else { 10824 contentWrapper = document.createElement('div'); 10825 contentWrapper.className = 'bitlogin-popup-content'; 10826 contentWrapper.style.width = '100%'; 10827 } 10828 10829 // Set background style 10830 if (popupConfig.backgroundTheme === 'gradient') { 10831 contentWrapper.style.background = `linear-gradient(135deg, ${popupConfig.backgroundPopupColor}, ${popupConfig.gradientColor})`; 10832 } else { 10833 contentWrapper.style.backgroundColor = popupConfig.backgroundPopupColor; 10834 } 10835 10836 // Apply font family 10837 contentWrapper.style.setProperty('font-family', fontFamilyMap[popupConfig.font] || fontFamilyMap.system_fonts, 'important'); 10838 10839 if (popupConfig.layout !== 'right') { 10840 const closeButton = document.createElement('button'); 10841 closeButton.className = 'bitlogin-popup-close'; 10842 closeButton.innerHTML = `<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif"> 10843 <path d="M13 1L1 13M1 1L13 13" stroke="${popupConfig.fontColor}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 10844 </svg>`; 10845 closeButton.setAttribute('aria-label', 'Close'); 10846 closeButton.onclick = closePopup; 10847 10848 contentWrapper.appendChild(closeButton); 10849 } 10850 10851 // Add heading with subtle animation effect 10852 const header = document.createElement('div'); 10853 header.className = 'bitlogin-popup-header'; 10854 10855 const heading = document.createElement('h2'); 10856 heading.textContent = popupConfig.headingText || 'Sign in for exclusive benef
10856its'; 10857 heading.style.color = popupConfig.fontColor; 10858 header.appendChild(heading); 10859 10860 // Add body text with improved formatting 10861 const bodyText = document.createElement('div'); 10862 bodyText.innerHTML = popupConfig.bodyText || 'Join our community to access exclusive offers and a personalized shopping experience.'; 10863 bodyText.style.color = popupConfig.fontColor; 10864 header.appendChild(bodyText); 10865 10866 contentWrapper.appendChild(header); 10867 10868 // Create buttons container with modern styling 10869 const buttonsContainer = document.createElement('div'); 10870 buttonsContainer.className = 'bitlogin-popup-buttons'; 10871 10872 // Add social buttons 10873 const providerLabels = { 10874 'GOOGLE': 'Continue with Google', 10875 'FACEBOOK': 'Continue with Facebook', 10876 'APPLE': 'Continue with Apple', 10877 'WHATSAPP': 'Continue with WhatsApp', 10878 'MAGIC_LINK': 'Continue with Email', 10879 }; 10880 10881 // Add first login provider button 10882 if (popupConfig.loginProvider1 !== 'NONE') { 10883 const buttonConfig = { 10884 theme: popupConfig.colorScheme || 'match', 10885 customColor: popupConfig.textColor, 10886 format: 'contentFlex', 10887 buttonText: bitloginCache.appearance.buttonList[popupConfig.loginProvider1.toLowerCase()], 10888 hasShadow: popupConfig.hasShadow !== undefined ? popupConfig.hasShadow : true, 10889 style: popupConfig.style || 'rounded', 10890 size: popupConfig.size || 'medium', 10891 colorScheme: popupConfig.colorScheme || 'match', 10892 backgroundColor: popupConfig.backgroundColor || '#3B82F6', 10893 textColor: popupConfig.textColor || '#FFFFFF', 10894 outlineColor: popupConfig.outlineColor || '#3B82F6', 10895 host: host 10896 }; 10897 10898 const button1 = createSocialLoginButton(popupConfig.loginProvider1, buttonConfig); 10899 10900 // Handle click event - this overrides the default click handler in createSocialLoginButton 10901 button1.onclick = () => { 10902 onClickSocialLogin({ provider: popupConfig.loginProvider1.toLowerCase(), host }); 10903 closePopup(); 10904 }; 10905 10906 buttonsContainer.appendChild(button1); 10907 } 10908 10909 // Add second login provider button if enabled 10910 if (popupConfig.loginProvider2 !== 'NONE') { 10911 const buttonConfig = { 10912 theme: popupConfig.colorScheme || 'match', 10913 customColor: popupConfig.textColor, 10914 format: 'contentFlex', 10915 buttonText: bitloginCache.appearance.buttonList[popupConfig.loginProvider2.toLowerCase()], 10916 hasShadow: popupConfig.hasShadow !== undefined ? popupConfig.hasShadow : true, 10917 style: popupConfig.style || 'rounded', 10918 size: popupConfig.size || 'medium', 10919 colorScheme: popupConfig.colorScheme || 'match', 10920 backgroundColor: popupConfig.backgroundColor || '#3B82F6', 10921 textColor: popupConfig.textColor || '#FFFFFF', 10922 outlineColor: popupConfig.outlineColor || '#3B82F6', 10923 host: host 10924 }; 10925 10926 const button2 = createSocialLoginButton(popupConfig.loginProvider2, buttonConfig); 10927 10928 // Handle click event - this overrides the default click handler in createSocialLoginButton 10929 button2.onclick = () => { 10930 onClickSocialLogin({ provider: popupConfig.loginProvider2.toLowerCase(), host }); 10931 closePopup(); 10932 }; 10933 10934 buttonsContainer.appendChild(button2); 10935 } 10936 10937 contentWrapper.appendChild(buttonsContainer); 10938 10939 // Append content to popup 10940 popup.appendChild(contentWrapper); 10941 10942 // Append popup to overlay 10943 overlay.appendChild(popup); 10944 10945 // Append overlay to body 10946 document.body.appendChild(overlay); 10947 10948 // Trigger animation with slight delay for better perceived performance 10949 setTimeout(() => { 10950 overlay.classList.add('visible'); 10951 setTimeout(() => { 10952 popup.classList.add('visible'); 10953 }, 50); 10954 }, 10); 10955 } 10956 10957 window.addEventListener("load", () => { 10958 window.addEventListener("message", (event) => { 10959 const receivedData = event.data; 10960 10961 if (receivedData.type === "authorize") { 10962 post( 10963 JSON.parse( 10964 JSON.stringify({ 10965 "customer[email]": receivedData.email, 10966 "customer[password]": receivedData.password, 10967 form_type: "customer_login", 10968 utf8: "â", 10969 return_url: redirectUrl, 10970 }) 10971 ) 10972 ); 10973 } else if (receivedData.type === "rejected") { 10974 if (receivedData.reason === "customer_account_disabled") { 10975 showAlert( 10976 "Your account needs to be activated. We've sent you an activation link - please check your email to complete this step." 10977 ); 10978 } else if (receivedData.reason === "customer_entry_created_email_not_set") { 10979 showAlert( 10980 "A new account was created but requires an email address. Please update your account with a valid email address to continue." 10981 ); 10982 } else if (receivedData.reason === "customer_exist_email_not_set") { 10983 showAlert( 10984 "Your existing account is missing an email address. Please contact support to update your account with a valid email address." 10985 ); 10986 } 10987 } 10988 10989 if (receivedData.type === "customer_authenticated") { 10990 // Dispatch a custom event that merchants can listen for to implement their custom logic 10991 const customerAuthEvent = new CustomEvent('bitlogin:customer_authenticated', { 10992 detail: { 10993 provider: receivedData.provider, 10994 customer: receivedData.customer, 10995 shopifyCustomerCreated: receivedData.shopifyCustomerCreated 10996 } 10997 }); 10998 10999 // Dispatch the event on the window object so merchants can listen for it 11000 window.dispatchEvent(customerAuthEvent); 11001 11002 } 11003 }); 11004 }); 11005 11006 // Reusable functions for social login buttons 11007 function createSocialLoginButton(provider, config = {}) { 11008 const { 11009 theme = 'match', 11010 customColor = null, 11011 format = 'contentFlex', 11012 buttonText = null, 11013 hasShadow = true, 11014 style = 'rounded', 11015 size = 'medium', 11016 colorScheme = 'match', 11017 backgroundColor = '#3B82F6', 11018 textColor = '#FFFFFF', 11019 outlineColor = '#3B82F6', 11020 rootRef = null, 11021 host = null 11022 } = config; 11023 11024 // Create button element with appropriate ID and attributes 11025 const button = document.createElement('button'); 11026 button.id = `${provider.toLowerCase()}-login`; 11027 button.type = 'button'; 11028 11029 // Set the inner SVG based on provider 11030 switch (provider.toUpperCase()) {
11031 case 'GOOGLE': 11032 button.innerHTML = googleLoginIcon(theme, customColor); 11033 break; 11034 case 'FACEBOOK': 11035 button.innerHTML = facebookLoginIcon(theme, customColor); 11036 break; 11037 case 'APPLE': 11038 button.innerHTML = appleLoginIcon(theme, customColor); 11039 break; 11040 case 'WHATSAPP': 11041 button.innerHTML = whatsappLoginIcon(theme, customColor); 11042 break; 11043 case 'MICROSOFT': 11044 button.innerHTML = microsoftLoginIcon(theme, customColor); 11045 break; 11046 case 'TWITTER': 11047 button.innerHTML = twitterLoginIcon(theme, customColor); 11048 break; 11049 case 'AMAZON': 11050 button.innerHTML = amazonLoginIcon(theme, customColor); 11051 break; 11052 case 'INSTAGRAM': 11053 button.innerHTML = instagramLoginIcon(theme, customColor); 11054 break; 11055 case 'MAGIC_LINK': 11056 button.innerHTML = magicLinkLoginIcon(theme, customColor); 11057 break; 11058 case 'MOBILE_APP': 11059 button.innerHTML = mobileAppLoginIcon(theme, customColor); 11060 break; 11061 case 'LINKEDIN': 11062 button.innerHTML = linkedinLoginIcon(theme, customColor); 11063 break; 11064 } 11065 11066 // Add text if format isn't icon-only and buttonText is provided 11067 if (format !== "wrapperFlexContainerOnlyLogo" && buttonText) { 11068 button.innerHTML += `<p>${buttonText}</p>`; 11069 } 11070 11071 // Apply styling 11072 // Shadow 11073 if (hasShadow) { 11074 const shadowProperties = `0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)`; 11075 button.style["box-shadow"] = shadowProperties; 11076 } 11077 11078 // Border radius 11079 const radiusProperties = 11080 style === "rounded" 11081 ? "8px" 11082 : style === "square" 11083 ? "0px" 11084 : style === "fullRounded" 11085 ? format === "wrapperFlexContainerOnlyLogo" 11086 ? "50%" 11087 : "50px" 11088 : undefined; 11089 button.style["border-radius"] = radiusProperties; 11090 11091 // Size 11092 const sizeProperties = 11093 size === "medium" 11094 ? "12px" 11095 : size === "small" 11096 ? "8px" 11097 : size === "large" 11098 ? "16px" 11099 : "8px"; 11100 11101 button.style["padding-block"] = sizeProperties; 11102 11103 // Format styling 11104 if (format) { 11105 if ( 11106 format === "contentFlexReverse" || 11107 format === "contentFlexCenterReverse" 11108 ) { 11109 const flexDir = `row-reverse`; 11110 button.style["flex-direction"] = flexDir; 11111 } 11112 11113 if ( 11114 format === "contentFlexCenter" || 11115 format === "contentFlexCenterReverse" 11116 ) { 11117 const justifyContent = `center`; 11118 button.style["justify-content"] = justifyContent; 11119 } else if ( 11120 format === "contentFlex" || 11121 format === "contentFlexReverse" 11122 ) { 11123 const buttonTextElement = button.querySelector("p"); 11124 if (buttonTextElement) { 11125 buttonTextElement.style["flex-grow"] = 1; 11126 buttonTextElement.style["text-align"] = "center"; 11127 } 11128 } 11129 11130 if (format === "wrapperFlexContainerOnlyLogo" && rootRef) { 11131 rootRef.style["flex-direction"] = "row"; 11132 rootRef.style["gap"] = "8px"; 11133 rootRef.style["display"] = "flex"; 11134 rootRef.style["flex-wrap"] = "wrap"; 11135 11136 const sizeMapping = { 11137 small: "52px", 11138 medium: "62px", 11139 large: "72px", 11140 }; 11141 const buttonSize = sizeMapping[size] || "52px"; 11142 11143 button.style["margin"] = 0; 11144 button.style["width"] = buttonSize; 11145 button.style["height"] = buttonSize; 11146 button.style["display"] = "flex"; 11147 button.style["align-items"] = "center"; 11148 button.style["justify-content"] = "center"; 11149 11150 const svgElement = button.querySelector("svg"); 11151 if (svgElement) { 11152 svgElement.style["flex"] = "none"; 11153 } 11154 } 11155 } 11156 11157 // Color scheme styling 11158 if (colorScheme === "black") { 11159 button.classList.add("scheme-black"); 11160 } else if (colorScheme === "white") { 11161 button.classList.add("scheme-white"); 11162 } else if (colorScheme === "custom") { 11163 button.style["background-color"] = backgroundColor; 11164 button.style["color"] = textColor; 11165 button.style["border-color"] = outlineColor; 11166 11167 const darkenColor = (color, percentage) => { 11168 const value = parseInt(color.slice(1), 16); 11169 const r = Math.max(0, ((value >> 16) & 0xff) - (0xff * percentage)); 11170 const g = Math.max(0, ((value >> 8) & 0xff) - (0xff * percentage)); 11171 const b = Math.max(0, (value & 0xff) - (0xff * percentage)); 11172 return `rgb(${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)})`; 11173 }; 11174 11175 button.addEventListener("mouseover", () => {
11176 button.style["background-color"] = darkenColor(backgroundColor, 0.2); 11177 }); 11178 button.addEventListener("mouseout", () => { 11179 button.style["background-color"] = backgroundColor; 11180 }); 11181 } else if (colorScheme === "match") { 11182 button.classList.add("scheme-match"); 11183 } else if (colorScheme === "matchOutline") { 11184 button.classList.add("scheme-match-outline"); 11185 } 11186 11187 // Add click event listener if host is provided 11188 if (host) { 11189 button.addEventListener("click", () => 11190 onClickSocialLogin({ provider: provider.toLowerCase(), host }) 11191 ); 11192 } 11193 11194 return button; 11195 } 11196 11197 function setupSocialLoginButtons(config, rootRef, data, host) { 11198 // Clear any existing content 11199 rootRef.innerHTML = ''; 11200 11201 const sortedEnabledProviders = config 11202 .filter(c => c.enabledWeb) 11203 .sort((a, b) => a.position - b.position); 11204 11205 sortedEnabledProviders.forEach(provider => { 11206 const key = provider.provider; 11207 const lowerKey = key.toLowerCase(); 11208 11209 const buttonText = data.format !== "wrapperFlexContainerOnlyLogo" 11210 ? (lowerKey === 'twitter' 11211 ? data.buttonList.twitter.replace('Twitter', 'X') 11212 : data.buttonList[lowerKey]) 11213 : null; 11214 11215 const button = createSocialLoginButton(key, { 11216 theme: data.colorScheme || 'match', 11217 customColor: data.textColor, 11218 format: data.format, 11219 buttonText: buttonText, 11220 hasShadow: data.hasShadow !== undefined ? data.hasShadow : true, 11221 style: data.style, 11222 size: data.size, 11223 colorScheme: data.colorScheme, 11224 backgroundColor: data.backgroundColor, 11225 textColor: data.textColor, 11226 outlineColor: data.outlineColor, 11227 rootRef: rootRef, 11228 host: host 11229 }); 11230 11231 rootRef.appendChild(button); 11232 }); 11233 11234 return rootRef; 11235 } 11236 11237 function updateAppearance({ formRef, rootRef, host }) { 11238 if (!formRef) return; 11239 11240 const data = bitloginCache.appearance || { 11241 style: "square", 11242 hasShadow: false, 11243 colorScheme: "match", 11244 backgroundColor: "#FFFFFF", 11245 outlineColor: "#000000", 11246 textColor: "#000000", 11247 position: "bottom", 11248 hideDivider: "false", 11249 dividerText: "OR", 11250 size: "small", 11251 format: "contentFlex", 11252 language: "en", 11253 buttonText: "Continue with", 11254 redirectLink: "/account", 11255 googleOneTap: true, 11256 googleOneTapBanner: true, 11257 customerTag: "bitLogin", 11258 redirectOneTapDesktop: null, 11259 redirectOneTapMobile: null, 11260 buttonList: { 11261 google: "Continue with Google", 11262 facebook: "Continue with Facebook", 11263 apple: "Continue with Apple", 11264 whatsapp: "Continue with WhatsApp", 11265 microsoft: "Continue with Microsoft", 11266 twitter: "Continue with X", 11267 amazon: "Continue with Amazon", 11268 instagram: "Continue with Instagram", 11269 magic_link: "Continue with Magic Link", 11270 mobile_app: "Continue with Mobile App", 11271 linkedin: "Continue with LinkedIn", 11272 }, 11273 }; 11274 11275 // Use the new setupSocialLoginButtons function to create and configure all buttons 11276 setupSocialLoginButtons(bitloginCache.config, rootRef, data, host); 11277 11278 let divider; 11279 11280 if (!data.hideDivider) { 11281 divider = document.createElement("div"); 11282 const dividerStyle = "text-align:center;margin-block:16px"; 11283 divider.setAttribute("style", dividerStyle); 11284 divider.innerHTML = data.dividerText; 11285 } 11286 11287 if (data.position === "bottom") { 11288 if (divider) { 11289 formRef.appendChild(divider); 11290 } 11291 formRef.appendChild(rootRef); 11292 } else if (data.position === "top") { 11293 if (divider) { 11294 formRef.prepend(divider); 11295 } 11296 formRef.prepend(rootRef); 11297 } 11298 } 11299 11300 11301 async function onClickSocialLogin({ provider, host }) { 11302 const rand = Math.random().toString(); 11303 11304 const locationQueryString = bitloginCache.location 11305 ? `&${objectToQueryString(bitloginCache.location)}` 11306 : ""; 11307 11308 const width = 800; 11309 const height = 600; 11310 const left = (window.screen.width / 2) - (width / 2); 11311 const top = (window.screen.height / 2) - (height / 2) - 50; 11312 11313 if(provider === 'whatsapp') { 11314 window.open( 11315 `/apps/bitlogin/whatsapp${locationQueryString ? `?${locationQueryString}` : ''}`, 11316 "mywindow", 11317 `menubar=1,resizable=1,width=${width},height=${height},top=${top},left=${left}` 11318 ); 11319 } else { 11320 window.open( 11321 `${apiUrl}/login/${provider}?referrerId=${rand}&shop=${host}${locationQueryString}`, 11322 "mywindow", 11323 `menubar=1,resizable=1,width=${width},height=${height},top=${top},left=${left}` 11324 ); 11325 } 11326 } 11327 11328 function objectToQueryString(obj) { 11329 return Object.keys(obj) 11330 .map((key) => { 11331 return encodeURIComponent(key) + "=" + encodeURIComponent(obj[key]); 11332 }) 11333 .join("&"); 11334 } 11335 11336 async function getLocation() { 11337 if (locationCacheSet) return; 11338 11339 try { 11340 const response = await fetch("https://ipapi.co/json/"); 11341 11342 if (!response.ok) { 11343 console.error(`error retrieving location...`, response.status); 11344 errorLocation = true; 11345 } else { 11346 const data = await response.json(); 11347 11348 const { city, region, country_name, country_code } = data; 11349 11350 const formattedLocationData = { 11351 city, 11352 region, 11353 country_name, 11354 country_code, 11355 }; 11356 11357 bitloginCache.location = formattedLocationData; 11358 locationCacheSet = true; 11359 errorLocation = false;
11360 } 11361 } catch (err) { 11362 console.error(`error fetching location`, err); 11363 errorLocation = true; 11364 } 11365 } 11366 11367 function post(params) { 11368 // The rest of this code assumes you are not using a library. 11369 // It can be made less verbose if you use one. 11370 const form = document.createElement("form"); 11371 form.method = "post"; 11372 form.action = `/account/login`; 11373 form.acceptCharset = "UTF-8"; 11374 form.setAttribute("data-login-with-shop-sign-in", "true"); 11375 form.setAttribute("novalidate", "novalidate"); 11376 11377 for (const key in params) { 11378 if (params.hasOwnProperty(key)) { 11379 const hiddenField = document.createElement("input"); 11380 hiddenField.type = "hidden"; 11381 hiddenField.name = key; 11382 hiddenField.value = params[key]; 11383 11384 form.appendChild(hiddenField); 11385 } 11386 } 11387 11388 document.body.appendChild(form); 11389 form.submit(); 11390 } 11391 11392 async function setupOneTap({ host, checkoutUrl }) { 11393 if (oneTapSet) return; 11394 11395 const redirectOneTapDesktop = JSON.parse(JSON.stringify(bitloginCache.appearance.redirectOneTapDesktop || '[]')); 11396 const redirectOneTapMobile = JSON.parse(JSON.stringify(bitloginCache.appearance.redirectOneTapMobile || '[]')); 11397 11398 const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); 11399 const redirectList = JSON.parse(isMobile ? redirectOneTapMobile : redirectOneTapDesktop); 11400 11401 const currentPath = window.location.pathname.toLowerCase(); 11402 const currentUrl = window.location.href.toLowerCase(); 11403 11404 const shouldHideGoogleOneTap = redirectList.some(({ value }) => { 11405 switch (value) { 11406 case 'home': 11407 return currentPath === '/'; 11408 case 'product': 11409 return currentPath.startsWith('/products/'); 11410 case 'collections': 11411 return currentPath.startsWith('/collections'); 11412 case 'cart': 11413 return currentPath === '/cart'; 11414 case 'checkout': 11415 return currentPath.startsWith('/checkouts') && !currentPath.includes('thank_you'); 11416 case 'thank_you': 11417 return currentPath.includes('/thank_you'); 11418 case 'account': 11419 return currentPath.startsWith('/account'); 11420 case 'pages': 11421 return currentPath.startsWith('/pages'); 11422 case 'blogs': 11423 return currentPath === '/blogs' || currentPath === '/blogs/news'; 11424 case 'blog_post': 11425 return currentPath.startsWith('/blogs/') && currentPath.split('/').length > 3; 11426 default: 11427 return false; 11428 } 11429 }); 11430 11431 if (shouldHideGoogleOneTap) return; 11432 11433 const oneTapClientId = bitloginCache.config.find( 11434 (config) => config.provider === "GOOGLE" 11435 )?.clientId; 11436 11437 const isLoggedIn = false; 11438 11439 if (bitloginCache.appearance.googleOneTap && oneTapClientId && !isLoggedIn) { 11440 const googleOneTapButton = document.createElement("div"); 11441 googleOneTapButton.setAttribute("id", "g_id_onload"); 11442 googleOneTapButton.setAttribute("data-client_id", oneTapClientId); 11443 googleOneTapButton.setAttribute("data-context", "signin"); 11444 googleOneTapButton.setAttribute( 11445 "data-callback", 11446 "handleGoogleOneTapResponse" 11447 ); 11448 googleOneTapButton.setAttribute("data-itp_support", "true"); 11449 11450 const googleOneTapScript = document.createElement("script"); 11451 11452 googleOneTapScript.innerHTML += ` 11453 function handleGoogleOneTapResponse(response) { 11454 if (response.credential) { 11455 const idToken = response.credential; 11456 fetch('${bitLoginBaseUrl}/bitlogin/api/login/google-one-tap', { 11457 method: 'POST', 11458 headers: { 'Content-Type': 'application/json' }, 11459 body: JSON.stringify({ idToken, shop: "${host}", ...bitloginCache.location }) 11460 }).then(response => { 11461 response.json().then((data) => { 11462 post( 11463 JSON.parse( 11464 JSON.stringify({ 11465 "customer[email]": data.email, 11466 "customer[password]": data.password, 11467 form_type: "customer_login", 11468 utf8: "â", 11469 return_url: redirectUrl, 11470 }) 11471 ) 11472 ); 11473 }); 11474 }).catch(error => { 11475 console.error('Error occurred:', error); 11476 }); 11477 } else { 11478 console.error('No credential available'); 11479 } 11480 } 11481 `; 11482 11483 document.body.append(googleOneTapButton); 11484 document.body.append(googleOneTapScript); 11485 } 11486 11487 oneTapSet = true; 11488 } 11489 11490 const googleLoginIcon = ( 11491 theme, 11492 customColor 11493 ) => ` 11494 ${ 11495 theme === "match" || theme === "matchOutline" || theme === "custom" 11496 ? `<svg 11497 xmlns='https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif' 11498 xmlns:v='https://vecta.io/nano' 11499 width='24' 11500 height='24'
11501 viewBox='0 0 186.69 190.5' 11502 > 11503 <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="${ 11504 theme === "custom" ? customColor : "#4285f4" 11505 }"/><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="${ 11506 theme === "custom" ? customColor : "#34a853" 11507 }"/><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="${ 11508 theme === "custom" ? customColor : "#fbbc05" 11509 }"/><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="${ 11510 theme === "custom" ? customColor : "#ea4335" 11511 }" clip-path="none" mask="none"/></g> 11512 </svg>` 11513 : `<svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="25" height="25" viewBox="0 0 25 25" fill="none"> 11514 <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="${ 11515 theme !== "black" ? "black" : "white" 11516 }"/> 11517 <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="${ 11518 theme !== "black" ? "black" : "white" 11519 }"/> 11520 <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="${ 11521 theme !== "black" ? "black" : "white" 11522 }"/> 11523 <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="${ 11524 theme !== "black" ? "black" : "white" 11525 }"/> 11526 </svg>` 11527 }`; 11528 11529 const appleLoginIcon = ( 11530 theme, 11531 customColor 11532 ) => `<svg width="24" height="24" viewBox="0 0 19 24" fill="none" xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif"> 11533 <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="${ 11534 theme === "custom" 11535 ? customColor 11536 : theme === "match" || theme === "black" 11537 ? "white" 11538 : "black" 11539 }"/> 11540 </svg>`; 11541 11542 const facebookLoginIcon = ( 11543 theme, 11544 customColor 11545 ) => ` 11546 ${ 11547 theme === "match" || theme === "matchOutline" || theme === "custom" 11548 ? `<svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="24" height="25" viewBox="0 0 24 25" fill="none"> 11549 <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="${ 11550 theme === "custom" ? customColor : theme === "match" ? "white" : "#1977F3" 11551 }"/> 11552 <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="${ 11553 theme === "match" ? "#1778f2" : "transparent" 11554 }"/> 11555 </svg>` 11556 : `<svg xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" width="24" height="25" viewB
11556ox="0 0 24 25" fill="none"> 11557 <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="${ 11558 theme === "black" ? "white" : "black" 11559 }"/> 11560 <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="${ 11561 theme === "black" ? "black" : "white" 11562 }"/> 11563 </svg>` 11564 }`; 11565 11566 const whatsappLoginIcon = ( 11567 theme, 11568 customColor 11569 ) => `<svg 11570 viewBox="0 0 24 24" 11571 fill="none" 11572 width="24" 11573 height="25" 11574 xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" 11575 > 11576 <g id="SVGRepo_bgCarrier" stroke-width="0"></g> 11577 <g 11578 id="SVGRepo_tracerCarrier" 11579 stroke-linecap="round" 11580 stroke-linejoin="round" 11581 ></g> 11582 <g id="SVGRepo_iconCarrier"> 11583 <path 11584 fill-rule="evenodd" 11585 clip-rule="evenodd" 11586 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" 11587 fill="${ 11588 theme === "match" || theme === "black" 11589 ? "#ffffff" 11590 : theme === "white" 11591 ? "#000000" 11592 : theme === "matchOutline" 11593 ? "#25d366" 11594 : customColor 11595 }" 11596 ></path> 11597 </g> 11598 </svg>`; 11599 11600 const microsoftLoginIcon = ( 11601 theme, 11602 customColor 11603 ) => `<svg 11604 xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" 11605 width="25" 11606 height="25" 11607 viewBox="0 0 48 48"> 11608 <path fill="${ 11609 theme === "match" || theme == "matchOutline" 11610 ? "#ff5722" 11611 : theme === "black" 11612 ? "#ffffff" 11613 : theme === "white" 11614 ? "#000000" 11615 : customColor 11616 }" d="M6 6H22V22H6z" transform="rotate(-180 14 14)"></path> 11617 <path 11618 fill="${ 11619 theme === "match" || theme == "matchOutline" 11620 ? "#4caf50" 11621 : theme === "black" 11622 ? "#ffffff" 11623 : theme === "white" 11624 ? "#000000" 11625 : customColor 11626 }" 11627 d="M26 6H42V22H26z" 11628 transform="rotate(-180 34 14)"></path> 11629 <path 11630 fill="${ 11631 theme === "match" || theme == "matchOutline" 11632 ? "#ffc107" 11633 : theme === "black" 11634 ? "#ffffff" 11635 : theme === "white" 11636 ? "#000000" 11637 : customColor 11638 }" 11639 d="M26 26H42V42H26z" 11640 transform="rotate(-180 34 34)"></path> 11641 <path fill="${ 11642 theme === "match" || theme == "matchOutline" 11643 ? "#03a9f4" 11644 : theme === "black" 11645 ? "#ffffff" 11646 : theme === "white" 11647 ? "#000000" 11648 : customColor 11649 }" d="M6 26H22V42H6z" transform="rotate(-180 14 34)"></path> 11650 </svg>`; 11651 11652 const twitterLoginIcon = ( 11653 theme, 11654 customColor 11655 ) => `<svg 11656 xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" 11657 width="25" 11658 height="25" 11659 viewBox="0 0 48 48"> 11660 <polygon fill="${ 11661 theme === "match" || theme === "black" 11662 ? "#ffffff" 11663 : theme === "matchOutline" || theme === "white" 11664 ? "#000000" 11665 : customColor 11666 }" points="41,6 9.929,42 6.215,42 37.287,6"></polygon> 11667 <polygon 11668 fill="${ 11669 theme === "match" || theme === "black" 11670 ? "#000000" 11671 : theme === "matchOutline" || theme === "white" 11672 ? "#ffffff" 11673 : customColor 11674 }" 11675 fill-rule="evenodd" 11676 points="31.143,41 7.82,7 16.777,7 40.1,41" 11677 clip-rule="evenodd"></polygon> 11678 <path 11679 fill="${ 11680 theme === "match" || theme === "black" 11681 ? "#ffffff" 11682 : theme === "matchOutline" || theme === "white" 11683 ? "#000000" 11684 : customColor 11685 }" 11686 d="M15.724,9l20.578,30h-4.106L11.618,9H15.724 M17.304,6H5.922l24.694,36h11.382L17.304,6L17.304,6z"></path> 11687 </svg>`; 11688 11689 const amazonLoginIcon = (theme, customColor) => ` 11690 <svg 11691 xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" 11692 x="0px" 11693 y="0px" 11694 width="25" 11695 height="25"
11696 viewBox="0 0 50 50" 11697 > 11698 <path 11699 fill="${ 11700 theme === "black" 11701 ? "#ffffff" 11702 : theme === "matchOutline" 11703 ? "#FF9900" 11704 : theme === "white" || theme === "match" 11705 ? "#000000" 11706 : customColor 11707 }" 11708 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" 11709 ></path> 11710 </svg>`; 11711 11712 const instagramLoginIcon= (theme, customColor) => ` 11713 <svg 11714 width="25" 11715 height="25" 11716 viewBox="0 0 25 24" 11717 fill="none" 11718 xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif"> 11719 <path 11720 fill-rule="evenodd" 11721 clip-rule="evenodd" 11722 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.
1172264321C8.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" 11723 fill="url(#paint0_radial_378_3535)" /> 11724 <path 11725 fill-rule="evenodd" 11726 clip-rule="evenodd" 11727 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" 11728 fill="url(#paint0_radial_378_3535)" /> 11729 <path 11730 fill-rule="evenodd" 11731 clip-rule="evenodd" 11732 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.
1173264321C8.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" 11733 fill="url(#paint0_radial_378_3535)" /> 11734 <path 11735 fill-rule="evenodd" 11736 clip-rule="evenodd" 11737 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" 11738 fill="url(#paint1_radial_378_3535)" /> 11739 <defs> 11740 <radialGradient 11741 id="paint0_radial_378_3535" 11742 cx="0" 11743 cy="0" 11744 r="1" 11745 gradientUnits="userSpaceOnUse" 11746 gradientTransform="translate(17.4 22.7) rotate(-115.776) scale(27.2737 40.5665)"> 11747 <stop offset="0.24392" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FF1B90' : customColor}" /> 11748 <stop offset="0.436673" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#F80261' : customColor}" /> 11749 <stop offset="0.688476" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#ED00C0' : customColor}" /> 11750 <stop offset="0.776787" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#C500E9' : customColor}" /> 11751 <stop offset="0.893155" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#7017FF' : customColor}" /> 11752 </radialGradient> 11753 <radialGradient 11754 id="paint1_radial_378_3535" 11755 cx="0" 11756 cy="0" 11757 r="1" 11758 gradientUnits="userSpaceOnUse" 11759 gradientTransform="translate(7.75 19.31) rotate(-57.4396) scale(11.8174 12.2918)"> 11760 <stop stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FFD600' : customColor}" /> 11761 <stop offset="0.484375" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FF6930' : customColor}" /> 11762 <stop offset="0.734375" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FE3B36' : customColor}" /> 11763 <stop offset="1" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FE3B36' : customColor}" stop-opacity="0" /> 11764 </radialGradient> 11765 </defs> 11766 </svg>`; 11767 11768 const magicLinkLoginIcon = (theme, customColor) => ` 11769 <svg 11770 xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" 11771 width="25" 11772 height="25" 11773 fill="none"
11774 viewBox="0 0 25 25" 11775 > 11776 <path 11777 fill="${ 11778 theme === 'match' || theme === 'black' ? '#ffffff' : theme === 'matchOutline' || theme === 'white' ? '#000000' : customColor 11779 }" 11780 fillRule="evenodd" 11781 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" 11782 clipRule="evenodd" 11783 ></path> 11784 </svg>`; 11785 11786 const mobileAppLoginIcon = (theme, customColor) => ` 11787 <svg 11788 width="20" 11789 height="24" 11790 viewBox="0 0 12 16" 11791 fill="none" 11792 xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" 11793 > 11794 <path 11795 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" 11796 fill=${ 11797 theme === 'match' || theme === 'black' ? '#ffffff' : theme === 'matchOutline' ? '#FD823E' : theme === 'white' ? '#000000' : customColor 11798 } 11799 /> 11800 </svg> 11801 `; 11802 11803 const linkedinLoginIcon = (theme, customColor) => ` 11804 <svg 11805 xmlns="https://imgmahasuhu.io/images/2026/08/11/giflogo_koi1.gif" 11806 width="25" 11807 height="24" 11808 viewBox="0 0 25 24" 11809 fill="none" 11810 > 11811 <path 11812 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" 11813 fill=${ 11814 theme === 'match' || theme === 'black' ? '#ffffff' : theme === 'matchOutline' ? '#0A66C2' : theme === 'white' ? '#000000' : customColor 11815 } 11816 /> 11817 </svg> 11818 `; 11819 11820 function isElementVisible(element) { 11821 return ( 11822 document.body.contains(element) && 11823 getComputedStyle(element).display !== "none" && 11824 getComputedStyle(element).visibility !== "hidden" && 11825 getComputedStyle(element).opacity !== "0" && 11826 !element.hasAttribute("hidden") && 11827 !isAncestorHidden(element) 11828 ); 11829 } 11830 11831 function isAncestorHidden(element) { 11832 let parent = element.parentElement; 11833 while (parent) { 11834 if ( 11835 getComputedStyle(parent).display === "none" || 11836 getComputedStyle(parent).visibility === "hidden" || 11837 getComputedStyle(parent).opacity === "0" || 11838 parent.hasAttribute("hidden") 11839 ) { 11840 return true; 11841 } 11842 parent = parent.parentElement; 11843 } 11844 return false; 11845 } 11846 11847 function showAlert(message) { 11848 const alertBox = document.createElement("div"); 11849 alertBox.textContent = message; 11850 alertBox.style.position = "fixed"; 11851 alertBox.style.top = "20px"; 11852 alertBox.style.right = "-300px"; // Start off-screen 11853 alertBox.style.backgroundColor = "#000000"; // Black background 11854 alertBox.style.color = "#ffffff"; // White text 11855 alertBox.style.padding = "15px"; 11856 alertBox.style.borderRadius = "8px"; 11857 alertBox.style.zIndex = "1000"; 11858 alertBox.style.transition = 11859 "right 0.5s ease-in-out, opacity 0.5s ease-in-out"; // Transition for sliding and fading 11860 alertBox.style.boxShadow = "0 2px 5px rgba(0, 0, 0, 0.2)"; // Optional shadow for depth 11861 11862 document.body.appendChild(alertBox); 11863 11864 // Slide in 11865 requestAnimationFrame(() => { 11866 alertBox.style.right = "20px"; // Move into view 11867 alertBox.style.opacity = "1"; // Ensure opacity is set to 1 11868 }); 11869 11870 // Slide out and remove the alert after a few seconds 11871 setTimeout(() => { 11872 alertBox.style.opacity = "0"; // Fade out 11873 alertBox.style.right = "-300px"; // Move out of view 11874 11875 // Wait for the transition to finish before removing the element 11876 setTimeout(() => { 11877 document.body.removeChild(alertBox); 11878 }, 500); // Match this duration with the exit transition duration 11879 }, 3000); 11880 } 11881 </script>
11881 11882 11883 <!-- ========================================= 11884 IPHONE STYLE CAMERA FLASH 11885========================================= --> 11886 11887<style> 11888.iphone-flash-effect { 11889 position: fixed; 11890 top: 0; 11891 left: 0; 11892 11893 width: 100vw; 11894 height: 100vh; 11895 11896 background: 11897 radial-gradient( 11898 circle at center, 11899 rgba(255,255,255,1) 0%, 11900 rgba(255,255,255,.95) 35%, 11901 rgba(255,255,255,.65) 70%, 11902 rgba(255,255,255,0) 100% 11903 ); 11904 11905 opacity: 0; 11906 visibility: hidden; 11907 11908 pointer-events: none; 11909 11910 z-index: 999999999; 11911 11912 animation: iphoneFlashEffect 7s infinite; 11913 11914 transform: translateZ(0); 11915 will-change: opacity; 11916} 11917 11918 11919/* ========================================= 11920 ANIMASI FLASH 11921========================================= */ 11922 11923@keyframes iphoneFlashEffect { 11924 11925 /* Diam */ 11926 0% { 11927 opacity: 0; 11928 visibility: hidden; 11929 } 11930 11931 /* Tunggu */ 11932 91% { 11933 opacity: 0; 11934 visibility: hidden; 11935 } 11936 11937 /* Kilatan pertama */ 11938 92% { 11939 opacity: .95; 11940 visibility: visible; 11941 } 11942 11943 92.5% { 11944 opacity: .15; 11945 } 11946 11947 /* Kilatan kedua */ 11948 93% { 11949 opacity: .85; 11950 } 11951 11952 93.6% { 11953 opacity: 0; 11954 visibility: hidden; 11955 } 11956 11957 /* Selesai */ 11958 100% { 11959 opacity: 0; 11960 visibility: hidden; 11961 } 11962} 11963 11964 11965/* ========================================= 11966 MOBILE 11967========================================= */ 11968 11969@media (max-width: 600px) { 11970 11971 .iphone-flash-effect { 11972 animation-duration: 6s; 11973 } 11974 11975} 11976</style> 11977 11978 11979<!-- ========================================= 11980 FLASH OVERLAY 11981========================================= --> 11982 11983<div 11984 class="iphone-flash-effect" 11985 aria-hidden="true"> 11986</div> 11987 11988 11989
11989<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ==" data-cf-beacon='{"version":"2024.11.0","token":"b29e8bc30b1849a5bd9e7bcfaad52b0d","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 11989
11989
11990<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a0e89c04290584d9',t:'MTc4MTkzNTgxNg=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
vendor: 1 bytes, line 11990
11990
11991<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a0f5c8e4eb26a3dd',t:'MTc4MjA3Mzk2OQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
11991<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ==" data-cf-beacon='{"version":"2024.11.0","token":"6d964f74e87341c2a66d096b34ebf90a","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 11991
11991
11992<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ==" data-cf-beacon='{"version":"2024.11.0","token":"d619bc2a39ff4d0c8aa051925ec673b5","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 11992
11992
11993<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a114949638d114b5',t:'MTc4MjM5Njg4NQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
11993<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a122ce826874fd9e',t:'MTc4MjU0NjA1OA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
11993<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ==" data-cf-beacon='{"version":"2024.11.0","token":"96e664c4b6af4e0895b3e3a48bb504fe","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 11993
11993
11994<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ==" data-cf-beacon='{"version":"2024.11.0","token":"b4fd9eb1e7974a30adc0876046ad010a","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 11994
11994
11995<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"0fe56ac417684b8eb6b0cd11fdbedf9f","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 11995
11995
11996<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a1401cfe9ed0f838',t:'MTc4Mjg1MzM2MA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
11996<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a15946eabe352652',t:'MTc4MzExNzIyMQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
11996<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"0fe56ac417684b8eb6b0cd11fdbedf9f","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 11996
11996
11997<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"fbc9f5ab73474082a23afa820c2dd724","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 11997
11997
11998<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a16185480881a3e0',t:'MTc4MzIwMzY2Mg=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
11998<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"0ca4c2ee72d747e7913a13995736232a","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 11998
11998
11999<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"20515d710334495194d7b3cb060113c8","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 11999
11999
12000<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a1be7c8dbe7bfd32',t:'MTc4NDE3ODQ4MA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
12000<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"5896953251b74bdfbc685f2d7d731d72","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 12000
12000
12001<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"d0f7079f5a664cc28ae4b9e6c2364498","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 12001
12001
12002<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"247453026960438d80b9278ea6e7ece6","r":1}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 12002
12002
12003<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"247453026960438d80b9278ea6e7ece6","r":1}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 12003
12003
12004<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"247453026960438d80b9278ea6e7ece6","r":1}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 12004
12004
12005<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"247453026960438d80b9278ea6e7ece6","r":1}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 12005
12005
12006<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"247453026960438d80b9278ea6e7ece6","r":1}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 12006
12006
12007<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"19060e2f596f4b53b2b3f90760634368","r":1}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 12007
12007
12008<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"19060e2f596f4b53b2b3f90760634368","r":1}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 12008
12008
12009<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"e70dbc7f94194b80bd42295c737afa77","r":1}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 12009
12009
12010<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"edd57e35e0f5416f9e914f0ae775f427","r":1,"spa":2}' crossorigin="anonymous"></script>
12010 12011</body> 12012</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.