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