1<!DOCTYPE html> 2<html lang="id"> 3<head> 4<meta charset="UTF-8"> 5<title>TOGE123 - Spin Slot Bertema Thailand dan Peluang Jackpot</title> 6<meta name="description" content="TOGE123 menyoroti spin slot bertema server Thailand melalui istilah jackpot, kombinasi simbol, serta ketentuan game yang menentukan pembayaran."> 7<meta name="robots" content="index, follow"> 8<link rel="canonical" href="https://jpspinserverthailand.com/"> 9<link rel="amphtml" href="https://toge-ravion.click/"> 10<link rel="alternate" hreflang="id-id" href="https://jpspinserverthailand.com/"/> 11<link rel="alternate" href="https://jpspinserverthailand.com/"/> 12<link rel="alternate" hreflang="id" href="https://jpspinserverthailand.com/"/> 13<link rel="alternate" hreflang="en" href="https://jpspinserverthailand.com/"/> 14<link rel="alternate" hreflang="x-default" href="https://jpspinserverthailand.com/"/> 15<link rel="preconnect" href="https://www.googletagmanager.com" crossorigin>
vendor: 64 bytes, lines 15-16
15 16<script async src="https://www.googletagmanager.com/gtag/js?id=
16G-0LSM1YJSPZ
vendor: 45 bytes, line 16
16" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
17<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>
17 18<meta property="og:locale" content="id_ID"> 19<meta property="og:site_name" content="Plaza IT"> 20<meta property="og:type" content="product"> 21<meta property="og:title" content="TOGE123 - Spin Slot Bertema Thailand dan Peluang Jackpot"> 22<meta property="og:description" content="TOGE123 menyoroti spin slot bertema server Thailand melalui istilah jackpot, kombinasi simbol, serta ketentuan game yang menentukan pembayaran."> 23<meta property="og:url" content="https://jpspinserverthailand.com/"> 24<meta property="og:image" content="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png"> 25<meta property="og:image:alt" content="TOGE123 - Spin Slot Bertema Thailand dan Peluang Jackpot"> 26<meta property="product:price:amount" content="5000"> 27<meta property="product:price:currency" content="IDR"> 28<meta property="product:availability" content="out of stock"> 29<meta name="twitter:card" content="summary_large_image"> 30<meta name="twitter:title" content="TOGE123 - Spin Slot Bertema Thailand dan Peluang Jackpot"> 31<meta name="twitter:description" content="TOGE123 menyoroti spin slot bertema server Thailand melalui istilah jackpot, kombinasi simbol, serta ketentuan game yang menentukan pembayaran."> 32<meta name="twitter:image" content="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png">
33<script type="application/ld+json"> 34{ 35"@context": "https://schema.org", 36"@type": "WebSite", 37"@id": "/#website", 38"url": "https://jpspinserverthailand.com/", 39"name": "TOGE123", 40"inLanguage": "id", 41"potentialAction": { 42 "@type": "SearchAction", 43 "target": "https://jpspinserverthailand.com/", 44 "query-input": "required name=search_term_string" 45} 46} 47</script>
vendor: 1 bytes, line 47
47
48<script type="application/ld+json"> 49{ 50"@context": "https://schema.org", 51"@type": "Organization", 52"@id": "/#organization", 53"name": "TOGE123", 54"url": "https://jpspinserverthailand.com/", 55"logo": "https://meubelkayumurah.pics/wp-content/uploads/2026/05/logotoge123.webp" 56} 57</script>
vendor: 1 bytes, line 57
57
58<script type="application/ld+json"> 59{ 60"@context": "https://schema.org", 61"@type": "Product", 62"name": "TOGE123 - Spin Slot Bertema Thailand dan Peluang Jackpot", 63"sku": "8S89G1554EGB", 64"image": [ 65 "https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" 66], 67"url": "https://jpspinserverthailand.com/", 68"description": "TOGE123 menyoroti spin slot bertema server Thailand melalui istilah jackpot, kombinasi simbol, serta ketentuan game yang menentukan pembayaran. ", 69"category": "TOGE123", 70"brand": { 71 "@type": "Brand", 72 "name": "TOGE123" 73}, 74"offers": { 75 "@type": "Offer", 76 "url": "https://jpspinserverthailand.com/", 77 "priceCurrency": "IDR", 78 "price": "5000", 79 "priceValidUntil": "2027-03-01", 80 "availability": "https://schema.org/OutOfStock", 81 "itemCondition": "https://schema.org/NewCondition", 82 "seller": { 83 "@type": "Organization", 84 "name": "TOGE123", 85 "url": "https://jpspinserverthailand.com/" 86 } 87}, 88"aggregateRating": { 89 "@type": "AggregateRating", 90 "ratingValue": "4.9", 91 "reviewCount": "808", 92 "bestRating": "5", 93 "worstRating": "1" 94} 95} 96</script>
vendor: 1 bytes, line 96
96
97<script type="application/ld+json"> 98{ 99"@context": "https://schema.org", 100"@type": "BreadcrumbList", 101"itemListElement": [ 102 { 103 "@type": "ListItem", 104 "position": 1, 105 "name": "TOGE123", 106 "item": "https://jpspinserverthailand.com/" 107 }, 108 { 109 "@type": "ListItem", 110 "position": 2, 111 "name": "SOT ONLINE", 112 "item": "https://jpspinserverthailand.com/" 113 } 114] 115} 116</script>
vendor: 1 bytes, line 116
116
117<script type="application/ld+json"> 118{ 119"@context": "https://schema.org", 120"@type": "FAQPage", 121"mainEntity": [ 122 { 123 "@type": "Question", 124 "name": "Apa itu TOGE123?", 125 "acceptedAnswer": { 126 "@type": "Answer", 127 "text": "TOGE123 merupakan platform hiburan online yang menyediakan berbagai jenis permainan seperti slot online, Slot777, hingga togel Toto Macau dengan sistem yang dirancang untuk memberikan pengalaman bermain yang mudah, cepat, dan terintegrasi dalam satu akun, sehingga pemain tidak perlu berpindah platform untuk menikmati berbagai jenis permainan yang tersedia, selain itu situs ini juga dikenal menyediakan pasaran togel lengkap serta sistem permainan yang transparan dengan update hasil secara real-time sehingga pemain dapat melihat hasil dengan akurat setiap saat." 128 } 129 }, 130 { 131 "@type": "Question", 132 "name": "Apa saja permainan yang tersedia di TOGE123?", 133 "acceptedAnswer": { 134 "@type": "Answer", 135 "text": "TOGE123 menyediakan berbagai pilihan permainan yang sangat lengkap mulai dari Slot777 dengan berbagai provider populer, slot online modern dengan fitur bonus seperti free spin dan jackpot progresif, hingga togel online termasuk Toto Macau 4D yang memiliki jadwal pengeluaran rutin dan data result yang selalu diperbarui secara otomatis, sehingga pemain dapat memilih permainan sesuai dengan preferensi mereka tanpa merasa terbatas oleh pilihan yang sedikit." 136 } 137 }, 138 { 139 "@type": "Question", 140 "name": "Apakah TOGE123 menyediakan Toto Macau dengan hasil real-time?", 141 "acceptedAnswer": { 142 "@type": "Answer", 143 "text": "Ya, TOGE123 menyediakan fitur hasil pengeluaran Toto Macau secara real-time yang dapat diakses langsung oleh pemain kapan saja, sehingga setiap hasil angka yang keluar dapat dilihat secara transparan tanpa adanya keterlambatan atau mani
143pulasi, hal ini menjadi salah satu keunggulan utama karena pemain dapat menggunakan data tersebut sebagai bahan analisis sebelum memasang taruhan berikutnya." 144 } 145 }, 146 { 147 "@type": "Question", 148 "name": "Apakah bonus bisa langsung ditarik?", 149 "acceptedAnswer": { 150 "@type": "Answer", 151 "text": "Sebagian besar bonus yang diberikan oleh TOGE123 memiliki syarat turnover tertentu sebelum dapat ditarik, yang berarti pemain harus memainkan sejumlah taruhan terlebih dahulu sesuai ketentuan yang berlaku, namun syarat tersebut umumnya cukup ringan sehingga tetap memungkinkan pemain untuk mencairkan kemenangan dengan relatif mudah setelah memenuhi persyaratan yang ditentukan." 152 } 153 }, 154 { 155 "@type": "Question", 156 "name": "Berapa minimal deposit di TOGE123?", 157 "acceptedAnswer": { 158 "@type": "Answer", 159 "text": "Minimal deposit di TOGE123 tergolong cukup terjangkau, bahkan mulai dari nominal rendah seperti Rp10.000 hingga Rp50.000 tergantung pada jenis promo yang digunakan, sehingga platform ini sangat cocok bagi pemain pemula yang ingin mencoba bermain tanpa harus mengeluarkan modal besar di awal." 160 } 161 }, 162 { 163 "@type": "Question", 164 "name": "Apakah transaksi di TOGE123 cepat dan aman?", 165 "acceptedAnswer": { 166 "@type": "Answer", 167 "text": "TOGE123 menyediakan sistem transaksi yang cepat dan aman dengan berbagai metode pembayaran seperti transfer bank dan e-wallet, di mana proses deposit dan withdraw dapat dilakukan dalam waktu singkat karena menggunakan sistem otomatis, sehingga pemain tidak perlu menunggu lama untuk mulai bermain atau mencairkan hasil kemenangan mereka." 168 } 169 } 170] 171} 172</script>
172 173<!-- User Session Data --> 174 <meta name="csrf-token" content="9ce6e4a17f7cc189893df9e47789b13e98829450d516a0cae5ca7b5f43e5dadc"> 175<meta name="user-logged-in" content="false"> 176<meta name="user-id" content="0"> 177<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" /> 178<link rel="shortcut icon" href="https://meubelkayumurah.pics/wp-content/uploads/2026/05/icontoge123.png" type="image/x-icon"> 179<link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/style.css"> 180<link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/bottom-nav.css"> 181<link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/search-suggest.css"> 182<link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/product-detail.css"> 183<link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/product-grid.css"> 184<link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/site-notice.css"> 185 <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/benchmark.css"> 186 <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/product-filters.css"> 187<link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/mega-menu-tiles.css"> 188<link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/product-compare.css"> 189<link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/product-card-actions.css"> 190<link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/modal.css"> 191 <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/reviews-points.css"> 192</head> 193<body> 194<header class="topbar"> 195<div class="container topbar-inner"> 196 <div class="topbar-left"> 197 TOGE123 - Spin Slot Bertema Thailand dan Peluang Jackpot 198 </div> 199 <div class="topbar-right"> 200 <a href="https://toge-ravion.click/">TOGE123</a> 201 <a href="https://toge-ravion.click/">Promo</a> 202 <a href="https://toge-ravion.click/">Daftar</a> 203 <a href="https://toge-ravion.click/">Masuk</a> 204 </div> 205</div> 206</header> 207<nav class="navbar"> 208<nav class="navbar-logo" style="width: 100%;"> 209 <div class="container nav-inner" style="justify-items: center; justify-content: center;"> 210 <a href="/" class="logo-mobile"> 211 <img src="https://meubelkayumurah.pics/wp-content/uploads/2026/05/logotoge123.webp" alt="TOGE123" height="100"> 212 </a> 213 </div> 214</nav> 215<div class="container nav-inner"> 216 <a href="/" class="logo"> 217 <img src="https://meubelkayumurah.pics/wp-content/uploads/2026/05/logotoge123.webp" alt="TOGE123" height="100"> 218 </a> 219 <form class="search" method="get" action="https://toge-ravion.click/"> 220 <input type="hidden" name="page" value="produk"> 221 <!-- Search Icon (Desktop) --> 222 <button type="submit" class="search-icon-btn" id="searchBtn" aria-label="Cari"> 223 <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"> 224 <circle cx="11" cy="11" r="8"/> 225 <path d="m21 21-4.35-4.35"/> 226 </svg> 227 </button> 228 <input type="text" name="q" id="searchInput" placeholder="Cari TOGE123" 229 value="" autocomplete="off"> 230 <div class="search-suggest" id="searchSuggest" hidden></div> 231 </form> 232 <div class="nav-actions"> 233 <!--<button class="icon-btn" id="notifBtn" title="Notifikasi">ð</button>--> 234 <button class="icon-btn cart-indicator" id="cartBtn" title="Keranjang"> 235 ð <span id="cartCount" class="badge" data-role="cart-badge" aria-live="polite">0</span> 236 </button> 237 <span id="compareCount" class="badge" data-role="compare-badge" aria-live="polite">0</span> 238 </button> 239 <!-- Dynamic login/logout button --> 240 <button class="login-btn" id="loginBtn" aria-label="Masuk"> 241 <span class="login-text">Masuk</span> 242 <span class="login-ico" aria-hidden="true">ð</span> 243 </button> 244 </div> 245</div> 246<div class="container" style="display: flex; align-items: center;"> 247 <div class="mega-cats-wrapper"> 248 <div class="mega-cats container" id="megaCatsScroll" style="padding-left: 5px !important;"> 249 <a class="" href="https://toge-ravion.click/"> 250 TOGE123 </a> 251 <a class="" href="https://toge-ravion.click/"> 252 SLOT ONLINE </a> 253 <a class="" href="https://toge-ravion.click/"> 254 SLOT777 </a> 255 <a class="" href="https://toge-ravion.click/"> 256 TOGEL ONLINE </a> 257 <a class="" href="https://toge-ravion.click/"> 258 TOTO MACAU </a> 259 <a class="" href="https://toge-ravion.click/"> 260 TOTO SLOT </a> 261 <a class="" href="https://toge-ravion.click/"> 262 TOGEL MACAU </a> 263 </div> 264 <div class="mega-cats-fade" id="megaCatsFade"></div> 265 </div> 266</div> 267</nav> 268<!-- Panel Mega Menu - Outside navbar for full-screen --> 269<div class="mm2-panel" data-mm2="panel" role="dialog" aria-label="Kategori"> 270<div class="mm2-view is-active" data-mm2="top"></div> 271<div class="mm2-view" data-mm2="detail"></div> 272</div> 273<!-- Backdrop - Outside navbar for full-screen --> 274<div class="mm2-backdrop" data-mm2="backdrop"></div> 275<!-- Mobile Bottom Navigation --> 276<nav class="bottom-nav"> 277<div class="bottom-nav-inner"> 278 <!-- Home --> 279 <a href="/" class="bottom-nav-item" id="bottomHomeBtn" data-page="home"> 280 <div class="bottom-nav-item-icon"> 281 <!-- Outlined icon (default) -->
282 <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> 283 <path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/> 284 <polyline points="9 22 9 12 15 12 15 22"/> 285 </svg> 286 <!-- Filled icon (active) --> 287 <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor"> 288 <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"/> 289 <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"/> 290 </svg> 291 </div> 292 <span class="bottom-nav-item-label">Home</span> 293 </a> 294 <!-- Kategori --> 295 <button class="bottom-nav-item" id="bottomCategoryBtn" data-mm2="trigger" aria-label="Kategori"> 296 <div class="bottom-nav-item-icon"> 297 <!-- Outlined icon (default) --> 298 <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> 299 <line x1="3" y1="12" x2="21" y2="12"/> 300 <line x1="3" y1="6" x2="21" y2="6"/> 301 <line x1="3" y1="18" x2="21" y2="18"/> 302 </svg> 303 <!-- Filled icon (active) --> 304 <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor"> 305 <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"/> 306 </svg> 307 </div> 308 <span class="bottom-nav-item-label">Kategori</span> 309 </button> 310 <!-- Keranjang --> 311 <button class="bottom-nav-item" id="bottomCartBtn"> 312 <div class="bottom-nav-item-icon"> 313 <!-- Outlined icon (default) --> 314 <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> 315 <circle cx="9" cy="21" r="1"/> 316 <circle cx="20" cy="21" r="1"/> 317 <path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"/> 318 </svg> 319 <!-- Filled icon (active) --> 320 <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor"> 321 <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"/> 322 </svg> 323 <span class="bottom-nav-item-badge" id="bottomCartCount">0</span> 324 </div> 325 <span class="bottom-nav-item-label">Keranjang</span> 326 </button> 327 <!-- Compare --> 328 <button class="bottom-nav-item" id="bottomCompareBtn"> 329 <div class="bottom-nav-item-icon"> 330 <!-- Outlined icon (default) --> 331 <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> 332 <polyline points="17 11 21 7 17 3"/> 333 <path d="M21 7H9"/> 334 <polyline points="7 21 3 17 7 13"/> 335 <path d="M15 17H3"/> 336 </svg> 337 <!-- Filled icon (active) --> 338 <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor"> 339 <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"/> 340 </svg> 341 <span class="bottom-nav-item-badge" id="bottomCompareCount" style="display:none;">0</span> 342 </div> 343 <span class="bottom-nav-item-label">Compare</span> 344 </button> 345 <!-- Chat - Always show, check login in JavaScript --> 346 <button class="bottom-nav-item" id="bottomChatBtn" data-page="chat"> 347 <div class="bottom-nav-item-icon"> 348 <!-- Outlined icon (default) -->
349 <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" opacity="0.85"> 350 <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/> 351 </svg> 352 <!-- Filled icon (active) --> 353 <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor"> 354 <path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z"/> 355 </svg> 356 <span class="bottom-nav-item-badge" id="bottomChatCount" style="display:none;">0</span> 357 </div> 358 <span class="bottom-nav-item-label">Chat</span> 359 </button> 360 <!-- Akun --> 361 <button class="bottom-nav-item" id="bottomLoginBtn"> 362 <div class="bottom-nav-item-icon"> 363 <!-- Outlined icon (default) --> 364 <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> 365 <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/> 366 <circle cx="12" cy="7" r="4"/> 367 </svg> 368 <!-- Filled icon (active) --> 369 <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor"> 370 <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"/> 371 </svg> 372 </div> 373 <span class="bottom-nav-item-label">Login</span> 374 </button> 375 </svg> 376 </div> 377 </button> 378 </div> 379</nav> 380<!-- Mobile User Menu Bottom Sheet -->
381<script nonce="se3iyzEHMc9FQEB4wSyd0w=="> 382(function(){ 383const btn = document.getElementById('megaMoreBtn'); 384const dd = document.getElementById('megaMoreDropdown'); 385if(!btn || !dd) return; 386function openDD(){ 387 dd.hidden = false; 388 btn.setAttribute('aria-expanded','true'); 389 document.addEventListener('click', outside, {capture:true}); 390 document.addEventListener('keydown', esc); 391} 392function closeDD(){ 393 if(dd.hidden) return; 394 dd.hidden = true; 395 btn.setAttribute('aria-expanded','false'); 396 document.removeEventListener('click', outside, {capture:true}); 397 document.removeEventListener('keydown', esc); 398} 399function toggle(){ dd.hidden ? openDD() : closeDD(); } 400function outside(e){ 401 if(!dd.contains(e.target) && e.target !== btn){ 402 closeDD(); 403 } 404} 405function esc(e){ 406 if(e.key === 'Escape'){ 407 closeDD(); 408 btn.focus(); 409 } 410} 411btn.addEventListener('click', toggle); 412})(); 413// ========== HORIZONTAL SCROLL FADE INDICATOR ========== 414(function(){ 415const megaCats = document.getElementById('megaCatsScroll'); 416const fade = document.getElementById('megaCatsFade'); 417if (!megaCats || !fade) return; 418function updateFade() { 419 const scrollLeft = megaCats.scrollLeft; 420 const scrollWidth = megaCats.scrollWidth; 421 const clientWidth = megaCats.clientWidth; 422 const maxScroll = scrollWidth - clientWidth; 423 // Hide fade when scrolled to end (within 10px tolerance) 424 if (maxScroll - scrollLeft <= 10) { 425 fade.style.opacity = '0'; 426 } else { 427 fade.style.opacity = '1'; 428 } 429} 430// Update on scroll 431megaCats.addEventListener('scroll', updateFade, { passive: true }); 432// Update on resize 433window.addEventListener('resize', updateFade, { passive: true }); 434// Initial check 435setTimeout(updateFade, 100); 436})(); 437document.addEventListener('DOMContentLoaded', function () { 438var input = document.getElementById('searchInput'); 439if (!input) return; 440input.addEventListener('keydown', function (e) { 441 if (e.key === 'Enter') { 442 e.preventDefault(); 443 var form = input.form; 444 if (!form) return; 445 if (typeof form.requestSubmit === 'function') form.requestSubmit(); 446 else form.submit(); 447 } 448}); 449}); 450(function(){ 451const cartBtn = document.getElementById('cartBtn'); 452if (cartBtn) { 453 cartBtn.addEventListener('click', function(e) { 454 e.preventDefault(); 455 const checkLogin = () => { 456 return window.isUserLoggedIn ? window.isUserLoggedIn() : false; 457 }; 458 if (checkLogin()) { 459 window.location.href = '/keranjang'; 460 } else { 461 showCartLoginModal(); 462 } 463 }); 464} 465const loginBtn = document.getElementById('loginBtn'); 466if (loginBtn) { 467 loginBtn.addEventListener('click', function(e) { 468 e.preventDefault(); 469 window.location.href = 'https://jpspinserverthailand.com/'; 470 }); 471} 472const userMenuBtn = document.getElementById('userMenuBtn'); 473const userDropdown = document.getElementById('userDropdown'); 474if (userMenuBtn && userDropdown) { 475 function openDropdown() { 476 userDropdown.hidden = false; 477 userMenuBtn.setAttribute('aria-expanded', 'true'); 478 document.addEventListener('click', closeOnOutside, { capture: true }); 479 document.addEventListener('keydown', closeOnEscape); 480 } 481 function closeDropdown() { 482 if (userDropdown.hidden) return; 483 userDropdown.hidden = true; 484 userMenuBtn.setAttribute('aria-expanded', 'false'); 485 document.removeEventListener('click', closeOnOutside, { capture: true }); 486 document.removeEventListener('keydown', closeOnEscape); 487 } 488 function closeOnOutside(e) { 489 if (!userDropdown.contains(e.target) && e.target !== userMenuBtn) { 490 closeDropdown(); 491 } 492 } 493 function closeOnEscape(e) { 494 if (e.key === 'Escape') { 495 closeDropdown(); 496 userMenuBtn.focus(); 497 } 498 } 499 userMenuBtn.addEventListener('click', function(e) { 500 e.preventDefault(); 501 userDropdown.hidden ? openDropdown() : closeDropdown(); 502 }); 503 // Close dropdown when clicking profile links 504 userDropdown.querySelectorAll('[data-close-dropdown]').forEach(link => { 505 link.addEventListener('click', function() { 506 closeDropdown(); 507 }); 508 }); 509} 510// Bottom nav profile button - toggle mobile bottom sheet 511const bottomProfileBtn = document.getElementById('bottomProfileBtn'); 512const mobileUserSheet = document.getElementById('mobileUserSheet'); 513const mobileUserSheetBackdrop = document.getElementById('mobileUserSheetBackdrop'); 514if (bottomProfileBtn && mobileUserSheet) { 515 function openMobileSheet() { 516 mobileUserSheet.hidden = false;
517 document.body.style.overflow = 'hidden'; 518 // Trigger animation 519 requestAnimationFrame(() => { 520 mobileUserSheet.classList.add('active'); 521 }); 522 } 523 function closeMobileSheet() { 524 mobileUserSheet.classList.remove('active'); 525 document.body.style.overflow = ''; 526 setTimeout(() => { 527 mobileUserSheet.hidden = true; 528 }, 300); 529 } 530 bottomProfileBtn.addEventListener('click', function(e) { 531 e.preventDefault(); 532 openMobileSheet(); 533 }); 534 if (mobileUserSheetBackdrop) { 535 mobileUserSheetBackdrop.addEventListener('click', closeMobileSheet); 536 } 537 // Close on escape key 538 document.addEventListener('keydown', function(e) { 539 if (e.key === 'Escape' && !mobileUserSheet.hidden) { 540 closeMobileSheet(); 541 } 542 }); 543 // Close sheet when clicking profile links 544 mobileUserSheet.querySelectorAll('[data-close-sheet]').forEach(link => { 545 link.addEventListener('click', function() { 546 closeMobileSheet(); 547 }); 548 }); 549} 550// Handle Google avatar error in bottom-nav (fallback to initials) 551const bottomNavAvatar = document.querySelector('.bottom-nav-avatar-img'); 552if (bottomNavAvatar) { 553 bottomNavAvatar.addEventListener('error', function() { 554 const initials = this.getAttribute('data-fallback-initials') || 'U'; 555 const initialsDiv = document.createElement('div'); 556 initialsDiv.className = 'bottom-nav-avatar-initials'; 557 initialsDiv.textContent = initials; 558 this.parentNode.replaceChild(initialsDiv, this); 559 }); 560} 561// Mobile logout button 562const mobileLogoutBtn = document.getElementById('mobileLogoutBtn'); 563if (mobileLogoutBtn) { 564 mobileLogoutBtn.addEventListener('click', async function(e) { 565 e.preventDefault(); 566 // Check push notification before logout 567 if (window.ChatNotification && typeof window.ChatNotification.confirmLogoutWithPushNotification === 'function') { 568 const confirmLogout = await window.ChatNotification.confirmLogoutWithPushNotification(); 569 if (!confirmLogout) { 570 return; // User cancelled logout 571 } 572 } 573 const getCsrfToken = () => document.querySelector('meta[name="csrf-token"]')?.getAttribute('content') || ''; 574 try { 575 const response = await fetch('/auth/logout', { 576 method: 'POST', 577 credentials: 'same-origin', 578 headers: { 579 'Content-Type': 'application/json', 580 'X-CSRF-Token': getCsrfToken() 581 }, 582 body: JSON.stringify({ 583 csrf_token: getCsrfToken() 584 }) 585 }); 586 if (response.ok) { 587 if (window.guestCart && typeof window.guestCart.clear === 'function') { 588 window.guestCart.clear(); 589 } 590 window.location.href = '/login?logged_out=1'; 591 } else { 592 console.error('Logout failed'); 593 window.location.href = '/logout'; 594 } 595 } catch (error) { 596 console.error('Logout error:', error); 597 window.location.href = '/logout'; 598 } 599 }); 600} 601const logoutBtn = document.getElementById('logoutBtn'); 602if (logoutBtn) { 603 logoutBtn.addEventListener('click', async function(e) { 604 e.preventDefault(); 605 // Check push notification before logout 606 if (window.ChatNotification && typeof window.ChatNotification.confirmLogoutWithPushNotification === 'function') { 607 const confirmLogout = await window.ChatNotification.confirmLogoutWithPushNotification(); 608 if (!confirmLogout) { 609 return; // User cancelled logout 610 } 611 } 612 const getCsrfToken = () => document.querySelector('meta[name="csrf-token"]')?.getAttribute('content') || ''; 613 try { 614 const response = await fetch('/auth/logout', { 615 method: 'POST', 616 credentials: 'same-origin', 617 headers: { 618 'Content-Type': 'application/json', 619 'X-CSRF-Token': getCsrfToken() 620 }, 621 body: JSON.stringify({ 622 csrf_token: getCsrfToken() 623 }) 624 }); 625 if (response.ok) { 626 if (window.guestCart && typeof window.guestCart.clear === 'function') { 627 window.guestCart.clear(); 628 } 629 window.location.href = '/login?logged_out=1'; 630 } else { 631 console.error('Logout failed'); 632 window.location.href = '/logout'; 633 } 634 } catch (error) { 635 console.error('Logout error:', error); 636 window.location.href = '/logout'; 637 } 638 }); 639} 640const wishlistBtn = document.getElementById('wishlistBtn'); 641const notifBtn = document.getElementById('notifBtn'); 642if (wishlistBtn) { 643 wishlistBtn.addEventListener('click', function(e) { 644 e.preventDefault(); 645 alert('Fitur wishlist akan segera tersedia!'); 646 }); 647} 648if (notifBtn) { 649 notifBtn.addEventListener('click', function(e) { 650 e.preventDefault(); 651 alert('Fitur notifikasi akan segera tersedia!'); 652 }); 653} 654})(); 655// ========== MOBILE BOTTOM NAVIGATION ========== 656(function initBottomNav() { 657// Sync cart badge with bottom nav 658function syncBottomCartBadge() { 659 const mainBadge = document.getElementById('cartCount'); 660 const bottomBadge = document.getElementById('bottomCartCount'); 661 if (mainBadge && bottomBadge) { 662 const count = mainBadge.textContent; 663 bottomBadge.textContent = count; 664 bottomBadge.style.display = parseInt(count) > 0 ? 'flex' : 'none'; 665 } 666} 667// Sync compare badge with bottom nav 668function syncBottomCompareBadge() { 669 const mainBadge = document.getElementById('compareCount'); 670 const bottomBadge = document.getElementById('bottomCompareCount'); 671 if (mainBadge && bottomBadge) { 672 const count = mainBadge.textContent; 673 bottomBadge.textContent = count; 674 bottomBadge.style.display = parseInt(count) > 0 ? 'flex' : 'none'; 675 } 676} 677// Initial sync 678syncBottomCartBadge(); 679syncBottomCompareBadge(); 680// Observe badge changes 681const observer = new MutationObserver(function() { 682 syncBottomCartBadge(); 683 syncBottomCompareBadge(); 684}); 685const cartBadge = document.getElementById('cartCount'); 686const compareBadge = document.getElementById('compareCount'); 687if (cartBadge) observer.observe(cartBadge, { childList: true, characterData: true, subtree: true }); 688if (compareBadge) observer.observe(compareBadge, { childList: true, characterData: true, subtree: true }); 689// Bottom Cart Button 690const bottomCartBtn = document.getElementById('bottomCartBtn'); 691if (bottomCartBtn) { 692 bottomCartBtn.addEventListener('click', function(e) { 693 e.preventDefault(); 694 const checkLogin = () => { 695 return window.isUserLoggedIn ? window.isUserLoggedIn() : false;
696 }; 697 if (checkLogin()) { 698 window.location.href = '/keranjang'; 699 } else { 700 showCartLoginModal(); 701 } 702 }); 703} 704// Bottom Compare Button 705const bottomCompareBtn = document.getElementById('bottomCompareBtn'); 706if (bottomCompareBtn) { 707 bottomCompareBtn.addEventListener('click', function(e) { 708 e.preventDefault(); 709 // Close chat widget if open 710 if (window.plazaChat && window.plazaChat.isWidgetOpen) { 711 window.plazaChat.closeWidget(); 712 } 713 const mainCompareBtn = document.getElementById('compareBtn'); 714 if (mainCompareBtn) { 715 mainCompareBtn.click(); 716 } 717 }); 718} 719// Bottom Category Button - triggers mega menu 720const bottomCategoryBtn = document.getElementById('bottomCategoryBtn'); 721if (bottomCategoryBtn) { 722 bottomCategoryBtn.addEventListener('click', function(e) { 723 e.preventDefault(); 724 // Trigger desktop mega menu 725 const desktopTrigger = document.querySelector('.mm2-trigger:not(#bottomCategoryBtn)'); 726 if (desktopTrigger) { 727 desktopTrigger.click(); 728 } 729 }); 730} 731// Bottom Login Button 732const bottomLoginBtn = document.getElementById('bottomLoginBtn'); 733if (bottomLoginBtn) { 734 bottomLoginBtn.addEventListener('click', function(e) { 735 e.preventDefault(); 736 window.location.href = '/login'; 737 }); 738} 739// Bottom Chat Button 740const bottomChatBtn = document.getElementById('bottomChatBtn'); 741if (bottomChatBtn) { 742 bottomChatBtn.addEventListener('click', function(e) { 743 e.preventDefault(); 744 // Trigger chat widget (try multiple times if needed) 745 const triggerChat = () => { 746 const chatToggle = document.getElementById('chat-toggle-btn'); 747 if (chatToggle) { 748 chatToggle.click(); 749 return true; 750 } 751 return false; 752 }; 753 // Immediate attempt 754 if (!triggerChat()) { 755 // Retry after 100ms if not found 756 setTimeout(() => { 757 if (!triggerChat()) { 758 // Last resort: manually show popup 759 const popup = document.getElementById('chat-popup'); 760 if (popup) { 761 popup.style.display = 'block'; 762 } 763 } 764 }, 100); 765 } 766 }); 767} 768// Sync chat unread badge 769function syncBottomChatBadge() { 770 const chatBadge = document.getElementById('chat-unread-badge'); 771 const bottomChatBadge = document.getElementById('bottomChatCount'); 772 if (chatBadge && bottomChatBadge) { 773 const count = chatBadge.textContent; 774 bottomChatBadge.textContent = count; 775 bottomChatBadge.style.display = chatBadge.style.display; 776 } 777} 778// Observe chat badge changes 779const chatBadge = document.getElementById('chat-unread-badge'); 780if (chatBadge) { 781 observer.observe(chatBadge, { attributes: true, childList: true, characterData: true, subtree: true }); 782 syncBottomChatBadge(); 783} 784// Active state management based on current page 785function updateActiveState() { 786 const currentPath = window.location.pathname; 787 const bottomNavItems = document.querySelectorAll('.bottom-nav-item'); 788 bottomNavItems.forEach(item => { 789 item.classList.remove('active'); 790 const itemId = item.id; 791 const page = item.getAttribute('data-page'); 792 const href = item.getAttribute('href'); 793 // Check by ID for specific pages 794 if (itemId === 'bottomHomeBtn' && currentPath === '/') { 795 item.classList.add('active'); 796 } else if (itemId === 'bottomCartBtn' && (currentPath === '/keranjang' || currentPath === '/cart')) { 797 item.classList.add('active'); 798 } else if (itemId === 'bottomProfileBtn' && currentPath.startsWith('/profile')) { 799 item.classList.add('active'); 800 } else if (itemId === 'bottomCategoryBtn' && currentPath.startsWith('/kategori')) { 801 item.classList.add('active'); 802 } else if (itemId === 'bottomCompareBtn' && currentPath === '/compare') { 803 item.classList.add('active'); 804 } else if (itemId === 'bottomChatBtn' && currentPath === '/chat') { 805 item.classList.add('active'); 806 } 807 // Fallback: check by data-page attribute 808 else if (page === 'home' && currentPath === '/') { 809 item.classList.add('active'); 810 } else if (page === 'profile' && currentPath.startsWith('/profile')) { 811 item.classList.add('active'); 812 } 813 // Fallback: check by href 814 else if (href && currentPath === href) { 815 item.classList.add('active'); 816 } 817 }); 818} 819// Update active state on load 820updateActiveState(); 821// Bottom nav always visible - auto-hide disabled for better UX 822// const bottomNav = document.querySelector('.bottom-nav'); 823// if (bottomNav && window.innerWidth <= 640) { 824// // Auto-hide feature disabled 825// } 826})(); 827// Cart Login Modal Handler (Global scope) 828function showCartLoginModal() { 829const modal = document.getElementById('cartLoginModal'); 830if (!modal) return; 831modal.classList.add('show'); 832const confirmBtn = document.getElementById('cartLoginConfirm'); 833const registerBtn = document.getElementById('cartRegisterBtn'); 834const cancelBtn = document.getElementById('cartLoginCancel'); 835const handleLogin = () => { 836 window.location.href = '/login?return=' + encodeURIComponent('/keranjang'); 837}; 838const handleRegister = () => { 839 window.location.href = '/register?return=' + encodeURIComponent('/keranjang'); 840}; 841const handleCancel = () => { 842 modal.classList.remove('show'); 843 confirmBtn.removeEventListener('click', handleLogin); 844 registerBtn.removeEventListener('click', handleRegister); 845 cancelBtn.removeEventListener('click', handleCancel); 846}; 847confirmBtn.removeEventListener('click', handleLogin); 848registerBtn.removeEventListener('click', handleRegister); 849cancelBtn.removeEventListener('click', handleCancel); 850confirmBtn.addEventListener('click', handleLogin); 851registerBtn.addEventListener('click', handleRegister); 852cancelBtn.addEventListener('click', handleCancel); 853modal.addEventListener('click', (e) => { 854 if (e.target === modal) { 855 handleCancel(); 856 } 857}); 858} 859</script>
859 860<!-- Product Compare Sidebar --> 861<div class="compare-sidebar" id="compareSidebar"> 862<div class="compare-header"> 863 <h4 class="compare-title"> 864 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 865 <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"/> 866 </svg> 867 Bandingkan Produk 868 <span class="compare-count" id="compareCountSidebar">(0)</span> 869 </h4> 870 <button class="compare-close" id="compareClose" aria-label="Tutup"> 871 <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"> 872 <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"/> 873 </svg> 874 </button> 875</div> 876<div class="compare-content"> 877 <div class="compare-empty" id="compareEmpty"> 878 <div class="empty-icon"> 879 <svg width="48" height="48" viewBox="0 0 24 24" fill="currentColor" opacity="0.3"> 880 <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"/> 881 </svg> 882 </div> 883 <h5>Belum ada produk dipilih</h5> 884 <p>Pilih produk yang ingin dibandingkan dengan klik tombol "Bandingkan Produk" di halaman produk.</p> 885 </div> 886 <div class="compare-list" id="compareList"> 887 <!-- Products will be populated here --> 888 </div> 889</div> 890<div class="compare-actions" id="compareActions"> 891 <button class="btn btn-outline-danger btn-sm" id="compareClearAll"> 892 <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"> 893 <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"/> 894 </svg> 895 Hapus Semua 896 </button> 897 <button class="btn btn-primary btn-sm" id="compareAnalyze" disabled> 898 <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"> 899 <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"/> 900 </svg> 901 Analisis AI 902 </button> 903</div> 904<!-- AI Disclaimer in Sidebar --> 905<div class="compare-disclaimer"> 906 <div class="ai-disclaimer"> 907 <div class="disclaimer-text"> 908 <strong>ð¡ Catatan:</strong> Dengan berbagai pilihan yang tersedia, pengguna memiliki kebebasan untuk menentukan jenis permainan yang paling sesuai dengan preferensi masing-masing. 909 </div> 910 </div> 911</div> 912</div><link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/pd-lightbox.css"> 913<style>.paylater-promo{display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,#141815 0,#131614 100%);border:1px solid #fca115;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:#fca115;font-weight:600}.paylater-text small{color:#fca115;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:#fca115;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;
913cursor: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:#c52222;color:#fff;border-color:#c52222}.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:#4146fe;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,#4146fe,#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> 914<style nonce="se3iyzEHMc9FQEB4wSyd0w=="> 915.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;
915display: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} 916.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)}} 917.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} 918.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:#fca115;margin:0} 919.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)} 920.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,#fca115 0%,#3c3300 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,#ef4444 0%,#dc2626 100%);color:#fff}.pd-share-name{font-size:12px;font-weight:600;color:#475569;text-align:center} 921.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:#fca115;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,#e90e0e 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)}
921.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,#c52222 0%,#a31616 100%);pointer-events:none} 922@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}} 923.mf-share{background:#fff;color:#fb923c;border:2px solid #fb923c;display:inline-flex;align-items:center;justify-content:center}.mf-share:active{transform:scale(.95)}.mf-share svg{display:block} 924@media(max-width:640px){.pd-share-btn{display:none!important}} 925.stock-badge.in{background:#e6f9ec;color:#801515;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} 926.stock-info-btn{--c:#e90e0e;--b:#bae6fd;--bg:#f0f9ff;--bg-h:#e0f2fe;--b-h:#e90e0e;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} 927.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} 928.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} 929.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} 930.sp-wa{ 931grid-column:3; justify-self:end; 932width:32px; height:32px; min-width:32px; min-height:32px; 933box-sizing:border-box; 934padding:0; line-height:0; text-decoration:none; outline:0; 935display:inline-flex; align-items:center; justify-content:center; 936border-radius:999px; border:1px solid rgba(211, 37, 37, 0.6); /* 1px untuk hasil âcrispâ */ 937background:rgba(37,211,102,.08); color:#d32525; 938transition:background-color .15s ease, border-color .15s ease, transform .05s ease; 939-webkit-tap-highlight-color:transparent; 940} 941.sp-wa:hover{background:rgba(37,211,102,.16);border-color:rgba(37,211,102,.75)} 942.sp-wa:active{transform:translateY(.5px) scale(.98)} 943.sp-wa svg{width:18px;height:18px;display:block;vertical-align:middle} 944.stock-popover a{text-decoration:none} 945#deskripsi img{max-width:200px!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}} 946.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:#ef4444}.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}} 947.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}} 948.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} 949.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)}} 950.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#e90e0e;font-size:11px;color:#0c4a6e;border-radius:4px} 951@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}} 952.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}} 953</style> 954<div class="pd-sticky-header" id="pd-sticky-header"><div class="pd-sticky-header-container"><div class="pd-sticky-thumb"><img src="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="TOGE123" id="pd-sticky-thumb-img"></div><div class="pd-sticky-info"><h2 class="pd-sticky-title" id="pd-sticky-title">TOGE123 - Spin Slot Bertema Thailand dan Peluang Jackpot</h2><div class="pd-sticky-price-row"><span class="pd-sticky-price" id="pd-sticky-price">Rp 10.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">
954<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> 955<main class="product-single product-single--v3"><nav class="pd-breadcrumb" aria-label="breadcrumb"><a href="//canadamalpractice.com/faqs/">TOGE123</a><span>/</span><a href="https://toge-ravion.click/">SLOT ONLINE</a><span></span><a href="https://toge-ravion.click/">SLOT777</a><span>/</span><a href="https://toge-ravion.click/">TOGEL ONLINE</a><span>/</span><a href="https://toge-ravion.click/">TOTO MACAU </a><span>/</span><span class="current">TOGE123 - Spin Slot Bertema Thailand dan Peluang Jackpot 956</span></nav> 957<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://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="TOGE123" data-slug="" loading="eager"> 958</figure> 959<div class="pd-mobile-slider-wrapper"> 960<div class="pd-mobile-slider" id="pd-mobile-slider" aria-label="Galeri gambar (geser)"><div class="pd-mslide"><img src="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="TOGE123" loading="eager"></div><div class="pd-mslide"><img src="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="TOGE123" loading="lazy"></div><div class="pd-mslide"><img src="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="TOGE123" loading="lazy"></div><div class="pd-mslide"><img src="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="TOGE123" loading="lazy"></div><div class="pd-mslide"><img src="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="TOGE123" loading="lazy"></div><div class="pd-mslide"><img src="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="TOGE123" loading="lazy"></div></div><div class="pd-gallery-counter" id="pd-gallery-counter">1/6</div></div> 961<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://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" data-alt="TOGE123" data-slug="" aria-label="Gambar 1"><img src="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="TOGE123" loading="lazy"></button><button type="button" class="pd-thumb-btn " data-full="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" data-alt="TOGE123" data-slug="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" aria-label="Gambar 2"><img src="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="TOGE123" loading="lazy"></button><button type="button" class="pd-thumb-btn " data-full="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" data-alt
961="TOGE123" 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://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="TOGE123" loading="lazy"></button><button type="button" class="pd-thumb-btn " data-full="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" data-alt="TOGE123" 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://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="TOGE123" loading="lazy"></button><button type="button" class="pd-thumb-btn " data-full="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" data-alt="TOGE123" 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://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="TOGE123" loading="lazy"></button><button type="button" class="pd-thumb-btn " data-full="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" data-alt="TOGE123" 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://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="TOGE123" 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"> 962 <h1 class="pd-title" id="pd-title">TOGE123 - Spin Slot Bertema Thailand dan Peluang Jackpot</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> 963<div id="pd-price-anchor"> 964</div> 965<div class="pd-price-qr-container"> 966 <div class="pd-price-block" id="pd-price-block"> 967 <div class="pd-price-row"> 968 <span class="pd-price-current" id="pd-price-current" >Rp 10.000</span> 969 <span class="pd-price-original" id="pd-price-original">Rp 50.000</span> 970 <span class="pd-discount-badge" id="pd-discount-badge">-90%</span></div> 971 <div class="pd-meta-row"> 972 <span class="sold-inline" id="pd-sold-inline" data-role="sold-chip">Terjual Terjual 2K</span> 973 <span class="pwp-trigger-badge" id="pwp-trigger-badge" hidden> 974 <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"> 975 <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> 976 <div class="pd-meta-inline"><span class="stock-badge out" id="pd-stock-badge">TOGE123</span> 977 <span class="sku">SKU: <span id="pd-sku">8S89G1554EGB</span></span></div> 978<div class="paylater-promo paylater-promo-sm paylater-mobile-only"> 979 <span class="paylater-icon">ð³</span> 980 <span class="paylater-text"> 981 <strong>TOGE123</strong> 982 <small>TOGE123 TOTO</small> 983 </span> 984</div> 985<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">
985<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"> 986<li class="sp-item"><div class="sp-left"><span class="sp-dot" style="--dot:#60a5fa;"></span><span class="sp-label">Asia Mega Mas</span></div><span class="sp-qty" id="sp-qty-meg">0</span><a class="sp-wa" href="https://toge-ravion.click/" 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> 987 <li class="sp-item"> 988 <div class="sp-left"> 989 <span class="sp-dot" style="--dot:#d33434;"></span> 990 <span class="sp-label">Medan Fair</span> 991 </div> 992 <span class="sp-qty" id="sp-qty-mdf">0</span> 993 <a class="sp-wa" 994 href="https://toge-ravion.click/" 995 target="_blank" rel="noopener" aria-label="WhatsApp Medan Fair"> 996 <svg class="ico-wa" viewBox="0 0 24 24" aria-hidden="true" focusable="false"> 997 <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"/> 998 </svg> 999 </a> 1000 </li> 1001 <li class="sp-item"> 1002 <div class="sp-left"> 1003 <span class="sp-dot" style="--dot:#f59e0b;"></span> 1004 <span class="sp-label">Banda Aceh</span> 1005 </div> 1006 <span class="sp-qty" id="sp-qty-bda">0</span> 1007 <a class="sp-wa" 1008 href="https://toge-ravion.click/" 1009 target="_blank" rel="noopener" aria-label="WhatsApp Banda Aceh"> 1010 <svg class="ico-wa" viewBox="0 0 24 24" aria-hidden="true" focusable="false">
1011 <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"/> 1012 </svg> 1013 </a> 1014 </li> 1015 </ul> 1016 </div> 1017 </div> 1018 <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> 1019 </div> 1020 <div id="pd-variants-anchor"></div> 1021 <div class="pd-compare-section"> 1022 <button type="button" class="pd-compare-btn" id="pd-compare-btn" data-product-id="325"> 1023 <svg class="compare-icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor"> 1024 <path d="M21,9L17,5V8H10V10H17V13M7,11L3,15L7,19V16H14V14H7V11Z"/> 1025 </svg> 1026 <span class="compare-text">Bandingkan Produk</span> 1027 <span class="compare-remove" hidden> 1028 <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"> 1029 <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"/> 1030 </svg> 1031 Hapus dari Perbandingan 1032 </span> 1033 </button> 1034 <div class="pd-compare-info"> 1035 <small class="compare-note" id="compare-note">Bandingkan hingga 5 produk dengan bantuan AI</small> 1036 </div> 1037 </div> 1038 <div class="pd-short-desc"><p><strong>Informasi TOGE123 :</strong></p><ul><li>Minimal Deposit: Rp.10.000,-</li><li>Jenis Permainan: Slot Online, Togel Online, Toto Macau</li><li>Metode Pembayaran: Bank, QRIS, E-Wallet, USDT</li><li>Mata Uang: IDR (Indonesian Rupiah)</li><li>Jam Operasional: 24 Jam Nonstop</li><li>Total Rating: 89.999.888</li><li>Rating: âââââ</li><li>Daftar Sekarang: <a href="https://toge-ravion.click/">Klik Disini</a></li></ul></div> 1039<div id="golden-slot-standalone-v3"> 1040 <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> 1041 </section> 1042 <aside class="pd-sidebar"> 1043 <div class="pd-side-card pd-buy-card"> 1044 <form class="pd-buy-form" id="pd-buy-form" data-pid="325"> 1045 <input type="hidden" name="variant_id" id="pd-variant-id" value="
10450"> 1046 <div> 1047 <label for="qty" class="qty-label">Qty</label> 1048 <input type="number" id="qty" name="qty" value="0" min="1" 1049 max="0" 1050 disabled> 1051 </div> 1052 <div class="pd-actions"> 1053 <button type="submit" class="btn-add-cart" id="btn-add-cart" disabled>+ Keranjang</button> 1054 <button type="button" class="btn-buy" id="btn-buy" data-id="278426" disabled >Beli</button> 1055 <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> 1056 </div> 1057 </form> 1058 <div class="paylater-promo paylater-promo-md paylater-desktop-only"> 1059 <span class="paylater-icon">ð³</span> 1060 <span class="paylater-text"> 1061 <strong>TOGE123</strong> 1062 <small>TOGE123 TOTO</small> 1063 </span> 1064</div> </div> 1065 <div class="pd-side-card qoala-banner-card"> 1066 <div class="qoala-banner"> 1067 <div class="qoala-banner-content"> 1068 <div class="qoala-icon"> 1069 <center><img src="https://meubelkayumurah.pics/wp-content/uploads/2026/05/icontoge123.png" alt="TOGE123" class="qoala-shield-img"></center> 1070 </div> 1071 <div class="qoala-text"> 1072 <div class="qoala-title">Login TOGE123</div> 1073 <div class="qoala-subtitle">Verified</div> 1074 </div> 1075 </div> 1076 <a href="https://toge-ravion.click/" class="qoala-cta" 1077 data-ga-event="qoala_banner_click" 1078 data-product-id="325"
1079 data-product-name="TOGE123" 1080 data-category-path="Komputer & Laptop/Laptop/Gaming" target="_blank">Info</a> 1081 </div> 1082<style>.qoala-banner-card{padding:0;overflow:hidden}.qoala-banner{background:linear-gradient(135deg, #c7a900 0%, #c5a806 100%);padding:12px 16px;display:flex;align-items:center;justify-content:space-between;color:white;text-decoration:none;min-height:60px}.qoala-banner-content{display:flex;align-items:center;gap:12px}.qoala-icon{display:flex;align-items:center;justify-content:center}.qoala-shield-img{width:36px;height:36px;object-fit:contain;opacity:0.9}.qoala-title{font-weight:600;font-size:14px;line-height:1.2}.qoala-subtitle{font-size:12px;opacity:0.9;line-height:1.2}.qoala-cta{background:rgba(255,255,255,0.2);color:white;padding:6px 12px;border-radius:6px;font-size:12px;font-weight:600;text-decoration:none;transition:background 0.2s ease;border:1px solid rgba(255,255,255,0.3)}.qoala-cta:hover{background:rgba(255,255,255,0.3);color:white}@media(max-width:768px){.qoala-banner{padding:10px 12px}.qoala-title{font-size:17px}.qoala-subtitle{font-size:11px}}</style> 1083 </div> 1084 <div class="pd-side-card pd-installment-card2" 1085 id="inst-card" 1086 data-base-price="20789000" 1087 data-zero-smart="0"> 1088 <div class="inst-head"> 1089 <h3>Fitur TOGE123</h3> 1090 </div> 1091 <div class="inst-bank-tabs" role="tablist" aria-label="Bank"> 1092 <button type="button" class="bank-tab active" data-bank="Syair Macau" aria-selected="true">Syair Macau</button> 1093 <button type="button" class="bank-tab" data-bank="SITUS TOGEL" aria-selected="false">SITUS TOGEL</button> 1094 <button type="button" class="bank-tab" data-bank="Buku Mimpi" aria-selected="false">Buku Mimpi</button> 1095 </div> 1096 <ul class="inst-month-list" id="inst-month-list" aria-label="Daftar cicilan per bulan"></ul> 1097 <div class="inst-note" id="inst-zero-note" style="display:none;">0% Cicilan khusus bank terpilih*</div> 1098 <div class="inst-disclaimer">Angka estimasi. Bisa ber https://jpspinserverthailand.com/ sesuai kebijakan bank / penyedia.</div> 1099 </div> 1100 <!-- MECHA BLUE FINAL BOSS REVIEW SLIDER --> 1101<div class="tnt-review-mecha"> 1102</div> 1103</div> 1104 <img 1105style=" 1106 display:block; 1107 margin-left:auto; 1108 margin-right:auto; 1109 max-width:100%; 1110 height:auto; 1111 border:2px solid rgb(255, 217, 0); 1112 border-radius:20px; 1113 box-shadow:1px 1px 5px black; 1114" 1115alt="TOGE123" 1116src="https://meubelkayumurah.pics/wp-content/uploads/2025/09/service-gold.gif" 1117/> 1118 </a> 1119</div> 1120<style> 1121/* CONTAINER */ 1122.article-pro { 1123max-width: 1000px; 1124margin: 40px auto; 1125padding: 30px 25px; 1126background: #ffffff; /* ð¥ UBAH JADI PUTIH */ 1127border-radius: 18px; 1128border: 2px solid #fca115; 1129box-shadow: 0 0 20px rgba(178, 171, 32, 0.2); 1130font-family: "Poppins", sans-serif; 1131color: #000000; /* ð¥ TEKS JADI HITAM */ 1132line-height: 1.8; 1133position: relative; 1134overflow: hidden; 1135} 1136/* ⨠CAHAYA GERAK */ 1137.article-pro::before { 1138content: ""; 1139position: absolute; 1140top: 0; 1141left: -150%; 1142width: 50%; 1143height: 100%; 1144background: linear-gradient( 1145 120deg, 1146 transparent, 1147 rgba(255, 240, 81, 0.49), 1148 transparent 1149); 1150transform: skewX(-20deg); 1151animation: shineMove 4s linear infinite; 1152} 1153/* ⨠GLOW DALAM */ 1154.article-pro::after { 1155content: ""; 1156position: absolute; 1157inset: 0; 1158border-radius: 18px; 1159box-shadow: inset 0 0 15px rgba(178, 166, 32, 0.15); 1160pointer-events: none; 1161} 1162/* ANIMASI */ 1163@keyframes shineMove { 11640% { left: -150%; } 1165100% { left: 150%; } 1166} 1167/* PARAGRAF */ 1168.article-pro p { 1169font-size: 15px; 1170margin-bottom: 18px; 1171text-align: justify; 1172color: #1e293b; /* ð¥ warna teks gelap biar enak dibaca */ 1173position: relative; 1174z-index: 2; 1175} 1176/* HOVER PARAGRAF */ 1177.article-pro p:hover { 1178color: #000000; 1179text-shadow: 0 0 6px rgba(178, 166, 32, 0.4); 1180transition: 0.3s; 1181} 1182/* LINK */ 1183.article-pro a { 1184color: #d3b300; 1185text-decoration: none;
1186font-weight: 600; 1187} 1188.article-pro a:hover { 1189text-shadow: 0 0 8px #fca115; 1190} 1191/* RESPONSIVE */ 1192@media(max-width:600px){ 1193.article-pro{ 1194 padding:20px 15px; 1195} 1196} 1197</style> 1198<div class="article-pro"> 1199<p> 1200<a href="https://toge-ravion.click/">TOGE123</a> hadir sebagai platform slot gacor terbaik yang dirancang khusus untuk para pemain yang mengejar kemenangan dengan tingkat winrate sangat tinggi setiap harinya. Dengan memadukan teknologi permainan modern dan sistem yang adil, kami memastikan setiap putaran mesin memberikan peluang jackpot yang maksimal bagi seluruh member setia. Tidak hanya menawarkan pengalaman bermain yang seru dan stabil, kami juga didukung oleh sistem transaksi yang super cepat serta layanan pelanggan profesional yang selalu siap membantu selama 24 jam penuh. Segera bergabung dengan TOGE123 sekarang juga untuk membuktikan sendiri betapa mudahnya meraih kemenangan besar dan menikmati berbagai keuntungan eksklusif yang telah kami siapkan di setiap sesi permainan Anda. 1201</p> 1202<center><ul><H2> 1203Keunggulan Dan Kelebihan Situs TOGE123 1204</H2></ul></center> 1205<p> 1206TOGE123 unggul karena mengutamakan transparansi dalam setiap putaran permainan. Platform ini dilengkapi dengan tingkat winrate yang sangat tinggi, sehingga memberikan peluang menang yang lebih besar bagi para pemain dibandingkan situs lainnya. Selain itu, sistem permainan kami telah teruji adil dan bebas dari kecurangan, memastikan bahwa setiap member memiliki kesempatan yang sama untuk meraih kemenangan maxwin. 1207</p> 1208<center><ul><H2> 1209Mengapa Harus Memilih TOGE123? Apa Kelebihan Fitur Disini? 1210</H2></ul></center> 1211<p> 1212TOGE123 dikenal punya winrate yang sangat tinggi. Artinya, peluang mesin buat mengeluarkan kemenangan jauh lebih besar, jadi lo nggak perlu nunggu lama buat ngerasain sensasi jackpot. 1213</p> 1214<center><ul><H2> 1215Pelayanan Yang Disediakan TOGE123 1216</H2></ul></center> 1217<p> 1218<strong>Customer Service Responsif 24/7:</strong> Tim kita selalu standby kapan pun lo butuh. Mau nanya cara daftar, tanya soal bonus, atau ada masalah teknis, tim CS kita bakal bantu dengan ramah, cepat, dan solutif. 1219</p> 1220<p><strong>Transaksi Kilat & Aman:</strong> Kita punya sistem deposit dan withdraw yang super cepat. Prosesnya cuma hitungan detik, jadi lo nggak perlu nunggu lama buat main atau buat nikmatin hasil kemenangan lo. Metode pembayarannya juga banyak, dari transfer bank, e-wallet, sampai pulsa.</p> 1221<p><strong>Bocoran RTP Live:</strong> Ini pelayanan eksklusif buat bantu lo menang. Kita sediain data RTP yang update terus secara real-time, jadi lo bisa milih game yang lagi gacor-gacornya biar peluang jackpot makin besar.</p> 1222<p><strong>Situs yang Ringan & Stabil:</strong> Kita pastiin situs TOGE123 enak diakses lewat perangkat apa pun, entah itu HP atau laptop. Aksesnya enteng, nggak bikin lemot, dan server kita stabil biar nggak ada lag pas lagi seru-serunya main.</p> 1223<p><strong>Panduan & Tips Main:</strong> Kita nggak cuma sediain tempat main, tapi juga kasih info soal tips dan trik biar lo makin jago. Kita bakal bantu lo buat paham pola permainan biar kesempatan buat dapet maxwin makin lebar.</p> 1224<center><ul><H2> 1225Promo Dan Bonus Yang Melimpah Di TOGE123 1226</H2></ul></center> 1227<p> 1228<strong>Bonus New Member 100%:</strong> Ini modal awal paling mantap buat lo yang baru gabung. Begitu daftar dan deposit pertama, saldo lo bakal langsung ditambahin biar kesempatan main lo makin panjang dan peluang buat menang makin terbuka lebar. 1229</p> 1230<p><strong>Bonus Deposit Harian:</strong> Bukan cuma pas baru daftar, tiap hari lo juga bisa dapetin tambahan bonus saat melakukan deposit. Jadi, modal lo tiap hari selalu keisi dan siap dipakai buat gaspol di game favorit.</p> 1231</div> 1232<style> 1233body{ 1234 background:#ffffff; 1235 font-family:'Segoe UI',sans-serif; 1236 margin:0; 1237} 1238/* WRAP */ 1239.sgt-wrap{ 1240 max-width:1100px; 1241 margin:60px auto; 1242 padding:0 20px; 1243} 1244/* ========================= 1245MAIN BOX + GLOW ANIMATION 1246========================= */ 1247.sgt-box{ 1248 background:#ffffff; 1249 border-radius:20px; 1250 padding:40px; 1251 border:1px solid rgba(255, 0, 0, 0.25); 1252 position:relative; 1253 overflow:hidden; 1254 box-shadow:0 0 15px rgba(255, 0, 0, 0.25); 1255 animation: boxGlow 2.8s infinite ease-in-out; 1256} 1257/* glow pulse */ 1258@keyframes boxGlow{ 1259 0%{ 1260 box-shadow:0 0 10px rgba(178, 156, 32, 0.15), 1261 0 0 0px rgba(178, 163, 32, 0); 1262 } 1263 50%{ 1264 box-shadow:0 0 25px rgba(255, 0, 0, 0.25), 1265 0 0 60px rgba(178, 168, 32, 0.25); 1266 } 1267 100%{ 1268 box-shadow:0 0 10px rgba(178, 151, 32, 0.15), 1269 0 0 0px rgba(178, 32, 32, 0); 1270 } 1271} 1272/* SHINE EFFECT DI BOX */ 1273.sgt-box::after{ 1274 content:""; 1275 position:absolute; 1276 top:0; 1277 left:-75%; 1278 width:50%; 1279 height:100%; 1280 background:linear-gradient( 1281 120deg, 1282 transparent, 1283 rgba(255, 0, 0, 0.25), 1284 transparent 1285 ); 1286 animation: shine 3.5s infinite; 1287} 1288@keyframes shine{ 1289 0%{ left:-75%; } 1290 100%{ left:125%; } 1291} 1292/* TITLE */ 1293.sgt-title{ 1294 text-align:center; 1295 font-size:26px; 1296 font-weight:700; 1297 color:#eb1b1b; 1298 margin-bottom:25px; 1299} 1300/* ========================= 1301FAQ CARD + GLOW 1302========================= */ 1303.sgt-faq{ 1304 background:#f8fafc; 1305 border-radius:14px; 1306 margin-bottom:14px; 1307 cursor:pointer; 1308 border:1px solid rgba(178, 166, 32, 0.25); 1309 transition:0.3s; 1310 position:relative; 1311 overflow:hidden; 1312} 1313/* glow subtle tiap kotak */ 1314.sgt-faq::after{ 1315 content:""; 1316 position:absolute; 1317 inset:0; 1318 background:radial-gradient(circle at top left, 1319 rgba(255, 0, 0, 0.25), 1320 transparent 60%); 1321 opacity:0; 1322 transition:0.3s; 1323} 1324.sgt-faq:hover::after{ 1325 opacity:1; 1326} 1327.sgt-faq:hover{ 1328 transform:translateY(-3px); 1329 box-shadow:0 0 20px rgba(0, 0, 0, 0.25); 1330 border-color:#fca115; 1331} 1332/* QUESTION */ 1333.sgt-question{ 1334 padding:18px 20px; 1335 display:flex; 1336 justify-content:space-between; 1337 font-weight:600; 1338 font-size:16px; 1339 color:#0f172a; 1340} 1341.sgt-icon{ 1342 color:#fca115; 1343} 1344/* ANSWER */ 1345.sgt-answer{ 1346 max-height:0; 1347 overflow:hidden; 1348 padding:0 20px; 1349 font-size:15px; 1350 color:#475569; 1351 transition:0.3s; 1352} 1353.sgt-faq.active .sgt-answer{ 1354 max-height:250px; 1355 padding:15px 20px; 1356} 1357/* ========================= 1358REVIEW CARD + GLOW 1359========================= */ 1360.sgt-review{ 1361 background:#f8fafc; 1362 padding:18px; 1363 border-radius:14px; 1364 margin-top:12px; 1365 border:1px solid rgba(32,178,170,0.25); 1366 color:#334155; 1367 position:relative; 1368 overflow:hidden; 1369 transition:0.3s; 1370} 1371/* glow sweep review */ 1372.sgt-review::after{ 1373 content:""; 1374 position:absolute; 1375 top:0; 1376 left:-80%; 1377 width:50%; 1378 height:100%; 1379 background:linear-gradient( 1380 120deg, 1381 transparent, 1382 rgba(178, 159, 32, 0.25), 1383 transparent 1384 ); 1385 animation: shine 4s infinite; 1386} 1387.sgt-review:hover{ 1388 transform:translateY(-3px); 1389 box-shadow:0 0 20px rgba(178, 161, 32, 0.25); 1390 border-color:#fca115; 1391} 1392.sgt-name{ 1393 color:#d80000; 1394 font-weight:700; 1395 margin-bottom:6px; 1396 position:relative; 1397 z-index:2; 1398} 1399/* FOOTER */ 1400.sgt-footer{ 1401 margin-top:30px; 1402 padding-top:18px; 1403 border-top:1px solid rgba(178, 159, 32, 0.2); 1404 text-align:center; 1405 font-size:14px; 1406 color:#8b6464; 1407} 1408/* RESPONSIVE */ 1409@media(max-width:768px){ 1410 .sgt-box{ 1411 padding:25px; 1412 } 1413 .sgt-title{ 1414 font-size:20px; 1415 } 1416} 1417</style> 1418</head> 1419<body> 1420<div class="sgt-wrap"> 1421<div class="sgt-box"> 1422<h3 class="sgt-title">FAQ SEPUTARAN PEMAIN TOGE123</h3> 1423<div class="sgt-faq"> 1424<div class="sgt-question">
1424Apa itu TOGE123?<span class="sgt-icon">â¼</span></div> 1425<div class="sgt-answer">TOGE123 merupakan platform hiburan online yang menyediakan berbagai jenis permainan seperti slot online, Slot777, hingga togel Toto Macau dengan sistem yang dirancang untuk memberikan pengalaman bermain yang mudah, cepat, dan terintegrasi dalam satu akun, sehingga pemain tidak perlu berpindah platform untuk menikmati berbagai jenis permainan yang tersedia, selain itu situs ini juga dikenal menyediakan pasaran togel lengkap serta sistem permainan yang transparan dengan update hasil secara real-time sehingga pemain dapat melihat hasil dengan akurat setiap saat.</div> 1426</div> 1427<div class="sgt-faq"> 1428<div class="sgt-question">Apa saja permainan yang tersedia di TOGE123?<span class="sgt-icon">â¼</span></div> 1429<div class="sgt-answer">TOGE123 menyediakan berbagai pilihan permainan yang sangat lengkap mulai dari Slot777 dengan berbagai provider populer, slot online modern dengan fitur bonus seperti free spin dan jackpot progresif, hingga togel online termasuk Toto Macau 4D yang memiliki jadwal pengeluaran rutin dan data result yang selalu diperbarui secara otomatis, sehingga pemain dapat memilih permainan sesuai dengan preferensi mereka tanpa merasa terbatas oleh pilihan yang sedikit.</div> 1430</div> 1431<div class="sgt-faq"> 1432<div class="sgt-question">Apakah TOGE123 menyediakan Toto Macau dengan hasil real-time?<span class="sgt-icon">â¼</span></div> 1433<div class="sgt-answer">Ya, TOGE123 menyediakan fitur hasil pengeluaran Toto Macau secara real-time yang dapat diakses langsung oleh pemain kapan saja, sehingga setiap hasil angka yang keluar dapat dilihat secara transparan tanpa adanya keterlambatan atau mani
1433pulasi, hal ini menjadi salah satu keunggulan utama karena pemain dapat menggunakan data tersebut sebagai bahan analisis sebelum memasang taruhan berikutnya.</div> 1434</div> 1435<div class="sgt-faq"> 1436<div class="sgt-question">Apakah bonus bisa langsung ditarik?<span class="sgt-icon">â¼</span></div> 1437<div class="sgt-answer">Sebagian besar bonus yang diberikan oleh TOGE123 memiliki syarat turnover tertentu sebelum dapat ditarik, yang berarti pemain harus memainkan sejumlah taruhan terlebih dahulu sesuai ketentuan yang berlaku, namun syarat tersebut umumnya cukup ringan sehingga tetap memungkinkan pemain untuk mencairkan kemenangan dengan relatif mudah setelah memenuhi persyaratan yang ditentukan.</div> 1438</div> 1439<div class="sgt-faq"> 1440<div class="sgt-question">Berapa minimal deposit di TOGE123?<span class="sgt-icon">â¼</span></div> 1441<div class="sgt-answer">Minimal deposit di TOGE123 tergolong cukup terjangkau, bahkan mulai dari nominal rendah seperti Rp10.000 hingga Rp50.000 tergantung pada jenis promo yang digunakan, sehingga platform ini sangat cocok bagi pemain pemula yang ingin mencoba bermain tanpa harus mengeluarkan modal besar di awal.</div> 1442</div> 1443<div class="sgt-faq"> 1444<div class="sgt-question">Apakah transaksi di TOGE123 cepat dan aman?<span class="sgt-icon">â¼</span></div> 1445<div class="sgt-answer">TOGE123 menyediakan sistem transaksi yang cepat dan aman dengan berbagai metode pembayaran seperti transfer bank dan e-wallet, di mana proses deposit dan withdraw dapat dilakukan dalam waktu singkat karena menggunakan sistem otomatis, sehingga pemain tidak perlu menunggu lama untuk mulai bermain atau mencairkan hasil kemenangan mereka.</div> 1446</div> 1447<h3 class="sgt-title">REVIEW PEMAIN TOGE123</h3> 1448<div class="sgt-review"><div class="sgt-name">Amzal</div>Saya sudah coba banyak situs, tapi TOGE123 paling stabil menurut saya, terutama saat main Slot777 yang jarang lag dan sering kasih bonus, bahkan beberapa kali saya berhasil dapat kemenangan lumayan besar hanya dari modal kecil, jadi sangat recommended untuk yang mau cari peluang jackpot harian.</div> 1449<div class="sgt-review"><div class="sgt-name">Andreas</div>Yang saya suka dari TOGE123 itu transaksi cepat banget, deposit masuk instan dan withdraw juga nggak ribet, saya juga sering main Toto Macau di sini karena datanya update terus jadi lebih gampang buat analisis angka.</div> 1450<div class="sgt-review"><div class="sgt-name">Chrismast</div>Sebagai pemain slot, saya ngerasa TOGE123 punya banyak pilihan game dengan RTP tinggi, apalagi sering ada free spin yang bikin main jadi lebih seru tanpa harus keluar banyak modal.</div> 1451<div class="sgt-review"><div class="sgt-name">Gerry</div>Awalnya coba-coba, tapi sekarang jadi rutin main di TOGE123 karena bonusnya lumayan besar, apalagi cashback-nya membantu banget kalau lagi kurang hoki.</div> 1452<div class="sgt-review"><div class="sgt-name">Erik</div>Customer service-nya ramah dan cepat respon, saya pernah ada kendala transaksi langsung dibantu sampai selesai, jadi merasa aman dan nyaman bermain di sini.</div> 1453<div class="sgt-review"><div class="sgt-name">Zikmek</div>Main togel Toto Macau di TOGE123 menurut saya lebih enak karena hasilnya cepat keluar dan datanya lengkap, jadi bisa bikin strategi sendiri.</div> 1454<div class="sgt-footer"> 1455©2026 Seo DRIFT | TOGE123 1456</div> 1457</div> 1458</div>
1459<script> 1460const faq = document.querySelectorAll(".sgt-faq"); 1461faq.forEach(item=>{ 1462 item.addEventListener("click", ()=>{ 1463 faq.forEach(el=>{ 1464 if(el !== item) el.classList.remove("active"); 1465 }); 1466 item.classList.toggle("active"); 1467 }); 1468}); 1469</script>
1469 1470 <section class="pd-related-full"> 1471 <h2 class="pd-related-title">Produk Terkait</h2> 1472 <div class="pd-related-grid pd-related-grid--full"> 1473 <a class="pd-related-card" href="//canadamalpractice.com/faqs/"> 1474 <div class="thumb"> 1475 <img src="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="TOGE123"> 1476 <span class="mini-disc">-2%</span> </div> 1477 <div class="info"> 1478 <h3>TOGE123</h3> 1479 <div class="spec-chips">I5 <span class="spec-divider">|</span> 16GB <span class="spec-divider">|</span> 512GB <span class="spec-divider">|</span> RTX3050</div> <span class="price"> 1480 <span class="final">Rp 10.500.000</span> 1481 <span class="ori">Rp 12.799.000</span> 1482 </span> 1483 <span class="sold">Terjual 200+</span> <span class="stock-dot low" title="Stok Terbatas"></span> 1484 </div> 1485 </a> 1486 <a class="pd-related-card" href="//canadamalpractice.com/faqs/"> 1487 <div class="thumb"> 1488 <img src="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="SLOT ONLINE"> 1489 <span class="mini-disc">-1%</span> </div> 1490 <div class="info"> 1491 <h3>SLOT ONLINE</h3> 1492 <div class="spec-chips">I7 <span class="spec-divider">|</span> 16GB <span class="spec-divider">|</span> 512GB <span class="spec-divider">|</span> RTX5050</div> <span class="price"> 1493 <span class="final">Rp 23.887.000</span> 1494 <span class="ori">Rp 21.999.000</span> 1495 </span> 1496 <span class="sold">Terjual 20+</span> <span class="stock-dot out" title="Habis"></span> 1497 </div> 1498 </a> 1499 <a class="pd-related-card" href="https://toge-ravion.click/"> 1500 <div class="thumb"> 1501 <img src="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="SLOT777"> 1502 <span class="mini-disc">-1%</span> </div> 1503 <div class="info"> 1504 <h3>SLOT777</h3> 1505 <div class="spec-chips">R7AI <span class="spec-divider">|</span> 16GB <span class="spec-divider">|</span> 1TB <span class="spec-divider">|</span> RTX5060</div> <span class="price"> 1506 <span class="final">Rp 24.600.000</span> 1507 <span class="ori">Rp 21.399.000</span> 1508 </span> 1509 <span class="sold">Terjual 6</span> <span class="stock-dot ready" title="Ready"></span> 1510 </div> 1511 </a> 1512 <a class="pd-related-card" href="https://toge-ravion.click/"> 1513 <div class="thumb"> 1514 <img src="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="TOGEL ONLINE"> 1515 <span class="mini-disc">-1%</span> </div> 1516 <div class="info"> 1517 <h3>TOGEL ONLINE</h3> 1518 <div class="spec-chips">R5AI <span class="spec-divider">|</span> 16GB <span class="spec-divider">|</span> 1TB <span class="spec-divider">|</span> RTX5060</div> <span class="price"> 1519 <span class="final">
1519Rp 16.800.000</span> 1520 <span class="ori">Rp 19.799.000</span> 1521 </span> 1522 <span class="sold">Terjual 5</span> <span class="stock-dot ready" title="Ready"></span> 1523 </div> 1524 </a> 1525 <a class="pd-related-card" href="https://toge-ravion.click/"> 1526 <div class="thumb"> 1527 <img src="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="TOTO MACAU"> 1528 <span class="mini-disc">-1%</span> </div> 1529 <div class="info"> 1530 <h3>TOTO MACAU</h3> 1531 <div class="spec-chips">I7 <span class="spec-divider">|</span> 16GB <span class="spec-divider">|</span> 512GB <span class="spec-divider">|</span> RTX5050</div> <span class="price"> 1532 <span class="final">Rp 28.600.080</span> 1533 <span class="ori">Rp 27.999.000</span> 1534 </span> 1535 <span class="sold">Terjual 6</span> <span class="stock-dot low" title="Stok Terbatas"></span> 1536 </div> 1537 </a> 1538 <a class="pd-related-card" href="https://toge-ravion.click/"> 1539 <div class="thumb"> 1540 <img src="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="TOTO SLOT"> 1541 <span class="mini-disc">-1%</span> </div> 1542 <div class="info"> 1543 <h3>TOTO SLOT</h3> 1544 <div class="spec-chips">CORE5 <span class="spec-divider">|</span> 16GB <span class="spec-divider">|</span> 512GB <span class="spec-divider">|</span> RTX4050</div> <span class="price"> 1545 <span class="final">Rp 17.888.000</span> 1546 <span class="ori">Rp 18.499.000</span> 1547 </span> 1548 <span class="stock-dot low" title="Stok Terbatas"></span> 1549 </div> 1550 </a> 1551 </div> 1552 </section> 1553 <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> 1554 <button type="button" 1555 class="pd-scroll-top" 1556 id="pd-scroll-top" 1557 aria-label="Kembali ke atas" 1558 title="Kembali ke atas"> 1559 <svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true">
1560 <path fill="currentColor" d="M7.41 14.59 12 10l4.59 4.59L18 13.17l-6-6-6 6z"/> 1561 </svg> 1562 </button>
1563<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":"0e3b36ed99ac47ee9ac3185ab30c2f2c","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 1563
1563
1564<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":"86b92806e6ad40aa9c73072222ebca85","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 1564
1564
1565<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":"37e20f4229ee431eaad4a9314bb5116f","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 1565
1565
1566<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":"37e20f4229ee431eaad4a9314bb5116f","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 1566
1566
1567<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":"17ac9630a9494b1bb7e22f16384a161c","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 1567
1567
1568<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":"17ac9630a9494b1bb7e22f16384a161c","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 1568
1568
1569<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":"17ac9630a9494b1bb7e22f16384a161c","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 1569
1569
1570<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":"17ac9630a9494b1bb7e22f16384a161c","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 1570
1570
1571<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":"17ac9630a9494b1bb7e22f16384a161c","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 1571
1571
1572<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":"17ac9630a9494b1bb7e22f16384a161c","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 1572
1572
1573<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":"17ac9630a9494b1bb7e22f16384a161c","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 1573
1573
1574<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":"17ac9630a9494b1bb7e22f16384a161c","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 1574
1574
1575<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":"17ac9630a9494b1bb7e22f16384a161c","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 1575
1575
1576<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":"17ac9630a9494b1bb7e22f16384a161c","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 1576
1576
1577<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"acdbdc7b4e0f4605940b1d5fcaee1fc8","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 1577
1577
1578<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"4fd47e6d0989427a851eaf1e5cc4b41d","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 1578
1578
1579<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"900a56a5f0fe4f1aad3c6f37c3e7cb1c","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 1579
1579
1580<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"2caff6d3614e4515832df328830e0c52","r":1,"spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 1580
1580
1581<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"c0b70dfe574e45a98353b6a9b3244437","r":1,"spa":2}' crossorigin="anonymous"></script>
1581 1582</main> 1583<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://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="TOGE123" class="pd-share-preview-img"><div class="pd-share-preview-info"><h3 class="pd-share-preview-name">TOGE123</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="https://toge-ravion.click/" 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="https://toge-ravion.click/" 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="https://toge-ravion.click/" 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="https://toge-ravion.click/" 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="https://toge-ravion.click/" class="pd-share-option" data-share="email"><span class="pd-share-icon pd-share-icon-email"><svg viewBox="0 0 24 24">
1583<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://jpspinserverthailand.com/" 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> 1584<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:#e90e0e;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 #c52222}.toast.info{border-left:4px solid #e90e0e}.toast.warn{border-left:4px solid #f59e0b}.toast .progress{position:absolute;left:0;bottom:0;height:3px;background:linear-gradient(90deg,#60a5fa,#c52222);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> 1585<style> 1586.toast .msg { word-break: break-word; overflow-wrap: anywhere; } 1587.toast-root { bottom: max(12px, env(safe-area-inset-bottom, 12px)); } 1588@media (max-width: 540px) { 1589.toast-root { 1590 left: 0; right: 0; transform: none; 1591 padding: 0 12px; 1592 bottom: calc(max(12px, env(safe-area-inset-bottom, 12px)) + var(--fab-offset, 72px)); 1593 max-width: none; 1594} 1595.toast { 1596 grid-template-columns: 1fr; /* 1 kolom */ 1597 position: relative; 1598 padding: 14px 14px 12px 14px; 1599 border-radius: 16px; 1600} 1601.toast .ico { 1602 position: absolute; left: 14px; top: 14px; 1603 margin: 0; transform: translateY(1px); 1604} 1605.toast .cnt { padding-left: 34px; } 1606.toast .ttl { font-size: 15px; margin-bottom: 6px; } 1607.toast .msg { font-size: 13px; opacity: .96; } 1608.toast .actions { 1609 margin-top: 12px; gap: 10px; width: 100%; 1610 display: grid; grid-template-columns: 1fr 1fr; 1611} 1612.toast .btn { width: 100%; min-width: 0; padding: 10px 0; } 1613.toast .close { position: absolute; right: 6px; top: 6px; } 1614} 1615</style>
1616<script nonce="se3iyzEHMc9FQEB4wSyd0w=="> 1617(function adjustToastFabOffset(){ 1618const root = document.getElementById('toastRoot'); 1619if (!root) return; 1620function isVisible(el){ 1621 if (!el) return false; 1622 const cs = getComputedStyle(el); 1623 if (cs.display === 'none' || cs.visibility === 'hidden' || cs.opacity === '0') return false; 1624 const r = el.getBoundingClientRect(); 1625 return r.width > 0 && r.height > 0; 1626} 1627function update(){ 1628 const fab = document.getElementById('pd-mobile-fab'); 1629 let extra = 16; 1630 if (isVisible(fab)) { 1631 const h = Math.round(fab.getBoundingClientRect().height) || 56; 1632 extra = h + 16; // FAB height + margin 1633 } 1634 root.style.setProperty('--fab-offset', extra + 'px'); 1635} 1636window.addEventListener('resize', update, { passive: true }); 1637const fab = document.getElementById('pd-mobile-fab'); 1638if (window.ResizeObserver && fab) { 1639 const ro = new ResizeObserver(update); 1640 ro.observe(fab); 1641} 1642update(); 1643})(); 1644</script>
1644 1645<div class="toast-root" id="toastRoot" aria-live="polite" aria-atomic="true"></div>
1646<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="#c52222"><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="#e90e0e"><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="#e90e0e"/></svg>'} 1647window.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>`; 1648 const close = ()=> { 1649 if (!el.parentNode) return; 1650 el.style.transition = 'transform .2s ease, opacity .2s ease'; 1651 el.style.opacity = '0'; el.style.transform = 'translateY(10px)'; 1652 setTimeout(()=>{ if (el.parentNode) el.parentNode.removeChild(el); }, 220); 1653 }; 1654 el.querySelector('.close').addEventListener('click', close); 1655 el.querySelectorAll('.actions .btn').forEach(btn=>{ 1656 btn.addEventListener('click', ()=>{ 1657 const lab = btn.getAttribute('data-act'); 1658 try { 1659 (o.actions||[]).forEach(a=>{ if (a.label===lab && typeof a.onClick==='function') a.onClick(); }); 1660 } catch(_){} 1661 close(); 1662 }); 1663 }); 1664 root.appendChild(el); 1665 setTimeout(close, o.duration); 1666 return el; 1667}; 1668})(); 1669const _0x1a2b=[{"url":"https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.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://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.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://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png"},{"url":"https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.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://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.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://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.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://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.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
1669p2-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="8S89G1554EGB";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(' / '):''} 1670function encodeVariantHash(id){if(!id||id<=0)return '';const xor=id^0x4A5D;return xor.toString(36)} 1671function decodeVariantHash(hash){if(!hash)return 0;const xor=parseInt(hash,36);return isNaN(xor)?0:xor^0x4A5D} 1672function 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:"8S89G1554EGB",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})} 1673function executeBuyNowLegacy(id,variantId){const a=getVariantSummaryText(),b=(function(){const c=document.getElementById('pd-sku');return c?c.textContent.trim():_0x5e6f})(); 1674 let willRedirect = false; 1675 try { 1676 if (window.addToCart) { 1677 window.addToCart(id, 1, variantId); 1678 willRedirect = false; 1679 } 1680 } catch(_){} 1681 if (willRedirect) { 1682 showToast({ 1683 type: 'info', 1684 title: 'Menuju Keranjang', 1685 message: `<strong>${escapeHtml(PD_NAME)}</strong>${variantText?` · <em>${escapeHtml(variantText)}</em>`:''}<br>SKU: ${escapeHtml(skuText)} · Qty: 1`, 1686 duration: 1800 1687 }); 1688 setTimeout(()=>{ window.location.href='/keranjang'; }, 1200); 1689 } else { 1690 showToast({ 1691 type: 'warn', 1692 title: 'Fitur Beli Langsung Segera Hadir', 1693 message: `Sementara ini Anda bisa menambahkan produk ke keranjang terlebih dahulu.<br><strong>${escapeHtml(PD_NAME)}</strong>${variantText?` · <em>${escapeHtml(variantText)}</em>`:''}`, 1694 duration: 6000, 1695 actions: [ 1696 { label: '+ Keranjang', onClick: ()=> { try{ if (window.addToCart) window.addToCart(id,1,variantId); }catch(_){} } }, 1697 { label: 'Hubungi CS', variant: 'alt', onClick: ()=> { window.open('https://wa.me/6281380009898','_blank'); } } 1698 ] 1699 }); 1700 } 1701} 1702document.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)})}}); 1703function _0x2m3n(s){return String(s||'').replace(/[&<>"']/g,m=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[m]))} 1704(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')}})})(); 1705(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;
1705slides.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})})(); 1706/* ================= Simulasi Cicilan ================= */ 1707(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'} 1708function _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'} 1709card.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)}); 1710window.instSetBasePrice=function(newPrice){setBasePrice(newPrice);_0x4o5p(activeBank())};_0x4o5p(activeBank()); 1711})(); 1712/* ====== Fokus gambar varian ====== */ 1713function _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 ''}}} 1714function _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}} 1715if (c){ 1716 const targetName = _0x8s9t(url); 1717 const slideImg = Array.from(c.querySelectorAll('img')).find(im => _0x8s9t(im.src) === targetName); 1718 if (slideImg){ 1719 try { 1720 const container = c; 1721 const imgRect = slideImg.getBoundingClientRect(); 1722 const contRect = container.getBoundingClientRect(); 1723 const offsetLeft = slideImg.offsetLeft - container.offsetLeft; 1724 const center = offsetLeft - (container.clientWidth - slideImg.clientWidth) / 2; 1725 container.scrollTo({ left: Math.max(0, center), behavior: 'smooth' }); 1726 } catch(_){ 1727 slideImg.scrollIntoView({ behavior:'smooth', inline:'center', block:'nearest' }); 1728 } 1729 } 1730} 1731} 1732function findImageForVariant(variant){ 1733if (!variant || !variant.attrs) return null; 1734const tokens = []; 1735try{ 1736 Object.values(variant.attrs).forEach(v=>{ 1737 if (!v) return; 1738 const raw = String(v); 1739 tokens.push(raw); 1740 tokens.push(normalize(raw)); 1741 }); 1742}catch(_){} 1743if (variant.sku){ 1744 tokens.push(String(variant.sku)); 1745 tokens.push(normalize(String(variant.sku))); 1746} 1747if (variant.image_url) { 1748 tokens.push(String(variant.image_url)); 1749} 1750let best = null; 1751let bestScore = -1; 1752for (const g of (galleryData||[])){ 1753 const slugN = normalize(g.slug||''); 1754 const altN = normalize(g.alt||''); 1755 const file = _0x8s9t(g.url||''); 1756 const fileN = normalize(file); 1757 const imgU = g.url; 1758 for (const t of tokens){ 1759 const tN = normalize(t); 1760 if (!tN) continue; 1761 let score = -1; 1762 if (imgU === tN) score = 300; 1763 if (slugN && slugN === tN) score = 300; 1764 else if (fileN && fileN.includes(tN)) score = 200; 1765 else if (altN && altN.includes(tN)) score = 120; 1766 if (score > bestScore){ 1767 bestScore = score; 1768 best = g; 1769 } 1770 if (bestScore >= 300) break; 1771 } 1772 if (bestScore >= 300) break; 1773} 1774return bestScore >= 120 ? best : null; 1775} 1776function _0xey3z(variant){const a=_0xcw2x(variant);if(a&&a.url){_0xau1v(a.url,a.alt||'')}} 1777/* ====== Layout mobile ====== */ 1778(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; 1779 let pricePlaced = false;
1780 let varPlaced = false; 1781 let titlePlaced = false; 1782 let promoPlaced = false; 1783 const mq = window.matchMedia('(max-width: 640px)'); 1784 function apply(){ 1785 if (mq.matches) { 1786 if (!titlePlaced && a && titleRow && d.contains(titleRow)) { try{a.appendChild(titleRow);titlePlaced=true;}catch(_){} } 1787 if (!pricePlaced && a && b) { try{a.appendChild(b);pricePlaced=true;}catch(_){} } 1788 if (!varPlaced && f && d && e) { 1789 try{ 1790 f.hidden = false; 1791 if (i && !f.contains(i)) f.appendChild(i); 1792 if (g && !f.contains(g)) f.appendChild(g); 1793 if(d.contains(e))d.insertBefore(f, e); 1794 varPlaced = true; 1795 }catch(_){} 1796 } 1797 if (!promoPlaced && promoBanner && compareSection && compareSection.parentNode) { 1798 try{ 1799 compareSection.parentNode.insertBefore(promoBanner, compareSection); 1800 promoPlaced = true; 1801 }catch(_){} 1802 } 1803 } else { 1804 if (titlePlaced && titleRow && d) { 1805 try{ 1806 const vcombined = document.getElementById('pd-variant-combined'); 1807 if (vcombined && d.contains(vcombined)) { 1808 d.insertBefore(titleRow, vcombined); 1809 } else { 1810 d.insertBefore(titleRow, d.firstChild); 1811 } 1812 titlePlaced=false; 1813 }catch(_){} 1814 } 1815 if (pricePlaced && b && c && c.parentNode) { 1816 try{c.parentNode.insertBefore(b, c.nextSibling);pricePlaced=false;}catch(_){} 1817 } 1818 if (varPlaced) { 1819 try{ 1820 if (i && j && j.parentNode && !j.parentNode.contains(i)) j.parentNode.insertBefore(i, j.nextSibling); 1821 if (g && h && h.parentNode && !h.parentNode.contains(g)) h.parentNode.insertBefore(g, h.nextSibling); 1822 if (f) { f.hidden = true; f.innerHTML = ''; } 1823 varPlaced = false; 1824 }catch(_){} 1825 } 1826 if (promoPlaced && promoBanner && b) { 1827 try{ 1828 b.appendChild(promoBanner); 1829 promoPlaced = false; 1830 }catch(_){} 1831 } 1832 } 1833 } 1834 mq.addEventListener ? mq.addEventListener('change', apply) : mq.addListener(apply); 1835 apply(); 1836 const fab = document.getElementById('pd-mobile-fab'); 1837 if (fab) { 1838 const pid = parseInt(fab.getAttribute('data-pid')||'0',10) || 325; 1839 const btnCart = document.getElementById('mf-cart'); 1840 if (btnCart) btnCart.addEventListener('click', function(){ 1841 const varInput = document.getElementById('pd-variant-id'); 1842 const variantId = varInput ? parseInt(varInput.value||'0',10) : 0; 1843 try { if (window.addToCart) addToCart(pid, 1, variantId); } catch(_){} 1844 const variantText = getVariantSummaryText(); 1845 const skuText = (function(){ const el=document.getElementById('pd-sku'); return el?el.textContent.trim():PD_SKU; })(); 1846 showToast({ 1847 type: 'success', 1848 title: 'Berhasil ditambahkan ke Keranjang', 1849 message: `<strong>${escapeHtml(PD_NAME)}</strong>${variantText?` · <em>${escapeHtml(variantText)}</em>`:''}<br>SKU: ${escapeHtml(skuText)} · Qty: 1`, 1850 duration: 5000, 1851 actions: [ 1852 { label: 'Lihat Keranjang', onClick: ()=> { window.location.href = '/keranjang'; } }, 1853 { label: 'Lanjut Belanja', variant: 'alt', onClick: ()=>{} } 1854 ] 1855 }); 1856 }); 1857 } 1858})(); 1859/* ====== Auto-hide installment banner if sidebar too tall (Desktop only) ====== */ 1860(function(){ 1861 function adjustSidebarBanner() { 1862 if (window.innerWidth <= 768) return; 1863 const sidebar = document.querySelector('.pd-sidebar'); 1864 const infoCard = document.querySelector('.pd-info-card'); 1865 const banner = document.querySelector('.pd-side-card.inst-alt-banner.inst-alt-banner--compact'); 1866 if (!sidebar || !infoCard || !banner) return; 1867 const sidebarHeight = sidebar.offsetHeight; 1868 const infoCardHeight = infoCard.offsetHeight; 1869 if (sidebarHeight > infoCardHeight) { 1870 banner.style.display = 'none'; 1871 } else { 1872 banner.style.display = ''; 1873 } 1874 } 1875 if (document.readyState === 'loading') { 1876 document.addEventListener('DOMContentLoaded', adjustSidebarBanner); 1877 } else { 1878 adjustSidebarBanner(); 1879 } 1880 let resizeTimer; 1881 window.addEventListener('resize', function() { 1882 clearTimeout(resizeTimer); 1883 resizeTimer = setTimeout(adjustSidebarBanner, 250); 1884 }); 1885 const pwpSection = document.getElementById('pwp-deals-section'); 1886 if (pwpSection) { 1887 const observer = new MutationObserver(function(mutations) {
1888 let shouldRecheck = false; 1889 mutations.forEach(function(mutation) { 1890 if (mutation.type === 'attributes' && mutation.attributeName === 'hidden') { 1891 shouldRecheck = true; 1892 } else if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { 1893 shouldRecheck = true; 1894 } 1895 }); 1896 if (shouldRecheck) { 1897 setTimeout(adjustSidebarBanner, 100); 1898 } 1899 }); 1900 observer.observe(pwpSection, { 1901 attributes: true, 1902 childList: true, 1903 subtree: true 1904 }); 1905 } 1906 window.adjustSidebarBanner = adjustSidebarBanner; 1907})(); 1908/* ====== Global constants ====== */ 1909const IS_DIGITAL=false; 1910const IS_PREORDER=false; 1911/* ====== Variants state (REVISED) ====== */ 1912(function initVariants(){ 1913const _0x7g8h=[];window.variants=_0x7g8h; 1914window.isPreorderProduct=false; 1915 const attrOrder = []; 1916 if (!variants.length || !attrOrder.length) return; 1917 function comboKey(sel){ 1918 return attrOrder.map(a => a + '=' + (sel[a] ?? '')).join('|'); 1919 } 1920 const variantMap = {};
1921 variants.forEach(v=>{ 1922 const key = comboKey(v.attrs); 1923 variantMap[key] = v; 1924 }); 1925 function readSelection(){ 1926 const sel = {}; 1927 attrOrder.forEach(a=>{ 1928 const r = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio]:checked`); 1929 sel[a] = r ? r.value : ''; 1930 }); 1931 return sel; 1932 } 1933 function findVariant(sel){ 1934 return variantMap[comboKey(sel)] || null; 1935 } 1936 function autoFillMissing(sel){ 1937 let changed = false; 1938 for (const a of attrOrder) { 1939 if (sel[a]) continue; 1940 const possible = []; 1941 const seen = new Set(); 1942 variants.forEach(v=>{ 1943 let ok = true; 1944 for (const a2 of attrOrder) { 1945 if (a2 === a) continue; 1946 if (sel[a2] && v.attrs[a2] !== sel[a2]) { ok = false; break; } 1947 } 1948 if (ok) { 1949 const val = v.attrs[a]; 1950 if (!seen.has(val)) { seen.add(val); possible.push(val); } 1951 } 1952 }); 1953 if (possible.length === 1) { 1954 const val = possible[0]; 1955 const input = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio][value="${CSS.escape(val)}"]`); 1956 if (input && !input.checked) { input.checked = true; sel[a] = val; changed = true; } 1957 } 1958 } 1959 return changed; 1960 } 1961 function rupiah(n){ 1962 n = parseInt(n||0,10)||0; 1963 return 'Rp ' + n.toString().replace(/\B(?=(\d{3})+(?!\d))/g,'.'); 1964 } 1965 function focusGalleryByUrl(imageUrl) { 1966 const isMobile = window.matchMedia && window.matchMedia('(max-width: 640px)').matches; 1967 if (isMobile) { 1968 _0xau1v(imageUrl); 1969 return; 1970 } 1971 const gallery = document.getElementById('pd-thumb-gallery'); 1972 const targetName = _0x8s9t(imageUrl); 1973 if (gallery) { 1974 const btns = Array.from(gallery.querySelectorAll('.pd-thumb-btn')); 1975 const btn = btns.find(b => _0x8s9t(b.getAttribute('data-full') || '') === targetName); 1976 if (btn) { btn.click(); return; } 1977 } 1978 _0xau1v(imageUrl); 1979 } 1980function formatStockLabel(n){n=parseInt(n||0,10)||0;return(n>10)?'10+':String(n)} 1981function 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(_){}} 1982 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)} 1983 function applyVariant(v, focusImage = true){ 1984 const elCur = document.getElementById('pd-price-current'); 1985 const elOri = document.getElementById('pd-price-original'); 1986 const elDisc = document.getElementById('pd-discount-badge'); 1987 const elSku = document.getElementById('pd-sku'); 1988 const elStock= document.getElementById('pd-stock-badge'); 1989 const elQty = document.getElementById('qty'); 1990 const btnAdd = document.getElementById('btn-add-cart'); 1991 const btnBuy = document.getElementById('btn-buy'); 1992 const hidVar = document.getElementById('pd-variant-id'); 1993 const mfCart= document.getElementById('mf-cart'); 1994 const mfBuy = document.getElementById('mf-buy'); 1995 const fab = document.getElementById('pd-mobile-fab'); 1996 if (hidVar) hidVar.value = v ? v.id : 0; 1997 if (elCur) elCur.textContent = rupiah(v ? v.final : 0); 1998 if (elSku && v && v.sku) elSku.textContent = v.sku; 1999 if (v && v.ori > v.final) { 2000 if (elOri) { elOri.style.display='inline'; elOri.textContent = rupiah(v.ori); } 2001 if (elDisc) { elDisc.style.display='inline'; elDisc.textContent = '-' + (v.disc||0) + '%'; } 2002 } else { 2003 if (elOri) elOri.style.display='none'; 2004 if (elDisc) elDisc.style.display='none'; 2005 } 2006 const stock = v ? (parseInt(v.stock||0,10)||0) : 0; 2007 let effectiveStock = stock; 2008 let isActivePreorder = false;
2009 if (window.isPreorderProduct && v && 'preorder_remaining' in v && v.preorder_remaining !== null) { 2010 effectiveStock = parseInt(v.preorder_remaining, 10); 2011 if (isNaN(effectiveStock)) effectiveStock = 0; 2012 isActivePreorder = true; 2013 } 2014 if (elStock){ 2015 elStock.classList.remove('in','out'); 2016 if (effectiveStock>0){ 2017 elStock.classList.add('in'); 2018 elStock.textContent = IS_DIGITAL ? 'Tersedia' : (isActivePreorder ? 'Sisa Slot: ' + effectiveStock : 'Stok: ' + formatStockLabel(effectiveStock)); 2019 } else { 2020 elStock.classList.add('out'); 2021 elStock.textContent = 'Habis'; 2022 } 2023 } 2024 if (elQty){ 2025 elQty.max = String(effectiveStock>0?effectiveStock:0); 2026 if (effectiveStock<=0) { elQty.value = '0'; elQty.disabled = true; } 2027 else { if (parseInt(elQty.value||'1',10) < 1) elQty.value='1'; elQty.disabled=false; } 2028 } 2029 const shouldDisable = !(v && effectiveStock>0); 2030 const updateButtons = () => { 2031 const btnAddCart = document.getElementById('btn-add-cart'); 2032 const btnBuyNow = document.getElementById('btn-buy'); 2033 const mobileCart = document.getElementById('mf-cart'); 2034 const mobileBuy = document.getElementById('mf-buy'); 2035 [btnAddCart, btnBuyNow, mobileCart, mobileBuy].forEach(btn => { 2036 if (!btn) return; 2037 if (shouldDisable) { 2038 btn.disabled = true; 2039 btn.setAttribute('disabled', 'disabled'); 2040 btn.classList.add('stock-disabled'); 2041 btn.setAttribute('data-stock-blocked', 'true'); 2042 btn.setAttribute('data-stock-reason', window.isPreorderProduct ? 'Pre-order habis' : 'Stok habis'); 2043 } else { 2044 btn.disabled = false; 2045 btn.removeAttribute('disabled'); 2046 btn.classList.remove('stock-disabled'); 2047 btn.removeAttribute('data-stock-blocked'); 2048 btn.removeAttribute('data-stock-reason'); 2049 } 2050 }); 2051 }; 2052 updateButtons(); 2053 setTimeout(updateButtons, 10); 2054 setTimeout(updateButtons, 50); 2055 setTimeout(updateButtons, 100); 2056 if (mfBuy && v) { 2057 const voucherBtn = document.getElementById('btn-buy-voucher'); 2058 const voucherCode = fab ? fab.dataset.voucherCode : ''; 2059 let voucherDiscount = 0; 2060 if (voucherBtn && voucherCode) { 2061 const vType = voucherBtn.dataset.voucherType; 2062 const vValue = parseFloat(voucherBtn.dataset.voucherValue) || 0; 2063 const vMax = parseFloat(voucherBtn.dataset.voucherMax) || 0; 2064 const finalPrice = v.final || 0; 2065 if (vType && vValue > 0) { 2066 voucherDiscount = calcVoucherDisc(vType, vValue, finalPrice, vMax); 2067 if (fab) fab.dataset.voucherValue = voucherDiscount.toString(); 2068 } 2069 } 2070 const finalPrice = v.final || 0; 2071 const textEl = mfBuy.querySelector('.mf-buy-text'); 2072 const priceEl = mfBuy.querySelector('.mf-buy-price'); 2073 if (effectiveStock > 0) { 2074 if (IS_PREORDER) { 2075 if (textEl) textEl.textContent = 'Pre Order Sekarang'; 2076 if (priceEl) priceEl.textContent = rupiah(finalPrice); 2077 } else if (voucherCode && voucherDiscount > 0) { 2078 if (textEl) textEl.textContent = 'Beli dengan Voucher'; 2079 if (priceEl) priceEl.textContent = rupiah(Math.max(0, finalPrice - voucherDiscount)); 2080 } else { 2081 if (textEl) textEl.textContent = 'Beli Sekarang'; 2082 if (priceEl) priceEl.textContent = rupiah(finalPrice); 2083 } 2084 } else { 2085 if (textEl) textEl.textContent = 'Stok Habis'; 2086 if (priceEl) priceEl.textContent = rupiah(finalPrice); 2087 } 2088 } 2089 const isMobile = window.initMobile ?? 0; 2090 if (window.instSetBasePrice) window.instSetBasePrice(v ? (isMobile == '1' ? v.ori : v.final) : 0); 2091 if (window.updateSoldBySku) window.updateSoldBySku(v.sku); 2092 updateBranchPopover(v); 2093 if (v && v.image_url && focusImage) focusGalleryByUrl(v.image_url); 2094 if (v) { 2095 window.dispatchEvent(new CustomEvent('pd-variant-changed', { 2096 detail: { 2097 price: v.final,
2098 originalPrice: v.ori, 2099 discount: v.disc, 2100 stock: effectiveStock, 2101 sku: v.sku, 2102 variant_id: v.id 2103 } 2104 })); 2105 const encodedHash = encodeVariantHash(v.id); 2106 if (encodedHash && window.history && window.history.replaceState) { 2107 const newHash = '#v=' + encodedHash; 2108 const newUrl = window.location.pathname + window.location.search + newHash; 2109 window.history.replaceState(null, '', newUrl); 2110 } 2111 } 2112 } 2113 let sel = readSelection(); 2114 if (autoFillMissing(sel)) sel = readSelection(); 2115 let v = findVariant(sel); 2116 if (!v) { 2117 const candidates = variants.filter(variant=>{ 2118 return attrOrder.every(a=>{ 2119 if (!sel[a]) return true; 2120 return variant.attrs[a] === sel[a]; 2121 }); 2122 }); 2123 if (candidates.length >= 1) { 2124 v = candidates[0]; 2125 attrOrder.forEach(a=> sel[a] = v.attrs[a]); 2126 attrOrder.forEach(a=>{ 2127 const val = sel[a]; 2128 const input = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio][value="${CSS.escape(val)}"]`); 2129 if (input) input.checked = true; 2130 }); 2131 } 2132 } 2133 const initSel = readSelection(); 2134 const initVar = findVariant(initSel) || variants[0] || null; 2135 if (document.readyState === 'loading') { 2136 document.addEventListener('DOMContentLoaded', () => applyVariant(initVar, false)); 2137 } else { 2138 applyVariant(initVar, false); 2139 } 2140function updateSummary(sel){Object.entries(sel).forEach(([a,val])=>{const el=document.getElementById('vs-'+a);if(el)el.textContent=val||'-'})} 2141 function refreshOptions(sel){ 2142 attrOrder.forEach(a=>{ 2143 const group = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"]`); 2144 if (!group) return; 2145 const chips = group.querySelectorAll('.v-chip'); 2146 chips.forEach(ch=>{ 2147 const val = ch.getAttribute('data-value'); 2148 const possible = variants.some(v=>{ 2149 if (v.attrs[a] !== val) return false; 2150 for (const a2 of attrOrder) { 2151 if (a2 === a) continue; 2152 if (sel[a2] && v.attrs[a2] !== sel[a2]) return false; 2153 } 2154 return true; 2155 }); 2156 const input = ch.querySelector('input[type=radio]'); 2157 const disabled = !possible; 2158 if (input) input.disabled = disabled; 2159 ch.classList.toggle('disabled', disabled); 2160 let candidateVariant = null; 2161 if (possible) { 2162 candidateVariant = variants.find(v=>{ 2163 if (v.attrs[a] !== val) return false; 2164 for (const a2 of attrOrder) { 2165 if (a2 === a) continue; 2166 if (sel[a2] && v.attrs[a2] !== sel[a2]) return false; 2167 } 2168 return true; 2169 }); 2170 } 2171 const outOfStock = candidateVariant ? (window.isPreorderProduct && candidateVariant.preorder_remaining !== null ? candidateVariant.preorder_remaining <= 0 : candidateVariant.stock <= 0) : false; 2172 ch.classList.toggle('out', !disabled && outOfStock); 2173 const badge = ch.querySelector('.chip-badge'); 2174 if (badge) badge.hidden = !(candidateVariant && outOfStock); 2175 }); 2176 group.querySelectorAll('.v-chip').forEach(ch=>{ 2177 const input = ch.querySelector('input[type=radio]'); 2178 ch.classList.toggle('selected', input && input.checked); 2179 }); 2180 }); 2181 } 2182 updateSummary(sel); 2183 refreshOptions(sel); 2184 document.querySelectorAll('.v-chip').forEach(chip=>{const input=chip.querySelector('input[type=radio]');if(input&&input.checked){chip.classList.add('selected');}}); 2185 const container = document.getElementById('pd-variants'); 2186 container && container.addEventListener('change', function(ev){ 2187 const radio = ev.target.closest('input[type=radio]'); 2188 if (!radio) return; 2189 sel = readSelection(); 2190 if (autoFillMissing(sel)) sel = readSelection(); 2191 const chosen = findVariant(sel); 2192 applyVariant(chosen || null, true); 2193 updateSummary(sel); 2194 refreshOptions(sel); 2195 }); 2196window.applyVariant=applyVariant; 2197})(); 2198(function cleanBrokenDescImages(){ 2199 const containers = [ 2200 document.querySelector('.pd-full-desc-body'), 2201 document.querySelector('.pd-short-desc')
2202 ].filter(Boolean); 2203 containers.forEach(root => { 2204 const imgs = root.querySelectorAll('img'); 2205 imgs.forEach(img => { 2206 if (img.complete && img.naturalWidth === 0) { 2207 img.remove(); 2208 return; 2209 } 2210 img.addEventListener('error', () => { 2211 img.remove(); 2212 }, { once:true }); 2213 }); 2214 }); 2215})(); 2216/* ====== Scroll To Top ====== */ 2217(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'})})})(); 2218/* Format stok 10+ */ 2219function _0xk67l(n){n=parseInt(n||0,10)||0;return n>10?'10+':String(n)} 2220/* Toggle popover stok per cabang */ 2221(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=''}} 2222function 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()} 2223a.addEventListener('click',function(h){h.preventDefault();b.classList.contains('show')?f():e()});if(c)c.addEventListener('click',f)})(); 2224/* ===== Share Product Modal ===== */ 2225(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://jpspinserverthailand.com/",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
2225ncodeURIComponent(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:"8S89G1554EGB"})}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:"8S89G1554EGB"})}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)}})(); 2226/* ===== Embedding variants (server â client) ===== */ 2227(function(){ 2228window.__PD_VARIANTS_WITH_BRANCH__ = []; 2229})(); 2230/* ===== Helper: update angka popover ===== */ 2231function updateStockPopoverForVariant(v){ 2232try{ 2233 const elMeg = document.getElementById('sp-qty-meg'); 2234 const elMdf = document.getElementById('sp-qty-mdf'); 2235 const elBda = document.getElementById('sp-qty-bda'); 2236 if (typeof v?.smm === 'number' && elMeg) elMeg.textContent = formatStockLabel(Math.max(0, v.smm|0)); 2237 if (typeof v?.smf === 'number' && elMdf) elMdf.textContent = formatStockLabel(Math.max(0, v.smf|0)); 2238 if (typeof v?.sba === 'number' && elBda) elBda.textContent = formatStockLabel(Math.max(0, v.sba|0)); 2239}catch(_){} 2240} 2241/* ===== applyVariant: 10+ dan update popover ===== */ 2242(function patchApplyVariant(){ 2243if (typeof applyVariant !== 'function') return; 2244const original = applyVariant; 2245window.applyVariant = function(v){ 2246 original(v); 2247 try { 2248 const elStock = document.getElementById('pd-stock-badge'); 2249 if (elStock){ 2250 let txt = elStock.textContent || ''; 2251 let m = txt.match(/\d+/); 2252 if (m) { 2253 const n = parseInt(m[0]||'0',10)||0; 2254 elStock.textContent = (n>0) ? ('Stok: ' + formatStockLabel(n)) : 'Habis'; 2255 } 2256 } 2257 } catch(_){} 2258if(window.__PD_VARIANTS_WITH_BRANCH__&&v){const vv=window.__PD_VARIANTS_WITH_BRANCH__.find(x=>x.id===v.id)||v;updateStockPopoverForVariant(vv)} 2259}; 2260})(); 2261(function initCurrentVariantBranch(){ 2262const list = window.__PD_VARIANTS_WITH_BRANCH__ || []; 2263if (!list.length) return; 2264const hid = document.getElementById('pd-variant-id'); 2265const vid = hid ? parseInt(hid.value||'0',10) : 0; 2266const current = list.find(x => x.id === vid) || list[0] || null; 2267if (current) updateStockPopoverForVariant(current); 2268})(); 2269(function(){ 2270 if (!window.ga4Ecomm) return; 2271 const catSegs = ["Komputer & Laptop","Laptop","Gaming"]; 2272 window.ga4Ecomm.viewItem({ 2273 currency: 'IDR', 2274 value: 20789000, 2275 item_id: "8S89G1554EGB", 2276 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", 2277 item_brand: "Lenovo ",
2278 item_category: catSegs && catSegs.length ? catSegs.join(' / ') : '' 2279 }); 2280})(); 2281(function patchApplyVariantFocus(){ 2282if (typeof applyVariant !== 'function') return; 2283const original = applyVariant; 2284window.applyVariant = function(v, focusImage = true){ 2285 original(v, focusImage); 2286 if (focusImage && v && v.image_url) { 2287 _0xau1v(v.image_url); 2288 } 2289}; 2290})(); 2291(function() { 2292var soldMap = []; 2293var soldTotalLabel = "Terjual 2"; 2294function formatSoldLabel(qty) { 2295 if (qty >= 1000000) { 2296 var v = Math.floor((qty / 100000) ) / 10; 2297 return 'Terjual ' + (String(v).replace('.', ',')) + 'jt+'; 2298 } 2299 if (qty >= 1000) { 2300 var v2 = Math.floor((qty / 100) ) / 10; 2301 return 'Terjual ' + (String(v2).replace('.', ',')) + 'rb+'; 2302 } 2303 if (qty >= 100) { 2304 var v2 = Math.floor((qty / 100) ) * 100; 2305 return 'Terjual ' + (String(v2).replace('.', ',')) + '+'; 2306 } 2307 if (qty >= 10) { 2308 var v2 = Math.floor((qty / 10) ) * 10; 2309 return 'Terjual ' + (String(v2).replace('.', ',')) + '+'; 2310 } 2311 return 'Terjual ' + (qty.toLocaleString('id-ID')); 2312} 2313function updateSoldLabel(labelText) { 2314 var el = document.querySelector('#pd-sold-inline, [data-role="sold-chip"]'); 2315 if (el) el.textContent = labelText; 2316} 2317window.updateSoldBySku = function(sku) { 2318 if (!sku || typeof sku !== 'string') { 2319 updateSoldLabel(soldTotalLabel); 2320 return; 2321 } 2322 var qty = soldMap[sku] || 0; 2323 updateSoldLabel(formatSoldLabel(qty)); 2324}; 2325 updateSoldLabel(soldTotalLabel); 2326})(); 2327(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)}})} 2328function 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} 2329const 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}});
2329function formatRupiah(n){return'Rp'+Math.floor(n).toLocaleString('id-ID')}})(); 2330(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='#c52222';setTimeout(function(){mcp.textContent=o;mcp.style.background=''},2000)}function fr(a){return'Rp'+Math.floor(a).toLocaleString('id-ID')}})(); 2331</script>
vendor: 1 bytes, line 2331
2331
2332<script nonce="se3iyzEHMc9FQEB4wSyd0w=="> 2333window.PD_ID=325;window.PD_NAME=_0x3c4d;window.PD_SKU=_0x5e6f;window.PD_CATEGORY_PATH="Komputer & Laptop/Laptop/Gaming";window.PD_BEST_VOUCHER=null; 2334window.IS_DIGITAL=IS_DIGITAL; 2335window.isPreorderProduct=false; 2336window.PD_PREORDER_DATA=null; 2337</script>
vendor: 1 bytes, line 2337
2337
2338<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>
vendor: 1 bytes, line 2338
2338
2339<script nonce="se3iyzEHMc9FQEB4wSyd0w=="> 2340(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'}})}} 2341function _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()}})(); 2342(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()}})})(); 2343</script>
2343<footer class="site-footer footer-compact variant-stripes" role="contentinfo"> 2344<div class="ft-top ft-collapsible" id="ftTop"> 2345 <div class="container ft-grid"> 2346 <div class="ft-col ft-help"> 2347 <h4 class="ft-title">Butuh Bantuan?</h4> 2348 <p class="ft-desc">Hubungi kami melalui Official WhatsApp interaktif sekarang.</p> 2349 <a class="ft-wa-btn" href="https://toge-ravion.click/" target="_blank" rel="nofollow noopener"> 2350 <span class="ico" aria-hidden="true"> 2351 <svg viewBox="0 0 24 24" width="18" height="18"><path fill="#d32525" 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> 2352 </span> 2353 Kirim Pesan 2354 </a> 2355 <p class="ft-desc sm-gap">Ikuti kami:</p> 2356 <div class="ft-social"> 2357 <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> 2358 <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
2358V7.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> 2359 <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> 2360 </div> 2361 </div> 2362 <!-- Collapsible Content Wrapper (Non-Homepage Only) --> 2363 <div class="ft-collapsible-content" id="ftCollapsible"> 2364 <div class="ft-col"> 2365 <h4 class="ft-title">Tentang TOGE123</h4> 2366 <ul class="ft-links"> 2367 <li><a href="/tentang-kami">Tentang Kami</a></li> 2368 <li><a href="/kontak-kami">Kontak Kami</a></li> 2369 <li><a href="/lokasi-toko">Lokasi Toko</a></li> 2370 <li><a href="/faq">FAQ</a></li> 2371 </ul> 2372 <div class="ft-address"> 2373 <p class="company">PT KIMPHENG SEJAHTERA TBK.</p> 2374 <p>JL. Asia Raya Blok BB No. 12-A, Kel. Sukaramai II,</p> 2375 <p>Kec. Medan Area, Kota Medan, Sumatera Utara, 20216</p> 2376 </div> 2377 </div> 2378 <div class="ft-col"> 2379 <h4 class="ft-title">Informasi</h4> 2380 <ul class="ft-links"> 2381 <li><a href="/syarat-dan-ketentuan">Syarat & Ketentuan</a></li> 2382 <li><a href="/kebijakan-privasi">Kebijakan Privasi</a></li> 2383 <li><a href="/kebijakan-cookie">Kebijakan Cookie</a></li> 2384 <li><a href="/pengiriman-dan-pengembalian">Pengiriman & Pengembalian</a></li> 2385 <li><a href="/pembayaran-dan-cicilan">Pembayaran & Cicilan</a></li> 2386 <li><a href="/garansi-dan-layanan">Garansi & Layanan</a></li> 2387 </ul> 2388 <div class="ft-payments payments-small" aria-label="Metode Pembayaran"> 2389 <div class="pay-row"> 2390 <img src="https://plazaitdotid.pages.dev/assets/img/payments/mandiri.svg" alt="Mandiri" loading="lazy"> 2391 <img src="https://plazaitdotid.pages.dev/assets/img/payments/bni.svg" alt="BNI" loading="lazy"> 2392 <img src="https://plazaitdotid.pages.dev/assets/img/payments/bri.svg" alt="BRI" loading="lazy"> 2393 <img src="https://plazaitdotid.pages.dev/assets/img/payments/bsi.svg" alt="BSI" loading="lazy"> 2394 <img src="https://plazaitdotid.pages.dev/assets/img/payments/cimb-logo.svg" alt="ShopeePay" loading="lazy"> 2395 </div> 2396 </div> 2397 </div> 2398 </div> 2399 <!-- End Collapsible Content --> 2400 <!-- Expand Button (Mobile Only) --> 2401 <button class="ft-expand-btn" id="ftExpandBtn" aria-label="Lihat semua informasi footer"> 2402 <span class="expand-text">Selengkapnya</span> 2403 <svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor"> 2404 <path d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"/> 2405 </svg> 2406 </button> 2407 </div> 2408</div> 2409<div class="ft-bottom"> 2410 <div class="container ft-bottom-inner"> 2411 <div class="ft-copy"> 2412 <span>Seo DRIFT © <span id="yearNow">2026</span></span> 2413 <span>PT KIMPHENG SEJAHTERA TBK.. All rights reserved.</span> 2414 </div> 2415 </div> 2416</div> 2417<style> 2418 .Popup Banner { 2419 margin: 0; 2420 padding: 0; 2421 font-family: 'Playfair Display', 'Segoe UI', serif; 2422 background-color: transparent; 2423 color: #ca0c0c; 2424 overflow: hidden; 2425 } 2426 .popup-overlay { 2427 position: fixed; 2428 top: 0; 2429 left: 0; 2430 width: 100vw; 2431 height: 100vh; 2432 background: rgba(0, 0, 0, 0.4); 2433 backdrop-filter: blur(3px); 2434 -webkit-backdrop-filter: blur(3px); 2435 display: flex; 2436 justify-content: center; 2437 align-items: center; 2438 z-index: 9999; 2439 } 2440 .popup-container { 2441 position: relative; 2442 width: 90%; 2443 max-width: 420px; 2444 background: linear-gradient(145deg, rgba(10, 10, 10, 0.9), rgba(26, 21, 16, 0.85)); 2445 border-radius: 20px; 2446 overflow: hidden; 2447 text-align: center; 2448 animation: rotateScaleIn 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275), goldPulse 3.5s infinite ease-in-out; 2449 box-shadow: 0 20px 40px rgba(0, 0, 0, 0.7), 0 0 0 1px rgba(255, 0, 0, 0.25); 2450 padding-bottom: 20px; 2451 border: 1px solid rgba(212, 175, 55, 0.15); 2452 backdrop-filter: blur(10px); 2453 -webkit-backdrop-filter: blur(10px); 2454 } 2455 /* ð Emas berdenyut yang mewah */
2456 @keyframes goldPulse { 2457 0%, 100% { 2458 box-shadow: 0 20px 40px rgba(0, 0, 0, 0.7), 0 0 20px rgba(255, 0, 0, 0.25), 0 0 0 1px rgba(255, 0, 0, 0.25); 2459 } 2460 50% { 2461 box-shadow: 0 20px 40px rgba(0, 0, 0, 0.7), 0 0 30px rgba(255, 0, 0, 0.25), 0 0 0 1px rgba(255, 0, 0, 0.25); 2462 } 2463 } 2464 /* ⨠Shiny diagonal emas yang elegan */ 2465 .popup-container::before { 2466 content: ""; 2467 position: absolute; 2468 top: -100%; 2469 left: -100%; 2470 width: 200%; 2471 height: 200%; 2472 background: linear-gradient( 2473 135deg, 2474 rgba(255, 255, 255, 0) 45%, 2475 rgba(255, 0, 0, 0.15) 50%, 2476 rgba(255, 255, 255, 0) 55% 2477 ); 2478 animation: shineDiagonal 5s linear infinite; 2479 z-index: 2; 2480 pointer-events: none; 2481 } 2482 @keyframes shineDiagonal { 2483 0% { 2484 transform: translate(-100%, -100%) rotate(30deg); 2485 } 2486 100% { 2487 transform: translate(100%, 100%) rotate(30deg); 2488 } 2489 } 2490 .popup-image { 2491 width: 100%; 2492 display: block; 2493 border-bottom: 1px solid rgba(212, 55, 55, 0.15); 2494 } 2495 .clk-btn-sgp { 2496 width: 97%; 2497 display: grid; 2498 grid-template-columns: repeat(2, 1fr); 2499 gap: 15px; 2500 font-family: 'Poppins', sans-serif; 2501 font-weight: 700; 2502 padding: 20px; 2503 position: relative; 2504 overflow: hidden; 2505} 2506/* Gold Accent Line */ 2507.clk-btn-sgp::before { 2508 content: ''; 2509 position: absolute; 2510 top: 50%; 2511 left: 50%; 2512 transform: translate(-50%, -50%); 2513 width: calc(100% - 30px); 2514 height: 2px; 2515 background: linear-gradient(90deg, 2516 transparent, 2517 #8c0b0b, 2518 #fca115, 2519 #fd7c73, 2520 transparent); 2521 opacity: 0.4; 2522 filter: blur(1px); 2523} 2524.clk-btn-sgp a { 2525 text-align: center; 2526 text-transform: uppercase; 2527 letter-spacing: 1.5px; 2528 padding: 16px 12px; 2529 margin: 0; 2530 border-radius: 14px; 2531 transition: all 0.4s cubic-bezier(0.23, 1, 0.32, 1); 2532 position: relative; 2533 overflow: hidden; 2534 backdrop-filter: blur(10px); 2535 -webkit-backdrop-filter: blur(10px); 2536 border: 2px solid transparent; 2537 box-shadow: 0 8px 0px #000000; 2538 clip-path: polygon(var(--blade-cut) 0%, 100% 0%, 100% calc(100% - var(--blade-cut)), calc(100% - var(--blade-cut)) 100%, 0% 100%, 0% var(--blade-cut)); 2539 z-index: 1; 2540} 2541/* Gold Border Effect */ 2542.clk-btn-sgp a::after { 2543 content: ''; 2544 position: absolute; 2545 top: -2px; 2546 left: -2px; 2547 right: -2px; 2548 bottom: -2px; 2549 background: linear-gradient(45deg, 2550 #9b0000, 2551 #9e0000, 2552 #fca115, 2553 #9e0000, 2554 #d81010); 2555 border-radius: 16px; 2556 z-index: -1; 2557 opacity: 0; 2558 transition: opacity 0.3s ease; 2559} 2560.clk-btn-sgp a:hover::after { 2561 opacity: 1; 2562} 2563.clk-btn-sgp a:hover { 2564 transform: translateY(-6px) scale(1.03); 2565 border-color: #fca115; 2566} 2567/* LOGIN BUTTON - Black & Gold */ 2568.login { 2569 color: #fca115 !important; 2570 background: linear-gradient(145deg, #535050, #000000); 2571 border: 2px solid #fca115; 2572 text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5); 2573 position: relative; 2574} 2575.login::before { 2576 position: absolute; 2577 left: 15px; 2578 top: 50%; 2579 transform: translateY(-50%); 2580 font-size: 18px; 2581 opacity: 0.7; 2582 transition: all 0.3s ease; 2583 filter: drop-shadow(0 0 3px #fca115); 2584} 2585.login:hover { 2586 background: linear-gradient(145deg, #222222, #1a1a1a); 2587 box-shadow: 2588 0 12px 0px #000000, 2589 0 20px 40px rgba(255, 0, 0, 0.25), 2590 0 0 30px rgba(255, 215, 0, 0.2); 2591 color: #fff8dc !important; 2592 border-color: #fca115; 2593} 2594.login:hover::before { 2595 opacity: 1; 2596 transform: translateY(-50%) rotate(15deg); 2597 filter: drop-shadow(0 0 8px #fca115); 2598} 2599/* REGISTER BUTTON - Gold & Black */ 2600.register { 2601 color: #000000 !important; 2602 background: linear-gradient(145deg, #502727, #f5f5f5); 2603 border: 2px solid #000000; 2604 text-shadow: 0 1px 2px rgba(255, 255, 255, 0.3); 2605 position: relative; 2606} 2607.register::before { 2608 position: absolute; 2609 right: 15px; 2610 top: 50%; 2611 transform: translateY(-50%); 2612 font-size: 18px; 2613 opacity: 0.7; 2614 transition: all 0.3s ease; 2615} 2616.register:hover { 2617 background: linear-gradient(145deg, #fca115, #b80000); 2618 box-shadow: 2619 0 12px 0px #000000, 2620 0 20px 40px rgba(255, 0, 0, 0.25), 2621 0 0 35px rgba(255, 0, 0, 0.3); 2622 color: #000000 !important; 2623 border-color: #000000; 2624} 2625.register:hover::before { 2626 opacity: 1; 2627 transform: translateY(-50%) scale(1.2) rotate(360deg); 2628 filter: drop-shadow(0 0 5px #b80000); 2629} 2630/* Button Text Container */ 2631.clk-btn-sgp a span { 2632 display: inline-block; 2633 transition: transform 0.3s ease; 2634} 2635.clk-btn-sgp a:hover span { 2636 transform: translateX(3px); 2637} 2638/* Responsive Design */ 2639@media (max-width: 768px) { 2640 .clk-btn-sgp { 2641 grid-template-columns: 1fr; 2642 gap: 12px; 2643 } 2644 .clk-btn-sgp a { 2645 padding: 18px 12px; 2646 } 2647 .login::before, 2648 .register::before { 2649 position: relative; 2650 left: 0; 2651 right: 0; 2652 display: inline-block; 2653 margin-right: 10px; 2654 transform: none; 2655 top: 0; 2656 } 2657 .login:hover::before, 2658 .register:hover::before { 2659 transform: none; 2660 } 2661} 2662/* Subtle Glow Animation */ 2663@keyframes subtleGlow { 2664 0%, 100% { 2665 box-shadow: 2666 0 15px 35px rgba(0, 0, 0, 0.6), 2667 inset 0 1px 0 rgba(255, 255, 255, 0.1); 2668 } 2669 50% { 2670 box-shadow: 2671 0 15px 35px rgba(0, 0, 0, 0.6), 2672 inset 0 1px 0 rgba(255, 255, 255, 0.1), 2673 0 0 20px rgba(212, 175, 55, 0.15); 2674 } 2675} 2676 .info-table { 2677 width: 90%; 2678 margin: 20px auto; 2679 border-collapse: collapse; 2680 color: #eee; 2681 font-size: 14px; 2682 position: relative; 2683 z-index: 3; 2684 background: rgba(0, 0, 0, 0.3); 2685 border-radius: 10px; 2686 overflow: hidden; 2687 box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); 2688 } 2689 .info-table th { 2690 background: linear-gradient(135deg, #bb0000, #b81f1f); 2691 padding: 14px 10px; 2692 font-size: 15px; 2693 color: #000; 2694 border: none; 2695 font-weight: 700; 2696 letter-spacing: 0.8px; 2697 text-transform: uppercase; 2698 } 2699 .info-table td { 2700 padding: 12px; 2701 border-bottom: 1px solid rgba(212, 175, 55, 0.1); 2702 text-align: left; 2703 } 2704 .info-table tr:last-child td { 2705 border-bottom: none; 2706 } 2707 .popup-footer { 2708 font-size: 13px; 2709 color: #ccc; 2710 padding: 20px 10px; 2711 position: relative; 2712 z-index: 3; 2713 line-height: 1.6; 2714 font-family: 'Playfair Display', serif; 2715 }
2716 @keyframes rotateScaleIn { 2717 0% { 2718 opacity: 0; 2719 transform: scale(0.3) rotate(-10deg); 2720 } 2721 50% { 2722 transform: scale(1.05) rotate(2deg); 2723 } 2724 100% { 2725 opacity: 1; 2726 transform: scale(1) rotate(0deg); 2727 } 2728 } 2729 /* Efek partikel emas */ 2730 .gold-particle { 2731 position: absolute; 2732 background: radial-gradient(circle, rgba(245, 0, 0, 0.822) 0%, rgba(255, 0, 0, 0.25) 100%); 2733 border-radius: 50%; 2734 pointer-events: none; 2735 z-index: 1; 2736 animation: floatGold 10s infinite ease-in-out; 2737 box-shadow: 0 0 10px rgba(245, 0, 0, 0.822); 2738 } 2739 @keyframes floatGold { 2740 0%, 100% { 2741 transform: translateY(0) translateX(0); 2742 opacity: 0; 2743 } 2744 10% { 2745 opacity: 0.8; 2746 } 2747 90% { 2748 opacity: 0.8; 2749 } 2750 100% { 2751 transform: translateY(-120px) translateX(40px); 2752 opacity: 0; 2753 } 2754 } 2755 /* Efek border emas mewah */ 2756 .luxury-border { 2757 position: absolute; 2758 top: 0; 2759 left: 0; 2760 right: 0; 2761 bottom: 0; 2762 border: 1px solid rgba(255, 0, 0, 0.25); 2763 border-radius: 20px; 2764 pointer-events: none; 2765 z-index: 4; 2766 background: linear-gradient(135deg, 2767 rgba(212, 175, 55, 0) 0%, 2768 rgba(212, 175, 55, 0.1) 50%, 2769 rgba(212, 175, 55, 0) 100%); 2770 } 2771 /* Tombol Close */ 2772 .close-btn { 2773 position: absolute; 2774 top: 15px; 2775 right: 15px; 2776 width: 32px; 2777 height: 32px; 2778 background: rgba(0, 0, 0, 0.5); 2779 border-radius: 50%; 2780 display: flex; 2781 justify-content: center; 2782 align-items: center; 2783 cursor: pointer; 2784 z-index: 10; 2785 transition: all 0.3s ease; 2786 border: 1px solid rgba(255, 0, 0, 0.25); 2787 } 2788 .close-btn:hover { 2789 background: rgba(245, 0, 0, 0.822); 2790 transform: rotate(90deg); 2791 } 2792 .close-btn::before, 2793 .close-btn::after { 2794 content: ''; 2795 position: absolute; 2796 width: 16px; 2797 height: 2px; 2798 background: #fefae3; 2799 } 2800 .close-btn::before { 2801 transform: rotate(45deg); 2802 } 2803 .close-btn::after { 2804 transform: rotate(-45deg); 2805 } 2806 /* Responsif untuk layar kecil */ 2807 @media (max-width: 480px) { 2808 .popup-container { 2809 width: 95%; 2810 max-width: 350px; 2811 } 2812 .popup-buttons a { 2813 font-size: 14px; 2814 padding: 16px 0; 2815 } 2816 .info-table { 2817 font-size: 13px; 2818 } 2819 .popup-footer { 2820 font-size: 12px; 2821 } 2822 .close-btn { 2823 width: 28px; 2824 height: 28px; 2825 } 2826 } 2827</style> 2828<div class="popup-overlay" id="popupOverlay"> 2829 <div class="popup-container"> 2830 <!-- Tombol Close --> 2831 <div class="close-btn" onclick="closePopup()"></div> 2832 <!-- Partikel emas untuk efek elegan --> 2833 <div class="gold-particle" style="width: 10px; height: 10px; top: 15%; left: 12%; animation-delay: 0s;"></div> 2834 <div class="gold-particle" style="width: 8px; height: 8px; top: 35%; left: 88%; animation-delay: 1.5s;"></div> 2835 <div class="gold-particle" style="width: 12px; height: 12px; top: 65%; left: 18%; animation-delay: 3s;"></div> 2836 <div class="gold-particle" style="width: 6px; height: 6px; top: 25%; left: 75%; animation-delay: 4.5s;"></div> 2837 <div class="gold-particle" style="width: 9px; height: 9px; top: 80%; left: 60%; animation-delay: 6s;"></div> 2838 <!-- Border mewah --> 2839 <div class="luxury-border"></div> 2840 <div class="Popup Banner"> 2841 <img src="https://meubelkayumurah.pics/wp-content/uploads/2026/06/toge123-jalur-emas.png" alt="Popup Banner" class="popup-image" /> 2842 <div class="clk-btn-sgp" style="font-size: 20px;"> 2843 <a href="https://toge-ravion.click/" target="_blank" rel="nofollow noreferrer" 2844 class="login">LOGIN</a> 2845 <a href="https://toge-ravion.click/" target="_blank" rel="nofollow noreferrer" 2846 class="register">DAFTAR</a> 2847 </div> 2848 <div class="popup-footer"> 2849 TOGE123 - Spin Slot Bertema Thailand dan Peluang Jackpot<br/> 2850 <span style="color: #fca115; font-weight: 600; text-shadow: 0 0 5px rgba(255, 0, 0, 0.25);">©
2850 COPYRIGHT 2026 TOGE123 â¡ Seo DRIFT</span> 2851 </div> 2852 </div> 2853 </div> 2854</div>
2855<script> 2856 function closePopup() { 2857 const popupOverlay = document.getElementById('popupOverlay'); 2858 popupOverlay.style.opacity = '0'; 2859 popupOverlay.style.transition = 'opacity 0.3s ease'; 2860 setTimeout(() => { 2861 popupOverlay.style.display = 'none'; 2862 }, 300); 2863 } 2864 // Menutup popup ketika mengklik area di luar popup 2865 document.getElementById('popupOverlay').addEventListener('click', function(event) { 2866 if (event.target === this) { 2867 closePopup(); 2868 } 2869 }); 2870</script>
2870 2871 <style nonce="se3iyzEHMc9FQEB4wSyd0w=="> 2872 /* Chat Widget Styles - Lightweight & Minimal */ 2873 .chat-widget { 2874 position: fixed; 2875 bottom: 20px; 2876 right: 20px; 2877 z-index: 9999; 2878 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; 2879 } 2880 /* Hide floating button on mobile - use bottom nav instead */ 2881 @media (max-width: 640px) { 2882 .chat-toggle-btn { 2883 display: none !important; 2884 } 2885 /* Ensure popup is still visible on mobile even when button is hidden */ 2886 .chat-widget { 2887 display: block !important; 2888 } 2889 .chat-popup { 2890 display: none; /* Hidden by default, shown via JS */ 2891 } 2892 .chat-popup[style*="display: block"], 2893 .chat-popup[style*="display:block"] { 2894 display: block !important; 2895 } 2896 } 2897 .chat-toggle-btn { 2898 width: 60px; 2899 height: 60px; 2900 border-radius: 50%; 2901 background: linear-gradient(135deg, #4146fe 0%, #D97809 100%); 2902 border: none; 2903 color: white; 2904 cursor: pointer; 2905 box-shadow: 0 4px 12px rgba(242, 140, 26, 0.3); 2906 position: relative; 2907 transition: transform 0.2s, box-shadow 0.2s; 2908 } 2909 .chat-toggle-btn:hover { 2910 transform: scale(1.05); 2911 box-shadow: 0 6px 20px rgba(242, 140, 26, 0.4); 2912 } 2913 #chat-toggle-btn .chat-icon { 2914 position: absolute; 2915 top: 50%; 2916 left: 50%; 2917 transform: translate(-50%, -50%); 2918 width: 28px !important; 2919 height: 28px !important; 2920 } 2921 .chat-unread-badge { 2922 position: absolute; 2923 top: -5px; 2924 right: -5px; 2925 background: #ef4444; 2926 color: white; 2927 border-radius: 12px; 2928 padding: 2px 6px; 2929 font-size: 11px; 2930 font-weight: 600; 2931 min-width: 20px; 2932 text-align: center; 2933 } 2934 .chat-popup { 2935 position: absolute; 2936 bottom: 80px; 2937 right: 0; 2938 width: 380px; 2939 max-width: calc(100vw - 40px); 2940 height: 500px; 2941 max-height: calc(100vh - 120px); 2942 background: white; 2943 border-radius: 12px; 2944 box-shadow: 0 10px 40px rgba(0,0,0,0.2); 2945 display: flex; 2946 flex-direction: column; 2947 overflow: hidden; 2948 } 2949 .chat-popup-header { 2950 background: linear-gradient(135deg, #4146fe 0%, #D97809 100%); 2951 color: white; 2952 padding: 16px 20px; 2953 display: flex; 2954 justify-content: space-between; 2955 align-items: center; 2956 flex-shrink: 0; 2957 } 2958 .chat-header-title { 2959 display: flex; 2960 flex-direction: column; 2961 gap: 2px; 2962 min-height: 0; 2963 } 2964 .chat-popup-header h3 { 2965 margin: 0; 2966 font-size: 18px; 2967 font-weight: 600; 2968 line-height: 1.2; 2969 } 2970 .chat-operating-hours { 2971 font-size: 11px; 2972 opacity: 0.9; 2973 font-weight: 400; 2974 display: flex; 2975 align-items: center; 2976 gap: 4px; 2977 line-height: 1.2; 2978 } 2979 .chat-operating-hours svg { 2980 width: 12px; 2981 height: 12px; 2982 opacity: 0.8; 2983 flex-shrink: 0; 2984 } 2985 .chat-header-actions { 2986 display: flex; 2987 align-items: center; 2988 gap: 8px; 2989 } 2990 /* Notification Toggle Button */ 2991 .btn-notif-toggle { 2992 background: none; 2993 border: none; 2994 color: white; 2995 font-size: 18px; 2996 cursor: pointer; 2997 padding: 4px 8px; 2998 transition: all 0.2s; 2999 opacity: 0.8; 3000 } 3001 .btn-notif-toggle:hover { 3002 opacity: 1; 3003 transform: scale(1.1); 3004 } 3005 /* Icon states */ 3006 .btn-notif-toggle[data-status="not-subscribed"] svg { 3007 opacity: 0.7; 3008 } 3009 .btn-notif-toggle[data-status="not-subscribed"]:hover svg { 3010 opacity: 1; 3011 } 3012 .btn-notif-toggle[data-status="subscribed"] svg { 3013 opacity: 1; 3014 animation: bellRing 2s ease-in-out; 3015 } 3016 .btn-notif-toggle[data-status="blocked"] svg { 3017 color: #ff6b6b; 3018 } 3019 .btn-notif-toggle[data-status="not-supported"] { 3020 display: none !important; 3021 } 3022 @keyframes bellRing { 3023 0%, 100% { transform: rotate(0deg); } 3024 10%, 30% { transform: rotate(-10deg); } 3025 20%, 40% { transform: rotate(10deg); } 3026 } 3027 /* Notification Info Bar */ 3028 .chat-notif-info-bar { 3029 position: absolute; 3030 top: 64px; 3031 left: 0; 3032 right: 0; 3033 background: linear-gradient(to right, #e3f2fd, #f5f5f5); 3034 border-bottom: 1px solid #bbdefb; 3035 padding: 8px 12px; 3036 display: flex; 3037 align-items: center; 3038 gap: 8px; 3039 font-size: 12px; 3040 color: #616161; 3041 z-index: 10; 3042 animation: slideDown 0.3s ease; 3043 } 3044 .chat-notif-info-bar svg { 3045 flex-shrink: 0; 3046 } 3047 .chat-notif-info-bar .small { 3048 flex: 1; 3049 line-height: 1.4; 3050 } 3051 .chat-notif-info-bar .btn-dismiss { 3052 background: none; 3053 border: none; 3054 color: #9e9e9e; 3055 cursor: pointer; 3056 padding: 0 4px; 3057 font-size: 16px; 3058 transition: color 0.2s; 3059 } 3060 .chat-notif-info-bar .btn-dismiss:hover { 3061 color: #616161; 3062 } 3063 @keyframes slideDown { 3064 from { 3065 max-height: 0; 3066 opacity: 0; 3067 } 3068 to { 3069 max-height: 50px; 3070 opacity: 1; 3071 } 3072 } 3073 .chat-close-btn { 3074 background: none; 3075 border: none; 3076 color: white; 3077 font-size: 28px; 3078 line-height: 1; 3079 cursor: pointer; 3080 padding: 0; 3081 width: 30px; 3082 height: 30px; 3083 } 3084 .chat-popup-body { 3085 flex: 1 1 auto; 3086 display: flex; 3087 flex-direction: column; 3088 min-height: 0; 3089 overflow: hidden; 3090 height: calc(100% - 64px); 3091 position: relative; 3092 transition: padding-top 0.3s ease; 3093 } 3094 /* Add padding when info bar is visible */ 3095 .chat-popup-body.has-info-bar { 3096 padding-top: 40px; 3097 } 3098 .chat-view { 3099 flex: 1 1 auto; 3100 display: none; 3101 flex-direction: column; 3102 min-height: 0; 3103 overflow: hidden; 3104 } 3105 #chat-list-view { 3106 display: flex; 3107 } 3108 #chat-messages-view { 3109 display: none; 3110 } 3111 #chat-messages-view.active { 3112 display: flex; 3113 flex-direction: column; 3114 } 3115 #chat-new-view { 3116 display: none; 3117 } 3118 #chat-new-view.active { 3119 display: flex; 3120 } 3121 .chat-conversations-list { 3122 flex: 1; 3123 overflow-y: auto; 3124 padding: 0; 3125 background: white; 3126 } 3127 /* Custom Scrollbar for Conversations List */ 3128 .chat-conversations-list::-webkit-scrollbar {
3129 width: 6px; 3130 } 3131 .chat-conversations-list::-webkit-scrollbar-track { 3132 background: #f1f1f1; 3133 } 3134 .chat-conversations-list::-webkit-scrollbar-thumb { 3135 background: #4146fe; 3136 border-radius: 3px; 3137 } 3138 .chat-conversations-list::-webkit-scrollbar-thumb:hover { 3139 background: #D97809; 3140 } 3141 /* Firefox */ 3142 .chat-conversations-list { 3143 scrollbar-width: thin; 3144 scrollbar-color: #4146fe #f1f1f1; 3145 } 3146 .chat-conversation-item { 3147 padding: 12px 16px; 3148 cursor: pointer; 3149 display: flex; 3150 gap: 12px; 3151 align-items: flex-start; 3152 transition: background 0.15s ease; 3153 color: #33371f; 3154 border-bottom: 1px solid #f0f0f0; 3155 } 3156 .chat-conversation-item:hover { 3157 background: #f5f5f5; 3158 } 3159 .chat-conversation-item.active { 3160 background: #FFF5EB; 3161 } 3162 /* WhatsApp-like Avatar */ 3163 .conversation-avatar { 3164 width: 48px; 3165 height: 48px; 3166 border-radius: 50%; 3167 background: linear-gradient(135deg, #4146fe 0%, #D97809 100%); 3168 flex-shrink: 0; 3169 display: flex; 3170 align-items: center; 3171 justify-content: center; 3172 color: white; 3173 font-weight: 600; 3174 font-size: 18px; 3175 } 3176 .conversation-avatar svg { 3177 width: 24px; 3178 height: 24px; 3179 } 3180 /* WhatsApp-like Content */ 3181 .conversation-content { 3182 flex: 1; 3183 min-width: 0; 3184 display: flex; 3185 flex-direction: column; 3186 gap: 4px; 3187 } 3188 .conversation-header { 3189 display: flex; 3190 justify-content: space-between; 3191 align-items: center; 3192 gap: 8px; 3193 } 3194 .conversation-name { 3195 font-weight: 600; 3196 font-size: 15px; 3197 color: #111; 3198 white-space: nowrap; 3199 overflow: hidden; 3200 text-overflow: ellipsis; 3201 } 3202 .conversation-time { 3203 font-size: 12px; 3204 color: #7d8166; 3205 flex-shrink: 0; 3206 } 3207 .conversation-preview { 3208 display: flex; 3209 justify-content: space-between; 3210 align-items: center; 3211 gap: 8px; 3212 } 3213 .conversation-message { 3214 font-size: 14px; 3215 color: #667781; 3216 white-space: nowrap; 3217 overflow: hidden; 3218 text-overflow: ellipsis; 3219 margin: 0; 3220 flex: 1; 3221 } 3222 .conversation-unread { 3223 background: #d32525; 3224 color: white; 3225 border-radius: 12px; 3226 padding: 2px 8px; 3227 font-size: 12px; 3228 font-weight: 600; 3229 min-width: 20px; 3230 text-align: center; 3231 flex-shrink: 0; 3232 } 3233 /* Active item styling */ 3234 .chat-conversation-item.active .conversation-name { 3235 color: #4146fe; 3236 } 3237 .chat-conversation-item.active .conversation-time { 3238 color: #4146fe; 3239 } 3240 .chat-new-btn { 3241 margin: 12px; 3242 padding: 12px; 3243 background: linear-gradient(135deg, #4146fe 0%, #D97809 100%); 3244 color: white; 3245 border: none; 3246 border-radius: 8px; 3247 cursor: pointer; 3248 font-weight: 500; 3249 font-size: 14px; 3250 display: flex; 3251 align-items: center; 3252 justify-content: center; 3253 gap: 8px; 3254 transition: all 0.2s; 3255 flex-shrink: 0; 3256 } 3257 .chat-new-btn:hover { 3258 transform: translateY(-1px); 3259 box-shadow: 0 4px 8px rgba(242, 140, 26, 0.3); 3260 } 3261 .chat-conversation-title { 3262 flex: 1; 3263 font-weight: 600; 3264 font-size: 16px; 3265 color: #1f2937; 3266 } 3267 .chat-messages-container { 3268 flex: 1; 3269 overflow-y: auto; 3270 padding: 16px; 3271 display: flex; 3272 flex-direction: column; 3273 gap: 8px; 3274 min-height: 0; 3275 background: #E5DDD5; 3276 } 3277 /* Custom Scrollbar for Messages Container */ 3278 .chat-messages-container::-webkit-scrollbar {
3279 width: 6px; 3280 } 3281 .chat-messages-container::-webkit-scrollbar-track { 3282 background: rgba(0, 0, 0, 0.05); 3283 } 3284 .chat-messages-container::-webkit-scrollbar-thumb { 3285 background: rgba(242, 140, 26, 0.6); 3286 border-radius: 3px; 3287 } 3288 .chat-messages-container::-webkit-scrollbar-thumb:hover { 3289 background: #4146fe; 3290 } 3291 /* Firefox */ 3292 .chat-messages-container { 3293 scrollbar-width: thin; 3294 scrollbar-color: rgba(242, 140, 26, 0.6) rgba(0, 0, 0, 0.05); 3295 } 3296 /* WhatsApp Group-like Messages */ 3297 .chat-message { 3298 display: flex; 3299 margin-bottom: 4px; 3300 animation: fadeIn 0.2s ease; 3301 } 3302 @keyframes fadeIn { 3303 from { opacity: 0; transform: translateY(10px); } 3304 to { opacity: 1; transform: translateY(0); } 3305 } 3306 .chat-message.mine { 3307 justify-content: flex-end; 3308 } 3309 .chat-message-bubble { 3310 max-width: 80%; 3311 padding: 6px 8px 8px 10px; 3312 border-radius: 8px; 3313 position: relative; 3314 box-shadow: 0 1px 0.5px rgba(0,0,0,0.13); 3315 } 3316 /* Bubble from others (Admin/CS) */ 3317 .chat-message:not(.mine) .chat-message-bubble { 3318 background: #FFFFFF; 3319 border-radius: 0 8px 8px 8px; 3320 } 3321 /* Bubble tail for others */ 3322 .chat-message:not(.mine) .chat-message-bubble::before { 3323 content: ''; 3324 position: absolute; 3325 top: 0; 3326 left: -8px; 3327 width: 0; 3328 height: 0; 3329 border-style: solid; 3330 border-width: 0 8px 13px 0; 3331 border-color: transparent #FFFFFF transparent transparent; 3332 } 3333 /* Bubble from user (mine) */ 3334 .chat-message.mine .chat-message-bubble { 3335 background: #e4f5d0; /* Light blue for user messages */ 3336 border-radius: 8px 0 8px 8px; 3337 } 3338 /* Bubble tail for mine */ 3339 .chat-message.mine .chat-message-bubble::before { 3340 content: ''; 3341 position: absolute; 3342 top: 0; 3343 right: -8px; 3344 width: 0; 3345 height: 0; 3346 border-style: solid; 3347 border-width: 0 0 13px 8px; 3348 border-color: transparent transparent transparent #eaf5d0; 3349 } 3350 .message-sender { 3351 font-size: 12.5px; 3352 font-weight: 600; 3353 color: #4146fe !important; 3354 margin-bottom: 4px; 3355 } 3356 .chat-message.mine .message-sender { 3357 display: none; 3358 } 3359 /* Message text */ 3360 .message-text { 3361 font-size: 14px; 3362 line-height: 19px; 3363 color: #000000 !important; 3364 word-wrap: break-word; 3365 white-space: pre-wrap; 3366 margin-bottom: 4px; 3367 } 3368 /* Message metadata (time + status) */ 3369 .message-meta { 3370 display: flex; 3371 align-items: center; 3372 justify-content: flex-end; 3373 gap: 4px; 3374 margin-top: 2px; 3375 } 3376 .message-time { 3377 font-size: 11px; 3378 color: #728166 !important; 3379 line-height: 15px; 3380 } 3381 /* Use multiple selectors to override global styles */ 3382 .chat-message-bubble .message-status, 3383 .message-meta .message-status, 3384 .chat-message .message-status { 3385 width: 16px !important; 3386 height: 16px !important; 3387 min-width: 16px !important; 3388 min-height: 16px !important; 3389 max-width: 16px !important; 3390 max-height: 16px !important; 3391 flex-shrink: 0; 3392 color: #728166 !important; 3393 fill: currentColor !important; 3394 } 3395 .chat-message:not(.mine) .message-status { 3396 display: none; 3397 } 3398 /* Loading dots animation */ 3399 @keyframes loadingDots { 3400 0%, 20% { content: '.'; } 3401 40% { content: '..'; } 3402 60%, 100% { content: '...'; } 3403 } 3404 .message-status.loading::after { 3405 content: '...'; 3406 animation: loadingDots 1.5s infinite; 3407 font-size: 16px; 3408 line-height: 16px; 3409 } 3410 .message-status.loading path { 3411 display: none; 3412 } 3413 .message-status.failed { 3414 color: #ef4444 !important; 3415 cursor: pointer; 3416 } 3417 .message-status.sent { 3418 color: #667781 !important; 3419 } 3420 .chat-new-form { 3421 flex: 1; 3422 overflow-y: auto; 3423 padding: 16px; 3424 display: flex; 3425 flex-direction: column; 3426 } 3427 .chat-new-form form { 3428 display: flex; 3429 flex-direction: column; 3430 gap: 16px; 3431 flex: 1; 3432 } 3433 .chat-new-form .form-group { 3434 display: flex; 3435 flex-direction: column; 3436 gap: 6px; 3437 } 3438 .chat-new-form label { 3439 font-size: 14px; 3440 font-weight: 500; 3441 color: #374151; 3442 } 3443 .chat-new-form .form-control { 3444 width: 100%; 3445 padding: 10px 12px; 3446 border: 1px solid #d1d5db; 3447 border-radius: 8px; 3448 font-size: 14px; 3449 font-family: inherit; 3450 transition: border-color 0.2s; 3451 box-sizing: border-box; 3452 } 3453 .chat-new-form .form-control:focus { 3454 outline: none; 3455 border-color: #4146fe; 3456 box-shadow: 0 0 0 3px rgba(242, 140, 26, 0.1); 3457 } 3458 .chat-new-form textarea.form-control { 3459 resize: vertical; 3460 min-height: 100px; 3461 } 3462 .chat-new-form .btn { 3463 padding: 12px 20px; 3464 border: none; 3465 border-radius: 8px; 3466 font-size: 15px; 3467 font-weight: 500; 3468 cursor: pointer; 3469 transition: all 0.2s; 3470 text-align: center; 3471 } 3472 .chat-new-form .btn-primary { 3473 background: linear-gradient(135deg, #4146fe 0%, #D97809 100%); 3474 color: white; 3475 } 3476 .chat-new-form .btn-primary:hover { 3477 transform: translateY(-1px); 3478 box-shadow: 0 4px 8px rgba(242, 140, 26, 0.3); 3479 } 3480 .chat-new-form .btn-primary:active { 3481 transform: scale(0.98); 3482 } 3483 .chat-new-form .btn-block { 3484 width: 100%; 3485 margin-top: auto; 3486 } 3487 .chat-message-form { 3488 padding: 12px; 3489 border-top: 1px solid #e5e7eb; 3490 display: flex; 3491 flex-wrap: wrap; 3492 gap: 8px; 3493 align-items: flex-end; 3494 flex-shrink: 0; 3495 background: white; 3496 } 3497 .chat-product-card { 3498 flex: 1 1 100%; 3499 max-width: 100%; 3500 display: flex; 3501 gap: 12px; 3502 padding: 12px; 3503 background: #f3f4f6; 3504 border-radius: 8px; 3505 margin-bottom: 4px; 3506 border: 1px solid #e5e7eb; 3507 } 3508 .chat-product-card img { 3509 width: 60px; 3510 height: 60px; 3511 object-fit: cover; 3512 border-radius: 6px; 3513 flex-shrink: 0; 3514 } 3515 .chat-product-card-content { 3516 flex: 1; 3517 min-width: 0; 3518 } 3519 .chat-product-card-name { 3520 font-weight: 500; 3521 font-size: 14px; 3522 color: #1f2937; 3523 margin-bottom: 4px; 3524 white-space: nowrap; 3525 overflow: hidden; 3526 text-overflow: ellipsis; 3527 } 3528 .chat-product-card-variant { 3529 font-size: 12px; 3530 color: #74806b; 3531 margin-bottom: 4px; 3532 } 3533 .chat-product-card-price { 3534 font-size: 13px; 3535 color: #8bea66; 3536 font-weight: 600; 3537 } 3538 .chat-product-card-remove { 3539 align-self: flex-start; 3540 background: none; 3541 border: none; 3542 color: #9ca3af; 3543 cursor: pointer; 3544 padding: 4px; 3545 font-size: 18px; 3546 line-height: 1; 3547 transition: color 0.2s; 3548 } 3549 .chat-product-card-remove:hover { 3550 color: #ef4444; 3551 } 3552 /* Product card in messages (read-only display) */ 3553 .message-product-card { 3554 display: flex; 3555 gap: 10px; 3556 padding: 10px; 3557 background: rgba(255, 255, 255, 0.5); 3558 border-radius: 8px; 3559 margin-bottom: 6px; 3560 border: 1px solid rgba(0, 0, 0, 0.08); 3561 align-items: center; 3562 } 3563 .chat-message.mine .message-product-card { 3564 background: rgba(255, 255, 255, 0.7); 3565 } 3566 .message-product-card img { 3567 width: 50px; 3568 height: 50px; 3569 object-fit: cover; 3570 border-radius: 6px; 3571 flex-shrink: 0; 3572 } 3573 .message-product-info { 3574 flex: 1; 3575 min-width: 0; 3576 } 3577 .message-product-name { 3578 font-weight: 500; 3579 font-size: 13px; 3580 color: #33371f; 3581 margin-bottom: 2px; 3582 overflow: hidden; 3583 text-overflow: ellipsis; 3584 display: -webkit-box; 3585 -webkit-line-clamp: 2; 3586 -webkit-box-orient: vertical; 3587 line-height: 1.3; 3588 } 3589 .message-product-variant { 3590 font-size: 11px; 3591 color: #78806b; 3592 margin-bottom: 2px; 3593 } 3594 .message-product-price { 3595 font-size: 12px; 3596 color: #c7ea66; 3597 font-weight: 600; 3598 } 3599 .message-product-link { 3600 flex-shrink: 0; 3601 width: 32px; 3602 height: 32px; 3603 display: flex; 3604 align-items: center; 3605 justify-content: center; 3606 background: rgba(102, 126, 234, 0.1); 3607 border-radius: 6px; 3608 color: #c7ea66; 3609 text-decoration: none; 3610 transition: all 0.2s; 3611 } 3612 .message-product-link:hover { 3613 background: #b7ea66; 3614 color: white; 3615 } 3616 .message-product-link svg { 3617 width: 16px; 3618 height: 16px; 3619 } 3620 .chat-message-input { 3621 flex: 1; 3622 border: 1px solid #d1d5db; 3623 border-radius: 20px; 3624 padding: 10px 16px; 3625 resize: none; 3626 max-height: 100px; 3627 font-family: inherit; 3628 font-size: 14px; 3629 line-height: 1.5; 3630 box-sizing: border-box; 3631 overflow-y: hidden; 3632 } 3633 .chat-message-input:focus { 3634 outline: none; 3635 border-color: #4146fe; 3636 box-shadow: 0 0 0 3px rgba(242, 140, 26, 0.1); 3637 } 3638 .chat-send-btn { 3639 width: 40px; 3640 height: 40px; 3641 border-radius: 50%; 3642 background: linear-gradient(135deg, #4146fe 0%, #D97809 100%); 3643 border: none; 3644 color: white; 3645 cursor: pointer; 3646 flex-shrink: 0; 3647 display: flex; 3648 align-items: center; 3649 justify-content: center; 3650 transition: all 0.2s; 3651 } 3652 .chat-send-btn:hover { 3653 transform: scale(1.05); 3654 box-shadow: 0 2px 8px rgba(242, 140, 26, 0.3); 3655 } 3656 .chat-send-btn:active { 3657 transform: scale(0.95); 3658 } 3659 .chat-loading { 3660 text-align: center; 3661 padding: 20px; 3662 color: #6b7280; 3663 } 3664 /* Date Separator (WhatsApp-style) */ 3665 .date-separator { 3666 display: flex; 3667 align-items: center; 3668 gap: 12px; 3669 margin: 24px 0 16px; 3670 opacity: 0; 3671 animation: fadeInSeparator 0.3s ease forwards; 3672 } 3673 @keyframes fadeInSeparator { 3674 from { 3675 opacity: 0; 3676 transform: translateY(-10px); 3677 } 3678 to { 3679 opacity: 1; 3680 transform: translateY(0); 3681 } 3682 } 3683 .date-separator-line { 3684 flex: 1; 3685 height: 1px; 3686 background: linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.1) 50%, transparent); 3687 } 3688 .date-separator-text { 3689 flex-shrink: 0; 3690 padding: 4px 12px; 3691 background: #e9ecef; 3692 color: #6c757d; 3693 font-size: 11px; 3694 font-weight: 600; 3695 text-transform: uppercase; 3696 letter-spacing: 0.5px; 3697 border-radius: 12px; 3698 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); 3699 } 3700 /* Mobile responsive */ 3701 @media (max-width: 640px) { 3702 .chat-popup { 3703 position: fixed !important; /* Override absolute positioning */ 3704 bottom: 45px !important; /* Above bottom nav */ 3705 right: 0 !important; 3706 left: 0 !important; 3707 width: 100% !important; 3708 max-width: 100% !important; 3709 /* Use dvh (dynamic viewport height) for browser UI awareness */ 3710 height: calc(100dvh - 45px) !important; 3711 max-height: calc(100dvh - 45px) !important; 3712 /* Fallback for browsers that don't support dvh */ 3713 height: calc(var(--viewport-height, 100vh) - 45px) !important; 3714 max-height: calc(var(--viewport-height, 100vh) - 45px) !important; 3715 border-radius: 0 !important; 3716 z-index: 9999 !important; 3717 } 3718 .chat-popup-header { 3719 border-radius: 0; 3720 } 3721 .chat-messages-container, 3722 .chat-conversations-list { 3723 /* Adjust for mobile keyboard using dynamic viewport */ 3724 max-height: calc(100dvh - 190px); 3725 /* Fallback for browsers that don't support dvh */ 3726 max-height: calc(var(--viewport-height, 100vh) - 190px); 3727 } 3728 } 3729 </style> 3730 <!-- Chat Widget Button --> 3731 <div id="chat-widget" class="chat-widget" 3732 data-user-id="" 3733 data-is-logged-in="false" 3734 data-csrf-token="df5d776748b1ed8c8dd0d987bae99b1ee3dea6c6dcbe0eedb1bea766c56d569a"> 3735 <button id="chat-toggle-btn" class="chat-toggle-btn" aria-label="Toggle chat"> 3736 <svg class="chat-icon" width="28" height="28" viewBox="0 0 640 640" fill="current
3736Color"> 3737 <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"/> 3738 </svg> 3739 <span id="chat-unread-badge" class="chat-unread-badge" style="display: none;">0</span> 3740 </button> 3741 <div id="chat-popup" class="chat-popup" style="display: none;"> 3742 <div class="chat-popup-header"> 3743 <div class="chat-header-title"> 3744 <h3>Bantuan</h3> 3745 <span id="chatOperatingHours" class="chat-operating-hours" style="display: none;"></span> 3746 </div> 3747 <div class="chat-header-actions"> 3748 <button id="chatNotifToggle" class="btn-notif-toggle" data-status="not-supported" title="Push notification" style="display: none;"> 3749 <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"> 3750 <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"/> 3751 </svg> 3752 </button> 3753 <button id="chat-close-btn" class="chat-close-btn" aria-label="Close chat">Ã</button> 3754 </div> 3755 </div> 3756 <!-- Notification Info Bar (conditional) --> 3757 <div class="chat-notif-info-bar" id="chatNotifInfoBar" style="display:none;"> 3758 <svg width="14" height="14" viewBox="0 0 24 24" fill="#ffc107"> 3759 <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"/> 3760 </svg> 3761 <span class="small">Aktifkan notifikasi untuk pemberitahuan balasan</span> 3762 <button class="btn-dismiss" onclick="ChatNotification.dismissInfo()">â</button> 3763 </div> 3764 <div class="chat-popup-body"> 3765 <!-- Conversations List View --> 3766 <div id="chat-list-view" class="chat-view"> 3767 <div id="chat-conversations-list" class="chat-conversations-list"> 3768 <div class="chat-loading">Memuat...</div> 3769 <!-- Conversation Item Structure (rendered by JS): 3770 <div class="chat-conversation-item"> 3771 <div class="conversation-avatar"> 3772 <svg>...</svg> 3773 </div> 3774 <div class="conversation-content"> 3775 <div class="conversation-header"> 3776 <span class="conversation-name">Admin Support</span> 3777 <span class="conversation-time">10:30</span> 3778 </div> 3779 <div class="conversation-preview"> 3780 <p class="conversation-message">Terima kasih telah menghubungi kami...</p> 3781 <span class="conversation-unread">2</span> 3782 </div> 3783 </div> 3784 </div> 3785 --> 3786 </div> 3787 <button id="chat-new-btn" class="chat-new-btn">
3788 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3789 <line x1="12" y1="5" x2="12" y2="19"></line> 3790 <line x1="5" y1="12" x2="19" y2="12"></line> 3791 </svg> 3792 Percakapan Baru 3793 </button> 3794 </div> 3795 <!-- Chat Messages View --> 3796 <div id="chat-messages-view" class="chat-view" style="display: none;"> 3797 <div id="chat-messages-container" class="chat-messages-container"> 3798 <div class="chat-loading">Memuat pesan...</div> 3799 <!-- Message Structure (rendered by JS): 3800 <div class="chat-message"> (or .chat-message.mine) 3801 <div class="chat-message-bubble"> 3802 <div class="message-sender">Admin Support</div> (only for non-mine) 3803 <div class="message-text">Halo, ada yang bisa dibantu?</div> 3804 <div class="message-meta"> 3805 <span class="message-time">10:30</span> 3806 <svg class="message-status">...</svg> (only for mine) 3807 </div> 3808 </div> 3809 </div> 3810 --> 3811 </div> 3812 <form id="chat-message-form" class="chat-message-form"> 3813 <input type="hidden" id="chat-current-conversation-id" value=""> 3814 <textarea 3815 id="chat-message-input" 3816 class="chat-message-input" 3817 placeholder="Ketik pesan..." 3818 rows="1" 3819 maxlength="5000" 3820 ></textarea> 3821 <button type="submit" class="chat-send-btn" aria-label="Send message"> 3822 <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3823 <line x1="22" y1="2" x2="11" y2="13"></line> 3824 <polygon points="22 2 15 22 11 13 2 9 22 2"></polygon> 3825 </svg> 3826 </button> 3827 </form> 3828 </div> 3829 <!-- New Chat View --> 3830 <div id="chat-new-view" class="chat-view" style="display: none;"> 3831 <div class="chat-messages-header"> 3832 <button id="chat-new-back-btn" class="chat-back-btn" aria-label="Back to list"> 3833 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3834 <path d="M19 12H5M12 19l-7-7 7-7"/> 3835 </svg> 3836 </button> 3837 <div class="chat-conversation-title">Percakapan Baru</div> 3838 </div> 3839 <div class="chat-new-form"> 3840 <form id="chat-start-form"> 3841 <div class="form-group"> 3842 <label for="chat-new-subject">Subjek</label> 3843 <input 3844 type="text" 3845 id="chat-new-subject" 3846 class="form-control" 3847 placeholder="Bantuan Pelanggan" 3848 maxlength="255" 3849 > 3850 </div> 3851 <div class="form-group"> 3852 <label for="chat-new-message">Pesan</label> 3853 <textarea 3854 id="chat-new-message" 3855 class="form-control" 3856 rows="4" 3857 placeholder="Tulis pertanyaan Anda..." 3858 required 3859 maxlength="5000" 3860 ></textarea> 3861 </div> 3862 <button type="submit" class="btn btn-primary btn-block">Kirim</button> 3863 </form> 3864 </div> 3865 </div> 3866 </div> 3867 </div> 3868 </div> 3869 <!-- Login Required Modal --> 3870 <div class="modal-overlay" id="chatLoginModal"> 3871 <div class="modal-dialog"> 3872 <div class="modal-header"> 3873 <h3 class="modal-title"> 3874 <div class="modal-icon info"> 3875 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 3876 <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"/> 3877 </svg> 3878 </div> 3879 Login Diperlukan 3880 </h3> 3881 </div> 3882 <div class="modal-body"> 3883 <p class="modal-message">
3883Anda harus login terlebih dahulu untuk menggunakan fitur chat bantuan pelanggan.</p> 3884 <div class="modal-actions"> 3885 <button class="modal-btn modal-btn-secondary" id="chatLoginCancel">Batal</button> 3886 <button class="modal-btn modal-btn-primary" id="chatLoginConfirm">Login Sekarang</button> 3887 </div> 3888 </div> 3889 </div> 3890 </div> 3891 <!-- Footer Collapse Toggle Script -->
3892<script nonce="se3iyzEHMc9FQEB4wSyd0w=="> 3893document.addEventListener('DOMContentLoaded', function() { 3894 const ftTop = document.getElementById('ftTop'); 3895 const expandBtn = document.getElementById('ftExpandBtn'); 3896 if (ftTop && expandBtn) { 3897 const expandText = expandBtn.querySelector('.expand-text'); 3898 expandBtn.addEventListener('click', function() { 3899 ftTop.classList.toggle('expanded'); 3900 const isExpanded = ftTop.classList.contains('expanded'); 3901 if (expandText) { 3902 expandText.textContent = isExpanded ? 'Sembunyikan' : 'Selengkapnya'; 3903 } 3904 }); 3905 } 3906}); 3907</script>
3907 3908</footer> 3909<!-- Compare Sidebar Overlay --> 3910<div class="compare-overlay" id="compareOverlay"></div> 3911<!-- Floating Compare Badge (Sticky) --> 3912<button class="compare-floating-badge" id="compareFloatingBadge" aria-label="Lihat produk yang dibandingkan" style="display:none;"> 3913<svg class="cfb-icon" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> 3914 <path d="M9.01 14H2v2h7.01v3L13 15l-3.99-4v3zm5.98-1v-3H22V8h-7.01V5L11 9l3.99 4z"/> 3915</svg> 3916<span class="cfb-text">Bandingkan</span> 3917<span class="cfb-count" id="cfbCount">0</span> 3918</button> 3919<!-- AI Comparison Modal --> 3920<div class="ai-compare-modal" id="aiCompareModal"> 3921<div class="modal-backdrop"></div> 3922<div class="modal-container"> 3923 <div class="modal-header"> 3924 <h3 class="modal-title"> 3925 <svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor"> 3926 <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"/> 3927 </svg> 3928 Analisis AI: Perbandingan Produk 3929 </h3> 3930 <button class="modal-close" id="aiCompareModalClose" aria-label="Tutup"> 3931 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 3932 <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"/> 3933 </svg> 3934 </button> 3935 </div> 3936 <div class="modal-content"> 3937 <!-- Loading State --> 3938 <div class="ai-loading" id="aiLoading"> 3939 <div class="loading-animation"> 3940 <div class="typing-indicator"> 3941 <span></span> 3942 <span></span> 3943 <span></span> 3944 </div> 3945 <p>AI sedang menganalisis produk...</p> 3946 <small>Proses ini membutuhkan waktu 10-30 detik</small> 3947 </div> 3948 </div> 3949 <!-- Error State --> 3950 <div class="ai-error" id="aiError" hidden> 3951 <div class="error-icon"> 3952 <svg width="48" height="48" viewBox="0 0 24 24" fill="#ef4444"> 3953 <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"/> 3954 </svg> 3955 </div> 3956 <h4>Analisis AI Gagal</h4> 3957 <p id="aiErrorMessage">Terjadi kesalahan saat memproses analisis.</p> 3958 <button class="btn btn-outline-primary" id="aiRetry">Coba Lagi</button> 3959 </div> 3960 <!-- Analysis Results --> 3961 <div class="ai-results" id="aiResults" hidden> 3962 <!-- Summary Section --> 3963 <div class="ai-summary-card"> 3964 <h4> 3965 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 3966 <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"/> 3967 </svg> 3968 Ringkasan Analisis 3969 </h4> 3970 <p id="aiSummary" class="summary-text"></p> 3971 <div class="winner-badge" id="winnerBadge"> 3972 <strong>Rekomendasi Terbaik:</strong> <span id="winnerProduct"></span> 3973 <small id="winnerReason"></small> 3974 </div> 3975 </div> 3976 <!-- Comparison Table --> 3977 <div class="ai-comparison-table"> 3978 <h4> 3979 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 3980 <path d="M3,3H21V5H3V3M3,7H21V9H3V7M3,11H21V13H3V11M3,15H21V17H3V15M3,19H21V21H3V19Z"/> 3981 </svg> 3982 Perbandingan Detail 3983 </h4> 3984 <div id="comparisonTable" class="comparison-grid"></div> 3985 </div> 3986 <!-- Detailed Analysis --> 3987 <div class="ai-detailed-analysis"> 3988 <h4> 3989 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 3990 <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"/> 3991 </svg> 3992 Analisis Mendalam 3993 </h4> 3994 <div id="detailedAnalysis" class="products-analysis"></div> 3995 </div> 3996 <!-- Recommendations --> 3997 <div class="ai-recommendations"> 3998 <h4> 3999 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 4000 <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"/> 4001 </svg> 4002 Rekomendasi Berdasarkan Kebutuhan 4003 </h4> 4004 <div class="recommendations-grid"> 4005 <div class="recommendation-card"> 4006 <h5>ð° Budget Conscious</h5> 4007 <p id="budgetRecommendation"></p> 4008 </div> 4009 <div class="recommendation-card"> 4010 <h5>â¡ Performance Focused</h5> 4011 <p id="performanceRecommendation"></p> 4012 </div> 4013 <div class="recommendation-card"> 4014 <h5>âï¸ Balanced Choice</h5> 4015 <p id="balancedRecommendation"></p> 4016 </div> 4017 </div> 4018 </div> 4019 <!-- Buying Tips --> 4020 <div class="ai-tips"> 4021 <h4> 4022 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 4023 <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
4023M5,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"/> 4024 </svg> 4025 Tips Pembelian 4026 </h4> 4027 <ul id="buyingTips" class="tips-list"></ul> 4028 </div> 4029 </div> 4030 </div> 4031</div> 4032</div> 4033<!-- Cart Login Modal --> 4034<div class="modal-overlay" id="cartLoginModal"> 4035<div class="modal-dialog"> 4036 <div class="modal-header"> 4037 <h3 class="modal-title"> 4038 <div class="modal-icon info"> 4039 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 4040 <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"/> 4041 </svg> 4042 </div> 4043 Login untuk Melanjutkan 4044 </h3> 4045 </div> 4046 <div class="modal-body"> 4047 <p class="modal-message" style="margin-bottom: 16px;">Silakan login atau daftar untuk mengakses keranjang belanja dan menyelesaikan pesanan Anda.</p> 4048 <div style="background: #f8fafc; border-radius: 8px; padding: 12px; margin-bottom: 20px;"> 4049 <p style="font-size: 14px; color: #646947; margin: 0; line-height: 1.6;"> 4050 <strong style="color: #2a2a0f;">Keuntungan dengan akun:</strong><br> 4051 â Simpan keranjang belanja Anda<br> 4052 â Lacak status pesanan secara real-time<br> 4053 â Checkout lebih cepat dengan data tersimpan<br> 4054 â Dapatkan notifikasi promo & diskon eksklusif 4055 </p> 4056 </div> 4057 <div class="modal-actions"> 4058 <button class="modal-btn modal-btn-secondary" id="cartLoginCancel">Batal</button> 4059 <button class="modal-btn modal-btn-primary" id="cartLoginConfirm" style="background: #ff6b35; border-color: #ff6b35;">Login</button> 4060 <button class="modal-btn modal-btn-primary" id="cartRegisterBtn" style="background: #f7931e; border-color: #f7931e;">Daftar</button> 4061 </div> 4062 </div> 4063</div> 4064</div> 4065<style> 4066/* ========================================================= 4067 ð¢ FIXED FOOTER â EMERALD MODE 4068========================================================= */ 4069.raban-red-fixed-footer { 4070position: fixed; 4071left: 0; right: 0; bottom: 0; 4072z-index: 999; 4073display: flex; 4074align-items: center; 4075justify-content: space-around; 4076gap: 8px; 4077padding: 11px 12px calc(11px + env(safe-area-inset-bottom)); 4078overflow: hidden; 4079/* Background Hijau + Hitam */ 4080background: 4081 radial-gradient(circle at 50% 0%, rgba(141, 120, 0, 0.25), rgba(30, 26, 10, 0.95) 60%, rgba(0, 0, 0, 1)), 4082 linear-gradient(180deg, rgba(50, 45, 20, 0.9), rgb(0, 0, 0)); 4083border-top: 2px solid rgba(141, 118, 0, 0.7); 4084border-radius: 20px 20px 0 0; 4085box-shadow: 4086 0 -12px 35px rgba(145, 118, 0, 0.25), 4087 inset 0 1px 0 rgba(255, 255, 255, 0.1); 4088font-family: "Orbitron", "Poppins", sans-serif; 4089} 4090/* ð Scanline Halus */ 4091.raban-red-fixed-footer::before { 4092content: ""; 4093position: absolute; 4094inset: 0; 4095pointer-events: none; 4096background: repeating-linear-gradient( 4097 0deg, 4098 rgba(139, 0, 0, 0.04), 4099 rgba(138, 0, 0, 0.04) 1px, 4100 transparent 1px, 4101 transparent 4px 4102); 4103opacity: 0.8; 4104mix-blend-mode: overlay; 4105} 4106/* â¡ Green Sweep */ 4107.raban-red-fixed-footer::after { 4108content: ""; 4109position: absolute; 4110top: 0; left: -160%; 4111width: 60%; height: 100%; 4112background: linear-gradient(120deg, transparent, rgba(139, 125, 46, 0.4), transparent); 4113transform: skewX(-25deg); 4114animation: greenShine 4s infinite; 4115pointer-events: none; 4116} 4117@keyframes greenShine { 41180% { left: -160%; } 411960% { left: 160%; } 4120100% { left: 160%; } 4121} 4122/* ========================================================= 4123ITEM STYLE 4124========================================================= */ 4125.raban-red-fixed-footer a { 4126flex: 1; 4127max-width: 110px; 4128display: flex; 4129flex-direction: column; 4130align-items: center; 4131justify-content: center; 4132gap: 5px; 4133padding: 8px 4px; 4134text-decoration: none; 4135text-align: center; 4136color: rgba(255, 255, 255, 0.9); 4137font-size: 11px;
4138font-weight: 800; 4139text-transform: uppercase; 4140transition: all 0.2s ease; 4141position: relative; 4142} 4143.raban-red-fixed-footer a:hover { 4144color: #ffffff; 4145filter: drop-shadow(0 0 8px rgba(255, 0, 0, 0.25)); 4146transform: translateY(-2px); 4147} 4148.raban-red-fixed-footer img { 4149width: 24px; 4150height: 24px; 4151filter: drop-shadow(0 0 6px rgba(255, 0, 0, 0.25)); 4152transition: transform 0.2s ease; 4153} 4154/* ========================================================= 4155CENTER CTA â CORE 4156========================================================= */ 4157.raban-red-fixed-footer .core-cta { 4158background: rgba(46, 139, 87, 0.15); 4159border: 1px solid rgba(255, 0, 0, 0.25); 4160border-radius: 12px; 4161box-shadow: 4162 0 0 15px rgba(139, 123, 46, 0.35), 4163 inset 0 0 10px rgba(139, 123, 46, 0.25); 4164transform: scale(1.05); 4165} 4166.raban-red-fixed-footer .core-cta img { 4167width: 28px; 4168height: 28px; 4169filter: drop-shadow(0 0 12px rgba(245, 0, 0, 0.822)); 4170} 4171/* Pulse Effect */ 4172.raban-red-fixed-footer .core-cta::before { 4173content: ""; 4174position: absolute; 4175inset: -5px; 4176border-radius: 15px; 4177background: radial-gradient(circle, rgba(46, 139, 87, 0.35), transparent 70%); 4178animation: greenPulse 2s ease-in-out infinite; 4179z-index: -1; 4180} 4181@keyframes greenPulse { 41820%, 100% { opacity: 0.4; transform: scale(1); } 418350% { opacity: 0.85; transform: scale(1.1); } 4184} 4185/* ========================================================= 4186RESPONSIVE 4187========================================================= */ 4188@media (max-width: 400px) { 4189.raban-red-fixed-footer a { font-size: 10px; } 4190.raban-red-fixed-footer img { width: 20px; height: 20px; } 4191.raban-red-fixed-footer .core-cta img { width: 24px; height: 24px; } 4192} 4193</style> 4194<div class="raban-red-fixed-footer"> 4195<a href="https://toge-ravion.click/" target="_blank" rel="nofollow noopener"> 4196 <img src="https://meubelkayumurah.pics/wp-content/uploads/2026/05/icontoge123.png" alt="PROMO"> 4197 PROMO 4198</a> 4199<a href="https://toge-ravion.click/" target="_blank" rel="nofollow noopener"> 4200 <img src="https://meubelkayumurah.pics/wp-content/uploads/2026/05/icontoge123.png" alt="TELEGRAM"> 4201 TELEGRAM 4202</a> 4203<a href="https://toge-ravion.click/" target="_blank" rel="nofollow noopener" class="core-cta"> 4204 <img src="https://meubelkayumurah.pics/wp-content/uploads/2026/05/icontoge123.png" alt="DAFTAR"> 4205 DAFTAR 4206</a> 4207<a href="https://toge-ravion.click/" target="_blank" rel="nofollow noopener"> 4208 <img src="https://meubelkayumurah.pics/wp-content/uploads/2026/05/icontoge123.png" alt="PREDIKSI"> 4209 PREDIKSI 4210</a> 4211<a href="https://toge-ravion.click/" target="_blank" rel="nofollow noopener"> 4212 <img src="https://meubelkayumurah.pics/wp-content/uploads/2026/05/icontoge123.png" alt="LIVECHAT"> 4213 LIVECHAT 4214</a> 4215</div> 4216</body> 4217</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.