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