1 2 3 4 5 6 7 8<!DOCTYPE html> 9<html lang="id"> 10<head> 11 <meta charset="UTF-8"> 12 <title>SEMBAHTOTO | Situs Toto Slot Gacor Pro Maxwin & Toto Macau 4D Toto 5D dengan Deposit Dana Slot88 Tanpa Editan</title> 13 <meta name="description" content="SEMBAHTOTO mengoperasikan situs toto slot gacor pro maxwin untuk toto macau 4d dan toto 5d dengan deposit dana via slot88 tanpa editan dan tanpa manipulasi RTP."> 14 <meta name="robots" content="index,follow"> 15 <link rel="canonical" href="https://ecatch.org/"> 16 <link rel="amphtml" href="https://trunojoyo.health/4.html"> 17 <link rel="alternate" hreflang="id-id" href="https://trunojoyo.health/4.html"/> 18 <link rel="alternate" href="https://trunojoyo.health/4.html"/> 19 <link rel="alternate" hreflang="id" href="https://trunojoyo.health/4.html"/> 20 <link rel="alternate" hreflang="en" href="https://trunojoyo.health/4.html"/> 21 <link rel="preconnect" href="https://www.googletagmanager.com" crossorigin>
vendor: 66 bytes, lines 21-22
21 22 <script async src="https://www.googletagmanager.com/gtag/js?id=
22G-0LSM1YJSPZ
vendor: 47 bytes, lines 22-23
22" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script> 23
23<script nonce="se3iyzEHMc9FQEB4wSyd0w==">window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("consent","default",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"granted",wait_for_update:500});gtag("js",new Date);gtag("config","G-0LSM1YJSPZ",{send_page_view:!0,linker:{domains:["plazait.co.id","www.plazait.co.id"]}});window.ga4Ecomm={viewItem:function(e){if(!window.gtag)return;try{gtag("event","view_item",{currency:e.currency||"IDR",value:e.value||0,items:[{item_id:e.item_id||"",item_name:e.item_name||"",item_brand:e.item_brand||"",item_category:e.item_category||"",price:e.price||0,quantity:1}]})}catch(t){}},addToCart:function(e){if(!window.gtag)return;try{gtag("event","add_to_cart",{currency:e.currency||"IDR",value:(e.price||0)*(e.quantity||1),items:[{item_id:e.item_id||"",item_name:e.item_name||"",item_brand:e.item_brand||"",item_category:e.item_category||"",price:e.price||0,quantity:e.quantity||1}]})}catch(t){}}};</script>
23 24 <meta property="og:locale" content="id_ID"> 25 <meta property="og:site_name" content="Plaza IT"> 26 <meta property="og:type" content="product"> 27 <meta property="og:title" content="SEMBAHTOTO | Situs Toto Slot Gacor Pro Maxwin & Toto Macau 4D Toto 5D dengan Deposit Dana Slot88 Tanpa Editan"> 28 <meta property="og:description" content="SEMBAHTOTO mengoperasikan situs toto slot gacor pro maxwin untuk toto macau 4d dan toto 5d dengan deposit dana via slot88 tanpa editan dan tanpa manipulasi RTP."> 29 <meta property="og:url" content="https://ecatch.org/"> 30 <meta property="og:image" content="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png"> 31 <meta property="og:image:alt" content="SEMBAHTOTO | Situs Toto Slot Gacor Pro Maxwin & Toto Macau 4D Toto 5D dengan Deposit Dana Slot88 Tanpa Editan"> 32<meta property="product:price:amount" content="5000"> 33<meta property="product:price:currency" content="IDR"> 34<meta property="product:availability" content="out of stock"> 35<meta name="twitter:card" content="summary_large_image"> 36<meta name="twitter:title" content="SEMBAHTOTO | Situs Toto Slot Gacor Pro Maxwin & Toto Macau 4D Toto 5D dengan Deposit Dana Slot88 Tanpa Editan"> 37<meta name="twitter:description" content="SEMBAHTOTO mengoperasikan situs toto slot gacor pro maxwin untuk toto macau 4d dan toto 5d dengan deposit dana via slot88 tanpa editan dan tanpa manipulasi RTP."> 38<meta name="twitter:image" content="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png"> 39
40<script type="application/ld+json"> 41{ 42 "@context": "https://schema.org", 43 "@type": "WebSite", 44 "@id": "/#website", 45 "url": "https://ecatch.org/", 46 "name": "SEMBAHTOTO", 47 "inLanguage": "id", 48 "potentialAction": { 49 "@type": "SearchAction", 50 "target": "https://ecatch.org/", 51 "query-input": "required name=search_term_string" 52 } 53} 54</script>
54 55
56<script type="application/ld+json"> 57{ 58 "@context": "https://schema.org", 59 "@type": "Organization", 60 "@id": "/#organization", 61 "name": "SEMBAHTOTO", 62 "url": "https://ecatch.org/", 63 "logo": "https://www.studiointermedia.com/images/2026/01/05/image28d31c9493f2bd9f.png" 64} 65</script>
65 66
67<script type="application/ld+json"> 68{ 69 "@context": "https://schema.org", 70 "@type": "Product", 71 "name": "SEMBAHTOTO | Situs Toto Slot Gacor Pro Maxwin & Toto Macau 4D Toto 5D dengan Deposit Dana Slot88 Tanpa Editan", 72 "sku": "4563217890", 73 "image": [ 74 "https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" 75 ], 76 "url": "https://ecatch.org/", 77 "description": "SEMBAHTOTO mengoperasikan situs toto slot gacor pro maxwin untuk toto macau 4d dan toto 5d dengan deposit dana via slot88 tanpa editan dan tanpa manipulasi RTP.", 78 "category": "SITUS TERPERCAYA", 79 "brand": { 80 "@type": "Brand", 81 "name": "SEMBAHTOTO" 82 }, 83 "offers": { 84 "@type": "Offer", 85 "url": "https://ecatch.org/", 86 "priceCurrency": "IDR", 87 "price": "5000", 88 "priceValidUntil": "2027-03-01", 89 "availability": "https://schema.org/OutOfStock", 90 "itemCondition": "https://schema.org/NewCondition", 91 "seller": { 92 "@type": "Organization", 93 "name": "SEMBAHTOTO", 94 "url": "https://ecatch.org/" 95 } 96 }, 97 "aggregateRating": { 98 "@type": "AggregateRating", 99 "ratingValue": "4.9", 100 "reviewCount": "198", 101 "bestRating": "5", 102 "worstRating": "1" 103 } 104} 105</script>
105 106
107<script type="application/ld+json"> 108{ 109 "@context": "https://schema.org", 110 "@type": "BreadcrumbList", 111 "itemListElement": [ 112 { 113 "@type": "ListItem", 114 "position": 1, 115 "name": "SEMBAHTOTO", 116 "item": "https://ecatch.org/" 117 }, 118 { 119 "@type": "ListItem", 120 "position": 2, 121 "name": "SEMBAHTOTO", 122 "item": "https://ecatch.org/" 123 } 124 ] 125} 126</script>
126 127
128<script type="application/ld+json"> 129{ 130 "@context": "https://schema.org", 131 "@type": "FAQPage", 132 "mainEntity": [ 133 { 134 "@type": "Question", 135 "name": "Apa itu SEMBAHTOTO?", 136 "acceptedAnswer": { 137 "@type": "Answer", 138 "text": "SEMBAHTOTO adalah situs togel online yang menghadirkan pasaran HK Pools dan SDY Pools dengan sistem modern, result tercepat, serta layanan bermain yang aman dan terpercaya." 139 } 140 }, 141 { 142 "@type": "Question", 143 "name": "Kenapa HK Pools dan SDY Pools di SEMBAHTOTO banyak dicari?", 144 "acceptedAnswer": { 145 "@type": "Answer", 146 "text": "Karena SEMBAHTOTO menyediakan akses cepat ke pasaran HK Pools dan SDY Pools dengan update result harian, prediksi akurat, tampilan nyaman, dan proses transaksi yang stabil." 147 } 148 }, 149 { 150 "@type": "Question", 151 "name": "Apakah SEMBAHTOTO aman untuk bermain togel online?", 152 "acceptedAnswer": { 153 "@type": "Answer", 154 "text": "Ya, SEMBAHTOTO menggunakan sistem keamanan modern untuk menjaga kenyamanan pengguna, termasuk perlindungan data akun dan proses transaksi yang terenkripsi." 155 } 156 }, 157 { 158 "@type": "Question", 159 "name": "Bagaimana cara daftar akun di SEMBAHTOTO?", 160 "acceptedAnswer": { 161 "@type": "Answer", 162 "text": "Pendaftaran akun di SEMBAHTOTO sangat mudah, pengguna hanya perlu mengisi formulir registrasi dengan data valid lalu melakukan verifikasi untuk mulai mengakses pasaran HK Pools dan SDY Pools." 163 } 164 }, 165 { 166 "@type": "Question", 167 "name": "Apa keunggulan utama SEMBAHTOTO dibanding situs lain?", 168 "acceptedAnswer": { 169 "@type": "Answer", 170 "text": "SEMBAHTOTO memiliki keunggulan berupa result tercepat, prediksi terpercaya, transaksi deposit dan withdraw cepat, layanan pelanggan 24 jam, serta akses stabil untuk semua perangkat." 171 } 172 }, 173 { 174 "@type": "Question", 175 "name": "Apakah SEMBAHTOTO menyediakan layanan customer service?", 176 "acceptedAnswer": { 177 "@type": "Answer", 178 "text": "Ya, SEMBAHTOTO menyediakan customer service online 24 jam yang siap membantu pengguna terkait informasi pasaran HK Pools, SDY Pools, transaksi, maupun kendala akun." 179 } 180 } 181 ] 182} 183</script>
183 184 <!-- User Session Data --> 185 <meta name="csrf-token" content="9ce6e4a17f7cc189893df9e47789b13e98829450d516a0cae5ca7b5f43e5dadc"> 186 <meta name="user-logged-in" content="false"> 187 <meta name="user-id" content="0"> 188 189 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" /> 190 191 <link rel="shortcut icon" href="https://www.istudiosg.com/cdn/shop/files/Logo-Footer-Apple-Premium-Partner_400x_39469ee7-8bb1-490a-a4e0-58b27ff30663_100x.svg?v=1711639473" type="image/x-icon"> 192 <link rel="stylesheet" href="https://plazait.b-cdn.net/assets/css/style.css"> 193 <link rel="stylesheet" href="https://plazait.b-cdn.net/assets/css/bottom-nav.css"> 194 <link rel="stylesheet" href="https://plazait.b-cdn.net/assets/css/search-suggest.css"> 195 <link rel="stylesheet" href="https://plazait.b-cdn.net/assets/css/product-detail.css"> 196 <link rel="stylesheet" href="https://plazait.b-cdn.net/assets/css/product-grid.css"> 197 <link rel="stylesheet" href="https://plazait.b-cdn.net/assets/css/site-notice.css"> 198 <link rel="stylesheet" href="https://plazait.b-cdn.net/assets/css/benchmark.css"> 199 <link rel="stylesheet" href="https://plazait.b-cdn.net/assets/css/product-filters.css"> 200 <link rel="stylesheet" href="https://plazait.b-cdn.net/assets/css/mega-menu-tiles.css"> 201 <link rel="stylesheet" href="https://plazait.b-cdn.net/assets/css/product-compare.css"> 202 <link rel="stylesheet" href="https://plazait.b-cdn.net/assets/css/product-card-actions.css"> 203 <link rel="stylesheet" href="https://plazait.b-cdn.net/assets/css/modal.css"> 204 205 <link rel="stylesheet" href="https://plazait.b-cdn.net/assets/css/reviews-points.css"> 206 207</head> 208<body> 209<header class="topbar"> 210 <div class="container topbar-inner"> 211 <div class="topbar-left"> 212 SEMBAHTOTO | Situs Toto Slot Gacor Pro Maxwin & Toto Macau 4D Toto 5D dengan Deposit Dana Slot88 Tanpa Editan </div> 213 <div class="topbar-right"> 214 <a href="https://ecatch.org/">SEMBAHTOTO</a> 215 <a href="https://ecatch.org/">SITUS TERPERCAYA</a> 216 <a href="https://trunojoyo.health/4.html">Daftar</a> 217 <a href="https://trunojoyo.health/4.html">Masuk</a> 218 </div> 219 </div> 220</header> 221<nav class="navbar"> 222 <nav class="navbar-logo" style="width: 100%;"> 223 <div class="container nav-inner" style="justify-items: center; justify-content: center;"> 224 <a href="/" class="logo-mobile"> 225 <img src="https://www.studiointermedia.com/images/2026/01/05/image28d31c9493f2bd9f.png" alt="SEMBAHTOTO" height="40"> 226 </a> 227 </div> 228</nav> 229 <div class="container nav-inner"> 230 <a href="/" class="logo"> 231 <img src="https://www.studiointermedia.com/images/2026/01/05/image28d31c9493f2bd9f.png" alt="SEMBAHTOTO" height="40"> 232 </a> 233 234 235 <form class="search" method="get" action="#"> 236 <input type="hidden" name="page" value="produk"> 237 238 <!-- Search Icon (Desktop) --> 239 <button type="submit" class="search-icon-btn" id="searchBtn" aria-label="Cari"> 240 <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"> 241 <circle cx="11" cy="11" r="8"/> 242 <path d="m21 21-4.35-4.35"/> 243 </svg> 244 </button> 245 246 <input type="text" name="q" id="searchInput" placeholder="Cari SEMBAHTOTO" 247 value="" autocomplete="off"> 248 249 <div class="search-suggest" id="searchSuggest" hidden></div> 250 </form> 251 252 <div class="nav-actions"> 253 <!--<button class="icon-btn" id="notifBtn" title="Notifikasi">ð</button>--> 254 <button class="icon-btn cart-indicator" id="cartBtn" title="Keranjang"> 255 ð <span id="cartCount" class="badge" data-role="cart-badge" aria-live="polite">0</span> 256 </button> 257 258 259 <span id="compareCount" class="badge" data-role="compare-badge" aria-live="polite">0</span> 260 </button> 261 262 <!-- Dynamic login/logout button --> 263 <button class="login-btn" id="loginBtn" aria-label="Masuk"> 264 <span class="login-text">Masuk</span>
265 <span class="login-ico" aria-hidden="true">ð</span> 266 </button> 267 </div> 268 </div> 269 270 <div class="container" style="display: flex; align-items: center;"> 271 272 273 <div class="mega-cats-wrapper"> 274 <div class="mega-cats container" id="megaCatsScroll" style="padding-left: 5px !important;"> 275 <a class="" href="https://ecatch.org/"> 276 SEMBAHTOTO HK POOLS </a> 277 <a class="" href="https://ecatch.org/"> 278 SEMBAHTOTO SDY POOLS </a> 279 <a class="" href="https://ecatch.org/"> 280 TOGEL HK POOLS </a> 281 <a class="" href="https://ecatch.org/"> 282 TOGEL SDY POOLS </a> 283 <a class="" href="https://ecatch.org/"> 284 RESULT HK SDY TERCEPAT </a> 285 <a class="" href="https://ecatch.org/"> 286 PREDIKSI HK POOLS </a> 287 <a class="" href="https://ecatch.org/"> 288 PREDIKSI SDY POOLS </a> 289 </div> 290 <div class="mega-cats-fade" id="megaCatsFade"></div> 291 </div> 292 </div> 293</nav> 294 295<!-- Panel Mega Menu - Outside navbar for full-screen --> 296<div class="mm2-panel" data-mm2="panel" role="dialog" aria-label="Kategori"> 297 <div class="mm2-view is-active" data-mm2="top"></div> 298 <div class="mm2-view" data-mm2="detail"></div> 299</div> 300 301<!-- Backdrop - Outside navbar for full-screen --> 302<div class="mm2-backdrop" data-mm2="backdrop"></div> 303 304<!-- Mobile Bottom Navigation --> 305<nav class="bottom-nav"> 306 <div class="bottom-nav-inner"> 307 <!-- Home --> 308 <a href="/" class="bottom-nav-item" id="bottomHomeBtn" data-page="home"> 309 <div class="bottom-nav-item-icon"> 310 <!-- Outlined icon (default) --> 311 <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> 312 <path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/> 313 <polyline points="9 22 9 12 15 12 15 22"/> 314 </svg> 315 <!-- Filled icon (active) --> 316 <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor"> 317 <path d="M11.47 3.84a.75.75 0 011.06 0l8.69 8.69a.75.75 0 010 1.06l-.03.03a.75.75 0 01-1.06 0l-8.16-8.16-8.16 8.16a.75.75 0 01-1.06 0l-.03-.03a.75.75 0 010-1.06l8.69-8.69z"/> 318 <path d="M12 5.5l-7.5 7.5v8.25c0 .414.336.75.75.75h3.75v-6h6v6h3.75a.75.75 0 00.75-.75V13l-7.5-7.5z"/> 319 </svg> 320 </div> 321 <span class="bottom-nav-item-label">Home</span> 322 </a> 323 324 <!-- Kategori --> 325 <button class="bottom-nav-item" id="bottomCategoryBtn" data-mm2="trigger" aria-label="Kategori"> 326 <div class="bottom-nav-item-icon"> 327 <!-- Outlined icon (default) --> 328 <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> 329 <line x1="3" y1="12" x2="21" y2="12"/> 330 <line x1="3" y1="6" x2="21" y2="6"/> 331 <line x1="3" y1="18" x2="21" y2="18"/> 332 </svg> 333 <!-- Filled icon (active) --> 334 <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor"> 335 <path d="M3 5.25A.75.75 0 013.75 4.5h16.5a.75.75 0 010 1.5H3.75A.75.75 0 013 5.25zM3 12a.75.75 0 01.75-.75h16.5a.75.75 0 010 1.5H3.75A.75.75 0 013 12zm0 6.75a.75.75 0 01.75-.75h16.5a.75.75 0 010 1.5H3.75a.75.75 0 01-.75-.75z"/> 336 </svg> 337 </div> 338 <span class="bottom-nav-item-label">Kategori</span> 339 </button> 340 341 <!-- Keranjang --> 342 <button class="bottom-nav-item" id="bottomCartBtn"> 343 <div class="bottom-nav-item-icon"> 344 <!-- Outlined icon (default) --> 345 <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> 346 <circle cx="9" cy="21" r="1"/> 347 <circle cx="20" cy="21" r="1"/> 348 <path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"/> 349 </svg> 350 <!-- Filled icon (active) -->
351 <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor"> 352 <path d="M2.25 2.25a.75.75 0 000 1.5h1.386c.17 0 .318.114.362.278l2.558 9.592a3.752 3.752 0 00-2.806 3.63c0 .414.336.75.75.75h15.75a.75.75 0 000-1.5H5.378A2.25 2.25 0 017.5 15h11.218a.75.75 0 00.674-.421 60.358 60.358 0 002.96-7.228.75.75 0 00-.525-.965A60.864 60.864 0 005.68 4.509l-.232-.867A1.875 1.875 0 003.636 2.25H2.25zM3.75 20.25a1.5 1.5 0 113 0 1.5 1.5 0 01-3 0zM16.5 20.25a1.5 1.5 0 113 0 1.5 1.5 0 01-3 0z"/> 353 </svg> 354 <span class="bottom-nav-item-badge" id="bottomCartCount">0</span> 355 </div> 356 <span class="bottom-nav-item-label">Keranjang</span> 357 </button> 358 359 <!-- Compare --> 360 <button class="bottom-nav-item" id="bottomCompareBtn"> 361 <div class="bottom-nav-item-icon"> 362 <!-- Outlined icon (default) --> 363 <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> 364 <polyline points="17 11 21 7 17 3"/> 365 <path d="M21 7H9"/> 366 <polyline points="7 21 3 17 7 13"/> 367 <path d="M15 17H3"/> 368 </svg> 369 <!-- Filled icon (active) --> 370 <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor"> 371 <path d="M21.75 6.75a.75.75 0 00-.75-.75H9a.75.75 0 000 1.5h10.19L15.22 11.47a.75.75 0 001.06 1.06l4.5-4.5a.75.75 0 00.22-.53.75.75 0 00-.22-.53l-.03-.03zM8.78 12.47L4.28 16.97a.75.75 0 000 1.06l4.5 4.5a.75.75 0 001.06-1.06L6.06 18H15a.75.75 0 000-1.5H4.81l3.97-3.97a.75.75 0 00-1.06-1.06z"/> 372 </svg> 373 <span class="bottom-nav-item-badge" id="bottomCompareCount" style="display:none;">0</span> 374 </div> 375 <span class="bottom-nav-item-label">Compare</span> 376 </button> 377 378 <!-- Chat - Always show, check login in JavaScript --> 379 <button class="bottom-nav-item" id="bottomChatBtn" data-page="chat"> 380 <div class="bottom-nav-item-icon"> 381 <!-- Outlined icon (default) --> 382 <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" opacity="0.85"> 383 <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/> 384 </svg> 385 <!-- Filled icon (active) --> 386 <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor"> 387 <path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z"/> 388 </svg> 389 <span class="bottom-nav-item-badge" id="bottomChatCount" style="display:none;">0</span> 390 </div> 391 <span class="bottom-nav-item-label">Chat</span> 392 </button> 393 394 <!-- Akun --> 395 <button class="bottom-nav-item" id="bottomLoginBtn"> 396 <div class="bottom-nav-item-icon"> 397 <!-- Outlined icon (default) --> 398 <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> 399 <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/> 400 <circle cx="12" cy="7" r="4"/> 401 </svg> 402 <!-- Filled icon (active) --> 403 <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor"> 404 <path fill-rule="evenodd" d="M7.5 6a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM3.751 20.105a8.25 8.25 0 0116.498 0 .75.75 0 01-.437.695A18.683 18.683 0 0112 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 01-.437-.695z" clip-rule="evenodd"/> 405 </svg> 406 </div> 407 <span class="bottom-nav-item-label">Login</span> 408 </button> 409 </svg> 410 </div> 411 </button> 412 </div> 413</nav> 414 415<!-- Mobile User Menu Bottom Sheet --> 416
417<script nonce="se3iyzEHMc9FQEB4wSyd0w=="> 418(function(){ 419 const btn = document.getElementById('megaMoreBtn'); 420 const dd = document.getElementById('megaMoreDropdown'); 421 if(!btn || !dd) return; 422 423 function openDD(){ 424 dd.hidden = false; 425 btn.setAttribute('aria-expanded','true'); 426 document.addEventListener('click', outside, {capture:true}); 427 document.addEventListener('keydown', esc); 428 } 429 function closeDD(){ 430 if(dd.hidden) return; 431 dd.hidden = true; 432 btn.setAttribute('aria-expanded','false'); 433 document.removeEventListener('click', outside, {capture:true}); 434 document.removeEventListener('keydown', esc); 435 } 436 function toggle(){ dd.hidden ? openDD() : closeDD(); } 437 function outside(e){ 438 if(!dd.contains(e.target) && e.target !== btn){ 439 closeDD(); 440 } 441 } 442 function esc(e){ 443 if(e.key === 'Escape'){ 444 closeDD(); 445 btn.focus(); 446 } 447 } 448 btn.addEventListener('click', toggle); 449})(); 450 451// ========== HORIZONTAL SCROLL FADE INDICATOR ========== 452(function(){ 453 const megaCats = document.getElementById('megaCatsScroll'); 454 const fade = document.getElementById('megaCatsFade'); 455 if (!megaCats || !fade) return; 456 457 function updateFade() { 458 const scrollLeft = megaCats.scrollLeft; 459 const scrollWidth = megaCats.scrollWidth; 460 const clientWidth = megaCats.clientWidth; 461 const maxScroll = scrollWidth - clientWidth; 462 463 // Hide fade when scrolled to end (within 10px tolerance) 464 if (maxScroll - scrollLeft <= 10) { 465 fade.style.opacity = '0'; 466 } else { 467 fade.style.opacity = '1'; 468 } 469 } 470 471 // Update on scroll 472 megaCats.addEventListener('scroll', updateFade, { passive: true }); 473 474 // Update on resize 475 window.addEventListener('resize', updateFade, { passive: true }); 476 477 // Initial check 478 setTimeout(updateFade, 100); 479})(); 480 481document.addEventListener('DOMContentLoaded', function () { 482 var input = document.getElementById('searchInput'); 483 if (!input) return; 484 input.addEventListener('keydown', function (e) { 485 if (e.key === 'Enter') { 486 e.preventDefault(); 487 var form = input.form; 488 if (!form) return; 489 if (typeof form.requestSubmit === 'function') form.requestSubmit(); 490 else form.submit(); 491 } 492 }); 493}); 494 495 496(function(){ 497 const cartBtn = document.getElementById('cartBtn'); 498 if (cartBtn) { 499 cartBtn.addEventListener('click', function(e) { 500 e.preventDefault(); 501 502 const checkLogin = () => { 503 return window.isUserLoggedIn ? window.isUserLoggedIn() : false; 504 }; 505 506 if (checkLogin()) { 507 window.location.href = '/keranjang'; 508 } else { 509 showCartLoginModal(); 510 } 511 }); 512 } 513 514 const loginBtn = document.getElementById('loginBtn'); 515 if (loginBtn) { 516 loginBtn.addEventListener('click', function(e) { 517 e.preventDefault(); 518 window.location.href = 'https://ecatch.org/'; 519 }); 520 } 521 522 const userMenuBtn = document.getElementById('userMenuBtn'); 523 const userDropdown = document.getElementById('userDropdown'); 524 525 if (userMenuBtn && userDropdown) { 526 function openDropdown() { 527 userDropdown.hidden = false; 528 userMenuBtn.setAttribute('aria-expanded', 'true'); 529 document.addEventListener('click', closeOnOutside, { capture: true }); 530 document.addEventListener('keydown', closeOnEscape); 531 } 532 533 function closeDropdown() { 534 if (userDropdown.hidden) return; 535 userDropdown.hidden = true; 536 userMenuBtn.setAttribute('aria-expanded', 'false'); 537 document.removeEventListener('click', closeOnOutside, { capture: true }); 538 document.removeEventListener('keydown', closeOnEscape); 539 } 540 541 function closeOnOutside(e) { 542 if (!userDropdown.contains(e.target) && e.target !== userMenuBtn) { 543 closeDropdown(); 544 } 545 } 546 547 function closeOnEscape(e) { 548 if (e.key === 'Escape') { 549 closeDropdown(); 550 userMenuBtn.focus(); 551 } 552 } 553 554 userMenuBtn.addEventListener('click', function(e) { 555 e.preventDefault(); 556 userDropdown.hidden ? openDropdown() : closeDropdown(); 557 }); 558 559 // Close dropdown when clicking profile links 560 userDropdown.querySelectorAll('[data-close-dropdown]').forEach(link => { 561 link.addEventListener('click', function() { 562 closeDropdown(); 563 }); 564 }); 565 } 566 567 // Bottom nav profile button - toggle mobile bottom sheet 568 const bottomProfileBtn = document.getElementById('bottomProfileBtn'); 569 const mobileUserSheet = document.getElementById('mobileUserSheet'); 570 const mobileUserSheetBackdrop = document.getElementById('mobileUserSheetBackdrop'); 571 572 if (bottomProfileBtn && mobileUserSheet) { 573 function openMobileSheet() { 574 mobileUserSheet.hidden = false;
575 document.body.style.overflow = 'hidden'; 576 // Trigger animation 577 requestAnimationFrame(() => { 578 mobileUserSheet.classList.add('active'); 579 }); 580 } 581 582 function closeMobileSheet() { 583 mobileUserSheet.classList.remove('active'); 584 document.body.style.overflow = ''; 585 setTimeout(() => { 586 mobileUserSheet.hidden = true; 587 }, 300); 588 } 589 590 bottomProfileBtn.addEventListener('click', function(e) { 591 e.preventDefault(); 592 openMobileSheet(); 593 }); 594 595 if (mobileUserSheetBackdrop) { 596 mobileUserSheetBackdrop.addEventListener('click', closeMobileSheet); 597 } 598 599 // Close on escape key 600 document.addEventListener('keydown', function(e) { 601 if (e.key === 'Escape' && !mobileUserSheet.hidden) { 602 closeMobileSheet(); 603 } 604 }); 605 606 // Close sheet when clicking profile links 607 mobileUserSheet.querySelectorAll('[data-close-sheet]').forEach(link => { 608 link.addEventListener('click', function() { 609 closeMobileSheet(); 610 }); 611 }); 612 } 613 614 // Handle Google avatar error in bottom-nav (fallback to initials) 615 const bottomNavAvatar = document.querySelector('.bottom-nav-avatar-img'); 616 if (bottomNavAvatar) { 617 bottomNavAvatar.addEventListener('error', function() { 618 const initials = this.getAttribute('data-fallback-initials') || 'U'; 619 const initialsDiv = document.createElement('div'); 620 initialsDiv.className = 'bottom-nav-avatar-initials'; 621 initialsDiv.textContent = initials; 622 this.parentNode.replaceChild(initialsDiv, this); 623 }); 624 } 625 626 // Mobile logout button 627 const mobileLogoutBtn = document.getElementById('mobileLogoutBtn'); 628 if (mobileLogoutBtn) { 629 mobileLogoutBtn.addEventListener('click', async function(e) { 630 e.preventDefault(); 631 632 // Check push notification before logout 633 if (window.ChatNotification && typeof window.ChatNotification.confirmLogoutWithPushNotification === 'function') { 634 const confirmLogout = await window.ChatNotification.confirmLogoutWithPushNotification(); 635 if (!confirmLogout) { 636 return; // User cancelled logout 637 } 638 } 639 640 const getCsrfToken = () => document.querySelector('meta[name="csrf-token"]')?.getAttribute('content') || ''; 641 642 try { 643 const response = await fetch('/auth/logout', { 644 method: 'POST', 645 credentials: 'same-origin', 646 headers: { 647 'Content-Type': 'application/json', 648 'X-CSRF-Token': getCsrfToken() 649 }, 650 body: JSON.stringify({ 651 csrf_token: getCsrfToken() 652 }) 653 }); 654 655 if (response.ok) { 656 if (window.guestCart && typeof window.guestCart.clear === 'function') { 657 window.guestCart.clear(); 658 } 659 window.location.href = '/login?logged_out=1'; 660 } else { 661 console.error('Logout failed'); 662 window.location.href = '/logout'; 663 } 664 } catch (error) { 665 console.error('Logout error:', error); 666 window.location.href = '/logout'; 667 } 668 }); 669 } 670 671 const logoutBtn = document.getElementById('logoutBtn'); 672 if (logoutBtn) { 673 logoutBtn.addEventListener('click', async function(e) { 674 e.preventDefault(); 675 676 // Check push notification before logout 677 if (window.ChatNotification && typeof window.ChatNotification.confirmLogoutWithPushNotification === 'function') { 678 const confirmLogout = await window.ChatNotification.confirmLogoutWithPushNotification(); 679 if (!confirmLogout) { 680 return; // User cancelled logout 681 } 682 } 683 684 const getCsrfToken = () => document.querySelector('meta[name="csrf-token"]')?.getAttribute('content') || ''; 685 686 try { 687 const response = await fetch('/auth/logout', { 688 method: 'POST', 689 credentials: 'same-origin', 690 headers: { 691 'Content-Type': 'application/json', 692 'X-CSRF-Token': getCsrfToken() 693 }, 694 body: JSON.stringify({ 695 csrf_token: getCsrfToken() 696 }) 697 }); 698 699 if (response.ok) { 700 if (window.guestCart && typeof window.guestCart.clear === 'function') { 701 window.guestCart.clear(); 702 } 703 704 window.location.href = '/login?logged_out=1'; 705 } else { 706 console.error('Logout failed'); 707 window.location.href = '/logout'; 708 } 709 } catch (error) { 710 console.error('Logout error:', error); 711 window.location.href = '/logout'; 712 } 713 }); 714 } 715 716 const wishlistBtn = document.getElementById('wishlistBtn'); 717 const notifBtn = document.getElementById('notifBtn'); 718 719 if (wishlistBtn) { 720 wishlistBtn.addEventListener('click', function(e) { 721 e.preventDefault(); 722 alert('Fitur wishlist akan segera tersedia!'); 723 }); 724 } 725 726 if (notifBtn) { 727 notifBtn.addEventListener('click', function(e) { 728 e.preventDefault(); 729 alert('Fitur notifikasi akan segera tersedia!'); 730 }); 731 } 732})(); 733 734// ========== MOBILE BOTTOM NAVIGATION ========== 735(function initBottomNav() { 736 // Sync cart badge with bottom nav 737 function syncBottomCartBadge() { 738 const mainBadge = document.getElementById('cartCount'); 739 const bottomBadge = document.getElementById('bottomCartCount'); 740 if (mainBadge && bottomBadge) { 741 const count = mainBadge.textContent; 742 bottomBadge.textContent = count; 743 bottomBadge.style.display = parseInt(count) > 0 ? 'flex' : 'none'; 744 } 745 } 746 747 // Sync compare badge with bottom nav 748 function syncBottomCompareBadge() { 749 const mainBadge = document.getElementById('compareCount'); 750 const bottomBadge = document.getElementById('bottomCompareCount'); 751 if (mainBadge && bottomBadge) { 752 const count = mainBadge.textContent; 753 bottomBadge.textContent = count; 754 bottomBadge.style.display = parseInt(count) > 0 ? 'flex' : 'none'; 755 } 756 } 757 758 // Initial sync 759 syncBottomCartBadge(); 760 syncBottomCompareBadge(); 761 762 // Observe badge changes 763 const observer = new MutationObserver(function() { 764 syncBottomCartBadge(); 765 syncBottomCompareBadge(); 766 }); 767 768 const cartBadge = document.getElementById('cartCount'); 769 const compareBadge = document.getElementById('compareCount'); 770 771 if (cartBadge) observer.observe(cartBadge, { childList: true, characterData: true, subtree: true }); 772 if (compareBadge) observer.observe(compareBadge, { childList: true, characterData: true, subtree: true }); 773 774 // Bottom Cart Button 775 const bottomCartBtn = document.getElementById('bottomCartBtn'); 776 if (bottomCartBtn) { 777 bottomCartBtn.addEventListener('click', function(e) { 778 e.preventDefault(); 779 780 const checkLogin = () => { 781 return window.isUserLoggedIn ? window.isUserLoggedIn() : false;
782 }; 783 784 if (checkLogin()) { 785 window.location.href = '/keranjang'; 786 } else { 787 showCartLoginModal(); 788 } 789 }); 790 } 791 792 // Bottom Compare Button 793 const bottomCompareBtn = document.getElementById('bottomCompareBtn'); 794 if (bottomCompareBtn) { 795 bottomCompareBtn.addEventListener('click', function(e) { 796 e.preventDefault(); 797 798 // Close chat widget if open 799 if (window.plazaChat && window.plazaChat.isWidgetOpen) { 800 window.plazaChat.closeWidget(); 801 } 802 803 const mainCompareBtn = document.getElementById('compareBtn'); 804 if (mainCompareBtn) { 805 mainCompareBtn.click(); 806 } 807 }); 808 } 809 810 // Bottom Category Button - triggers mega menu 811 const bottomCategoryBtn = document.getElementById('bottomCategoryBtn'); 812 if (bottomCategoryBtn) { 813 bottomCategoryBtn.addEventListener('click', function(e) { 814 e.preventDefault(); 815 // Trigger desktop mega menu 816 const desktopTrigger = document.querySelector('.mm2-trigger:not(#bottomCategoryBtn)'); 817 if (desktopTrigger) { 818 desktopTrigger.click(); 819 } 820 }); 821 } 822 823 // Bottom Login Button 824 const bottomLoginBtn = document.getElementById('bottomLoginBtn'); 825 if (bottomLoginBtn) { 826 bottomLoginBtn.addEventListener('click', function(e) { 827 e.preventDefault(); 828 window.location.href = '/login'; 829 }); 830 } 831 832 // Bottom Chat Button 833 const bottomChatBtn = document.getElementById('bottomChatBtn'); 834 if (bottomChatBtn) { 835 bottomChatBtn.addEventListener('click', function(e) { 836 e.preventDefault(); 837 838 // Trigger chat widget (try multiple times if needed) 839 const triggerChat = () => { 840 const chatToggle = document.getElementById('chat-toggle-btn'); 841 if (chatToggle) { 842 chatToggle.click(); 843 return true; 844 } 845 return false; 846 }; 847 848 // Immediate attempt 849 if (!triggerChat()) { 850 // Retry after 100ms if not found 851 setTimeout(() => { 852 if (!triggerChat()) { 853 // Last resort: manually show popup 854 const popup = document.getElementById('chat-popup'); 855 if (popup) { 856 popup.style.display = 'block'; 857 } 858 } 859 }, 100); 860 } 861 }); 862 } 863 864 // Sync chat unread badge 865 function syncBottomChatBadge() { 866 const chatBadge = document.getElementById('chat-unread-badge'); 867 const bottomChatBadge = document.getElementById('bottomChatCount'); 868 if (chatBadge && bottomChatBadge) { 869 const count = chatBadge.textContent; 870 bottomChatBadge.textContent = count; 871 bottomChatBadge.style.display = chatBadge.style.display; 872 } 873 } 874 875 // Observe chat badge changes 876 const chatBadge = document.getElementById('chat-unread-badge'); 877 if (chatBadge) { 878 observer.observe(chatBadge, { attributes: true, childList: true, characterData: true, subtree: true }); 879 syncBottomChatBadge(); 880 } 881 882 // Active state management based on current page 883 function updateActiveState() { 884 const currentPath = window.location.pathname; 885 const bottomNavItems = document.querySelectorAll('.bottom-nav-item'); 886 887 bottomNavItems.forEach(item => { 888 item.classList.remove('active'); 889 890 const itemId = item.id; 891 const page = item.getAttribute('data-page'); 892 const href = item.getAttribute('href'); 893 894 // Check by ID for specific pages 895 if (itemId === 'bottomHomeBtn' && currentPath === '/') { 896 item.classList.add('active'); 897 } else if (itemId === 'bottomCartBtn' && (currentPath === '/keranjang' || currentPath === '/cart')) { 898 item.classList.add('active'); 899 } else if (itemId === 'bottomProfileBtn' && currentPath.startsWith('/profile')) { 900 item.classList.add('active'); 901 } else if (itemId === 'bottomCategoryBtn' && currentPath.startsWith('/kategori')) { 902 item.classList.add('active'); 903 } else if (itemId === 'bottomCompareBtn' && currentPath === '/compare') { 904 item.classList.add('active'); 905 } else if (itemId === 'bottomChatBtn' && currentPath === '/chat') { 906 item.classList.add('active'); 907 } 908 // Fallback: check by data-page attribute 909 else if (page === 'home' && currentPath === '/') { 910 item.classList.add('active'); 911 } else if (page === 'profile' && currentPath.startsWith('/profile')) { 912 item.classList.add('active'); 913 } 914 // Fallback: check by href 915 else if (href && currentPath === href) { 916 item.classList.add('active'); 917 } 918 }); 919 } 920 921 // Update active state on load 922 updateActiveState(); 923 924 // Bottom nav always visible - auto-hide disabled for better UX 925 // const bottomNav = document.querySelector('.bottom-nav'); 926 // if (bottomNav && window.innerWidth <= 640) { 927 // // Auto-hide feature disabled 928 // } 929})(); 930// Cart Login Modal Handler (Global scope) 931function showCartLoginModal() { 932 const modal = document.getElementById('cartLoginModal'); 933 if (!modal) return; 934 935 modal.classList.add('show'); 936 937 const confirmBtn = document.getElementById('cartLoginConfirm'); 938 const registerBtn = document.getElementById('cartRegisterBtn'); 939 const cancelBtn = document.getElementById('cartLoginCancel'); 940 941 const handleLogin = () => { 942 window.location.href = '/login?return=' + encodeURIComponent('/keranjang'); 943 }; 944 945 const handleRegister = () => { 946 window.location.href = '/register?return=' + encodeURIComponent('/keranjang'); 947 }; 948 949 const handleCancel = () => { 950 modal.classList.remove('show'); 951 confirmBtn.removeEventListener('click', handleLogin); 952 registerBtn.removeEventListener('click', handleRegister); 953 cancelBtn.removeEventListener('click', handleCancel); 954 }; 955 956 confirmBtn.removeEventListener('click', handleLogin); 957 registerBtn.removeEventListener('click', handleRegister); 958 cancelBtn.removeEventListener('click', handleCancel); 959 960 confirmBtn.addEventListener('click', handleLogin); 961 registerBtn.addEventListener('click', handleRegister); 962 cancelBtn.addEventListener('click', handleCancel); 963 964 modal.addEventListener('click', (e) => { 965 if (e.target === modal) { 966 handleCancel(); 967 } 968 }); 969} 970</script>
vendor: 1 bytes, line 970
970
971<script src="https://plazait.b-cdn.net/assets/js/cart-badge.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
971 972 973<!-- Product Compare Sidebar --> 974<div class="compare-sidebar" id="compareSidebar"> 975 <div class="compare-header"> 976 <h4 class="compare-title"> 977 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 978 <path d="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"/> 979 </svg> 980 Bandingkan Produk 981 <span class="compare-count" id="compareCountSidebar">(0)</span> 982 </h4> 983 <button class="compare-close" id="compareClose" aria-label="Tutup"> 984 <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"> 985 <path d="M18.3 5.7a1 1 0 0 0-1.4 0L12 10.6 7.1 5.7a1 1 0 1 0-1.4 1.4L10.6 12l-4.9 4.9a1 1 0 0 0 1.4 1.4L12 13.4l4.9 4.9a1 1 0 0 0 1.4-1.4L13.4 12l4.9-4.9a1 1 0 0 0 0-1.4z"/> 986 </svg> 987 </button> 988 </div> 989 990 <div class="compare-content"> 991 <div class="compare-empty" id="compareEmpty"> 992 <div class="empty-icon"> 993 <svg width="48" height="48" viewBox="0 0 24 24" fill="currentColor" opacity="0.3"> 994 <path d="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"/> 995 </svg> 996 </div> 997 <h5>Belum ada produk dipilih</h5> 998 <p>Pilih produk yang ingin dibandingkan dengan klik tombol "Bandingkan Produk" di halaman produk.</p> 999 </div> 1000 1001 <div class="compare-list" id="compareList"> 1002 <!-- Products will be populated here --> 1003 </div> 1004 </div> 1005 1006 <div class="compare-actions" id="compareActions"> 1007 <button class="btn btn-outline-danger btn-sm" id="compareClearAll"> 1008 <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"> 1009 <path d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"/> 1010 </svg> 1011 Hapus Semua 1012 </button> 1013 <button class="btn btn-primary btn-sm" id="compareAnalyze" disabled> 1014 <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"> 1015 <path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M11,16.5L18,9.5L16.59,8.09L11,13.67L7.91,10.59L6.5,12L11,16.5Z"/> 1016 </svg> 1017 Analisis AI 1018 </button> 1019 </div> 1020 1021 <!-- AI Disclaimer in Sidebar --> 1022 <div class="compare-disclaimer"> 1023 <div class="ai-disclaimer"> 1024 <div class="disclaimer-text"> 1025 <strong>ð¡ Catatan:</strong> Analisis ini dihasilkan secara otomatis dan dapat memiliki keterbatasan. 1026 Gunakan sebagai referensi tambahan dengan tetap mempertimbangkan kebutuhan Anda. 1027 Untuk informasi lebih lanjut, silakan hubungi tim SEMBAHTOTO. 1028 </div> 1029 </div> 1030 </div> 1031</div><link rel="stylesheet" href="https://plazait.b-cdn.net/assets/css/pd-lightbox.css"> 1032<style>.paylater-promo{display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,#f0fdf4 0,#dcfce7 100%);border:1px solid #86efac;border-radius:8px;padding:8px 12px;font-size:13px;line-height:1.4;margin:8px 0}.paylater-promo-sm{padding:6px 10px;font-size:11px;gap:6px}.paylater-promo-md{padding:8px 12px;font-size:13px;gap:8px}.paylater-promo-lg{padding:10px 16px;font-size:14px;gap:10px}.paylater-icon{font-size:1.2em;flex-shrink:0}.paylater-text{display:flex;flex-direction:column;gap:2px}.paylater-text strong{color:#15803d;font-weight:600}.paylater-text small{color:#16a34a;font-size:.85em;opacity:.9}.paylater-desktop-only{display:none}.paylater-mobile-only{display:flex}@media (min-width:641px){.paylater-desktop-only{display:flex}.paylater-mobile-only{display:none}}@media (max-width:640px){.paylater-promo{font-size:12px;padding:7px 10px}.paylater-promo-lg{font-size:13px;padding:8px 12px}}@media print{.paylater-promo{display:none!important}}.paylater-compact{display:inline-block;font-size:11px;font-weight:600;color:#059669;background:#d1fae5;padding:3px 8px;border-radius:4px;margin:6px 0 4px;line-height:1.3}@media (max-width:640px){.paylater-compact{font-size:10px;padding:2px 6px;margin:5px 0 3px}}@media print{.paylater-compact{display:none!important}}</style><style nonce="se3iyzEHMc9FQEB4wSyd0w==">.pd-voucher-minimal{margin:10px 0;display:flex;flex-direction:column;gap:6px}.pdv-min-item{display:flex;align-items:center;gap:8px;padding:0;height:32px;transition:all .2s ease}.pdv-min-hidden{display:none}.pdv-min-disabled{opacity:.5}.pdv-badge-btn{display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,#667eea 0,#764ba2 100%);border:none;border-radius:8px;padding:3px;
1032cursor:pointer;transition:all .2s ease;width:auto}.pdv-badge-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px rgba(102,126,234,.3)}.pdv-badge-btn:disabled{opacity:.6;cursor:not-allowed}.pdv-badge-icon{color:#fff;flex-shrink:0}.pdv-badge-text{font-size:14px;font-weight:700;color:#fff;white-space:nowrap}.pdv-badge-code{font-family:'Courier New',monospace;font-size:13px;font-weight:700;color:#fff;background:rgba(255,255,255,.2);padding:4px 8px;border-radius:4px;border:none;white-space:nowrap}.pdv-min-copy,.pdv-min-more{padding:4px 12px;font-size:12px;font-weight:600;border-radius:5px;border:1px solid #e2e8f0;background:#fff;color:#667eea;cursor:pointer;transition:all .2s ease;white-space:nowrap}.pdv-min-copy:hover:not(:disabled),.pdv-min-more:hover{background:#667eea;color:#fff;border-color:#667eea}.pdv-min-copy:disabled{opacity:.4;cursor:not-allowed}.pdv-min-copy.copied{background:#22c55e;color:#fff;border-color:#22c55e}.pdv-min-more{margin-left:auto}.modal-close{position:absolute;top:20px;right:20px;background:none;border:none;cursor:pointer;color:#64748b;padding:4px;transition:color .2s ease}.modal-close:hover{color:#1e293b}.modal-body{margin-bottom:8px}.voucher-modal-content{text-align:center}.voucher-modal-badge{display:inline-flex;flex-direction:row;align-items:center;gap:6px;background:linear-gradient(135deg,#667eea 0,#764ba2 100%);border-radius:10px;padding:8px 16px;margin-bottom:12px}.vmb-value{font-size:18px;font-weight:700;color:#fff;line-height:1}.vmb-label{font-size:18px;font-weight:700;color:#fff;text-transform:uppercase;letter-spacing:.5px}.voucher-modal-code{font-family:'Courier New',monospace;font-size:14px;font-weight:700;color:#667eea;background:rgba(102,126,234,.1);padding:6px 12px;border-radius:6px;border:2px dashed rgba(102,126,234,.3);display:inline-block;margin-bottom:10px}.voucher-modal-name{font-size:14px;font-weight:600;color:#1e293b;margin-bottom:16px}.voucher-modal-details{text-align:left;background:#f8fafc;border-radius:8px;padding:12px;margin-bottom:16px}.vmd-item{display:flex;align-items:flex-start;gap:8px;padding:6px 0;font-size:13px;color:#64748b;border-bottom:1px solid #e2e8f0}.vmd-item:last-child{border-bottom:none}.vmd-item svg{color:#667eea;flex-shrink:0;margin-top:2px}.vmd-item strong{color:#1e293b}.modal-actions{padding:20px}.modal-btn-primary{background:linear-gradient(135deg,#667eea 0,#764ba2 100%);color:#fff}.modal-btn-primary:hover{opacity:.9;transform:translateY(-1px)}@media (max-width:640px){.pdv-min-item{gap:6px}.pdv-badge-btn{padding:3px;gap:6px}.pdv-badge-text{font-size:13px}.pdv-badge-code{font-size:12px;padding:3px 6px}.pdv-min-copy,.pdv-min-more{padding:3px 10px;font-size:11px}.modal-dialog{max-width:95%;margin:20px}.vmb-value{font-size:16px}.vmb-label{font-size:16px}.voucher-modal-code{font-size:13px;padding:5px 10px}}</style><style nonce="se3iyzEHMc9FQEB4wSyd0w==">.promo-endyear-mini-banner{display:flex;align-items:center;gap:12px;padding:12px 16px;background:rgba(255,255,255,.8);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:2px solid rgba(242,140,26,.2);border-radius:12px;margin:16px 0;box-shadow:0 4px 16px rgba(0,0,0,.08);transition:all .3s ease}.promo-endyear-mini-banner:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.12);border-color:rgba(242,140,26,.4)}.pey-icon{font-size:32px;line-height:1;flex-shrink:0}.pey-content{flex:1;min-width:0}.pey-content strong{display:block;font-size:14px;font-weight:700;color:#1af22c;margin-bottom:2px}.pey-content span{display:block;font-size:13px;color:#64748b;line-height:1.4}.pey-link{flex-shrink:0;padding:8px 16px;background:linear-gradient(135deg,#1af22c,#FFB84D);color:#fff;text-decoration:none;font-size:13px;font-weight:700;border-radius:8px;white-space:nowrap;transition:all .2s ease;box-shadow:0 2px 8px rgba(242,140,26,.25)}.pey-link:hover{transform:translateX(2px);box-shadow:0 4px 12px rgba(242,140,26,.35)}@media(max-width:640px){.promo-endyear-mini-banner{flex-wrap:wrap;gap:8px;padding:10px 12px}.pey-icon{font-size:28px;align-self:flex-start}.pey-content{flex:1;min-width:0}.pey-content strong{font-size:12px}.pey-content span{font-size:11px;line-height:1.3}.pey-link{width:100%;flex-basis:100%;font-size:11px;padding:6px 12px;text-align:center}}@media print{.promo-endyear-mini-banner{display:none!important}}</style> 1033<style nonce="se3iyzEHMc9FQEB4wSyd0w=="> 1034.pd-title-row{position:relative;margin-bottom:12px;padding-right:52px}.pd-title{margin:0!important}.pd-share-btn{position:absolute;top:0;right:0;width:40px;height:40px;
1034display:inline-flex;align-items:center;justify-content:center;border-radius:10px;border:1px solid #e2e8f0;background:#fff;color:#64748b;cursor:pointer;transition:all .2s ease;-webkit-tap-highlight-color:transparent}.pd-share-btn:hover{background:#f8fafc;border-color:#cbd5e1;color:#0f172a;transform:translateY(-1px)}.pd-share-btn:active{transform:translateY(0)}.pd-share-btn svg{display:block} 1035 1036.pd-share-modal-overlay{position:fixed;inset:0;background:rgba(15,23,42,.75);backdrop-filter:blur(4px);z-index:99999;display:none;align-items:center;justify-content:center;padding:0;animation:fadeIn .2s ease}.pd-share-modal-overlay.show{display:flex}.pd-share-modal{background:#fff;border-radius:20px;box-shadow:0 25px 50px -12px rgba(0,0,0,.25);max-width:480px;width:100%;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;animation:slideUp .3s cubic-bezier(.16,1,.3,1)}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes slideUp{from{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}} 1037 1038.pd-share-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid #f1f5f9}.pd-share-title{font-size:18px;font-weight:700;color:#0f172a;margin:0}.pd-share-close{width:32px;height:32px;border-radius:8px;border:0;background:transparent;color:#64748b;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s ease}.pd-share-close:hover{background:#f1f5f9;color:#0f172a}.pd-share-body{padding:24px;overflow-y:auto} 1039 1040.pd-share-preview{display:flex;gap:12px;padding:16px;background:#f8fafc;border-radius:12px;margin-bottom:24px}.pd-share-preview-img{width:64px;height:64px;border-radius:8px;object-fit:cover;flex-shrink:0;border:1px solid #e2e8f0}.pd-share-preview-info{flex:1;min-width:0}.pd-share-preview-name{font-size:14px;font-weight:600;color:#0f172a;margin:0 0 4px 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.pd-share-preview-price{font-size:16px;font-weight:700;color:#0ea5e9;margin:0} 1041 1042.pd-share-label{font-size:13px;font-weight:600;color:#475569;margin:0 0 12px 0;text-transform:uppercase;letter-spacing:.5px}.pd-share-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:24px}.pd-share-option{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 8px;border:1.5px solid #e2e8f0;border-radius:12px;background:#fff;cursor:pointer;transition:all .2s ease;text-decoration:none;color:inherit}.pd-share-option:hover{border-color:#94a3b8;background:#f8fafc;transform:translateY(-2px)}.pd-share-option:active{transform:translateY(0)} 1043 1044.pd-share-icon{width:40px;height:40px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;position:relative}.pd-share-icon svg{width:24px;height:24px;display:block}.pd-share-icon-whatsapp{background:linear-gradient(135deg,#25D366 0%,#128C7E 100%);color:#fff}.pd-share-icon-facebook{background:linear-gradient(135deg,#1877F2 0%,#0c63d4 100%);color:#fff}.pd-share-icon-twitter{background:linear-gradient(135deg,#1DA1F2 0%,#0d8bd9 100%);color:#fff}.pd-share-icon-telegram{background:linear-gradient(135deg,#0088cc 0%,#0077b3 100%);color:#fff}.pd-share-icon-email{background:linear-gradient(135deg,#EA4335 0%,#c5331f 100%);color:#fff}.pd-share-icon-copy{background:linear-gradient(135deg,#f1db63 0%,#e5d146 100%);color:#fff}.pd-share-icon-pdf{background:linear-gradient(135deg,#5eef44 0%,#dc2626 100%);color:#fff}.pd-share-name{font-size:12px;font-weight:600;color:#475569;text-align:center} 1045 1046.pd-share-copy-section{background:#f8fafc;padding:16px;border-radius:12px}.pd-share-copy-input-wrap{display:flex;gap:8px}.pd-share-copy-input{flex:1;padding:12px 14px;border:1px solid #e2e8f0;border-radius:10px;font-size:14px;color:#0f172a;background:#fff;font-family:'Segoe UI',system-ui,sans-serif}.pd-share-copy-input:focus{outline:0;border-color:#0ea5e9;box-shadow:0 0 0 3px rgba(14,165,233,.1)}.pd-share-copy-btn{padding:12px 20px;border:0;border-radius:10px;background:linear-gradient(135deg,#0ea5e9 0%,#0284c7 100%);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}.pd-share-copy-btn:hover{background:linear-gradient(135deg,#0284c7 0%,#0369a1 100%);transform:translateY(-1px);box-shadow:0 4px 12px rgba(14,165,233,.3)}
1046.pd-share-copy-btn:active{transform:translateY(0)}.pd-share-copy-btn svg{width:16px;height:16px}.pd-share-copy-btn.copied{background:linear-gradient(135deg,#22c55e 0%,#16a34a 100%);pointer-events:none} 1047 1048@media(max-width:640px){.pd-share-modal{border-radius:20px 20px 0 0;margin-top:auto;max-height:85vh}.pd-share-grid{grid-template-columns:repeat(3,1fr)}.pd-share-header{padding:16px 20px}.pd-share-body{padding:20px}.pd-share-btn{width:36px;height:36px}.pd-share-btn svg{width:18px;height:18px}}@media(max-width:480px){.pd-share-grid{grid-template-columns:repeat(3,1fr);gap:10px}.pd-share-option{padding:12px 6px}.pd-share-icon{width:36px;height:36px}.pd-share-icon svg{width:20px;height:20px}.pd-share-name{font-size:11px}} 1049 1050.mf-share{background:#fff;color:#3cfb75;border:2px solid #3cfb75;display:inline-flex;align-items:center;justify-content:center}.mf-share:active{transform:scale(.95)}.mf-share svg{display:block} 1051 1052@media(max-width:640px){.pd-share-btn{display:none!important}} 1053 1054.stock-badge.in{background:#e6f9ec;color:#15803d;border-radius:999px;padding:4px 10px;font-weight:700}.stock-badge.out{background:#fee2e2;color:#b91c1c;border-radius:999px;padding:4px 10px;font-weight:700} 1055 1056.stock-info-btn{--c:#0ea5e9;--b:#bae6fd;--bg:#f0f9ff;--bg-h:#e0f2fe;--b-h:#0ea5e9;margin-left:0;display:inline-flex;align-items:center;justify-content:center;gap:0.5rem;padding:4px 10px;border-radius:999px;border:1.5px solid var(--b);background:var(--bg);color:var(--c);cursor:pointer;font-size:12px;font-weight:600;transition:all .2s ease;-webkit-tap-highlight-color:transparent}.stock-info-btn:hover{background:var(--bg-h);border-color:var(--b-h);color:#0284c7;transform:translateY(-1px);box-shadow:0 2px 8px rgba(14,165,233,.15)}.stock-info-btn:active{transform:translateY(0)}.stock-info-btn:focus-visible{outline:0;box-shadow:0 0 0 3px rgba(14,165,233,.2)}.stock-info-btn svg{width:14px;height:14px;flex-shrink:0}.stock-info-btn .btn-text{white-space:nowrap} 1057 1058.stock-popover{position:absolute;z-index:9999;min-width:280px;max-width:92vw;background:#0b1220;color:#eef3ff;border:1px solid rgba(255,255,255,.08);border-radius:14px;box-shadow:0 20px 40px rgba(12,12,20,.45);padding:12px 12px 8px;display:none}.stock-popover.show{display:block}.stock-popover::before{content:"";position:absolute;top:-8px;left:24px;width:14px;height:14px;background:#0b1220;border-left:1px solid rgba(255,255,255,.08);border-top:1px solid rgba(255,255,255,.08);transform:rotate(45deg)}.sp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.sp-title{font-weight:800;font-size:14px}.sp-close{background:transparent;border:0;color:#98a2b3;cursor:pointer} 1059 1060.sp-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.sp-item{display:grid;grid-template-columns:1fr auto 32px;column-gap:12px;align-items:center;padding:10px 10px;min-height:44px;border-radius:10px;background:rgba(255,255,255,.03)}.sp-left{display:flex;align-items:center;gap:10px}.sp-dot{width:10px;height:10px;border-radius:999px;background:var(--dot,#60a5fa);display:inline-block}.sp-label{font-weight:600;font-size:13px} 1061 1062 1063.sp-qty{grid-column:2;justify-self:end;min-width:40px;text-align:right;font-weight:800;font-size:13px;color:#cfe4ff;font-variant-numeric:tabular-nums} 1064 1065.sp-wa{ 1066 grid-column:3; justify-self:end; 1067 width:32px; height:32px; min-width:32px; min-height:32px; 1068 box-sizing:border-box; 1069 padding:0; line-height:0; text-decoration:none; outline:0; 1070 display:inline-flex; align-items:center; justify-content:center; 1071 border-radius:999px; border:1px solid rgba(37,211,102,.60); /* 1px untuk hasil âcrispâ */ 1072 background:rgba(37,211,102,.08); color:#25D366; 1073 transition:background-color .15s ease, border-color .15s ease, transform .05s ease; 1074 -webkit-tap-highlight-color:transparent; 1075} 1076.sp-wa:hover{background:rgba(37,211,102,.16);border-color:rgba(37,211,102,.75)} 1077.sp-wa:active{transform:translateY(.5px) scale(.98)} 1078 1079.sp-wa svg{width:18px;height:18px;display:block;vertical-align:middle} 1080.stock-popover a{text-decoration:none} 1081 1082#deskripsi img{max-width:450px!important;height:unset!important}@media(max-width:640px){.stock-popover{position:fixed;left:0;right:0;bottom:max(12px,env(safe-area-inset-bottom,12px));margin:0 10px;padding:14px 12px 10px;border-radius:16px}.stock-popover::before{display:none}.stock-info-btn{padding:4px 8px;gap:4px;border:0;background:transparent}.stock-info-btn:hover{background:transparent;box-shadow:none;transform:none}.stock-info-btn .btn-text{display:none}.stock-info-btn svg{width:16px;height:16px}.sp-item{grid-template-columns:1fr auto 36px}.sp-wa{width:36px;height:36px;min-width:36px;min-height:36px}.sp-wa svg{width:19px;height:19px}} 1083 1084.stock-dot{position:absolute;bottom:8px;right:8px;width:8px;height:8px;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,0.4);z-index:2;cursor:help}.stock-dot.ready{background:#10b981}.stock-dot.low{background:#f59e0b}.stock-dot.out{background:#5eef44}.stock-dot:hover{transform:scale(1.2);transition:transform 0.2s ease}@media(max-width:640px){.stock-dot{width:7px;height:7px;bottom:6px;right:6px}} 1085 1086.pd-related-card .spec-chips{font-size:11px;color:#64748b;margin:4px 0 6px 0;line-height:1.3;font-weight:500}.pd-related-card .spec-chips .spec-divider{margin:0 4px;opacity:0.6}@media(max-width:640px){.pd-related-card .spec-chips{font-size:10px;margin:3px 0 5px 0}#deskripsi img{max-width:300px!important;height:unset!important;justify-self:center!important}} 1087 1088.pwp-trigger-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 8px 4px;background:linear-gradient(135deg,#fbbf24 0%,#f59e0b 100%);color:#78350f;border-radius:6px;font-size:.65rem;font-weight:600;border:0}.pwp-trigger-badge svg{flex-shrink:0;width:12px;height:12px} 1089.pwp-deals-section{margin:0;padding:12px;background:linear-gradient(135deg,#fef3c7 0%,#fde68a 100%);border-radius:12px;border:2px solid #fbbf24}.pwp-deals-header{display:flex;gap:10px;margin-bottom:10px}.pwp-icon{flex-shrink:0;color:#f59e0b;width:18px;height:18px}.pwp-text .pwp-title{margin:0 0 2px 0;font-size:14px;font-weight:700;color:#78350f}.pwp-text .pwp-subtitle{margin:0;font-size:11px;color:#92400e;opacity:0.9}.pwp-deals-loading{text-align:center;padding:40px 0;color:#92400e}.pwp-spinner{width:40px;height:40px;border:3px solid #fbbf24;border-top-color:#f59e0b;border-radius:50%;animation:spin 0.8s linear infinite;margin:0 auto 12px}@keyframes spin{to{transform:rotate(360deg)}} 1090.pwp-deals-grid{display:flex;flex-direction:column;gap:6px}.pwp-deal-card{background:#fff;border-radius:6px;overflow:hidden;border:1px solid #fbbf24;display:flex;align-items:center;padding:8px;gap:10px}.pwp-deal-card:hover{background:#fef3c7}.pwp-deal-thumb{flex-shrink:0;width:50px;height:50px;background:#f8fafc;overflow:hidden;border-radius:4px}.pwp-deal-thumb img{width:100%;height:100%;object-fit:cover}.pwp-deal-badge{background:#dc2626;color:#fff;padding:2px 5px;border-radius:3px;font-size:9px;font-weight:700;margin-left:auto}.pwp-deal-info{flex:1;display:flex;flex-direction:column;gap:4px}.pwp-deal-name{font-size:12px;font-weight:600;color:#0f172a;margin:0;line-height:1.2}.pwp-deal-prices{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.pwp-deal-price{font-size:14px;font-weight:800;color:#dc2626;white-space:nowrap}.pwp-deal-original{font-size:11px;color:#64748b;text-decoration:line-through;white-space:nowrap}.pwp-cart-note{margin-top:8px;padding:6px 10px;background:#e0f2fe;border-left:2px solid#0ea5e9;font-size:11px;color:#0c4a6e;border-radius:4px} 1091@media(max-width:640px){.pwp-deals-section{margin:12px 0;padding:10px;border-radius:10px}.pwp-deals-header{gap:8px}.pwp-text .pwp-title{font-size:13px}.pwp-text .pwp-subtitle{font-size:10px}.pwp-deal-card{padding:6px;gap:8px}.pwp-deal-thumb{width:45px;height:45px}.pwp-deal-name{font-size:11px}.pwp-deal-price{font-size:13px}.pwp-deal-original{font-size:10px}} 1092 1093.preorder-badge{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;background:linear-gradient(135deg,#8b5cf6 0%,#7c3aed 100%);color:#fff;border-radius:8px;font-size:13px;font-weight:700;border:0;box-shadow:0 2px 8px rgba(139,92,246,.25)}.preorder-badge svg{width:16px;height:16px;flex-shrink:0}.preorder-info{margin:12px 0;padding:14px;background:linear-gradient(135deg,#f5f3ff 0%,#ede9fe 100%);border:1.5px solid #c4b5fd;border-radius:12px}.preorder-info-header{display:flex;align-items:center;gap:8px;margin-bottom:10px}.preorder-info-icon{width:20px;height:20px;color:#7c3aed;flex-shrink:0}.preorder-info-title{font-size:14px;font-weight:700;color:#5b21b6;margin:0}.preorder-info-items{display:flex;flex-direction:column;gap:8px}.preorder-info-row{display:flex;align-items:center;justify-content:space-between;font-size:13px}.preorder-info-label{color:#6b21a8;font-weight:600}.preorder-info-value{color:#5b21b6;font-weight:700}.preorder-info-value.highlight{color:#dc2626;font-size:14px}.preorder-info-note{margin-top:10px;padding:8px 10px;background:#fef3c7;border-left:2px solid #f59e0b;font-size:12px;color:#78350f;border-radius:6px;line-height:1.4}@media(max-width:640px){.preorder-badge{font-size:12px;padding:5px 10px}.preorder-info{margin:10px 0;padding:12px}.preorder-info-title{font-size:13px}.preorder-info-row{font-size:12px}.preorder-info-note{font-size:11px;padding:6px 8px}} 1094</style> 1095 1096<div class="pd-sticky-header" id="pd-sticky-header"><div class="pd-sticky-header-container"><div class="pd-sticky-thumb"><img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="PUNCAKTOTO" id="pd-sticky-thumb-img"></div><div class="pd-sticky-info"><h2 class="pd-sticky-title" id="pd-sticky-title">SEMBAHTOTO | Situs Toto Slot Gacor Pro Maxwin & Toto Macau 4D Toto 5D dengan Deposit Dana Slot88 Tanpa Editan</h2><div class="pd-sticky-price-row"><span class="pd-sticky-price" id="pd-sticky-price">Rp 1.000.000,-</span><span class="pd-sticky-price-original" id="pd-sticky-price-original">Rp 1.000.000</span><span class="pd-sticky-discount" id="pd-sticky-discount">-99.5%</span></div></div><div class="pd-sticky-actions"><button type="button" class="pd-sticky-share-btn" id="pd-sticky-share-btn" aria-label="Bagikan produk" title="Bagikan"><svg viewBox="0 0 24 24" width="16" height="16" aria-hidden="true">
1096<path fill="currentColor" d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92-1.31-2.92-2.92-2.92z"/></svg></button><button type="button" class="pd-sticky-btn pd-sticky-btn-chat" id="pd-sticky-chat"><svg viewBox="0 0 640 640" fill="currentColor" aria-hidden="true"><path d="M320 128C241 128 175.3 185.3 162.3 260.7C171.6 257.7 181.6 256 192 256L208 256C234.5 256 256 277.5 256 304L256 400C256 426.5 234.5 448 208 448L192 448C139 448 96 405 96 352L96 288C96 164.3 196.3 64 320 64C443.7 64 544 164.3 544 288L544 456.1C544 522.4 490.2 576.1 423.9 576.1L336 576L304 576C277.5 576 256 554.5 256 528C256 501.5 277.5 480 304 480L336 480C362.5 480 384 501.5 384 528L384 528L424 528C463.8 528 496 495.8 496 456L496 435.1C481.9 443.3 465.5 447.9 448 447.9L432 447.9C405.5 447.9 384 426.4 384 399.9L384 303.9C384 277.4 405.5 255.9 432 255.9L448 255.9C458.4 255.9 468.3 257.5 477.7 260.6C464.7 185.3 399.1 127.9 320 127.9z"/></svg>Tanya</button><button type="button" class="pd-sticky-btn pd-sticky-btn-cart" id="pd-sticky-add-cart" disabled>+ Keranjang</button><button type="button" class="pd-sticky-btn pd-sticky-btn-buy" id="pd-sticky-buy" disabled>Beli Sekarang</button></div></div></div> 1097 1098<main class="product-single product-single--v3"><nav class="pd-breadcrumb" aria-label="breadcrumb"><a href="https://ecatch.org/">SEMBAHTOTO</a><span>/</span><a href="https://ecatch.org/">SEMBAHTOTO LOGIN</a><span>/</span><a href="https://ecatch.org/">SEMBAHTOTO DAFTAR</a><span>/</span><a href="https://ecatch.org/">SEMBAHTOTO TERPERCAYA</a><span>/</span><a href="https://ecatch.org/">SEMBAHTOTO SITUS</a><span>/</span><span class="current">SEMBAHTOTO | Situs Toto Slot Gacor Pro Maxwin & Toto Macau 4D Toto 5D dengan Deposit Dana Slot88 Tanpa Editan 1099</span></nav> 1100 1101<div class="pd-top-layout"><section class="pd-media-card"><figure class="pd-main-image" id="pd-main-figure"><img id="pd-main-img" src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="SEMBAHTOTO" data-slug="" loading="eager"> 1102</figure> 1103 1104<div class="pd-mobile-slider-wrapper"> 1105<div class="pd-mobile-slider" id="pd-mobile-slider" aria-label="Galeri gambar (geser)"><div class="pd-mslide"><img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="SEMBAHTOTO" loading="eager"></div><div class="pd-mslide"><img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="SEMBAHTOTO" loading="lazy"></div><div class="pd-mslide"><img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="SEMBAHTOTO" loading="lazy"></div><div class="pd-mslide"><img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="SEMBAHTOTO" loading="lazy"></div><div class="pd-mslide"><img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="SEMBAHTOTO" loading="lazy"></div><div class="pd-mslide"><img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="SEMBAHTOTO" loading="lazy"></div></div><div class="pd-gallery-counter" id="pd-gallery-counter">1/6</div></div> 1106<div class="pd-thumb-gallery" id="pd-thumb-gallery" aria-label="Galeri gambar produk"><button type="button" class="pd-thumb-btn active" data-full="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" data-alt="PUNCAKTOTO" data-slug="" aria-label="Gambar 1"><img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="PUNCAKTOTO" loading="lazy"></button><button type="button" class="pd-thumb-btn " data-full="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" data-alt="PUNCAKTOTO" data-slug="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" aria-label="Gambar 2"><img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="PUNCAKTOTO" loading="lazy"></button><button type="button" class="pd-thumb-btn " data-full="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" data-alt
1106="SEMBAHTOTO" data-slug="lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-223.webp" aria-label="Gambar 3"><img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="SEMBAHTOTO" loading="lazy"></button><button type="button" class="pd-thumb-btn " data-full="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" data-alt="SEMBAHTOTO" data-slug="lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-776.webp" aria-label="Gambar 4"><img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="SEMBAHTOTO" loading="lazy"></button><button type="button" class="pd-thumb-btn " data-full="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" data-alt="SEMBAHTOTO" data-slug="lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-634.webp" aria-label="Gambar 5"><img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="SEMBAHTOTO" loading="lazy"></button><button type="button" class="pd-thumb-btn " data-full="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" data-alt="SEMBAHTOTO" data-slug="lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-892.webp" aria-label="Gambar 6"><img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="SEMBAHTOTO" loading="lazy"></button></div></section><section class="pd-info-card"><div id="pd-variant-combined" class="pd-variant-combined" hidden></div><div class="pd-title-row"> 1107 <h1 class="pd-title" id="pd-title">SEMBAHTOTO | Situs Toto Slot Gacor Pro Maxwin & Toto Macau 4D Toto 5D dengan Deposit Dana Slot88 Tanpa Editan</h1><button type="button" class="pd-share-btn" id="pd-share-btn" aria-label="Bagikan produk" title="Bagikan"><svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true"><path fill="currentColor" d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92-1.31-2.92-2.92-2.92z"/></svg></button></div> 1108<div id="pd-price-anchor"> 1109</div> 1110<div class="pd-price-qr-container"> 1111 <div class="pd-price-block" id="pd-price-block"> 1112 <div class="pd-price-row"> 1113 <span class="pd-price-current" id="pd-price-current" >Rp 1.000.000</span> 1114 <span class="pd-price-original" id="pd-price-original">Rp 10.000.000</span> 1115 <span class="pd-discount-badge" id="pd-discount-badge">-90%</span></div> 1116 <div class="pd-meta-row"> 1117 <span class="sold-inline" id="pd-sold-inline" data-role="sold-chip">Terjual Terjual 1.000+</span> 1118 <span class="pwp-trigger-badge" id="pwp-trigger-badge" hidden> 1119 <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"> 1120 <path d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/></svg>Bisa PWP</span></div> 1121 <div class="pd-meta-inline"><span class="stock-badge out" id="pd-stock-badge">SEMBAHTOTO</span> 1122 <span class="sku">SKU: <span id="pd-sku">4563217890</span></span></div> 1123<div class="paylater-promo paylater-promo-sm paylater-mobile-only"> 1124 <span class="paylater-icon">ð³</span> 1125 <span class="paylater-text"> 1126 <strong>Autorized SITUS TEPERCAYA</strong> 1127 <small>SEMBAHTOTO SITUS TERPERCAYA</small> 1128 </span> 1129</div> 1130 1131<div class="stock-popover" id="pd-stock-popover" role="dialog" aria-hidden="true" aria-label="Informasi stok cabang"><div class="sp-head"><div class="sp-title">Stok Cabang</div><button type="button" class="sp-close" id="pd-stock-popover-close" aria-label="Tutup"><svg width="18" height="18" viewBox="0 0 24 24">
1131<path fill="currentColor" d="M18.3 5.71L12 12.01l-6.3-6.3-1.4 1.41 6.3 6.3-6.3 6.3 1.4 1.41 6.3-6.3 6.3 6.3 1.41-1.41-6.3-6.3 6.3-6.3z"/></svg></button></div><ul class="sp-list"> 1132<li class="sp-item"><div class="sp-left"><span class="sp-dot" style="--dot:#3389f3;"></span><span class="sp-label">SITUS TERPERCAYA</span></div><span class="sp-qty" id="sp-qty-meg">0</span><a class="sp-wa" href="https://wa.me/6281380009898?text=Halo%2C%20saya%20ingin%20tanya%20stok%20di%20Asia%20Mega%20Mas%20untuk%20produk%20https%3A%2F%2Fplazait.co.id%2Fproduct%2Flenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-black" target="_blank" rel="noopener" aria-label="WhatsApp Asia Mega Mas"><svg class="ico-wa" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path fill="currentColor" d="M17.472 14.382c-.297-.149-1.758-.867-2.029-.967-.273-.099-.471-.148-.669.149-.198.297-.767.966-.94 1.164-.173.198-.347.223-.644.074-.297-.149-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.297-.347.446-.52.149-.173.198-.297.298-.495.099-.198.05-.372-.025-.521-.075-.149-.669-1.612-.916-2.206-.242-.579-.487-.5-.669-.51l-.57-.01c-.198 0-.52.074-.792.372s-1.04 1.016-1.04 2.479 1.065 2.876 1.213 3.074c.149.198 2.095 3.2 5.076 4.487.709.306 1.262.489 1.694.626.712.226 1.36.194 1.872.118.571-.085 1.758-.718 2.006-1.411.248-.694.248-1.29.173-1.411-.074-.123-.272-.198-.57-.347m-5.421 7.403h-.002a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.263c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.887 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.158 11.892c0 2.096.547 4.142 1.588 5.945L0 24l6.305-1.654a11.86 11.86 0 005.67 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.485-8.413"/></svg></a></li> 1133 1134 <li class="sp-item"> 1135 <div class="sp-left"> 1136 <span class="sp-dot" style="--dot:#3456d3;"></span> 1137 <span class="sp-label">JAKARTA Fair</span> 1138 </div> 1139 <span class="sp-qty" id="sp-qty-mdf">0</span> 1140 <a class="sp-wa" 1141 href="https://wa.me/6285388992009?text=Halo%2C%20saya%20ingin%20tanya%20stok%20di%20Medan%20Fair%20untuk%20produk%20https%3A%2F%2Fplazait.co.id%2Fproduct%2Flenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-black" 1142 target="_blank" rel="noopener" aria-label="WhatsApp Medan Fair"> 1143 <svg class="ico-wa" viewBox="0 0 24 24" aria-hidden="true" focusable="false"> 1144 <path fill="currentColor" d="M17.472 14.382c-.297-.149-1.758-.867-2.029-.967-.273-.099-.471-.148-.669.149-.198.297-.767.966-.94 1.164-.173.198-.347.223-.644.074-.297-.149-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.297-.347.446-.52.149-.173.198-.297.298-.495.099-.198.05-.372-.025-.521-.075-.149-.669-1.612-.916-2.206-.242-.579-.487-.5-.669-.51l-.57-.01c-.198 0-.52.074-.792.372s-1.04 1.016-1.04 2.479 1.065 2.876 1.213 3.074c.149.198 2.095 3.2 5.076 4.487.709.306 1.262.489 1.694.626.712.226 1.36.194 1.872.118.571-.085 1.758-.718 2.006-1.411.248-.694.248-1.29.173-1.411-.074-.123-.272-.198-.57-.347m-5.421 7.403h-.002a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.263c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.887 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.158 11.892c0 2.096.547 4.142 1.588 5.945L0 24l6.305-1.654a11.86 11.86 0 005.67 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.485-8.413"/> 1145 </svg> 1146 </a> 1147 </li> 1148 1149 <li class="sp-item"> 1150 <div class="sp-left"> 1151 <span class="sp-dot" style="--dot:#f50be5;"></span>
1152 <span class="sp-label">BATAM</span> 1153 </div> 1154 <span class="sp-qty" id="sp-qty-bda">0</span> 1155 <a class="sp-wa" 1156 href="https://wa.me/628116833411?text=Halo%2C%20saya%20ingin%20tanya%20stok%20di%20Banda%20Aceh%20untuk%20produk%20https%3A%2F%2Fplazait.co.id%2Fproduct%2Flenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-black" 1157 target="_blank" rel="noopener" aria-label="WhatsApp Banda Aceh"> 1158 <svg class="ico-wa" viewBox="0 0 24 24" aria-hidden="true" focusable="false"> 1159 <path fill="currentColor" d="M17.472 14.382c-.297-.149-1.758-.867-2.029-.967-.273-.099-.471-.148-.669.149-.198.297-.767.966-.94 1.164-.173.198-.347.223-.644.074-.297-.149-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.297-.347.446-.52.149-.173.198-.297.298-.495.099-.198.05-.372-.025-.521-.075-.149-.669-1.612-.916-2.206-.242-.579-.487-.5-.669-.51l-.57-.01c-.198 0-.52.074-.792.372s-1.04 1.016-1.04 2.479 1.065 2.876 1.213 3.074c.149.198 2.095 3.2 5.076 4.487.709.306 1.262.489 1.694.626.712.226 1.36.194 1.872.118.571-.085 1.758-.718 2.006-1.411.248-.694.248-1.29.173-1.411-.074-.123-.272-.198-.57-.347m-5.421 7.403h-.002a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.263c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.887 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.158 11.892c0 2.096.547 4.142 1.588 5.945L0 24l6.305-1.654a11.86 11.86 0 005.67 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.485-8.413"/> 1160 </svg> 1161 </a> 1162 </li> 1163 </ul> 1164 </div> 1165 1166 </div> 1167 <div class="pd-qr-print" style="display:none;"><div class="pd-qr-label">Scan untuk lihat produk:</div><img src="https://api.qrserver.com/v1/create-qr-code/?size=120x120&data=https%3A%2F%2Fplazait.co.id%2Fproduct%2Flenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-black" alt="QR Code" class="pd-qr-image"></div> 1168 </div> 1169 <div id="pd-variants-anchor"></div> 1170 1171 1172 1173 <div class="pd-compare-section"> 1174 <button type="button" class="pd-compare-btn" id="pd-compare-btn" data-product-id="325"> 1175 <svg class="compare-icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor"> 1176 <path d="M21,9L17,5V8H10V10H17V13M7,11L3,15L7,19V16H14V14H7V11Z"/> 1177 </svg> 1178 <span class="compare-text">Bandingkan Produk</span> 1179 <span class="compare-remove" hidden> 1180 <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"> 1181 <path d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"/> 1182 </svg> 1183 Hapus dari Perbandingan 1184 </span> 1185 </button> 1186 <div class="pd-compare-info"> 1187 <small class="compare-note" id="compare-note">Bandingkan hingga 5 produk dengan bantuan AI</small> 1188 </div> 1189 </div> 1190 1191 <div class="pd-short-desc"><p><strong>Informasi SEMBAHTOTO HK POOLS & SDY POOLS:</strong></p> 1192 1193<ul> 1194 <li>Minimal Deposit: Mulai dari Rp10.000,-</li> 1195 <li>Pasaran Favorit: HK Pools, SDY Pools, Toto Macau, Togel Online</li> 1196 <li>Metode Pembayaran: Bank Lokal, QRIS, Dana, OVO, Gopay</li> 1197 <li>Mata Uang: Rupiah (IDR)</li> 1198 <li>Jam Operasional: Online 24 Jam Nonstop</li> 1199 <li>Rating Pengguna: âââââ (9.8/10)</li> 1200 <li>Akses Mudah: Login Cepat & Anti Lemot</li> 1201 <li>Daftar Sekarang: <a href="https://ecatch.org/">SEMBAHTOTO TERPERCAYA</a></li> 1202</ul> 1203</div> 1204 1205<div class="togel-container-v3 mini"> 1206 <div class="togel-machine-v3"> 1207 <h2 class="togel-title-v3">ð¯ PREDIKSI HK POOLS & SDY POOLS ð¯</h2> 1208
1209 <div class="togel-controls-v3"> 1210 <label> 1211 PASARAN 1212 <select id="marketFilter"> 1213 <option value="ALL">ALL PASARAN</option> 1214 </select> 1215 </label> 1216 1217 <label> 1218 TIPE 1219 <select id="typeFilter"> 1220 <option value="5D">5D</option> 1221 <option value="4D">4D</option> 1222 <option value="3D">3D</option> 1223 <option value="2D">2D</option> 1224 </select> 1225 </label> 1226 1227 <label> 1228 MIN CONF 1229 <input id="minConf" type="number" min="50" max="99" step="1" value="99"> 1230 </label> 1231 1232 <button id="btnTogelRandom" type="button"> 1233 <span class="icon">ð²</span> PUTAR PREDIKSI..! 1234 </button> 1235 </div> 1236 1237 <div class="togel-main-result-v3" id="togelResult"> 1238 <div class="togel-status-v3" id="togelStatus">â SIAP DIGUNAKAN â</div> 1239 1240 <div class="togel-highlight-box"> 1241 <div class="togel-col-left"> 1242 <div class="k">Pasaran Pilihan</div> 1243 <div class="v-game" id="rMarket">-</div> 1244 1245 <div class="provider-info"> 1246 <span class="k-small">Tipe:</span> 1247 <span class="v-small" id="rType">-</span> 1248 <span class="k-small" style="margin-left:10px;">Conf:</span> 1249 <span class="v-small" id="rConf">-</span> 1250 </div> 1251 </div> 1252 1253 <div class="togel-col-right"> 1254 <div class="k-rtp">Angka Prediksi</div> 1255 <div class="v-rtp-huge" id="rAngka">-</div> 1256 </div> 1257 </div> 1258 1259 <div class="togel-details-v3"> 1260 <div class="togel-detail-item"> 1261 <div class="k-detail">BBFS</div> 1262 <div class="v-detail" id="rBBFS">-</div> 1263 </div> 1264 <div class="togel-detail-item"> 1265 <div class="k-detail">ANGKA IKUT</div> 1266 <div class="v-detail" id="rIkut">-</div> 1267 </div> 1268 <div class="togel-detail-item"> 1269 <div class="k-detail">SHIO</div> 1270 <div class="v-detail" id="rShio">-</div> 1271 </div> 1272 </div> 1273 1274 <div class="togel-tip-v3" id="rTip"> 1275 Tips: Gunakan prediksi HK Pools dan SDY Pools ini sebagai referensi tambahan sebelum bermain. 1276 </div> 1277 </div> 1278 1279 <div class="togel-alts-v3"> 1280 <div class="togel-alts-title-v3">3 Alternatif Angka</div> 1281 <div class="togel-alt-list-v3" id="togelAltList"></div> 1282 </div> 1283 1284 <div class="togel-note-v3"> 1285 Disclaimer: Prediksi ini dibuat untuk hiburan dan referensi tambahan. 1286 </div> 1287 </div> 1288</div> 1289 1290<style> 1291@import url("https://fonts.googleapis.com/css2?family=Orbitron:wght@600;700;800&display=swap"); 1292 1293/* =============================== 1294 WRAPPER 1295================================ */ 1296.togel-container-v3{ 1297 display:flex; 1298 justify-content:center; 1299 padding:16px 10px; 1300 font-family:"Orbitron","Poppins",system-ui,sans-serif; 1301} 1302 1303/* =============================== 1304 MACHINE CORE (GOLD) 1305================================ */ 1306.togel-machine-v3{ 1307 position:relative; 1308 width:100%; 1309 max-width:520px; 1310 padding:16px; 1311 border-radius:16px; 1312 overflow:hidden; 1313 isolation:isolate; 1314 1315 background: 1316 radial-gradient(circle at 15% 0%, rgba(4, 255, 0, 0.15), transparent 48%), 1317 radial-gradient(circle at 85% 100%, rgba(17, 255, 0, 0.12), transparent 55%), 1318 linear-gradient(145deg,#001a02,#010b00); 1319 1320 border:1px solid rgba(13, 255, 0, 0.45); 1321 1322 box-shadow: 1323 inset 0 0 18px rgba(51, 255, 0, 0.25), 1324 0 0 18px rgba(0, 255, 21, 0.35); 1325 1326 color:#dddcff; 1327} 1328 1329/* HUD SWEEP */ 1330.togel-machine-v3::before{ 1331 content:""; 1332 position:absolute; 1333 inset:0; 1334 background:linear-gradient(120deg, transparent 40%, rgba(55, 255, 0, 0.08), transparent 65%); 1335 animation:hudSweep 7s linear infinite; 1336 pointer-events:none; 1337 opacity:.8; 1338} 1339 1340/* =============================== 1341 TITLE 1342================================ */ 1343.togel-title-v3{ 1344 text-align:center; 1345 margin:0 0 12px; 1346 font-size:15px; 1347 font-weight:900; 1348 letter-spacing:1px; 1349 color:#22c50d; 1350 text-shadow:0 0 8px #03c71ae6; 1351} 1352 1353/* =============================== 1354 CONTROLS 1355================================ */ 1356.togel-controls-v3{ 1357 display:grid; 1358 grid-template-columns:1fr 1fr; 1359 gap:10px; 1360 padding:12px; 1361 border-radius:14px; 1362 1363 background:rgba(0, 0, 0, 0.45); 1364 border:1px solid rgba(0, 255, 8, 0.35); 1365 box-shadow: inset 0 0 14px rgba(21, 255, 0, 0.22); 1366} 1367
1368.togel-controls-v3 label{ 1369 display:grid; 1370 gap:6px; 1371 font-size:10px; 1372 letter-spacing:.8px; 1373 text-transform:uppercase; 1374 color:#7aff95; 1375} 1376 1377.togel-controls-v3 select, 1378.togel-controls-v3 input{ 1379 background:rgba(32, 28, 0, 0.92); 1380 color:#e1dcff; 1381 border:1px solid rgba(0, 255, 13, 0.5); 1382 border-radius:10px; 1383 padding:7px 9px; 1384 font-weight:700; 1385 font-size:12px; 1386 outline:none; 1387 box-shadow: inset 0 0 10px rgba(0, 255, 0, 0.2); 1388} 1389 1390/* BUTTON */ 1391#btnTogelRandom{ 1392 grid-column:span 2; 1393 display:flex; 1394 align-items:center; 1395 justify-content:center; 1396 gap:8px; 1397 1398 background:linear-gradient(145deg,#17ca35,#008004); 1399 border:none; 1400 color:#e6e6e6; 1401 font-weight:900; 1402 letter-spacing:.8px; 1403 border-radius:14px; 1404 cursor:pointer; 1405 padding:10px 12px; 1406 font-size:12px; 1407 1408 box-shadow:0 0 16px #00ff26b3; 1409 transition:.2s ease; 1410} 1411 1412#btnTogelRandom:active{ transform:scale(.98); } 1413#btnTogelRandom:disabled{ opacity:.75; cursor:not-allowed; } 1414 1415/* =============================== 1416 MAIN RESULT 1417================================ */ 1418.togel-main-result-v3{ 1419 margin-top:12px; 1420 padding:12px; 1421 border-radius:14px; 1422 1423 background:rgba(2, 30, 0, 0.75); 1424 border:1px solid rgba(0, 255, 0, 0.35); 1425 box-shadow: inset 0 0 16px rgba(60, 255, 0, 0.26); 1426} 1427 1428.togel-status-v3{ 1429 text-align:center; 1430 font-weight:800; 1431 letter-spacing:.8px; 1432 color:#7cff7a; 1433 margin-bottom:10px; 1434 font-size:11px; 1435} 1436 1437.togel-highlight-box{ 1438 display:flex; 1439 justify-content:space-between; 1440 gap:12px; 1441 padding-bottom:10px; 1442 margin-bottom:10px; 1443 border-bottom:1px dashed rgba(0, 255, 26, 0.3); 1444} 1445 1446.k, .k-rtp{ 1447 font-size:10px; 1448 color:#7aff89; 1449 text-transform:uppercase; 1450} 1451 1452.v-game{ 1453 font-size:14px; 1454 font-weight:900; 1455 color:#ffffff; 1456 margin-top:6px; 1457} 1458 1459.provider-info{ margin-top:8px; font-size:11px; color:#aaffa7; } 1460 1461.v-rtp-huge{ 1462 font-size:2.4em; 1463 font-weight:900; 1464 color:#7aff83; 1465 text-shadow:0 0 10px rgba(0, 255, 17, 0.7); 1466} 1467 1468/* DETAILS */ 1469.togel-details-v3{ 1470 display:grid; 1471 grid-template-columns:repeat(3,1fr); 1472 gap:8px; 1473 background:rgba(0,0,0,.30); 1474 padding:10px; 1475 border-radius:12px; 1476} 1477 1478.k-detail{ 1479 font-size:9px; 1480 color:#7aff95; 1481} 1482.v-detail{ 1483 font-size:12px; 1484 font-weight:800; 1485 color:#ffffff; 1486} 1487 1488/* ALTS */ 1489.togel-alts-v3{ 1490 margin-top:12px; 1491 padding:12px; 1492 border-radius:14px; 1493 background:rgba(0,0,0,.40); 1494 border:1px solid rgba(4, 0, 255, 0.35); 1495} 1496.togel-alts-title-v3{ 1497 font-weight:900; 1498 color:#8cff7a; 1499} 1500.togel-alt-item{ 1501 background:rgba(20, 15, 0, 0.85); 1502 border-radius:12px; 1503 padding:10px; 1504 border-left:3px solid #7aff90; 1505} 1506.togel-alt-item .g{ color:#fff; } 1507.togel-alt-item .p{ color:#aeffa7; } 1508.togel-alt-item .r{ color:#9dff7a; } 1509 1510/* ANIM */ 1511@keyframes hudSweep{ 1512 0%{transform:translateX(-110%)} 1513 100%{transform:translateX(110%)} 1514} 1515</style> 1516
1517<script> 1518/* =============================== 1519 DATASET TOGEL (SIMULASI) 1520================================ */ 1521const TOGEL_MARKETS = [ 1522 { market:"Singapore", code:"SGP", open:"17:45", zone:"WIB" }, 1523 { market:"Hongkong", code:"HK", open:"22:45", zone:"WIB" }, 1524 { market:"Sydney", code:"SDY", open:"13:45", zone:"WIB" }, 1525 { market:"TOTO MACAU", code:"TM", open:"16:00", zone:"WIB" }, 1526 { market:"Cambodia", code:"KHM", open:"10:45", zone:"WIB" }, 1527 { market:"Japan", code:"JP", open:"11:30", zone:"WIB" } 1528]; 1529 1530const SHIO = ["Tikus","Kerbau","Macan","Kelinci","Naga","Ular","Kuda","Kambing","Monyet","Ayam","Anjing","Babi"]; 1531 1532const $ = (q) => document.querySelector(q); 1533const randInt = (min,max) => Math.floor(Math.random()*(max-min+1))+min; 1534 1535function uniqueMarkets(){ 1536 return TOGEL_MARKETS.map(m => m.market); 1537} 1538 1539function genDigits(len){ 1540 let s = ""; 1541 for(let i=0;i<len;i++) s += String(randInt(0,9)); 1542 return s; 1543} 1544 1545function genBBFS(){ 1546 const pool = [...Array(10)].map((_,i)=>i); 1547 const out = []; 1548 for(let i=0;i<7;i++){ 1549 const idx = randInt(0, pool.length-1); 1550 out.push(pool.splice(idx,1)[0]); 1551 } 1552 return out.join(""); 1553} 1554 1555function genIkut(){ 1556 const pool = [...Array(10)].map((_,i)=>i); 1557 const out = []; 1558 for(let i=0;i<4;i++){ 1559 const idx = randInt(0, pool.length-1); 1560 out.push(pool.splice(idx,1)[0]); 1561 } 1562 return out.join(" ⢠"); 1563} 1564 1565function simulateConfidence(){ 1566 return randInt(60, 96); 1567} 1568 1569function applyFilters(){ 1570 const m = $("#marketFilter").value; 1571 const minC = parseFloat($("#minConf").value || "0"); 1572 1573 return TOGEL_MARKETS 1574 .filter(x => (m==="ALL" || x.market===m)) 1575 .map(x => ({...x, conf: simulateConfidence()})) 1576 .filter(x => x.conf >= minC); 1577} 1578 1579function pickRandom(arr, n=1){ 1580 const copy = [...arr]; 1581 const out = []; 1582 for(let i=0;i<n && copy.length;i++){ 1583 const idx = randInt(0, copy.length-1); 1584 out.push(copy.splice(idx,1)[0]); 1585 } 1586 return out; 1587} 1588 1589function formatAngka(type){ 1590 if(type==="4D") return genDigits(4); 1591 if(type==="3D") return genDigits(3); 1592 return genDigits(2); 1593} 1594 1595function renderMain(item, type){ 1596 $("#rMarket").textContent = `${item.market} (${item.code}) ⢠Open ${item.open} ${item.zone}`; 1597 $("#rType").textContent = type; 1598 $("#rConf").textContent = `${item.conf}%`; 1599 1600 $("#rAngka").textContent = formatAngka(type); 1601 $("#rBBFS").textContent = genBBFS(); 1602 $("#rIkut").textContent = genIkut(); 1603 $("#rShio").textContent = SHIO[randInt(0, SHIO.length-1)]; 1604 $("#rTip").textContent = "Tips: Ini simulasi hiburan. Tetap bijak & disiplin."; 1605} 1606 1607function renderAlts(list, type){ 1608 const wrap = $("#togelAltList"); 1609 wrap.innerHTML = ""; 1610 list.forEach(x=>{ 1611 const el = document.createElement("div"); 1612 el.className = "togel-alt-item"; 1613 el.innerHTML = ` 1614 <div class="g">${x.market} (${x.code})</div> 1615 <div class="p">Tipe ${type} ⢠Conf <strong>${x.conf}%</strong></div> 1616 <div class="r">Angka: <strong>${formatAngka(type)}</strong></div> 1617 `; 1618 wrap.appendChild(el); 1619 }); 1620} 1621 1622function spinButton(btn, on){ 1623 if(on){ 1624 btn.disabled = true; 1625 btn.dataset.text = btn.innerHTML; 1626 btn.innerHTML = `<span class="icon">ð</span> PROCESS...`; 1627 }else{ 1628 btn.disabled = false; 1629 btn.innerHTML = btn.dataset.text || `<span class="icon">ð²</span> GENERATE`; 1630 } 1631} 1632 1633/* =============================== 1634 INIT 1635================================ */ 1636(function init(){ 1637 const sel = $("#marketFilter"); 1638 uniqueMarkets().forEach(m=>{ 1639 const o = document.createElement("option"); 1640 o.value = m; o.textContent = m; 1641 sel.appendChild(o); 1642 }); 1643 1644 $("#btnTogelRandom").addEventListener("click", (e)=>{ 1645 const btn = e.currentTarget; 1646 const type = $("#typeFilter").value; 1647 const filtered = applyFilters(); 1648 const st = $("#togelStatus"); 1649 1650 if(!filtered.length){ 1651 st.textContent = "â NO MATCH â"; 1652 st.style.color = "white"; 1653 renderAlts([], type); 1654 $("#rMarket").textContent = "-"; 1655 $("#rType").textContent = type; 1656 $("#rConf").textContent = "-"; 1657 $("#rAngka").textContent = "-"; 1658 $("#rBBFS").textContent = "-"; 1659 $("#rIkut").textContent = "-"; 1660 $("#rShio").textContent = "-"; 1661 return; 1662 } 1663 1664 spinButton(btn,true); 1665 st.textContent = "â GENERATING â"; 1666 st.style.animation = "pulse .6s linear infinite"; 1667 st.style.color = "white"; 1668 1669 const t0 = setInterval(()=>{ 1670 const temp = pickRandom(filtered,1)[0]; 1671 $("#rMarket").textContent = `${temp.market} (${temp.code}) ⢠Open ${temp.open} ${temp.zone}`; 1672 $("#rType").textContent = type; 1673 $("#rConf").textContent = `${temp.conf}%`; 1674 $("#rAngka").textContent = formatAngka(type); 1675 $("#rBBFS").textContent = genBBFS(); 1676 $("#rIkut").textContent = genIkut(); 1677 $("#rShio").textContent = SHIO[randInt(0, SHIO.length-1)]; 1678 }, 85); 1679 1680 setTimeout(()=>{ 1681 clearInterval(t0); 1682 1683 const picks = pickRandom(filtered,4); 1684 renderMain(picks[0], type); 1685 renderAlts(picks.slice(1), type); 1686 1687 st.textContent = "â READY â"; 1688 st.style.animation = ""; 1689 st.style.color = "gold"; 1690 spinButton(btn,false); 1691 }, 1200); 1692 }); 1693 1694 renderAlts([], "4D"); 1695})(); 1696</script>
1696 1697 1698 1699 1700 <div class="pwp-deals-section" id="pwp-deals-section" hidden data-product-id="325" data-variant-id="0" data-category-path="Komputer & Laptop/Laptop/Gaming"><div class="pwp-deals-header"><svg class="pwp-icon" width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/></svg><div class="pwp-text"><h3 class="pwp-title">Penawaran Spesial PWP (Purchase with Purchase)</h3><p class="pwp-subtitle">Beli produk ini dan dapatkan produk pilihan dengan harga spesial</p></div></div><div class="pwp-deals-loading"><div class="pwp-spinner"></div><p>Memuat penawaran...</p></div><div class="pwp-deals-grid" id="pwp-deals-grid"></div><p class="pwp-cart-note">ð¡ Produk PWP dapat ditambahkan di halaman keranjang setelah produk ini dimasukkan</p></div> 1701 </section> 1702 1703 <aside class="pd-sidebar"> 1704 <div class="pd-side-card pd-buy-card"> 1705 <form class="pd-buy-form" id="pd-buy-form" data-pid="325"> 1706 <input type="hidden" name="variant_id" id="pd-variant-id" value="0"> 1707 <div> 1708 <label for="qty" class="qty-label">Qty</label> 1709 <input type="number" id="qty" name="qty" value="0" min="1" 1710 max="0" 1711 disabled> 1712 </div> 1713 <div class="pd-actions"> 1714 <button type="submit" class="btn-add-cart" id="btn-add-cart" disabled>+ Keranjang</button> 1715 <button type="button" class="btn-buy" id="btn-buy" data-id="278426" disabled >Beli</button> 1716 <button type="button" class="btn-chat-icon" id="btn-chat-icon" aria-label="Tanya Produk" title="Tanya Produk"><svg viewBox="0 0 640 640" fill="currentColor"><path d="M320 128C241 128 175.3 185.3 162.3 260.7C171.6 257.7 181.6 256 192 256L208 256C234.5 256 256 277.5 256 304L256 400C256 426.5 234.5 448 208 448L192 448C139 448 96 405 96 352L96 288C96 164.3 196.3 64 320 64C443.7 64 544 164.3 544 288L544 456.1C544 522.4 490.2 576.1 423.9 576.1L336 576L304 576C277.5 576 256 554.5 256 528C256 501.5 277.5 480 304 480L336 480C362.5 480 384 501.5 384 528L384 528L424 528C463.8 528 496 495.8 496 456L496 435.1C481.9 443.3 465.5 447.9 448 447.9L432 447.9C405.5 447.9 384 426.4 384 399.9L384 303.9C384 277.4 405.5 255.9 432 255.9L448 255.9C458.4 255.9 468.3 257.5 477.7 260.6C464.7 185.3 399.1 127.9 320 127.9z"/></svg></button> 1717 </div> 1718 </form> 1719 <div class="paylater-promo paylater-promo-md paylater-desktop-only"> 1720 <span class="paylater-icon">ð³</span> 1721 <span class="paylater-text"> 1722 <strong>Autorized SITUS TERPERCAYA</strong> 1723 <small>SITUS SEMBAHTOTO</small> 1724 </span> 1725</div> </div> 1726 1727 1728 <div class="pd-side-card qoala-banner-card"> 1729 <div class="qoala-banner"> 1730 <div class="qoala-banner-content"> 1731 <div class="qoala-icon"> 1732 <center><img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="SEMBAHTOTO" class="qoala-shield-img"></center> 1733 </div> 1734 <div class="qoala-text"> 1735 <div class="qoala-title">SEMBAHTOTO VVIP</div> 1736 <div class="qoala-subtitle">Verified</div> 1737 </div> 1738 </div> 1739 <a href="https://ecatch.org/" class="qoala-cta" 1740 data-ga-event="qoala_banner_click" 1741 data-product-id="325" 1742 data-product-name="SEMBAHTOTO" 1743 data-category-path="Komputer & Laptop/Laptop/Gaming" target="_blank">Info</a> 1744 </div> 1745<style> 1746.qoala-banner-card { 1747 padding: 0; 1748 overflow: hidden; 1749} 1750 1751.qoala-banner { 1752 background: linear-gradient(135deg, #99ff7a 0%, #06005c 100%); 1753 padding: 12px 16px; 1754 display: flex; 1755 align-items: center; 1756 justify-content: space-between; 1757 color: #ffffff; 1758 text-decoration: none; 1759 min-height: 60px; 1760} 1761 1762.qoala-banner-content { 1763 display: flex; 1764 align-items: center; 1765 gap: 12px; 1766} 1767 1768.qoala-icon { 1769 display: flex; 1770 align-items: center; 1771 justify-content: center; 1772} 1773 1774.qoala-shield-img { 1775 width: 36px; 1776 height: 36px; 1777 object-fit: contain; 1778 opacity: 0.9; 1779} 1780 1781.qoala-title { 1782 font-weight: 600; 1783 font-size: 14px; 1784 line-height: 1.2; 1785 color: #ffffff; 1786} 1787 1788.qoala-subtitle { 1789 font-size: 12px; 1790 opacity: 0.9; 1791 line-height: 1.2; 1792 color: #ffffff; 1793} 1794 1795.qoala-cta { 1796 background: rgba(0, 0, 0, 0.15); 1797 color: #e6e6e6; 1798 padding: 6px 12px; 1799 border-radius: 6px; 1800 font-size: 12px; 1801 font-weight: 600; 1802 text-decoration: none; 1803 transition: background 0.2s ease; 1804 border: 1px solid rgba(0, 0, 0, 0.2); 1805} 1806 1807.qoala-cta:hover { 1808 background: rgba(0, 0, 0, 0.25); 1809 color: #000000; 1810} 1811 1812@media (max-width: 768px) { 1813 .qoala-banner { 1814 padding: 10px 12px; 1815 } 1816 1817 .qoala-title { 1818 font-size: 17px; 1819 } 1820 1821 .qoala-subtitle { 1822 font-size: 11px; 1823 } 1824} 1825</style> 1826 </div> 1827 1828 <div class="pd-side-card pd-installment-card2" 1829 id="inst-card" 1830 data-base-price="20789000" 1831 data-zero-smart="0"> 1832 <div class="inst-head"> 1833 <h3>Promo & Fitur SEMBAHTOTO</h3> 1834 </div> 1835 1836 <div class="inst-bank-tabs" role="tablist" aria-label="Bank"> 1837 <button type="button" class="bank-tab active" data-bank="HK POOLS" aria-selected="true">HK POOLS</button> 1838 <button type="button" class="bank-tab" data-bank="SDY POOLS" aria-selected="false">SDY POOLS</button> 1839 <button type="button" class="bank-tab" data-bank="SEMBAHTOTO" aria-selected="false">SEMBAHTOTO</button> 1840 </div> 1841 1842 <ul class="inst-month-list" id="inst-month-list" aria-label="Daftar cicilan per bulan"></ul> 1843 <div class="inst-note" id="inst-zero-note" style="display:none;">10% Cicilan khusus bank terpilih*</div> 1844 <div class="inst-disclaimer">Angka estimasi. Bisa berhttps://trunojoyo.health/4.html sesuai kebijakan bank / penyedia.</div> 1845 </div> 1846 1847 <!-- MECHA BLUE FINAL BOSS REVIEW SLIDER --> 1848<div class="tnt-review-mecha"> 1849 1850<div class="tnt-header"> 1851<h2>SEMBAHTOTO HK POOLS & SDY POOLS</h2> 1852<p>Testimoni Member SEMBAHTOTO</p> 1853</div> 1854 1855<div class="tnt-slider" id="tntSlider"> 1856 1857<div class="tnt-slide active"> 1858 <div class="tnt-name">RIZKY FIRMANSYAH</div> 1859 <div class="tnt-comment">"SEMBAHTOTO jadi pilihan saya untuk main HK Pools karena result selalu update cepat dan akses websitenya ringan di semua perangkat."</div> 1860</div> 1861 1862<div class="tnt-slide"> 1863 <div class="tnt-name">ANDRE SAPUTRA</div> 1864 <div class="tnt-comment">"Prediksi SDY Pools di SEMBAHTOTO cukup membantu sebagai referensi tambahan. Selain itu proses login dan deposit juga sangat praktis."</div> 1865</div> 1866 1867<div class="tnt-slide"> 1868 <div class="tnt-name">
1868FERDY WIJAYA</div> 1869 <div class="tnt-comment">"Saya suka tampilannya yang modern dengan tema pink neon, membuat pengalaman bermain HK Pools dan SDY Pools terasa lebih nyaman dan premium."</div> 1870</div> 1871 1872<div class="tnt-slide"> 1873 <div class="tnt-name">HENDRA KURNIAWAN</div> 1874 <div class="tnt-comment">"Customer service SEMBAHTOTO responsif 24 jam dan selalu membantu ketika saya mengalami kendala saat transaksi ataupun login akun."</div> 1875</div> 1876 1877<div class="tnt-slide"> 1878 <div class="tnt-name">BAGAS PRATAMA</div> 1879 <div class="tnt-comment">"SEMBAHTOTO memiliki sistem yang stabil dan cepat, cocok untuk pengguna yang mencari situs HK Pools dan SDY Pools terpercaya setiap hari."</div> 1880</div> 1881 1882</div> 1883</div> 1884 1885 </div> 1886 </div> 1887<a href="https://trunojoyo.health/4.html" target="_blank"> 1888 <img 1889 src="https://imgdate.com/6qkiUuqf.gif" 1890 alt="SEMBAHTOTO" 1891 style=" 1892 display:block; 1893 margin:0 auto; 1894 width:100%; 1895 max-width:1200px; 1896 height:auto; 1897 border:2px solid rgb(211, 79, 13); 1898 border-radius:20px; 1899 box-shadow:1px 1px 8px rgba(0,0,0,0.5); 1900 " 1901 /> 1902</a> 1903</div> 1904 1905<style> 1906.tnt-review-mecha{ 1907 background: radial-gradient(circle at center, #1a1400, #050300); 1908 border: 2px solid #99ff7a; 1909 border-radius: 14px; 1910 padding: 20px; 1911 color: #e1dcff; 1912 font-family: 'Orbitron', sans-serif; 1913 position: relative; 1914 overflow: hidden; 1915 box-shadow: 1916 0 0 25px rgba(17, 0, 255, 0.6), 1917 inset 0 0 20px rgba(4, 0, 255, 0.15); 1918} 1919 1920/* scanline emas */ 1921.tnt-review-mecha::before{ 1922 content:""; 1923 position:absolute; 1924 inset:0; 1925 background: repeating-linear-gradient( 1926 to bottom, 1927 rgba(255,215,0,0.06), 1928 rgba(255,215,0,0.06) 1px, 1929 transparent 2px, 1930 transparent 4px 1931 ); 1932 pointer-events:none; 1933} 1934 1935/* efek shine jalan */ 1936.tnt-review-mecha::after{ 1937 content:""; 1938 position:absolute; 1939 top:0; 1940 left:-120%; 1941 width:50%; 1942 height:100%; 1943 background:linear-gradient( 1944 120deg, 1945 transparent, 1946 rgba(255,215,0,0.25), 1947 transparent 1948 ); 1949 transform:skewX(-20deg); 1950 animation:shineMove 4s infinite; 1951} 1952 1953/* HEADER */ 1954.tnt-header h2{ 1955 font-size: 18px; 1956 color:#99ff7a; 1957 text-shadow: 1958 0 0 8px rgba(0, 255, 47, 0.8), 1959 0 0 18px rgba(0, 255, 115, 0.6); 1960 margin-bottom:5px; 1961} 1962 1963.tnt-header p{ 1964 font-size:12px; 1965 opacity:0.8; 1966 margin-bottom:15px; 1967 color:#a7ffb9; 1968} 1969 1970/* SLIDER */ 1971.tnt-slider{ 1972 position:relative; 1973 height:90px; 1974} 1975 1976.tnt-slide{ 1977 position:absolute; 1978 width:100%; 1979 opacity:0; 1980 transform:translateX(40px); 1981 transition:all .6s ease; 1982} 1983 1984.tnt-slide.active{ 1985 opacity:1; 1986 transform:translateX(0); 1987} 1988 1989/* NAME */ 1990.tnt-name{ 1991 font-size:14px; 1992 color:#99ff7a; 1993 margin-bottom:5px; 1994 text-shadow:0 0 6px rgba(30, 255, 0, 0.8); 1995} 1996 1997/* COMMENT */ 1998.tnt-comment{ 1999 font-size:13px; 2000 line-height:1.5; 2001 color:#c5c4ff; 2002} 2003 2004/* glowing border animation */ 2005@keyframes pulseGlow{ 2006 0%{ 2007 box-shadow: 2008 0 0 12px rgba(43, 255, 0, 0.4), 2009 inset 0 0 15px rgba(0, 255, 76, 0.1); 2010 } 2011 50%{ 2012 box-shadow: 2013 0 0 30px rgba(68, 255, 0, 0.8), 2014 inset 0 0 25px rgba(0, 4, 255, 0.2); 2015 } 2016 100%{ 2017 box-shadow: 2018 0 0 12px rgba(0, 255, 38, 0.4), 2019 inset 0 0 15px rgba(0, 255, 0, 0.1); 2020 } 2021} 2022 2023/* shine animation */ 2024@keyframes shineMove{ 2025 0%{ left:-120%; } 2026 100%{ left:140%; } 2027} 2028 2029.tnt-review-mecha{ 2030 animation:pulseGlow 2.8s infinite; 2031} 2032</style> 2033
2034<script> 2035let slides = document.querySelectorAll('.tnt-slide'); 2036let index = 0; 2037 2038setInterval(()=>{ 2039 slides[index].classList.remove('active'); 2040 index = (index + 1) % slides.length; 2041 slides[index].classList.add('active'); 2042}, 3000); 2043</script>
2043 2044 2045 <section class="pd-full-description cyber-mecha" id="deskripsi"> 2046 <h2 class="pd-full-desc-title"></h2> 2047 2048 <div class="pd-full-desc-body"> 2049 2050 <div class="mecha-header"> 2051 <h3>SEMBAHTOTO | Situs Toto Slot Gacor Pro Maxwin & Toto Macau 4D Toto 5D dengan Deposit Dana Slot88 Tanpa Editan</h3> 2052 </div> 2053 2054 <div class="mecha-image"> 2055 <center><img src="https://www.studiointermedia.com/images/2026/01/05/image28d31c9493f2bd9f.png" alt="SEMBAHTOTO" /></center> 2056 </div> 2057 2058 <div class="mecha-content"> 2059 2060 <p><a href="https://ecatch.org/">SEMBAHTOTO</a> hadir sebagai situs HK Pools dan SDY Pools terpercaya yang menawarkan pengalaman bermain togel online dengan sistem modern, akses cepat, dan tampilan yang nyaman digunakan di berbagai perangkat. Dengan konsep yang lebih praktis dan stabil, SEMBAHTOTO memberikan kemudahan bagi pengguna yang ingin menikmati pasaran Hongkong Pools dan Sydney Pools setiap hari tanpa hambatan. 2061<br> 2062Keunggulan utama SEMBAHTOTO terletak pada update result tercepat, prediksi angka yang akurat, serta proses transaksi yang dirancang lebih aman dan efisien. Pengguna dapat melakukan deposit dengan mudah melalui berbagai metode pembayaran seperti bank lokal, QRIS, dan e-wallet tanpa proses yang rumit. Hal ini membuat pengalaman bermain menjadi lebih nyaman dan fleksibel kapan saja. 2063<br> 2064Selain menghadirkan pasaran HK Pools dan SDY Pools lengkap, SEMBAHTOTO juga didukung layanan customer service online 24 jam yang siap membantu pengguna dengan cepat dan responsif. Tampilan situs yang ringan dengan tema pink neon modern membuat aktivitas bermain terasa lebih premium dan menarik untuk dinikmati setiap hari. 2065<br> 2066Secara keseluruhan, SEMBAHTOTO menjadi pilihan tepat bagi pencinta HK Pools dan SDY Pools yang mencari situs terpercaya dengan result tercepat, prediksi akurat, layanan profesional, dan sistem transaksi yang aman.</p> 2067 2068 <p class="final-line"> 2069 âï¸ <span class="glow-strong">SEMBAHTOTO mengoperasikan situs toto slot gacor pro maxwin untuk toto macau 4d dan toto 5d dengan deposit dana via slot88 tanpa editan dan tanpa manipulasi RTP.</span> 2070 2071 </p> 2072 2073 2074 </div> 2075 2076 </div> 2077</section> 2078 2079<style> 2080@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;600;800&display=swap'); 2081 2082.cyber-mecha { 2083 font-family: 'Orbitron', sans-serif; 2084 max-width: 900px; 2085 margin: 40px auto; 2086 padding: 25px; 2087 border-radius: 18px; 2088 background: radial-gradient(circle at top, #001204, #010400 70%); 2089 border: 1px solid rgba(68, 212, 55, 0.35); 2090 box-shadow: 2091 0 0 18px rgba(55, 212, 73, 0.35), 2092 inset 0 0 20px rgba(86, 212, 55, 0.12); 2093 position: relative; 2094 overflow: hidden; 2095} 2096 2097/* scanline emas gelap */ 2098.cyber-mecha::before { 2099 content: ""; 2100 position: absolute; 2101 inset: 0; 2102 background: repeating-linear-gradient( 2103 to bottom, 2104 rgba(55, 58, 212, 0.04), 2105 rgba(78, 55, 212, 0.04) 1px, 2106 transparent 1px, 2107 transparent 3px 2108 ); 2109 pointer-events: none; 2110} 2111 2112/* shine lebih halus */ 2113.cyber-mecha::after { 2114 content:""; 2115 position:absolute; 2116 top:0; 2117 left:-120%; 2118 width:50%; 2119 height:100%; 2120 background:linear-gradient( 2121 120deg, 2122 transparent, 2123 rgba(65, 55, 212, 0.18), 2124 transparent 2125 ); 2126 transform:skewX(-20deg); 2127 animation:shineMove 5s infinite; 2128} 2129 2130.pd-full-desc-title { 2131 text-align: center; 2132 font-size: 22px; 2133 font-weight: 800; 2134 color: #37d43f; 2135 margin-bottom: 25px; 2136 text-shadow: 2137 0 0 6px rgba(81, 212, 55, 0.6), 2138 0 0 12px rgba(65, 212, 55, 0.4); 2139 letter-spacing: 1px; 2140} 2141 2142/* FAQ BOX */ 2143.faq-item { 2144 margin-bottom: 15px; 2145 border-radius: 12px; 2146 border: 1px solid rgba(73, 212, 55, 0.25); 2147 background: rgba(0, 30, 0, 0.45); 2148 backdrop-filter: blur(8px); 2149 transition: all 0.3s ease; 2150 overflow: hidden; 2151} 2152 2153.faq-item:hover { 2154 border-color: rgba(105, 212, 55, 0.6); 2155 box-shadow: 0 0 12px rgba(68, 212, 55, 0.35); 2156} 2157 2158/* QUESTION */ 2159.faq-question { 2160 padding: 14px 18px; 2161 cursor: pointer; 2162 font-size: 14px; 2163 color: #6ae672; 2164 position: relative; 2165} 2166 2167.faq-question::after { 2168 content: "ï¼"; 2169 position: absolute; 2170 right: 15px; 2171 color: #37d437; 2172 font-weight: bold; 2173 transition: 0.3s; 2174} 2175 2176/* ACTIVE */ 2177.faq-item.active .faq-question::after {
2178 content: "â"; 2179} 2180 2181/* ANSWER */ 2182.faq-answer { 2183 max-height: 0; 2184 overflow: hidden; 2185 padding: 0 18px; 2186 font-size: 13px; 2187 color: #a0f3b2; 2188 line-height: 1.6; 2189 transition: all 0.35s ease; 2190} 2191 2192.faq-item.active .faq-answer { 2193 max-height: 200px; 2194 padding: 10px 18px 18px; 2195} 2196 2197/* glow text */ 2198.glow { 2199 color: #37d441; 2200 text-shadow: 2201 0 0 6px rgba(102, 212, 55, 0.7), 2202 0 0 14px rgba(55, 212, 63, 0.4); 2203} 2204 2205.glow-strong { 2206 color: #a8f5a5; 2207 text-shadow: 2208 0 0 8px rgba(94, 212, 55, 0.9), 2209 0 0 18px rgba(55, 212, 65, 0.6); 2210} 2211 2212/* animasi shine */ 2213@keyframes shineMove{ 2214 0%{ left:-120%; } 2215 100%{ left:140%; } 2216} 2217</style> 2218 2219<section class="pd-full-description cyber-mecha" id="deskripsi"> 2220 2221 <h2 class="pd-full-desc-title"> 2222 Pertanyaan Umum SEMBAHTOTO </h2> 2223 2224<div class="pd-full-desc-body"> 2225 2226 <div class="faq-item"> 2227 <div class="faq-item"> 2228 <div class="faq-question">Apa itu SEMBAHTOTO?</div> 2229 <div class="faq-answer"> 2230 <strong>SEMBAHTOTO adalah situs togel online yang menghadirkan pasaran HK Pools dan SDY Pools dengan sistem modern, result tercepat, serta layanan bermain yang aman dan terpercaya.</strong> 2231 </div> 2232</div> 2233 2234<div class="faq-item"> 2235 <div class="faq-question">Kenapa HK Pools dan SDY Pools di SEMBAHTOTO banyak dicari?</div> 2236 <div class="faq-answer"> 2237 Karena SEMBAHTOTO menyediakan akses cepat ke pasaran HK Pools dan SDY Pools dengan update result harian, prediksi akurat, tampilan nyaman, dan proses transaksi yang stabil. 2238 </div> 2239</div> 2240 2241<div class="faq-item"> 2242 <div class="faq-question">Apakah SEMBAHTOTO aman untuk bermain togel online?</div> 2243 <div class="faq-answer"> 2244 Ya, SEMBAHTOTO menggunakan sistem keamanan modern untuk menjaga kenyamanan pengguna, termasuk perlindungan data akun dan proses transaksi yang terenkripsi. 2245 </div> 2246</div> 2247 2248<div class="faq-item"> 2249 <div class="faq-question">Bagaimana cara daftar akun di SEMBAHTOTO?</div> 2250 <div class="faq-answer"> 2251 Pendaftaran akun di SEMBAHTOTO sangat mudah, pengguna hanya perlu mengisi formulir registrasi dengan data valid lalu melakukan verifikasi untuk mulai mengakses pasaran HK Pools dan SDY Pools. 2252 </div> 2253</div> 2254 2255<div class="faq-item"> 2256 <div class="faq-question">Apa keunggulan utama SEMBAHTOTO dibanding situs lain?</div> 2257 <div class="faq-answer"> 2258 SEMBAHTOTO memiliki keunggulan berupa result tercepat, prediksi terpercaya, transaksi deposit dan withdraw cepat, layanan pelanggan 24 jam, serta akses stabil untuk semua perangkat. 2259 </div> 2260</div> 2261 2262<div class="faq-item"> 2263 <div class="faq-question">Apakah SEMBAHTOTO menyediakan layanan customer service?</div> 2264 <div class="faq-answer"> 2265 Ya, SEMBAHTOTO menyediakan customer service online 24 jam yang siap membantu pengguna terkait informasi pasaran HK Pools, SDY Pools, transaksi, maupun kendala akun. 2266 </div> 2267 </div> 2268 2269</div> 2270 2271 </div> 2272 2273</section> 2274
2275<script> 2276document.querySelectorAll(".faq-question").forEach(q => { 2277 q.addEventListener("click", () => { 2278 const item = q.parentElement; 2279 item.classList.toggle("active"); 2280 }); 2281}); 2282</script>
2282 2283<style> 2284@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@500;700;900&display=swap'); 2285 2286.cyber-mecha { 2287 max-width: 800px; 2288 margin: 40px auto; 2289 background: radial-gradient(circle at top, rgba(0, 160, 27, 0.596), #038a0cc5 70%); 2290 border-radius: 16px; 2291 border: 1px solid rgba(55, 255, 0, 0.4); 2292 box-shadow: 2293 0 0 25px rgba(77, 255, 0, 0.4), 2294 inset 0 0 20px rgba(0, 255, 4, 0.2); 2295 padding: 25px; 2296 font-family: 'Orbitron', sans-serif; 2297 color: #d8f6ff; 2298 position: relative; 2299 overflow: hidden; 2300} 2301 2302/* scanline overlay */ 2303.cyber-mecha::before { 2304 content: ""; 2305 position: absolute; 2306 inset: 0; 2307 background: repeating-linear-gradient( 2308 to bottom, 2309 rgba(255,255,255,0.03), 2310 rgba(255,255,255,0.03) 1px, 2311 transparent 1px, 2312 transparent 3px 2313 ); 2314 pointer-events: none; 2315} 2316 2317.pd-full-desc-title { 2318 text-align: center; 2319 font-size: 22px; 2320 color: #598c45; 2321 letter-spacing: 2px; 2322 text-shadow: 0 0 12px #00ff11a1; 2323 margin-bottom: 20px; 2324} 2325 2326.mecha-header h3 { 2327 text-align: center; 2328 font-size: 18px; 2329 color: #0fc915b6; 2330 text-shadow: 0 0 10px #09ff00b0; 2331 margin-bottom: 15px; 2332} 2333 2334.mecha-image img { 2335 width: 100%; 2336 border-radius: 10px; 2337 border: 1px solid rgba(0, 255, 51, 0.5); 2338 box-shadow: 0 0 20px rgba(0, 255, 0, 0.4); 2339 margin-bottom: 20px; 2340} 2341 2342.mecha-content p { 2343 font-size: 14px; 2344 line-height: 1.8; 2345 margin-bottom: 14px; 2346 color: #ffd6bf; 2347} 2348 2349.glow { 2350 color: #0fc922a2; 2351 text-shadow: 0 0 8px #28c90fab; 2352 font-weight: 600; 2353} 2354 2355.glow-strong { 2356 color: #00ff44; 2357 text-shadow: 2358 0 0 10px #26ff00, 2359 0 0 20px #3cff00; 2360 font-weight: 700; 2361} 2362 2363.final-line { 2364 margin-top: 18px; 2365 padding: 10px; 2366 border: 1px solid rgba(85, 255, 0, 0.4); 2367 background: rgba(0, 255, 21, 0.08); 2368 border-radius: 8px; 2369 text-align: center; 2370} 2371</style> 2372 2373 2374 2375 <section class="pd-related-full"> 2376 <h2 class="pd-related-title">Produk Terkait</h2> 2377 <div class="pd-related-grid pd-related-grid--full"> 2378 <a class="pd-related-card" href="https://ecatch.org/"> 2379 <div class="thumb"> 2380 <img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="Situs Toto"> 2381 <span class="mini-disc">-22%</span> </div> 2382 <div class="info"> 2383 <h3>SEMBAHTOTO HK POOLS</h3> 2384<div class="spec-chips">HK1 <span class="spec-divider">|</span> RESULT CEPAT <span class="spec-divider">|</span> PREDIKSI AKURAT <span class="spec-divider">|</span> ONLINE 24 JAM</div> 2385<span class="price"> 2386 <span class="final">Min Depo Rp 10.000</span> 2387 <span class="ori">Bonus 20%</span> 2388</span> 2389<span class="sold">Member Aktif 2000+</span> 2390<span class="stock-dot low" title="Populer"></span> 2391</div> 2392</a> 2393 2394<a class="pd-related-card" href="https://ecatch.org/"> 2395<div class="thumb"> 2396 <img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="HK Pools"> 2397 <span class="mini-disc">HOT</span> 2398</div> 2399<div class="info"> 2400 <h3>SEMBAHTOTO SDY POOLS</h3> 2401 <div class="spec-chips">SDY1 <span class="spec-divider">|</span> LIVE RESULT <span class="spec-divider">|</span> BBFS JITU <span class="spec-divider">|</span> FULL PASARAN</div> 2402 <span class="price"> 2403 <span class="final">Bonus New Member</span> 2404 <span class="ori">Cashback Harian</span> 2405 </span> 2406 <span class="sold">Terdaftar 1500+</span> 2407 <span class="stock-dot out" title="Ramai"></span> 2408</div> 2409</a> 2410 2411<a class="pd-related-card" href="https://ecatch.org/"> 2412<div class="thumb"> 2413 <img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="Bandar HK Pools"> 2414 <span class="mini-disc">TOP</span> 2415</div> 2416<div class="info"> 2417 <h3>HK POOLS TERPERCAYA</h3> 2418 <div class="spec-chips">HK2 <span class="spec-divider">|</span> RESULT AKURAT <span class="spec-divider">|</span> 24 JAM <span class="spec-divider">|</span> DEPOSIT CEPAT</div> 2419 <span class="price"> 2420 <span class="final">Withdraw Kilat</span> 2421 <span class="ori">Anti Ribet</span> 2422 </span> 2423 <span class="sold">Online 24 Jam</span> 2424 <span class="stock-dot ready" title="Ready"></span> 2425</div> 2426</a> 2427 2428<a class="pd-related-card" href="https://ecatch.org/"> 2429<div class="thumb"> 2430 <img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="Bandar SDY Pools"> 2431 <span class="mini-disc">NEW</span> 2432</div> 2433<div class="info"> 2434 <h3>SDY POOLS ONLINE</h3> 2435 <div class="spec-chips">SDY2 <span class="spec-divider">|</span> LOGIN CEPAT <span class="spec-divider">|</span> PREDIKSI HARIAN <span class="spec-divider">|</span> QRIS READY</div> 2436 <span class="price">
2437 <span class="final">Deposit Mudah</span> 2438 <span class="ori">CS Online</span> 2439 </span> 2440 <span class="sold">Member Baru 500+</span> 2441 <span class="stock-dot ready" title="Ready"></span> 2442</div> 2443</a> 2444 2445<a class="pd-related-card" href="https://ecatch.org/"> 2446<div class="thumb"> 2447 <img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="Prediksi HK Pools"> 2448 <span class="mini-disc">VIP</span> 2449</div> 2450<div class="info"> 2451 <h3>PREDIKSI HK POOLS</h3> 2452 <div class="spec-chips">HK3 <span class="spec-divider">|</span> ANGKA JITU <span class="spec-divider">|</span> SHIO LENGKAP <span class="spec-divider">|</span> BBFS AKURAT</div> 2453 <span class="price"> 2454 <span class="final">Update Setiap Hari</span> 2455 <span class="ori">Data Lengkap</span> 2456 </span> 2457 <span class="sold">Trending Hari Ini</span> 2458 <span class="stock-dot low" title="Terbatas"></span> 2459</div> 2460</a> 2461 2462<a class="pd-related-card" href="https://ecatch.org/"> 2463<div class="thumb"> 2464 <img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="Prediksi SDY Pools"> 2465 <span class="mini-disc">BEST</span> 2466</div> 2467<div class="info"> 2468 <h3>PREDIKSI SDY POOLS</h3> 2469 <div class="spec-chips">SDY3 <span class="spec-divider">|</span> RESULT LIVE <span class="spec-divider">|</span> ANGKA TARUNG <span class="spec-divider">|</span> AKSES STABIL</div> 2470 <span class="price"> 2471 <span class="final">Akses Anti Lemot</span> 2472 <span class="ori">Pasaran Lengkap</span> 2473 </span> 2474 <span class="stock-dot low" title="Populer"></span> 2475</div> 2476 </a> 2477 2478 </div> 2479 </section> 2480 2481 <div class="pd-mobile-fab" id="pd-mobile-fab" data-pid="325" data-price="20789000" data-voucher-code="" data-voucher-value="0"><div class="mf-actions"><button type="button" class="mf-btn mf-share" id="mf-share" aria-label="Bagikan"><svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true"><path fill="currentColor" d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92-1.31-2.92-2.92-2.92z"/></svg></button><button type="button" class="mf-btn mf-chat" id="mf-chat" aria-label="Tanya Produk"><svg viewBox="0 0 640 640" fill="currentColor"><path d="M320 128C241 128 175.3 185.3 162.3 260.7C171.6 257.7 181.6 256 192 256L208 256C234.5 256 256 277.5 256 304L256 400C256 426.5 234.5 448 208 448L192 448C139 448 96 405 96 352L96 288C96 164.3 196.3 64 320 64C443.7 64 544 164.3 544 288L544 456.1C544 522.4 490.2 576.1 423.9 576.1L336 576L304 576C277.5 576 256 554.5 256 528C256 501.5 277.5 480 304 480L336 480C362.5 480 384 501.5 384 528L384 528L424 528C463.8 528 496 495.8 496 456L496 435.1C481.9 443.3 465.5 447.9 448 447.9L432 447.9C405.5 447.9 384 426.4 384 399.9L384 303.9C384 277.4 405.5 255.9 432 255.9L448 255.9C458.4 255.9 468.3 257.5 477.7 260.6C464.7 185.3 399.1 127.9 320 127.9z"/></svg></button><button type="button" class="mf-btn mf-cart" id="mf-cart" disabled aria-label="Tambah ke keranjang"><svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true"><path fill="currentColor" d="M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2z"/></svg></button><button type="button" class="mf-btn mf-buy" id="mf-buy" disabled><span class="mf-buy-text">Beli Sekarang</span><span class="mf-buy-price">Rp 20.789.000</span></button></div></div> 2482 2483 <button type="button" 2484 class="pd-scroll-top" 2485 id="pd-scroll-top" 2486 aria-label="Kembali ke atas" 2487 title="Kembali ke atas"> 2488 <svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true">
2489 <path fill="currentColor" d="M7.41 14.59 12 10l4.59 4.59L18 13.17l-6-6-6 6z"/> 2490 </svg> 2491 </button> 2492</main> 2493 2494<div class="pd-share-modal-overlay" id="pd-share-modal-overlay"><div class="pd-share-modal"><div class="pd-share-header"><h2 class="pd-share-title">Bagikan Produk</h2><button type="button" class="pd-share-close" id="pd-share-close" aria-label="Tutup"><svg width="20" height="20" viewBox="0 0 24 24"><path fill="currentColor" 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"/></svg></button></div><div class="pd-share-body"><div class="pd-share-preview"><img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="SEMBAHTOTO" class="pd-share-preview-img"><div class="pd-share-preview-info"><h3 class="pd-share-preview-name">SEMBAHTOTO</h3><p class="pd-share-preview-price">Rp 20.789.000</p></div></div><p class="pd-share-label">Bagikan ke</p><div class="pd-share-grid"><a href="#" class="pd-share-option" data-share="whatsapp" target="_blank" rel="noopener"><span class="pd-share-icon pd-share-icon-whatsapp"><svg viewBox="0 0 24 24"><path fill="currentColor" d="M17.472 14.382c-.297-.149-1.758-.867-2.029-.967-.273-.099-.471-.148-.669.149-.198.297-.767.966-.94 1.164-.173.198-.347.223-.644.074-.297-.149-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.297-.347.446-.52.149-.173.198-.297.298-.495.099-.198.05-.372-.025-.521-.075-.149-.669-1.612-.916-2.206-.242-.579-.487-.5-.669-.51l-.57-.01c-.198 0-.52.074-.792.372s-1.04 1.016-1.04 2.479 1.065 2.876 1.213 3.074c.149.198 2.095 3.2 5.076 4.487.709.306 1.262.489 1.694.626.712.226 1.36.194 1.872.118.571-.085 1.758-.718 2.006-1.411.248-.694.248-1.29.173-1.411-.074-.123-.272-.198-.57-.347m-5.421 7.403h-.002a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.263c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.887 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.158 11.892c0 2.096.547 4.142 1.588 5.945L0 24l6.305-1.654a11.86 11.86 0 005.67 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.485-8.413"/></svg></span><span class="pd-share-name">WhatsApp</span></a><a href="#" class="pd-share-option" data-share="facebook" target="_blank" rel="noopener"><span class="pd-share-icon pd-share-icon-facebook"><svg viewBox="0 0 24 24"><path fill="currentColor" d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg></span><span class="pd-share-name">Facebook</span></a><a href="#" class="pd-share-option" data-share="twitter" target="_blank" rel="noopener"><span class="pd-share-icon pd-share-icon-twitter"><svg viewBox="0 0 24 24"><path fill="currentColor" d="M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"/></svg></span><span class="pd-share-name">Twitter</span></a><a href="#" class="pd-share-option" data-share="telegram" target="_blank" rel="noopener"><span class="pd-share-icon pd-share-icon-telegram"><svg viewBox="0 0 24 24"><path fill="currentColor" d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"/></svg></span><span class="pd-share-name">Telegram</span></a><a href="#" class="pd-share-option" data-share="email"><span class="pd-share-icon pd-share-icon-email"><svg viewBox="0 0 24 24">
2494<path fill="currentColor" d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"/></svg></span><span class="pd-share-name">Email</span></a><button type="button" class="pd-share-option" data-share="copy"><span class="pd-share-icon pd-share-icon-copy"><svg viewBox="0 0 24 24"><path fill="currentColor" d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg></span><span class="pd-share-name">Salin Link</span></button><button type="button" class="pd-share-option" data-share="pdf"><span class="pd-share-icon pd-share-icon-pdf"><svg viewBox="0 0 24 24"><path fill="currentColor" d="M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11zM8 15.5h1.5c.83 0 1.5-.67 1.5-1.5v-1c0-.83-.67-1.5-1.5-1.5H8v4zm6 0h1c1.1 0 2-.9 2-2v-2c0-1.1-.9-2-2-2h-1v6zm-4.5-1.5H8v-1h1.5v1zM14 13h1v1h-1v-1z"/></svg></span><span class="pd-share-name">Export PDF</span></button></div><div class="pd-share-copy-section"><div class="pd-share-copy-input-wrap"><input type="text" class="pd-share-copy-input" id="pd-share-url-input" value="https://ecatch.org/" readonly><button type="button" class="pd-share-copy-btn" id="pd-share-copy-url-btn"><svg viewBox="0 0 24 24" width="16" height="16"><path fill="currentColor" d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg><span class="pd-share-copy-text">Salin</span></button></div></div></div></div></div> 2495 2496<style>.toast-root{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);display:flex;flex-direction:column;gap:10px;z-index:99999;pointer-events:none;max-width:min(92vw,540px)}.toast{display:grid;grid-template-columns:28px 1fr auto;gap:12px;background:#0b1220;color:#eef3ff;border:1px solid rgba(255,255,255,.08);padding:12px 14px;border-radius:12px;box-shadow:0 10px 30px rgba(10,10,20,.35);pointer-events:auto;overflow:hidden}.toast .ico{align-self:start;margin-top:2px}.toast .ttl{font-weight:700;line-height:1.25;font-size:14px;margin-bottom:4px}.toast .msg{opacity:.95;line-height:1.45;font-size:13px}.toast .actions{display:flex;gap:8px;align-self:center}.toast .btn{background:#0ea5e9;color:#fff;border:0;border-radius:999px;padding:8px 12px;font-size:12px;font-weight:700;cursor:pointer}.toast .btn.alt{background:transparent;color:#8fb5ff;border:1px solid rgba(143,181,255,.35)}.toast .close{background:transparent;border:0;color:#98a2b3;cursor:pointer;padding:4px;margin-left:6px}.toast.success{border-left:4px solid #22c55e}.toast.info{border-left:4px solid #0ea5e9}.toast.warn{border-left:4px solid #f59e0b}.toast .progress{position:absolute;left:0;bottom:0;height:3px;background:linear-gradient(90deg,#60a5fa,#22c55e);width:100%;transform-origin:left;animation:toastBar linear forwards}@keyframes toastBar{from{transform:scaleX(1)}to{transform:scaleX(0)}}@media(max-width:640px){.toast{grid-template-columns:24px 1fr auto;padding:12px}.toast .btn{padding:7px 10px}}</style> 2497<style> 2498.toast .msg { word-break: break-word; overflow-wrap: anywhere; } 2499 2500.toast-root { bottom: max(12px, env(safe-area-inset-bottom, 12px)); } 2501 2502@media (max-width: 540px) { 2503 .toast-root { 2504 left: 0; right: 0; transform: none; 2505 padding: 0 12px; 2506 bottom: calc(max(12px, env(safe-area-inset-bottom, 12px)) + var(--fab-offset, 72px)); 2507 max-width: none; 2508 } 2509 .toast { 2510 grid-template-columns: 1fr; /* 1 kolom */ 2511 position: relative; 2512 padding: 14px 14px 12px 14px; 2513 border-radius: 16px; 2514 } 2515 .toast .ico { 2516 position: absolute; left: 14px; top: 14px; 2517 margin: 0; transform: translateY(1px); 2518 } 2519 .toast .cnt { padding-left: 34px; } 2520 .toast .ttl { font-size: 15px; margin-bottom: 6px; } 2521 .toast .msg { font-size: 13px; opacity: .96; } 2522 .toast .actions { 2523 margin-top: 12px; gap: 10px; width: 100%; 2524 display: grid; grid-template-columns: 1fr 1fr; 2525 } 2526 .toast .btn { width: 100%; min-width: 0; padding: 10px 0; } 2527 .toast .close { position: absolute; right: 6px; top: 6px; } 2528} 2529</style> 2530
2531<script nonce="se3iyzEHMc9FQEB4wSyd0w=="> 2532(function adjustToastFabOffset(){ 2533 const root = document.getElementById('toastRoot'); 2534 if (!root) return; 2535 2536 function isVisible(el){ 2537 if (!el) return false; 2538 const cs = getComputedStyle(el); 2539 if (cs.display === 'none' || cs.visibility === 'hidden' || cs.opacity === '0') return false; 2540 const r = el.getBoundingClientRect(); 2541 return r.width > 0 && r.height > 0; 2542 } 2543 2544 function update(){ 2545 const fab = document.getElementById('pd-mobile-fab'); 2546 let extra = 16; 2547 if (isVisible(fab)) { 2548 const h = Math.round(fab.getBoundingClientRect().height) || 56; 2549 extra = h + 16; // FAB height + margin 2550 } 2551 root.style.setProperty('--fab-offset', extra + 'px'); 2552 } 2553 2554 window.addEventListener('resize', update, { passive: true }); 2555 const fab = document.getElementById('pd-mobile-fab'); 2556 if (window.ResizeObserver && fab) { 2557 const ro = new ResizeObserver(update); 2558 ro.observe(fab); 2559 } 2560 2561 update(); 2562})(); 2563</script>
2563 2564<div class="toast-root" id="toastRoot" aria-live="polite" aria-atomic="true"></div> 2565
2566<script nonce="se3iyzEHMc9FQEB4wSyd0w==">(function(){const root=document.getElementById('toastRoot');function svgIcon(kind){if(kind==='success')return '<svg width="24" height="24" viewBox="0 0 24 24" fill="#22c55e"><path d="M9 16.2l-3.5-3.5 1.4-1.4L9 13.4l7.7-7.7 1.4 1.4z"/></svg>';if(kind==='warn')return '<svg width="24" height="24" viewBox="0 0 24 24" fill="#f59e0b"><path d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"/></svg>';return '<svg width="24" height="24" viewBox="0 0 24 24" fill="#0ea5e9"><path d="M11 7h2v2h-2zm0 4h2v6h-2z"/><path d="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2z" fill="none" stroke="#0ea5e9"/></svg>'} 2567window.showToast=function(opts){const o=Object.assign({title:'',message:'',type:'info',duration:4000,actions:[]},opts||{});const el=document.createElement('div');el.className='toast '+(o.type||'info');el.setAttribute('role','status');el.style.position='relative';const acts=(o.actions||[]).map(a=>{const lab=a.label||'OK';const cls='btn'+(a.variant==='alt'?' alt':'');return `<button type="button" class="${cls}" data-act="${lab}">${lab}</button>`}).join('');el.innerHTML=`<div class="ico" aria-hidden="true">${svgIcon(o.type)}</div><div class="cnt">${o.title?`<div class="ttl">${o.title}</div>`:''}${o.message?`<div class="msg">${o.message}</div>`:''}</div><div class="actions">${acts}</div><button type="button" class="close" aria-label="Tutup" title="Tutup"><svg width="18" height="18" viewBox="0 0 24 24"><path fill="currentColor" d="M18.3 5.71L12 12.01l-6.3-6.3-1.4 1.41 6.3 6.3-6.3 6.3 1.4 1.41 6.3-6.3 6.3 6.3 1.41-1.41-6.3-6.3 6.3-6.3z"/></svg></button><div class="progress" style="animation-duration:${Math.max(1500,o.duration)}ms"></div>`; 2568 2569 const close = ()=> { 2570 if (!el.parentNode) return; 2571 el.style.transition = 'transform .2s ease, opacity .2s ease'; 2572 el.style.opacity = '0'; el.style.transform = 'translateY(10px)'; 2573 setTimeout(()=>{ if (el.parentNode) el.parentNode.removeChild(el); }, 220); 2574 }; 2575 2576 el.querySelector('.close').addEventListener('click', close); 2577 el.querySelectorAll('.actions .btn').forEach(btn=>{ 2578 btn.addEventListener('click', ()=>{ 2579 const lab = btn.getAttribute('data-act'); 2580 try { 2581 (o.actions||[]).forEach(a=>{ if (a.label===lab && typeof a.onClick==='function') a.onClick(); }); 2582 } catch(_){} 2583 close(); 2584 }); 2585 }); 2586 2587 root.appendChild(el); 2588 setTimeout(close, o.duration); 2589 return el; 2590 }; 2591})(); 2592 2593const _0x1a2b=[{"url":"https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png","alt":"Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y","slug":""},{"url":"https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png","alt":"Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...","slug":"https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png"},{"url":"https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png","alt":"Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...","slug":"lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-223.webp"},{"url":"https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png","alt":"Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...","slug":"lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-776.webp"},{"url":"https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png","alt":"Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...","slug":"lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-634.webp"},{"url":"https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png","alt":"Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...","slug":"lenovo-legion-go-8as
2593p2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-892.webp"}],_0x3c4d="Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y",_0x5e6f="4563217890";function getVariantSummaryText(){const a=document.getElementById('pd-variant-summary');if(!a)return '';const b=Array.from(a.querySelectorAll('.vs-item strong')).map(c=>c.textContent.trim()).filter(Boolean);return b.length?b.join(' / '):''} 2594function encodeVariantHash(id){if(!id||id<=0)return '';const xor=id^0x4A5D;return xor.toString(36)} 2595function decodeVariantHash(hash){if(!hash)return 0;const xor=parseInt(hash,36);return isNaN(xor)?0:xor^0x4A5D} 2596 2597function showSuccessToast(productId,qty,variantId){const variantText=getVariantSummaryText();const skuText=(function(){const el=document.getElementById('pd-sku');return el?el.textContent.trim():PD_SKU})();showToast({type:'warn',title:'Fitur Segera Hadir',message:`<strong>${escapeHtml(PD_NAME)}</strong>${variantText?` · <em>${escapeHtml(variantText)}</em>`:''}<br>SKU: ${escapeHtml(skuText)} · Qty: ${qty}`,duration:5000,actions:[{label:'Lihat Keranjang',onClick:()=>{}},{label:'Lanjut Belanja',variant:'alt',onClick:()=>{}}]});try{if(window.ga4Ecomm){const qtySend=qty||1;window.ga4Ecomm.addToCart({currency:'IDR',price:20789000,quantity:qtySend,item_id:"4563217890",item_name:"Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y",item_brand:"Lenovo ",item_category:(["Komputer & Laptop","Laptop","Gaming"]||[]).join(' / ')})}}catch(_){}return false}function showErrorToast(){showToast({type:'error',title:'Gagal Menambah ke Keranjang',message:'Terjadi kesalahan saat memproses permintaan. Silakan coba lagi.',duration:5000})} 2598 2599function executeBuyNowLegacy(id,variantId){const a=getVariantSummaryText(),b=(function(){const c=document.getElementById('pd-sku');return c?c.textContent.trim():_0x5e6f})(); 2600 2601 let willRedirect = false; 2602 try { 2603 if (window.addToCart) { 2604 window.addToCart(id, 1, variantId); 2605 willRedirect = false; 2606 } 2607 } catch(_){} 2608 2609 if (willRedirect) { 2610 showToast({ 2611 type: 'info', 2612 title: 'Menuju Keranjang', 2613 message: `<strong>${escapeHtml(PD_NAME)}</strong>${variantText?` · <em>${escapeHtml(variantText)}</em>`:''}<br>SKU: ${escapeHtml(skuText)} · Qty: 1`, 2614 duration: 1800 2615 }); 2616 setTimeout(()=>{ window.location.href='/keranjang'; }, 1200); 2617 } else { 2618 showToast({ 2619 type: 'warn', 2620 title: 'Fitur Beli Langsung Segera Hadir', 2621 message: `Sementara ini Anda bisa menambahkan produk ke keranjang terlebih dahulu.<br><strong>${escapeHtml(PD_NAME)}</strong>${variantText?` · <em>${escapeHtml(variantText)}</em>`:''}`, 2622 duration: 6000, 2623 actions: [ 2624 { label: '+ Keranjang', onClick: ()=> { try{ if (window.addToCart) window.addToCart(id,1,variantId); }catch(_){} } }, 2625 { label: 'Hubungi CS', variant: 'alt', onClick: ()=> { window.open('https://wa.me/6281380009898','_blank'); } } 2626 ] 2627 }); 2628 } 2629} 2630 2631document.addEventListener('DOMContentLoaded',function(){var a=document.getElementById('pd-buy-form');if(a){a.addEventListener('submit',function(e){var b=parseInt(a.getAttribute('data-pid'),10)||0;if(window.addToCartSubmit){return window.addToCartSubmit(e,b)}})}});document.addEventListener('DOMContentLoaded',function(){var a=document.getElementById('btn-buy');if(a){a.addEventListener('click',function(){var b=a.getAttribute('data-id');buyNow(b)})}}); 2632 2633function _0x2m3n(s){return String(s||'').replace(/[&<>"']/g,m=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[m]))} 2634 2635(function initGallery(){const mainImg=document.getElementById('pd-main-img');const gallery=document.getElementById('pd-thumb-gallery');if(!mainImg||!gallery)return;gallery.addEventListener('click',function(ev){const btn=ev.target.closest('.pd-thumb-btn');if(!btn)return;const full=btn.getAttribute('data-full');if(full){mainImg.src=full;const alt=btn.getAttribute('data-alt')||'';if(alt)mainImg.alt=alt;const slug=btn.getAttribute('data-slug')||'';if(slug)mainImg.dataset.slug=slug;gallery.querySelectorAll('.pd-thumb-btn').forEach(b=>b.classList.remove('active'));btn.classList.add('active')}})})(); 2636 2637(function initMobileSliderCounter(){const slider=document.getElementById('pd-mobile-slider');const counter=document.getElementById('pd-gallery-counter');if(!slider||!counter)return;let ticking=false;slider.addEventListener('scroll',function(){if(!ticking){window.requestAnimationFrame(function(){const slides=slider.querySelectorAll('.pd-mslide');if(!slides.length)return;const containerRect=slider.getBoundingClientRect();const containerCenter=containerRect.left+containerRect.width/2;let currentIdx=0;let minDist=Infinity;
2637slides.forEach((slide,idx)=>{const slideRect=slide.getBoundingClientRect();const slideCenter=slideRect.left+slideRect.width/2;const dist=Math.abs(slideCenter-containerCenter);if(dist<minDist){minDist=dist;currentIdx=idx}});counter.textContent=(currentIdx+1)+'/'+slides.length;ticking=false});ticking=true}},{passive:true})})(); 2638 2639/* ================= Simulasi Cicilan ================= */ 2640(function initInstallmentList(){const card=document.getElementById('inst-card');if(!card)return;function getBasePrice(){return parseInt(card.getAttribute('data-base-price')||'0',10)||0}function setBasePrice(v){card.setAttribute('data-base-price',String(parseInt(v||'0',10)||0))}const zeroEligible=card.getAttribute('data-zero-smart')==='1';window.initMobile=zeroEligible;const listEl=document.getElementById('inst-month-list');const zeroNote=document.getElementById('inst-zero-note');const tenors=[3,6,12];const rates={BRI:{3:0.975,6:0.975,12:0.975},Mandiri:{3:0.984,6:0.9725,12:0.96},BCA:{3:0.97,6:0.94,12:0.91}};function formatRupiah(num){return 'Rp '+(Math.round(num)).toString().replace(/\B(?=(\d{3})+(?!\d))/g,'.')}function activeBank(){const tab=card.querySelector('.bank-tab.active');return tab?tab.dataset.bank:'BRI'} 2641 2642function _0x4o5p(bank){const a=getBasePrice();listEl.innerHTML='';const b=rates[bank]||{};let c=false;tenors.forEach(m=>{let d=b[m]??1;if(zeroEligible&&(bank==='BRI'||bank==='Mandiri')){d=1;c=true}const e=a/d;const f=m>0?Math.ceil((e/m)/100)*100:0;const g=document.createElement('li');g.className='inst-month-item';g.innerHTML=`<span class="tenor-badge">${m}x</span><span class="amount">${formatRupiah(f)} / bln</span>${zeroEligible&&(bank==='BRI'||bank==='Mandiri')?'<span class="tag tag-zero">0%</span>':''}`;listEl.appendChild(g)});zeroNote.style.display=c?'block':'none'} 2643 2644card.addEventListener('click',function(ev){const a=ev.target.closest('.bank-tab');if(!a)return;card.querySelectorAll('.bank-tab').forEach(b=>{b.classList.remove('active');b.setAttribute('aria-selected','false')});a.classList.add('active');a.setAttribute('aria-selected','true');_0x4o5p(a.dataset.bank)}); 2645 2646window.instSetBasePrice=function(newPrice){setBasePrice(newPrice);_0x4o5p(activeBank())};_0x4o5p(activeBank()); 2647})(); 2648 2649/* ====== Fokus gambar varian ====== */ 2650function _0x6q7r(s){return String(s||'').toLowerCase().replace(/[^a-z0-9]+/g,'')}function _0x8s9t(u){try{return new URL(u,window.location.origin).pathname.split('/').pop().toLowerCase()}catch(e){try{return(u||'').split('/').pop().toLowerCase()}catch(_){return ''}}} 2651function _0xau1v(url,altOpt){const a=document.getElementById('pd-main-img'),b=document.getElementById('pd-thumb-gallery'),c=document.getElementById('pd-mobile-slider');if(a&&url){a.src=url;if(altOpt)a.alt=altOpt}if(b){const d=_0x8s9t(url);let e=null;b.querySelectorAll('.pd-thumb-btn').forEach(btn=>{const f=btn.getAttribute('data-full')||'',g=_0x8s9t(f)===d;if(g)e=btn;btn.classList.toggle('active',g)});if(e){const h=e.getAttribute('data-alt')||'',i=e.getAttribute('data-slug')||'';if(h&&a)a.alt=h;if(i&&a)a.dataset.slug=i}} 2652 if (c){ 2653 const targetName = _0x8s9t(url); 2654 const slideImg = Array.from(c.querySelectorAll('img')).find(im => _0x8s9t(im.src) === targetName); 2655 if (slideImg){ 2656 2657 try { 2658 const container = c; 2659 const imgRect = slideImg.getBoundingClientRect(); 2660 const contRect = container.getBoundingClientRect(); 2661 const offsetLeft = slideImg.offsetLeft - container.offsetLeft; 2662 const center = offsetLeft - (container.clientWidth - slideImg.clientWidth) / 2; 2663 container.scrollTo({ left: Math.max(0, center), behavior: 'smooth' }); 2664 } catch(_){ 2665 2666 slideImg.scrollIntoView({ behavior:'smooth', inline:'center', block:'nearest' }); 2667 } 2668 } 2669 } 2670} 2671function findImageForVariant(variant){ 2672 if (!variant || !variant.attrs) return null; 2673 const tokens = []; 2674 try{ 2675 Object.values(variant.attrs).forEach(v=>{ 2676 if (!v) return; 2677 const raw = String(v); 2678 tokens.push(raw); 2679 tokens.push(normalize(raw)); 2680 }); 2681 }catch(_){} 2682 if (variant.sku){ 2683 tokens.push(String(variant.sku)); 2684 tokens.push(normalize(String(variant.sku))); 2685 } 2686 if (variant.image_url) { 2687 tokens.push(String(variant.image_url)); 2688 } 2689 let best = null; 2690 let bestScore = -1; 2691 2692 for (const g of (galleryData||[])){ 2693 const slugN = normalize(g.slug||''); 2694 const altN = normalize(g.alt||''); 2695 const file = _0x8s9t(g.url||''); 2696 const fileN = normalize(file); 2697 const imgU = g.url; 2698 2699 for (const t of tokens){ 2700 const tN = normalize(t); 2701 if (!tN) continue; 2702 2703 let score = -1; 2704 if (imgU === tN) score = 300; 2705 if (slugN && slugN === tN) score = 300; 2706 else if (fileN && fileN.includes(tN)) score = 200; 2707 else if (altN && altN.includes(tN)) score = 120; 2708 2709 if (score > bestScore){ 2710 bestScore = score; 2711 best = g; 2712 } 2713 if (bestScore >= 300) break; 2714 } 2715 if (bestScore >= 300) break; 2716 } 2717 return bestScore >= 120 ? best : null; 2718} 2719function _0xey3z(variant){const a=_0xcw2x(variant);if(a&&a.url){_0xau1v(a.url,a.alt||'')}} 2720
2721/* ====== Layout mobile ====== */ 2722(function _0xg04h(){const a=document.querySelector('.pd-media-card'),b=document.getElementById('pd-price-block'),c=document.getElementById('pd-price-anchor'),d=document.querySelector('.pd-info-card'),e=document.getElementById('pd-title'),f=document.getElementById('pd-variant-combined'),g=document.getElementById('pd-variants'),h=document.getElementById('pd-variants-anchor'),i=document.getElementById('pd-variant-summary'),j=document.getElementById('pd-summary-anchor'),titleRow=document.querySelector('.pd-title-row'),promoBanner=document.querySelector('.promo-endyear-mini-banner'),compareSection=document.querySelector('.pd-compare-section');if(!a||!b||!c||!d||!e)return; 2723 2724 let pricePlaced = false; 2725 let varPlaced = false; 2726 let titlePlaced = false; 2727 let promoPlaced = false; 2728 const mq = window.matchMedia('(max-width: 640px)'); 2729 2730 function apply(){ 2731 if (mq.matches) { 2732 if (!titlePlaced && a && titleRow && d.contains(titleRow)) { try{a.appendChild(titleRow);titlePlaced=true;}catch(_){} } 2733 if (!pricePlaced && a && b) { try{a.appendChild(b);pricePlaced=true;}catch(_){} } 2734 if (!varPlaced && f && d && e) { 2735 try{ 2736 f.hidden = false; 2737 if (i && !f.contains(i)) f.appendChild(i); 2738 if (g && !f.contains(g)) f.appendChild(g); 2739 if(d.contains(e))d.insertBefore(f, e); 2740 varPlaced = true; 2741 }catch(_){} 2742 } 2743 if (!promoPlaced && promoBanner && compareSection && compareSection.parentNode) { 2744 try{ 2745 compareSection.parentNode.insertBefore(promoBanner, compareSection); 2746 promoPlaced = true; 2747 }catch(_){} 2748 } 2749 } else { 2750 if (titlePlaced && titleRow && d) { 2751 try{ 2752 const vcombined = document.getElementById('pd-variant-combined'); 2753 if (vcombined && d.contains(vcombined)) { 2754 d.insertBefore(titleRow, vcombined); 2755 } else { 2756 d.insertBefore(titleRow, d.firstChild); 2757 } 2758 titlePlaced=false; 2759 }catch(_){} 2760 } 2761 if (pricePlaced && b && c && c.parentNode) { 2762 try{c.parentNode.insertBefore(b, c.nextSibling);pricePlaced=false;}catch(_){} 2763 } 2764 if (varPlaced) { 2765 try{ 2766 if (i && j && j.parentNode && !j.parentNode.contains(i)) j.parentNode.insertBefore(i, j.nextSibling); 2767 if (g && h && h.parentNode && !h.parentNode.contains(g)) h.parentNode.insertBefore(g, h.nextSibling); 2768 if (f) { f.hidden = true; f.innerHTML = ''; } 2769 varPlaced = false; 2770 }catch(_){} 2771 } 2772 if (promoPlaced && promoBanner && b) { 2773 try{ 2774 b.appendChild(promoBanner); 2775 promoPlaced = false; 2776 }catch(_){} 2777 } 2778 } 2779 } 2780 2781 mq.addEventListener ? mq.addEventListener('change', apply) : mq.addListener(apply); 2782 apply(); 2783 2784 const fab = document.getElementById('pd-mobile-fab'); 2785 if (fab) { 2786 const pid = parseInt(fab.getAttribute('data-pid')||'0',10) || 325; 2787 const btnCart = document.getElementById('mf-cart'); 2788 2789 if (btnCart) btnCart.addEventListener('click', function(){ 2790 const varInput = document.getElementById('pd-variant-id'); 2791 const variantId = varInput ? parseInt(varInput.value||'0',10) : 0; 2792 try { if (window.addToCart) addToCart(pid, 1, variantId); } catch(_){} 2793 const variantText = getVariantSummaryText(); 2794 const skuText = (function(){ const el=document.getElementById('pd-sku'); return el?el.textContent.trim():PD_SKU; })(); 2795 showToast({ 2796 type: 'success', 2797 title: 'Berhasil ditambahkan ke Keranjang', 2798 message: `<strong>${escapeHtml(PD_NAME)}</strong>${variantText?` · <em>${escapeHtml(variantText)}</em>`:''}<br>SKU: ${escapeHtml(skuText)} · Qty: 1`, 2799 duration: 5000, 2800 actions: [ 2801 { label: 'Lihat Keranjang', onClick: ()=> { window.location.href = '/keranjang'; } }, 2802 { label: 'Lanjut Belanja', variant: 'alt', onClick: ()=>{} } 2803 ] 2804 }); 2805 }); 2806 } 2807})(); 2808 2809/* ====== Auto-hide installment banner if sidebar too tall (Desktop only) ====== */ 2810(function(){ 2811 function adjustSidebarBanner() { 2812 if (window.innerWidth <= 768) return; 2813 const sidebar = document.querySelector('.pd-sidebar'); 2814 const infoCard = document.querySelector('.pd-info-card'); 2815 const banner = document.querySelector('.pd-side-card.inst-alt-banner.inst-alt-banner--compact'); 2816 if (!sidebar || !infoCard || !banner) return; 2817 const sidebarHeight = sidebar.offsetHeight; 2818 const infoCardHeight = infoCard.offsetHeight; 2819 if (sidebarHeight > infoCardHeight) { 2820 banner.style.display = 'none'; 2821 } else { 2822 banner.style.display = ''; 2823 } 2824 } 2825 if (document.readyState === 'loading') { 2826 document.addEventListener('DOMContentLoaded', adjustSidebarBanner); 2827 } else { 2828 adjustSidebarBanner(); 2829 } 2830 let resizeTimer; 2831 window.addEventListener('resize', function() { 2832 clearTimeout(resizeTimer); 2833 resizeTimer = setTimeout(adjustSidebarBanner, 250); 2834 }); 2835 const pwpSection = document.getElementById('pwp-deals-section'); 2836 if (pwpSection) { 2837 const observer = new MutationObserver(function(mutations) {
2838 let shouldRecheck = false; 2839 mutations.forEach(function(mutation) { 2840 if (mutation.type === 'attributes' && mutation.attributeName === 'hidden') { 2841 shouldRecheck = true; 2842 } else if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { 2843 shouldRecheck = true; 2844 } 2845 }); 2846 if (shouldRecheck) { 2847 setTimeout(adjustSidebarBanner, 100); 2848 } 2849 }); 2850 observer.observe(pwpSection, { 2851 attributes: true, 2852 childList: true, 2853 subtree: true 2854 }); 2855 } 2856 window.adjustSidebarBanner = adjustSidebarBanner; 2857})(); 2858 2859/* ====== Global constants ====== */ 2860const IS_DIGITAL=false; 2861const IS_PREORDER=false; 2862 2863/* ====== Variants state (REVISED) ====== */ 2864(function initVariants(){ 2865const _0x7g8h=[];window.variants=_0x7g8h; 2866window.isPreorderProduct=false; 2867 const attrOrder = []; 2868 2869 if (!variants.length || !attrOrder.length) return; 2870 2871 function comboKey(sel){ 2872 return attrOrder.map(a => a + '=' + (sel[a] ?? '')).join('|'); 2873 } 2874 2875 const variantMap = {};
2876 variants.forEach(v=>{ 2877 const key = comboKey(v.attrs); 2878 variantMap[key] = v; 2879 }); 2880 2881 function readSelection(){ 2882 const sel = {}; 2883 attrOrder.forEach(a=>{ 2884 const r = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio]:checked`); 2885 sel[a] = r ? r.value : ''; 2886 }); 2887 return sel; 2888 } 2889 2890 function findVariant(sel){ 2891 return variantMap[comboKey(sel)] || null; 2892 } 2893 2894 function autoFillMissing(sel){ 2895 let changed = false; 2896 for (const a of attrOrder) { 2897 if (sel[a]) continue; 2898 const possible = []; 2899 const seen = new Set(); 2900 variants.forEach(v=>{ 2901 let ok = true; 2902 for (const a2 of attrOrder) { 2903 if (a2 === a) continue; 2904 if (sel[a2] && v.attrs[a2] !== sel[a2]) { ok = false; break; } 2905 } 2906 if (ok) { 2907 const val = v.attrs[a]; 2908 if (!seen.has(val)) { seen.add(val); possible.push(val); } 2909 } 2910 }); 2911 if (possible.length === 1) { 2912 const val = possible[0]; 2913 const input = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio][value="${CSS.escape(val)}"]`); 2914 if (input && !input.checked) { input.checked = true; sel[a] = val; changed = true; } 2915 } 2916 } 2917 return changed; 2918 } 2919 2920 function rupiah(n){ 2921 n = parseInt(n||0,10)||0; 2922 return 'Rp ' + n.toString().replace(/\B(?=(\d{3})+(?!\d))/g,'.'); 2923 } 2924 2925 function focusGalleryByUrl(imageUrl) { 2926 const isMobile = window.matchMedia && window.matchMedia('(max-width: 640px)').matches; 2927 if (isMobile) { 2928 _0xau1v(imageUrl); 2929 return; 2930 } 2931 2932 const gallery = document.getElementById('pd-thumb-gallery'); 2933 const targetName = _0x8s9t(imageUrl); 2934 2935 if (gallery) { 2936 const btns = Array.from(gallery.querySelectorAll('.pd-thumb-btn')); 2937 const btn = btns.find(b => _0x8s9t(b.getAttribute('data-full') || '') === targetName); 2938 if (btn) { btn.click(); return; } 2939 } 2940 2941 _0xau1v(imageUrl); 2942 } 2943 2944 2945function formatStockLabel(n){n=parseInt(n||0,10)||0;return(n>10)?'10+':String(n)} 2946function updateBranchPopover(v){try{if(!v)return;const a=document.getElementById('sp-qty-meg'),b=document.getElementById('sp-qty-mdf'),c=document.getElementById('sp-qty-bda');if(a)a.textContent=formatStockLabel(Math.max(0,v.smm|0));if(b)b.textContent=formatStockLabel(Math.max(0,v.smf|0));if(c)c.textContent=formatStockLabel(Math.max(0,v.sba|0))}catch(_){}} 2947 2948 function calcVoucherDisc(type,value,price,maxDisc){if(type==='PERCENTAGE'){let d=(price*value)/100;if(maxDisc>0&&d>maxDisc)d=maxDisc;return Math.round(d)}return Math.round(value)} 2949 2950 function applyVariant(v, focusImage = true){ 2951 const elCur = document.getElementById('pd-price-current'); 2952 const elOri = document.getElementById('pd-price-original'); 2953 const elDisc = document.getElementById('pd-discount-badge'); 2954 const elSku = document.getElementById('pd-sku'); 2955 const elStock= document.getElementById('pd-stock-badge'); 2956 const elQty = document.getElementById('qty'); 2957 const btnAdd = document.getElementById('btn-add-cart'); 2958 const btnBuy = document.getElementById('btn-buy'); 2959 const hidVar = document.getElementById('pd-variant-id'); 2960 2961 const mfCart= document.getElementById('mf-cart'); 2962 const mfBuy = document.getElementById('mf-buy'); 2963 const fab = document.getElementById('pd-mobile-fab'); 2964 2965 if (hidVar) hidVar.value = v ? v.id : 0; 2966 if (elCur) elCur.textContent = rupiah(v ? v.final : 0); 2967 if (elSku && v && v.sku) elSku.textContent = v.sku; 2968 2969 if (v && v.ori > v.final) { 2970 if (elOri) { elOri.style.display='inline'; elOri.textContent = rupiah(v.ori); } 2971 if (elDisc) { elDisc.style.display='inline'; elDisc.textContent = '-' + (v.disc||0) + '%'; } 2972 } else { 2973 if (elOri) elOri.style.display='none'; 2974 if (elDisc) elDisc.style.display='none'; 2975 } 2976 2977 const stock = v ? (parseInt(v.stock||0,10)||0) : 0; 2978 let effectiveStock = stock; 2979 let isActivePreorder = false;
2980 if (window.isPreorderProduct && v && 'preorder_remaining' in v && v.preorder_remaining !== null) { 2981 effectiveStock = parseInt(v.preorder_remaining, 10); 2982 if (isNaN(effectiveStock)) effectiveStock = 0; 2983 isActivePreorder = true; 2984 } 2985 if (elStock){ 2986 elStock.classList.remove('in','out'); 2987 if (effectiveStock>0){ 2988 elStock.classList.add('in'); 2989 elStock.textContent = IS_DIGITAL ? 'Tersedia' : (isActivePreorder ? 'Sisa Slot: ' + effectiveStock : 'Stok: ' + formatStockLabel(effectiveStock)); 2990 } else { 2991 elStock.classList.add('out'); 2992 elStock.textContent = 'Habis'; 2993 } 2994 } 2995 if (elQty){ 2996 elQty.max = String(effectiveStock>0?effectiveStock:0); 2997 if (effectiveStock<=0) { elQty.value = '0'; elQty.disabled = true; } 2998 else { if (parseInt(elQty.value||'1',10) < 1) elQty.value='1'; elQty.disabled=false; } 2999 } 3000 3001 const shouldDisable = !(v && effectiveStock>0); 3002 const updateButtons = () => { 3003 const btnAddCart = document.getElementById('btn-add-cart'); 3004 const btnBuyNow = document.getElementById('btn-buy'); 3005 const mobileCart = document.getElementById('mf-cart'); 3006 const mobileBuy = document.getElementById('mf-buy'); 3007 [btnAddCart, btnBuyNow, mobileCart, mobileBuy].forEach(btn => { 3008 if (!btn) return; 3009 if (shouldDisable) { 3010 btn.disabled = true; 3011 btn.setAttribute('disabled', 'disabled'); 3012 btn.classList.add('stock-disabled'); 3013 btn.setAttribute('data-stock-blocked', 'true'); 3014 btn.setAttribute('data-stock-reason', window.isPreorderProduct ? 'Pre-order habis' : 'Stok habis'); 3015 } else { 3016 btn.disabled = false; 3017 btn.removeAttribute('disabled'); 3018 btn.classList.remove('stock-disabled'); 3019 btn.removeAttribute('data-stock-blocked'); 3020 btn.removeAttribute('data-stock-reason'); 3021 } 3022 }); 3023 }; 3024 updateButtons(); 3025 setTimeout(updateButtons, 10); 3026 setTimeout(updateButtons, 50); 3027 setTimeout(updateButtons, 100); 3028 if (mfBuy && v) { 3029 const voucherBtn = document.getElementById('btn-buy-voucher'); 3030 const voucherCode = fab ? fab.dataset.voucherCode : ''; 3031 let voucherDiscount = 0; 3032 3033 if (voucherBtn && voucherCode) { 3034 const vType = voucherBtn.dataset.voucherType; 3035 const vValue = parseFloat(voucherBtn.dataset.voucherValue) || 0; 3036 const vMax = parseFloat(voucherBtn.dataset.voucherMax) || 0; 3037 const finalPrice = v.final || 0; 3038 if (vType && vValue > 0) { 3039 voucherDiscount = calcVoucherDisc(vType, vValue, finalPrice, vMax); 3040 if (fab) fab.dataset.voucherValue = voucherDiscount.toString(); 3041 } 3042 } 3043 3044 const finalPrice = v.final || 0; 3045 const textEl = mfBuy.querySelector('.mf-buy-text'); 3046 const priceEl = mfBuy.querySelector('.mf-buy-price'); 3047 3048 if (effectiveStock > 0) { 3049 if (IS_PREORDER) { 3050 if (textEl) textEl.textContent = 'Pre Order Sekarang'; 3051 if (priceEl) priceEl.textContent = rupiah(finalPrice); 3052 } else if (voucherCode && voucherDiscount > 0) { 3053 if (textEl) textEl.textContent = 'Beli dengan Voucher'; 3054 if (priceEl) priceEl.textContent = rupiah(Math.max(0, finalPrice - voucherDiscount)); 3055 } else { 3056 if (textEl) textEl.textContent = 'Beli Sekarang'; 3057 if (priceEl) priceEl.textContent = rupiah(finalPrice); 3058 } 3059 } else { 3060 if (textEl) textEl.textContent = 'Stok Habis'; 3061 if (priceEl) priceEl.textContent = rupiah(finalPrice); 3062 } 3063 } 3064 3065 const isMobile = window.initMobile ?? 0; 3066 if (window.instSetBasePrice) window.instSetBasePrice(v ? (isMobile == '1' ? v.ori : v.final) : 0); 3067 if (window.updateSoldBySku) window.updateSoldBySku(v.sku); 3068 updateBranchPopover(v); 3069 if (v && v.image_url && focusImage) focusGalleryByUrl(v.image_url); 3070 if (v) { 3071 window.dispatchEvent(new CustomEvent('pd-variant-changed', { 3072 detail: { 3073 price: v.final,
3074 originalPrice: v.ori, 3075 discount: v.disc, 3076 stock: effectiveStock, 3077 sku: v.sku, 3078 variant_id: v.id 3079 } 3080 })); 3081 3082 const encodedHash = encodeVariantHash(v.id); 3083 if (encodedHash && window.history && window.history.replaceState) { 3084 const newHash = '#v=' + encodedHash; 3085 const newUrl = window.location.pathname + window.location.search + newHash; 3086 window.history.replaceState(null, '', newUrl); 3087 } 3088 } 3089 } 3090 3091 let sel = readSelection(); 3092 if (autoFillMissing(sel)) sel = readSelection(); 3093 3094 let v = findVariant(sel); 3095 if (!v) { 3096 const candidates = variants.filter(variant=>{ 3097 return attrOrder.every(a=>{ 3098 if (!sel[a]) return true; 3099 return variant.attrs[a] === sel[a]; 3100 }); 3101 }); 3102 if (candidates.length >= 1) { 3103 v = candidates[0]; 3104 attrOrder.forEach(a=> sel[a] = v.attrs[a]); 3105 attrOrder.forEach(a=>{ 3106 const val = sel[a]; 3107 const input = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio][value="${CSS.escape(val)}"]`); 3108 if (input) input.checked = true; 3109 }); 3110 } 3111 } 3112 3113 const initSel = readSelection(); 3114 const initVar = findVariant(initSel) || variants[0] || null; 3115 if (document.readyState === 'loading') { 3116 document.addEventListener('DOMContentLoaded', () => applyVariant(initVar, false)); 3117 } else { 3118 applyVariant(initVar, false); 3119 } 3120 3121function updateSummary(sel){Object.entries(sel).forEach(([a,val])=>{const el=document.getElementById('vs-'+a);if(el)el.textContent=val||'-'})} 3122 function refreshOptions(sel){ 3123 attrOrder.forEach(a=>{ 3124 const group = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"]`); 3125 if (!group) return; 3126 const chips = group.querySelectorAll('.v-chip'); 3127 chips.forEach(ch=>{ 3128 const val = ch.getAttribute('data-value'); 3129 const possible = variants.some(v=>{ 3130 if (v.attrs[a] !== val) return false; 3131 for (const a2 of attrOrder) { 3132 if (a2 === a) continue; 3133 if (sel[a2] && v.attrs[a2] !== sel[a2]) return false; 3134 } 3135 return true; 3136 }); 3137 const input = ch.querySelector('input[type=radio]'); 3138 const disabled = !possible; 3139 if (input) input.disabled = disabled; 3140 ch.classList.toggle('disabled', disabled); 3141 3142 let candidateVariant = null; 3143 if (possible) { 3144 candidateVariant = variants.find(v=>{ 3145 if (v.attrs[a] !== val) return false; 3146 for (const a2 of attrOrder) { 3147 if (a2 === a) continue; 3148 if (sel[a2] && v.attrs[a2] !== sel[a2]) return false; 3149 } 3150 return true; 3151 }); 3152 } 3153 const outOfStock = candidateVariant ? (window.isPreorderProduct && candidateVariant.preorder_remaining !== null ? candidateVariant.preorder_remaining <= 0 : candidateVariant.stock <= 0) : false; 3154 ch.classList.toggle('out', !disabled && outOfStock); 3155 const badge = ch.querySelector('.chip-badge'); 3156 if (badge) badge.hidden = !(candidateVariant && outOfStock); 3157 }); 3158 group.querySelectorAll('.v-chip').forEach(ch=>{ 3159 const input = ch.querySelector('input[type=radio]'); 3160 ch.classList.toggle('selected', input && input.checked); 3161 }); 3162 }); 3163 } 3164 updateSummary(sel); 3165 refreshOptions(sel); 3166 document.querySelectorAll('.v-chip').forEach(chip=>{const input=chip.querySelector('input[type=radio]');if(input&&input.checked){chip.classList.add('selected');}}); 3167 3168 const container = document.getElementById('pd-variants'); 3169 container && container.addEventListener('change', function(ev){ 3170 const radio = ev.target.closest('input[type=radio]'); 3171 if (!radio) return; 3172 sel = readSelection(); 3173 if (autoFillMissing(sel)) sel = readSelection(); 3174 const chosen = findVariant(sel); 3175 applyVariant(chosen || null, true); 3176 3177 updateSummary(sel); 3178 refreshOptions(sel); 3179 }); 3180 3181window.applyVariant=applyVariant; 3182})(); 3183 3184(function cleanBrokenDescImages(){ 3185 const containers = [ 3186 document.querySelector('.pd-full-desc-body'), 3187 document.querySelector('.pd-short-desc')
3188 ].filter(Boolean); 3189 3190 containers.forEach(root => { 3191 const imgs = root.querySelectorAll('img'); 3192 imgs.forEach(img => { 3193 if (img.complete && img.naturalWidth === 0) { 3194 img.remove(); 3195 return; 3196 } 3197 img.addEventListener('error', () => { 3198 img.remove(); 3199 }, { once:true }); 3200 }); 3201 }); 3202})(); 3203 3204/* ====== Scroll To Top ====== */ 3205(function _0xi25j(){const a=document.getElementById('pd-scroll-top');if(!a)return;function b(){if(window.matchMedia('(max-width:640px)').matches){const d=document.querySelector('.bottom-nav'),e=document.querySelector('.pd-mobile-fab');if(!d&&!e){setTimeout(b,100);return}const f=d&&window.getComputedStyle(d).display!=='none'&&window.getComputedStyle(d).visibility!=='hidden',g=e&&window.getComputedStyle(e).display!=='none'&&window.getComputedStyle(e).visibility!=='hidden';let h;if(f&&g){h='calc(68px + 54px + env(safe-area-inset-bottom))'}else if(g){h='calc(68px + 8px + env(safe-area-inset-bottom))'}else if(f){h='calc(60px + env(safe-area-inset-bottom))'}else{h='calc(20px + env(safe-area-inset-bottom))'}a.style.setProperty('--scroll-top-bottom',h)}else{a.style.removeProperty('--scroll-top-bottom')}}function c(){const d=window.pageYOffset||document.documentElement.scrollTop||0,e=d>300;a.classList.toggle('visible',e);a.setAttribute('aria-hidden',e?'false':'true');b()}window.addEventListener('scroll',c,{passive:!0});window.addEventListener('resize',b,{passive:!0});setTimeout(b,100);c();a.addEventListener('click',function(){window.scrollTo({top:0,behavior:'smooth'})})})(); 3206 3207/* Format stok 10+ */ 3208function _0xk67l(n){n=parseInt(n||0,10)||0;return n>10?'10+':String(n)} 3209 3210/* Toggle popover stok per cabang */ 3211(function _0xm89n(){const a=document.getElementById('pd-stock-info-btn'),b=document.getElementById('pd-stock-popover'),c=document.getElementById('pd-stock-popover-close');if(!a||!b)return;function d(){if(window.matchMedia('(min-width: 641px)').matches){const e=document.getElementById('pd-stock-badge');if(!e)return;const f=e.getBoundingClientRect(),g=window.pageXOffset||document.documentElement.scrollLeft||0,h=window.pageYOffset||document.documentElement.scrollTop||0;b.style.left=(f.left+g-10)+'px';b.style.top=(f.bottom+h+10)+'px'}else{b.style.left='';b.style.top=''}} 3212function e(){d();b.classList.add('show');a.setAttribute('aria-expanded','true');b.setAttribute('aria-hidden','false');document.addEventListener('click',g,{capture:true});window.addEventListener('resize',d,{passive:true});window.addEventListener('scroll',d,{passive:true})}function f(){b.classList.remove('show');a.setAttribute('aria-expanded','false');b.setAttribute('aria-hidden','true');document.removeEventListener('click',g,{capture:true});window.removeEventListener('resize',d);window.removeEventListener('scroll',d)}function g(h){if(b.contains(h.target)||a.contains(h.target))return;f()} 3213a.addEventListener('click',function(h){h.preventDefault();b.classList.contains('show')?f():e()});if(c)c.addEventListener('click',f)})(); 3214 3215/* ===== Share Product Modal ===== */ 3216(function(){const a=document.getElementById('pd-share-btn'),z=document.getElementById('mf-share'),b=document.getElementById('pd-share-modal-overlay'),c=document.getElementById('pd-share-close'),d=document.getElementById('pd-share-copy-url-btn'),e=document.getElementById('pd-share-url-input');if((!a&&!z)||!b)return;const f="https://ecatch.org/",g="Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y",h="Rp 20.789.000";const discountPercent=1;let i='';if(discountPercent>0){i=`ð¥ Lagi Promo Nih! Diskon ${discountPercent}%\n\n⨠${g}\nð° Cuma ${h} aja!\n\nð Buruan cek sebelum kehabisan!\nð `}else{i=`⨠Ada barang bagus nih!\n\nð¦ ${g}\nð¸ Harga: ${h}\n\nðï¸ Yuk, langsung cek!\nð `}function j(){b.classList.add('show');document.body.style.overflow='hidden'}function k(){b.classList.remove('show');document.body.style.overflow=''}if(a)a.addEventListener('click',j);if(z)z.addEventListener('click',j);if(c)c.addEventListener('click',k);b.addEventListener('click',function(l){if(l.target===b)k()});document.addEventListener('keydown',function(l){if(l.key==='Escape'&&b.classList.contains('show'))k()});b.addEventListener('click',function(l){const m=l.target.closest('[data-share]');if(!m)return;const n=m.getAttribute('data-share'),o=encodeURIComponent(f),p=e
3216ncodeURIComponent(i),q=encodeURIComponent(g);let r='';switch(n){case 'whatsapp':r=`https://wa.me/?text=${p}${o}`;break;case 'facebook':r=`https://www.facebook.com/sharer/sharer.php?u=${o}`;break;case 'twitter':r=`https://twitter.com/intent/tweet?text=${p}${o}`;break;case 'telegram':r=`https://t.me/share/url?url=${o}&text=${p}`;break;case 'email':r=`mailto:?subject=${encodeURIComponent('ð¥ Cek Produk Keren Ini!')}&body=${p}${o}`;window.location.href=r;k();return;case 'copy':s();return;case 'pdf':const ps=document.querySelector('.product-single');if(ps){ps.setAttribute('data-print-date',new Date().toLocaleDateString('id-ID',{year:'numeric',month:'long',day:'numeric'}))}k();setTimeout(function(){window.print();try{if(window.ga4Ecomm&&window.ga4Ecomm.trackEvent)window.ga4Ecomm.trackEvent('share',{method:'pdf_export',content_type:'product',item_id:"4563217890"})}catch(_){}},300);return}if(r){window.open(r,'_blank','noopener,noreferrer');try{if(window.ga4Ecomm&&window.ga4Ecomm.trackEvent)window.ga4Ecomm.trackEvent('share',{method:n,content_type:'product',item_id:"4563217890"})}catch(_){}}});function s(){if(!e)return;e.select();e.setSelectionRange(0,99999);try{if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(f).then(function(){t()}).catch(function(){document.execCommand('copy');t()})}else{document.execCommand('copy');t()}}catch(u){console.error('Failed to copy:',u)}}function t(){if(!d)return;const v=d.innerHTML;d.classList.add('copied');d.innerHTML='<svg viewBox="0 0 24 24" width="16" height="16"><path fill="currentColor" d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg><span class="pd-share-copy-text">Tersalin!</span>';if(window.showToast)showToast({type:'success',title:'⨠Link Tersalin!',message:'Link produk berhasil disalin. Yuk bagikan ke teman!',duration:3000});setTimeout(function(){d.classList.remove('copied');d.innerHTML=v},2000)}if(d)d.addEventListener('click',s);if(navigator.share){const shareHandler=function(w){w.preventDefault();navigator.share({title:g,text:i+f,url:f}).catch(function(x){console.log('Native share cancelled or failed:',x)})};if(a)a.addEventListener('dblclick',shareHandler);if(z)z.addEventListener('dblclick',shareHandler)}})(); 3217 3218/* ===== Embedding variants (server â client) ===== */ 3219(function(){ 3220 window.__PD_VARIANTS_WITH_BRANCH__ = []; 3221})(); 3222 3223/* ===== Helper: update angka popover ===== */ 3224function updateStockPopoverForVariant(v){ 3225 try{ 3226 const elMeg = document.getElementById('sp-qty-meg'); 3227 const elMdf = document.getElementById('sp-qty-mdf'); 3228 const elBda = document.getElementById('sp-qty-bda'); 3229 3230 if (typeof v?.smm === 'number' && elMeg) elMeg.textContent = formatStockLabel(Math.max(0, v.smm|0)); 3231 if (typeof v?.smf === 'number' && elMdf) elMdf.textContent = formatStockLabel(Math.max(0, v.smf|0)); 3232 if (typeof v?.sba === 'number' && elBda) elBda.textContent = formatStockLabel(Math.max(0, v.sba|0)); 3233 }catch(_){} 3234} 3235 3236/* ===== applyVariant: 10+ dan update popover ===== */ 3237(function patchApplyVariant(){ 3238 if (typeof applyVariant !== 'function') return; 3239 const original = applyVariant; 3240 window.applyVariant = function(v){ 3241 original(v); 3242 3243 try { 3244 const elStock = document.getElementById('pd-stock-badge'); 3245 if (elStock){ 3246 let txt = elStock.textContent || ''; 3247 let m = txt.match(/\d+/); 3248 if (m) { 3249 const n = parseInt(m[0]||'0',10)||0; 3250 elStock.textContent = (n>0) ? ('Stok: ' + formatStockLabel(n)) : 'Habis'; 3251 } 3252 } 3253 } catch(_){} 3254if(window.__PD_VARIANTS_WITH_BRANCH__&&v){const vv=window.__PD_VARIANTS_WITH_BRANCH__.find(x=>x.id===v.id)||v;updateStockPopoverForVariant(vv)} 3255 }; 3256})(); 3257 3258(function initCurrentVariantBranch(){ 3259 const list = window.__PD_VARIANTS_WITH_BRANCH__ || []; 3260 if (!list.length) return; 3261 const hid = document.getElementById('pd-variant-id'); 3262 const vid = hid ? parseInt(hid.value||'0',10) : 0; 3263 const current = list.find(x => x.id === vid) || list[0] || null; 3264 if (current) updateStockPopoverForVariant(current); 3265})(); 3266 3267(function(){ 3268 if (!window.ga4Ecomm) return; 3269 const catSegs = ["Komputer & Laptop","Laptop","Gaming"]; 3270 window.ga4Ecomm.viewItem({ 3271 currency: 'IDR', 3272 value: 20789000, 3273 item_id: "4563217890", 3274 item_name: "Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y", 3275 item_brand: "Lenovo ",
3276 item_category: catSegs && catSegs.length ? catSegs.join(' / ') : '' 3277 }); 3278 })(); 3279 3280(function patchApplyVariantFocus(){ 3281 if (typeof applyVariant !== 'function') return; 3282 const original = applyVariant; 3283 window.applyVariant = function(v, focusImage = true){ 3284 3285 original(v, focusImage); 3286 3287 if (focusImage && v && v.image_url) { 3288 _0xau1v(v.image_url); 3289 } 3290 }; 3291})(); 3292 3293(function() { 3294 var soldMap = []; 3295 var soldTotalLabel = "Terjual 2"; 3296 3297 function formatSoldLabel(qty) { 3298 if (qty >= 1000000) { 3299 var v = Math.floor((qty / 100000) ) / 10; 3300 return 'Terjual ' + (String(v).replace('.', ',')) + 'jt+'; 3301 } 3302 if (qty >= 1000) { 3303 var v2 = Math.floor((qty / 100) ) / 10; 3304 return 'Terjual ' + (String(v2).replace('.', ',')) + 'rb+'; 3305 } 3306 if (qty >= 100) { 3307 var v2 = Math.floor((qty / 100) ) * 100; 3308 return 'Terjual ' + (String(v2).replace('.', ',')) + '+'; 3309 } 3310 if (qty >= 10) { 3311 var v2 = Math.floor((qty / 10) ) * 10; 3312 return 'Terjual ' + (String(v2).replace('.', ',')) + '+'; 3313 } 3314 return 'Terjual ' + (qty.toLocaleString('id-ID')); 3315 } 3316 3317 function updateSoldLabel(labelText) { 3318 var el = document.querySelector('#pd-sold-inline, [data-role="sold-chip"]'); 3319 if (el) el.textContent = labelText; 3320 } 3321 3322 window.updateSoldBySku = function(sku) { 3323 if (!sku || typeof sku !== 'string') { 3324 updateSoldLabel(soldTotalLabel); 3325 return; 3326 } 3327 var qty = soldMap[sku] || 0; 3328 updateSoldLabel(formatSoldLabel(qty)); 3329 }; 3330 3331 updateSoldLabel(soldTotalLabel); 3332 })(); 3333 3334(function(){const h=document.getElementById('pd-sticky-header');if(!h)return;const p=document.getElementById('pd-price-anchor');const ac=document.getElementById('pd-sticky-add-cart');const by=document.getElementById('pd-sticky-buy');let lt=window.scrollY;let tk=false;function u(){if(!p)return;const r=p.getBoundingClientRect();const s=window.scrollY;if(r.top<0){h.classList.add('visible')}else{h.classList.remove('visible')}lt=s;tk=false}function rt(){if(!tk){window.requestAnimationFrame(u);tk=true}}window.addEventListener('scroll',rt,{passive:true});u();function sy(){const ma=document.getElementById('btn-add-cart');const mb=document.getElementById('btn-buy');if(ac&&ma){ac.disabled=ma.disabled}if(by&&mb){by.disabled=mb.disabled}}sy();const ob=new MutationObserver(sy);const ma=document.getElementById('btn-add-cart');const mb=document.getElementById('btn-buy');if(ma)ob.observe(ma,{attributes:true,attributeFilter:['disabled']});if(mb)ob.observe(mb,{attributes:true,attributeFilter:['disabled']});const ss=document.getElementById('pd-sticky-share-btn');const ms=document.getElementById('pd-share-btn');if(ss&&ms){ss.addEventListener('click',function(e){e.preventDefault();ms.click()})}if(ac){ac.addEventListener('click',function(e){e.preventDefault();if(ac.disabled)return;const m=document.getElementById('btn-add-cart');if(m&&!m.disabled){m.click()}})}if(by){by.addEventListener('click',function(e){e.preventDefault();if(by.disabled)return;const m=document.getElementById('btn-buy');if(m&&!m.disabled&&window.buyNow){window.buyNow(e)}})} 3335function getChatProductData(){const varInput=document.getElementById('pd-variant-id');const variantId=varInput?parseInt(varInput.value||'0',10):0;const variantSummary=getVariantSummaryText();const priceEl=document.getElementById('pd-price-current');const currentPrice=priceEl?priceEl.textContent.trim():'Rp 20.789.000';const pd={id:325,name:"Lenovo Legion Go 8ASP2 - 83N0000RID \/AMD Ryzen Z2 Extreme\/32GB\/1TB SSD\/AMD Radeon Graphics\/8.8\" WUXGA OLED Touch\/Win 11 Home\/Eclipse Black\/3Y",price:currentPrice,image:"\/uploads\/products\/lenovo-legion-go-8asp2-83n0000rid.webp",url:window.location.href};if(variantId>0){pd.variant_id=variantId}if(variantSummary){pd.variant_summary=variantSummary}return pd} 3336const ch=document.getElementById('pd-sticky-chat');if(ch){ch.addEventListener('click',function(e){e.preventDefault();if(!window.plazaChat){console.warn('Chat widget not loaded');return}window.plazaChat.attachProduct(getChatProductData());window.plazaChat.openWidget()})}const dch=document.getElementById('btn-chat-icon');if(dch){dch.addEventListener('click',function(e){e.preventDefault();if(!window.plazaChat){console.warn('Chat widget not loaded');return}window.plazaChat.attachProduct(getChatProductData());window.plazaChat.openWidget()})}const mch=document.getElementById('mf-chat');if(mch){mch.addEventListener('click',function(e){e.preventDefault();if(!window.plazaChat){console.warn('Chat widget not loaded');return}window.plazaChat.attachProduct(getChatProductData());window.plazaChat.openWidget()})}window.addEventListener('pd-variant-changed',function(e){const d=e.detail||{};if(d.price!==undefined){const sp=document.getElementById('pd-sticky-price');if(sp){sp.textContent=formatRupiah(d.price)}}if(d.originalPrice!==undefined&&d.originalPrice>d.price){const so=document.getElementById('pd-sticky-price-original');if(so){so.textContent=formatRupiah(d.originalPrice);so.style.display=''}}else{const so=document.getElementById('pd-sticky-price-original');if(so){so.style.display='none'}}if(d.discount!==undefined&&d.discount>0){const sd=document.getElementById('pd-sticky-discount');if(sd){sd.textContent='-'+d.discount+'%';sd.style.display=''}}else{const sd=document.getElementById('pd-sticky-discount');if(sd){sd.style.display='none'}}const hs=d.stock>0;if(ac){ac.disabled=!hs}if(by){by.disabled=!hs}});
3336function formatRupiah(n){return'Rp'+Math.floor(n).toLocaleString('id-ID')}})(); 3337 3338(function(){const t=document.getElementById('pdv-toggle-btn');const v=document.getElementById('pd-voucher-section');if(t&&v){const h=v.querySelectorAll('.pdv-min-hidden');const n=h.length;t.addEventListener('click',function(){const e=t.classList.toggle('expanded');h.forEach(function(i){if(e){i.classList.remove('pdv-min-hidden')}else{i.classList.add('pdv-min-hidden')}});t.textContent=e?'Tutup':'+'+n})}const m=document.getElementById('voucher-detail-modal');const mc=document.getElementById('voucher-modal-close');const ma=document.getElementById('voucher-modal-cancel');const mcp=document.getElementById('voucher-modal-copy');if(m){const bb=document.querySelectorAll('.pdv-badge-btn');bb.forEach(function(btn){btn.addEventListener('click',function(){if(btn.disabled)return;const c=btn.getAttribute('data-voucher-code');const nm=btn.getAttribute('data-voucher-name');const dl=btn.getAttribute('data-discount-label');const bl=btn.getAttribute('data-badge-label');const mp=parseInt(btn.getAttribute('data-min-purchase'));const md=parseInt(btn.getAttribute('data-max-discount'));const vu=btn.getAttribute('data-valid-until');document.getElementById('voucher-modal-badge').innerHTML='<span class="vmb-value">'+dl+'</span><span class="vmb-label">'+bl+'</span>';document.getElementById('voucher-modal-code').textContent=c;document.getElementById('voucher-modal-name').textContent=nm;const me=document.getElementById('voucher-modal-min');if(mp>0){me.style.display='';document.getElementById('voucher-modal-min-val').textContent=fr(mp)}else{me.style.display='none'}const xe=document.getElementById('voucher-modal-max');if(md>0){xe.style.display='';document.getElementById('voucher-modal-max-val').textContent=fr(md)}else{xe.style.display='none'}if(vu){const d=new Date(vu);const ft=d.toLocaleDateString('id-ID',{day:'numeric',month:'long',year:'numeric',hour:'2-digit',minute:'2-digit'});document.getElementById('voucher-modal-valid-val').textContent=ft}mcp.setAttribute('data-code',c);m.classList.add('show');document.body.style.overflow='hidden'})});function cm(){m.classList.remove('show');document.body.style.overflow=''}if(mc)mc.addEventListener('click',cm);if(ma)ma.addEventListener('click',cm);m.addEventListener('click',function(e){if(e.target===m)cm()});if(mcp){mcp.addEventListener('click',function(){const c=mcp.getAttribute('data-code');if(!c)return;if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(c).then(function(){smc()}).catch(function(err){fc(c)})}else{fc(c)}})}}const b=document.querySelectorAll('.pdv-min-copy');b.forEach(function(btn){btn.addEventListener('click',function(){if(btn.disabled)return;const code=btn.getAttribute('data-code');if(!code)return;if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(code).then(function(){sc(btn)}).catch(function(err){fc(code,btn)})}else{fc(code,btn)}})});function fc(text,btn){const tx=document.createElement('textarea');tx.value=text;tx.style.position='fixed';tx.style.opacity='0';document.body.appendChild(tx);tx.select();try{document.execCommand('copy');if(btn)sc(btn);else smc()}catch(err){}document.body.removeChild(tx)}function sc(btn){const o=btn.textContent;btn.classList.add('copied');btn.textContent='â Tersalin';setTimeout(function(){btn.classList.remove('copied');btn.textContent=o},2000)}function smc(){const o=mcp.textContent;mcp.textContent='â Kode Tersalin';mcp.style.background='#22c55e';setTimeout(function(){mcp.textContent=o;mcp.style.background=''},2000)}function fr(a){return'Rp'+Math.floor(a).toLocaleString('id-ID')}})(); 3339</script>
vendor: 1 bytes, line 3339
3339
3340<script nonce="se3iyzEHMc9FQEB4wSyd0w=="> 3341window.PD_ID=325;window.PD_NAME=_0x3c4d;window.PD_SKU=_0x5e6f;window.PD_CATEGORY_PATH="Komputer & Laptop/Laptop/Gaming";window.PD_BEST_VOUCHER=null; 3342window.IS_DIGITAL=IS_DIGITAL; 3343window.isPreorderProduct=false; 3344window.PD_PREORDER_DATA=null; 3345</script>
3345 3346
3347<script src="https://plazait.b-cdn.net/assets/js/pd-lightbox.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 1 bytes, line 3347
3347
3348<script src="https://plazait.b-cdn.net/assets/js/cart.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 1 bytes, line 3348
3348
3349<script src="https://plazait.b-cdn.net/assets/js/stock-validator-vanilla.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 1 bytes, line 3349
3349
3350<script src="https://plazait.b-cdn.net/assets/js/pd-addtocart.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 1 bytes, line 3350
3350
3351<script src="https://plazait.b-cdn.net/assets/js/pd-buynow.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 1 bytes, line 3351
3351
3352<script src="https://plazait.b-cdn.net/assets/js/pd-voucher-recalc.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 1 bytes, line 3352
3352
3353<script nonce="se3iyzEHMc9FQEB4wSyd0w==">document.addEventListener('DOMContentLoaded',function(){if(typeof ProductReviews!=='undefined'){ProductReviews.init(325);}const r=document.getElementById('pd-rating-inline');if(r){r.addEventListener('click',function(e){e.preventDefault();const s=document.getElementById('reviews');if(s){s.scrollIntoView({behavior:'smooth',block:'start'});s.classList.add('highlight-flash');setTimeout(()=>{s.classList.remove('highlight-flash')},1500)}});}});</script>
3353 3354
3355<script nonce="se3iyzEHMc9FQEB4wSyd0w=="> 3356(function(){function _0x9i0j(el){if(typeof gtag==='function'){gtag('event','qoala_insurance_click',{event_category:'Insurance',event_label:'Qoala Banner Click - Product Detail',link_url:'/plazait-protect',page_location:window.location.href,product_id:parseInt(el.getAttribute('data-product-id'))||0,product_name:el.getAttribute('data-product-name')||'',category_path:el.getAttribute('data-category-path')||'',custom_map:{custom_parameter_1:'qoala_banner_product_detail'}})}} 3357 3358function _0x1k2l(){var a=document.querySelector('.qoala-cta[data-ga-event="qoala_banner_click"]');if(a){a.addEventListener('click',function(e){_0x9i0j(this)})}}if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',_0x1k2l)}else{_0x1k2l()}})(); 3359 3360(function(){const pwpSection=document.getElementById('pwp-deals-section');const pwpBadge=document.getElementById('pwp-trigger-badge');if(!pwpSection)return;const productId=parseInt(pwpSection.getAttribute('data-product-id'))||0;const variantId=parseInt(pwpSection.getAttribute('data-variant-id'))||0;const categoryPath=pwpSection.getAttribute('data-category-path')||'';if(!productId)return;function formatRupiah(n){return'Rp'+Math.floor(n).toLocaleString('id-ID')}function loadPWPDeals(){const url=`/api/pwp/get_by_product.php?product_id=${productId}${variantId?`&variant_id=${variantId}`:''}${categoryPath?`&category_path=${encodeURIComponent(categoryPath)}`:''}`;fetch(url).then(r=>r.json()).then(data=>{if(data.success&&data.promotions&&data.promotions.length>0){renderPWPDeals(data.promotions);pwpSection.hidden=false;if(pwpBadge)pwpBadge.hidden=false;setTimeout(function(){if(typeof window.adjustSidebarBanner==='function'){window.adjustSidebarBanner()}},150)}else{pwpSection.hidden=true;if(pwpBadge)pwpBadge.hidden=true}}).catch(err=>{console.error('PWP load error:',err);pwpSection.hidden=true;if(pwpBadge)pwpBadge.hidden=true})}function renderPWPDeals(promotions){const loading=pwpSection.querySelector('.pwp-deals-loading');const grid=document.getElementById('pwp-deals-grid');if(loading)loading.hidden=true;if(!grid)return;grid.innerHTML='';promotions.forEach(promo=>{promo.bundled_products.forEach(product=>{const card=document.createElement('div');card.className='pwp-deal-card';const discount=product.discount>0?product.discount:0;const discountPercent=product.regular_price>0?Math.round((discount/product.regular_price)*100):0;const imgUrl=product.image_url?`/uploads/products/${product.image_url}`:'/assets/img/no-image.png';card.innerHTML=`<div class="pwp-deal-thumb"><img src="${imgUrl}" alt="${escapeHtml(product.name)}" loading="lazy"></div><div class="pwp-deal-info"><h4 class="pwp-deal-name">${escapeHtml(product.name)}</h4><div class="pwp-deal-prices"><span class="pwp-deal-price">${formatRupiah(product.pwp_price)}</span>${product.regular_price>product.pwp_price?`<span class="pwp-deal-original">${formatRupiah(product.regular_price)}</span>`:''}</div></div>${discountPercent>0?`<span class="pwp-deal-badge">-${discountPercent}%</span>`:''}`;grid.appendChild(card)})})}function escapeHtml(str){const div=document.createElement('div');div.textContent=str||'';return div.innerHTML}loadPWPDeals();window.addEventListener('pd-variant-changed',function(e){const detail=e.detail||{};const newVid=detail.variant_id||0;const currentVid=parseInt(pwpSection.getAttribute('data-variant-id'))||0;if(newVid!==currentVid){pwpSection.setAttribute('data-variant-id',newVid);loadPWPDeals()}})})(); 3361</script>
3361<footer class="site-footer footer-compact variant-stripes" role="contentinfo"> 3362 <div class="ft-top ft-collapsible" id="ftTop"> 3363 <div class="container ft-grid"> 3364 3365 <div class="ft-col ft-help"> 3366 <h4 class="ft-title">Butuh Bantuan?</h4> 3367 <p class="ft-desc">Hubungi kami melalui Official WhatsApp interaktif sekarang.</p> 3368 <a class="ft-wa-btn" href="#" target="_blank" rel="nofollow noopener"> 3369 <span class="ico" aria-hidden="true"> 3370 <svg viewBox="0 0 24 24" width="18" height="18"><path fill="#25D366" d="M12.04 2c-5.52 0-10 4.43-10 9.9 0 1.75.47 3.45 1.38 4.94L2 22l5.3-1.38c1.43.78 3.05 1.19 4.7 1.19 5.52 0 10-4.43 10-9.9S17.56 2 12.04 2Zm5.86 13.9c-.25.7-1.23 1.28-1.7 1.33-.45.06-1.02.08-1.65-.1-.38-.12-.88-.29-1.52-.56-2.66-1.15-4.4-3.83-4.53-4.01-.13-.18-1.08-1.44-1.08-2.75 0-1.31.68-1.95.92-2.22.25-.27.54-.33.72-.33.18 0 .36.01.52.01.17 0 .39-.06.62.47.25.6.85 2.07.92 2.22.07.15.12.33.02.53-.1.2-.15.33-.3.5-.15.17-.32.39-.46.53-.15.15-.3.31-.13.6.18.3.8 1.31 1.73 2.12 1.19 1.03 2.17 1.36 2.48 1.5.31.14.49.12.67-.07.18-.18.77-.82.98-1.1.21-.27.42-.23.7-.14.27.09 1.72.81 2.02.95.3.14.5.22.58.35.08.13.08.72-.17 1.42Z"/></svg> 3371 </span> 3372 Kirim Pesan 3373 </a> 3374 3375 <p class="ft-desc sm-gap">Ikuti kami:</p> 3376 <div class="ft-social"> 3377 <a aria-label="Facebook" href="https://facebook.com/PlazaIt/"><svg viewBox="0 0 24 24" width="18" height="18"><path fill="currentColor" d="M13.5 22v-8.2h2.7l.4-3.2h-3.1V8c0-.9.3-1.5 1.6-1.5H17V3.7c-.3 0-1.2-.1-2.2-.1-2.2 0-3.8 1.3-3.8 3.9v2.2H8v3.2h3v8.1h2.5Z"/></svg></a> 3378 <a aria-label="Instagram" href="https://www.instagram.com/plazait"><svg viewBox="0 0 24 24" width="18" height="18"><path fill="currentColor" d="M7.8 2h8.4A5.8 5.8 0 0 1 22 7.8v8.4A5.8 5.8 0 0 1 16.2 22H7.8A5.8 5.8 0 0 1 2 16.2V7.8A5.8 5.8 0 0 1 7.8 2Zm0 2A3.8 3.8 0 0 0 4 7.8v8.4A3.8 3.8 0 0 0 7.8 20h8.4a3.8 3.8 0 0 0 3.8-3.8
3378V7.8A3.8 3.8 0 0 0 16.2 4H7.8Zm9.9 1.7a1.1 1.1 0 1 1 0 2.3 1.1 1.1 0 0 1 0-2.3ZM12 7a5 5 0 1 1 0 10 5 5 0 0 1 0-10Zm0 2a3 3 0 1 0 0 6 3 3 0 0 0 0-6Z"/></svg></a> 3379 <a aria-label="TikTok" href="https://www.tiktok.com/@plazait"><svg viewBox="0 0 24 24" width="18" height="18"><path fill="currentColor" d="M18.9 7.4a6.4 6.4 0 0 1-3.2-1.2v6.3a5.47 5.47 0 1 1-5.5-5.5c.2 0 .4 0 .6.02v2.37a2.92 2.92 0 0 0-.6-.07 2.8 2.8 0 1 0 2.8 2.8V2h2.3a4.6 4.6 0 0 0 4.5 4.1v2.3Z"/></svg></a> 3380 </div> 3381 </div> 3382 3383 <!-- Collapsible Content Wrapper (Non-Homepage Only) --> 3384 <div class="ft-collapsible-content" id="ftCollapsible"> 3385 3386 <div class="ft-col"> 3387 <h4 class="ft-title">Tentang SEMBAHTOTO</h4> 3388 <ul class="ft-links"> 3389 <li><a href="/tentang-kami">Tentang Kami</a></li> 3390 <li><a href="/kontak-kami">Kontak Kami</a></li> 3391 <li><a href="/lokasi-toko">Lokasi Toko</a></li> 3392 <li><a href="/faq">FAQ</a></li> 3393 </ul> 3394 <div class="ft-address"> 3395 <p class="company">PT TUNJUNGAN PLAZA</p> 3396 <p>Tunjungan plaza, Jl. Jenderal Basuki Rachmat No.8-12 lantai 5, Kedungdoro</p> 3397 <p>Kec. Tegalsari, Surabaya, Jawa Timur 60261</p> 3398 </div> 3399 </div> 3400 3401 <div class="ft-col"> 3402 <h4 class="ft-title">Informasi</h4> 3403 <ul class="ft-links"> 3404 <li><a href="/syarat-dan-ketentuan">Syarat & Ketentuan</a></li> 3405 <li><a href="/kebijakan-privasi">Kebijakan Privasi</a></li> 3406 <li><a href="/kebijakan-cookie">Kebijakan Cookie</a></li> 3407 <li><a href="/pengiriman-dan-pengembalian">Pengiriman & Pengembalian</a></li> 3408 <li><a href="/pembayaran-dan-cicilan">Pembayaran & Cicilan</a></li> 3409 <li><a href="/garansi-dan-layanan">Garansi & Layanan</a></li> 3410 </ul> 3411 3412 <div class="ft-payments payments-small" aria-label="Metode Pembayaran"> 3413 <div class="pay-row"> 3414 <img src="https://plazait.b-cdn.net/assets/img/payments/mandiri.svg" alt="Mandiri" loading="lazy"> 3415 <img src="https://plazait.b-cdn.net/assets/img/payments/bni.svg" alt="BNI" loading="lazy"> 3416 <img src="https://plazait.b-cdn.net/assets/img/payments/bri.svg" alt="BRI" loading="lazy"> 3417 <img src="https://plazait.b-cdn.net/assets/img/payments/bsi.svg" alt="BSI" loading="lazy"> 3418 <img src="https://plazait.b-cdn.net/assets/img/payments/cimb-logo.svg" alt="ShopeePay" loading="lazy"> 3419 </div> 3420 </div> 3421 </div> 3422 3423 </div> 3424 <!-- End Collapsible Content --> 3425 3426 <!-- Expand Button (Mobile Only) --> 3427 <button class="ft-expand-btn" id="ftExpandBtn" aria-label="Lihat semua informasi footer"> 3428 <span class="expand-text">Selengkapnya</span> 3429 <svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor"> 3430 <path d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"/> 3431 </svg> 3432 </button> 3433 3434 </div> 3435 </div> 3436 <div class="ft-bottom"> 3437 <div class="container ft-bottom-inner"> 3438 <div class="ft-copy"> 3439 <span>TISU-AJAIB © <span id="yearNow">2026</span></span> 3440 <span>PT TISU-AJAIB. All rights reserved.</span> 3441 </div> 3442 </div> 3443 </div> 3444 3445 <style nonce="se3iyzEHMc9FQEB4wSyd0w=="> 3446 /* Chat Widget Styles - Lightweight & Minimal */ 3447 .chat-widget { 3448 position: fixed; 3449 bottom: 20px; 3450 right: 20px; 3451 z-index: 9999; 3452 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; 3453 } 3454 3455 /* Hide floating button on mobile - use bottom nav instead */ 3456 @media (max-width: 640px) { 3457 .chat-toggle-btn { 3458 display: none !important; 3459 } 3460 3461 /* Ensure popup is still visible on mobile even when button is hidden */ 3462 .chat-widget { 3463 display: block !important; 3464 } 3465 3466 .chat-popup { 3467 display: none; /* Hidden by default, shown via JS */ 3468 } 3469 3470 .chat-popup[style*="display: block"], 3471 .chat-popup[style*="display:block"] { 3472 display: block !important; 3473 } 3474 } 3475 3476 .chat-toggle-btn { 3477 width: 60px; 3478 height: 60px; 3479 border-radius: 50%; 3480 background: linear-gradient(135deg, #3ef21a 0%, #17d909 100%); 3481 border: none; 3482 color: white; 3483 cursor: pointer; 3484 box-shadow: 0 4px 12px rgba(26, 242, 40, 0.3); 3485 position: relative; 3486 transition: transform 0.2s, box-shadow 0.2s; 3487 } 3488 3489 .chat-toggle-btn:hover { 3490 transform: scale(1.05); 3491 box-shadow: 0 6px 20px rgba(26, 242, 33, 0.4); 3492 } 3493 3494 #chat-toggle-btn .chat-icon { 3495 position: absolute; 3496 top: 50%; 3497 left: 50%; 3498 transform: translate(-50%, -50%); 3499 width: 28px !important; 3500 height: 28px !important; 3501 } 3502 3503 .chat-unread-badge { 3504 position: absolute; 3505 top: -5px; 3506 right: -5px; 3507 background: #63ef44; 3508 color: white; 3509 border-radius: 12px; 3510 padding: 2px 6px; 3511 font-size: 11px; 3512 font-weight: 600;
3513 min-width: 20px; 3514 text-align: center; 3515 } 3516 3517 .chat-popup { 3518 position: absolute; 3519 bottom: 80px; 3520 right: 0; 3521 width: 380px; 3522 max-width: calc(100vw - 40px); 3523 height: 500px; 3524 max-height: calc(100vh - 120px); 3525 background: white; 3526 border-radius: 12px; 3527 box-shadow: 0 10px 40px rgba(0,0,0,0.2); 3528 display: flex; 3529 flex-direction: column; 3530 overflow: hidden; 3531 } 3532 3533 .chat-popup-header { 3534 background: linear-gradient(135deg, #3ef21a 0%, #09d947 100%); 3535 color: white; 3536 padding: 16px 20px; 3537 display: flex; 3538 justify-content: space-between; 3539 align-items: center; 3540 flex-shrink: 0; 3541 } 3542 3543 .chat-header-title { 3544 display: flex; 3545 flex-direction: column; 3546 gap: 2px; 3547 min-height: 0; 3548 } 3549 3550 .chat-popup-header h3 { 3551 margin: 0; 3552 font-size: 18px; 3553 font-weight: 600; 3554 line-height: 1.2; 3555 } 3556 3557 .chat-operating-hours { 3558 font-size: 11px; 3559 opacity: 0.9; 3560 font-weight: 400; 3561 display: flex; 3562 align-items: center; 3563 gap: 4px; 3564 line-height: 1.2; 3565 } 3566 3567 .chat-operating-hours svg { 3568 width: 12px; 3569 height: 12px; 3570 opacity: 0.8; 3571 flex-shrink: 0; 3572 } 3573 3574 .chat-header-actions { 3575 display: flex; 3576 align-items: center; 3577 gap: 8px; 3578 } 3579 3580 /* Notification Toggle Button */ 3581 .btn-notif-toggle { 3582 background: none; 3583 border: none; 3584 color: white; 3585 font-size: 18px; 3586 cursor: pointer; 3587 padding: 4px 8px; 3588 transition: all 0.2s; 3589 opacity: 0.8; 3590 } 3591 3592 .btn-notif-toggle:hover { 3593 opacity: 1; 3594 transform: scale(1.1); 3595 } 3596 3597 /* Icon states */ 3598 .btn-notif-toggle[data-status="not-subscribed"] svg { 3599 opacity: 0.7; 3600 } 3601 3602 .btn-notif-toggle[data-status="not-subscribed"]:hover svg { 3603 opacity: 1; 3604 } 3605 3606 .btn-notif-toggle[data-status="subscribed"] svg { 3607 opacity: 1; 3608 animation: bellRing 2s ease-in-out; 3609 } 3610 3611 .btn-notif-toggle[data-status="blocked"] svg { 3612 color: #6bff72; 3613 } 3614 3615 .btn-notif-toggle[data-status="not-supported"] { 3616 display: none !important; 3617 } 3618 3619 @keyframes bellRing { 3620 0%, 100% { transform: rotate(0deg); } 3621 10%, 30% { transform: rotate(-10deg); } 3622 20%, 40% { transform: rotate(10deg); } 3623 } 3624 3625 /* Notification Info Bar */ 3626 .chat-notif-info-bar { 3627 position: absolute; 3628 top: 64px; 3629 left: 0; 3630 right: 0; 3631 background: linear-gradient(to right, #e3f2fd, #f5f5f5); 3632 border-bottom: 1px solid #bbdefb; 3633 padding: 8px 12px; 3634 display: flex; 3635 align-items: center; 3636 gap: 8px; 3637 font-size: 12px; 3638 color: #616161; 3639 z-index: 10; 3640 animation: slideDown 0.3s ease; 3641 } 3642 3643 .chat-notif-info-bar svg { 3644 flex-shrink: 0; 3645 } 3646 3647 .chat-notif-info-bar .small { 3648 flex: 1; 3649 line-height: 1.4; 3650 } 3651 3652 .chat-notif-info-bar .btn-dismiss { 3653 background: none; 3654 border: none; 3655 color: #9e9e9e; 3656 cursor: pointer; 3657 padding: 0 4px; 3658 font-size: 16px; 3659 transition: color 0.2s; 3660 } 3661 3662 .chat-notif-info-bar .btn-dismiss:hover { 3663 color: #616161; 3664 } 3665 3666 @keyframes slideDown { 3667 from { 3668 max-height: 0; 3669 opacity: 0; 3670 } 3671 to { 3672 max-height: 50px; 3673 opacity: 1; 3674 } 3675 } 3676 3677 .chat-close-btn { 3678 background: none; 3679 border: none; 3680 color: white; 3681 font-size: 28px; 3682 line-height: 1; 3683 cursor: pointer; 3684 padding: 0; 3685 width: 30px; 3686 height: 30px; 3687 } 3688 3689 .chat-popup-body { 3690 flex: 1 1 auto; 3691 display: flex; 3692 flex-direction: column; 3693 min-height: 0; 3694 overflow: hidden; 3695 height: calc(100% - 64px); 3696 position: relative; 3697 transition: padding-top 0.3s ease; 3698 } 3699 3700 /* Add padding when info bar is visible */ 3701 .chat-popup-body.has-info-bar { 3702 padding-top: 40px; 3703 } 3704 3705 .chat-view { 3706 flex: 1 1 auto; 3707 display: none; 3708 flex-direction: column; 3709 min-height: 0; 3710 overflow: hidden; 3711 } 3712 3713 #chat-list-view { 3714 display: flex; 3715 } 3716 3717 #chat-messages-view { 3718 display: none; 3719 } 3720 3721 #chat-messages-view.active { 3722 display: flex; 3723 flex-direction: column; 3724 } 3725 3726 #chat-new-view { 3727 display: none; 3728 } 3729 3730 #chat-new-view.active { 3731 display: flex; 3732 } 3733 3734 .chat-conversations-list { 3735 flex: 1; 3736 overflow-y: auto; 3737 padding: 0; 3738 background: white; 3739 } 3740 3741 /* Custom Scrollbar for Conversations List */ 3742 .chat-conversations-list::-webkit-scrollbar {
3743 width: 6px; 3744 } 3745 3746 .chat-conversations-list::-webkit-scrollbar-track { 3747 background: #f1f1f1; 3748 } 3749 3750 .chat-conversations-list::-webkit-scrollbar-thumb { 3751 background: #1af21a; 3752 border-radius: 3px; 3753 } 3754 3755 .chat-conversations-list::-webkit-scrollbar-thumb:hover { 3756 background: #33d909; 3757 } 3758 3759 /* Firefox */ 3760 .chat-conversations-list { 3761 scrollbar-width: thin; 3762 scrollbar-color: #50f21a #f1f1f1; 3763 } 3764 3765 .chat-conversation-item { 3766 padding: 12px 16px; 3767 cursor: pointer; 3768 display: flex; 3769 gap: 12px; 3770 align-items: flex-start; 3771 transition: background 0.15s ease; 3772 color: #33371f; 3773 border-bottom: 1px solid #f0f0f0; 3774 } 3775 3776 .chat-conversation-item:hover { 3777 background: #f5f5f5; 3778 } 3779 3780 .chat-conversation-item.active { 3781 background: #FFF5EB; 3782 } 3783 3784 /* WhatsApp-like Avatar */ 3785 .conversation-avatar { 3786 width: 48px; 3787 height: 48px; 3788 border-radius: 50%; 3789 background: linear-gradient(135deg, #1af22c 0%, #0cd909 100%); 3790 flex-shrink: 0; 3791 display: flex; 3792 align-items: center; 3793 justify-content: center; 3794 color: white; 3795 font-weight: 600; 3796 font-size: 18px; 3797 } 3798 3799 .conversation-avatar svg { 3800 width: 24px; 3801 height: 24px; 3802 } 3803 3804 /* WhatsApp-like Content */ 3805 .conversation-content { 3806 flex: 1; 3807 min-width: 0; 3808 display: flex; 3809 flex-direction: column; 3810 gap: 4px; 3811 } 3812 3813 .conversation-header { 3814 display: flex; 3815 justify-content: space-between; 3816 align-items: center; 3817 gap: 8px; 3818 } 3819 3820 .conversation-name { 3821 font-weight: 600; 3822 font-size: 15px; 3823 color: #111; 3824 white-space: nowrap; 3825 overflow: hidden; 3826 text-overflow: ellipsis; 3827 } 3828 3829 .conversation-time { 3830 font-size: 12px; 3831 color: #7d8166; 3832 flex-shrink: 0; 3833 } 3834 3835 .conversation-preview { 3836 display: flex; 3837 justify-content: space-between; 3838 align-items: center; 3839 gap: 8px; 3840 } 3841 3842 .conversation-message { 3843 font-size: 14px; 3844 color: #667781; 3845 white-space: nowrap; 3846 overflow: hidden; 3847 text-overflow: ellipsis; 3848 margin: 0; 3849 flex: 1; 3850 } 3851 3852 .conversation-unread { 3853 background: #25D366; 3854 color: white; 3855 border-radius: 12px; 3856 padding: 2px 8px; 3857 font-size: 12px; 3858 font-weight: 600; 3859 min-width: 20px; 3860 text-align: center; 3861 flex-shrink: 0; 3862 } 3863 3864 /* Active item styling */ 3865 .chat-conversation-item.active .conversation-name { 3866 color: #1af22c; 3867 } 3868 3869 .chat-conversation-item.active .conversation-time { 3870 color: #1af22c; 3871 } 3872 3873 .chat-new-btn { 3874 margin: 12px; 3875 padding: 12px; 3876 background: linear-gradient(135deg, #1af22c 0%, #0cd909 100%); 3877 color: white; 3878 border: none; 3879 border-radius: 8px; 3880 cursor: pointer; 3881 font-weight: 500; 3882 font-size: 14px; 3883 display: flex; 3884 align-items: center; 3885 justify-content: center; 3886 gap: 8px; 3887 transition: all 0.2s; 3888 flex-shrink: 0; 3889 } 3890 3891 .chat-new-btn:hover { 3892 transform: translateY(-1px); 3893 box-shadow: 0 4px 8px rgba(242, 140, 26, 0.3); 3894 } 3895 3896 .chat-conversation-title { 3897 flex: 1; 3898 font-weight: 600; 3899 font-size: 16px; 3900 color: #1f2937; 3901 } 3902 3903 .chat-messages-container { 3904 flex: 1; 3905 overflow-y: auto; 3906 padding: 16px; 3907 display: flex; 3908 flex-direction: column; 3909 gap: 8px; 3910 min-height: 0; 3911 background: #E5DDD5; 3912 } 3913 3914 /* Custom Scrollbar for Messages Container */ 3915 .chat-messages-container::-webkit-scrollbar {
3916 width: 6px; 3917 } 3918 3919 .chat-messages-container::-webkit-scrollbar-track { 3920 background: rgba(0, 0, 0, 0.05); 3921 } 3922 3923 .chat-messages-container::-webkit-scrollbar-thumb { 3924 background: rgba(51, 242, 26, 0.6); 3925 border-radius: 3px; 3926 } 3927 3928 .chat-messages-container::-webkit-scrollbar-thumb:hover { 3929 background: #1af22c; 3930 } 3931 3932 /* Firefox */ 3933 .chat-messages-container { 3934 scrollbar-width: thin; 3935 scrollbar-color: rgba(26, 242, 73, 0.6) rrgba(0, 0, 0, 0.05) 3936 } 3937 3938 /* WhatsApp Group-like Messages */ 3939 .chat-message { 3940 display: flex; 3941 margin-bottom: 4px; 3942 animation: fadeIn 0.2s ease; 3943 } 3944 3945 @keyframes fadeIn { 3946 from { opacity: 0; transform: translateY(10px); } 3947 to { opacity: 1; transform: translateY(0); } 3948 } 3949 3950 .chat-message.mine { 3951 justify-content: flex-end; 3952 } 3953 3954 .chat-message-bubble { 3955 max-width: 80%; 3956 padding: 6px 8px 8px 10px; 3957 border-radius: 8px; 3958 position: relative; 3959 box-shadow: 0 1px 0.5px rgba(0,0,0,0.13); 3960 } 3961 3962 /* Bubble from others (Admin/CS) */ 3963 .chat-message:not(.mine) .chat-message-bubble { 3964 background: #FFFFFF; 3965 border-radius: 0 8px 8px 8px; 3966 } 3967 3968 /* Bubble tail for others */ 3969 .chat-message:not(.mine) .chat-message-bubble::before { 3970 content: ''; 3971 position: absolute; 3972 top: 0; 3973 left: -8px; 3974 width: 0; 3975 height: 0; 3976 border-style: solid; 3977 border-width: 0 8px 13px 0; 3978 border-color: transparent #FFFFFF transparent transparent; 3979 } 3980 3981 /* Bubble from user (mine) */ 3982 .chat-message.mine .chat-message-bubble { 3983 background: #e4f5d0; /* Light blue for user messages */ 3984 border-radius: 8px 0 8px 8px; 3985 } 3986 3987 /* Bubble tail for mine */ 3988 .chat-message.mine .chat-message-bubble::before { 3989 content: ''; 3990 position: absolute; 3991 top: 0; 3992 right: -8px; 3993 width: 0; 3994 height: 0; 3995 border-style: solid; 3996 border-width: 0 0 13px 8px; 3997 border-color: transparent transparent transparent #eaf5d0; 3998 } 3999 4000 .message-sender { 4001 font-size: 12.5px; 4002 font-weight: 600; 4003 color: #1af22c !important; 4004 margin-bottom: 4px; 4005 } 4006 4007 .chat-message.mine .message-sender { 4008 display: none; 4009 } 4010 4011 /* Message text */ 4012 .message-text { 4013 font-size: 14px; 4014 line-height: 19px; 4015 color: #000000 !important; 4016 word-wrap: break-word; 4017 white-space: pre-wrap; 4018 margin-bottom: 4px; 4019 } 4020 4021 /* Message metadata (time + status) */ 4022 .message-meta { 4023 display: flex; 4024 align-items: center; 4025 justify-content: flex-end; 4026 gap: 4px; 4027 margin-top: 2px; 4028 } 4029 4030 .message-time { 4031 font-size: 11px; 4032 color: #728166 !important; 4033 line-height: 15px; 4034 } 4035 4036 /* Use multiple selectors to override global styles */ 4037 .chat-message-bubble .message-status, 4038 .message-meta .message-status, 4039 .chat-message .message-status { 4040 width: 16px !important; 4041 height: 16px !important; 4042 min-width: 16px !important; 4043 min-height: 16px !important; 4044 max-width: 16px !important; 4045 max-height: 16px !important; 4046 flex-shrink: 0; 4047 color: #728166 !important; 4048 fill: currentColor !important; 4049 } 4050 4051 .chat-message:not(.mine) .message-status { 4052 display: none; 4053 } 4054 4055 /* Loading dots animation */ 4056 @keyframes loadingDots { 4057 0%, 20% { content: '.'; } 4058 40% { content: '..'; } 4059 60%, 100% { content: '...'; } 4060 } 4061 4062 .message-status.loading::after { 4063 content: '...'; 4064 animation: loadingDots 1.5s infinite; 4065 font-size: 16px; 4066 line-height: 16px; 4067 } 4068 4069 .message-status.loading path { 4070 display: none; 4071 } 4072 4073 .message-status.failed { 4074 color: #5eef44 !important; 4075 cursor: pointer; 4076 } 4077 4078 .message-status.sent { 4079 color: #667781 !important; 4080 } 4081 4082 .chat-new-form { 4083 flex: 1; 4084 overflow-y: auto; 4085 padding: 16px; 4086 display: flex; 4087 flex-direction: column; 4088 } 4089 4090 .chat-new-form form { 4091 display: flex; 4092 flex-direction: column; 4093 gap: 16px; 4094 flex: 1; 4095 } 4096 4097 .chat-new-form .form-group { 4098 display: flex; 4099 flex-direction: column; 4100 gap: 6px; 4101 } 4102 4103 .chat-new-form label { 4104 font-size: 14px; 4105 font-weight: 500; 4106 color: #374151; 4107 } 4108 4109 .chat-new-form .form-control { 4110 width: 100%; 4111 padding: 10px 12px; 4112 border: 1px solid #d1d5db; 4113 border-radius: 8px; 4114 font-size: 14px; 4115 font-family: inherit; 4116 transition: border-color 0.2s; 4117 box-sizing: border-box; 4118 } 4119 4120 .chat-new-form .form-control:focus { 4121 outline: none; 4122 border-color: #1af22c; 4123 box-shadow: 0 0 0 3px rgba(242, 140, 26, 0.1); 4124 } 4125 4126 .chat-new-form textarea.form-control { 4127 resize: vertical; 4128 min-height: 100px; 4129 } 4130 4131 .chat-new-form .btn { 4132 padding: 12px 20px; 4133 border: none; 4134 border-radius: 8px; 4135 font-size: 15px; 4136 font-weight: 500; 4137 cursor: pointer; 4138 transition: all 0.2s; 4139 text-align: center; 4140 } 4141 4142 .chat-new-form .btn-primary { 4143 background: linear-gradient(135deg, #1af22c 0%, #0cd909 100%); 4144 color: white; 4145 } 4146 4147 .chat-new-form .btn-primary:hover { 4148 transform: translateY(-1px); 4149 box-shadow: 0 4px 8px rgba(66, 242, 26, 0.3); 4150 } 4151 4152 .chat-new-form .btn-primary:active { 4153 transform: scale(0.98); 4154 } 4155 4156 .chat-new-form .btn-block { 4157 width: 100%; 4158 margin-top: auto; 4159 } 4160 4161 .chat-message-form { 4162 padding: 12px; 4163 border-top: 1px solid #e5e7eb; 4164 display: flex; 4165 flex-wrap: wrap; 4166 gap: 8px; 4167 align-items: flex-end; 4168 flex-shrink: 0; 4169 background: white; 4170 } 4171 4172 .chat-product-card { 4173 flex: 1 1 100%; 4174 max-width: 100%; 4175 display: flex; 4176 gap: 12px; 4177 padding: 12px; 4178 background: #f3f4f6; 4179 border-radius: 8px; 4180 margin-bottom: 4px; 4181 border: 1px solid #e5e7eb; 4182 } 4183 4184 .chat-product-card img { 4185 width: 60px; 4186 height: 60px; 4187 object-fit: cover; 4188 border-radius: 6px; 4189 flex-shrink: 0; 4190 } 4191 4192 .chat-product-card-content { 4193 flex: 1; 4194 min-width: 0; 4195 } 4196 4197 .chat-product-card-name { 4198 font-weight: 500; 4199 font-size: 14px; 4200 color: #1f2937; 4201 margin-bottom: 4px; 4202 white-space: nowrap; 4203 overflow: hidden; 4204 text-overflow: ellipsis; 4205 } 4206 4207 .chat-product-card-variant { 4208 font-size: 12px; 4209 color: #74806b; 4210 margin-bottom: 4px; 4211 } 4212 4213 .chat-product-card-price { 4214 font-size: 13px; 4215 color: #8bea66; 4216 font-weight: 600; 4217 } 4218 4219 .chat-product-card-remove { 4220 align-self: flex-start; 4221 background: none; 4222 border: none; 4223 color: #9ca3af; 4224 cursor: pointer; 4225 padding: 4px; 4226 font-size: 18px; 4227 line-height: 1; 4228 transition: color 0.2s; 4229 } 4230 4231 .chat-product-card-remove:hover { 4232 color: #5eef44; 4233 } 4234 4235 /* Product card in messages (read-only display) */ 4236 .message-product-card { 4237 display: flex; 4238 gap: 10px; 4239 padding: 10px; 4240 background: rgba(255, 255, 255, 0.5); 4241 border-radius: 8px; 4242 margin-bottom: 6px; 4243 border: 1px solid rgba(0, 0, 0, 0.08); 4244 align-items: center; 4245 } 4246 4247 .chat-message.mine .message-product-card { 4248 background: rgba(255, 255, 255, 0.7); 4249 } 4250 4251 .message-product-card img { 4252 width: 50px; 4253 height: 50px; 4254 object-fit: cover; 4255 border-radius: 6px; 4256 flex-shrink: 0; 4257 } 4258 4259 .message-product-info { 4260 flex: 1; 4261 min-width: 0; 4262 } 4263 4264 .message-product-name { 4265 font-weight: 500; 4266 font-size: 13px; 4267 color: #33371f; 4268 margin-bottom: 2px; 4269 overflow: hidden; 4270 text-overflow: ellipsis; 4271 display: -webkit-box; 4272 -webkit-line-clamp: 2; 4273 -webkit-box-orient: vertical; 4274 line-height: 1.3; 4275 } 4276 4277 .message-product-variant { 4278 font-size: 11px; 4279 color: #78806b; 4280 margin-bottom: 2px; 4281 } 4282 4283 .message-product-price { 4284 font-size: 12px; 4285 color: #c7ea66; 4286 font-weight: 600; 4287 } 4288 4289 .message-product-link { 4290 flex-shrink: 0; 4291 width: 32px; 4292 height: 32px; 4293 display: flex; 4294 align-items: center; 4295 justify-content: center; 4296 background: rgba(102, 126, 234, 0.1); 4297 border-radius: 6px; 4298 color: #c7ea66; 4299 text-decoration: none; 4300 transition: all 0.2s; 4301 } 4302 4303 .message-product-link:hover { 4304 background: #b7ea66; 4305 color: white; 4306 } 4307 4308 .message-product-link svg { 4309 width: 16px; 4310 height: 16px; 4311 } 4312 4313 .chat-message-input { 4314 flex: 1; 4315 border: 1px solid #d1d5db; 4316 border-radius: 20px; 4317 padding: 10px 16px; 4318 resize: none; 4319 max-height: 100px; 4320 font-family: inherit; 4321 font-size: 14px; 4322 line-height: 1.5; 4323 box-sizing: border-box; 4324 overflow-y: hidden; 4325 } 4326 4327 .chat-message-input:focus { 4328 outline: none; 4329 border-color: #1af22c; 4330 box-shadow: 0 0 0 3px rgba(33, 242, 26, 0.1); 4331 } 4332 4333 .chat-send-btn { 4334 width: 40px; 4335 height: 40px; 4336 border-radius: 50%; 4337 background: linear-gradient(135deg, #1af22c 0%, #0cd909 100%); 4338 border: none; 4339 color: white; 4340 cursor: pointer; 4341 flex-shrink: 0; 4342 display: flex; 4343 align-items: center; 4344 justify-content: center; 4345 transition: all 0.2s; 4346 } 4347 4348 .chat-send-btn:hover { 4349 transform: scale(1.05); 4350 box-shadow: 0 2px 8px rgba(44, 242, 26, 0.3); 4351 } 4352 4353 .chat-send-btn:active { 4354 transform: scale(0.95); 4355 } 4356 4357 .chat-loading { 4358 text-align: center; 4359 padding: 20px; 4360 color: #6b7280; 4361 } 4362 4363 /* Date Separator (WhatsApp-style) */ 4364 .date-separator { 4365 display: flex; 4366 align-items: center; 4367 gap: 12px; 4368 margin: 24px 0 16px; 4369 opacity: 0; 4370 animation: fadeInSeparator 0.3s ease forwards; 4371 } 4372 4373 @keyframes fadeInSeparator { 4374 from { 4375 opacity: 0; 4376 transform: translateY(-10px); 4377 } 4378 to { 4379 opacity: 1; 4380 transform: translateY(0); 4381 } 4382 } 4383 4384 .date-separator-line { 4385 flex: 1; 4386 height: 1px; 4387 background: linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.1) 50%, transparent); 4388 } 4389 4390 .date-separator-text { 4391 flex-shrink: 0; 4392 padding: 4px 12px; 4393 background: #e9ecef; 4394 color: #6c757d; 4395 font-size: 11px; 4396 font-weight: 600; 4397 text-transform: uppercase; 4398 letter-spacing: 0.5px; 4399 border-radius: 12px; 4400 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); 4401 } 4402 4403 /* Mobile responsive */ 4404 @media (max-width: 640px) { 4405 .chat-popup { 4406 position: fixed !important; /* Override absolute positioning */ 4407 bottom: 45px !important; /* Above bottom nav */ 4408 right: 0 !important; 4409 left: 0 !important; 4410 width: 100% !important; 4411 max-width: 100% !important; 4412 /* Use dvh (dynamic viewport height) for browser UI awareness */ 4413 height: calc(100dvh - 45px) !important; 4414 max-height: calc(100dvh - 45px) !important; 4415 /* Fallback for browsers that don't support dvh */ 4416 height: calc(var(--viewport-height, 100vh) - 45px) !important; 4417 max-height: calc(var(--viewport-height, 100vh) - 45px) !important; 4418 border-radius: 0 !important; 4419 z-index: 9999 !important; 4420 } 4421 4422 .chat-popup-header { 4423 border-radius: 0; 4424 } 4425 4426
4426 .chat-messages-container, 4427 .chat-conversations-list { 4428 /* Adjust for mobile keyboard using dynamic viewport */ 4429 max-height: calc(100dvh - 190px); 4430 /* Fallback for browsers that don't support dvh */ 4431 max-height: calc(var(--viewport-height, 100vh) - 190px); 4432 } 4433 } 4434 </style> 4435 <!-- Chat Widget Button --> 4436 <div id="chat-widget" class="chat-widget" 4437 data-user-id="" 4438 data-is-logged-in="false" 4439 data-csrf-token="df5d776748b1ed8c8dd0d987bae99b1ee3dea6c6dcbe0eedb1bea766c56d569a"> 4440 <button id="chat-toggle-btn" class="chat-toggle-btn" aria-label="Toggle chat"> 4441 <svg class="chat-icon" width="28" height="28" viewBox="0 0 640 640" fill="currentColor"> 4442 <path d="M320 128C241 128 175.3 185.3 162.3 260.7C171.6 257.7 181.6 256 192 256L208 256C234.5 256 256 277.5 256 304L256 400C256 426.5 234.5 448 208 448L192 448C139 448 96 405 96 352L96 288C96 164.3 196.3 64 320 64C443.7 64 544 164.3 544 288L544 456.1C544 522.4 490.2 576.1 423.9 576.1L336 576L304 576C277.5 576 256 554.5 256 528C256 501.5 277.5 480 304 480L336 480C362.5 480 384 501.5 384 528L384 528L424 528C463.8 528 496 495.8 496 456L496 435.1C481.9 443.3 465.5 447.9 448 447.9L432 447.9C405.5 447.9 384 426.4 384 399.9L384 303.9C384 277.4 405.5 255.9 432 255.9L448 255.9C458.4 255.9 468.3 257.5 477.7 260.6C464.7 185.3 399.1 127.9 320 127.9z"/> 4443 </svg> 4444 <span id="chat-unread-badge" class="chat-unread-badge" style="display: none;">0</span> 4445 </button> 4446 4447 <div id="chat-popup" class="chat-popup" style="display: none;"> 4448 <div class="chat-popup-header"> 4449 <div class="chat-header-title"> 4450 <h3>Bantuan</h3> 4451 <span id="chatOperatingHours" class="chat-operating-hours" style="display: none;"></span> 4452 </div> 4453 <div class="chat-header-actions"> 4454 <button id="chatNotifToggle" class="btn-notif-toggle" data-status="not-supported" title="Push notification" style="display: none;"> 4455 <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"> 4456 <path d="M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2z"/> 4457 </svg> 4458 </button> 4459 <button id="chat-close-btn" class="chat-close-btn" aria-label="Close chat">Ã</button> 4460 </div> 4461 </div> 4462 4463 <!-- Notification Info Bar (conditional) --> 4464 <div class="chat-notif-info-bar" id="chatNotifInfoBar" style="display:none;"> 4465 <svg width="14" height="14" viewBox="0 0 24 24" fill="#ffc107"> 4466 <path d="M9 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H9v1zm3-19C8.14 2 5 5.14 5 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.86-3.14-7-7-7zm2.85 11.1l-.85.6V16h-4v-2.3l-.85-.6C7.8 12.16 7 10.63 7 9c0-2.76 2.24-5 5-5s5 2.24 5 5c0 1.63-.8 3.16-2.15 4.1z"/> 4467 </svg> 4468 <span class="small">Aktifkan notifikasi untuk pemberitahuan balasan</span> 4469 <button class="btn-dismiss" onclick="ChatNotification.dismissInfo()">â</button> 4470 </div> 4471 4472 <div class="chat-popup-body"> 4473 <!-- Conversations List View --> 4474 <div id="chat-list-view" class="chat-view"> 4475 <div id="chat-conversations-list" class="chat-conversations-list"> 4476 <div class="chat-loading">Memuat...</div> 4477 <!-- Conversation Item Structure (rendered by JS): 4478 <div class="chat-conversation-item"> 4479 <div class="conversation-avatar"> 4480 <svg>...</svg> 4481 </div> 4482 <div class="conversation-content"> 4483 <div class="conversation-header">
4484 <span class="conversation-name">Admin Support</span> 4485 <span class="conversation-time">10:30</span> 4486 </div> 4487 <div class="conversation-preview"> 4488 <p class="conversation-message">Terima kasih telah menghubungi kami...</p> 4489 <span class="conversation-unread">2</span> 4490 </div> 4491 </div> 4492 </div> 4493 --> 4494 </div> 4495 <button id="chat-new-btn" class="chat-new-btn"> 4496 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 4497 <line x1="12" y1="5" x2="12" y2="19"></line> 4498 <line x1="5" y1="12" x2="19" y2="12"></line> 4499 </svg> 4500 Percakapan Baru 4501 </button> 4502 </div> 4503 4504 <!-- Chat Messages View --> 4505 <div id="chat-messages-view" class="chat-view" style="display: none;"> 4506 <div id="chat-messages-container" class="chat-messages-container"> 4507 <div class="chat-loading">Memuat pesan...</div> 4508 <!-- Message Structure (rendered by JS): 4509 <div class="chat-message"> (or .chat-message.mine) 4510 <div class="chat-message-bubble"> 4511 <div class="message-sender">Admin Support</div> (only for non-mine) 4512 <div class="message-text">Halo, ada yang bisa dibantu?</div> 4513 <div class="message-meta"> 4514 <span class="message-time">10:30</span> 4515 <svg class="message-status">...</svg> (only for mine) 4516 </div> 4517 </div> 4518 </div> 4519 --> 4520 </div> 4521 4522 <form id="chat-message-form" class="chat-message-form"> 4523 <input type="hidden" id="chat-current-conversation-id" value=""> 4524 <textarea 4525 id="chat-message-input" 4526 class="chat-message-input" 4527 placeholder="Ketik pesan..." 4528 rows="1" 4529 maxlength="5000" 4530 ></textarea> 4531 <button type="submit" class="chat-send-btn" aria-label="Send message"> 4532 <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 4533 <line x1="22" y1="2" x2="11" y2="13"></line> 4534 <polygon points="22 2 15 22 11 13 2 9 22 2"></polygon> 4535 </svg> 4536 </button> 4537 </form> 4538 </div> 4539 4540 <!-- New Chat View --> 4541 <div id="chat-new-view" class="chat-view" style="display: none;"> 4542 <div class="chat-messages-header"> 4543 <button id="chat-new-back-btn" class="chat-back-btn" aria-label="Back to list"> 4544 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 4545 <path d="M19 12H5M12 19l-7-7 7-7"/> 4546 </svg> 4547 </button> 4548 <div class="chat-conversation-title">Percakapan Baru</div> 4549 </div> 4550 4551 <div class="chat-new-form"> 4552 <form id="chat-start-form"> 4553 <div class="form-group"> 4554 <label for="chat-new-subject">Subjek</label> 4555 <input 4556 type="text" 4557 id="chat-new-subject" 4558 class="form-control" 4559 placeholder="Bantuan Pelanggan" 4560 maxlength="255" 4561 > 4562 </div> 4563 <div class="form-group"> 4564 <label for="chat-new-message">Pesan</label> 4565 <textarea 4566 id="chat-new-message" 4567 class="form-control" 4568 rows="4" 4569 placeholder="Tulis pertanyaan Anda..." 4570 required 4571 maxlength="5000" 4572 ></textarea> 4573 </div> 4574 <button type="submit" class="btn btn-primary btn-block">Kirim</button> 4575 </form> 4576 </div> 4577 </div> 4578 </div> 4579 </div> 4580 </div> 4581 4582 <!-- Login Required Modal --> 4583 <div class="modal-overlay" id="chatLoginModal"> 4584 <div class="modal-dialog"> 4585 <div class="modal-header"> 4586 <h3 class="modal-title"> 4587 <div class="modal-icon info"> 4588 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 4589 <path d="M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z"/> 4590 </svg> 4591 </div> 4592 Login Diperlukan 4593 </h3> 4594 </div> 4595 <div class="modal-body"> 4596 <p class="modal-message">
4596Anda harus login terlebih dahulu untuk menggunakan fitur chat bantuan pelanggan.</p> 4597 <div class="modal-actions"> 4598 <button class="modal-btn modal-btn-secondary" id="chatLoginCancel">Batal</button> 4599 <button class="modal-btn modal-btn-primary" id="chatLoginConfirm">Login Sekarang</button> 4600 </div> 4601 </div> 4602 </div> 4603 </div> 4604
4604<script src="https://plazait.b-cdn.net/assets/js/chat-widget.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
4604<script src="https://plazait.b-cdn.net/assets/js/chat-notification.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
4604 4605 <!-- Footer Collapse Toggle Script --> 4606
4606<script nonce="se3iyzEHMc9FQEB4wSyd0w=="> 4607 document.addEventListener('DOMContentLoaded', function() { 4608 const ftTop = document.getElementById('ftTop'); 4609 const expandBtn = document.getElementById('ftExpandBtn'); 4610 4611 if (ftTop && expandBtn) { 4612 const expandText = expandBtn.querySelector('.expand-text'); 4613 4614 expandBtn.addEventListener('click', function() { 4615 ftTop.classList.toggle('expanded'); 4616 const isExpanded = ftTop.classList.contains('expanded'); 4617 if (expandText) { 4618 expandText.textContent = isExpanded ? 'Sembunyikan' : 'Selengkapnya'; 4619 } 4620 }); 4621 } 4622 }); 4623 </script>
4623 4624 </footer> 4625 4626<!-- Compare Sidebar Overlay --> 4627<div class="compare-overlay" id="compareOverlay"></div> 4628 4629<!-- Floating Compare Badge (Sticky) --> 4630<button class="compare-floating-badge" id="compareFloatingBadge" aria-label="Lihat produk yang dibandingkan" style="display:none;"> 4631 <svg class="cfb-icon" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> 4632 <path d="M9.01 14H2v2h7.01v3L13 15l-3.99-4v3zm5.98-1v-3H22V8h-7.01V5L11 9l3.99 4z"/> 4633 </svg> 4634 <span class="cfb-text">Bandingkan</span> 4635 <span class="cfb-count" id="cfbCount">0</span> 4636</button> 4637 4638<!-- AI Comparison Modal --> 4639<div class="ai-compare-modal" id="aiCompareModal"> 4640 <div class="modal-backdrop"></div> 4641 <div class="modal-container"> 4642 <div class="modal-header"> 4643 <h3 class="modal-title"> 4644 <svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor"> 4645 <path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M11,16.5L18,9.5L16.59,8.09L11,13.67L7.91,10.59L6.5,12L11,16.5Z"/> 4646 </svg> 4647 Analisis AI: Perbandingan Produk 4648 </h3> 4649 <button class="modal-close" id="aiCompareModalClose" aria-label="Tutup"> 4650 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 4651 <path d="M18.3 5.7a1 1 0 0 0-1.4 0L12 10.6 7.1 5.7a1 1 0 1 0-1.4 1.4L10.6 12l-4.9 4.9a1 1 0 0 0 1.4 1.4L12 13.4l4.9 4.9a1 1 0 0 0 1.4-1.4L13.4 12l4.9-4.9a1 1 0 0 0 0-1.4z"/> 4652 </svg> 4653 </button> 4654 </div> 4655 4656 <div class="modal-content"> 4657 <!-- Loading State --> 4658 <div class="ai-loading" id="aiLoading"> 4659 <div class="loading-animation"> 4660 <div class="typing-indicator"> 4661 <span></span> 4662 <span></span> 4663 <span></span> 4664 </div> 4665 <p>AI sedang menganalisis produk...</p> 4666 <small>Proses ini membutuhkan waktu 10-30 detik</small> 4667 </div> 4668 </div> 4669 4670 <!-- Error State --> 4671 <div class="ai-error" id="aiError" hidden> 4672 <div class="error-icon"> 4673 <svg width="48" height="48" viewBox="0 0 24 24" fill="#5eef44"> 4674 <path d="M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z"/> 4675 </svg> 4676 </div> 4677 <h4>Analisis AI Gagal</h4> 4678 <p id="aiErrorMessage">Terjadi kesalahan saat memproses analisis.</p> 4679 <button class="btn btn-outline-primary" id="aiRetry">Coba Lagi</button> 4680 </div> 4681 4682 <!-- Analysis Results --> 4683 <div class="ai-results" id="aiResults" hidden> 4684 <!-- Summary Section --> 4685 <div class="ai-summary-card"> 4686 <h4> 4687 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 4688 <path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,16.5L6.5,12L7.91,10.59L11,13.67L16.59,8.09L18,9.5L11,16.5Z"/> 4689 </svg> 4690 Ringkasan Analisis 4691 </h4> 4692 <p id="aiSummary" class="summary-text"></p> 4693 <div class="winner-badge" id="winnerBadge"> 4694 <strong>Rekomendasi Terbaik:</strong> <span id="winnerProduct"></span> 4695 <small id="winnerReason"></small> 4696 </div> 4697 </div> 4698 4699 <!-- Comparison Table --> 4700 <div class="ai-comparison-table"> 4701 <h4> 4702 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 4703 <path d="M3,3H21V5H3V3M3,7H21V9H3V7M3,11H21V13H3V11M3,15H21V17H3V15M3,19H21V21H3V19Z"/> 4704 </svg> 4705 Perbandingan Detail 4706 </h4> 4707 <div id="comparisonTable" class="comparison-grid"></div> 4708 </div> 4709 4710 <!-- Detailed Analysis --> 4711 <div class="ai-detailed-analysis"> 4712 <h4> 4713 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 4714 <path d="M14,2A8,8 0 0,1 22,10A8,8 0 0,1 14,18A8,8 0 0,1 6,10A8,8 0 0,1 14,2M14,4A6,6 0 0,0 8,10A6,6 0 0,0 14,16A6,6 0 0,0 20,10A6,6 0 0,0 14,4M14,6A4,4 0 0,1 18,10A4,4 0 0,1 14,14A4,4 0 0,1 10,10A4,4 0 0,1 14,6M14,8A2,2 0 0,0 12,10A2,2 0 0,0 14,12A2,2 0 0,0 16,10A2,2 0 0,0 14,8Z"/> 4715 </svg> 4716 Analisis Mendalam 4717 </h4> 4718 <div id="detailedAnalysis" class="products-analysis"></div> 4719 </div> 4720 4721 <!-- Recommendations --> 4722 <div class="ai-recommendations"> 4723 <h4> 4724 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 4725 <path d="M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z"/> 4726 </svg> 4727 Rekomendasi Berdasarkan Kebutuhan 4728 </h4> 4729 <div class="recommendations-grid"> 4730 <div class="recommendation-card"> 4731 <h5>ð° Budget Conscious</h5> 4732 <p id="budgetRecommendation"></p> 4733 </div> 4734 <div class="recommendation-card"> 4735 <h5>â¡ Performance Focused</h5> 4736 <p id="performanceRecommendation"></p> 4737 </div> 4738 <div class="recommendation-card"> 4739 <h5>âï¸ Balanced Choice</h5> 4740 <p id="balancedRecommendation"></p> 4741 </div> 4742 </div> 4743 </div> 4744 4745 <!-- Buying Tips --> 4746 <div class="ai-tips"> 4747 <h4> 4748 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 4749 <path d="M11,18H13V16H11V18M12,6A4,4 0 0,0 8,10H10A2,2 0 0,1 12,8A2,2 0 0,1 14,10C14,12 11,11.75 11,15H13C13,12.75 16,12.5 16,10A4,4 0 0,0 12,6
4749M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z"/> 4750 </svg> 4751 Tips Pembelian 4752 </h4> 4753 <ul id="buyingTips" class="tips-list"></ul> 4754 </div> 4755 </div> 4756 </div> 4757 </div> 4758</div> 4759 4760<!-- Cart Login Modal --> 4761<div class="modal-overlay" id="cartLoginModal"> 4762 <div class="modal-dialog"> 4763 <div class="modal-header"> 4764 <h3 class="modal-title"> 4765 <div class="modal-icon info"> 4766 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 4767 <path d="M17,18A2,2 0 0,1 19,20A2,2 0 0,1 17,22C15.89,22 15,21.1 15,20C15,18.89 15.89,18 17,18M1,2H4.27L5.21,4H20A1,1 0 0,1 21,5C21,5.17 20.95,5.34 20.88,5.5L17.3,11.97C16.96,12.58 16.3,13 15.55,13H8.1L7.2,14.63L7.17,14.75A0.25,0.25 0 0,0 7.42,15H19V17H7C5.89,17 5,16.1 5,15C5,14.65 5.09,14.32 5.24,14.04L6.6,11.59L3,4H1V2M7,18A2,2 0 0,1 9,20A2,2 0 0,1 7,22C5.89,22 5,21.1 5,20C5,18.89 5.89,18 7,18M16,11L18.78,6H6.14L8.5,11H16Z"/> 4768 </svg> 4769 </div> 4770 Login untuk Melanjutkan 4771 </h3> 4772 </div> 4773 <div class="modal-body"> 4774 <p class="modal-message" style="margin-bottom: 16px;">Silakan login atau daftar untuk mengakses keranjang belanja dan menyelesaikan pesanan Anda.</p> 4775 <div style="background: #f8fafc; border-radius: 8px; padding: 12px; margin-bottom: 20px;"> 4776 <p style="font-size: 14px; color: #646947; margin: 0; line-height: 1.6;"> 4777 <strong style="color: #2a2a0f;">Keuntungan dengan akun:</strong><br> 4778 â Simpan keranjang belanja Anda<br> 4779 â Lacak status pesanan secara real-time<br> 4780 â Checkout lebih cepat dengan data tersimpan<br> 4781 â Dapatkan notifikasi promo & diskon eksklusif 4782 </p> 4783 </div> 4784 <div class="modal-actions"> 4785 <button class="modal-btn modal-btn-secondary" id="cartLoginCancel">Batal</button> 4786 <button class="modal-btn modal-btn-primary" id="cartLoginConfirm" style="background: #ff6b35; border-color: #ff6b35;">Login</button> 4787 <button class="modal-btn modal-btn-primary" id="cartRegisterBtn" style="background: #f7931e; border-color: #f7931e;">Daftar</button> 4788 </div> 4789 </div> 4790 </div> 4791</div> 4792 4793
4794<script src="https://plazait.b-cdn.net/assets/js/app.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 1 bytes, line 4794
4794
4795<script src="https://plazait.b-cdn.net/assets/js/site-notice.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 1 bytes, line 4795
4795
4796<script src="https://plazait.b-cdn.net/assets/js/guest-cart.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 1 bytes, line 4796
4796
4797<script src="https://plazait.b-cdn.net/assets/js/cart.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 1 bytes, line 4797
4797
4798<script defer src="https://plazait.b-cdn.net/assets/js/mega-menu-tiles.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
4798 4799
4799<script src="https://plazait.b-cdn.net/assets/js/benchmark.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
4799 4800
4800<script src="https://plazait.b-cdn.net/assets/js/product-compare.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 1 bytes, line 4800
4800
4801<script src="https://plazait.b-cdn.net/assets/js/product-card-actions.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
4801 4802
4802<script src="https://plazait.b-cdn.net/assets/js/product-reviews.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
4802 4803
4803<script src="https://plazait.b-cdn.net/assets/js/review-submission.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
4803 4804<style> 4805.subzero-gacor-fixed-footer{ 4806 position:fixed; 4807 left:0; right:0; bottom:0; 4808 z-index:999; 4809 4810 display:flex; 4811 align-items:center; 4812 justify-content:space-around; 4813 gap:8px; 4814 4815 padding: 11px 12px calc(11px + env(safe-area-inset-bottom)); 4816 overflow:hidden; 4817 4818 background: 4819 radial-gradient(circle at 50% 0%, rgba(74, 198, 80, 0.18), rrgba(0, 20, 0, 0.95)60%, #000), 4820 linear-gradient(180deg, rgba(25, 18, 0, 0.95), #000); 4821 4822 backdrop-filter: blur(12px); 4823 4824 border-top: 1px solid rgba(74, 198, 99, 0.6); 4825 border-radius: 18px 18px 0 0; 4826 4827 box-shadow: 4828 0 -12px 30px rgba(74, 198, 82, 0.15), 4829 inset 0 1px 0 rgba(255, 255, 255, 0.04); 4830 4831 font-family:"Orbitron","Poppins",system-ui,sans-serif; 4832} 4833 4834/* scanline halus */ 4835.subzero-gacor-fixed-footer::before{ 4836 content:""; 4837 position:absolute; 4838 inset:0; 4839 background: 4840 repeating-linear-gradient( 4841 0deg, 4842 rgba(255,255,255,.015), 4843 rgba(255,255,255,.015) 1px, 4844 transparent 1px, 4845 transparent 6px 4846 ); 4847 opacity:.7; 4848} 4849 4850/* shine emas */ 4851.subzero-gacor-fixed-footer::after{ 4852 content:""; 4853 position:absolute; 4854 top:0; 4855 left:-160%; 4856 width:60%; 4857 height:100%; 4858 background: linear-gradient(120deg, transparent, rgba(102, 230, 106, 0.25), transparent); 4859 transform: skewX(-25deg); 4860 animation: footerFinalShine 4s infinite; 4861} 4862 4863@keyframes footerFinalShine{ 4864 0%{left:-160%;} 4865 70%{left:160%;} 4866 100%{left:160%;} 4867} 4868 4869/* ITEM */ 4870.subzero-gacor-fixed-footer a{ 4871 flex:1; 4872 max-width:110px; 4873 4874 display:flex; 4875 flex-direction:column; 4876 align-items:center; 4877 justify-content:center; 4878 gap:6px; 4879 4880 padding: 8px 6px; 4881 text-decoration:none; 4882 text-align:center; 4883 4884 color: #8ae698; 4885 font-size: 12px; 4886 font-weight: 800; 4887 4888 border-radius: 14px; 4889 transition: all .2s ease; 4890} 4891 4892/* hover */ 4893.subzero-gacor-fixed-footer a:hover{ 4894 color:#dcffdc; 4895 background: rgba(74, 198, 76, 0.08); 4896 box-shadow: 0 0 12px rgba(74, 198, 84, 0.25); 4897 transform: translateY(-1px); 4898} 4899 4900/* ICON */ 4901.subzero-gacor-fixed-footer img{ 4902 width:26px; 4903 height:26px; 4904 filter: drop-shadow(0 0 6px rgba(74, 198, 88, 0.4)); 4905 transition:.2s; 4906} 4907 4908.subzero-gacor-fixed-footer a:hover img{ 4909 transform: scale(1.08); 4910 filter: drop-shadow(0 0 14px rgba(102, 230, 121, 0.7)); 4911} 4912 4913/* HUD CORNER */ 4914.subzero-gacor-fixed-footer .hud-corner{ 4915 position:absolute; 4916 width:18px;height:18px; 4917 border: 1px solid rgba(84, 198, 74, 0.5); 4918} 4919 4920.subzero-gacor-fixed-footer .hud-tl{top:8px;left:10px;border-right:none;border-bottom:none;} 4921.subzero-gacor-fixed-footer .hud-tr{top:8px;right:10px;border-left:none;border-bottom:none;} 4922.subzero-gacor-fixed-footer .hud-bl{bottom:8px;left:10px;border-right:none;border-top:none;} 4923.subzero-gacor-fixed-footer .hud-br{bottom:8px;right:10px;border-left:none;border-top:none;} 4924 4925/* CENTER CTA */ 4926.subzero-gacor-fixed-footer .tada{ 4927 color:#fff; 4928 background: 4929 radial-gradient(circle at 50% 0%, rgba(102, 230, 102, 0.2), transparent 70%), 4930 rgba(76, 198, 74, 0.08); 4931 4932 border: 1px solid rgba(74, 198, 119, 0.4); 4933 4934 box-shadow: 4935 0 0 18px rgba(74, 198, 76, 0.2), 4936 inset 0 0 12px rgba(102, 230, 123, 0.2); 4937} 4938 4939.subzero-gacor-fixed-footer .tada img{ 4940 width:30px; 4941 height:30px; 4942 filter: drop-shadow(0 0 14px rgba(102, 230, 113, 0.7)); 4943} 4944 4945/* pulse halus */ 4946.subzero-gacor-fixed-footer .tada::before{ 4947 content:""; 4948 position:absolute; 4949 inset:-12px; 4950 border-radius:999px; 4951 background: radial-gradient(circle, rgba(84, 198, 74, 0.2), transparent 70%); 4952 filter: blur(10px); 4953 animation: corePulse 3s infinite; 4954} 4955 4956@keyframes corePulse{ 4957 0%,100%{opacity:.3;} 4958 50%{opacity:.7;} 4959} 4960</style> 4961 4962 4963 4964 4965<div class="subzero-gacor-fixed-footer"> 4966 <a href="https://trunojoyo.health/4.html" target="_blank" rel="nofollow noopener"> 4967 <img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="BONUS SEMBAHTOTO"> 4968 BONUS 4969 </a> 4970 <a href="https://trunojoyo.health/4.html" target="_blank" rel="nofollow noopener"> 4971 <img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="WHATSAPP SEMBAHTOTO"> 4972 WHATSAPP 4973 </a> 4974 <a href="https://trunojoyo.health/4.html" target="_blank" rel="nofollow noopener" class="tada"> 4975 <img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="DAFTAR SEMBAHTOTO"> 4976 DAFTAR 4977 </a> 4978 <a href="https://trunojoyo.health/4.html" target="_blank" rel="nofollow noopener"> 4979 <img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="BUKTI JP SEMBAHTOTO"> 4980 BUKTI JP 4981 </a> 4982 <a href="https://trunojoyo.health/4.html" target="_blank" rel="nofollow noopener"> 4983 <img src="https://gambarnyasembahtoto.pages.dev/5c038ecb37324badbe025c47f403f1c5.png" alt="LIVE CHAT SEMBAHTOTO"> 4984 LIVE CHAT 4985 </a> 4986</div>
4987<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon='{"version":"2024.11.0","token":"36c9020aa89c44dfb12c7ff1d60c014d","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 4987
4987
4988<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":"bf2cd87c8f2f4d44acdf105088863111","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
4988 4989</body> 4990</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.