PageSourceSearch

https://slotvipbogor.link/

html slotvipbogor.link collected 2026-10-10 01:17:30 UTC 274,881 bytes, 5,629 lines download raw bytes

1
2  <!DOCTYPE html>
3  <html lang="id">
4  <head>
5    <meta charset="UTF-8">
6    <title>SLOTVIP 🚀 Versi Apk Terbaru Game Slot Pelayanan VVIP 2026</title>
7    <meta name="description" content="SLOTVIP hadir dengan versi APK terbaru 2026 yang menawarkan akses cepat, pelayanan VVIP, sistem ringan, serta kemudahan slotvip login dan slotvip link alternatif terbaru untuk pengalaman bermain yang lebih nyaman.">
8    <meta name="robots" content="index,follow">
9    <link rel="canonical" href="https://slotvipbogor.link/">
10    <link rel="amphtml" href="https://slotviplogin.us.com/">
11    <link rel="alternate" hreflang="id-id" href="https://slotviplogin.us.com/"/>
12    <link rel="alternate" href="https://slotviplogin.us.com/"/>
13    <link rel="alternate" hreflang="id" href="https://slotviplogin.us.com/"/>
14    <link rel="alternate" hreflang="en" href="https://slotviplogin.us.com/"/>
15    <link rel="alternate" hreflang="x-default" href="https://slotviplogin.us.com/"/>
16    <link rel="preconnect" href="https://www.googletagmanager.com" crossorigin>
17
18    <meta name="google-site-verification" content="aSqt4wb953RqpH3F9vnkJFB8QuNkGA26Xrfpc_Ldj4s" />
vendor: 71 bytes, lines 18-20
18
19
20    <script async src="https://www.googletagmanager.com/gtag/js?id=
20G-0LSM1YJSPZ
vendor: 50 bytes, lines 20-21
20" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
21    
21<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>
21
22    <meta property="og:locale" content="id_ID">
23    <meta property="og:site_name" content="Plaza IT">
24    <meta property="og:type" content="product">
25    <meta property="og:title" content="SLOTVIP 🚀 Versi Apk Terbaru Game Slot Pelayanan VVIP 2026">
26    <meta property="og:description" content="SLOTVIP hadir dengan versi APK terbaru 2026 yang menawarkan akses cepat, pelayanan VVIP, sistem ringan, serta kemudahan slotvip login dan slotvip link alternatif terbaru untuk pengalaman bermain yang lebih nyaman.">
27    <meta property="og:url" content="https://slotvipbogor.link/">
28    <meta property="og:image" content="https://slotvipbogor.link/images/apk-slotvip.webp">
29    <meta property="og:image:alt" content="SLOTVIP 🚀 Versi Apk Terbaru Game Slot Pelayanan VVIP 2026">
30  <meta property="product:price:amount" content="5000">
31  <meta property="product:price:currency" content="IDR">
32  <meta property="product:availability" content="out of stock">
33  <meta name="twitter:card" content="summary_large_image">
34  <meta name="twitter:title" content="SLOTVIP 🚀 Versi Apk Terbaru Game Slot Pelayanan VVIP 2026">
35  <meta name="twitter:description" content="SLOTVIP hadir dengan versi APK terbaru 2026 yang menawarkan akses cepat, pelayanan VVIP, sistem ringan, serta kemudahan slotvip login dan slotvip link alternatif terbaru untuk pengalaman bermain yang lebih nyaman.">
36  <meta name="twitter:image" content="https://slotvipbogor.link/images/apk-slotvip.webp">
37
38<script type="application/ld+json">
39{
40  "@context": "https://schema.org",
41  "@type": "WebSite",
42  "@id": "/#website",
43  "url": "https://slotvipbogor.link/",
44  "name": "SLOTVIP",
45  "inLanguage": "id",
46  "potentialAction": {
47    "@type": "SearchAction",
48    "target": "https://slotvipbogor.link/",
49    "query-input": "required name=search_term_string"
50  }
51}
52</script>
52
53
54<script type="application/ld+json">
55{
56  "@context": "https://schema.org",
57  "@type": "Organization",
58  "@id": "/#organization",
59  "name": "SLOTVIP",
60  "url": "https://slotvipbogor.link/",
61  "logo": "https://slotvipbogor.link/images/slotvip-logo.png"
62}
63</script>
63
64
65<script type="application/ld+json">
66{
67  "@context": "https://schema.org",
68  "@type": "Product",
69  "name": "SLOTVIP 🚀 Versi Apk Terbaru Game Slot Pelayanan VVIP 2026",
70  "sku": "1S83N0880RID",
71  "image": [
72    "https://slotvipbogor.link/images/apk-slotvip.webp"
73  ],
74  "url": "https://slotvipbogor.link/",
75  "description": "SLOTVIP menyediakan informasi link akses SLOTVIP APK dan GAME Macau. Temukan informasi yang tersusun rapi, akses melalui perangkat desktop maupun mobile, serta layanan pelanggan yang tersedia selama 24 jam.",
76  "category": "SLOTVIP",
77  "brand": {
78    "@type": "Brand",
79    "name": "SLOTVIP"
80  },
81  "offers": {
82    "@type": "Offer",
83    "url": "https://slotvipbogor.link/",
84    "priceCurrency": "IDR",
85    "price": "5000",
86    "priceValidUntil": "2027-03-01",
87    "availability": "https://schema.org/OutOfStock",
88    "itemCondition": "https://schema.org/NewCondition",
89    "seller": {
90      "@type": "Organization",
91      "name": "SLOTVIP",
92      "url": "https://slotvipbogor.link/"
93    }
94  },
95  "aggregateRating": {
96    "@type": "AggregateRating",
97    "ratingValue": "5",
98    "reviewCount": "6",
99    "bestRating": "5",
100    "worstRating": "1"
101  },
102  "review": [
103    {
104      "@type": "Review",
105      "author": {
106        "@type": "Person",
107        "name": "Ardi"
108      },
109      "reviewBody": "Saya cukup terkesan dengan performa slotvip apk terbaru. Rasanya seperti membuka pintu yang engselnya baru diberi minyak, semuanya berjalan mulus tanpa bunyi yang mengganggu.",
110      "reviewRating": {
111        "@type": "Rating",
112        "ratingValue": "5",
113        "bestRating": "5",
114        "worstRating": "1"
115      }
116    },
117    {
118      "@type": "Review",
119      "author": {
120        "@type": "Person",
121        "name": "Dian"
122      },
123      "reviewBody": "Slotvip login sangat cepat. Bahkan ketika jaringan sedang tidak terlalu ramah, proses masuk tetap terasa ringan.",
124      "reviewRating": {
125        "@type": "Rating",
126        "ratingValue": "5",
127        "bestRating": "5",
128        "worstRating": "1"
129      }
130    },
131    {
132      "@type": "Review",
133      "author": {
134        "@type": "Person",
135        "name": "Faisal"
136      },
137      "reviewBody": "Saya beberapa kali menggunakan slotvip link alternatif dan hasilnya selalu stabil. Tidak perlu repot mencari akses ke sana kemari.",
138      "reviewRating": {
139        "@type": "Rating",
140        "ratingValue": "5",
141        "bestRating": "5",
142        "worstRating": "1"
143      }
144    },
145    {
146      "@type": "Review",
147      "author": {
148        "@type": "Person",
149        "name": "Raka"
150      },
151      "reviewBody": "Pelayanan yang diberikan terasa berbeda. Responsnya cepat dan tidak bertele-tele.",
152      "reviewRating": {
153        "@type": "Rating",
154        "ratingValue": "5",
155        "bestRating": "5",
156        "worstRating": "1"
157      }
158    },
159    {
160      "@type": "Review",
161      "author": {
162        "@type": "Person",
163        "name": "Mira"
164      },
165      "reviewBody": "Tampilan terbaru membuat pengalaman menggunakan slotvip menjadi jauh lebih nyaman dibanding sebelumnya.",
166      "reviewRating": {
167        "@type": "Rating",
168        "ratingValue": "5",
169        "bestRating": "5",
170        "worstRating": "1"
171      }
172    },
173    {
174      "@type": "Review",
175      "author": {
176        "@type": "Person",
177        "name": "Rian"
178      },
179      "reviewBody": "Slotvip alternatif sangat membantu ketika akses utama sedang sibuk. Semuanya tetap bisa digunakan tanpa hambatan berarti.",
180      "reviewRating": {
181        "@type": "Rating",
182        "ratingValue": "5",
183        "bestRating": "5",
184        "worstRating": "1"
185      }
186    }
187  ]
188}
189</script>
189
190
191<script type="application/ld+json">
192{
193  "@context": "https://schema.org",
194  "@type": "BreadcrumbList",
195  "itemListElement": [
196    {
197      "@type": "ListItem",
198      "position": 1,
199      "name": "SLOTVIP",
200      "item": "https://slotvipbogor.link/"
201    },
202    {
203      "@type": "ListItem",
204      "position": 2,
205      "name": "SLOT VIP",
206      "item": "https://slotvipbogor.link/"
207    },
208    {
209      "@type": "ListItem",
210      "position": 3,
211      "name": "SLOTVIP LINK",
212      "item": "https://slotvipbogor.link/"
213    },
214    {
215      "@type": "ListItem",
216      "position": 4,
217      "name": "SLOTVIP APK",
218      "item": "https://slotvipbogor.link/"
219    },
220    {
221      "@type": "ListItem",
222      "position": 5,
223      "name": "SLOTVIP 🚀 Versi Apk Terbaru Game Slot Pelayanan VVIP 2026",
224      "item": "https://slotvipbogor.link/"
225    }
226  ]
227}
228</script>
228
229
230
231<script type="application/ld+json">
232{
233  "@context": "https://schema.org",
234  "@type": "FAQPage",
235  "mainEntity": [
236    {
237      "@type": "Question",
238      "name": "Apa itu SLOTVIP?",
239      "acceptedAnswer": {
240        "@type": "Answer",
241        "text": "SLOTVIP merupakan platform hiburan digital yang menghadirkan berbagai pilihan permainan modern dengan dukungan sistem yang stabil dan layanan pelanggan responsif."
242      }
243    },
244    {
245      "@type": "Question",
246      "name": "Bagaimana cara mendapatkan slotvip apk terbaru?",
247      "acceptedAnswer": {
248        "@type": "Answer",
249        "text": "Pengguna dapat mengakses slotvip apk terbaru melalui halaman resmi yang selalu diperbarui untuk memastikan keamanan dan kompatibilitas perangkat."
250      }
251    },
252    {
253      "@type": "Question",
254      "name": "Apakah slotvip login bisa dilakukan melalui semua perangkat?",
255      "acceptedAnswer": {
256        "@type": "Answer",
257        "text": "Ya, slotvip login dapat dilakukan melalui smartphone Android, tablet, maupun perangkat desktop dengan tampilan yang menyesuaikan perangkat pengguna."
258      }
259    },
260    {
261      "@type": "Question",
262      "name": "Kenapa saya perlu menggunakan slotvip link alternatif?",
263      "acceptedAnswer": {
264        "@type": "Answer",
265        "text": "Slotvip link alternatif membantu pengguna tetap dapat mengakses layanan ketika terjadi pemeliharaan jaringan atau kendala akses pada jalur utama."
266      }
267    },
268    {
269      "@type": "Question",
270      "name": "Apakah slotvip apk ringan digunakan?",
271      "acceptedAnswer": {
272        "@type": "Answer",
273        "text": "Versi terbaru dirancang lebih ringan sehingga tetap nyaman digunakan meskipun pada perangkat dengan spesifikasi menengah."
274      }
275    },
276    {
277      "@type": "Question",
278      "name": "Bagaimana jika slotvip login mengalami kendala?",
279      "acceptedAnswer": {
280        "@type": "Answer",
281        "text": "Pengguna dapat menghubungi layanan bantuan yang tersedia selama 24 jam untuk mendapatkan panduan penyelesaian masalah secara cepat."
282      }
283    }
284  ]
285}
286</script>
286
287
288    <!-- User Session Data -->
289      <meta name="csrf-token" content="9ce6e4a17f7cc189893df9e47789b13e98829450d516a0cae5ca7b5f43e5dadc">
290    <meta name="user-logged-in" content="false">
291    <meta name="user-id" content="0">
292    
293    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
294
295    <link rel="shortcut icon" href="https://slotvipbogor.link/images/Favicon-Slotvip-Polos.ico"image/x-icon">
296    <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/style.css">
297    <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/bottom-nav.css">
298    <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/search-suggest.css">
299    <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/product-detail.css">
300    <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/product-grid.css">
301    <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/site-notice.css">
302          <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/benchmark.css">
303      <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/product-filters.css">
304    <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/mega-menu-tiles.css">
305    <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/product-compare.css">
306    <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/product-card-actions.css">
307    <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/modal.css">
308        
309          <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/reviews-points.css">
310              
311  </head>
312  <body>
313  <header class="topbar">
314    <div class="container topbar-inner">
315      <div class="topbar-left">
316        SLOTVIP 🚀 Versi Apk Terbaru Game Slot Pelayanan VVIP 2026
317      </div>
318      <div class="topbar-right">
319        <a href="https://slotvipbogor.link/">SLOTVIP</a>
320        <a href="https://slotvipbogor.link/">Slot Online</a>
321        <a href="https://slotvipbogor.link/">Daftar</a>
322        <a href="https://slotvipbogor.link/">Masuk</a>
323      </div>
324    </div>
325  </header>
326  <nav class="navbar">
327    <nav class="navbar-logo" style="width: 100%;">
328      <div class="container nav-inner" style="justify-items: center; justify-content: center;">
329          <a href="/" class="logo-mobile">
330            <img src="https://slotvipbogor.link/images/slotvip-logo.png" alt="SLOTVIP" height="100">
331          </a>
332      </div>
333  </nav>
334    <div class="container nav-inner">
335      <a href="/" class="logo">
336        <img src="https://slotvipbogor.link/images/slotvip-logo.png" alt="SLOTVIP" height="100">
337      </a>
338
339      
340      <form class="search" method="get" action="#">
341        <input type="hidden" name="page" value="produk">
342        
343        <!-- Search Icon (Desktop) -->
344        <button type="submit" class="search-icon-btn" id="searchBtn" aria-label="Cari">
345          <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
346            <circle cx="11" cy="11" r="8"/>
347            <path d="m21 21-4.35-4.35"/>
348          </svg>
349        </button>
350        
351        <input type="text" name="q" id="searchInput" placeholder="Cari SLOTVIP"
352              value="" autocomplete="off"> 
353        
354        <div class="search-suggest" id="searchSuggest" hidden></div>
355      </form>
356
357      <div class="nav-actions">
358        <!--<button class="icon-btn" id="notifBtn" title="Notifikasi">🔔</button>-->
359        <button class="icon-btn cart-indicator" id="cartBtn" title="Keranjang">
360          🛒 <span id="cartCount" class="badge" data-role="cart-badge" aria-live="polite">0</span>
361        </button>
362        
363        
364          <span id="compareCount" class="badge" data-role="compare-badge" aria-live="polite">0</span>
365        </button>
366        
367        <!-- Dynamic login/logout button -->
368              <button class="login-btn" id="loginBtn" aria-label="Masuk">
369          <span class="login-text">Masuk</span>
370          <span class="login-ico" aria-hidden="true">😊</span>
371        </button>
372            </div>
373    </div>
374
375    <div class="container" style="display: flex; align-items: center;">
376        
377
378        <div class="mega-cats-wrapper">
379          <div class="mega-cats container" id="megaCatsScroll" style="padding-left: 5px !important;">
380                        <a class="" href="https://slotvipbogor.link/">
381                SLOTVIP            </a>
382                        <a class="" href="https://slotvipbogor.link/">
383                SLOT VIP             </a>
384                        <a class="" href="https://slotvipbogor.link/">
385                SLOTVIP APK            </a>
386                        <a class="" href="https://slotvipbogor.link/">
387                GAME MACAU            </a>
388                        <a class="" href="https://slotvipbogor.link/">
389                GAME MACAU TERPERCAYA         </a>
390                        <a class="" href="https://slotvipbogor.link/">
391                SITUS GAME MACAU            </a>
392                        <a class="" href="https://slotvipbogor.link/">
393                SITUS Slot ONLINE            </a>
394                    </div>
395          <div class="mega-cats-fade" id="megaCatsFade"></div>
396        </div>
397    </div>
398  </nav>
399
400  <!-- Panel Mega Menu - Outside navbar for full-screen -->
401  <div class="mm2-panel" data-mm2="panel" role="dialog" aria-label="Kategori">
402    <div class="mm2-view is-active" data-mm2="top"></div>
403    <div class="mm2-view" data-mm2="detail"></div>
404  </div>
405
406  <!-- Backdrop - Outside navbar for full-screen -->
407  <div class="mm2-backdrop" data-mm2="backdrop"></div>
408
409  <!-- Mobile Bottom Navigation -->
410  <nav class="bottom-nav">
411    <div class="bottom-nav-inner">
412      <!-- Home -->
413      <a href="/" class="bottom-nav-item" id="bottomHomeBtn" data-page="home">
414        <div class="bottom-nav-item-icon">
415          <!-- Outlined icon (default) -->
416          <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
417            <path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>
418            <polyline points="9 22 9 12 15 12 15 22"/>
419          </svg>
420          <!-- Filled icon (active) -->
421          <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor">
422            <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"/>
423            <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"/>
424          </svg>
425        </div>
426        <span class="bottom-nav-item-label">Home</span>
427      </a>
428
429      <!-- Kategori -->
430      <button class="bottom-nav-item" id="bottomCategoryBtn" data-mm2="trigger" aria-label="Kategori">
431        <div class="bottom-nav-item-icon">
432          <!-- Outlined icon (default) -->
433          <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
434            <line x1="3" y1="12" x2="21" y2="12"/>
435            <line x1="3" y1="6" x2="21" y2="6"/>
436            <line x1="3" y1="18" x2="21" y2="18"/>
437          </svg>
438          <!-- Filled icon (active) -->
439          <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor">
440            <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"/>
441          </svg>
442        </div>
443        <span class="bottom-nav-item-label">Kategori</span>
444      </button>
445
446      <!-- Keranjang -->
447      <button class="bottom-nav-item" id="bottomCartBtn">
448        <div class="bottom-nav-item-icon">
449          <!-- Outlined icon (default) -->
450          <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
451            <circle cx="9" cy="21" r="1"/>
452            <circle cx="20" cy="21" r="1"/>
453            <path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"/>
454          </svg>
455          <!-- Filled icon (active) -->
456          <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor">
457            <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"/>
458          </svg>
459          <span class="bottom-nav-item-badge" id="bottomCartCount">0</span>
460        </div>
461        <span class="bottom-nav-item-label">Keranjang</span>
462      </button>
463
464      <!-- Compare -->
465      <button class="bottom-nav-item" id="bottomCompareBtn">
466        <div class="bottom-nav-item-icon">
467          <!-- Outlined icon (default) -->
468          <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
469            <polyline points="17 11 21 7 17 3"/>
470            <path d="M21 7H9"/>
471            <polyline points="7 21 3 17 7 13"/>
472            <path d="M15 17H3"/>
473          </svg>
474          <!-- Filled icon (active) -->
475          <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor">
476            <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"/>
477          </svg>
478          <span class="bottom-nav-item-badge" id="bottomCompareCount" style="display:none;">0</span>
479        </div>
480        <span class="bottom-nav-item-label">Compare</span>
481      </button>
482
483      <!-- Chat - Always show, check login in JavaScript -->
484      <button class="bottom-nav-item" id="bottomChatBtn" data-page="chat">
485        <div class="bottom-nav-item-icon">
486          <!-- Outlined icon (default) -->
487          <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" opacity="0.85">
488            <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
489          </svg>
490          <!-- Filled icon (active) -->
491          <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor">
492            <path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z"/>
493          </svg>
494          <span class="bottom-nav-item-badge" id="bottomChatCount" style="display:none;">0</span>
495        </div>
496        <span class="bottom-nav-item-label">Chat</span>
497      </button>
498
499      <!-- Akun -->
500          <button class="bottom-nav-item" id="bottomLoginBtn">
501        <div class="bottom-nav-item-icon">
502          <!-- Outlined icon (default) -->
503          <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
504            <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/>
505            <circle cx="12" cy="7" r="4"/>
506          </svg>
507          <!-- Filled icon (active) -->
508          <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor">
509            <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"/>
510          </svg>
511        </div>
512        <span class="bottom-nav-item-label">Login</span>
513      </button>
514          </svg>
515        </div>
516      </button>
517        </div>
518  </nav>
519  <!-- Mobile User Menu Bottom Sheet -->
520
521  
521<script nonce="se3iyzEHMc9FQEB4wSyd0w==">
522  (function(){
523    const btn = document.getElementById('megaMoreBtn');
524    const dd  = document.getElementById('megaMoreDropdown');
525    if(!btn || !dd) return;
526
527    function openDD(){
528      dd.hidden = false;
529      btn.setAttribute('aria-expanded','true');
530      document.addEventListener('click', outside, {capture:true});
531      document.addEventListener('keydown', esc);
532    }
533    function closeDD(){
534      if(dd.hidden) return;
535      dd.hidden = true;
536      btn.setAttribute('aria-expanded','false');
537      document.removeEventListener('click', outside, {capture:true});
538      document.removeEventListener('keydown', esc);
539    }
540    function toggle(){ dd.hidden ? openDD() : closeDD(); }
541    function outside(e){
542      if(!dd.contains(e.target) && e.target !== btn){
543        closeDD();
544      }
545    }
546    function esc(e){
547      if(e.key === 'Escape'){
548        closeDD();
549        btn.focus();
550      }
551    }
552    btn.addEventListener('click', toggle);
553  })();
554
555  // ========== HORIZONTAL SCROLL FADE INDICATOR ==========
556  (function(){
557    const megaCats = document.getElementById('megaCatsScroll');
558    const fade = document.getElementById('megaCatsFade');
559    if (!megaCats || !fade) return;
560
561    function updateFade() {
562      const scrollLeft = megaCats.scrollLeft;
563      const scrollWidth = megaCats.scrollWidth;
564      const clientWidth = megaCats.clientWidth;
565      const maxScroll = scrollWidth - clientWidth;
566      
567      // Hide fade when scrolled to end (within 10px tolerance)
568      if (maxScroll - scrollLeft <= 10) {
569        fade.style.opacity = '0';
570      } else {
571        fade.style.opacity = '1';
572      }
573    }
574
575    // Update on scroll
576    megaCats.addEventListener('scroll', updateFade, { passive: true });
577    
578    // Update on resize
579    window.addEventListener('resize', updateFade, { passive: true });
580    
581    // Initial check
582    setTimeout(updateFade, 100);
583  })();
584
585  document.addEventListener('DOMContentLoaded', function () {
586    var input = document.getElementById('searchInput');
587    if (!input) return;
588    input.addEventListener('keydown', function (e) {
589      if (e.key === 'Enter') {
590        e.preventDefault();
591        var form = input.form;
592        if (!form) return;
593        if (typeof form.requestSubmit === 'function') form.requestSubmit();
594        else form.submit();
595      }
596    });
597  });
598
599
600  (function(){
601    const cartBtn = document.getElementById('cartBtn');
602    if (cartBtn) {
603      cartBtn.addEventListener('click', function(e) {
604        e.preventDefault();
605        
606        const checkLogin = () => {
607          return window.isUserLoggedIn ? window.isUserLoggedIn() : false;
608        };
609        
610        if (checkLogin()) {
611          window.location.href = '/keranjang';
612        } else {
613          showCartLoginModal();
614        }
615      });
616    }
617
618    const loginBtn = document.getElementById('loginBtn');
619    if (loginBtn) {
620      loginBtn.addEventListener('click', function(e) {
621        e.preventDefault();
622        window.location.href = 'https://slotvipbogor.link/';
623      });
624    }
625
626    const userMenuBtn = document.getElementById('userMenuBtn');
627    const userDropdown = document.getElementById('userDropdown');
628    
629    if (userMenuBtn && userDropdown) {
630      function openDropdown() {
631        userDropdown.hidden = false;
632        userMenuBtn.setAttribute('aria-expanded', 'true');
633        document.addEventListener('click', closeOnOutside, { capture: true });
634        document.addEventListener('keydown', closeOnEscape);
635      }
636      
637      function closeDropdown() {
638        if (userDropdown.hidden) return;
639        userDropdown.hidden = true;
640        userMenuBtn.setAttribute('aria-expanded', 'false');
641        document.removeEventListener('click', closeOnOutside, { capture: true });
642        document.removeEventListener('keydown', closeOnEscape);
643      }
644      
645      function closeOnOutside(e) {
646        if (!userDropdown.contains(e.target) && e.target !== userMenuBtn) {
647          closeDropdown();
648        }
649      }
650      
651      function closeOnEscape(e) {
652        if (e.key === 'Escape') {
653          closeDropdown();
654          userMenuBtn.focus();
655        }
656      }
657      
658      userMenuBtn.addEventListener('click', function(e) {
659        e.preventDefault();
660        userDropdown.hidden ? openDropdown() : closeDropdown();
661      });
662      
663      // Close dropdown when clicking profile links
664      userDropdown.querySelectorAll('[data-close-dropdown]').forEach(link => {
665        link.addEventListener('click', function() {
666          closeDropdown();
667        });
668      });
669    }
670
671    // Bottom nav profile button - toggle mobile bottom sheet
672    const bottomProfileBtn = document.getElementById('bottomProfileBtn');
673    const mobileUserSheet = document.getElementById('mobileUserSheet');
674    const mobileUserSheetBackdrop = document.getElementById('mobileUserSheetBackdrop');
675    
676    if (bottomProfileBtn && mobileUserSheet) {
677      function openMobileSheet() {
678        mobileUserSheet.hidden = false;
679        document.body.style.overflow = 'hidden';
680        // Trigger animation
681        requestAnimationFrame(() => {
682          mobileUserSheet.classList.add('active');
683        });
684      }
685      
686      function closeMobileSheet() {
687        mobileUserSheet.classList.remove('active');
688        document.body.style.overflow = '';
689        setTimeout(() => {
690          mobileUserSheet.hidden = true;
691        }, 300);
692      }
693      
694      bottomProfileBtn.addEventListener('click', function(e) {
695        e.preventDefault();
696        openMobileSheet();
697      });
698      
699      if (mobileUserSheetBackdrop) {
700        mobileUserSheetBackdrop.addEventListener('click', closeMobileSheet);
701      }
702      
703      // Close on escape key
704      document.addEventListener('keydown', function(e) {
705        if (e.key === 'Escape' && !mobileUserSheet.hidden) {
706          closeMobileSheet();
707        }
708      });
709      
710      // Close sheet when clicking profile links
711      mobileUserSheet.querySelectorAll('[data-close-sheet]').forEach(link => {
712        link.addEventListener('click', function() {
713          closeMobileSheet();
714        });
715      });
716    }
717    
718    // Handle Google avatar error in bottom-nav (fallback to initials)
719    const bottomNavAvatar = document.querySelector('.bottom-nav-avatar-img');
720    if (bottomNavAvatar) {
721      bottomNavAvatar.addEventListener('error', function() {
722        const initials = this.getAttribute('data-fallback-initials') || 'U';
723        const initialsDiv = document.createElement('div');
724        initialsDiv.className = 'bottom-nav-avatar-initials';
725        initialsDiv.textContent = initials;
726        this.parentNode.replaceChild(initialsDiv, this);
727      });
728    }
729
730    // Mobile logout button
731    const mobileLogoutBtn = document.getElementById('mobileLogoutBtn');
732    if (mobileLogoutBtn) {
733      mobileLogoutBtn.addEventListener('click', async function(e) {
734        e.preventDefault();
735        
736        // Check push notification before logout
737        if (window.ChatNotification && typeof window.ChatNotification.confirmLogoutWithPushNotification === 'function') {
738          const confirmLogout = await window.ChatNotification.confirmLogoutWithPushNotification();
739          if (!confirmLogout) {
740            return; // User cancelled logout
741          }
742        }
743        
744        const getCsrfToken = () => document.querySelector('meta[name="csrf-token"]')?.getAttribute('content') || '';
745        
746        try {
747          const response = await fetch('/auth/logout', {
748            method: 'POST',
749            credentials: 'same-origin',
750            headers: {
751              'Content-Type': 'application/json',
752              'X-CSRF-Token': getCsrfToken()
753            },
754            body: JSON.stringify({
755              csrf_token: getCsrfToken()
756            })
757          });
758          
759          if (response.ok) {
760            if (window.guestCart && typeof window.guestCart.clear === 'function') {
761              window.guestCart.clear();
762            }
763            window.location.href = '/login?logged_out=1';
764          } else {
765            console.error('Logout failed');
766            window.location.href = '/logout';
767          }
768        } catch (error) {
769          console.error('Logout error:', error);
770          window.location.href = '/logout';
771        }
772      });
773    }
774
775    const logoutBtn = document.getElementById('logoutBtn');
776    if (logoutBtn) {
777      logoutBtn.addEventListener('click', async function(e) {
778        e.preventDefault();
779        
780        // Check push notification before logout
781        if (window.ChatNotification && typeof window.ChatNotification.confirmLogoutWithPushNotification === 'function') {
782          const confirmLogout = await window.ChatNotification.confirmLogoutWithPushNotification();
783          if (!confirmLogout) {
784            return; // User cancelled logout
785          }
786        }
787        
788        const getCsrfToken = () => document.querySelector('meta[name="csrf-token"]')?.getAttribute('content') || '';
789        
790        try {
791          const response = await fetch('/auth/logout', {
792            method: 'POST',
793            credentials: 'same-origin',
794            headers: {
795              'Content-Type': 'application/json',
796              'X-CSRF-Token': getCsrfToken()
797            },
798            body: JSON.stringify({
799              csrf_token: getCsrfToken()
800            })
801          });
802          
803          if (response.ok) {
804            if (window.guestCart && typeof window.guestCart.clear === 'function') {
805              window.guestCart.clear();
806            }
807            
808            window.location.href = '/login?logged_out=1';
809          } else {
810            console.error('Logout failed');
811            window.location.href = '/logout';
812          }
813        } catch (error) {
814          console.error('Logout error:', error);
815          window.location.href = '/logout';
816        }
817      });
818    }
819
820    const wishlistBtn = document.getElementById('wishlistBtn');
821    const notifBtn = document.getElementById('notifBtn');
822    
823    if (wishlistBtn) {
824      wishlistBtn.addEventListener('click', function(e) {
825        e.preventDefault();
826        alert('Fitur wishlist akan segera tersedia!');
827      });
828    }
829    
830    if (notifBtn) {
831      notifBtn.addEventListener('click', function(e) {
832        e.preventDefault();
833        alert('Fitur notifikasi akan segera tersedia!');
834      });
835    }
836  })();
837
838  // ========== MOBILE BOTTOM NAVIGATION ==========
839  (function initBottomNav() {
840    // Sync cart badge with bottom nav
841    function syncBottomCartBadge() {
842      const mainBadge = document.getElementById('cartCount');
843      const bottomBadge = document.getElementById('bottomCartCount');
844      if (mainBadge && bottomBadge) {
845        const count = mainBadge.textContent;
846        bottomBadge.textContent = count;
847        bottomBadge.style.display = parseInt(count) > 0 ? 'flex' : 'none';
848      }
849    }
850
851    // Sync compare badge with bottom nav
852    function syncBottomCompareBadge() {
853      const mainBadge = document.getElementById('compareCount');
854      const bottomBadge = document.getElementById('bottomCompareCount');
855      if (mainBadge && bottomBadge) {
856        const count = mainBadge.textContent;
857        bottomBadge.textContent = count;
858        bottomBadge.style.display = parseInt(count) > 0 ? 'flex' : 'none';
859      }
860    }
861
862    // Initial sync
863    syncBottomCartBadge();
864    syncBottomCompareBadge();
865
866    // Observe badge changes
867    const observer = new MutationObserver(function() {
868      syncBottomCartBadge();
869      syncBottomCompareBadge();
870    });
871
872    const cartBadge = document.getElementById('cartCount');
873    const compareBadge = document.getElementById('compareCount');
874    
875    if (cartBadge) observer.observe(cartBadge, { childList: true, characterData: true, subtree: true });
876    if (compareBadge) observer.observe(compareBadge, { childList: true, characterData: true, subtree: true });
877
878    // Bottom Cart Button
879    const bottomCartBtn = document.getElementById('bottomCartBtn');
880    if (bottomCartBtn) {
881      bottomCartBtn.addEventListener('click', function(e) {
882        e.preventDefault();
883        
884        const checkLogin = () => {
885          return window.isUserLoggedIn ? window.isUserLoggedIn() : false;
886        };
887        
888        if (checkLogin()) {
889          window.location.href = '/keranjang';
890        } else {
891          showCartLoginModal();
892        }
893      });
894    }
895
896    // Bottom Compare Button
897    const bottomCompareBtn = document.getElementById('bottomCompareBtn');
898    if (bottomCompareBtn) {
899      bottomCompareBtn.addEventListener('click', function(e) {
900        e.preventDefault();
901        
902        // Close chat widget if open
903        if (window.plazaChat && window.plazaChat.isWidgetOpen) {
904          window.plazaChat.closeWidget();
905        }
906        
907        const mainCompareBtn = document.getElementById('compareBtn');
908        if (mainCompareBtn) {
909          mainCompareBtn.click();
910        }
911      });
912    }
913
914    // Bottom Category Button - triggers mega menu
915    const bottomCategoryBtn = document.getElementById('bottomCategoryBtn');
916    if (bottomCategoryBtn) {
917      bottomCategoryBtn.addEventListener('click', function(e) {
918        e.preventDefault();
919        // Trigger desktop mega menu
920        const desktopTrigger = document.querySelector('.mm2-trigger:not(#bottomCategoryBtn)');
921        if (desktopTrigger) {
922          desktopTrigger.click();
923        }
924      });
925    }
926
927    // Bottom Login Button
928    const bottomLoginBtn = document.getElementById('bottomLoginBtn');
929    if (bottomLoginBtn) {
930      bottomLoginBtn.addEventListener('click', function(e) {
931        e.preventDefault();
932        window.location.href = '/login';
933      });
934    }
935
936    // Bottom Chat Button
937    const bottomChatBtn = document.getElementById('bottomChatBtn');
938    if (bottomChatBtn) {
939      bottomChatBtn.addEventListener('click', function(e) {
940        e.preventDefault();
941        
942        // Trigger chat widget (try multiple times if needed)
943        const triggerChat = () => {
944          const chatToggle = document.getElementById('chat-toggle-btn');
945          if (chatToggle) {
946            chatToggle.click();
947            return true;
948          }
949          return false;
950        };
951        
952        // Immediate attempt
953        if (!triggerChat()) {
954          // Retry after 100ms if not found
955          setTimeout(() => {
956            if (!triggerChat()) {
957              // Last resort: manually show popup
958              const popup = document.getElementById('chat-popup');
959              if (popup) {
960                popup.style.display = 'block';
961              }
962            }
963          }, 100);
964        }
965      });
966    }
967
968    // Sync chat unread badge
969    function syncBottomChatBadge() {
970      const chatBadge = document.getElementById('chat-unread-badge');
971      const bottomChatBadge = document.getElementById('bottomChatCount');
972      if (chatBadge && bottomChatBadge) {
973        const count = chatBadge.textContent;
974        bottomChatBadge.textContent = count;
975        bottomChatBadge.style.display = chatBadge.style.display;
976      }
977    }
978
979    // Observe chat badge changes
980    const chatBadge = document.getElementById('chat-unread-badge');
981    if (chatBadge) {
982      observer.observe(chatBadge, { attributes: true, childList: true, characterData: true, subtree: true });
983      syncBottomChatBadge();
984    }
985
986    // Active state management based on current page
987    function updateActiveState() {
988      const currentPath = window.location.pathname;
989      const bottomNavItems = document.querySelectorAll('.bottom-nav-item');
990      
991      bottomNavItems.forEach(item => {
992        item.classList.remove('active');
993        
994        const itemId = item.id;
995        const page = item.getAttribute('data-page');
996        const href = item.getAttribute('href');
997        
998        // Check by ID for specific pages
999        if (itemId === 'bottomHomeBtn' && currentPath === '/') {
1000          item.classList.add('active');
1001        } else if (itemId === 'bottomCartBtn' && (currentPath === '/keranjang' || currentPath === '/cart')) {
1002          item.classList.add('active');
1003        } else if (itemId === 'bottomProfileBtn' && currentPath.startsWith('/profile')) {
1004          item.classList.add('active');
1005        } else if (itemId === 'bottomCategoryBtn' && currentPath.startsWith('/kategori')) {
1006          item.classList.add('active');
1007        } else if (itemId === 'bottomCompareBtn' && currentPath === '/compare') {
1008          item.classList.add('active');
1009        } else if (itemId === 'bottomChatBtn' && currentPath === '/chat') {
1010          item.classList.add('active');
1011        }
1012        // Fallback: check by data-page attribute
1013        else if (page === 'home' && currentPath === '/') {
1014          item.classList.add('active');
1015        } else if (page === 'profile' && currentPath.startsWith('/profile')) {
1016          item.classList.add('active');
1017        }
1018        // Fallback: check by href
1019        else if (href && currentPath === href) {
1020          item.classList.add('active');
1021        }
1022      });
1023    }
1024
1025    // Update active state on load
1026    updateActiveState();
1027
1028    // Bottom nav always visible - auto-hide disabled for better UX
1029    // const bottomNav = document.querySelector('.bottom-nav');
1030    // if (bottomNav && window.innerWidth <= 640) {
1031    //   // Auto-hide feature disabled
1032    // }
1033  })();
1034  // Cart Login Modal Handler (Global scope)
1035  function showCartLoginModal() {
1036    const modal = document.getElementById('cartLoginModal');
1037    if (!modal) return;
1038    
1039    modal.classList.add('show');
1040    
1041    const confirmBtn = document.getElementById('cartLoginConfirm');
1042    const registerBtn = document.getElementById('cartRegisterBtn');
1043    const cancelBtn = document.getElementById('cartLoginCancel');
1044    
1045    const handleLogin = () => {
1046      window.location.href = '/login?return=' + encodeURIComponent('/keranjang');
1047    };
1048    
1049    const handleRegister = () => {
1050      window.location.href = '/register?return=' + encodeURIComponent('/keranjang');
1051    };
1052    
1053    const handleCancel = () => {
1054      modal.classList.remove('show');
1055      confirmBtn.removeEventListener('click', handleLogin);
1056      registerBtn.removeEventListener('click', handleRegister);
1057      cancelBtn.removeEventListener('click', handleCancel);
1058    };
1059    
1060    confirmBtn.removeEventListener('click', handleLogin);
1061    registerBtn.removeEventListener('click', handleRegister);
1062    cancelBtn.removeEventListener('click', handleCancel);
1063    
1064    confirmBtn.addEventListener('click', handleLogin);
1065    registerBtn.addEventListener('click', handleRegister);
1066    cancelBtn.addEventListener('click', handleCancel);
1067    
1068    modal.addEventListener('click', (e) => {
1069      if (e.target === modal) {
1070        handleCancel();
1071      }
1072    });
1073  }
1074  </script>
1074
1075  
1075<script src="https://plazaitdotid.pages.dev/assets/js/cart-badge.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
1075
1076
1077  <!-- Product Compare Sidebar -->
1078  <div class="compare-sidebar" id="compareSidebar">
1079    <div class="compare-header">
1080      <h4 class="compare-title">
1081        <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
1082          <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"/>
1083        </svg>
1084        Bandingkan Produk
1085        <span class="compare-count" id="compareCountSidebar">(0)</span>
1086      </h4>
1087      <button class="compare-close" id="compareClose" aria-label="Tutup">
1088        <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor">
1089          <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"/>
1090        </svg>
1091      </button>
1092    </div>
1093    
1094    <div class="compare-content">
1095      <div class="compare-empty" id="compareEmpty">
1096        <div class="empty-icon">
1097          <svg width="48" height="48" viewBox="0 0 24 24" fill="currentColor" opacity="0.3">
1098            <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"/>
1099          </svg>
1100        </div>
1101        <h5>Belum ada produk dipilih</h5>
1102        <p>Pilih produk yang ingin dibandingkan dengan klik tombol "Bandingkan Produk" di halaman produk.</p>
1103      </div>
1104      
1105      <div class="compare-list" id="compareList">
1106        <!-- Products will be populated here -->
1107      </div>
1108    </div>
1109    
1110    <div class="compare-actions" id="compareActions">
1111      <button class="btn btn-outline-danger btn-sm" id="compareClearAll">
1112        <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
1113          <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"/>
1114        </svg>
1115        Hapus Semua
1116      </button>
1117      <button class="btn btn-primary btn-sm" id="compareAnalyze" disabled>
1118        <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
1119          <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"/>
1120        </svg>
1121        Analisis AI
1122      </button>
1123    </div>
1124    
1125    <!-- AI Disclaimer in Sidebar -->
1126    <div class="compare-disclaimer">
1127      <div class="ai-disclaimer">
1128        <div class="disclaimer-text">
1129          <strong>💡 Catatan:</strong> Dengan berbagai pilihan yang tersedia, pengguna memiliki kebebasan untuk menentukan jenis permainan yang paling sesuai dengan preferensi masing-masing.
1130        </div>
1131      </div>
1132    </div>
1133  </div><link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/pd-lightbox.css">
1134  <style>.paylater-promo{display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,#ffffff 0,#ffffff 100%);border:1px solid #000000;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:#000000;font-weight:600}.paylater-text small{color:#000000;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:#ffd700;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,#f80000 0,#f80000 100%);border:none;border-radius:8px;padding:3px;
1134cursor: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:#f80000;cursor:pointer;transition:all .2s ease;white-space:nowrap}.pdv-min-copy:hover:not(:disabled),.pdv-min-more:hover{background:#f80000;color:#fff;border-color:#f80000}.pdv-min-copy:disabled{opacity:.4;cursor:not-allowed}.pdv-min-copy.copied{background:#c52222;color:#fff;border-color:#c52222}.pdv-min-more{margin-left:auto}.modal-close{position:absolute;top:20px;right:20px;background:none;border:none;cursor:pointer;color:#64748b;padding:4px;transition:color .2s ease}.modal-close:hover{color:#1e293b}.modal-body{margin-bottom:8px}.voucher-modal-content{text-align:center}.voucher-modal-badge{display:inline-flex;flex-direction:row;align-items:center;gap:6px;background:linear-gradient(135deg,#f80000 0,#f80000 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:#f80000;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:#f80000;flex-shrink:0;margin-top:2px}.vmd-item strong{color:#1e293b}.modal-actions{padding:20px}.modal-btn-primary{background:linear-gradient(135deg,#f80000 0,#f80000 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>
1135  <style nonce="se3iyzEHMc9FQEB4wSyd0w==">
1136  .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;
1136display: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}
1137
1138  .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)}}
1139
1140  .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}
1141
1142  .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:#ffd700;margin:0}
1143
1144  .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)}
1145
1146  .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,#ffd700 0%,#3c3300 100%);color:#fff}.pd-share-icon-facebook{background:linear-gradient(135deg,#f80000 0%,#f80000 100%);color:#fff}.pd-share-icon-twitter{background:linear-gradient(135deg,#f80000 0%,#0d8bd9 100%);color:#fff}.pd-share-icon-telegram{background:linear-gradient(135deg,#0088cc 0%,#0077b3 100%);color:#fff}.pd-share-icon-email{background:linear-gradient(135deg,#EA4335 0%,#c5331f 100%);color:#fff}.pd-share-icon-copy{background:linear-gradient(135deg,#f1db63 0%,#e5d146 100%);color:#fff}.pd-share-icon-pdf{background:linear-gradient(135deg,#ef4444 0%,#dc2626 100%);color:#fff}.pd-share-name{font-size:12px;font-weight:600;color:#475569;text-align:center}
1147
1148  .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:#ffd700;box-shadow:0 0 0 3px rgba(14,165,233,.1)}.pd-share-copy-btn{padding:12px 20px;border:0;border-radius:10px;background:linear-gradient(135deg,#e90e0e 0%,#f80000 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,#f80000 0%,#f80000 100%);transform:translateY(-1px);box-shadow:0 4px 12px rgba(14,165,233,.3)}
1148.pd-share-copy-btn:active{transform:translateY(0)}.pd-share-copy-btn svg{width:16px;height:16px}.pd-share-copy-btn.copied{background:linear-gradient(135deg,#c52222 0%,#a31616 100%);pointer-events:none}
1149
1150  @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}}
1151
1152  .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}
1153
1154  @media(max-width:640px){.pd-share-btn{display:none!important}}
1155
1156  .stock-badge.in{background:#e6f9ec;color:#801515;border-radius:999px;padding:4px 10px;font-weight:700}.stock-badge.out{background:#fee2e2;color:#b91c1c;border-radius:999px;padding:4px 10px;font-weight:700}
1157
1158  .stock-info-btn{--c:#e90e0e;--b:#bae6fd;--bg:#f0f9ff;--bg-h:#e0f2fe;--b-h:#e90e0e;margin-left:0;display:inline-flex;align-items:center;justify-content:center;gap:0.5rem;padding:4px 10px;border-radius:999px;border:1.5px solid var(--b);background:var(--bg);color:var(--c);cursor:pointer;font-size:12px;font-weight:600;transition:all .2s ease;-webkit-tap-highlight-color:transparent}.stock-info-btn:hover{background:var(--bg-h);border-color:var(--b-h);color:#f80000;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}
1159
1160  .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}
1161
1162  .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}
1163
1164
1165  .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}
1166
1167  .sp-wa{
1168    grid-column:3; justify-self:end;
1169    width:32px; height:32px; min-width:32px; min-height:32px;
1170    box-sizing:border-box;
1171    padding:0; line-height:0; text-decoration:none; outline:0;
1172    display:inline-flex; align-items:center; justify-content:center;
1173    border-radius:999px; border:1px solid rgba(211, 37, 37, 0.6);  /* 1px untuk hasil “crisp” */
1174    background:rgba(37,211,102,.08); color:#d32525;
1175    transition:background-color .15s ease, border-color .15s ease, transform .05s ease;
1176    -webkit-tap-highlight-color:transparent;
1177  }
1178  .sp-wa:hover{background:rgba(37,211,102,.16);border-color:rgba(37,211,102,.75)}
1179  .sp-wa:active{transform:translateY(.5px) scale(.98)}
1180
1181  .sp-wa svg{width:18px;height:18px;display:block;vertical-align:middle}
1182  .stock-popover a{text-decoration:none}
1183
1184  #deskripsi img{max-width:200px!important;height:unset!important}@media(max-width:640px){.stock-popover{position:fixed;left:0;right:0;bottom:max(12px,env(safe-area-inset-bottom,12px));margin:0 10px;padding:14px 12px 10px;border-radius:16px}.stock-popover::before{display:none}.stock-info-btn{padding:4px 8px;gap:4px;border:0;background:transparent}.stock-info-btn:hover{background:transparent;box-shadow:none;transform:none}.stock-info-btn .btn-text{display:none}.stock-info-btn svg{width:16px;height:16px}.sp-item{grid-template-columns:1fr auto 36px}.sp-wa{width:36px;height:36px;min-width:36px;min-height:36px}.sp-wa svg{width:19px;height:19px}}
1185
1186  .stock-dot{position:absolute;bottom:8px;right:8px;width:8px;height:8px;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,0.4);z-index:2;cursor:help}.stock-dot.ready{background:#10b981}.stock-dot.low{background:#f59e0b}.stock-dot.out{background:#ef4444}.stock-dot:hover{transform:scale(1.2);transition:transform 0.2s ease}@media(max-width:640px){.stock-dot{width:7px;height:7px;bottom:6px;right:6px}}
1187
1188  .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}}
1189
1190  .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}
1191  .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)}}
1192  .pwp-deals-grid{display:flex;flex-direction:column;gap:6px}.pwp-deal-card{background:#fff;border-radius:6px;overflow:hidden;border:1px solid #fbbf24;display:flex;align-items:center;padding:8px;gap:10px}.pwp-deal-card:hover{background:#fef3c7}.pwp-deal-thumb{flex-shrink:0;width:50px;height:50px;background:#f8fafc;overflow:hidden;border-radius:4px}.pwp-deal-thumb img{width:100%;height:100%;object-fit:cover}.pwp-deal-badge{background:#dc2626;color:#fff;padding:2px 5px;border-radius:3px;font-size:9px;font-weight:700;margin-left:auto}.pwp-deal-info{flex:1;display:flex;flex-direction:column;gap:4px}.pwp-deal-name{font-size:12px;font-weight:600;color:#0f172a;margin:0;line-height:1.2}.pwp-deal-prices{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.pwp-deal-price{font-size:14px;font-weight:800;color:#dc2626;white-space:nowrap}.pwp-deal-original{font-size:11px;color:#64748b;text-decoration:line-through;white-space:nowrap}.pwp-cart-note{margin-top:8px;padding:6px 10px;background:#e0f2fe;border-left:2px solid#e90e0e;font-size:11px;color:#0c4a6e;border-radius:4px}
1193  @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}}
1194
1195  .preorder-badge{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;background:linear-gradient(135deg,#8b5cf6 0%,#7c3aed 100%);color:#fff;border-radius:8px;font-size:13px;font-weight:700;border:0;box-shadow:0 2px 8px rgba(139,92,246,.25)}.preorder-badge svg{width:16px;height:16px;flex-shrink:0}.preorder-info{margin:12px 0;padding:14px;background:linear-gradient(135deg,#f5f3ff 0%,#ede9fe 100%);border:1.5px solid #c4b5fd;border-radius:12px}.preorder-info-header{display:flex;align-items:center;gap:8px;margin-bottom:10px}.preorder-info-icon{width:20px;height:20px;color:#7c3aed;flex-shrink:0}.preorder-info-title{font-size:14px;font-weight:700;color:#5b21b6;margin:0}.preorder-info-items{display:flex;flex-direction:column;gap:8px}.preorder-info-row{display:flex;align-items:center;justify-content:space-between;font-size:13px}.preorder-info-label{color:#6b21a8;font-weight:600}.preorder-info-value{color:#5b21b6;font-weight:700}.preorder-info-value.highlight{color:#dc2626;font-size:14px}.preorder-info-note{margin-top:10px;padding:8px 10px;background:#fef3c7;border-left:2px solid #f59e0b;font-size:12px;color:#78350f;border-radius:6px;line-height:1.4}@media(max-width:640px){.preorder-badge{font-size:12px;padding:5px 10px}.preorder-info{margin:10px 0;padding:12px}.preorder-info-title{font-size:13px}.preorder-info-row{font-size:12px}.preorder-info-note{font-size:11px;padding:6px 8px}}
1196  </style>
1197
1198  <div class="pd-sticky-header" id="pd-sticky-header"><div class="pd-sticky-header-container"><div class="pd-sticky-thumb"><img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="SLOTVIP" id="pd-sticky-thumb-img"></div><div class="pd-sticky-info"><h2 class="pd-sticky-title" id="pd-sticky-title">SLOTVIP 🚀 Versi Apk Terbaru Game Slot Pelayanan VVIP 2026</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">
1198<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>
1199
1200  <main class="product-single product-single--v3"><nav class="pd-breadcrumb" aria-label="breadcrumb"><a href="https://slotvipbogor.link/">SLOTVIP</a><span>/</span><a href="https://slotvipbogor.link/">SLOT VIP</a><span>/</span><a href="https://slotvipbogor.link/">SLOTVIP APK</a><span>/</span><a href="https://slotvipbogor.link/">GAME MACAU</a><span>/</span><a href="https://slotvipbogor.link/">SITUS Slot ONLINE </a><span>/</span><span class="current">SLOTVIP 🚀 Versi Apk Terbaru Game Slot Pelayanan VVIP 2026
1201
1202  </span></nav>
1203
1204  <div class="pd-top-layout"><section class="pd-media-card"><figure class="pd-main-image" id="pd-main-figure"><img id="pd-main-img" src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="SLOTVIP" data-slug="" loading="eager">
1205  </figure>
1206
1207  <div class="pd-mobile-slider-wrapper">
1208  <div class="pd-mobile-slider" id="pd-mobile-slider" aria-label="Galeri gambar (geser)"><div class="pd-mslide"><img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="SLOTVIP" loading="eager"></div><div class="pd-mslide"><img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="SLOTVIP" loading="lazy"></div><div class="pd-mslide"><img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="SLOTVIP" loading="lazy"></div><div class="pd-mslide"><img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="SLOTVIP" loading="lazy"></div><div class="pd-mslide"><img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="SLOTVIP" loading="lazy"></div><div class="pd-mslide"><img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="SLOTVIP" loading="lazy"></div></div><div class="pd-gallery-counter" id="pd-gallery-counter">1/6</div></div>
1209  <div class="pd-thumb-gallery" id="pd-thumb-gallery" aria-label="Galeri gambar produk"><button type="button" class="pd-thumb-btn active" data-full="https://slotvipbogor.link/images/apk-slotvip.webp" data-alt="SLOTVIP" data-slug="" aria-label="Gambar 1"><img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="SLOTVIP" loading="lazy"></button><button type="button" class="pd-thumb-btn " data-full="https://slotvipbogor.link/images/apk-slotvip.webp" data-alt="SLOTVIP" data-slug="https://slotvipbogor.link/images/apk-slotvip.webp" aria-label="Gambar 2"><img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="SLOTVIP" loading="lazy"></button><button type="button" class="pd-thumb-btn " data-full="https://slotvipbogor.link/images/apk-slotvip.webp" data-alt="SLOTVIP" data-slug="lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-223.webp" aria-label="Gambar 3"><img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="SLOTVIP" loading="lazy"></button><button type="button" class="pd-thumb-btn " data-full="https://slotvipbogor.link/images/apk-slotvip.webp" data-alt
1209="SLOTVIP" data-slug="lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-776.webp" aria-label="Gambar 4"><img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="SLOTVIP" loading="lazy"></button><button type="button" class="pd-thumb-btn " data-full="https://slotvipbogor.link/images/apk-slotvip.webp" data-alt="SLOTVIP" data-slug="lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-634.webp" aria-label="Gambar 5"><img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="SLOTVIP" loading="lazy"></button><button type="button" class="pd-thumb-btn " data-full="https://slotvipbogor.link/images/apk-slotvip.webp" data-alt="SLOTVIP" data-slug="lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-892.webp" aria-label="Gambar 6"><img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="SLOTVIP" 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">
1210          <h1 class="pd-title" id="pd-title">SLOTVIP 🚀 Versi Apk Terbaru Game Slot Pelayanan VVIP 2026</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>
1211  <div id="pd-price-anchor">
1212  </div>
1213  <div class="pd-price-qr-container">
1214          <div class="pd-price-block" id="pd-price-block">
1215                  <div class="pd-price-row">
1216                          <span class="pd-price-current" id="pd-price-current" >Rp 10.000</span>
1217                          <span class="pd-price-original" id="pd-price-original">Rp 50.000</span>
1218                          <span class="pd-discount-badge" id="pd-discount-badge">-90%</span></div>
1219                          <div class="pd-meta-row">
1220                                  <span class="sold-inline" id="pd-sold-inline" data-role="sold-chip">Terjual Terjual 2K</span>
1221                                  <span class="pwp-trigger-badge" id="pwp-trigger-badge" hidden>
1222                                          <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor">
1223                                                  <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>
1224                                                  <div class="pd-meta-inline"><span class="stock-badge out" id="pd-stock-badge">SLOTVIP</span>
1225                                                          <span class="sku">SKU: <span id="pd-sku">1S83N0880RID</span></span></div>
1226  <div class="paylater-promo paylater-promo-sm paylater-mobile-only">
1227      <span class="paylater-icon">💳</span>
1228      <span class="paylater-text">
1229          <strong>SLOTVIP</strong>
1230          <small>SLOTVIP Slot</small>
1231      </span>
1232  </div>
1233
1234  <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">
1235  <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/6281355775564?text=Halo%2C%20saya%20ingin%20tanya%20stok%20di%20Asia%20Mega%20Mas%20untuk%20produk%20https%3A%2F%2Fplazait.co.id%2Fproduct%2Flenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-black" target="_blank" rel="noopener" aria-label="WhatsApp Asia Mega Mas"><svg class="ico-wa" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path fill="currentColor" d="M17.472 14.382c-.297-.149-1.758-.867-2.029-.967-.273-.099-.471-.148-.669.149-.198.297-.767.966-.94 1.164-.173.198-.347.223-.644.074-.297-.149-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.297-.347.446-.52.149-.173.198-.297.298-.495.099-.198.05-.372-.025-.521-.075-.149-.669-1.612-.916-2.206-.242-.579-.487-.5-.669-.51l-.57-.01c-.198 0-.52.074-.792.372s-1.04 1.016-1.04 2.479 1.065 2.876 1.213 3.074c.149.198 2.095 3.2 5.076 4.487.709.306 1.262.489 1.694.626.712.226 1.36.194 1.872.118.571-.085 1.758-.718 2.006-1.411.248-.694.248-1.29.173-1.411-.074-.123-.272-.198-.57-.347m-5.421 7.403h-.002a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.263c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.887 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.158 11.892c0 2.096.547 4.142 1.588 5.945L0 24l6.305-1.654a11.86 11.86 0 005.67 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.485-8.413"/></svg></a></li>
1236                  
1237                      <li class="sp-item">
1238                        <div class="sp-left">
1239                          <span class="sp-dot" style="--dot:#d33434;"></span>
1240                          <span class="sp-label">Medan Fair</span>
1241                        </div>
1242                        <span class="sp-qty" id="sp-qty-mdf">0</span>
1243                        <a class="sp-wa"
1244                          href="https://wa.me/6281355775564?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"
1245                          target="_blank" rel="noopener" aria-label="WhatsApp Medan Fair">
1246                          <svg class="ico-wa" viewBox="0 0 24 24" aria-hidden="true" focusable="false">
1247                              <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"/>
1248                            </svg>
1249                        </a>
1250                      </li>
1251                  
1252                      <li class="sp-item">
1253                        <div class="sp-left">
1254                          <span class="sp-dot" style="--dot:#f59e0b;"></span>
1255                          <span class="sp-label">Banda Aceh</span>
1256                        </div>
1257                        <span class="sp-qty" id="sp-qty-bda">0</span>
1258                        <a class="sp-wa"
1259                          href="https://wa.me/6281355775564?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"
1260                          target="_blank" rel="noopener" aria-label="WhatsApp Banda Aceh">
1261                          <svg class="ico-wa" viewBox="0 0 24 24" aria-hidden="true" focusable="false">
1262                              <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"/>
1263                            </svg>
1264                        </a>
1265                      </li>
1266                    </ul>
1267                  </div>
1268
1269                              </div>
1270              <div class="pd-qr-print" style="display:none;"><div class="pd-qr-label">Scan untuk lihat produk:</div><img src="https://api.qrserver.com/v1/create-qr-code/?size=120x120&data=https%3A%2F%2Fplazait.co.id%2Fproduct%2Flenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-black" alt="QR Code" class="pd-qr-image"></div>
1271              </div>
1272                                      <div id="pd-variants-anchor"></div>
1273
1274                          
1275
1276              <div class="pd-compare-section">
1277                  <button type="button" class="pd-compare-btn" id="pd-compare-btn" data-product-id="325">
1278                      <svg class="compare-icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor">
1279                          <path d="M21,9L17,5V8H10V10H17V13M7,11L3,15L7,19V16H14V14H7V11Z"/>
1280                      </svg>
1281                      <span class="compare-text">Bandingkan Produk</span>
1282                      <span class="compare-remove" hidden>
1283                          <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor">
1284                              <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"/>
1285                          </svg>
1286                          Hapus dari Perbandingan
1287                      </span>
1288                  </button>
1289                  <div class="pd-compare-info">
1290                      <small class="compare-note" id="compare-note">Bandingkan hingga 5 produk dengan bantuan AI</small>
1291                  </div>
1292              </div>
1293              
1294              <div class="pd-short-desc"><p><strong>Informasi SLOTVIP :</strong></p><ul><li>Minimal Deposit: Rp.10.000,-</li><li>Minimal Withdraw: Rp 50.000,-</li><li>Jenis Permainan: Live Casino, Slot, Slot Online</li><li>Metode Pembayaran: Bank, QRIS, E-Wallet, USDT</li><li>Mata Uang: IDR (Indonesian Rupiah)</li><li>Jam Operasional: 24 Jam Nonstop</li><li>Total Rating: 555.666.777</li><li>
1294Rating: ⭐⭐⭐⭐⭐</li><li>Daftar Sekarang: <a href="https://slotvipbogor.link/">Klik Disini</a></li></ul></div>
1295  <div id="golden-slot-standalone-v3">
1296                          
1297              <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>
1298          </section>
1299
1300          <aside class="pd-sidebar">
1301              <div class="pd-side-card pd-buy-card">
1302                  <form class="pd-buy-form" id="pd-buy-form" data-pid="325">
1303                      <input type="hidden" name="variant_id" id="pd-variant-id" value="0">
1304                      <div>
1305                          <label for="qty" class="qty-label">Qty</label>
1306                          <input type="number" id="qty" name="qty" value="0" min="1"
1307                                max="0"
1308                                disabled>
1309                      </div>
1310                      <div class="pd-actions">
1311                          <button type="submit" class="btn-add-cart" id="btn-add-cart" disabled>+ Keranjang</button>
1312                          <button type="button" class="btn-buy" id="btn-buy" data-id="278426" disabled >Beli</button>
1313                          <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>
1314                                              </div>
1315                  </form>
1316                  <div class="paylater-promo paylater-promo-md paylater-desktop-only">
1317      <span class="paylater-icon">💳</span>
1318      <span class="paylater-text">
1319          <strong>Authorized SLOTVIP</strong>
1320          <small>SLOTVIP APK</small>
1321      </span>
1322  </div>            </div>
1323
1324                          
1325                          <div class="pd-side-card qoala-banner-card">
1326                  <div class="qoala-banner">
1327                      <div class="qoala-banner-content">
1328                          <div class="qoala-icon">
1329                              <center><img src="https://gif-85c.pages.dev/logo_3d_flip.gif" alt="SLOTVIP" class="qoala-shield-img"></center>
1330                          </div>
1331                          <div class="qoala-text">
1332                              <div class="qoala-title">SLOTVIP</div>
1333                              <div class="qoala-subtitle">Verified</div>
1334                          </div>
1335                      </div>
1336                      <a href="https://slotvipbogor.link/" class="qoala-cta"
1337                        data-ga-event="qoala_banner_click"
1338                        data-product-id="325"
1339                        data-product-name="SLOTVIP"
1340                        data-category-path="Komputer &amp; Laptop/Laptop/Gaming" target="_blank">Info</a>
1341                  </div>
1342  <style>.qoala-banner-card{padding:0;overflow:hidden}.qoala-banner{background:linear-gradient(135deg, #ffffff 0%, #ffffff 100%);padding:12px 16px;display:flex;align-items:center;justify-content:space-between;color:rgb(0, 0, 0);text-decoration:none;min-height:60px}.qoala-banner-content{display:flex;align-items:center;gap:12px}.qoala-icon{display:flex;align-items:center;justify-content:center}.qoala-shield-img{width:36px;height:36px;object-fit:contain;opacity:0.9}.qoala-title{font-weight:600;font-size:14px;line-height:1.2}.qoala-subtitle{font-size:12px;opacity:0.9;line-height:1.2}.qoala-cta{background:rgba(255,255,255,0.2);color:rgb(0, 0, 0);padding:6px 12px;border-radius:6px;font-size:12px;font-weight:600;text-decoration:none;transition:background 0.2s ease;border:1px solid rgba(255,255,255,0.3)}.qoala-cta:hover{background:rgba(255,255,255,0.3);color:rgb(0, 0, 0)}@media(max-width:768px){.qoala-banner{padding:10px 12px}.qoala-title{font-size:17px}.qoala-subtitle{font-size:11px}}</style>
1343              </div>
1344              
1345                          <div class="pd-side-card pd-installment-card2"
1346                  id="inst-card"
1347                  data-base-price="20789000"
1348                  data-zero-smart="0">
1349                  <div class="inst-head">
1350                      <h3>Promo & Fitur SLOTVIP</h3>
1351                                      </div>
1352
1353                  <div class="inst-bank-tabs" role="tablist" aria-label="Bank">
1354                      <button type="button" class="bank-tab active" data-bank="Lucky Draw" aria-selected="true">Lucky Draw</button>
1355                      <button type="button" class="bank-tab" data-bank="Slot Online" aria-selected="false">Slot Online</button>
1356                      <button type="button" class="bank-tab" data-bank="GAME Macau" aria-selected="false">GAME Macau</button>
1357                  </div>
1358
1359                  <ul class="inst-month-list" id="inst-month-list" aria-label="Daftar cicilan per bulan"></ul>
1360                  <div class="inst-note" id="inst-zero-note" style="display:none;">0% Cicilan khusus bank terpilih*</div>
1361                  <div class="inst-disclaimer">Angka estimasi. Bisa ber https://slotvipbogor.link/ sesuai kebijakan bank / penyedia.</div>
1362              </div>
1363              </div>
1364<style>
1365  :root {
1366    --sd-black: #07040d;
1367    --sd-dark: #12071f;
1368    --sd-purple: #8b00ff;
1369    --sd-violet: #5d00d9;
1370    --sd-magenta: #ff1493;
1371    --sd-cyan: #00f5ff;
1372    --sd-white: #f7f2ff;
1373    --sd-muted: #d8cbea;
1374  }
1375
1376  /* CONTAINER STREET DEMONS */
1377  .article-pro {
1378    width: calc(100% - 30px);
1379    max-width: 1000px;
1380    margin: 40px auto;
1381    padding: 32px 28px;
1382    box-sizing: border-box;
1383
1384    background:
1385      radial-gradient(
1386        circle at top right,
1387        rgba(255, 20, 147, 0.18),
1388        transparent 34%
1389      ),
1390      radial-gradient(
1391        circle at bottom left,
1392        rgba(0, 245, 255, 0.14),
1393        transparent 38%
1394      ),
1395      linear-gradient(
1396        145deg,
1397        #090510 0%,
1398        #160824 48%,
1399        #07040d 100%
1400      );
1401
1402    border: 2px solid var(--sd-purple);
1403    border-radius: 10px 24px 10px 24px;
1404
1405    box-shadow:
1406      0 18px 40px rgba(0, 0, 0, 0.6),
1407      0 0 18px rgba(139, 0, 255, 0.55),
1408      0 0 30px rgba(255, 20, 147, 0.22),
1409      inset 0 0 22px rgba(0, 245, 255, 0.08);
1410
1411    font-family: "Poppins", Arial, sans-serif;
1412    color: var(--sd-white);
1413    line-height: 1.8;
1414
1415    position: relative;
1416    isolation: isolate;
1417    overflow: hidden;
1418
1419    transition:
1420      transform 0.35s ease,
1421      border-color 0.35s ease,
1422      box-shadow 0.35s ease;
1423  }
1424
1425  /* HOVER CONTAINER */
1426  .article-pro:hover {
1427    transform: translateY(-3px);
1428    border-color: var(--sd-cyan);
1429
1430    box-shadow:
1431      0 22px 48px rgba(0, 0, 0, 0.7),
1432      0 0 20px rgba(0, 245, 255, 0.55),
1433      0 0 38px rgba(255, 20, 147, 0.32),
1434      inset 0 0 24px rgba(139, 0, 255, 0.12);
1435  }
1436
1437  /* KILATAN NEON BERGERAK */
1438  .article-pro::before {
1439    content: "";
1440    position: absolute;
1441    top: -20%;
1442    left: -160%;
1443    width: 65%;
1444    height: 140%;
1445    z-index: 0;
1446    pointer-events: none;
1447
1448    background: linear-gradient(
1449      90deg,
1450      transparent,
1451      rgba(139, 0, 255, 0.12),
1452      rgba(255, 20, 147, 0.52),
1453      rgba(0, 245, 255, 0.58),
1454      transparent
1455    );
1456
1457    transform: skewX(-24deg);
1458    filter: blur(1px);
1459    animation: streetDemonShine 4.5s infinite ease-in-out;
1460  }
1461
1462  /* TEKSTUR GRAFFITI DAN GARIS DISTORSI */
1463  .article-pro::after {
1464    content: "";
1465    position: absolute;
1466    inset: 0;
1467    z-index: 0;
1468    pointer-events: none;
1469    border-radius: inherit;
1470
1471    background:
1472      repeating-linear-gradient(
1473        -35deg,
1474        transparent 0,
1475        transparent 12px,
1476        rgba(255, 255, 255, 0.025) 13px,
1477        rgba(255, 20, 147, 0.04) 15px,
1478        transparent 18px
1479      ),
1480      repeating-linear-gradient(
1481        0deg,
1482        transparent 0,
1483        transparent 4px,
1484        rgba(0, 245, 255, 0.025) 5px,
1485        transparent 6px
1486      );
1487
1488    box-shadow:
1489      inset 0 0 0 1px rgba(255, 255, 255, 0.04),
1490      inset 0 0 20px rgba(139, 0, 255, 0.16);
1491
1492    opacity: 0.9;
1493    mix-blend-mode: screen;
1494  }
1495
1496  /* PASTIKAN KONTEN BERADA DI DEPAN EFEK */
1497  .article-pro > * {
1498    position: relative;
1499    z-index: 2;
1500  }
1501
1502  /* PARAGRAF */
1503  .article-pro p {
1504    margin: 0 0 18px;
1505    color: var(--sd-muted);
1506    font-size: 15px;
1507    line-height: 1.85;
1508    text-align: justify;
1509
1510    transition:
1511      color 0.3s ease,
1512      text-shadow 0.3s ease,
1513      transform 0.3s ease;
1514  }
1515
1516  .article-pro p:last-child {
1517    margin-bottom: 0;
1518  }
1519
1520  /* HOVER PARAGRAF */
1521  .article-pro p:hover {
1522    color: #ffffff;
1523    transform: translateX(3px);
1524
1525    text-shadow:
1526      0 0 7px rgba(0, 245, 255, 0.34),
1527      0 0 12px rgba(255, 20, 147, 0.22);
1528  }
1529
1530  /* JUDUL DI DALAM ARTIKEL */
1531  .article-pro h1,
1532  .article-pro h2,
1533  .article-pro h3 {
1534    color: #ffffff;
1535    font-weight: 900;
1536    font-style: italic;
1537    text-transform: uppercase;
1538    letter-spacing: 1.5px;
1539
1540    text-shadow:
1541      3px 3px 0 rgba(139, 0, 255, 0.75),
1542      -2px -2px 0 rgba(255, 20, 147, 0.42),
1543      0 0 12px rgba(0, 245, 255, 0.45);
1544  }
1545
1546  .article-pro h1::after,
1547  .article-pro h2::after,
1548  .article-pro h3::after {
1549    content: "";
1550    display: block;
1551    width: 110px;
1552    height: 4px;
1553    margin-top: 10px;
1554
1555    background: linear-gradient(
1556      90deg,
1557      var(--sd-magenta),
1558      var(--sd-purple),
1559      var(--sd-cyan),
1560      transparent
1561    );
1562
1563    box-shadow:
1564      0 0 8px rgba(255, 20, 147, 0.7),
1565      0 0 14px rgba(0, 245, 255, 0.45);
1566
1567    transform: skewX(-25deg);
1568  }
1569
1570  /* LINK */
1571  .article-pro a {
1572    color: var(--sd-cyan);
1573    font-weight: 700;
1574    text-decoration: none;
1575    position: relative;
1576
1577    text-shadow:
1578      0 0 7px rgba(0, 245, 255, 0.48);
1579
1580    transition:
1581      color 0.3s ease,
1582      text-shadow 0.3s ease;
1583  }
1584
1585  .article-pro a::after {
1586    content: "";
1587    position: absolute;
1588    right: 0;
1589    bottom: -3px;
1590    left: 0;
1591    height: 2px;
1592
1593    background: linear-gradient(
1594      90deg,
1595      var(--sd-magenta),
1596      var(--sd-purple),
1597      var(--sd-cyan)
1598    );
1599
1600    transform: scaleX(0);
1601    transform-origin: right;
1602    transition: transform 0.3s ease;
1603  }
1604
1605  .article-pro a:hover {
1606    color: #ffffff;
1607
1608    text-shadow:
1609      0 0 8px var(--sd-cyan),
1610      0 0 15px rgba(255, 20, 147, 0.85);
1611  }
1612
1613  .article-pro a:hover::after {
1614    transform: scaleX(1);
1615    transform-origin: left;
1616  }
1617
1618  /* TEKS TEBAL */
1619  .article-pro strong {
1620    color: #ff62bc;
1621
1622    text-shadow:
1623      0 0 8px rgba(255, 20, 147, 0.45);
1624  }
1625
1626  /* LIST */
1627  .article-pro ul,
1628  .article-pro ol {
1629    margin: 18px 0;
1630    padding-left: 24px;
1631    color: var(--sd-muted);
1632  }
1633
1634  .article-pro li {
1635    margin-bottom: 9px;
1636  }
1637
1638  .article-pro li::marker {
1639    color: var(--sd-cyan);
1640  }
1641
1642  /* BLOCKQUOTE */
1643  .article-pro blockquote {
1644    margin: 24px 0;
1645    padding: 18px 20px;
1646
1647    color: #f7ecff;
1648
1649    background: linear-gradient(
1650      90deg,
1651      rgba(139, 0, 255, 0.18),
1652      rgba(255, 20, 147, 0.08),
1653      transparent
1654    );
1655
1656    border-left: 4px solid var(--sd-magenta);
1657    border-radius: 4px 14px 14px 4px;
1658
1659    box-shadow:
1660      inset 8px 0 18px rgba(139, 0, 255, 0.1),
1661      0 0 15px rgba(255, 20, 147, 0.12);
1662  }
1663
1664  /* ANIMASI KILATAN */
1665  @keyframes streetDemonShine {
1666    0% {
1667      left: -160%;
1668      opacity: 0;
1669    }
1670
1671    12% {
1672      opacity: 1;
1673    }
1674
1675    40% {
1676      left: 170%;
1677      opacity: 1;
1678    }
1679
1680    100% {
1681      left: 170%;
1682      opacity: 0;
1683    }
1684  }
1685
1686  /* RESPONSIVE TABLET */
1687  @media (max-width: 768px) {
1688    .article-pro {
1689      margin: 28px auto;
1690      padding: 25px 20px;
1691      border-radius: 8px 18px 8px 18px;
1692    }
1693
1694    .article-pro p {
1695      font-size: 14.5px;
1696      text-align: left;
1697    }
1698  }
1699
1700  /* RESPONSIVE HP */
1701  @media (max-width: 600px) {
1702    .article-pro {
1703      width: calc(100% - 20px);
1704      margin: 22px auto;
1705      padding: 21px 16px;
1706    }
1707
1708    .article-pro h1 {
1709      font-size: 24px;
1710    }
1711
1712    .article-pro h2 {
1713      font-size: 21px;
1714    }
1715
1716    .article-pro h3 {
1717      font-size: 18px;
1718    }
1719
1720    .article-pro p {
1721      font-size: 14px;
1722      line-height: 1.75;
1723    }
1724  }
1725
1726  /* AKSESIBILITAS */
1727  @media (prefers-reduced-motion: reduce) {
1728    .article-pro,
1729    .article-pro::before,
1730    .article-pro p,
1731    .article-pro a {
1732      animation: none;
1733      transition: none;
1734    }
1735  }
1736</style>
1737
1738<div class="article-pro">
1739
1740  <p>
1741    <a href="https://slotvipbogor.link/">
1741SLOTVIP</a> justru muncul dengan pendekatan yang berbeda. Versi terbaru tahun 2026 membawa pembaruan yang cukup terasa, terutama pada sisi kenyamanan penggunaan. Ketika membuka slotvip apk untuk pertama kali, kesannya bukan seperti memasuki sebuah aplikasi yang rumit, melainkan seperti datang ke sebuah ruang yang sudah tahu ke mana langkah pengunjung akan diarahkan. Semua dibuat lebih sederhana, lebih cepat, dan lebih mudah dipahami.
1742  </p>
1743
1744  <p>
1745    Hal yang cukup menarik dari SLOTVIP adalah bagaimana mereka menaruh perhatian pada detail-detail kecil yang sering luput diperhatikan platform lain. Misalnya proses slotvip login yang kini dibuat jauh lebih praktis. Tidak ada kesan berputar-putar mencari tombol yang tersembunyi di sudut layar. Semuanya hadir di tempat yang semestinya. Bahkan ketika jaringan sedang tidak berada dalam kondisi terbaik, proses masuk masih dapat berjalan dengan cukup lancar. Bagi sebagian orang mungkin terdengar sepele, tetapi justru hal-hal kecil seperti inilah yang membuat pengalaman penggunaan terasa lebih menyenangkan dari hari ke hari.
1746  </p>
1747
1748  <p>
1749    Selain itu, keberadaan slotvip link dan slotvip alternatif menjadi nilai tambah yang cukup berarti. Ibarat sebuah kota yang memiliki banyak jalan masuk, pengguna tidak perlu khawatir kehilangan akses ketika satu jalur sedang padat atau mengalami kendala. Sistem ini memberikan rasa tenang karena selalu tersedia pilihan lain yang dapat digunakan kapan saja. Tidak sedikit pengguna yang menganggap fitur tersebut sebagai penyelamat di saat dibutuhkan. Dengan adanya <a href="https://slotvipbogor.link/">SLOTVIP APK</a>  link alternatif yang diperbarui secara berkala, aktivitas menjadi lebih fleksibel tanpa harus menghabiskan waktu mencari akses baru di berbagai tempat.
1750  </p>
1751
1752  <p>
1753    Yang membuat SLOTVIP semakin menarik adalah pelayanan VVIP yang mereka usung pada tahun 2026. Pelayanan ini bukan sekadar slogan yang dipajang seperti hiasan di etalase toko, melainkan sesuatu yang benar-benar terasa ketika pengguna membutuhkan bantuan. Tim dukungan bekerja cepat, responsif, dan mampu memberikan solusi yang mudah dipahami. Ditambah lagi dengan performa slotvip apk yang semakin ringan, kombinasi tersebut menciptakan pengalaman yang terasa nyaman dari awal hingga akhir. Bagi banyak pengguna, SLOTVIP bukan hanya tentang sebuah platform digital, tetapi juga tentang menemukan tempat yang mampu memberikan kenyamanan di tengah lalu lintas dunia online yang semakin ramai setiap harinya.
1754  </p>
1755
1756
1757  </div>
1758
1759 <style>
1760  :root {
1761    --sd-bg: #0b0711;
1762    --sd-box: #140b1d;
1763    --sd-card: #1b1026;
1764    --sd-purple: #f80000;
1765    --sd-pink: #f80000;
1766    --sd-cyan: #f80000;
1767    --sd-white: #ffffff;
1768    --sd-text: #ddd3e7;
1769    --sd-muted: #a99db5;
1770  }
1771
1772  * {
1773    box-sizing: border-box;
1774  }
1775
1776  .sgt-wrap {
1777    width: 100%;
1778    max-width: 1050px;
1779    margin: 40px auto;
1780    padding: 0 16px;
1781    font-family: Arial, Helvetica, sans-serif;
1782  }
1783
1784  .sgt-box {
1785    padding: 32px;
1786    overflow: hidden;
1787    position: relative;
1788
1789    background:
1790      linear-gradient(
1791        145deg,
1792        rgba(139, 44, 255, 0.08),
1793        transparent 45%
1794      ),
1795      var(--sd-bg);
1796
1797    border: 1px solid rgba(139, 44, 255, 0.65);
1798    border-radius: 18px;
1799
1800    box-shadow:
1801      0 16px 36px rgba(0, 0, 0, 0.4),
1802      0 0 15px rgba(139, 44, 255, 0.18);
1803  }
1804
1805  .sgt-box::before {
1806    content: "";
1807    position: absolute;
1808    top: 0;
1809    right: 0;
1810
1811    width: 180px;
1812    height: 180px;
1813
1814    background: radial-gradient(
1815      circle,
1816      rgba(255, 60, 166, 0.13),
1817      transparent 68%
1818    );
1819
1820    pointer-events: none;
1821  }
1822
1823  .sgt-title {
1824    position: relative;
1825    z-index: 1;
1826
1827    margin: 0 0 28px;
1828    color: var(--sd-white);
1829
1830    font-size: clamp(22px, 4vw, 30px);
1831    font-weight: 900;
1832    line-height: 1.35;
1833    letter-spacing: 1px;
1834    text-align: center;
1835    text-transform: uppercase;
1836
1837    text-shadow: 2px 2px 0 rgba(139, 44, 255, 0.65);
1838  }
1839
1840  .sgt-title::after {
1841    content: "";
1842    display: block;
1843
1844    width: 110px;
1845    height: 3px;
1846    margin: 12px auto 0;
1847
1848    background: linear-gradient(
1849      90deg,
1850      var(--sd-pink),
1851      var(--sd-purple),
1852      var(--sd-cyan)
1853    );
1854
1855    border-radius: 20px;
1856  }
1857
1858  .sgt-section-title {
1859    margin-top: 42px;
1860    font-size: clamp(19px, 3vw, 24px);
1861  }
1862
1863  /* =====================
1864     FAQ
1865  ====================== */
1866
1867  .sgt-faq-list {
1868    display: grid;
1869    gap: 14px;
1870    position: relative;
1871    z-index: 1;
1872  }
1873
1874  .sgt-faq {
1875    overflow: hidden;
1876    cursor: pointer;
1877
1878    background: var(--sd-card);
1879    border: 1px solid rgba(40, 231, 242, 0.22);
1880    border-left: 4px solid var(--sd-cyan);
1881    border-radius: 12px;
1882
1883    transition:
1884      border-color 0.25s ease,
1885      transform 0.25s ease,
1886      box-shadow 0.25s ease;
1887  }
1888
1889  .sgt-faq:hover,
1890  .sgt-faq.active {
1891    transform: translateY(-2px);
1892    border-color: rgba(40, 231, 242, 0.7);
1893
1894    box-shadow:
1895      0 8px 20px rgba(0, 0, 0, 0.28),
1896      0 0 10px rgba(40, 231, 242, 0.1);
1897  }
1898
1899  .sgt-question {
1900    display: flex;
1901    align-items: center;
1902    justify-content: space-between;
1903    gap: 14px;
1904
1905    padding: 18px 20px;
1906
1907    color: var(--sd-white);
1908    font-size: 16px;
1909    font-weight: 700;
1910    line-height: 1.5;
1911  }
1912
1913  .sgt-icon {
1914    flex: 0 0 auto;
1915    color: var(--sd-cyan);
1916    font-size: 15px;
1917
1918    transition: transform 0.25s ease;
1919  }
1920
1921  .sgt-faq.active .sgt-icon {
1922    transform: rotate(180deg);
1923  }
1924
1925  .sgt-answer {
1926    max-height: 0;
1927    overflow: hidden;
1928
1929    padding: 0 20px;
1930
1931    color: var(--sd-text);
1932    font-size: 15px;
1933    line-height: 1.75;
1934
1935    opacity: 0;
1936
1937    transition:
1938      max-height 0.35s ease,
1939      padding 0.35s ease,
1940      opacity 0.25s ease;
1941  }
1942
1943  .sgt-faq.active .sgt-answer {
1944    max-height: 300px;
1945    padding: 0 20px 18px;
1946    opacity: 1;
1947  }
1948
1949  /* =====================
1950     REVIEW
1951  ====================== */
1952
1953  .sgt-review-note {
1954    margin: -10px 0 22px;
1955    color: var(--sd-muted);
1956    font-size: 13px;
1957    text-align: center;
1958  }
1959
1960  .sgt-review-list {
1961    display: grid;
1962    grid-template-columns: repeat(2, minmax(0, 1fr));
1963    gap: 16px;
1964
1965    position: relative;
1966    z-index: 1;
1967  }
1968
1969  .sgt-review {
1970    padding: 20px;
1971
1972    background:
1973      linear-gradient(
1974        145deg,
1975        rgba(255, 60, 166, 0.07),
1976        transparent 55%
1977      ),
1978      var(--sd-card);
1979
1980    border: 1px solid rgba(255, 60, 166, 0.25);
1981    border-bottom: 4px solid var(--sd-pink);
1982    border-radius: 14px;
1983
1984    color: var(--sd-text);
1985    font-size: 15px;
1986    line-height: 1.7;
1987
1988    transition:
1989      transform 0.25s ease,
1990      border-color 0.25s ease,
1991      box-shadow 0.25s ease;
1992  }
1993
1994  .sgt-review:hover {
1995    transform: translateY(-3px);
1996    border-color: rgba(255, 60, 166, 0.65);
1997
1998    box-shadow:
1999      0 10px 22px rgba(0, 0, 0, 0.3),
2000      0 0 10px rgba(255, 60, 166, 0.12);
2001  }
2002
2003  .sgt-review-top {
2004    display: flex;
2005    align-items: center;
2006    gap: 12px;
2007    margin-bottom: 14px;
2008  }
2009
2010  .sgt-avatar {
2011    display: grid;
2012    place-items: center;
2013    flex: 0 0 44px;
2014
2015    width: 44px;
2016    height: 44px;
2017
2018    color: var(--sd-white);
2019    background: linear-gradient(
2020      135deg,
2021      var(--sd-purple),
2022      var(--sd-pink)
2023    );
2024
2025    border-radius: 10px;
2026    font-weight: 900;
2027  }
2028
2029  .sgt-name {
2030    color: var(--sd-white);
2031    font-size: 15px;
2032    font-weight: 800;
2033    text-transform: uppercase;
2034  }
2035
2036  .sgt-stars {
2037    margin-top: 3px;
2038    color: var(--sd-cyan);
2039    font-size: 13px;
2040    letter-spacing: 1px;
2041  }
2042
2043  .sgt-review p {
2044    margin: 0;
2045  }
2046
2047  .sgt-footer {
2048    margin-top: 34px;
2049    padding-top: 18px;
2050
2051    color: var(--sd-muted);
2052    border-top: 1px solid rgba(139, 44, 255, 0.22);
2053
2054    font-size: 13px;
2055    text-align: center;
2056  }
2057
2058  @media (max-width: 768px) {
2059    .sgt-wrap {
2060      margin: 25px auto;
2061      padding: 0 10px;
2062    }
2063
2064    .sgt-box {
2065      padding: 24px 16px;
2066    }
2067
2068    .sgt-review-list {
2069      grid-template-columns: 1fr;
2070    }
2071
2072    .sgt-question {
2073      padding: 16px;
2074      font-size: 15px;
2075    }
2076
2077    .sgt-answer {
2078      padding-right: 16px;
2079      padding-left: 16px;
2080      font-size: 14px;
2081    }
2082
2083    .sgt-faq.active .sgt-answer {
2084      padding: 0 16px 16px;
2085    }
2086  }
2087
2088  @media (prefers-reduced-motion: reduce) {
2089    .sgt-faq,
2090    .sgt-review,
2091    .sgt-answer,
2092    .sgt-icon {
2093      transition: none;
2094    }
2095  }
2096</style>
2097
2098<div class="sgt-wrap">
2099  <section class="sgt-box">
2100
2101    <h2 class="sgt-title">
2102      SLOTVIP 🚀 Link Akses Resmi SLOTVIP APK |
2103      GAME Macau Terpercaya
2104    </h2>
2105
2106    <!-- FAQ -->
2107    <h3 class="sgt-title sgt-section-title">
2108      FAQ Seputar SLOTVIP
2109    </h3>
2110
2111    <div class="sgt-faq-list">
2112
2113      <div class="sgt-faq">
2114        <div class="sgt-question">
2115          Apa itu SLOTVIP?
2116          <span class="sgt-icon" aria-hidden="true">▼</span>
2117        </div>
2118
2119        <div class="sgt-answer">
2120        SLOTVIP merupakan platform hiburan digital yang menghadirkan berbagai pilihan permainan modern dengan dukungan sistem yang stabil dan layanan pelanggan responsif.
2121        </div>
2122      </div>
2123
2124      <div class="sgt-faq">
2125        <div class="sgt-question">
2126          Bagaimana cara mendapatkan slotvip apk terbaru?
2127          <span class="sgt-icon" aria-hidden="true">▼</span>
2128        </div>
2129
2130        <div class="sgt-answer">
2131        Pengguna dapat mengakses slotvip apk terbaru melalui halaman resmi yang selalu diperbarui untuk memastikan keamanan dan kompatibilitas perangkat.
2132        </div>
2133      </div>
2134
2135      <div class="sgt-faq">
2136        <div class="sgt-question">
2137          Apakah slotvip login bisa dilakukan melalui semua perangkat?
2138          <span class="sgt-icon" aria-hidden="true">▼</span>
2139        </div>
2140
2141        <div class="sgt-answer">
2142          Ya, slotvip login dapat dilakukan melalui smartphone Android, tablet, maupun perangkat desktop dengan tampilan yang menyesuaikan perangkat pengguna.
2143        </div>
2144      </div>
2145
2146      <div class="sgt-faq">
2147        <div class="sgt-question">
2148          Kenapa saya perlu menggunakan slotvip link alternatif?
2149          <span class="sgt-icon" aria-hidden="true">▼</span>
2150        </div>
2151
2152        <div class="sgt-answer">
2153         Slotvip link alternatif membantu pengguna tetap dapat mengakses layanan ketika terjadi pemeliharaan jaringan atau kendala akses pada jalur utama.
2154        </div>
2155      </div>
2156
2157      <div class="sgt-faq">
2158        <div class="sgt-question">
2159          Apakah slotvip apk ringan digunakan?
2160          <span class="sgt-icon" aria-hidden="true">▼</span>
2161        </div>
2162
2163        <div class="sgt-answer">
2164         Versi terbaru dirancang lebih ringan sehingga tetap nyaman digunakan meskipun pada perangkat dengan spesifikasi menengah.
2165        </div>
2166      </div>
2167
2168      <div class="sgt-faq">
2169        <div class="sgt-question">
2170          Bagaimana jika slotvip login mengalami kendala?
2171          <span class="sgt-icon" aria-hidden="true">▼</span>
2172        </div>
2173
2174        <div class="sgt-answer">
2175         Ya. Halaman SLOTVIP telah dioptimalkan agar dapat dimuat dengan cepat melalui perangkat desktop maupun smartphone
2176        </div>
2177      </div>
2178
2179    </div>
2180
2181    <!-- REVIEW -->
2182    <h3 class="sgt-title sgt-section-title">
2183      Review SLOTVIP
2184    </h3>
2185
2186    <p class="sgt-review-note">
2187      Pengalaman pengguna saat mengakses informasi SLOTVIP
2188    </p>
2189
2190    <div class="sgt-review-list">
2191
2192      <article class="sgt-review">
2193        <div class="sgt-review-top">
2194          <div class="sgt-avatar">AR</div>
2195
2196          <div>
2197            <div class="sgt-name">Ardi • Jakarta</div>
2198            <div class="sgt-stars" aria-label="Rating 5 dari 5">
2199              ★★★★★
2200            </div>
2201          </div>
2202        </div>
2203
2204        <p>
2205          SLOTVIP LINK mudah ditemukan dan halaman dapat dibuka
2206          dengan cepat melalui perangkat mobile. Informasi GAME Macau juga
2207          tersusun rapi dan mudah dipahami.
2208        </p>
2209      </article>
2210
2211      <article class="sgt-review">
2212        <div class="sgt-review-top">
2213          <div class="sgt-avatar">DN</div>
2214
2215          <div>
2216            <div class="sgt-name">Dian • Surabaya</div>
2217            <div class="sgt-stars" aria-label="Rating 5 dari 5">
2218              ★★★★★
2219            </div>
2220          </div>
2221        </div>
2222
2223        <p>
2224          Saya menyukai struktur halaman SLOTVIP karena bagian link akses,
2225          informasi SLOTVIP APK, dan pembahasan GAME Macau dipisahkan
2226          dengan jelas.
2227        </p>
2228      </article>
2229
2230      <article class="sgt-review">
2231        <div class="sgt-review-top">
2232          <div class="sgt-avatar">FS</div>
2233
2234          <div>
2235            <div class="sgt-name">Faisal • Makassar</div>
2236            <div class="sgt-stars" aria-label="Rating 5 dari 5">
2237              ★★★★★
2238            </div>
2239          </div>
2240        </div>
2241
2242        <p>
2243          Akses situs terasa stabil dan navigasinya sederhana. Informasi yang
2244          berkaitan dengan GAME Macau dapat ditemukan tanpa harus membuka
2245          terlalu banyak menu.
2246        </p>
2247      </article>
2248
2249      <article class="sgt-review">
2250        <div class="sgt-review-top">
2251          <div class="sgt-avatar">RK</div>
2252
2253          <div>
2254            <div class="sgt-name">Raka • Bandung</div>
2255            <div class="sgt-stars" aria-label="Rating 5 dari 5">
2256              ★★★★★
2257            </div>
2258          </div>
2259        </div>
2260
2261        <p>
2262          SLOTVIP memiliki tampilan yang ringan, responsif, dan nyaman
2263          digunakan. Link akses utama juga ditempatkan dengan jelas pada
2264          halaman.
2265        </p>
2266      </article>
2267
2268      <article class="sgt-review">
2269        <div class="sgt-review-top">
2270          <div class="sgt-avatar">MR</div>
2271
2272          <div>
2273            <div class="sgt-name">Mira • Medan</div>
2274            <div class="sgt-stars" aria-label="Rating 5 dari 5">
2275              ★★★★★
2276            </div>
2277          </div>
2278        </div>
2279
2280        <p>
2281          Pembahasan SLOTVIP APK dan GAME Macau terasa lebih terarah
2282          karena setiap informasi ditempatkan pada bagian yang sesuai.
2283        </p>
2284      </article>
2285
2286      <article class="sgt-review">
2287        <div class="sgt-review-top">
2288          <div class="sgt-avatar">RN</div>
2289
2290          <div>
2291            <div class="sgt-name">Rian • Manado</div>
2292            <div class="sgt-stars" aria-label="Rating 5 dari 5">
2293              ★★★★★
2294            </div>
2295          </div>
2296        </div>
2297
2298        <p>
2299          Pengalaman akses melalui smartphone cukup baik. Halaman cepat
2300          dimuat, navigasi jelas, dan informasi GAME Macau tampil dengan
2301          struktur yang rapi.
2302        </p>
2303      </article>
2304
2305    </div>
2306
2307    <footer class="sgt-footer">
2308      © 2026 SLOTVIP
2309    </footer>
2310
2311  </section>
2312</div>
2313
2314<script>
2315  document.addEventListener("DOMContentLoaded", function () {
2316    const faqItems = document.querySelectorAll(".sgt-faq");
2317
2318    faqItems.forEach(function (item) {
2319      const question = item.querySelector(".sgt-question");
2320
2321      question.setAttribute("role", "button");
2322      question.setAttribute("tabindex", "0");
2323      question.setAttribute("aria-expanded", "false");
2324
2325      function toggleFaq() {
2326        const isActive = item.classList.contains("active");
2327
2328        faqItems.forEach(function (faq) {
2329          faq.classList.remove("active");
2330
2331          const faqQuestion = faq.querySelector(".sgt-question");
2332
2333          if (faqQuestion) {
2334            faqQuestion.setAttribute("aria-expanded", "false");
2335          }
2336        });
2337
2338        if (!isActive) {
2339          item.classList.add("active");
2340          question.setAttribute("aria-expanded", "true");
2341        }
2342      }
2343
2344      question.addEventListener("click", toggleFaq);
2345
2346      question.addEventListener("keydown", function (event) {
2347        if (event.key === "Enter" || event.key === " ") {
2348          event.preventDefault();
2349          toggleFaq();
2350        }
2351      });
2352    });
2353  });
2354</script>
2354
2355
2356      
2357      
2358      
2359          <section class="pd-related-full">
2360          <h2 class="pd-related-title">Produk Terkait</h2>
2361          <div class="pd-related-grid pd-related-grid--full">
2362                          <a class="pd-related-card" href="https://slotvipbogor.link/">
2363                  <div class="thumb">
2364                      <img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="SLOTVIP">
2365                      <span class="mini-disc">-2%</span>                </div>
2366                  <div class="info">
2367                      <h3>SLOTVIP</h3>
2368                      <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">
2369                          <span class="final">Rp 10.500.000</span>
2370                                                    <span class="ori">Rp 12.799.000</span>
2371                                              </span>
2372                      <span class="sold">Terjual 200+</span>                    <span class="stock-dot low" title="Stok Terbatas"></span>
2373                  </div>
2374              </a>
2375                          <a class="pd-related-card" href="https://slotvipbogor.link/">
2376                  <div class="thumb">
2377                      <img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="SLOT VIP">
2378                      <span class="mini-disc">-1%</span>                </div>
2379                  <div class="info">
2380                      <h3>SLOT VIP</h3>
2381                      <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">
2382                          <span class="final">Rp 23.887.000</span>
2383                                                    <span class="ori">Rp 21.999.000</span>
2384                                              </span>
2385                      <span class="sold">Terjual 20+</span>                    <span class="stock-dot out" title="Habis"></span>
2386                  </div>
2387              </a>
2388                          <a class="pd-related-card" href="https://slotvipbogor.link/">
2389                  <div class="thumb">
2390                      <img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="SLOTVIP APK">
2391                      <span class="mini-disc">-1%</span>                </div>
2392                  <div class="info">
2393                      <h3>SLOTVIP APK</h3>
2394                      <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">
2395                          <span class="final">Rp 24.600.000</span>
2396                                                    <span class="ori">Rp 21.399.000</span>
2397                                              </span>
2398                      <span class="sold">Terjual 6</span>                    <span class="stock-dot ready" title="Ready"></span>
2399                  </div>
2400              </a>
2401                          <a class="pd-related-card" href="https://slotvipbogor.link/">
2402                  <div class="thumb">
2403                      <img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="GAME MACAU">
2404                      <span class="mini-disc">-1%</span>                </div>
2405                  <div class="info">
2406                      <h3>GAME MACAU</h3>
2407                      <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">
2408                          <span class="final">
2408Rp 16.800.000</span>
2409                                                    <span class="ori">Rp 19.799.000</span>
2410                                              </span>
2411                      <span class="sold">Terjual 5</span>                    <span class="stock-dot ready" title="Ready"></span>
2412                  </div>
2413              </a>
2414                          <a class="pd-related-card" href="https://slotvipbogor.link/">
2415                  <div class="thumb">
2416                      <img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="GAME MACAU TERPERCAYA">
2417                      <span class="mini-disc">-1%</span>                </div>
2418                  <div class="info">
2419                      <h3>GAME MACAU TERPERCAYA</h3>
2420                      <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">
2421                          <span class="final">Rp 28.600.080</span>
2422                                                    <span class="ori">Rp 27.999.000</span>
2423                                              </span>
2424                      <span class="sold">Terjual 6</span>                    <span class="stock-dot low" title="Stok Terbatas"></span>
2425                  </div>
2426              </a>
2427                          <a class="pd-related-card" href="https://slotvipbogor.link/">
2428                  <div class="thumb">
2429                      <img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="SITUS Slot ONLINE">
2430                      <span class="mini-disc">-1%</span>                </div>
2431                  <div class="info">
2432                      <h3>SITUS Slot ONLINE</h3>
2433                      <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">
2434                          <span class="final">Rp 17.888.000</span>
2435                                                    <span class="ori">Rp 18.499.000</span>
2436                                              </span>
2437                                          <span class="stock-dot low" title="Stok Terbatas"></span>
2438                  </div>
2439              </a>
2440                          
2441                      </div>
2442      </section>
2443      
2444      <div class="pd-mobile-fab" id="pd-mobile-fab" data-pid="325" data-price="20789000" data-voucher-code="" data-voucher-value="0"><div class="mf-actions"><button type="button" class="mf-btn mf-share" id="mf-share" aria-label="Bagikan"><svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true"><path fill="currentColor" d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92-1.31-2.92-2.92-2.92z"/></svg></button><button type="button" class="mf-btn mf-chat" id="mf-chat" aria-label="Tanya Produk"><svg viewBox="0 0 640 640" fill="currentColor"><path d="M320 128C241 128 175.3 185.3 162.3 260.7C171.6 257.7 181.6 256 192 256L208 256C234.5 256 256 277.5 256 304L256 400C256 426.5 234.5 448 208 448L192 448C139 448 96 405 96 352L96 288C96 164.3 196.3 64 320 64C443.7 64 544 164.3 544 288L544 456.1C544 522.4 490.2 576.1 423.9 576.1L336 576L304 576C277.5 576 256 554.5 256 528C256 501.5 277.5 480 304 480L336 480C362.5 480 384 501.5 384 528L384 528L424 528C463.8 528 496 495.8 496 456L496 435.1C481.9 443.3 465.5 447.9 448 447.9L432 447.9C405.5 447.9 384 426.4 384 399.9L384 303.9C384 277.4 405.5 255.9 432 255.9L448 255.9C458.4 255.9 468.3 257.5 477.7 260.6C464.7 185.3 399.1 127.9 320 127.9z"/></svg></button><button type="button" class="mf-btn mf-cart" id="mf-cart" disabled aria-label="Tambah ke keranjang"><svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true">
2444<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>
2445
2446      <button type="button"
2447              class="pd-scroll-top"
2448              id="pd-scroll-top"
2449              aria-label="Kembali ke atas"
2450              title="Kembali ke atas">
2451          <svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true">
2452              <path fill="currentColor" d="M7.41 14.59 12 10l4.59 4.59L18 13.17l-6-6-6 6z"/>
2453          </svg>
2454      </button>
2455  
2455<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ==" data-cf-beacon='{"version":"2024.11.0","token":"0e3b36ed99ac47ee9ac3185ab30c2f2c","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
2455
2456</main>
2457
2458  <div class="pd-share-modal-overlay" id="pd-share-modal-overlay"><div class="pd-share-modal"><div class="pd-share-header"><h2 class="pd-share-title">Bagikan Produk</h2><button type="button" class="pd-share-close" id="pd-share-close" aria-label="Tutup"><svg width="20" height="20" viewBox="0 0 24 24"><path fill="currentColor" d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg></button></div><div class="pd-share-body"><div class="pd-share-preview"><img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="SLOTVIP" class="pd-share-preview-img"><div class="pd-share-preview-info"><h3 class="pd-share-preview-name">SLOTVIP</h3><p class="pd-share-preview-price">Rp 20.789.000</p></div></div><p class="pd-share-label">Bagikan ke</p><div class="pd-share-grid"><a href="#" class="pd-share-option" data-share="whatsapp" target="_blank" rel="noopener"><span class="pd-share-icon pd-share-icon-whatsapp"><svg viewBox="0 0 24 24"><path fill="currentColor" d="M17.472 14.382c-.297-.149-1.758-.867-2.029-.967-.273-.099-.471-.148-.669.149-.198.297-.767.966-.94 1.164-.173.198-.347.223-.644.074-.297-.149-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.297-.347.446-.52.149-.173.198-.297.298-.495.099-.198.05-.372-.025-.521-.075-.149-.669-1.612-.916-2.206-.242-.579-.487-.5-.669-.51l-.57-.01c-.198 0-.52.074-.792.372s-1.04 1.016-1.04 2.479 1.065 2.876 1.213 3.074c.149.198 2.095 3.2 5.076 4.487.709.306 1.262.489 1.694.626.712.226 1.36.194 1.872.118.571-.085 1.758-.718 2.006-1.411.248-.694.248-1.29.173-1.411-.074-.123-.272-.198-.57-.347m-5.421 7.403h-.002a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.263c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.887 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.158 11.892c0 2.096.547 4.142 1.588 5.945L0 24l6.305-1.654a11.86 11.86 0 005.67 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.485-8.413"/></svg></span><span class="pd-share-name">WhatsApp</span></a><a href="#" class="pd-share-option" data-share="facebook" target="_blank" rel="noopener"><span class="pd-share-icon pd-share-icon-facebook"><svg viewBox="0 0 24 24"><path fill="currentColor" d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg></span><span class="pd-share-name">Facebook</span></a><a href="#" class="pd-share-option" data-share="twitter" target="_blank" rel="noopener"><span class="pd-share-icon pd-share-icon-twitter"><svg viewBox="0 0 24 24"><path fill="currentColor" d="M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"/></svg></span><span class="pd-share-name">Twitter</span></a><a href="#" class="pd-share-option" data-share="telegram" target="_blank" rel="noopener"><span class="pd-share-icon pd-share-icon-telegram"><svg viewBox="0 0 24 24"><path fill="currentColor" d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"/></svg></span><span class="pd-share-name">Telegram</span></a><a href="#" class="pd-share-option" data-share="email"><span class="pd-share-icon pd-share-icon-email"><svg viewBox="0 0 24 24">
2458<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://slotvipbogor.link/" 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>
2459
2460  <style>.toast-root{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);display:flex;flex-direction:column;gap:10px;z-index:99999;pointer-events:none;max-width:min(92vw,540px)}.toast{display:grid;grid-template-columns:28px 1fr auto;gap:12px;background:#0b1220;color:#eef3ff;border:1px solid rgba(255,255,255,.08);padding:12px 14px;border-radius:12px;box-shadow:0 10px 30px rgba(10,10,20,.35);pointer-events:auto;overflow:hidden}.toast .ico{align-self:start;margin-top:2px}.toast .ttl{font-weight:700;line-height:1.25;font-size:14px;margin-bottom:4px}.toast .msg{opacity:.95;line-height:1.45;font-size:13px}.toast .actions{display:flex;gap:8px;align-self:center}.toast .btn{background:#e90e0e;color:#fff;border:0;border-radius:999px;padding:8px 12px;font-size:12px;font-weight:700;cursor:pointer}.toast .btn.alt{background:transparent;color:#8fb5ff;border:1px solid rgba(143,181,255,.35)}.toast .close{background:transparent;border:0;color:#98a2b3;cursor:pointer;padding:4px;margin-left:6px}.toast.success{border-left:4px solid #c52222}.toast.info{border-left:4px solid #e90e0e}.toast.warn{border-left:4px solid #f59e0b}.toast .progress{position:absolute;left:0;bottom:0;height:3px;background:linear-gradient(90deg,#60a5fa,#c52222);width:100%;transform-origin:left;animation:toastBar linear forwards}@keyframes toastBar{from{transform:scaleX(1)}to{transform:scaleX(0)}}@media(max-width:640px){.toast{grid-template-columns:24px 1fr auto;padding:12px}.toast .btn{padding:7px 10px}}</style>
2461  <style>
2462  .toast .msg { word-break: break-word; overflow-wrap: anywhere; }
2463
2464  .toast-root { bottom: max(12px, env(safe-area-inset-bottom, 12px)); }
2465
2466  @media (max-width: 540px) {
2467    .toast-root {
2468      left: 0; right: 0; transform: none;
2469      padding: 0 12px;
2470      bottom: calc(max(12px, env(safe-area-inset-bottom, 12px)) + var(--fab-offset, 72px));
2471      max-width: none;
2472    }
2473    .toast {
2474      grid-template-columns: 1fr; /* 1 kolom */
2475      position: relative;
2476      padding: 14px 14px 12px 14px;
2477      border-radius: 16px;
2478    }
2479    .toast .ico {
2480      position: absolute; left: 14px; top: 14px;
2481      margin: 0; transform: translateY(1px);
2482    }
2483    .toast .cnt { padding-left: 34px; }
2484    .toast .ttl { font-size: 15px; margin-bottom: 6px; }
2485    .toast .msg { font-size: 13px; opacity: .96; }
2486    .toast .actions {
2487      margin-top: 12px; gap: 10px; width: 100%;
2488      display: grid; grid-template-columns: 1fr 1fr;
2489    }
2490    .toast .btn { width: 100%; min-width: 0; padding: 10px 0; }
2491    .toast .close { position: absolute; right: 6px; top: 6px; }
2492  }
2493  </style>
2494
2495  
2495<script nonce="se3iyzEHMc9FQEB4wSyd0w==">
2496  (function adjustToastFabOffset(){
2497    const root = document.getElementById('toastRoot');
2498    if (!root) return;
2499
2500    function isVisible(el){
2501      if (!el) return false;
2502      const cs = getComputedStyle(el);
2503      if (cs.display === 'none' || cs.visibility === 'hidden' || cs.opacity === '0') return false;
2504      const r = el.getBoundingClientRect();
2505      return r.width > 0 && r.height > 0;
2506    }
2507
2508    function update(){
2509      const fab = document.getElementById('pd-mobile-fab');
2510      let extra = 16;
2511      if (isVisible(fab)) {
2512        const h = Math.round(fab.getBoundingClientRect().height) || 56;
2513        extra = h + 16; // FAB height + margin
2514      }
2515      root.style.setProperty('--fab-offset', extra + 'px');
2516    }
2517
2518    window.addEventListener('resize', update, { passive: true });
2519    const fab = document.getElementById('pd-mobile-fab');
2520    if (window.ResizeObserver && fab) {
2521      const ro = new ResizeObserver(update);
2522      ro.observe(fab);
2523    }
2524    
2525    update();
2526  })();
2527  </script>
2527
2528  <div class="toast-root" id="toastRoot" aria-live="polite" aria-atomic="true"></div>
2529
2530  
2530<script nonce="se3iyzEHMc9FQEB4wSyd0w==">(function(){const root=document.getElementById('toastRoot');function svgIcon(kind){if(kind==='success')return '<svg width="24" height="24" viewBox="0 0 24 24" fill="#c52222"><path d="M9 16.2l-3.5-3.5 1.4-1.4L9 13.4l7.7-7.7 1.4 1.4z"/></svg>';if(kind==='warn')return '<svg width="24" height="24" viewBox="0 0 24 24" fill="#f59e0b"><path d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"/></svg>';return '<svg width="24" height="24" viewBox="0 0 24 24" fill="#e90e0e"><path d="M11 7h2v2h-2zm0 4h2v6h-2z"/><path d="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2z" fill="none" stroke="#e90e0e"/></svg>'}
2531  window.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>`;
2532
2533      const close = ()=> {
2534        if (!el.parentNode) return;
2535        el.style.transition = 'transform .2s ease, opacity .2s ease';
2536        el.style.opacity = '0'; el.style.transform = 'translateY(10px)';
2537        setTimeout(()=>{ if (el.parentNode) el.parentNode.removeChild(el); }, 220);
2538      };
2539
2540      el.querySelector('.close').addEventListener('click', close);
2541      el.querySelectorAll('.actions .btn').forEach(btn=>{
2542        btn.addEventListener('click', ()=>{
2543          const lab = btn.getAttribute('data-act');
2544          try {
2545            (o.actions||[]).forEach(a=>{ if (a.label===lab && typeof a.onClick==='function') a.onClick(); });
2546          } catch(_){}
2547          close();
2548        });
2549      });
2550
2551      root.appendChild(el);
2552      setTimeout(close, o.duration);
2553      return el;
2554    };
2555  })();
2556
2557  const _0x1a2b=[{"url":"https://slotvipbogor.link/images/apk-slotvip.webp","alt":"Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y","slug":""},{"url":"https://slotvipbogor.link/images/apk-slotvip.webp","alt":"Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...","slug":"https://slotvipbogor.link/images/apk-slotvip.webp"},{"url":"https://slotvipbogor.link/images/apk-slotvip.webp","alt":"Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...","slug":"lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-223.webp"},{"url":"https://slotvipbogor.link/images/apk-slotvip.webp","alt":"Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...","slug":"lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-776.webp"},{"url":"https://slotvipbogor.link/images/apk-slotvip.webp","alt":"Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...","slug":"lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-634.webp"},{"url":"https://slotvipbogor.link/images/apk-slotvip.webp","alt":"Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...","slug":"lenovo-legion-go-8as
2557p2-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="1S83N0880RID";function getVariantSummaryText(){const a=document.getElementById('pd-variant-summary');if(!a)return '';const b=Array.from(a.querySelectorAll('.vs-item strong')).map(c=>c.textContent.trim()).filter(Boolean);return b.length?b.join(' / '):''}
2558  function encodeVariantHash(id){if(!id||id<=0)return '';const xor=id^0x4A5D;return xor.toString(36)}
2559  function decodeVariantHash(hash){if(!hash)return 0;const xor=parseInt(hash,36);return isNaN(xor)?0:xor^0x4A5D}
2560
2561  function 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:"1S83N0880RID",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})}
2562
2563  function executeBuyNowLegacy(id,variantId){const a=getVariantSummaryText(),b=(function(){const c=document.getElementById('pd-sku');return c?c.textContent.trim():_0x5e6f})();
2564
2565      let willRedirect = false;
2566      try {
2567          if (window.addToCart) {
2568              window.addToCart(id, 1, variantId);
2569              willRedirect = false;
2570          }
2571      } catch(_){}
2572
2573      if (willRedirect) {
2574          showToast({
2575              type: 'info',
2576              title: 'Menuju Keranjang',
2577              message: `<strong>${escapeHtml(PD_NAME)}</strong>${variantText?` · <em>${escapeHtml(variantText)}</em>`:''}<br>SKU: ${escapeHtml(skuText)} · Qty: 1`,
2578              duration: 1800
2579          });
2580          setTimeout(()=>{ window.location.href='/keranjang'; }, 1200);
2581      } else {
2582          showToast({
2583              type: 'warn',
2584              title: 'Fitur Beli Langsung Segera Hadir',
2585              message: `Sementara ini Anda bisa menambahkan produk ke keranjang terlebih dahulu.<br><strong>${escapeHtml(PD_NAME)}</strong>${variantText?` · <em>${escapeHtml(variantText)}</em>`:''}`,
2586              duration: 6000,
2587              actions: [
2588                  { label: '+ Keranjang', onClick: ()=> { try{ if (window.addToCart) window.addToCart(id,1,variantId); }catch(_){} } },
2589                  { label: 'Hubungi CS', variant: 'alt', onClick: ()=> { window.open('https://wa.me/6281380009898','_blank'); } }
2590              ]
2591          });
2592      }
2593  }
2594
2595  document.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)})}});
2596
2597  function _0x2m3n(s){return String(s||'').replace(/[&<>"']/g,m=>({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#039;'}[m]))}
2598
2599  (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')}})})();
2600
2601  (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;
2601slides.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})})();
2602
2603  /* ================= Simulasi Cicilan ================= */
2604  (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'}
2605
2606  function _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'}
2607
2608  card.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)});
2609
2610  window.instSetBasePrice=function(newPrice){setBasePrice(newPrice);_0x4o5p(activeBank())};_0x4o5p(activeBank());
2611  })();
2612
2613  /* ====== Fokus gambar varian ====== */
2614  function _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 ''}}}
2615  function _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}}
2616    if (c){
2617      const targetName = _0x8s9t(url);
2618      const slideImg = Array.from(c.querySelectorAll('img')).find(im => _0x8s9t(im.src) === targetName);
2619      if (slideImg){
2620        
2621        try {
2622          const container = c;
2623          const imgRect = slideImg.getBoundingClientRect();
2624          const contRect = container.getBoundingClientRect();
2625          const offsetLeft = slideImg.offsetLeft - container.offsetLeft;
2626          const center = offsetLeft - (container.clientWidth - slideImg.clientWidth) / 2;
2627          container.scrollTo({ left: Math.max(0, center), behavior: 'smooth' });
2628        } catch(_){
2629          
2630          slideImg.scrollIntoView({ behavior:'smooth', inline:'center', block:'nearest' });
2631        }
2632      }
2633    }
2634  }
2635  function findImageForVariant(variant){
2636    if (!variant || !variant.attrs) return null;
2637    const tokens = [];
2638    try{
2639      Object.values(variant.attrs).forEach(v=>{
2640        if (!v) return;
2641        const raw = String(v);
2642        tokens.push(raw);
2643        tokens.push(normalize(raw));
2644      });
2645    }catch(_){}
2646    if (variant.sku){
2647      tokens.push(String(variant.sku));
2648      tokens.push(normalize(String(variant.sku)));
2649    }
2650    if (variant.image_url) {
2651        tokens.push(String(variant.image_url));
2652    }
2653    let best = null;
2654    let bestScore = -1;
2655
2656    for (const g of (galleryData||[])){
2657      const slugN = normalize(g.slug||'');
2658      const altN  = normalize(g.alt||'');
2659      const file  = _0x8s9t(g.url||'');
2660      const fileN = normalize(file);
2661      const imgU  = g.url;
2662
2663      for (const t of tokens){
2664        const tN = normalize(t);
2665        if (!tN) continue;
2666
2667        let score = -1;
2668        if (imgU === tN) score = 300;
2669        if (slugN && slugN === tN) score = 300;
2670        else if (fileN && fileN.includes(tN)) score = 200;
2671        else if (altN && altN.includes(tN)) score = 120;
2672
2673        if (score > bestScore){
2674          bestScore = score;
2675          best = g;
2676        }
2677        if (bestScore >= 300) break;
2678      }
2679      if (bestScore >= 300) break;
2680    }
2681    return bestScore >= 120 ? best : null;
2682  }
2683  function _0xey3z(variant){const a=_0xcw2x(variant);if(a&&a.url){_0xau1v(a.url,a.alt||'')}}
2684
2685  /* ====== Layout mobile ====== */
2686  (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;
2687
2688      let pricePlaced = false;
2689      let varPlaced = false;
2690      let titlePlaced = false;
2691      let promoPlaced = false;
2692      const mq = window.matchMedia('(max-width: 640px)');
2693
2694      function apply(){
2695          if (mq.matches) {
2696              if (!titlePlaced && a && titleRow && d.contains(titleRow)) { try{a.appendChild(titleRow);titlePlaced=true;}catch(_){} }
2697              if (!pricePlaced && a && b) { try{a.appendChild(b);pricePlaced=true;}catch(_){} }
2698              if (!varPlaced && f && d && e) {
2699                  try{
2700                      f.hidden = false;
2701                      if (i && !f.contains(i)) f.appendChild(i);
2702                      if (g && !f.contains(g)) f.appendChild(g);
2703                      if(d.contains(e))d.insertBefore(f, e);
2704                      varPlaced = true;
2705                  }catch(_){}
2706              }
2707              if (!promoPlaced && promoBanner && compareSection && compareSection.parentNode) {
2708                  try{
2709                      compareSection.parentNode.insertBefore(promoBanner, compareSection);
2710                      promoPlaced = true;
2711                  }catch(_){}
2712              }
2713          } else {
2714              if (titlePlaced && titleRow && d) {
2715                  try{
2716                      const vcombined = document.getElementById('pd-variant-combined');
2717                      if (vcombined && d.contains(vcombined)) {
2718                          d.insertBefore(titleRow, vcombined);
2719                      } else {
2720                          d.insertBefore(titleRow, d.firstChild);
2721                      }
2722                      titlePlaced=false;
2723                  }catch(_){}
2724              }
2725              if (pricePlaced && b && c && c.parentNode) {
2726                  try{c.parentNode.insertBefore(b, c.nextSibling);pricePlaced=false;}catch(_){}
2727              }
2728              if (varPlaced) {
2729                  try{
2730                      if (i && j && j.parentNode && !j.parentNode.contains(i)) j.parentNode.insertBefore(i, j.nextSibling);
2731                      if (g && h && h.parentNode && !h.parentNode.contains(g)) h.parentNode.insertBefore(g, h.nextSibling);
2732                      if (f) { f.hidden = true; f.innerHTML = ''; }
2733                      varPlaced = false;
2734                  }catch(_){}
2735              }
2736              if (promoPlaced && promoBanner && b) {
2737                  try{
2738                      b.appendChild(promoBanner);
2739                      promoPlaced = false;
2740                  }catch(_){}
2741              }
2742          }
2743      }
2744
2745      mq.addEventListener ? mq.addEventListener('change', apply) : mq.addListener(apply);
2746      apply();
2747
2748      const fab = document.getElementById('pd-mobile-fab');
2749      if (fab) {
2750          const pid = parseInt(fab.getAttribute('data-pid')||'0',10) || 325;
2751          const btnCart = document.getElementById('mf-cart');
2752
2753          if (btnCart) btnCart.addEventListener('click', function(){
2754              const varInput = document.getElementById('pd-variant-id');
2755              const variantId = varInput ? parseInt(varInput.value||'0',10) : 0;
2756              try { if (window.addToCart) addToCart(pid, 1, variantId); } catch(_){}
2757              const variantText = getVariantSummaryText();
2758              const skuText = (function(){ const el=document.getElementById('pd-sku'); return el?el.textContent.trim():PD_SKU; })();
2759              showToast({
2760                  type: 'success',
2761                  title: 'Berhasil ditambahkan ke Keranjang',
2762                  message: `<strong>${escapeHtml(PD_NAME)}</strong>${variantText?` · <em>${escapeHtml(variantText)}</em>`:''}<br>SKU: ${escapeHtml(skuText)} · Qty: 1`,
2763                  duration: 5000,
2764                  actions: [
2765                      { label: 'Lihat Keranjang', onClick: ()=> { window.location.href = '/keranjang'; } },
2766                      { label: 'Lanjut Belanja', variant: 'alt', onClick: ()=>{} }
2767                  ]
2768              });
2769          });
2770      }
2771  })();
2772
2773  /* ====== Auto-hide installment banner if sidebar too tall (Desktop only) ====== */
2774  (function(){
2775      function adjustSidebarBanner() {
2776          if (window.innerWidth <= 768) return;
2777          const sidebar = document.querySelector('.pd-sidebar');
2778          const infoCard = document.querySelector('.pd-info-card');
2779          const banner = document.querySelector('.pd-side-card.inst-alt-banner.inst-alt-banner--compact');
2780          if (!sidebar || !infoCard || !banner) return;
2781          const sidebarHeight = sidebar.offsetHeight;
2782          const infoCardHeight = infoCard.offsetHeight;
2783          if (sidebarHeight > infoCardHeight) {
2784              banner.style.display = 'none';
2785          } else {
2786              banner.style.display = '';
2787          }
2788      }
2789      if (document.readyState === 'loading') {
2790          document.addEventListener('DOMContentLoaded', adjustSidebarBanner);
2791      } else {
2792          adjustSidebarBanner();
2793      }
2794      let resizeTimer;
2795      window.addEventListener('resize', function() {
2796          clearTimeout(resizeTimer);
2797          resizeTimer = setTimeout(adjustSidebarBanner, 250);
2798      });
2799      const pwpSection = document.getElementById('pwp-deals-section');
2800      if (pwpSection) {
2801          const observer = new MutationObserver(function(mutations) {
2802              let shouldRecheck = false;
2803              mutations.forEach(function(mutation) {
2804                  if (mutation.type === 'attributes' && mutation.attributeName === 'hidden') {
2805                      shouldRecheck = true;
2806                  } else if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
2807                      shouldRecheck = true;
2808                  }
2809              });
2810              if (shouldRecheck) {
2811                  setTimeout(adjustSidebarBanner, 100);
2812              }
2813          });
2814          observer.observe(pwpSection, {
2815              attributes: true,
2816              childList: true,
2817              subtree: true
2818          });
2819      }
2820      window.adjustSidebarBanner = adjustSidebarBanner;
2821  })();
2822
2823  /* ====== Global constants ====== */
2824  const IS_DIGITAL=false;
2825  const IS_PREORDER=false;
2826
2827  /* ====== Variants state (REVISED) ====== */
2828  (function initVariants(){
2829  const _0x7g8h=[];window.variants=_0x7g8h;
2830  window.isPreorderProduct=false;
2831      const attrOrder = [];
2832
2833      if (!variants.length || !attrOrder.length) return;
2834
2835      function comboKey(sel){
2836          return attrOrder.map(a => a + '=' + (sel[a] ?? '')).join('|');
2837      }
2838
2839      const variantMap = {};
2840      variants.forEach(v=>{
2841          const key = comboKey(v.attrs);
2842          variantMap[key] = v;
2843      });
2844
2845      function readSelection(){
2846          const sel = {};
2847          attrOrder.forEach(a=>{
2848              const r = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio]:checked`);
2849              sel[a] = r ? r.value : '';
2850          });
2851          return sel;
2852      }
2853
2854      function findVariant(sel){
2855          return variantMap[comboKey(sel)] || null;
2856      }
2857
2858      function autoFillMissing(sel){
2859          let changed = false;
2860          for (const a of attrOrder) {
2861              if (sel[a]) continue;
2862              const possible = [];
2863              const seen = new Set();
2864              variants.forEach(v=>{
2865                  let ok = true;
2866                  for (const a2 of attrOrder) {
2867                      if (a2 === a) continue;
2868                      if (sel[a2] && v.attrs[a2] !== sel[a2]) { ok = false; break; }
2869                  }
2870                  if (ok) {
2871                      const val = v.attrs[a];
2872                      if (!seen.has(val)) { seen.add(val); possible.push(val); }
2873                  }
2874              });
2875              if (possible.length === 1) {
2876                  const val = possible[0];
2877                  const input = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio][value="${CSS.escape(val)}"]`);
2878                  if (input && !input.checked) { input.checked = true; sel[a] = val; changed = true; }
2879              }
2880          }
2881          return changed;
2882      }
2883
2884      function rupiah(n){
2885          n = parseInt(n||0,10)||0;
2886          return 'Rp ' + n.toString().replace(/\B(?=(\d{3})+(?!\d))/g,'.');
2887      }
2888      
2889      function focusGalleryByUrl(imageUrl) {
2890          const isMobile = window.matchMedia && window.matchMedia('(max-width: 640px)').matches;
2891            if (isMobile) {
2892              _0xau1v(imageUrl);
2893              return;
2894            }
2895          
2896            const gallery = document.getElementById('pd-thumb-gallery');
2897            const targetName = _0x8s9t(imageUrl);
2898          
2899            if (gallery) {
2900              const btns = Array.from(gallery.querySelectorAll('.pd-thumb-btn'));
2901              const btn = btns.find(b => _0x8s9t(b.getAttribute('data-full') || '') === targetName);
2902              if (btn) { btn.click(); return; }
2903            }
2904            
2905            _0xau1v(imageUrl);
2906      }
2907      
2908
2909  function formatStockLabel(n){n=parseInt(n||0,10)||0;return(n>10)?'10+':String(n)}
2910  function 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(_){}}
2911
2912      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)}
2913
2914      function applyVariant(v, focusImage = true){
2915          const elCur  = document.getElementById('pd-price-current');
2916          const elOri  = document.getElementById('pd-price-original');
2917          const elDisc = document.getElementById('pd-discount-badge');
2918          const elSku  = document.getElementById('pd-sku');
2919          const elStock= document.getElementById('pd-stock-badge');
2920          const elQty  = document.getElementById('qty');
2921          const btnAdd = document.getElementById('btn-add-cart');
2922          const btnBuy = document.getElementById('btn-buy');
2923          const hidVar = document.getElementById('pd-variant-id');
2924
2925          const mfCart= document.getElementById('mf-cart');
2926          const mfBuy = document.getElementById('mf-buy');
2927          const fab = document.getElementById('pd-mobile-fab');
2928
2929          if (hidVar) hidVar.value = v ? v.id : 0;
2930          if (elCur) elCur.textContent = rupiah(v ? v.final : 0);
2931          if (elSku && v && v.sku) elSku.textContent = v.sku;
2932
2933          if (v && v.ori > v.final) {
2934              if (elOri) { elOri.style.display='inline'; elOri.textContent = rupiah(v.ori); }
2935              if (elDisc) { elDisc.style.display='inline'; elDisc.textContent = '-' + (v.disc||0) + '%'; }
2936          } else {
2937              if (elOri) elOri.style.display='none';
2938              if (elDisc) elDisc.style.display='none';
2939          }
2940
2941          const stock = v ? (parseInt(v.stock||0,10)||0) : 0;
2942          let effectiveStock = stock;
2943          let isActivePreorder = false;
2944          if (window.isPreorderProduct && v && 'preorder_remaining' in v && v.preorder_remaining !== null) {
2945              effectiveStock = parseInt(v.preorder_remaining, 10);
2946              if (isNaN(effectiveStock)) effectiveStock = 0;
2947              isActivePreorder = true;
2948          }
2949          if (elStock){
2950              elStock.classList.remove('in','out');
2951              if (effectiveStock>0){ 
2952                  elStock.classList.add('in'); 
2953                  elStock.textContent = IS_DIGITAL ? 'Tersedia' : (isActivePreorder ? 'Sisa Slot: ' + effectiveStock : 'Stok: ' + formatStockLabel(effectiveStock)); 
2954              } else { 
2955                  elStock.classList.add('out'); 
2956                  elStock.textContent = 'Habis'; 
2957              }
2958          }
2959          if (elQty){
2960              elQty.max = String(effectiveStock>0?effectiveStock:0);
2961              if (effectiveStock<=0) { elQty.value = '0'; elQty.disabled = true; }
2962              else { if (parseInt(elQty.value||'1',10) < 1) elQty.value='1'; elQty.disabled=false; }
2963          }
2964          
2965          const shouldDisable = !(v && effectiveStock>0);
2966          const updateButtons = () => {
2967              const btnAddCart = document.getElementById('btn-add-cart');
2968              const btnBuyNow = document.getElementById('btn-buy');
2969              const mobileCart = document.getElementById('mf-cart');
2970              const mobileBuy = document.getElementById('mf-buy');
2971              [btnAddCart, btnBuyNow, mobileCart, mobileBuy].forEac
2971h(btn => {
2972                  if (!btn) return;
2973                  if (shouldDisable) {
2974                      btn.disabled = true;
2975                      btn.setAttribute('disabled', 'disabled');
2976                      btn.classList.add('stock-disabled');
2977                      btn.setAttribute('data-stock-blocked', 'true');
2978                      btn.setAttribute('data-stock-reason', window.isPreorderProduct ? 'Pre-order habis' : 'Stok habis');
2979                  } else {
2980                      btn.disabled = false;
2981                      btn.removeAttribute('disabled');
2982                      btn.classList.remove('stock-disabled');
2983                      btn.removeAttribute('data-stock-blocked');
2984                      btn.removeAttribute('data-stock-reason');
2985                  }
2986              });
2987          };
2988          updateButtons();
2989          setTimeout(updateButtons, 10);
2990          setTimeout(updateButtons, 50);
2991          setTimeout(updateButtons, 100);
2992          if (mfBuy && v) {
2993              const voucherBtn = document.getElementById('btn-buy-voucher');
2994              const voucherCode = fab ? fab.dataset.voucherCode : '';
2995              let voucherDiscount = 0;
2996              
2997              if (voucherBtn && voucherCode) {
2998                  const vType = voucherBtn.dataset.voucherType;
2999                  const vValue = parseFloat(voucherBtn.dataset.voucherValue) || 0;
3000                  const vMax = parseFloat(voucherBtn.dataset.voucherMax) || 0;
3001                  const finalPrice = v.final || 0;
3002                  if (vType && vValue > 0) {
3003                      voucherDiscount = calcVoucherDisc(vType, vValue, finalPrice, vMax);
3004                      if (fab) fab.dataset.voucherValue = voucherDiscount.toString();
3005                  }
3006              }
3007              
3008              const finalPrice = v.final || 0;
3009              const textEl = mfBuy.querySelector('.mf-buy-text');
3010              const priceEl = mfBuy.querySelector('.mf-buy-price');
3011              
3012              if (effectiveStock > 0) {
3013                      if (IS_PREORDER) {
3014                          if (textEl) textEl.textContent = 'Pre Order Sekarang';
3015                          if (priceEl) priceEl.textContent = rupiah(finalPrice);
3016                      } else if (voucherCode && voucherDiscount > 0) {
3017                          if (textEl) textEl.textContent = 'Beli dengan Voucher';
3018                          if (priceEl) priceEl.textContent = rupiah(Math.max(0, finalPrice - voucherDiscount));
3019                      } else {
3020                          if (textEl) textEl.textContent = 'Beli Sekarang';
3021                          if (priceEl) priceEl.textContent = rupiah(finalPrice);
3022                      }
3023                  } else {
3024                      if (textEl) textEl.textContent = 'Stok Habis';
3025                      if (priceEl) priceEl.textContent = rupiah(finalPrice);
3026                  }
3027              }
3028          
3029          const isMobile = window.initMobile ?? 0;
3030          if (window.instSetBasePrice) window.instSetBasePrice(v ? (isMobile == '1' ? v.ori : v.final) : 0);
3031          if (window.updateSoldBySku) window.updateSoldBySku(v.sku);
3032          updateBranchPopover(v);
3033          if (v && v.image_url && focusImage) focusGalleryByUrl(v.image_url);
3034          if (v) {
3035              window.dispatchEvent(new CustomEvent('pd-variant-changed', {
3036                  detail: {
3037                      price: v.final,
3038                      originalPrice: v.ori,
3039                      discount: v.disc,
3040                      stock: effectiveStock,
3041                      sku: v.sku,
3042                      variant_id: v.id
3043                  }
3044              }));
3045              
3046              const encodedHash = encodeVariantHash(v.id);
3047              if (encodedHash && window.history && window.history.replaceState) {
3048                  const newHash = '#v=' + encodedHash;
3049                  const newUrl = window.location.pathname + window.location.search + newHash;
3050                  window.history.replaceState(null, '', newUrl);
3051              }
3052          }
3053      }
3054
3055      let sel = readSelection();
3056      if (autoFillMissing(sel)) sel = readSelection();
3057
3058      let v = findVariant(sel);
3059      if (!v) {
3060          const candidates = variants.filter(variant=>{
3061              return attrOrder.every(a=>{
3062                  if (!sel[a]) return true;
3063                  return variant.attrs[a] === sel[a];
3064              });
3065          });
3066          if (candidates.length >= 1) {
3067              v = candidates[0];
3068              attrOrder.forEach(a=> sel[a] = v.attrs[a]);
3069              attrOrder.forEach(a=>{
3070                  const val = sel[a];
3071                  const input = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio][value="${CSS.escape(val)}"]`);
3072                  if (input) input.checked = true;
3073              });
3074          }
3075      }
3076
3077      const initSel = readSelection();
3078      const initVar = findVariant(initSel) || variants[0] || null;
3079      if (document.readyState === 'loading') {
3080          document.addEventListener('DOMContentLoaded', () => applyVariant(initVar, false));
3081      } else {
3082          applyVariant(initVar, false);
3083      }
3084      
3085  function updateSummary(sel){Object.entries(sel).forEach(([a,val])=>{const el=document.getElementById('vs-'+a);if(el)el.textContent=val||'-'})}
3086      function refreshOptions(sel){
3087          attrOrder.forEach(a=>{
3088              const group = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"]`);
3089              if (!group) return;
3090              const chips = group.querySelectorAll('.v-chip');
3091              chips.forEach(ch=>{
3092                  const val = ch.getAttribute('data-value');
3093                  const possible = variants.some(v=>{
3094                      if (v.attrs[a] !== val) return false;
3095                      for (const a2 of attrOrder) {
3096                          if (a2 === a) continue;
3097                          if (sel[a2] && v.attrs[a2] !== sel[a2]) return false;
3098                      }
3099                      return true;
3100                  });
3101                  const input = ch.querySelector('input[type=radio]');
3102                  const disabled = !possible;
3103                  if (input) input.disabled = disabled;
3104                  ch.classList.toggle('disabled', disabled);
3105
3106                  let candidateVariant = null;
3107                  if (possible) {
3108                      candidateVariant = variants.find(v=>{
3109                          if (v.attrs[a] !== val) return false;
3110                          for (const a2 of attrOrder) {
3111                              if (a2 === a) continue;
3112                              if (sel[a2] && v.attrs[a2] !== sel[a2]) return false;
3113                          }
3114                          return true;
3115                      });
3116                  }
3117                  const outOfStock = candidateVariant ? (window.isPreorderProduct && candidateVariant.preorder_remaining !== null ? candidateVariant.preorder_remaining <= 0 : candidateVariant.stock <= 0) : false;
3118                  ch.classList.toggle('out', !disabled && outOfStock);
3119                  const badge = ch.querySelector('.chip-badge');
3120                  if (badge) badge.hidden = !(candidateVariant && outOfStock);
3121              });
3122              group.querySelectorAll('.v-chip').forEach(ch=>{
3123                  const input = ch.querySelector('input[type=radio]');
3124                  ch.classList.toggle('selected', input && input.checked);
3125              });
3126          });
3127      }
3128      updateSummary(sel);
3129      refreshOptions(sel);
3130      document.querySelectorAll('.v-chip').forEach(chip=>{const input=chip.querySelector('input[type=radio]');if(input&&input.checked){chip.classList.add('selected');}});
3131
3132      const container = document.getElementById('pd-variants');
3133      container && container.addEventListener('change', function(ev){
3134          const radio = ev.target.closest('input[type=radio]');
3135          if (!radio) return;
3136          sel = readSelection();
3137          if (autoFillMissing(sel)) sel = readSelection();
3138          const chosen = findVariant(sel);
3139          applyVariant(chosen || null, true);
3140          
3141          updateSummary(sel);
3142          refreshOptions(sel);
3143      });
3144      
3145  window.applyVariant=applyVariant;
3146  })();
3147
3148  (function cleanBrokenDescImages(){
3149      const containers = [
3150          document.querySelector('.pd-full-desc-body'),
3151          document.querySelector('.pd-short-desc')
3152      ].filter(Boolean);
3153
3154      containers.forEach(root => {
3155          const imgs = root.querySelectorAll('img');
3156          imgs.forEach(img => {
3157              if (img.complete && img.naturalWidth === 0) {
3158                  img.remove();
3159                  return;
3160              }
3161              img.addEventListener('error', () => {
3162                  img.remove();
3163              }, { once:true });
3164          });
3165      });
3166  })();
3167
3168  /* ====== Scroll To Top ====== */
3169  (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'})})})();
3170
3171  /* Format stok 10+ */
3172  function _0xk67l(n){n=parseInt(n||0,10)||0;return n>10?'10+':String(n)}
3173
3174  /* Toggle popover stok per cabang */
3175  (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=''}}
3176  function 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()}
3177  a.addEventListener('click',function(h){h.preventDefault();b.classList.contains('show')?f():e()});if(c)c.addEventListener('click',f)})();
3178
3179  /* ===== Share Product Modal ===== */
3180  (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://slotvipbogor.link/",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
3180ncodeURIComponent(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:"1S83N0880RID"})}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:"1S83N0880RID"})}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)}})();
3181
3182  /* ===== Embedding variants (server → client) ===== */
3183  (function(){
3184    window.__PD_VARIANTS_WITH_BRANCH__ = [];
3185  })();
3186
3187  /* ===== Helper: update angka popover ===== */
3188  function updateStockPopoverForVariant(v){
3189    try{
3190      const elMeg = document.getElementById('sp-qty-meg');
3191      const elMdf = document.getElementById('sp-qty-mdf');
3192      const elBda = document.getElementById('sp-qty-bda');
3193
3194      if (typeof v?.smm === 'number' && elMeg) elMeg.textContent = formatStockLabel(Math.max(0, v.smm|0));
3195      if (typeof v?.smf === 'number' && elMdf) elMdf.textContent = formatStockLabel(Math.max(0, v.smf|0));
3196      if (typeof v?.sba === 'number' && elBda) elBda.textContent = formatStockLabel(Math.max(0, v.sba|0));
3197    }catch(_){}
3198  }
3199
3200  /* ===== applyVariant: 10+ dan update popover ===== */
3201  (function patchApplyVariant(){
3202    if (typeof applyVariant !== 'function') return;
3203    const original = applyVariant;
3204    window.applyVariant = function(v){
3205      original(v);
3206      
3207      try {
3208        const elStock = document.getElementById('pd-stock-badge');
3209        if (elStock){
3210          let txt = elStock.textContent || '';
3211          let m = txt.match(/\d+/);
3212          if (m) {
3213            const n = parseInt(m[0]||'0',10)||0;
3214            elStock.textContent = (n>0) ? ('Stok: ' + formatStockLabel(n)) : 'Habis';
3215          }
3216        }
3217      } catch(_){}
3218  if(window.__PD_VARIANTS_WITH_BRANCH__&&v){const vv=window.__PD_VARIANTS_WITH_BRANCH__.find(x=>x.id===v.id)||v;updateStockPopoverForVariant(vv)}
3219    };
3220  })();
3221
3222  (function initCurrentVariantBranch(){
3223    const list = window.__PD_VARIANTS_WITH_BRANCH__ || [];
3224    if (!list.length) return;
3225    const hid = document.getElementById('pd-variant-id');
3226    const vid = hid ? parseInt(hid.value||'0',10) : 0;
3227    const current = list.find(x => x.id === vid) || list[0] || null;
3228    if (current) updateStockPopoverForVariant(current);
3229  })();
3230
3231  (function(){
3232      if (!window.ga4Ecomm) return;
3233      const catSegs = ["Komputer & Laptop","Laptop","Gaming"];
3234      window.ga4Ecomm.viewItem({
3235        currency: 'IDR',
3236        value: 20789000,
3237        item_id: "1S83N0880RID",
3238        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",
3239        item_brand: "Lenovo ",
3240        item_category: catSegs && catSegs.length ? catSegs.join(' / ') : ''
3241      });
3242    })();
3243    
3244  (function patchApplyVariantFocus(){
3245    if (typeof applyVariant !== 'function') return;
3246    const original = applyVariant;
3247    window.applyVariant = function(v, focusImage = true){
3248      
3249      original(v, focusImage);
3250      
3251      if (focusImage && v && v.image_url) {
3252        _0xau1v(v.image_url);
3253      }
3254    };
3255  })();
3256
3257  (function() {
3258    var soldMap = [];
3259    var soldTotalLabel = "Terjual 2";
3260
3261    function formatSoldLabel(qty) {
3262      if (qty >= 1000000) {
3263        var v = Math.floor((qty / 100000) ) / 10;
3264        return 'Terjual ' + (String(v).replace('.', ',')) + 'jt+';
3265      }
3266      if (qty >= 1000) {
3267        var v2 = Math.floor((qty / 100) ) / 10;
3268        return 'Terjual ' + (String(v2).replace('.', ',')) + 'rb+';
3269      }
3270      if (qty >= 100) {
3271        var v2 = Math.floor((qty / 100) ) * 100;
3272        return 'Terjual ' + (String(v2).replace('.', ',')) + '+';
3273      }
3274      if (qty >= 10) {
3275        var v2 = Math.floor((qty / 10) ) * 10;
3276        return 'Terjual ' + (String(v2).replace('.', ',')) + '+';
3277      }
3278      return 'Terjual ' + (qty.toLocaleString('id-ID'));
3279    }
3280
3281    function updateSoldLabel(labelText) {
3282      var el = document.querySelector('#pd-sold-inline, [data-role="sold-chip"]');
3283      if (el) el.textContent = labelText;
3284    }
3285
3286    window.updateSoldBySku = function(sku) {
3287      if (!sku || typeof sku !== 'string') {
3288        updateSoldLabel(soldTotalLabel);
3289        return;
3290      }
3291      var qty = soldMap[sku] || 0;
3292      updateSoldLabel(formatSoldLabel(qty));
3293    };
3294
3295      updateSoldLabel(soldTotalLabel);
3296    })();
3297
3298  (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)}})}
3299  function 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\/Ecl
3299ipse 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}
3300  const 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}});function formatRupiah(n){return'Rp'+Math.floor(n).toLocaleString('id-ID')}})();
3301
3302  (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})}
3302const m=document.getElementById('voucher-detail-modal');const mc=document.getElementById('voucher-modal-close');const ma=document.getElementById('voucher-modal-cancel');const mcp=document.getElementById('voucher-modal-copy');if(m){const bb=document.querySelectorAll('.pdv-badge-btn');bb.forEach(function(btn){btn.addEventListener('click',function(){if(btn.disabled)return;const c=btn.getAttribute('data-voucher-code');const nm=btn.getAttribute('data-voucher-name');const dl=btn.getAttribute('data-discount-label');const bl=btn.getAttribute('data-badge-label');const mp=parseInt(btn.getAttribute('data-min-purchase'));const md=parseInt(btn.getAttribute('data-max-discount'));const vu=btn.getAttribute('data-valid-until');document.getElementById('voucher-modal-badge').innerHTML='<span class="vmb-value">'+dl+'</span><span class="vmb-label">'+bl+'</span>';document.getElementById('voucher-modal-code').textContent=c;document.getElementById('voucher-modal-name').textContent=nm;const me=document.getElementById('voucher-modal-min');if(mp>0){me.style.display='';document.getElementById('voucher-modal-min-val').textContent=fr(mp)}else{me.style.display='none'}const xe=document.getElementById('voucher-modal-max');if(md>0){xe.style.display='';document.getElementById('voucher-modal-max-val').textContent=fr(md)}else{xe.style.display='none'}if(vu){const d=new Date(vu);const ft=d.toLocaleDateString('id-ID',{day:'numeric',month:'long',year:'numeric',hour:'2-digit',minute:'2-digit'});document.getElementById('voucher-modal-valid-val').textContent=ft}mcp.setAttribute('data-code',c);m.classList.add('show');document.body.style.overflow='hidden'})});function cm(){m.classList.remove('show');document.body.style.overflow=''}if(mc)mc.addEventListener('click',cm);if(ma)ma.addEventListener('click',cm);m.addEventListener('click',function(e){if(e.target===m)cm()});if(mcp){mcp.addEventListener('click',function(){const c=mcp.getAttribute('data-code');if(!c)return;if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(c).then(function(){smc()}).catch(function(err){fc(c)})}else{fc(c)}})}}const b=document.querySelectorAll('.pdv-min-copy');b.forEach(function(btn){btn.addEventListener('click',function(){if(btn.disabled)return;const code=btn.getAttribute('data-code');if(!code)return;if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(code).then(function(){sc(btn)}).catch(function(err){fc(code,btn)})}else{fc(code,btn)}})});function fc(text,btn){const tx=document.createElement('textarea');tx.value=text;tx.style.position='fixed';tx.style.opacity='0';document.body.appendChild(tx);tx.select();try{document.execCommand('copy');if(btn)sc(btn);else smc()}catch(err){}document.body.removeChild(tx)}function sc(btn){const o=btn.textContent;btn.classList.add('copied');btn.textContent='✓ Tersalin';setTimeout(function(){btn.classList.remove('copied');btn.textContent=o},2000)}function smc(){const o=mcp.textContent;mcp.textContent='✓ Kode Tersalin';mcp.style.background='#c52222';setTimeout(function(){mcp.textContent=o;mcp.style.background=''},2000)}function fr(a){return'Rp'+Math.floor(a).toLocaleString('id-ID')}})();
3303  </script>
3303
3304  
3304<script nonce="se3iyzEHMc9FQEB4wSyd0w==">
3305  window.PD_ID=325;window.PD_NAME=_0x3c4d;window.PD_SKU=_0x5e6f;window.PD_CATEGORY_PATH="Komputer & Laptop/Laptop/Gaming";window.PD_BEST_VOUCHER=null;
3306  window.IS_DIGITAL=IS_DIGITAL;
3307  window.isPreorderProduct=false;
3308  window.PD_PREORDER_DATA=null;
3309  </script>
3309
3310
3311  
3311<script src="https://plazaitdotid.pages.dev/assets/js/pd-lightbox.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
3311
3312  
3312<script src="https://plazaitdotid.pages.dev/assets/js/cart.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
3312
3313  
3313<script src="https://plazaitdotid.pages.dev/assets/js/stock-validator-vanilla.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
3313
3314  
3314<script src="https://plazaitdotid.pages.dev/assets/js/pd-addtocart.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
3314
3315  
3315<script src="https://plazaitdotid.pages.dev/assets/js/pd-buynow.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
3315
3316  
3316<script src="https://plazaitdotid.pages.dev/assets/js/pd-voucher-recalc.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
3316
3317  
3317<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>
3317
3318
3319  
3319<script nonce="se3iyzEHMc9FQEB4wSyd0w==">
3320  (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'}})}}
3321
3322  function _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()}})();
3323
3324  (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()}})})();
3325  </script>
3325<footer class="site-footer footer-compact variant-stripes" role="contentinfo">
3326    <div class="ft-top ft-collapsible" id="ftTop">
3327      <div class="container ft-grid">
3328
3329        <div class="ft-col ft-help">
3330          <h4 class="ft-title">Butuh Bantuan?</h4>
3331          <p class="ft-desc">Hubungi kami melalui Official WhatsApp interaktif sekarang.</p>
3332          <a class="ft-wa-btn" href="#" target="_blank" rel="nofollow noopener">
3333            <span class="ico" aria-hidden="true">
3334              <svg viewBox="0 0 24 24" width="18" height="18"><path fill="#d32525" d="M12.04 2c-5.52 0-10 4.43-10 9.9 0 1.75.47 3.45 1.38 4.94L2 22l5.3-1.38c1.43.78 3.05 1.19 4.7 1.19 5.52 0 10-4.43 10-9.9S17.56 2 12.04 2Zm5.86 13.9c-.25.7-1.23 1.28-1.7 1.33-.45.06-1.02.08-1.65-.1-.38-.12-.88-.29-1.52-.56-2.66-1.15-4.4-3.83-4.53-4.01-.13-.18-1.08-1.44-1.08-2.75 0-1.31.68-1.95.92-2.22.25-.27.54-.33.72-.33.18 0 .36.01.52.01.17 0 .39-.06.62.47.25.6.85 2.07.92 2.22.07.15.12.33.02.53-.1.2-.15.33-.3.5-.15.17-.32.39-.46.53-.15.15-.3.31-.13.6.18.3.8 1.31 1.73 2.12 1.19 1.03 2.17 1.36 2.48 1.5.31.14.49.12.67-.07.18-.18.77-.82.98-1.1.21-.27.42-.23.7-.14.27.09 1.72.81 2.02.95.3.14.5.22.58.35.08.13.08.72-.17 1.42Z"/></svg>
3335            </span>
3336            Kirim Pesan
3337          </a>
3338
3339          <p class="ft-desc sm-gap">Ikuti kami:</p>
3340          <div class="ft-social">
3341            <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>
3342            <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
3342V7.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>
3343            <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>
3344          </div>
3345        </div>
3346
3347              <!-- Collapsible Content Wrapper (Non-Homepage Only) -->
3348        <div class="ft-collapsible-content" id="ftCollapsible">
3349        
3350        <div class="ft-col">
3351          <h4 class="ft-title">Tentang SLOTVIP</h4>
3352          <ul class="ft-links">
3353            <li><a href="/tentang-kami">Tentang Kami</a></li>
3354            <li><a href="/kontak-kami">Kontak Kami</a></li>
3355            <li><a href="/lokasi-toko">Lokasi Toko</a></li>
3356            <li><a href="/faq">FAQ</a></li>
3357          </ul>
3358          <div class="ft-address">
3359            <p class="company">PT PRIMAJAYA MULTI TECHNOLOGY</p>
3360                        <p>JL. Asia Raya Blok BB No. 12-A, Kel. Sukaramai II, Kec.</p>
3361                        <p>Medan Area, Kota Medan, Sumatera Utara, 20216</p>
3362                    </div>
3363        </div>
3364
3365        <div class="ft-col">
3366          <h4 class="ft-title">Informasi</h4>
3367          <ul class="ft-links">
3368            <li><a href="/syarat-dan-ketentuan">Syarat &amp; Ketentuan</a></li>
3369            <li><a href="/kebijakan-privasi">Kebijakan Privasi</a></li>
3370            <li><a href="/kebijakan-cookie">Kebijakan Cookie</a></li>
3371            <li><a href="/pengiriman-dan-pengembalian">Pengiriman &amp; Pengembalian</a></li>
3372            <li><a href="/pembayaran-dan-cicilan">Pembayaran &amp; Cicilan</a></li>
3373            <li><a href="/garansi-dan-layanan">Garansi &amp; Layanan</a></li>
3374          </ul>
3375
3376          <div class="ft-payments payments-small" aria-label="Metode Pembayaran">
3377            <div class="pay-row">
3378              <img src="https://plazaitdotid.pages.dev/assets/img/payments/mandiri.svg" alt="Mandiri" loading="lazy">
3379              <img src="https://plazaitdotid.pages.dev/assets/img/payments/bni.svg" alt="BNI" loading="lazy">
3380              <img src="https://plazaitdotid.pages.dev/assets/img/payments/bri.svg" alt="BRI" loading="lazy">
3381              <img src="https://plazaitdotid.pages.dev/assets/img/payments/bsi.svg" alt="BSI" loading="lazy">
3382              <img src="https://plazaitdotid.pages.dev/assets/img/payments/cimb-logo.svg" alt="ShopeePay" loading="lazy">
3383            </div>
3384          </div>
3385        </div>
3386
3387              </div>
3388        <!-- End Collapsible Content -->
3389        
3390        <!-- Expand Button (Mobile Only) -->
3391        <button class="ft-expand-btn" id="ftExpandBtn" aria-label="Lihat semua informasi footer">
3392          <span class="expand-text">Selengkapnya</span>
3393          <svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
3394            <path d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"/>
3395          </svg>
3396        </button>
3397        
3398      </div>
3399    </div>
3400    <div class="ft-bottom">
3401      <div class="container ft-bottom-inner">
3402        <div class="ft-copy">
3403          <span>TISU-AJAIB &copy; <span id="yearNow">2026</span></span>
3404          <span>PT TISU-AJAIB. All rights reserved.</span>
3405        </div>
3406      </div>
3407    </div>
3408<style>
3409  :root {
3410    --sd-black: #07040c;
3411    --sd-dark: #12071b;
3412    --sd-panel: #1b0d28;
3413    --sd-purple: #f80000;
3414    --sd-violet: #f80000;
3415    --sd-pink: #f80000;
3416    --sd-cyan: #f80000;
3417    --sd-white: #ffffff;
3418    --sd-text: #dcd2e6;
3419    --blade-cut: 10px;
3420  }
3421
3422  * {
3423    box-sizing: border-box;
3424  }
3425
3426  body {
3427    margin: 0;
3428    padding: 0;
3429    font-family: "Segoe UI", Arial, sans-serif;
3430    background: transparent;
3431    color: var(--sd-text);
3432  }
3433
3434  /* =========================
3435     POPUP OVERLAY
3436  ========================= */
3437  .popup-overlay {
3438    position: fixed;
3439    inset: 0;
3440    width: 100vw;
3441    height: 100vh;
3442
3443    display: flex;
3444    justify-content: center;
3445    align-items: center;
3446
3447    padding: 18px;
3448    background: rgba(3, 1, 7, 0.76);
3449    backdrop-filter: blur(3px);
3450    -webkit-backdrop-filter: blur(3px);
3451
3452    z-index: 9999;
3453  }
3454
3455  /* =========================
3456     POPUP CONTAINER
3457  ========================= */
3458  .popup-container {
3459    position: relative;
3460    width: 100%;
3461    max-width: 420px;
3462    overflow: hidden;
3463
3464    padding-bottom: 18px;
3465
3466    color: var(--sd-text);
3467    text-align: center;
3468
3469    background:
3470      radial-gradient(
3471        circle at top right,
3472        rgba(255, 60, 166, 0.16),
3473        transparent 34%
3474      ),
3475      radial-gradient(
3476        circle at bottom left,
3477        rgba(32, 231, 242, 0.11),
3478        transparent 38%
3479      ),
3480      linear-gradient(
3481        145deg,
3482        #08030d 0%,
3483        #170923 52%,
3484        #09040f 100%
3485      );
3486
3487    border: 1px solid rgba(139, 44, 255, 0.58);
3488    border-radius: 10px 26px 10px 26px;
3489
3490    box-shadow:
3491      0 22px 55px rgba(0, 0, 0, 0.72),
3492      0 0 18px rgba(139, 44, 255, 0.34),
3493      0 0 32px rgba(255, 60, 166, 0.14);
3494
3495    animation: streetPopupIn 0.45s ease-out;
3496  }
3497
3498  /* Tekstur graffiti ringan */
3499  .popup-container::before {
3500    content: "";
3501    position: absolute;
3502    inset: 0;
3503    pointer-events: none;
3504    z-index: 1;
3505
3506    background:
3507      repeating-linear-gradient(
3508        -35deg,
3509        transparent 0,
3510        transparent 14px,
3511        rgba(255, 255, 255, 0.025) 15px,
3512        rgba(32, 231, 242, 0.035) 17px,
3513        transparent 19px
3514      );
3515
3516    opacity: 0.8;
3517  }
3518
3519  /* Aksen neon di sisi kiri */
3520  .popup-container::after {
3521    content: "";
3522    position: absolute;
3523    top: 0;
3524    left: 0;
3525
3526    width: 5px;
3527    height: 100%;
3528    z-index: 3;
3529
3530    background: linear-gradient(
3531      to bottom,
3532      var(--sd-pink),
3533      var(--sd-purple),
3534      var(--sd-cyan)
3535    );
3536
3537    box-shadow:
3538      0 0 10px rgba(255, 60, 166, 0.65),
3539      0 0 16px rgba(32, 231, 242, 0.35);
3540  }
3541
3542  @keyframes streetPopupIn {
3543    from {
3544      opacity: 0;
3545      transform: translateY(18px) scale(0.96);
3546    }
3547
3548    to {
3549      opacity: 1;
3550      transform: translateY(0) scale(1);
3551    }
3552  }
3553
3554  /* =========================
3555     IMAGE
3556  ========================= */
3557  .popup-image {
3558    position: relative;
3559    z-index: 2;
3560
3561    display: block;
3562    width: 100%;
3563    height: auto;
3564
3565    border-bottom: 1px solid rgba(32, 231, 242, 0.2);
3566  }
3567
3568  /* =========================
3569     BUTTON WRAPPER
3570  ========================= */
3571  .clk-btn-sgp {
3572    position: relative;
3573    z-index: 3;
3574
3575    width: 100%;
3576    display: grid;
3577    grid-template-columns: repeat(2, minmax(0, 1fr));
3578    gap: 12px;
3579
3580    padding: 18px;
3581    font-family: "Segoe UI", Arial, sans-serif;
3582  }
3583
3584  .clk-btn-sgp a {
3585    position: relative;
3586    overflow: hidden;
3587
3588    display: flex;
3589    align-items: center;
3590    justify-content: center;
3591
3592    min-height: 50px;
3593    padding: 13px 12px;
3594
3595    color: var(--sd-white);
3596    text-align: center;
3597    text-decoration: none;
3598    text-transform: uppercase;
3599
3600    font-size: 13px;
3601    font-weight: 900;
3602    letter-spacing: 1.2px;
3603
3604    border-radius: 7px 15px 7px 15px;
3605    clip-path: polygon(
3606      var(--blade-cut) 0,
3607      100% 0,
3608      100% calc(100% - var(--blade-cut)),
3609      calc(100% - var(--blade-cut)) 100%,
3610      0 100%,
3611      0 var(--blade-cut)
3612    );
3613
3614    transition:
3615      transform 0.22s ease,
3616      border-color 0.22s ease,
3617      box-shadow 0.22s ease,
3618      filter 0.22s ease;
3619  }
3620
3621  .clk-btn-sgp a::after {
3622    content: "";
3623    position: absolute;
3624    inset: 0;
3625    pointer-events: none;
3626
3627    background: linear-gradient(
3628      110deg,
3629      transparent 25%,
3630      rgba(255, 255, 255, 0.16) 48%,
3631      transparent 70%
3632    );
3633
3634    transform: translateX(-140%);
3635    transition: transform 0.45s ease;
3636  }
3637
3638  .clk-btn-sgp a:hover::after {
3639    transform: translateX(140%);
3640  }
3641
3642  .clk-btn-sgp a:hover {
3643    transform: translateY(-3px);
3644    filter: brightness(1.12);
3645  }
3646
3647  /* =========================
3648     LOGIN BUTTON
3649  ========================= */
3650  .login {
3651    color: var(--sd-cyan) !important;
3652
3653    background:
3654      linear-gradient(
3655        145deg,
3656        rgba(32, 231, 242, 0.08),
3657        rgba(139, 44, 255, 0.14)
3658      ),
3659      #0a0710;
3660
3661    border: 1px solid rgba(32, 231, 242, 0.65);
3662
3663    box-shadow:
3664      0 7px 16px rgba(0, 0, 0, 0.42),
3665      inset 0 0 10px rgba(32, 231, 242, 0.05);
3666  }
3667
3668  .login:hover {
3669    color: #ffffff !important;
3670    border-color: var(--sd-cyan);
3671
3672    box-shadow:
3673      0 10px 22px rgba(0, 0, 0, 0.5),
3674      0 0 13px rgba(32, 231, 242, 0.26);
3675  }
3676
3677  /* =========================
3678     REGISTER BUTTON
3679  ========================= */
3680  .register {
3681    color: #ffffff !important;
3682
3683    background: linear-gradient(
3684      135deg,
3685      var(--sd-purple),
3686      var(--sd-pink)
3687    );
3688
3689    border: 1px solid rgba(255, 255, 255, 0.38);
3690
3691    box-shadow:
3692      0 7px 16px rgba(0, 0, 0, 0.42),
3693      0 0 10px rgba(255, 60, 166, 0.18);
3694  }
3695
3696  .register:hover {
3697    color: #ffffff !important;
3698
3699    background: linear-gradient(
3700      135deg,
3701      var(--sd-pink),
3702      var(--sd-violet)
3703    );
3704
3705    border-color: #ffffff;
3706
3707    box-shadow:
3708      0 10px 22px rgba(0, 0, 0, 0.5),
3709      0 0 14px rgba(255, 60, 166, 0.32);
3710  }
3711
3712  .clk-btn-sgp a span {
3713    position: relative;
3714    z-index: 2;
3715  }
3716
3717  /* =========================
3718     INFO TABLE
3719  ========================= */
3720  .info-table {
3721    position: relative;
3722    z-index: 3;
3723
3724    width: calc(100% - 36px);
3725    margin: 2px auto 18px;
3726
3727    color: var(--sd-text);
3728    background: rgba(13, 7, 20, 0.9);
3729
3730    border-collapse: separate;
3731    border-spacing: 0;
3732    overflow: hidden;
3733
3734    border: 1px solid rgba(139, 44, 255, 0.25);
3735    border-radius: 12px;
3736
3737    font-size: 13px;
3738    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.32);
3739  }
3740
3741  .info-table th {
3742    padding: 13px 10px;
3743
3744    color: #ffffff;
3745    background: linear-gradient(
3746      135deg,
3747      var(--sd-purple),
3748      var(--sd-pink)
3749    );
3750
3751    border: 0;
3752
3753    font-size: 13px;
3754    font-weight: 900;
3755    letter-spacing: 0.8px;
3756    text-transform: uppercase;
3757
3758    text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.35);
3759  }
3760
3761  .info-table td {
3762    padding: 11px 12px;
3763
3764    color: var(--sd-text);
3765    text-align: left;
3766
3767    border-bottom: 1px solid rgba(32, 231, 242, 0.1);
3768  }
3769
3770  .info-table tr:last-child td {
3771    border-bottom: none;
3772  }
3773
3774  .info-table tr:hover td {
3775    background: rgba(139, 44, 255, 0.07);
3776  }
3777
3778  /* =========================
3779     FOOTER
3780  ========================= */
3781  .popup-footer {
3782    position: relative;
3783    z-index: 3;
3784
3785    padding: 4px 20px 8px;
3786
3787    color: #bfb3ca;
3788    font-size: 12px;
3789    line-height: 1.6;
3790    text-align: center;
3791  }
3792
3793  /* =========================
3794     DECORATIVE BORDER
3795  ========================= */
3796  .luxury-border {
3797    position: absolute;
3798    inset: 9px;
3799    z-index: 4;
3800    pointer-events: none;
3801
3802    border: 1px solid rgba(32, 231, 242, 0.08);
3803    border-radius: 7px 20px 7px 20px;
3804  }
3805
3806  /* =========================
3807     PARTICLE
3808  ========================= */
3809  .gold-particle {
3810    display: none;
3811  }
3812
3813  /* =========================
3814     CLOSE BUTTON
3815  ========================= */
3816  .close-btn {
3817    position: absolute;
3818    top: 12px;
3819    right: 12px;
3820    z-index: 10;
3821
3822    width: 34px;
3823    height: 34px;
3824
3825    display: flex;
3826    align-items: center;
3827    justify-content: center;
3828
3829    cursor: pointer;
3830
3831    background: rgba(8, 4, 13, 0.82);
3832    border: 1px solid rgba(255, 60, 166, 0.58);
3833    border-radius: 9px 4px 9px 4px;
3834
3835    box-shadow:
3836      0 0 10px rgba(255, 60, 166, 0.18);
3837
3838    transition:
3839      transform 0.22s ease,
3840      background 0.22s ease,
3841      border-color 0.22s ease;
3842  }
3843
3844  .close-btn:hover {
3845    transform: rotate(90deg);
3846    background: var(--sd-pink);
3847    border-color: #ffffff;
3848  }
3849
3850  .close-btn::before,
3851  .close-btn::after {
3852    content: "";
3853    position: absolute;
3854
3855    width: 16px;
3856    height: 2px;
3857
3858    background: #ffffff;
3859    border-radius: 3px;
3860  }
3861
3862  .close-btn::before {
3863    transform: rotate(45deg);
3864  }
3865
3866  .close-btn::after {
3867    transform: rotate(-45deg);
3868  }
3869
3870  /* =========================
3871     RESPONSIVE
3872  ========================= */
3873  @media (max-width: 480px) {
3874    .popup-overlay {
3875      padding: 12px;
3876    }
3877
3878    .popup-container {
3879      max-width: 355px;
3880      border-radius: 8px 20px 8px 20px;
3881    }
3882
3883    .clk-btn-sgp {
3884      grid-template-columns: 1fr;
3885      gap: 10px;
3886      padding: 14px;
3887    }
3888
3889    .clk-btn-sgp a {
3890      min-height: 47px;
3891      padding: 12px;
3892      font-size: 12px;
3893    }
3894
3895    .info-table {
3896      width: calc(100% - 28px);
3897      font-size: 12px;
3898    }
3899
3900    .info-table th,
3901    .info-table td {
3902      padding: 10px;
3903    }
3904
3905    .popup-footer {
3906      padding-right: 16px;
3907      padding-left: 16px;
3908      font-size: 11px;
3909    }
3910
3911    .close-btn {
3912      width: 30px;
3913      height: 30px;
3914    }
3915  }
3916
3917  @media (prefers-reduced-motion: reduce) {
3918    .popup-container,
3919    .clk-btn-sgp a,
3920    .close-btn {
3921      animation: none;
3922      transition: none;
3923    }
3924  }
3925</style>
3926  <div class="popup-overlay" id="popupOverlay">
3927      <div class="popup-container">
3928          <!-- Tombol Close -->
3929          <div class="close-btn" onclick="closePopup()"></div>
3930          <!-- Partikel emas untuk efek elegan -->
3931          <div class="gold-particle" style="width: 10px; height: 10px; top: 15%; left: 12%; animation-delay: 0s;"></div>
3932          <div class="gold-particle" style="width: 8px; height: 8px; top: 35%; left: 88%; animation-delay: 1.5s;"></div>
3933          <div class="gold-particle" style="width: 12px; height: 12px; top: 65%; left: 18%; animation-delay: 3s;"></div>
3934          <div class="gold-particle" style="width: 6px; height: 6px; top: 25%; left: 75%; animation-delay: 4.5s;"></div>
3935          <div class="gold-particle" style="width: 9px; height: 9px; top: 80%; left: 60%; animation-delay: 6s;"></div>
3936          <!-- Border mewah -->
3937          <div class="luxury-border"></div>
3938          <div class="Popup Banner">
3939              <img src="https://slotvipbogor.link/images/apk-slotvip.webp" alt="Popup Banner" class="popup-image" />
3940              <div class="clk-btn-sgp" style="font-size: 20px;">
3941                  <a href="https://klikmudah.com/" target="_blank" rel="nofollow noreferrer"
3942                      class="login">LOGIN</a>
3943                  <a href="https://klikmudah.com/" target="_blank" rel="nofollow noreferrer"
3944                      class="register">DAFTAR</a>
3945              </div>
3946              <div class="popup-footer">
3947                  SLOTVIP 🚀 Versi Apk Terbaru Game Slot Pelayanan VVIP 2026<br/>
3948                  <span style="color: #ffd900; font-weight: 600; text-shadow: 0 0 5px rgba(212, 175, 55, 0.5);">&copy; COPYRIGHT 2026 SLOTVIP 🚀 Seo HADFLKHAF</span>
3949              </div>
3950          </div>
3951      </div>
3952  </div>
3953  
3953<script>
3954      function closePopup() {
3955          const popupOverlay = document.getElementById('popupOverlay');
3956          popupOverlay.style.opacity = '0';
3957          popupOverlay.style.transition = 'opacity 0.3s ease';
3958          
3959          setTimeout(() => {
3960              popupOverlay.style.display = 'none';
3961          }, 300);
3962      }
3963      
3964      // Menutup popup ketika mengklik area di luar popup
3965      document.getElementById('popupOverlay').addEventListener('click', function(event) {
3966          if (event.target === this) {
3967              closePopup();
3968          }
3969      });
3970  </script>
3970
3971            <style nonce="se3iyzEHMc9FQEB4wSyd0w==">
3972              /* Chat Widget Styles - Lightweight & Minimal */
3973              .chat-widget {
3974                  position: fixed;
3975                  bottom: 20px;
3976                  right: 20px;
3977                  z-index: 9999;
3978                  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
3979              }
3980              
3981              /* Hide floating button on mobile - use bottom nav instead */
3982              @media (max-width: 640px) {
3983                  .chat-toggle-btn {
3984                      display: none !important;
3985                  }
3986                  
3987                  /* Ensure popup is still visible on mobile even when button is hidden */
3988                  .chat-widget {
3989                      display: block !important;
3990                  }
3991                  
3992                  .chat-popup {
3993                      display: none; /* Hidden by default, shown via JS */
3994                  }
3995                  
3996                  .chat-popup[style*="display: block"],
3997                  .chat-popup[style*="display:block"] {
3998                      display: block !important;
3999                  }
4000              }
4001              
4002              .chat-toggle-btn {
4003                  width: 60px;
4004                  height: 60px;
4005                  border-radius: 50%;
4006                  background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%);
4007                  border: none;
4008                  color: white;
4009                  cursor: pointer;
4010                  box-shadow: 0 4px 12px rgba(242, 140, 26, 0.3);
4011                  position: relative;
4012                  transition: transform 0.2s, box-shadow 0.2s;
4013              }
4014              
4015              .chat-toggle-btn:hover {
4016                  transform: scale(1.05);
4017                  box-shadow: 0 6px 20px rgba(242, 140, 26, 0.4);
4018              }
4019              
4020              #chat-toggle-btn .chat-icon {
4021                  position: absolute;
4022                  top: 50%;
4023                  left: 50%;
4024                  transform: translate(-50%, -50%);
4025                  width: 28px !important;
4026                  height: 28px !important;
4027              }
4028              
4029              .chat-unread-badge {
4030                  position: absolute;
4031                  top: -5px;
4032                  right: -5px;
4033                  background: #ef4444;
4034                  color: white;
4035                  border-radius: 12px;
4036                  padding: 2px 6px;
4037                  font-size: 11px;
4038                  font-weight: 600;
4039                  min-width: 20px;
4040                  text-align: center;
4041              }
4042              
4043              .chat-popup {
4044                  position: absolute;
4045                  bottom: 80px;
4046                  right: 0;
4047                  width: 380px;
4048                  max-width: calc(100vw - 40px);
4049                  height: 500px;
4050                  max-height: calc(100vh - 120px);
4051                  background: white;
4052                  border-radius: 12px;
4053                  box-shadow: 0 10px 40px rgba(0,0,0,0.2);
4054                  display: flex;
4055                  flex-direction: column;
4056                  overflow: hidden;
4057              }
4058              
4059              .chat-popup-header {
4060                  background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%);
4061                  color: white;
4062                  padding: 16px 20px;
4063                  display: flex;
4064                  justify-content: space-between;
4065                  align-items: center;
4066                  flex-shrink: 0;
4067              }
4068              
4069              .chat-header-title {
4070                  display: flex;
4071                  flex-direction: column;
4072                  gap: 2px;
4073                  min-height: 0;
4074              }
4075              
4076              .chat-popup-header h3 {
4077                  margin: 0;
4078                  font-size: 18px;
4079                  font-weight: 600;
4080                  line-height: 1.2;
4081              }
4082              
4083              .chat-operating-hours {
4084                  font-size: 11px;
4085                  opacity: 0.9;
4086                  font-weight: 400;
4087                  display: flex;
4088                  align-items: center;
4089                  gap: 4px;
4090                  line-height: 1.2;
4091              }
4092              
4093              .chat-operating-hours svg {
4094                  width: 12px;
4095                  height: 12px;
4096                  opacity: 0.8;
4097                  flex-shrink: 0;
4098              }
4099              
4100              .chat-header-actions {
4101                  display: flex;
4102                  align-items: center;
4103                  gap: 8px;
4104              }
4105              
4106              /* Notification Toggle Button */
4107              .btn-notif-toggle {
4108                  background: none;
4109                  border: none;
4110                  color: white;
4111                  font-size: 18px;
4112                  cursor: pointer;
4113                  padding: 4px 8px;
4114                  transition: all 0.2s;
4115                  opacity: 0.8;
4116              }
4117              
4118              .btn-notif-toggle:hover {
4119                  opacity: 1;
4120                  transform: scale(1.1);
4121              }
4122              
4123              /* Icon states */
4124              .btn-notif-toggle[data-status="not-subscribed"] svg {
4125                  opacity: 0.7;
4126              }
4127              
4128              .btn-notif-toggle[data-status="not-subscribed"]:hover svg {
4129                  opacity: 1;
4130              }
4131              
4132              .btn-notif-toggle[data-status="subscribed"] svg {
4133                  opacity: 1;
4134                  animation: bellRing 2s ease-in-out;
4135              }
4136              
4137              .btn-notif-toggle[data-status="blocked"] svg {
4138                  color: #ff6b6b;
4139              }
4140              
4141              .btn-notif-toggle[data-status="not-supported"] {
4142                  display: none !important;
4143              }
4144              
4145              @keyframes bellRing {
4146                  0%, 100% { transform: rotate(0deg); }
4147                  10%, 30% { transform: rotate(-10deg); }
4148                  20%, 40% { transform: rotate(10deg); }
4149              }
4150              
4151              /* Notification Info Bar */
4152              .chat-notif-info-bar {
4153                  position: absolute;
4154                  top: 64px;
4155                  left: 0;
4156                  right: 0;
4157                  background: linear-gradient(to right, #e3f2fd, #f5f5f5);
4158                  border-bottom: 1px solid #bbdefb;
4159                  padding: 8px 12px;
4160                  display: flex;
4161                  align-items: center;
4162                  gap: 8px;
4163                  font-size: 12px;
4164                  color: #616161;
4165                  z-index: 10;
4166                  animation: slideDown 0.3s ease;
4167              }
4168              
4169              .chat-notif-info-bar svg {
4170                  flex-shrink: 0;
4171              }
4172              
4173              .chat-notif-info-bar .small {
4174                  flex: 1;
4175                  line-height: 1.4;
4176              }
4177              
4178              .chat-notif-info-bar .btn-dismiss {
4179                  background: none;
4180                  border: none;
4181                  color: #9e9e9e;
4182                  cursor: pointer;
4183                  padding: 0 4px;
4184                  font-size: 16px;
4185                  transition: color 0.2s;
4186              }
4187              
4188              .chat-notif-info-bar .btn-dismiss:hover {
4189                  color: #616161;
4190              }
4191              
4192              @keyframes slideDown {
4193                  from {
4194                      max-height: 0;
4195                      opacity: 0;
4196                  }
4197                  to {
4198                      max-height: 50px;
4199                      opacity: 1;
4200                  }
4201              }
4202              
4203              .chat-close-btn {
4204                  background: none;
4205                  border: none;
4206                  color: white;
4207                  font-size: 28px;
4208                  line-height: 1;
4209                  cursor: pointer;
4210                  padding: 0;
4211                  width: 30px;
4212                  height: 30px;
4213              }
4214              
4215              .chat-popup-body {
4216                  flex: 1 1 auto;
4217                  display: flex;
4218                  flex-direction: column;
4219                  min-height: 0;
4220                  overflow: hidden;
4221                  height: calc(100% - 64px);
4222                  position: relative;
4223                  transition: padding-top 0.3s ease;
4224              }
4225              
4226              /* Add padding when info bar is visible */
4227              .chat-popup-body.has-info-bar {
4228                  padding-top: 40px;
4229              }
4230              
4231              .chat-view {
4232                  flex: 1 1 auto;
4233                  display: none;
4234                  flex-direction: column;
4235                  min-height: 0;
4236                  overflow: hidden;
4237              }
4238              
4239              #chat-list-view {
4240                  display: flex;
4241              }
4242              
4243              #chat-messages-view {
4244                  display: none;
4245              }
4246              
4247              #chat-messages-view.active {
4248                  display: flex;
4249                  flex-direction: column;
4250              }
4251              
4252              #chat-new-view {
4253                  display: none;
4254              }
4255              
4256              #chat-new-view.active {
4257                  display: flex;
4258              }
4259              
4260              .chat-conversations-list {
4261                  flex: 1;
4262                  overflow-y: auto;
4263                  padding: 0;
4264                  background: white;
4265              }
4266              
4267              /* Custom Scrollbar for Conversations List */
4268              .chat-conversations-list::-webkit-scrollbar {
4269                  width: 6px;
4270              }
4271              
4272              .chat-conversations-list::-webkit-scrollbar-track {
4273                  background: #f1f1f1;
4274              }
4275              
4276              .chat-conversations-list::-webkit-scrollbar-thumb {
4277                  background: #F28C1A;
4278                  border-radius: 3px;
4279              }
4280              
4281              .chat-conversations-list::-webkit-scrollbar-thumb:hover {
4282                  background: #D97809;
4283              }
4284              
4285              /* Firefox */
4286              .chat-conversations-list {
4287                  scrollbar-width: thin;
4288                  scrollbar-color: #F28C1A #f1f1f1;
4289              }
4290              
4291              .chat-conversation-item {
4292                  padding: 12px 16px;
4293                  cursor: pointer;
4294                  display: flex;
4295                  gap: 12px;
4296                  align-items: flex-start;
4297                  transition: background 0.15s ease;
4298                  color: #33371f;
4299                  border-bottom: 1px solid #f0f0f0;
4300              }
4301              
4302              .chat-conversation-item:hover {
4303                  background: #f5f5f5;
4304              }
4305              
4306              .chat-conversation-item.active {
4307                  background: #FFF5EB;
4308              }
4309              
4310              /* WhatsApp-like Avatar */
4311              .conversation-avatar {
4312                  width: 48px;
4313                  height: 48px;
4314                  border-radius: 50%;
4315                  background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%);
4316                  flex-shrink: 0;
4317                  display: flex;
4318                  align-items: center;
4319                  justify-content: center;
4320                  color: white;
4321                  font-weight: 600;
4322                  font-size: 18px;
4323              }
4324              
4325              .conversation-avatar svg {
4326                  width: 24px;
4327                  height: 24px;
4328              }
4329              
4330              /* WhatsApp-like Content */
4331              .conversation-content {
4332                  flex: 1;
4333                  min-width: 0;
4334                  display: flex;
4335                  flex-direction: column;
4336                  gap: 4px;
4337              }
4338              
4339              .conversation-header {
4340                  display: flex;
4341                  justify-content: space-between;
4342                  align-items: center;
4343                  gap: 8px;
4344              }
4345              
4346              .conversation-name {
4347                  font-weight: 600;
4348                  font-size: 15px;
4349                  color: #111;
4350                  white-space: nowrap;
4351                  overflow: hidden;
4352                  text-overflow: ellipsis;
4353              }
4354              
4355              .conversation-time {
4356                  font-size: 12px;
4357                  color: #7d8166;
4358                  flex-shrink: 0;
4359              }
4360              
4361              .conversation-preview {
4362                  display: flex;
4363                  justify-content: space-between;
4364                  align-items: center;
4365                  gap: 8px;
4366              }
4367              
4368              .conversation-message {
4369                  font-size: 14px;
4370                  color: #667781;
4371                  white-space: nowrap;
4372                  overflow: hidden;
4373                  text-overflow: ellipsis;
4374                  margin: 0;
4375                  flex: 1;
4376              }
4377              
4378              .conversation-unread {
4379                  background: #d32525;
4380                  color: white;
4381                  border-radius: 12px;
4382                  padding: 2px 8px;
4383                  font-size: 12px;
4384                  font-weight: 600;
4385                  min-width: 20px;
4386                  text-align: center;
4387                  flex-shrink: 0;
4388              }
4389              
4390              /* Active item styling */
4391              .chat-conversation-item.active .conversation-name {
4392                  color: #F28C1A;
4393              }
4394              
4395              .chat-conversation-item.active .conversation-time {
4396                  color: #F28C1A;
4397              }
4398              
4399              .chat-new-btn {
4400                  margin: 12px;
4401                  padding: 12px;
4402                  background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%);
4403                  color: white;
4404                  border: none;
4405                  border-radius: 8px;
4406                  cursor: pointer;
4407                  font-weight: 500;
4408                  font-size: 14px;
4409                  display: flex;
4410                  align-items: center;
4411                  justify-content: center;
4412                  gap: 8px;
4413                  transition: all 0.2s;
4414                  flex-shrink: 0;
4415              }
4416              
4417              .chat-new-btn:hover {
4418                  transform: translateY(-1px);
4419                  box-shadow: 0 4px 8px rgba(242, 140, 26, 0.3);
4420              }
4421              
4422              .chat-conversation-title {
4423                  flex: 1;
4424                  font-weight: 600;
4425                  font-size: 16px;
4426                  color: #1f2937;
4427              }
4428              
4429              .chat-messages-container {
4430                  flex: 1;
4431                  overflow-y: auto;
4432                  padding: 16px;
4433                  display: flex;
4434                  flex-direction: column;
4435                  gap: 8px;
4436                  min-height: 0;
4437                  background: #E5DDD5;
4438              }
4439              
4440              /* Custom Scrollbar for Messages Container */
4441              .chat-messages-container::-webkit-scrollbar {
4442                  width: 6px;
4443              }
4444              
4445              .chat-messages-container::-webkit-scrollbar-track {
4446                  background: rgba(0, 0, 0, 0.05);
4447              }
4448              
4449              .chat-messages-container::-webkit-scrollbar-thumb {
4450                  background: rgba(242, 140, 26, 0.6);
4451                  border-radius: 3px;
4452              }
4453              
4454              .chat-messages-container::-webkit-scrollbar-thumb:hover {
4455                  background: #F28C1A;
4456              }
4457              
4458              /* Firefox */
4459              .chat-messages-container {
4460                  scrollbar-width: thin;
4461                  scrollbar-color: rgba(242, 140, 26, 0.6) rgba(0, 0, 0, 0.05);
4462              }
4463              
4464              /* WhatsApp Group-like Messages */
4465              .chat-message {
4466                  display: flex;
4467                  margin-bottom: 4px;
4468                  animation: fadeIn 0.2s ease;
4469              }
4470              
4471              @keyframes fadeIn {
4472                  from { opacity: 0; transform: translateY(10px); }
4473                  to { opacity: 1; transform: translateY(0); }
4474              }
4475              
4476              .chat-message.mine {
4477                  justify-content: flex-end;
4478              }
4479              
4480              .chat-message-bubble {
4481                  max-width: 80%;
4482                  padding: 6px 8px 8px 10px;
4483                  border-radius: 8px;
4484                  position: relative;
4485                  box-shadow: 0 1px 0.5px rgba(0,0,0,0.13);
4486              }
4487              
4488              /* Bubble from others (Admin/CS) */
4489              .chat-message:not(.mine) .chat-message-bubble {
4490                  background: #FFFFFF;
4491                  border-radius: 0 8px 8px 8px;
4492              }
4493              
4494              /* Bubble tail for others */
4495              .chat-message:not(.mine) .chat-message-bubble::before {
4496                  content: '';
4497                  position: absolute;
4498                  top: 0;
4499                  left: -8px;
4500                  width: 0;
4501                  height: 0;
4502                  border-style: solid;
4503                  border-width: 0 8px 13px 0;
4504                  border-color: transparent #FFFFFF transparent transparent;
4505              }
4506              
4507              /* Bubble from user (mine) */
4508              .chat-message.mine .chat-message-bubble {
4509                  background: #e4f5d0; /* Light blue for user messages */
4510                  border-radius: 8px 0 8px 8px;
4511              }
4512              
4513              /* Bubble tail for mine */
4514              .chat-message.mine .chat-message-bubble::before {
4515                  content: '';
4516                  position: absolute;
4517                  top: 0;
4518                  right: -8px;
4519                  width: 0;
4520                  height: 0;
4521                  border-style: solid;
4522                  border-width: 0 0 13px 8px;
4523                  border-color: transparent transparent transparent #eaf5d0;
4524              }
4525              
4526              .message-sender {
4527                  font-size: 12.5px;
4528                  font-weight: 600;
4529                  color: #F28C1A !important;
4530                  margin-bottom: 4px;
4531              }
4532              
4533              .chat-message.mine .message-sender {
4534                  display: none;
4535              }
4536              
4537              /* Message text */
4538              .message-text {
4539                  font-size: 14px;
4540                  line-height: 19px;
4541                  color: #000000 !important;
4542                  word-wrap: break-word;
4543                  white-space: pre-wrap;
4544                  margin-bottom: 4px;
4545              }
4546              
4547              /* Message metadata (time + status) */
4548              .message-meta {
4549                  display: flex;
4550                  align-items: center;
4551                  justify-content: flex-end;
4552                  gap: 4px;
4553                  margin-top: 2px;
4554              }
4555              
4556              .message-time {
4557                  font-size: 11px;
4558                  color: #728166 !important;
4559                  line-height: 15px;
4560              }
4561              
4562              /* Use multiple selectors to override global styles */
4563              .chat-message-bubble .message-status,
4564              .message-meta .message-status,
4565              .chat-message .message-status {
4566                  width: 16px !important;
4567                  height: 16px !important;
4568                  min-width: 16px !important;
4569                  min-height: 16px !important;
4570                  max-width: 16px !important;
4571                  max-height: 16px !important;
4572                  flex-shrink: 0;
4573                  color: #728166 !important;
4574                  fill: currentColor !important;
4575              }
4576              
4577              .chat-message:not(.mine) .message-status {
4578                  display: none;
4579              }
4580              
4581              /* Loading dots animation */
4582              @keyframes loadingDots {
4583                  0%, 20% { content: '.'; }
4584                  40% { content: '..'; }
4585                  60%, 100% { content: '...'; }
4586              }
4587              
4588              .message-status.loading::after {
4589                  content: '...';
4590                  animation: loadingDots 1.5s infinite;
4591                  font-size: 16px;
4592                  line-height: 16px;
4593              }
4594              
4595              .message-status.loading path {
4596                  display: none;
4597              }
4598              
4599              .message-status.failed {
4600                  color: #ef4444 !important;
4601                  cursor: pointer;
4602              }
4603              
4604              .message-status.sent {
4605                  color: #667781 !important;
4606              }
4607              
4608              .chat-new-form {
4609                  flex: 1;
4610                  overflow-y: auto;
4611                  padding: 16px;
4612                  display: flex;
4613                  flex-direction: column;
4614              }
4615              
4616              .chat-new-form form {
4617                  display: flex;
4618                  flex-direction: column;
4619                  gap: 16px;
4620                  flex: 1;
4621              }
4622              
4623              .chat-new-form .form-group {
4624                  display: flex;
4625                  flex-direction: column;
4626                  gap: 6px;
4627              }
4628              
4629              .chat-new-form label {
4630                  font-size: 14px;
4631                  font-weight: 500;
4632                  color: #374151;
4633              }
4634              
4635              .chat-new-form .form-control {
4636                  width: 100%;
4637                  padding: 10px 12px;
4638                  border: 1px solid #d1d5db;
4639                  border-radius: 8px;
4640                  font-size: 14px;
4641                  font-family: inherit;
4642                  transition: border-color 0.2s;
4643                  box-sizing: border-box;
4644              }
4645              
4646              .chat-new-form .form-control:focus {
4647                  outline: none;
4648                  border-color: #F28C1A;
4649                  box-shadow: 0 0 0 3px rgba(242, 140, 26, 0.1);
4650              }
4651              
4652              .chat-new-form textarea.form-control {
4653                  resize: vertical;
4654                  min-height: 100px;
4655              }
4656              
4657              .chat-new-form .btn {
4658                  padding: 12px 20px;
4659                  border: none;
4660                  border-radius: 8px;
4661                  font-size: 15px;
4662                  font-weight: 500;
4663                  cursor: pointer;
4664                  transition: all 0.2s;
4665                  text-align: center;
4666              }
4667              
4668              .chat-new-form .btn-primary {
4669                  background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%);
4670                  color: white;
4671              }
4672              
4673              .chat-new-form .btn-primary:hover {
4674                  transform: translateY(-1px);
4675                  box-shadow: 0 4px 8px rgba(242, 140, 26, 0.3);
4676              }
4677              
4678              .chat-new-form .btn-primary:active {
4679                  transform: scale(0.98);
4680              }
4681              
4682              .chat-new-form .btn-block {
4683                  width: 100%;
4684                  margin-top: auto;
4685              }
4686              
4687              .chat-message-form {
4688                  padding: 12px;
4689                  border-top: 1px solid #e5e7eb;
4690                  display: flex;
4691                  flex-wrap: wrap;
4692                  gap: 8px;
4693                  align-items: flex-end;
4694                  flex-shrink: 0;
4695                  background: white;
4696              }
4697              
4698              .chat-product-card {
4699                  flex: 1 1 100%;
4700                  max-width: 100%;
4701                  display: flex;
4702                  gap: 12px;
4703                  padding: 12px;
4704                  background: #f3f4f6;
4705                  border-radius: 8px;
4706                  margin-bottom: 4px;
4707                  border: 1px solid #e5e7eb;
4708              }
4709              
4710              .chat-product-card img {
4711                  width: 60px;
4712                  height: 60px;
4713                  object-fit: cover;
4714                  border-radius: 6px;
4715                  flex-shrink: 0;
4716              }
4717              
4718              .chat-product-card-content {
4719                  flex: 1;
4720                  min-width: 0;
4721              }
4722              
4723              .chat-product-card-name {
4724                  font-weight: 500;
4725                  font-size: 14px;
4726                  color: #1f2937;
4727                  margin-bottom: 4px;
4728                  white-space: nowrap;
4729                  overflow: hidden;
4730                  text-overflow: ellipsis;
4731              }
4732              
4733              .chat-product-card-variant {
4734                  font-size: 12px;
4735                  color: #74806b;
4736                  margin-bottom: 4px;
4737              }
4738              
4739              .chat-product-card-price {
4740                  font-size: 13px;
4741                  color: #8bea66;
4742                  font-weight: 600;
4743              }
4744              
4745              .chat-product-card-remove {
4746                  align-self: flex-start;
4747                  background: none;
4748                  border: none;
4749                  color: #9ca3af;
4750                  cursor: pointer;
4751                  padding: 4px;
4752                  font-size: 18px;
4753                  line-height: 1;
4754                  transition: color 0.2s;
4755              }
4756              
4757              .chat-product-card-remove:hover {
4758                  color: #ef4444;
4759              }
4760              
4761              /* Product card in messages (read-only display) */
4762              .message-product-card {
4763                  display: flex;
4764                  gap: 10px;
4765                  padding: 10px;
4766                  background: rgba(255, 255, 255, 0.5);
4767                  border-radius: 8px;
4768                  margin-bottom: 6px;
4769                  border: 1px solid rgba(0, 0, 0, 0.08);
4770                  align-items: center;
4771              }
4772              
4773              .chat-message.mine .message-product-card {
4774                  background: rgba(255, 255, 255, 0.7);
4775              }
4776              
4777              .message-product-card img {
4778                  width: 50px;
4779                  height: 50px;
4780                  object-fit: cover;
4781                  border-radius: 6px;
4782                  flex-shrink: 0;
4783              }
4784              
4785              .message-product-info {
4786                  flex: 1;
4787                  min-width: 0;
4788              }
4789              
4790              .message-product-name {
4791                  font-weight: 500;
4792                  font-size: 13px;
4793                  color: #33371f;
4794                  margin-bottom: 2px;
4795                  overflow: hidden;
4796                  text-overflow: ellipsis;
4797                  display: -webkit-box;
4798                  -webkit-line-clamp: 2;
4799                  -webkit-box-orient: vertical;
4800                  line-height: 1.3;
4801              }
4802              
4803              .message-product-variant {
4804                  font-size: 11px;
4805                  color: #78806b;
4806                  margin-bottom: 2px;
4807              }
4808              
4809              .message-product-price {
4810                  font-size: 12px;
4811                  color: #c7ea66;
4812                  font-weight: 600;
4813              }
4814              
4815              .message-product-link {
4816                  flex-shrink: 0;
4817                  width: 32px;
4818                  height: 32px;
4819                  display: flex;
4820                  align-items: center;
4821                  justify-content: center;
4822                  background: rgba(102, 126, 234, 0.1);
4823                  border-radius: 6px;
4824                  color: #c7ea66;
4825                  text-decoration: none;
4826                  transition: all 0.2s;
4827              }
4828              
4829              .message-product-link:hover {
4830                  background: #b7ea66;
4831                  color: white;
4832              }
4833              
4834              .message-product-link svg {
4835                  width: 16px;
4836                  height: 16px;
4837              }
4838              
4839              .chat-message-input {
4840                  flex: 1;
4841                  border: 1px solid #d1d5db;
4842                  border-radius: 20px;
4843                  padding: 10px 16px;
4844                  resize: none;
4845                  max-height: 100px;
4846                  font-family: inherit;
4847                  font-size: 14px;
4848                  line-height: 1.5;
4849                  box-sizing: border-box;
4850                  overflow-y: hidden;
4851              }
4852              
4853              .chat-message-input:focus {
4854                  outline: none;
4855                  border-color: #F28C1A;
4856                  box-shadow: 0 0 0 3px rgba(242, 140, 26, 0.1);
4857              }
4858              
4859              .chat-send-btn {
4860                  width: 40px;
4861                  height: 40px;
4862                  border-radius: 50%;
4863                  background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%);
4864                  border: none;
4865                  color: white;
4866                  cursor: pointer;
4867                  flex-shrink: 0;
4868                  display: flex;
4869                  align-items: center;
4870                  justify-content: center;
4871                  transition: all 0.2s;
4872              }
4873              
4874              .chat-send-btn:hover {
4875                  transform: scale(1.05);
4876                  box-shadow: 0 2px 8px rgba(242, 140, 26, 0.3);
4877              }
4878              
4879              .chat-send-btn:active {
4880                  transform: scale(0.95);
4881              }
4882              
4883              .chat-loading {
4884                  text-align: center;
4885                  padding: 20px;
4886                  color: #6b7280;
4887              }
4888              
4889              /* Date Separator (WhatsApp-style) */
4890              .date-separator {
4891                  display: flex;
4892                  align-items: center;
4893                  gap: 12px;
4894                  margin: 24px 0 16px;
4895                  opacity: 0;
4896                  animation: fadeInSeparator 0.3s ease forwards;
4897              }
4898
4899              @keyframes fadeInSeparator {
4900                  from {
4901                      opacity: 0;
4902                      transform: translateY(-10px);
4903                  }
4904                  to {
4905                      opacity: 1;
4906                      transform: translateY(0);
4907                  }
4908              }
4909
4910              .date-separator-line {
4911                  flex: 1;
4912                  height: 1px;
4913                  background: linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.1) 50%, transparent);
4914              }
4915
4916              .date-separator-text {
4917                  flex-shrink: 0;
4918                  padding: 4px 12px;
4919                  background: #e9ecef;
4920                  color: #6c757d;
4921                  font-size: 11px;
4922                  font-weight: 600;
4923                  text-transform: uppercase;
4924                  letter-spacing: 0.5px;
4925                  border-radius: 12px;
4926                  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
4927              }
4928              
4929              /* Mobile responsive */
4930              @media (max-width: 640px) {
4931                  .chat-popup {
4932                      position: fixed !important; /* Override absolute positioning */
4933                      bottom: 45px !important; /* Above bottom nav */
4934                      right: 0 !important;
4935                      left: 0 !important;
4936                      width: 100% !important;
4937                      max-width: 100% !important;
4938                      /* Use dvh (dynamic viewport height) for browser UI awareness */
4939                      height: calc(100dvh - 45px) !important;
4940                      max-height: calc(100dvh - 45px) !important;
4941                      /* Fallback for browsers that don't support dvh */
4942                      height: calc(var(--viewport-height, 100vh) - 45px) !important;
4943                      max-height: calc(var(--viewport-height, 100vh) - 45px) !important;
4944                      border-radius: 0 !important;
4945                      z-index: 9999 !important;
4946                  }
4947                  
4948                  .chat-popup-header {
4949                      border-radius: 0;
4950                  }
4951                  
4952                  .chat-messages-container,
4953                  .chat-conversations-list {
4954                      /* Adjust for mobile keyboard using dynamic viewport */
4955                      max-height: calc(100dvh - 190px);
4956                      /* Fallback for browsers that don't support dvh */
4957                      max-height: calc(var(--viewport-height, 100vh) - 190px);
4958                  }
4959              }
4960          </style>
4961
4962                  <!-- Chat Widget Button -->
4963          <div id="chat-widget" class="chat-widget" 
4964              data-user-id=""
4965              data-is-logged-in="false"
4966              data-csrf-token="df5d776748b1ed8c8dd0d987bae99b1ee3dea6c6dcbe0eedb1bea766c56d569a">
4967              <button id="chat-toggle-btn" class="chat-toggle-btn" aria-label="Toggle chat">
4968                  <svg class="chat-icon" width="28" height="28" viewBox="0 0 640 640" fill="currentColor">
4969                      <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"/>
4970                  </svg>
4971                  <span id="chat-unread-badge" class="chat-unread-badge" style="display: none;">0</span>
4972              </button>
4973              
4974              <div id="chat-popup" class="chat-popup" style="display: none;">
4975                  <div class="chat-popup-header">
4976                      <div class="chat-header-title">
4977                          <h3>Bantuan</h3>
4978                          <span id="chatOperatingHours" class="chat-operating-hours" style="display: none;"></span>
4979                      </div>
4980                      <div class="chat-header-actions">
4981                          <button id="chatNotifToggle" class="btn-notif-toggle" data-status="not-supported" title="Push notification" style="display: none;">
4982                              <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor">
4983                                  <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"/>
4984                              </svg>
4985                          </button>
4986                          <button id="chat-close-btn" class="chat-close-btn" aria-label="Close chat">
4986×</button>
4987                      </div>
4988                  </div>
4989                  
4990                  <!-- Notification Info Bar (conditional) -->
4991                  <div class="chat-notif-info-bar" id="chatNotifInfoBar" style="display:none;">
4992                      <svg width="14" height="14" viewBox="0 0 24 24" fill="#ffc107">
4993                          <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"/>
4994                      </svg>
4995                      <span class="small">Aktifkan notifikasi untuk pemberitahuan balasan</span>
4996                      <button class="btn-dismiss" onclick="ChatNotification.dismissInfo()">✕</button>
4997                  </div>
4998                  
4999                  <div class="chat-popup-body">
5000                      <!-- Conversations List View -->
5001                      <div id="chat-list-view" class="chat-view">
5002                          <div id="chat-conversations-list" class="chat-conversations-list">
5003                              <div class="chat-loading">Memuat...</div>
5004                              <!-- Conversation Item Structure (rendered by JS):
5005                              <div class="chat-conversation-item">
5006                                  <div class="conversation-avatar">
5007                                      <svg>...</svg>
5008                                  </div>
5009                                  <div class="conversation-content">
5010                                      <div class="conversation-header">
5011                                          <span class="conversation-name">Admin Support</span>
5012                                          <span class="conversation-time">10:30</span>
5013                                      </div>
5014                                      <div class="conversation-preview">
5015                                          <p class="conversation-message">Terima kasih telah menghubungi kami...</p>
5016                                          <span class="conversation-unread">2</span>
5017                                      </div>
5018                                  </div>
5019                              </div>
5020                              -->
5021                          </div>
5022                          <button id="chat-new-btn" class="chat-new-btn">
5023                              <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
5024                                  <line x1="12" y1="5" x2="12" y2="19"></line>
5025                                  <line x1="5" y1="12" x2="19" y2="12"></line>
5026                              </svg>
5027                              Percakapan Baru
5028                          </button>
5029                      </div>
5030                      
5031                      <!-- Chat Messages View -->
5032                      <div id="chat-messages-view" class="chat-view" style="display: none;">
5033                          <div id="chat-messages-container" class="chat-messages-container">
5034                              <div class="chat-loading">Memuat pesan...</div>
5035                              <!-- Message Structure (rendered by JS):
5036                              <div class="chat-message"> (or .chat-message.mine)
5037                                  <div class="chat-message-bubble">
5038                                      <div class="message-sender">Admin Support</div> (only for non-mine)
5039                                      <div class="message-text">Halo, ada yang bisa dibantu?</div>
5040                                      <div class="message-meta">
5041                                          <span class="message-time">10:30</span>
5042                                          <svg class="message-status">...</svg> (only for mine)
5043                                      </div>
5044                                  </div>
5045                              </div>
5046                              -->
5047                          </div>
5048                          
5049                          <form id="chat-message-form" class="chat-message-form">
5050                              <input type="hidden" id="chat-current-conversation-id" value="">
5051                              <textarea 
5052                                  id="chat-message-input" 
5053                                  class="chat-message-input" 
5054                                  placeholder="Ketik pesan..."
5055                                  rows="1"
5056                                  maxlength="5000"
5057                              ></textarea>
5058                              <button type="submit" class="chat-send-btn" aria-label="Send message">
5059                                  <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
5060                                      <line x1="22" y1="2" x2="11" y2="
506013"></line>
5061                                      <polygon points="22 2 15 22 11 13 2 9 22 2"></polygon>
5062                                  </svg>
5063                              </button>
5064                          </form>
5065                      </div>
5066                      
5067                      <!-- New Chat View -->
5068                      <div id="chat-new-view" class="chat-view" style="display: none;">
5069                          <div class="chat-messages-header">
5070                              <button id="chat-new-back-btn" class="chat-back-btn" aria-label="Back to list">
5071                                  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
5072                                      <path d="M19 12H5M12 19l-7-7 7-7"/>
5073                                  </svg>
5074                              </button>
5075                              <div class="chat-conversation-title">Percakapan Baru</div>
5076                          </div>
5077                          
5078                          <div class="chat-new-form">
5079                              <form id="chat-start-form">
5080                                  <div class="form-group">
5081                                      <label for="chat-new-subject">Subjek</label>
5082                                      <input 
5083                                          type="text" 
5084                                          id="chat-new-subject" 
5085                                          class="form-control" 
5086                                          placeholder="Bantuan Pelanggan"
5087                                          maxlength="255"
5088                                      >
5089                                  </div>
5090                                  <div class="form-group">
5091                                      <label for="chat-new-message">Pesan</label>
5092                                      <textarea 
5093                                          id="chat-new-message" 
5094                                          class="form-control" 
5095                                          rows="4" 
5096                                          placeholder="Tulis pertanyaan Anda..."
5097                                          required
5098                                          maxlength="5000"
5099                                      ></textarea>
5100                                  </div>
5101                                  <button type="submit" class="btn btn-primary btn-block">Kirim</button>
5102                              </form>
5103                          </div>
5104                      </div>
5105                  </div>
5106              </div>
5107          </div>
5108          
5109          <!-- Login Required Modal -->
5110          <div class="modal-overlay" id="chatLoginModal">
5111              <div class="modal-dialog">
5112                  <div class="modal-header">
5113                      <h3 class="modal-title">
5114                          <div class="modal-icon info">
5115                              <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
5116                                  <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"/>
5117                              </svg>
5118                          </div>
5119                          Login Diperlukan
5120                      </h3>
5121                  </div>
5122                  <div class="modal-body">
5123                      <p class="modal-message">Anda harus login terlebih dahulu untuk menggunakan fitur chat bantuan pelanggan.</p>
5124                      <div class="modal-actions">
5125                          <button class="modal-btn modal-btn-secondary" id="chatLoginCancel">Batal</button>
5126                          <button class="modal-btn modal-btn-primary" id="chatLoginConfirm">Login Sekarang</button>
5127                      </div>
5128                  </div>
5129              </div>
5130          </div>
5131          
5131<script src="https://plazaitdotid.pages.dev/assets/js/chat-widget.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
5131<script src="https://plazaitdotid.pages.dev/assets/js/chat-notification.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
5131  
5132      <!-- Footer Collapse Toggle Script -->
5133    
5133<script nonce="se3iyzEHMc9FQEB4wSyd0w==">
5134    document.addEventListener('DOMContentLoaded', function() {
5135      const ftTop = document.getElementById('ftTop');
5136      const expandBtn = document.getElementById('ftExpandBtn');
5137      
5138      if (ftTop && expandBtn) {
5139        const expandText = expandBtn.querySelector('.expand-text');
5140        
5141        expandBtn.addEventListener('click', function() {
5142          ftTop.classList.toggle('expanded');
5143          const isExpanded = ftTop.classList.contains('expanded');
5144          if (expandText) {
5145            expandText.textContent = isExpanded ? 'Sembunyikan' : 'Selengkapnya';
5146          }
5147        });
5148      }
5149    });
5150    </script>
5150
5151    </footer>
5152
5153  <!-- Compare Sidebar Overlay -->
5154  <div class="compare-overlay" id="compareOverlay"></div>
5155
5156  <!-- Floating Compare Badge (Sticky) -->
5157  <button class="compare-floating-badge" id="compareFloatingBadge" aria-label="Lihat produk yang dibandingkan" style="display:none;">
5158    <svg class="cfb-icon" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
5159      <path d="M9.01 14H2v2h7.01v3L13 15l-3.99-4v3zm5.98-1v-3H22V8h-7.01V5L11 9l3.99 4z"/>
5160    </svg>
5161    <span class="cfb-text">Bandingkan</span>
5162    <span class="cfb-count" id="cfbCount">0</span>
5163  </button>
5164
5165  <!-- AI Comparison Modal -->
5166  <div class="ai-compare-modal" id="aiCompareModal">
5167    <div class="modal-backdrop"></div>
5168    <div class="modal-container">
5169      <div class="modal-header">
5170        <h3 class="modal-title">
5171          <svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
5172            <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"/>
5173          </svg>
5174          Analisis AI: Perbandingan Produk
5175        </h3>
5176        <button class="modal-close" id="aiCompareModalClose" aria-label="Tutup">
5177          <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
5178            <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"/>
5179          </svg>
5180        </button>
5181      </div>
5182      
5183      <div class="modal-content">
5184        <!-- Loading State -->
5185        <div class="ai-loading" id="aiLoading">
5186          <div class="loading-animation">
5187            <div class="typing-indicator">
5188              <span></span>
5189              <span></span>
5190              <span></span>
5191            </div>
5192            <p>AI sedang menganalisis produk...</p>
5193            <small>Proses ini membutuhkan waktu 10-30 detik</small>
5194          </div>
5195        </div>
5196        
5197        <!-- Error State -->
5198        <div class="ai-error" id="aiError" hidden>
5199          <div class="error-icon">
5200            <svg width="48" height="48" viewBox="0 0 24 24" fill="#ef4444">
5201              <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"/>
5202            </svg>
5203          </div>
5204          <h4>Analisis AI Gagal</h4>
5205          <p id="aiErrorMessage">Terjadi kesalahan saat memproses analisis.</p>
5206          <button class="btn btn-outline-primary" id="aiRetry">Coba Lagi</button>
5207        </div>
5208        
5209        <!-- Analysis Results -->
5210        <div class="ai-results" id="aiResults" hidden>
5211          <!-- Summary Section -->
5212          <div class="ai-summary-card">
5213            <h4>
5214              <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
5215                <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"/>
5216              </svg>
5217              Ringkasan Analisis
5218            </h4>
5219            <p id="aiSummary" class="summary-text"></p>
5220            <div class="winner-badge" id="winnerBadge">
5221              <strong>Rekomendasi Terbaik:</strong> <span id="winnerProduct"></span>
5222              <small id="winnerReason"></small>
5223            </div>
5224          </div>
5225          
5226          <!-- Comparison Table -->
5227          <div class="ai-comparison-table">
5228            <h4>
5229              <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
5230                <path d="M3,3H21V5H3V3M3,7H21V9H3V7M3,11H21V13H3V11M3,15H21V17H3V15M3,19H21V21H3V19Z"/>
5231              </svg>
5232              Perbandingan Detail
5233            </h4>
5234            <div id="comparisonTable" class="comparison-grid"></div>
5235          </div>
5236          
5237          <!-- Detailed Analysis -->
5238          <div class="ai-detailed-analysis">
5239            <h4>
5240              <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
5241                <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"/>
5242              </svg>
5243              Analisis Mendalam
5244            </h4>
5245            <div id="detailedAnalysis" class="products-analysis"></div>
5246          </div>
5247          
5248          <!-- Recommendations -->
5249          <div class="ai-recommendations">
5250            <h4>
5251              <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
5252                <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"/>
5253              </svg>
5254              Rekomendasi Berdasarkan Kebutuhan
5255            </h4>
5256            <div class="recommendations-grid">
5257              <div class="recommendation-card">
5258                <h5>💰 Budget Conscious</h5>
5259                <p id="budgetRecommendation"></p>
5260              </div>
5261              <div class="recommendation-card">
5262                <h5>⚡ Performance Focused</h5>
5263                <p id="performanceRecommendation"></p>
5264              </div>
5265              <div class="recommendation-card">
5266                <h5>⚖️ Balanced Choice</h5>
5267                <p id="balancedRecommendation"></p>
5268              </div>
5269            </div>
5270          </div>
5271          
5272          <!-- Buying Tips -->
5273          <div class="ai-tips">
5274            <h4>
5275              <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
5276                <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
5276M5,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"/>
5277              </svg>
5278              Tips Pembelian
5279            </h4>
5280            <ul id="buyingTips" class="tips-list"></ul>
5281          </div>
5282        </div>
5283      </div>
5284    </div>
5285  </div>
5286
5287  <!-- Cart Login Modal -->
5288  <div class="modal-overlay" id="cartLoginModal">
5289    <div class="modal-dialog">
5290      <div class="modal-header">
5291        <h3 class="modal-title">
5292          <div class="modal-icon info">
5293            <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
5294              <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"/>
5295            </svg>
5296          </div>
5297          Login untuk Melanjutkan
5298        </h3>
5299      </div>
5300      <div class="modal-body">
5301        <p class="modal-message" style="margin-bottom: 16px;">Silakan login atau daftar untuk mengakses keranjang belanja dan menyelesaikan pesanan Anda.</p>
5302        <div style="background: #f8fafc; border-radius: 8px; padding: 12px; margin-bottom: 20px;">
5303          <p style="font-size: 14px; color: #646947; margin: 0; line-height: 1.6;">
5304            <strong style="color: #2a2a0f;">Keuntungan dengan akun:</strong><br>
5305            ✓ Simpan keranjang belanja Anda<br>
5306            ✓ Lacak status pesanan secara real-time<br>
5307            ✓ Checkout lebih cepat dengan data tersimpan<br>
5308            ✓ Dapatkan notifikasi promo & diskon eksklusif
5309          </p>
5310        </div>
5311        <div class="modal-actions">
5312          <button class="modal-btn modal-btn-secondary" id="cartLoginCancel">Batal</button>
5313          <button class="modal-btn modal-btn-primary" id="cartLoginConfirm" style="background: #ff6b35; border-color: #ff6b35;">Login</button>
5314          <button class="modal-btn modal-btn-primary" id="cartRegisterBtn" style="background: #f7931e; border-color: #f7931e;">Daftar</button>
5315        </div>
5316      </div>
5317    </div>
5318  </div>
5319
5320
5321
5322<style>
5323  :root {
5324    --mawar-black: #07040c;
5325    --mawar-dark: #12071b;
5326    --mawar-purple: #f80000;
5327    --mawar-pink: #f80000;
5328    --mawar-cyan: #f80000;
5329    --mawar-white: #ffffff;
5330  }
5331
5332  /* =========================================================
5333     FIXED FOOTER – STREET DEMONS MODE
5334  ========================================================= */
5335
5336  .mawar-fixed-footer {
5337    position: fixed;
5338    left: 0;
5339    right: 0;
5340    bottom: 0;
5341    z-index: 999;
5342
5343    display: flex;
5344    align-items: center;
5345    justify-content: space-around;
5346    gap: 8px;
5347
5348    padding: 11px 12px calc(11px + env(safe-area-inset-bottom));
5349    overflow: hidden;
5350
5351    background:
5352      radial-gradient(
5353        circle at 50% 0%,
5354        rgba(139, 44, 255, 0.24),
5355        rgba(20, 8, 30, 0.96) 58%,
5356        rgba(5, 2, 9, 1)
5357      ),
5358      linear-gradient(
5359        180deg,
5360        rgba(34, 13, 48, 0.95),
5361        rgba(5, 2, 9, 1)
5362      );
5363
5364    border-top: 2px solid rgba(255, 0, 0, 0.6);
5365    border-radius: 18px 18px 0 0;
5366
5367    box-shadow:
5368      0 -12px 35px rgba(139, 44, 255, 0.22),
5369      0 -4px 18px rgba(255, 60, 166, 0.12),
5370      inset 0 1px 0 rgba(255, 255, 255, 0.08);
5371
5372    font-family: "Orbitron", "Poppins", Arial, sans-serif;
5373  }
5374
5375  /* Scanline ringan */
5376  .mawar-fixed-footer::before {
5377    content: "";
5378    position: absolute;
5379    inset: 0;
5380    pointer-events: none;
5381
5382    background: repeating-linear-gradient(
5383      0deg,
5384      rgba(32, 231, 242, 0.025),
5385      rgba(32, 231, 242, 0.025) 1px,
5386      transparent 1px,
5387      transparent 4px
5388    );
5389
5390    opacity: 0.75;
5391    mix-blend-mode: screen;
5392  }
5393
5394  /* Sweep neon */
5395  .mawar-fixed-footer::after {
5396    content: "";
5397    position: absolute;
5398    top: 0;
5399    left: -160%;
5400
5401    width: 60%;
5402    height: 100%;
5403
5404    background: linear-gradient(
5405      120deg,
5406      transparent,
5407      rgba(255, 0, 0, 0.22),
5408      rgba(32, 231, 242, 0.3),
5409      transparent
5410    );
5411
5412    transform: skewX(-25deg);
5413    animation: mawarShine 4.5s infinite ease-in-out;
5414    pointer-events: none;
5415  }
5416
5417  @keyframes mawarShine {
5418    0% {
5419      left: -160%;
5420      opacity: 0;
5421    }
5422
5423    15% {
5424      opacity: 1;
5425    }
5426
5427    55% {
5428      left: 160%;
5429      opacity: 1;
5430    }
5431
5432    100% {
5433      left: 160%;
5434      opacity: 0;
5435    }
5436  }
5437
5438  /* =========================================================
5439     ITEM STYLE
5440  ========================================================= */
5441
5442  .mawar-fixed-footer a {
5443    flex: 1;
5444    max-width: 110px;
5445
5446    display: flex;
5447    flex-direction: column;
5448    align-items: center;
5449    justify-content: center;
5450    gap: 5px;
5451
5452    padding: 8px 4px;
5453
5454    color: rgba(255, 255, 255, 0.9);
5455    text-decoration: none;
5456    text-align: center;
5457    text-transform: uppercase;
5458
5459    font-size: 11px;
5460    font-weight: 800;
5461    letter-spacing: 0.4px;
5462
5463    position: relative;
5464    z-index: 2;
5465
5466    transition:
5467      color 0.2s ease,
5468      transform 0.2s ease,
5469      filter 0.2s ease;
5470  }
5471
5472  .mawar-fixed-footer a:hover {
5473    color: var(--mawar-white);
5474    transform: translateY(-2px);
5475
5476    filter:
5477      drop-shadow(0 0 6px rgba(250, 0, 0, 0.65))
5478      drop-shadow(0 0 8px rgba(255, 60, 166, 0.35));
5479  }
5480
5481  .mawar-fixed-footer img {
5482    width: 24px;
5483    height: 24px;
5484    object-fit: contain;
5485
5486    filter:
5487      drop-shadow(0 0 5px rgba(32, 231, 242, 0.55))
5488      drop-shadow(0 0 7px rgba(139, 44, 255, 0.35));
5489
5490    transition: transform 0.2s ease;
5491  }
5492
5493  .mawar-fixed-footer a:hover img {
5494    transform: scale(1.08);
5495  }
5496
5497  /* =========================================================
5498     CENTER CTA – STREET CORE
5499  ========================================================= */
5500
5501  .mawar-fixed-footer .core-cta {
5502    background:
5503      linear-gradient(
5504        145deg,
5505        rgba(139, 44, 255, 0.2),
5506        rgba(255, 60, 166, 0.12)
5507      );
5508
5509    border: 1px solid rgba(245, 0, 0, 0.65);
5510    border-radius: 10px 18px 10px 18px;
5511
5512    box-shadow:
5513      0 0 14px rgba(139, 44, 255, 0.28),
5514      0 0 18px rgba(32, 231, 242, 0.1),
5515      inset 0 0 10px rgba(255, 60, 166, 0.1);
5516
5517    transform: scale(1.05);
5518  }
5519
5520  .mawar-fixed-footer .core-cta img {
5521    width: 28px;
5522    height: 28px;
5523
5524    filter:
5525      drop-shadow(0 0 8px rgba(247, 0, 0, 0.8))
5526      drop-shadow(0 0 11px rgba(255, 60, 166, 0.55));
5527  }
5528
5529  .mawar-fixed-footer .core-cta::before {
5530    content: "";
5531    position: absolute;
5532    inset: -5px;
5533    z-index: -1;
5534
5535    border-radius: 13px 21px 13px 21px;
5536
5537    background: radial-gradient(
5538      circle,
5539      rgba(139, 44, 255, 0.28),
5540      rgba(255, 60, 166, 0.1),
5541      transparent 72%
5542    );
5543
5544    animation: mawarPulse 2.2s ease-in-out infinite;
5545  }
5546
5547  @keyframes mawarPulse {
5548    0%,
5549    100% {
5550      opacity: 0.35;
5551      transform: scale(1);
5552    }
5553
5554    50% {
5555      opacity: 0.8;
5556      transform: scale(1.08);
5557    }
5558  }
5559
5560  /* =========================================================
5561     RESPONSIVE
5562  ========================================================= */
5563
5564  @media (max-width: 400px) {
5565    .mawar-fixed-footer {
5566      gap: 4px;
5567      padding-right: 8px;
5568      padding-left: 8px;
5569    }
5570
5571    .mawar-fixed-footer a {
5572      font-size: 10px;
5573      letter-spacing: 0.2px;
5574    }
5575
5576    .mawar-fixed-footer img {
5577      width: 20px;
5578      height: 20px;
5579    }
5580
5581    .mawar-fixed-footer .core-cta img {
5582      width: 24px;
5583      height: 24px;
5584    }
5585  }
5586
5587  @media (prefers-reduced-motion: reduce) {
5588    .mawar-fixed-footer::after,
5589    .mawar-fixed-footer .core-cta::before {
5590      animation: none;
5591    }
5592
5593    .mawar-fixed-footer a,
5594    .mawar-fixed-footer img {
5595      transition: none;
5596    }
5597  }
5598</style>
5599
5600  <div class="mawar-fixed-footer">
5601    <a href="https://slotviplogin.us.com/" target="_blank" rel="nofollow noopener">
5602      <img src="https://gif-85c.pages.dev/logo_3d_flip.gif" alt="BONUS SLOTVIP">
5603      PROMO
5604    </a>
5605    
5606    <a href="https://slotviplogin.us.com/" target="_blank" rel="nofollow noopener">
5607      <img src="https://gif-85c.pages.dev/logo_3d_flip.gif" alt="TELEGRAM SLOTVIP">
5608      TELEGRAM
5609    </a>
5610
5611    <a href="https://slotviplogin.us.com/" target="_blank" rel="nofollow noopener" class="core-cta">
5612      <img src="https://gif-85c.pages.dev/logo_3d_flip.gif" alt="DAFTAR SLOTVIP">
5613      DAFTAR
5614    </a>
5615
5616    <a href="https://slotviplogin.us.com/" target="_blank" rel="nofollow noopener">
5617      <img src="https://gif-85c.pages.dev/logo_3d_flip.gif" alt="RTP SLOTVIP">
5618      RTP
5619    </a>
5620
5621    <a href="https://slotviplogin.us.com/" target="_blank" rel="nofollow noopener">
5622      <img src="https://gif-85c.pages.dev/logo_3d_flip.gif" alt="LIVECHAT SLOTVIP">
5623      LIVECHAT
5624    </a>
5625  </div>
5626  
5626<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":"3e9b3809d54c4fd180442ae60f330b2a","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 5626
5626
5627<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":"55b7be872d594ddea0ff5d1e112e117e","r":1,"spa":2}' crossorigin="anonymous"></script>
5627
5628</body>
5629  </html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.