PageSourceSearch

https://bm2020.com/

html bm2020.com collected 2026-10-09 23:53:45 UTC 255,009 bytes, 4,893 lines download raw bytes

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 &amp; 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 &amp; 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=>({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#039;'}[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 &amp; 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 &amp; Pengembalian</a></li>
3255          <li><a href="/pembayaran-dan-cicilan">Pembayaran &amp; Cicilan</a></li>
3256          <li><a href="/garansi-dan-layanan">Garansi &amp; 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 &copy; <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.