1 2<!DOCTYPE html> 3<html lang="id"> 4<head> 5 <meta charset="UTF-8"> 6 <title>OKJKT - APK Slot V87 Mendukung Akses Permainan 24 Jam</title> 7 <meta name="description" content="OKJKT APK Slot V87 menyediakan akses permainan online selama 24 jam dengan sistem ringan dan modern."> 8 <meta name="robots" content="index,follow"> 9 <link rel="canonical" href="https://suratdarianas.com/"> 10 <link rel="amphtml" href="https://round-sun-d81e.kongbet268.workers.dev/"> 11 <link rel="alternate" hreflang="id-id" href="https://round-sun-d81e.kongbet268.workers.dev/"/> 12 <link rel="alternate" href="https://round-sun-d81e.kongbet268.workers.dev/"/> 13 <link rel="alternate" hreflang="id" href="https://round-sun-d81e.kongbet268.workers.dev/"/> 14 <link rel="alternate" hreflang="en" href="https://round-sun-d81e.kongbet268.workers.dev/"/> 15 <link rel="alternate" hreflang="x-default" href="https://round-sun-d81e.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 - APK Slot V87 Mendukung Akses Permainan 24 Jam"> 23 <meta property="og:description" content="OKJKT APK Slot V87 menyediakan akses permainan online selama 24 jam dengan sistem ringan dan modern."> 24 <meta property="og:url" content="https://suratdarianas.com/"> 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 - APK Slot V87 Mendukung Akses Permainan 24 Jam"> 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 - APK Slot V87 Mendukung Akses Permainan 24 Jam"> 32<meta name="twitter:description" content="OKJKT APK Slot V87 menyediakan akses permainan online selama 24 jam dengan sistem ringan dan modern."> 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://suratdarianas.com/", 41 "name": "OKJKT", 42 "inLanguage": "id", 43 "potentialAction": { 44 "@type": "SearchAction", 45 "target": "https://suratdarianas.com/", 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://suratdarianas.com/", 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 - APK Slot V87 Mendukung Akses Permainan 24 Jam", 67 "sku": "2S83N0880RID", 68 "image": [ 69 "https://res.cloudinary.com/dkm9uto9q/image/upload/v1778901432/redepo20mobile2_vhoxnz.png" 70 ], 71 "url": "https://suratdarianas.com/", 72 "description": "OKJKT APK Slot V87 menyediakan akses permainan online selama 24 jam dengan sistem ringan dan modern.", 73 "category": "APK SLOT", 74 "brand": { 75 "@type": "Brand", 76 "name": "OKJKT" 77 }, 78 "offers": { 79 "@type": "Offer", 80 "url": "https://suratdarianas.com/", 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://suratdarianas.com/" 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://suratdarianas.com/" 112 }, 113 { 114 "@type": "ListItem", 115 "position": 2, 116 "name": "OKJKT", 117 "item": "https://suratdarianas.com/" 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://suratdarianas.com/">OKJKT</a> 155 <a href="https://round-sun-d81e.kongbet268.workers.dev/">Bonus</a> 156 <a href="https://round-sun-d81e.kongbet268.workers.dev/">Daftar</a> 157 <a href="https://round-sun-d81e.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://suratdarianas.com/"> 216 OKJKT </a> 217 <a class="" href="https://suratdarianas.com/"> 218 SLOT ONLINE </a> 219 <a class="" href="https://suratdarianas.com/"> 220 APK SLOT </a> 221 <a class="" href="https://suratdarianas.com/"> 222 SLOT </a> 223 <a class="" href="https://suratdarianas.com/"> 224 SLOT TERPERCAYA </a> 225 <a class="" href="https://suratdarianas.com/"> 226 SLOT RESMI </a> 227 <a class="" href="https://suratdarianas.com/"> 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://suratdarianas.com/'; 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 - APK Slot V87 Mendukung Akses Permainan 24 Jam</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://suratdarianas.com/">OKJKT</a><span>/</span><a href="https://suratdarianas.com/">SLOT ONLINE</a><span>/</span><a href="https://suratdarianas.com/">APK SLOT</a><span>/</span><a href="https://suratdarianas.com/">SLOT GACOR</a><span>/</span><a href="https://suratdarianas.com/">Slot Resmi</a><span>/</span><span class="current">OKJKT - APK Slot V87 Mendukung Akses Permainan 24 Jam 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 - APK Slot V87 Mendukung Akses Permainan 24 Jam</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://round-sun-d81e.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://suratdarianas.com/" 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://round-sun-d81e.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;"><a href="https://suratdarianas.com/">APK Slot</a> OKJKT V87 hadir dengan dukungan akses permainan online selama 24 jam penuh. Pengguna dapat menikmati berbagai fitur permainan kapan saja tanpa batasan waktu tertentu.</p> 2024<p style="text-align: justify;">Selain memiliki akses yang fleksibel, aplikasi ini juga dilengkapi sistem ringan yang membuat penggunaan menjadi lebih efisien. Dengan kualitas server yang stabil, pengalaman bermain terasa lebih nyaman dan lancar.</p> 2025 2026 2027 2028<p style="text-align: justify;"><a href="https://thebunkersimulator.com/">OKJKT</a></p> 2029 2030</div> 2031 </div> 2032 2033 </div> 2034</section> 2035 2036<style> 2037@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;600;800&display=swap'); 2038 2039.cyber-mecha { 2040 font-family: 'Orbitron', sans-serif; 2041 max-width: 900px; 2042 margin: 40px auto; 2043 padding: 25px; 2044 border-radius: 18px; 2045 background: radial-gradient(circle at top, #911a20, #000000 70%); 2046 border: 1px solid rgba(0,150,255,0.45); 2047 box-shadow: 0 0 25px rgba(0,150,255,0.35), 2048 inset 0 0 25px rgba(0,90,255,0.15); 2049 position: relative; 2050 overflow: hidden; 2051} 2052 2053/* scanline effect */ 2054.cyber-mecha::before { 2055 content: ""; 2056 position: absolute; 2057 inset: 0; 2058 background: repeating-linear-gradient( 2059 to bottom, 2060 rgba(0,180,255,0.04), 2061 rgba(0,180,255,0.04) 1px, 2062 transparent 1px, 2063 transparent 3px 2064 ); 2065 pointer-events: none; 2066} 2067 2068/* TITLE */ 2069.pd-full-desc-title { 2070 text-align: center; 2071 font-size: 22px; 2072 font-weight: 800; 2073 color: #6fd6ff; 2074 margin-bottom: 25px; 2075 text-shadow: 0 0 10px #00bfff, 0 0 25px #007bff; 2076 letter-spacing: 1px; 2077} 2078 2079/* FAQ BOX */ 2080.faq-item { 2081 margin-bottom: 15px; 2082 border-radius: 12px; 2083 border: 1px solid rgba(0,150,255,0.3); 2084 background: rgba(0,20,50,0.45); 2085 backdrop-filter: blur(8px); 2086 transition: all 0.3s ease; 2087 overflow: hidden; 2088} 2089 2090.faq-item:hover { 2091 border-color: rgba(0,180,255,0.8); 2092 box-shadow: 0 0 15px rgba(0,150,255,0.5); 2093} 2094 2095/* QUESTION */ 2096.faq-question { 2097 padding: 14px 18px; 2098 cursor: pointer; 2099 font-size: 14px; 2100 color: #bfe9ff; 2101 position: relative; 2102} 2103 2104.faq-question::after { 2105 content: "ï¼"; 2106 position: absolute; 2107 right: 15px; 2108 color: #00bfff; 2109 font-weight: bold; 2110 transition: 0.3s; 2111} 2112 2113/* ACTIVE */ 2114.faq-item.active .faq-question::after { 2115 content: "â"; 2116} 2117 2118/* ANSWER */ 2119.faq-answer { 2120 max-height: 0; 2121 overflow: hidden; 2122 padding: 0 18px; 2123 font-size: 13px; 2124 color: #d9f4ff; 2125 line-height: 1.6; 2126 transition: all 0.35s ease; 2127} 2128 2129.faq-item.active .faq-answer { 2130 max-height: 200px; 2131 padding: 10px 18px 18px; 2132} 2133 2134/* glow text */ 2135.glow { 2136 color: #00bfff; 2137 text-shadow: 0 0 8px #00bfff, 0 0 18px #007bff; 2138} 2139 2140.glow-strong { 2141 color: #66e0ff; 2142 text-shadow: 0 0 10px #00eaff, 0 0 25px #ff4217; 2143} 2144</style> 2145 2146<section class="pd-full-description cyber-mecha" id="deskripsi"> 2147 2148 <h2 class="pd-full-desc-title"> 2149 FAQ 2150 </h2> 2151 2152<div class="pd-full-desc-body"> 2153 2154 <div class="faq-item"> 2155 <div class="faq-question">Apa itu OKJKT?</div> 2156 <div class="faq-answer"> 2157 OKJKT Merupakan Situs OKJKT - APK Slot V87 Mendukung Akses Permainan 24 Jam 2158 </div> 2159 </div> 2160 2161<div class="faq-item"> 2162 <div class="faq-question">Apakah ada link download APK Slot?</div> 2163 <div class="faq-answer"> 2164 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. 2165 </div> 2166</div> 2167</div> 2168 2169</div> 2170 2171</section> 2172
2173<script> 2174document.querySelectorAll(".faq-question").forEach(q => { 2175 q.addEventListener("click", () => { 2176 const item = q.parentElement; 2177 item.classList.toggle("active"); 2178 }); 2179}); 2180</script>
2180 2181<style> 2182@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@500;700;900&display=swap'); 2183 2184.cyber-mecha { 2185 max-width: 800px; 2186 margin: 40px auto; 2187 background: radial-gradient(circle at top, #911a20, #d18629 70%); 2188 border-radius: 16px; 2189 border: 1px solid rgba(0,150,255,0.5); 2190 box-shadow: 2191 0 0 25px rgba(0,150,255,0.4), 2192 inset 0 0 20px rgba(0,90,255,0.2); 2193 padding: 25px; 2194 font-family: 'Orbitron', sans-serif; 2195 color: #d8f6ff; 2196 position: relative; 2197 overflow: hidden; 2198} 2199 2200/* scanline overlay */ 2201.cyber-mecha::before { 2202 content: ""; 2203 position: absolute; 2204 inset: 0; 2205 background: repeating-linear-gradient( 2206 to bottom, 2207 rgba(0,180,255,0.05), 2208 rgba(0,180,255,0.05) 1px, 2209 transparent 1px, 2210 transparent 3px 2211 ); 2212 pointer-events: none; 2213} 2214 2215/* TITLE */ 2216.pd-full-desc-title { 2217 text-align: center; 2218 font-size: 22px; 2219 color: #6fd6ff; 2220 letter-spacing: 2px; 2221 text-shadow: 0 0 12px #00bfff, 0 0 25px #007bff; 2222 margin-bottom: 20px; 2223} 2224 2225/* SUB HEADER */ 2226.mecha-header h3 { 2227 text-align: center; 2228 font-size: 18px; 2229 color: #8fdfff; 2230 text-shadow: 0 0 10px #00bfff; 2231 margin-bottom: 15px; 2232} 2233 2234/* IMAGE */ 2235.mecha-image img { 2236 width: 100%; 2237 border-radius: 10px; 2238 border: 1px solid rgba(0,150,255,0.6); 2239 box-shadow: 0 0 20px rgba(0,150,255,0.4); 2240 margin-bottom: 20px; 2241} 2242 2243/* CONTENT */ 2244.mecha-content p { 2245 font-size: 14px; 2246 line-height: 1.8; 2247 margin-bottom: 14px; 2248 color: #d9f4ff; 2249} 2250 2251/* GLOW TEXT */ 2252.glow { 2253 color: #00bfff; 2254 text-shadow: 0 0 8px #00bfff, 0 0 18px #007bff; 2255 font-weight: 600; 2256} 2257 2258.glow-strong { 2259 color: #66e0ff; 2260 text-shadow: 2261 0 0 10px #00eaff, 2262 0 0 25px #ff4217; 2263 font-weight: 700; 2264} 2265 2266/* FINAL LINE */ 2267.final-line { 2268 margin-top: 18px; 2269 padding: 10px; 2270 border: 1px solid rgba(0,150,255,0.5); 2271 background: rgba(0,80,255,0.08); 2272 border-radius: 8px; 2273 text-align: center; 2274 box-shadow: 0 0 12px rgba(0,150,255,0.25); 2275} 2276</style> 2277 2278 2279 2280 <section class="pd-related-full"> 2281 <h2 class="pd-related-title">Produk Terkait</h2> 2282 <div class="pd-related-grid pd-related-grid--full"> 2283 <a class="pd-related-card" href="https://suratdarianas.com/"> 2284 <div class="thumb"> 2285 <img src="https://res.cloudinary.com/dkm9uto9q/image/upload/v1778901432/redepo20mobile2_vhoxnz.png" alt="APK SLOT"> 2286 <span class="mini-disc">-2%</span> </div> 2287 <div class="info"> 2288 <h3>APK SLOT</h3> 2289 <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"> 2290 <span class="final">Rp 11.500.000</span> 2291 <span class="ori">Rp 12.799.000</span> 2292 </span> 2293 <span class="sold">Terjual 200+</span> <span class="stock-dot low" title="Stok Terbatas"></span> 2294 </div> 2295 </a> 2296 <a class="pd-related-card" href="https://suratdarianas.com/"> 2297 <div class="thumb"> 2298 <img src="https://res.cloudinary.com/dkm9uto9q/image/upload/v1778901432/redepo20mobile2_vhoxnz.png" alt="Slot Resmi"> 2299 <span class="mini-disc">-1%</span> </div> 2300 <div class="info"> 2301 <h3>Slot Resmi</h3> 2302 <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"> 2303 <span class="final">Rp 22.887.000</span> 2304 <span class="ori">Rp 21.999.000</span> 2305 </span> 2306 <span class="sold">Terjual 20+</span>
2306 <span class="stock-dot out" title="Habis"></span> 2307 </div> 2308 </a> 2309 <a class="pd-related-card" href="https://suratdarianas.com/"> 2310 <div class="thumb"> 2311 <img src="https://res.cloudinary.com/dkm9uto9q/image/upload/v1778901432/redepo20mobile2_vhoxnz.png" alt="SLOT TERPERCAYA"> 2312 <span class="mini-disc">-1%</span> </div> 2313 <div class="info"> 2314 <h3>SLOT TERPERCAYA</h3> 2315 <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"> 2316 <span class="final">Rp 23.600.000</span> 2317 <span class="ori">Rp 21.399.000</span> 2318 </span> 2319 <span class="sold">Terjual 6</span> <span class="stock-dot ready" title="Ready"></span> 2320 </div> 2321 </a> 2322 <a class="pd-related-card" href="https://suratdarianas.com/"> 2323 <div class="thumb"> 2324 <img src="https://res.cloudinary.com/dkm9uto9q/image/upload/v1778901432/redepo20mobile2_vhoxnz.png" alt="SLOT GACOR"> 2325 <span class="mini-disc">-1%</span> </div> 2326 <div class="info"> 2327 <h3>SLOT GACOR</h3> 2328 <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"> 2329 <span class="final">Rp 18.800.000</span> 2330 <span class="ori">Rp 19.799.000</span> 2331 </span> 2332 <span class="sold">Terjual 5</span> <span class="stock-dot ready" title="Ready"></span> 2333 </div> 2334 </a> 2335 <a class="pd-related-card" href="https://suratdarianas.com/"> 2336 <div class="thumb"> 2337 <img src="https://res.cloudinary.com/dkm9uto9q/image/upload/v1778901432/redepo20mobile2_vhoxnz.png" alt="SLOT ONLINE"> 2338 <span class="mini-disc">-1%</span> </div> 2339 <div class="info"> 2340 <h3>SLOT ONLINE</h3> 2341 <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"> 2342 <span class="final">Rp 28.600.080</span> 2343 <span class="ori">Rp 27.999.000</span> 2344 </span> 2345 <span class="sold">Terjual 6</span> <span class="stock-dot low" title="Stok Terbatas"></span> 2346 </div> 2347 </a> 2348 <a class="pd-related-card" href="https://suratdarianas.com/"> 2349 <div class="thumb"> 2350 <img src="https://res.cloudinary.com/dkm9uto9q/image/upload/v1778901432/redepo20mobile2_vhoxnz.png" alt="OKJKT"> 2351 <span class="mini-disc">-1%</span> </div> 2352 <div class="info"> 2353 <h3>OKJKT</h3> 2354 <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"> 2355 <span class="final">Rp 17.888.000</span> 2356 <span class="ori">Rp 18.499.000</span> 2357 </span> 2358 <span class="stock-dot low" title="Stok Terbatas"></span> 2359 </div> 2360 </a> 2361 2362 </div> 2363 </section> 2364 2365 <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">
2365<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> 2366 2367 <button type="button" 2368 class="pd-scroll-top" 2369 id="pd-scroll-top" 2370 aria-label="Kembali ke atas" 2371 title="Kembali ke atas"> 2372 <svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true"> 2373 <path fill="currentColor" d="M7.41 14.59 12 10l4.59 4.59L18 13.17l-6-6-6 6z"/> 2374 </svg> 2375 </button> 2376</main> 2377 2378<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">
2378<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://suratdarianas.com/" readonly><button type="button" class="pd-share-copy-btn" id="pd-share-copy-url-btn"><svg viewBox="0 0 24 24" width="16" height="16"><path fill="currentColor" d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg><span class="pd-share-copy-text">Salin</span></button></div></div></div></div></div> 2379 2380<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;
2380left: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> 2381<style> 2382.toast .msg { word-break: break-word; overflow-wrap: anywhere; } 2383 2384.toast-root { bottom: max(12px, env(safe-area-inset-bottom, 12px)); } 2385 2386@media (max-width: 540px) { 2387 .toast-root { 2388 left: 0; right: 0; transform: none; 2389 padding: 0 12px; 2390 bottom: calc(max(12px, env(safe-area-inset-bottom, 12px)) + var(--fab-offset, 72px)); 2391 max-width: none; 2392 } 2393 .toast { 2394 grid-template-columns: 1fr; /* 1 kolom */ 2395 position: relative; 2396 padding: 14px 14px 12px 14px; 2397 border-radius: 16px; 2398 } 2399 .toast .ico { 2400 position: absolute; left: 14px; top: 14px; 2401 margin: 0; transform: translateY(1px); 2402 } 2403 .toast .cnt { padding-left: 34px; } 2404 .toast .ttl { font-size: 15px; margin-bottom: 6px; } 2405 .toast .msg { font-size: 13px; opacity: .96; } 2406 .toast .actions { 2407 margin-top: 12px; gap: 10px; width: 100%; 2408 display: grid; grid-template-columns: 1fr 1fr; 2409 } 2410 .toast .btn { width: 100%; min-width: 0; padding: 10px 0; } 2411 .toast .close { position: absolute; right: 6px; top: 6px; } 2412} 2413</style> 2414
2415<script nonce="se3iyzEHMc9FQEB4wSyd0w=="> 2416(function adjustToastFabOffset(){ 2417 const root = document.getElementById('toastRoot'); 2418 if (!root) return; 2419 2420 function isVisible(el){ 2421 if (!el) return false; 2422 const cs = getComputedStyle(el); 2423 if (cs.display === 'none' || cs.visibility === 'hidden' || cs.opacity === '0') return false; 2424 const r = el.getBoundingClientRect(); 2425 return r.width > 0 && r.height > 0; 2426 } 2427 2428 function update(){ 2429 const fab = document.getElementById('pd-mobile-fab'); 2430 let extra = 16; 2431 if (isVisible(fab)) { 2432 const h = Math.round(fab.getBoundingClientRect().height) || 56; 2433 extra = h + 16; // FAB height + margin 2434 } 2435 root.style.setProperty('--fab-offset', extra + 'px'); 2436 } 2437 2438 window.addEventListener('resize', update, { passive: true }); 2439 const fab = document.getElementById('pd-mobile-fab'); 2440 if (window.ResizeObserver && fab) { 2441 const ro = new ResizeObserver(update); 2442 ro.observe(fab); 2443 } 2444 2445 update(); 2446})(); 2447</script>
2447 2448<div class="toast-root" id="toastRoot" aria-live="polite" aria-atomic="true"></div> 2449
2450<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>'} 2451window.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>`; 2452 2453 const close = ()=> { 2454 if (!el.parentNode) return; 2455 el.style.transition = 'transform .2s ease, opacity .2s ease'; 2456 el.style.opacity = '0'; el.style.transform = 'translateY(10px)'; 2457 setTimeout(()=>{ if (el.parentNode) el.parentNode.removeChild(el); }, 220); 2458 }; 2459 2460 el.querySelector('.close').addEventListener('click', close); 2461 el.querySelectorAll('.actions .btn').forEach(btn=>{ 2462 btn.addEventListener('click', ()=>{ 2463 const lab = btn.getAttribute('data-act'); 2464 try { 2465 (o.actions||[]).forEach(a=>{ if (a.label===lab && typeof a.onClick==='function') a.onClick(); }); 2466 } catch(_){} 2467 close(); 2468 }); 2469 }); 2470 2471 root.appendChild(el); 2472 setTimeout(close, o.duration); 2473 return el; 2474 }; 2475})(); 2476 2477const _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
2477p2-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(' / '):''} 2478function encodeVariantHash(id){if(!id||id<=0)return '';const xor=id^0x4A5D;return xor.toString(36)} 2479function decodeVariantHash(hash){if(!hash)return 0;const xor=parseInt(hash,36);return isNaN(xor)?0:xor^0x4A5D} 2480 2481function 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})} 2482 2483function executeBuyNowLegacy(id,variantId){const a=getVariantSummaryText(),b=(function(){const c=document.getElementById('pd-sku');return c?c.textContent.trim():_0x5e6f})(); 2484 2485 let willRedirect = false; 2486 try { 2487 if (window.addToCart) { 2488 window.addToCart(id, 1, variantId); 2489 willRedirect = false; 2490 } 2491 } catch(_){} 2492 2493 if (willRedirect) { 2494 showToast({ 2495 type: 'info', 2496 title: 'Menuju Keranjang', 2497 message: `<strong>${escapeHtml(PD_NAME)}</strong>${variantText?` · <em>${escapeHtml(variantText)}</em>`:''}<br>SKU: ${escapeHtml(skuText)} · Qty: 1`, 2498 duration: 1800 2499 }); 2500 setTimeout(()=>{ window.location.href='/keranjang'; }, 1200); 2501 } else { 2502 showToast({ 2503 type: 'warn', 2504 title: 'Fitur Beli Langsung Segera Hadir', 2505 message: `Sementara ini Anda bisa menambahkan produk ke keranjang terlebih dahulu.<br><strong>${escapeHtml(PD_NAME)}</strong>${variantText?` · <em>${escapeHtml(variantText)}</em>`:''}`, 2506 duration: 6000, 2507 actions: [ 2508 { label: '+ Keranjang', onClick: ()=> { try{ if (window.addToCart) window.addToCart(id,1,variantId); }catch(_){} } }, 2509 { label: 'Hubungi CS', variant: 'alt', onClick: ()=> { window.open('https://wa.me/6281380009898','_blank'); } } 2510 ] 2511 }); 2512 } 2513} 2514 2515document.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)})}}); 2516 2517function _0x2m3n(s){return String(s||'').replace(/[&<>"']/g,m=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[m]))} 2518 2519(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')}})})(); 2520 2521(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;
2521slides.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})})(); 2522 2523/* ================= Simulasi Cicilan ================= */ 2524(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'} 2525 2526function _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'} 2527 2528card.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)}); 2529 2530window.instSetBasePrice=function(newPrice){setBasePrice(newPrice);_0x4o5p(activeBank())};_0x4o5p(activeBank()); 2531})(); 2532 2533/* ====== Fokus gambar varian ====== */ 2534function _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 ''}}} 2535function _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}} 2536 if (c){ 2537 const targetName = _0x8s9t(url); 2538 const slideImg = Array.from(c.querySelectorAll('img')).find(im => _0x8s9t(im.src) === targetName); 2539 if (slideImg){ 2540 2541 try { 2542 const container = c; 2543 const imgRect = slideImg.getBoundingClientRect(); 2544 const contRect = container.getBoundingClientRect(); 2545 const offsetLeft = slideImg.offsetLeft - container.offsetLeft; 2546 const center = offsetLeft - (container.clientWidth - slideImg.clientWidth) / 2; 2547 container.scrollTo({ left: Math.max(0, center), behavior: 'smooth' }); 2548 } catch(_){ 2549 2550 slideImg.scrollIntoView({ behavior:'smooth', inline:'center', block:'nearest' }); 2551 } 2552 } 2553 } 2554} 2555function findImageForVariant(variant){ 2556 if (!variant || !variant.attrs) return null; 2557 const tokens = []; 2558 try{ 2559 Object.values(variant.attrs).forEach(v=>{ 2560 if (!v) return; 2561 const raw = String(v); 2562 tokens.push(raw); 2563 tokens.push(normalize(raw)); 2564 }); 2565 }catch(_){} 2566 if (variant.sku){ 2567 tokens.push(String(variant.sku)); 2568 tokens.push(normalize(String(variant.sku))); 2569 } 2570 if (variant.image_url) { 2571 tokens.push(String(variant.image_url)); 2572 } 2573 let best = null; 2574 let bestScore = -1; 2575 2576 for (const g of (galleryData||[])){ 2577 const slugN = normalize(g.slug||''); 2578 const altN = normalize(g.alt||''); 2579 const file = _0x8s9t(g.url||''); 2580 const fileN = normalize(file); 2581 const imgU = g.url; 2582 2583 for (const t of tokens){ 2584 const tN = normalize(t); 2585 if (!tN) continue; 2586 2587 let score = -1; 2588 if (imgU === tN) score = 300; 2589 if (slugN && slugN === tN) score = 300; 2590 else if (fileN && fileN.includes(tN)) score = 200; 2591 else if (altN && altN.includes(tN)) score = 120; 2592 2593 if (score > bestScore){ 2594 bestScore = score; 2595 best = g; 2596 } 2597 if (bestScore >= 300) break; 2598 } 2599 if (bestScore >= 300) break; 2600 } 2601 return bestScore >= 120 ? best : null; 2602} 2603function _0xey3z(variant){const a=_0xcw2x(variant);if(a&&a.url){_0xau1v(a.url,a.alt||'')}} 2604 2605/* ====== Layout mobile ====== */ 2606(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; 2607 2608 let pricePlaced = false;
2609 let varPlaced = false; 2610 let titlePlaced = false; 2611 let promoPlaced = false; 2612 const mq = window.matchMedia('(max-width: 640px)'); 2613 2614 function apply(){ 2615 if (mq.matches) { 2616 if (!titlePlaced && a && titleRow && d.contains(titleRow)) { try{a.appendChild(titleRow);titlePlaced=true;}catch(_){} } 2617 if (!pricePlaced && a && b) { try{a.appendChild(b);pricePlaced=true;}catch(_){} } 2618 if (!varPlaced && f && d && e) { 2619 try{ 2620 f.hidden = false; 2621 if (i && !f.contains(i)) f.appendChild(i); 2622 if (g && !f.contains(g)) f.appendChild(g); 2623 if(d.contains(e))d.insertBefore(f, e); 2624 varPlaced = true; 2625 }catch(_){} 2626 } 2627 if (!promoPlaced && promoBanner && compareSection && compareSection.parentNode) { 2628 try{ 2629 compareSection.parentNode.insertBefore(promoBanner, compareSection); 2630 promoPlaced = true; 2631 }catch(_){} 2632 } 2633 } else { 2634 if (titlePlaced && titleRow && d) { 2635 try{ 2636 const vcombined = document.getElementById('pd-variant-combined'); 2637 if (vcombined && d.contains(vcombined)) { 2638 d.insertBefore(titleRow, vcombined); 2639 } else { 2640 d.insertBefore(titleRow, d.firstChild); 2641 } 2642 titlePlaced=false; 2643 }catch(_){} 2644 } 2645 if (pricePlaced && b && c && c.parentNode) { 2646 try{c.parentNode.insertBefore(b, c.nextSibling);pricePlaced=false;}catch(_){} 2647 } 2648 if (varPlaced) { 2649 try{ 2650 if (i && j && j.parentNode && !j.parentNode.contains(i)) j.parentNode.insertBefore(i, j.nextSibling); 2651 if (g && h && h.parentNode && !h.parentNode.contains(g)) h.parentNode.insertBefore(g, h.nextSibling); 2652 if (f) { f.hidden = true; f.innerHTML = ''; } 2653 varPlaced = false; 2654 }catch(_){} 2655 } 2656 if (promoPlaced && promoBanner && b) { 2657 try{ 2658 b.appendChild(promoBanner); 2659 promoPlaced = false; 2660 }catch(_){} 2661 } 2662 } 2663 } 2664 2665 mq.addEventListener ? mq.addEventListener('change', apply) : mq.addListener(apply); 2666 apply(); 2667 2668 const fab = document.getElementById('pd-mobile-fab'); 2669 if (fab) { 2670 const pid = parseInt(fab.getAttribute('data-pid')||'0',10) || 325; 2671 const btnCart = document.getElementById('mf-cart'); 2672 2673 if (btnCart) btnCart.addEventListener('click', function(){ 2674 const varInput = document.getElementById('pd-variant-id'); 2675 const variantId = varInput ? parseInt(varInput.value||'0',10) : 0; 2676 try { if (window.addToCart) addToCart(pid, 1, variantId); } catch(_){} 2677 const variantText = getVariantSummaryText(); 2678 const skuText = (function(){ const el=document.getElementById('pd-sku'); return el?el.textContent.trim():PD_SKU; })(); 2679 showToast({ 2680 type: 'success', 2681 title: 'Berhasil ditambahkan ke Keranjang', 2682 message: `<strong>${escapeHtml(PD_NAME)}</strong>${variantText?` · <em>${escapeHtml(variantText)}</em>`:''}<br>SKU: ${escapeHtml(skuText)} · Qty: 1`, 2683 duration: 5000, 2684 actions: [ 2685 { label: 'Lihat Keranjang', onClick: ()=> { window.location.href = '/keranjang'; } }, 2686 { label: 'Lanjut Belanja', variant: 'alt', onClick: ()=>{} } 2687 ] 2688 }); 2689 }); 2690 } 2691})(); 2692 2693/* ====== Auto-hide installment banner if sidebar too tall (Desktop only) ====== */ 2694(function(){ 2695 function adjustSidebarBanner() { 2696 if (window.innerWidth <= 768) return; 2697 const sidebar = document.querySelector('.pd-sidebar'); 2698 const infoCard = document.querySelector('.pd-info-card'); 2699 const banner = document.querySelector('.pd-side-card.inst-alt-banner.inst-alt-banner--compact'); 2700 if (!sidebar || !infoCard || !banner) return; 2701 const sidebarHeight = sidebar.offsetHeight; 2702 const infoCardHeight = infoCard.offsetHeight; 2703 if (sidebarHeight > infoCardHeight) { 2704 banner.style.display = 'none'; 2705 } else { 2706 banner.style.display = ''; 2707 } 2708 } 2709 if (document.readyState === 'loading') { 2710 document.addEventListener('DOMContentLoaded', adjustSidebarBanner); 2711 } else { 2712 adjustSidebarBanner(); 2713 } 2714 let resizeTimer; 2715 window.addEventListener('resize', function() { 2716 clearTimeout(resizeTimer); 2717 resizeTimer = setTimeout(adjustSidebarBanner, 250); 2718 });
2719 const pwpSection = document.getElementById('pwp-deals-section'); 2720 if (pwpSection) { 2721 const observer = new MutationObserver(function(mutations) { 2722 let shouldRecheck = false; 2723 mutations.forEach(function(mutation) { 2724 if (mutation.type === 'attributes' && mutation.attributeName === 'hidden') { 2725 shouldRecheck = true; 2726 } else if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { 2727 shouldRecheck = true; 2728 } 2729 }); 2730 if (shouldRecheck) { 2731 setTimeout(adjustSidebarBanner, 100); 2732 } 2733 }); 2734 observer.observe(pwpSection, { 2735 attributes: true, 2736 childList: true, 2737 subtree: true 2738 }); 2739 } 2740 window.adjustSidebarBanner = adjustSidebarBanner; 2741})(); 2742 2743/* ====== Global constants ====== */ 2744const IS_DIGITAL=false; 2745const IS_PREORDER=false; 2746 2747/* ====== Variants state (REVISED) ====== */ 2748(function initVariants(){ 2749const _0x7g8h=[];window.variants=_0x7g8h; 2750window.isPreorderProduct=false; 2751 const attrOrder = []; 2752 2753 if (!variants.length || !attrOrder.length) return; 2754 2755 function comboKey(sel){ 2756 return attrOrder.map(a => a + '=' + (sel[a] ?? '')).join('|'); 2757 } 2758 2759 const variantMap = {};
2760 variants.forEach(v=>{ 2761 const key = comboKey(v.attrs); 2762 variantMap[key] = v; 2763 }); 2764 2765 function readSelection(){ 2766 const sel = {}; 2767 attrOrder.forEach(a=>{ 2768 const r = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio]:checked`); 2769 sel[a] = r ? r.value : ''; 2770 }); 2771 return sel; 2772 } 2773 2774 function findVariant(sel){ 2775 return variantMap[comboKey(sel)] || null; 2776 } 2777 2778 function autoFillMissing(sel){ 2779 let changed = false; 2780 for (const a of attrOrder) { 2781 if (sel[a]) continue; 2782 const possible = []; 2783 const seen = new Set(); 2784 variants.forEach(v=>{ 2785 let ok = true; 2786 for (const a2 of attrOrder) { 2787 if (a2 === a) continue; 2788 if (sel[a2] && v.attrs[a2] !== sel[a2]) { ok = false; break; } 2789 } 2790 if (ok) { 2791 const val = v.attrs[a]; 2792 if (!seen.has(val)) { seen.add(val); possible.push(val); } 2793 } 2794 }); 2795 if (possible.length === 1) { 2796 const val = possible[0]; 2797 const input = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio][value="${CSS.escape(val)}"]`); 2798 if (input && !input.checked) { input.checked = true; sel[a] = val; changed = true; } 2799 } 2800 } 2801 return changed; 2802 } 2803 2804 function rupiah(n){ 2805 n = parseInt(n||0,10)||0; 2806 return 'Rp ' + n.toString().replace(/\B(?=(\d{3})+(?!\d))/g,'.'); 2807 } 2808 2809 function focusGalleryByUrl(imageUrl) { 2810 const isMobile = window.matchMedia && window.matchMedia('(max-width: 640px)').matches; 2811 if (isMobile) { 2812 _0xau1v(imageUrl); 2813 return; 2814 } 2815 2816 const gallery = document.getElementById('pd-thumb-gallery'); 2817 const targetName = _0x8s9t(imageUrl); 2818 2819 if (gallery) { 2820 const btns = Array.from(gallery.querySelectorAll('.pd-thumb-btn')); 2821 const btn = btns.find(b => _0x8s9t(b.getAttribute('data-full') || '') === targetName); 2822 if (btn) { btn.click(); return; } 2823 } 2824 2825 _0xau1v(imageUrl); 2826 } 2827 2828 2829function formatStockLabel(n){n=parseInt(n||0,10)||0;return(n>10)?'10+':String(n)} 2830function 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(_){}} 2831 2832 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)} 2833 2834 function applyVariant(v, focusImage = true){ 2835 const elCur = document.getElementById('pd-price-current'); 2836 const elOri = document.getElementById('pd-price-original'); 2837 const elDisc = document.getElementById('pd-discount-badge'); 2838 const elSku = document.getElementById('pd-sku'); 2839 const elStock= document.getElementById('pd-stock-badge'); 2840 const elQty = document.getElementById('qty'); 2841 const btnAdd = document.getElementById('btn-add-cart'); 2842 const btnBuy = document.getElementById('btn-buy'); 2843 const hidVar = document.getElementById('pd-variant-id'); 2844 2845 const mfCart= document.getElementById('mf-cart'); 2846 const mfBuy = document.getElementById('mf-buy'); 2847 const fab = document.getElementById('pd-mobile-fab'); 2848 2849 if (hidVar) hidVar.value = v ? v.id : 0; 2850 if (elCur) elCur.textContent = rupiah(v ? v.final : 0); 2851 if (elSku && v && v.sku) elSku.textContent = v.sku; 2852 2853 if (v && v.ori > v.final) { 2854 if (elOri) { elOri.style.display='inline'; elOri.textContent = rupiah(v.ori); } 2855 if (elDisc) { elDisc.style.display='inline'; elDisc.textContent = '-' + (v.disc||0) + '%'; } 2856 } else { 2857 if (elOri) elOri.style.display='none'; 2858 if (elDisc) elDisc.style.display='none'; 2859 } 2860 2861 const stock = v ? (parseInt(v.stock||0,10)||0) : 0; 2862 let effectiveStock = stock; 2863 let isActivePreorder = false; 2864 if (window.isPreorderProduct && v && 'preorder_remaining' in v && v.preorder_remaining !== null) { 2865 effectiveStock = parseInt(v.preorder_remaining, 10); 2866 if (isNaN(effectiveStock)) effectiveStock = 0; 2867 isActivePreorder = true; 2868 } 2869 if (elStock){ 2870 elStock.classList.remove('in','out'); 2871 if (effectiveStock>0){ 2872 elStock.classList.add('in'); 2873 elStock.textContent = IS_DIGITAL ? 'Tersedia' : (isActivePreorder ? 'Sisa Slot: ' + effectiveStock : 'Stok: ' + formatStockLabel(effectiveStock)); 2874 } else { 2875 elStock.classList.add('out'); 2876 elStock.textContent = 'Habis'; 2877 } 2878 } 2879 if (elQty){ 2880 elQty.max = String(effectiveStock>0?effectiveStock:0); 2881 if (effectiveStock<=0) { elQty.value = '0'; elQty.disabled = true; } 2882 else { if (parseInt(elQty.value||'1',10) < 1) elQty.value='1'; elQty.disabled=false; } 2883 } 2884 2885 const shouldDisable = !(v && effectiveStock>0); 2886 const updateButtons = () => { 2887 const btnAddCart = document.getElementById('btn-add-cart'); 2888 const btnBuyNow = document.getElementById('btn-buy'); 2889 const mobileCart = document.getElementById('mf-cart'); 2890 const mobileBuy = document.getElementById('mf-buy'); 2891 [btnAddCart, btnBuyNow, mobileCart, mobileBuy].forEac
2891h(btn => { 2892 if (!btn) return; 2893 if (shouldDisable) { 2894 btn.disabled = true; 2895 btn.setAttribute('disabled', 'disabled'); 2896 btn.classList.add('stock-disabled'); 2897 btn.setAttribute('data-stock-blocked', 'true'); 2898 btn.setAttribute('data-stock-reason', window.isPreorderProduct ? 'Pre-order habis' : 'Stok habis'); 2899 } else { 2900 btn.disabled = false; 2901 btn.removeAttribute('disabled'); 2902 btn.classList.remove('stock-disabled'); 2903 btn.removeAttribute('data-stock-blocked'); 2904 btn.removeAttribute('data-stock-reason'); 2905 } 2906 }); 2907 }; 2908 updateButtons(); 2909 setTimeout(updateButtons, 10); 2910 setTimeout(updateButtons, 50); 2911 setTimeout(updateButtons, 100); 2912 if (mfBuy && v) { 2913 const voucherBtn = document.getElementById('btn-buy-voucher'); 2914 const voucherCode = fab ? fab.dataset.voucherCode : ''; 2915 let voucherDiscount = 0; 2916 2917 if (voucherBtn && voucherCode) { 2918 const vType = voucherBtn.dataset.voucherType; 2919 const vValue = parseFloat(voucherBtn.dataset.voucherValue) || 0; 2920 const vMax = parseFloat(voucherBtn.dataset.voucherMax) || 0; 2921 const finalPrice = v.final || 0; 2922 if (vType && vValue > 0) { 2923 voucherDiscount = calcVoucherDisc(vType, vValue, finalPrice, vMax); 2924 if (fab) fab.dataset.voucherValue = voucherDiscount.toString(); 2925 } 2926 } 2927 2928 const finalPrice = v.final || 0; 2929 const textEl = mfBuy.querySelector('.mf-buy-text'); 2930 const priceEl = mfBuy.querySelector('.mf-buy-price'); 2931 2932 if (effectiveStock > 0) { 2933 if (IS_PREORDER) { 2934 if (textEl) textEl.textContent = 'Pre Order Sekarang'; 2935 if (priceEl) priceEl.textContent = rupiah(finalPrice); 2936 } else if (voucherCode && voucherDiscount > 0) { 2937 if (textEl) textEl.textContent = 'Beli dengan Voucher'; 2938 if (priceEl) priceEl.textContent = rupiah(Math.max(0, finalPrice - voucherDiscount)); 2939 } else { 2940 if (textEl) textEl.textContent = 'Beli Sekarang'; 2941 if (priceEl) priceEl.textContent = rupiah(finalPrice); 2942 } 2943 } else { 2944 if (textEl) textEl.textContent = 'Stok Habis'; 2945 if (priceEl) priceEl.textContent = rupiah(finalPrice); 2946 } 2947 } 2948 2949 const isMobile = window.initMobile ?? 0; 2950 if (window.instSetBasePrice) window.instSetBasePrice(v ? (isMobile == '1' ? v.ori : v.final) : 0); 2951 if (window.updateSoldBySku) window.updateSoldBySku(v.sku); 2952 updateBranchPopover(v); 2953 if (v && v.image_url && focusImage) focusGalleryByUrl(v.image_url); 2954 if (v) { 2955 window.dispatchEvent(new CustomEvent('pd-variant-changed', { 2956 detail: { 2957 price: v.final, 2958 originalPrice: v.ori, 2959 discount: v.disc, 2960 stock: effectiveStock, 2961 sku: v.sku, 2962 variant_id: v.id 2963 } 2964 })); 2965 2966 const encodedHash = encodeVariantHash(v.id); 2967 if (encodedHash && window.history && window.history.replaceState) { 2968 const newHash = '#v=' + encodedHash; 2969 const newUrl = window.location.pathname + window.location.search + newHash; 2970 window.history.replaceState(null, '', newUrl); 2971 } 2972 } 2973 } 2974 2975 let sel = readSelection(); 2976 if (autoFillMissing(sel)) sel = readSelection(); 2977 2978 let v = findVariant(sel); 2979 if (!v) { 2980 const candidates = variants.filter(variant=>{ 2981 return attrOrder.every(a=>{ 2982 if (!sel[a]) return true; 2983 return variant.attrs[a] === sel[a]; 2984 }); 2985 }); 2986 if (candidates.length >= 1) { 2987 v = candidates[0]; 2988 attrOrder.forEach(a=> sel[a] = v.attrs[a]); 2989 attrOrder.forEach(a=>{ 2990 const val = sel[a]; 2991 const input = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio][value="${CSS.escape(val)}"]`); 2992 if (input) input.checked = true; 2993 }); 2994 } 2995 } 2996 2997 const initSel = readSelection(); 2998 const initVar = findVariant(initSel) || variants[0] || null; 2999 if (document.readyState === 'loading') { 3000 document.addEventListener('DOMContentLoaded', () => applyVariant(initVar, false)); 3001 } else { 3002 applyVariant(initVar, false); 3003 } 3004 3005function updateSummary(sel){Object.entries(sel).forEach(([a,val])=>{const el=document.getElementById('vs-'+a);if(el)el.textContent=val||'-'})} 3006 function refreshOptions(sel){ 3007 attrOrder.forEach(a=>{ 3008 const group = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"]`); 3009 if (!group) return; 3010 const chips = group.querySelectorAll('.v-chip'); 3011 chips.forEach(ch=>{ 3012 const val = ch.getAttribute('data-value'); 3013 const possible = variants.some(v=>{ 3014 if (v.attrs[a] !== val) return false; 3015 for (const a2 of attrOrder) { 3016 if (a2 === a) continue; 3017 if (sel[a2] && v.attrs[a2] !== sel[a2]) return false; 3018 } 3019 return true; 3020 }); 3021 const input = ch.querySelector('input[type=radio]'); 3022 const disabled = !possible; 3023 if (input) input.disabled = disabled; 3024 ch.classList.toggle('disabled', disabled); 3025 3026 let candidateVariant = null; 3027 if (possible) { 3028 candidateVariant = variants.find(v=>{ 3029 if (v.attrs[a] !== val) return false; 3030 for (const a2 of attrOrder) { 3031 if (a2 === a) continue; 3032 if (sel[a2] && v.attrs[a2] !== sel[a2]) return false; 3033 } 3034 return true; 3035 }); 3036 } 3037 const outOfStock = candidateVariant ? (window.isPreorderProduct && candidateVariant.preorder_remaining !== null ? candidateVariant.preorder_remaining <= 0 : candidateVariant.stock <= 0) : false; 3038 ch.classList.toggle('out', !disabled && outOfStock); 3039 const badge = ch.querySelector('.chip-badge'); 3040 if (badge) badge.hidden = !(candidateVariant && outOfStock); 3041 }); 3042 group.querySelectorAll('.v-chip').forEach(ch=>{ 3043 const input = ch.querySelector('input[type=radio]'); 3044 ch.classList.toggle('selected', input && input.checked); 3045 }); 3046 }); 3047 } 3048 updateSummary(sel); 3049 refreshOptions(sel); 3050 document.querySelectorAll('.v-chip').forEach(chip=>{const input=chip.querySelector('input[type=radio]');if(input&&input.checked){chip.classList.add('selected');}}); 3051 3052 const container = document.getElementById('pd-variants'); 3053 container && container.addEventListener('change', function(ev){ 3054 const radio = ev.target.closest('input[type=radio]'); 3055 if (!radio) return; 3056 sel = readSelection(); 3057 if (autoFillMissing(sel)) sel = readSelection(); 3058 const chosen = findVariant(sel); 3059 applyVariant(chosen || null, true); 3060 3061 updateSummary(sel); 3062 refreshOptions(sel); 3063 });
3064 3065window.applyVariant=applyVariant; 3066})(); 3067 3068(function cleanBrokenDescImages(){ 3069 const containers = [ 3070 document.querySelector('.pd-full-desc-body'), 3071 document.querySelector('.pd-short-desc') 3072 ].filter(Boolean); 3073 3074 containers.forEach(root => { 3075 const imgs = root.querySelectorAll('img'); 3076 imgs.forEach(img => { 3077 if (img.complete && img.naturalWidth === 0) { 3078 img.remove(); 3079 return; 3080 } 3081 img.addEventListener('error', () => { 3082 img.remove(); 3083 }, { once:true }); 3084 }); 3085 }); 3086})(); 3087 3088/* ====== Scroll To Top ====== */ 3089(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'})})})(); 3090 3091/* Format stok 10+ */ 3092function _0xk67l(n){n=parseInt(n||0,10)||0;return n>10?'10+':String(n)} 3093 3094/* Toggle popover stok per cabang */ 3095(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=''}} 3096function 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()} 3097a.addEventListener('click',function(h){h.preventDefault();b.classList.contains('show')?f():e()});if(c)c.addEventListener('click',f)})(); 3098 3099/* ===== Share Product Modal ===== */ 3100(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://suratdarianas.com/",g="Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y",h="Rp 20.789.000";const discountPercent=1;let i='';if(discountPercent>0){i=`ð¥ Lagi Promo Nih! Diskon ${discountPercent}%\n\n⨠${g}\nð° Cuma ${h} aja!\n\nð Buruan cek sebelum kehabisan!\nð `}else{i=`⨠Ada barang bagus nih!\n\nð¦ ${g}\nð¸ Harga: ${h}\n\nðï¸ Yuk, langsung cek!\nð `}function j(){b.classList.add('show');document.body.style.overflow='hidden'}function k(){b.classList.remove('show');document.body.style.overflow=''}if(a)a.addEventListener('click',j);if(z)z.addEventListener('click',j);if(c)c.addEventListener('click',k);b.addEventListener('click',function(l){if(l.target===b)k()});document.addEventListener('keydown',function(l){if(l.key==='Escape'&&b.classList.contains('show'))k()});b.addEventListener('click',function(l){const m=l.target.closest('[data-share]');if(!m)return;const n=m.getAttribute('data-share'),o=encodeURIComponent(f),p=e
3100ncodeURIComponent(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)}})(); 3101 3102/* ===== Embedding variants (server â client) ===== */ 3103(function(){ 3104 window.__PD_VARIANTS_WITH_BRANCH__ = []; 3105})(); 3106 3107/* ===== Helper: update angka popover ===== */ 3108function updateStockPopoverForVariant(v){ 3109 try{ 3110 const elMeg = document.getElementById('sp-qty-meg'); 3111 const elMdf = document.getElementById('sp-qty-mdf'); 3112 const elBda = document.getElementById('sp-qty-bda'); 3113 3114 if (typeof v?.smm === 'number' && elMeg) elMeg.textContent = formatStockLabel(Math.max(0, v.smm|0)); 3115 if (typeof v?.smf === 'number' && elMdf) elMdf.textContent = formatStockLabel(Math.max(0, v.smf|0)); 3116 if (typeof v?.sba === 'number' && elBda) elBda.textContent = formatStockLabel(Math.max(0, v.sba|0)); 3117 }catch(_){} 3118} 3119 3120/* ===== applyVariant: 10+ dan update popover ===== */ 3121(function patchApplyVariant(){ 3122 if (typeof applyVariant !== 'function') return; 3123 const original = applyVariant; 3124 window.applyVariant = function(v){ 3125 original(v); 3126 3127 try { 3128 const elStock = document.getElementById('pd-stock-badge'); 3129 if (elStock){ 3130 let txt = elStock.textContent || ''; 3131 let m = txt.match(/\d+/); 3132 if (m) { 3133 const n = parseInt(m[0]||'0',10)||0; 3134 elStock.textContent = (n>0) ? ('Stok: ' + formatStockLabel(n)) : 'Habis'; 3135 } 3136 } 3137 } catch(_){} 3138if(window.__PD_VARIANTS_WITH_BRANCH__&&v){const vv=window.__PD_VARIANTS_WITH_BRANCH__.find(x=>x.id===v.id)||v;updateStockPopoverForVariant(vv)} 3139 }; 3140})(); 3141 3142(function initCurrentVariantBranch(){ 3143 const list = window.__PD_VARIANTS_WITH_BRANCH__ || []; 3144 if (!list.length) return; 3145 const hid = document.getElementById('pd-variant-id'); 3146 const vid = hid ? parseInt(hid.value||'0',10) : 0; 3147 const current = list.find(x => x.id === vid) || list[0] || null; 3148 if (current) updateStockPopoverForVariant(current); 3149})(); 3150 3151(function(){ 3152 if (!window.ga4Ecomm) return; 3153 const catSegs = ["Komputer & Laptop","Laptop","Gaming"]; 3154 window.ga4Ecomm.viewItem({ 3155 currency: 'IDR', 3156 value: 20789000, 3157 item_id: "2S83N0880RID", 3158 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", 3159 item_brand: "Lenovo ",
3160 item_category: catSegs && catSegs.length ? catSegs.join(' / ') : '' 3161 }); 3162 })(); 3163 3164(function patchApplyVariantFocus(){ 3165 if (typeof applyVariant !== 'function') return; 3166 const original = applyVariant; 3167 window.applyVariant = function(v, focusImage = true){ 3168 3169 original(v, focusImage); 3170 3171 if (focusImage && v && v.image_url) { 3172 _0xau1v(v.image_url); 3173 } 3174 }; 3175})(); 3176 3177(function() { 3178 var soldMap = []; 3179 var soldTotalLabel = "Terjual 88"; 3180 3181 function formatSoldLabel(qty) { 3182 if (qty >= 1000000) { 3183 var v = Math.floor((qty / 100000) ) / 10; 3184 return 'Terjual ' + (String(v).replace('.', ',')) + 'jt+'; 3185 } 3186 if (qty >= 1000) { 3187 var v2 = Math.floor((qty / 100) ) / 10; 3188 return 'Terjual ' + (String(v2).replace('.', ',')) + 'rb+'; 3189 } 3190 if (qty >= 100) { 3191 var v2 = Math.floor((qty / 100) ) * 100; 3192 return 'Terjual ' + (String(v2).replace('.', ',')) + '+'; 3193 } 3194 if (qty >= 10) { 3195 var v2 = Math.floor((qty / 10) ) * 10; 3196 return 'Terjual ' + (String(v2).replace('.', ',')) + '+'; 3197 } 3198 return 'Terjual ' + (qty.toLocaleString('id-ID')); 3199 } 3200 3201 function updateSoldLabel(labelText) { 3202 var el = document.querySelector('#pd-sold-inline, [data-role="sold-chip"]'); 3203 if (el) el.textContent = labelText; 3204 } 3205 3206 window.updateSoldBySku = function(sku) { 3207 if (!sku || typeof sku !== 'string') { 3208 updateSoldLabel(soldTotalLabel); 3209 return; 3210 } 3211 var qty = soldMap[sku] || 0; 3212 updateSoldLabel(formatSoldLabel(qty)); 3213 }; 3214 3215 updateSoldLabel(soldTotalLabel); 3216 })(); 3217 3218(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)}})} 3219function 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} 3220const 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}});
3220function formatRupiah(n){return'Rp'+Math.floor(n).toLocaleString('id-ID')}})(); 3221 3222(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')}})(); 3223</script>
vendor: 2 bytes, line 3223
3223
3224<script nonce="se3iyzEHMc9FQEB4wSyd0w=="> 3225window.PD_ID=325;window.PD_NAME=_0x3c4d;window.PD_SKU=_0x5e6f;window.PD_CATEGORY_PATH="Komputer & Laptop/Laptop/Gaming";window.PD_BEST_VOUCHER=null; 3226window.IS_DIGITAL=IS_DIGITAL; 3227window.isPreorderProduct=false; 3228window.PD_PREORDER_DATA=null; 3229</script>
3229 3230
3231<script src="https://plazaitdotid.pages.dev/assets/js/pd-lightbox.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 2 bytes, line 3231
3231
3232<script src="https://plazaitdotid.pages.dev/assets/js/cart.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 2 bytes, line 3232
3232
3233<script src="https://plazaitdotid.pages.dev/assets/js/stock-validator-vanilla.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 2 bytes, line 3233
3233
3234<script src="https://plazaitdotid.pages.dev/assets/js/pd-addtocart.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 2 bytes, line 3234
3234
3235<script src="https://plazaitdotid.pages.dev/assets/js/pd-buynow.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 2 bytes, line 3235
3235
3236<script src="https://plazaitdotid.pages.dev/assets/js/pd-voucher-recalc.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 2 bytes, line 3236
3236
3237<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>
3237 3238
3239<script nonce="se3iyzEHMc9FQEB4wSyd0w=="> 3240(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'}})}} 3241 3242function _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()}})(); 3243 3244(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()}})})(); 3245</script>
3245<footer class="site-footer footer-compact variant-stripes" role="contentinfo"> 3246 <div class="ft-top ft-collapsible" id="ftTop"> 3247 <div class="container ft-grid"> 3248 3249 <div class="ft-col ft-help"> 3250 <h4 class="ft-title">Butuh Bantuan?</h4> 3251 <p class="ft-desc">Hubungi kami melalui Official WhatsApp interaktif sekarang.</p> 3252 <a class="ft-wa-btn" href="#" target="_blank" rel="nofollow noopener"> 3253 <span class="ico" aria-hidden="true"> 3254 <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> 3255 </span> 3256 Kirim Pesan 3257 </a> 3258 3259 <p class="ft-desc sm-gap">Ikuti kami:</p> 3260 <div class="ft-social"> 3261 <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> 3262 <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
3262V7.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> 3263 <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> 3264 </div> 3265 </div> 3266 3267 <!-- Collapsible Content Wrapper (Non-Homepage Only) --> 3268 <div class="ft-collapsible-content" id="ftCollapsible"> 3269 3270 <div class="ft-col"> 3271 <h4 class="ft-title">Tentang OKJKT</h4> 3272 <ul class="ft-links"> 3273 <li><a href="/tentang-kami">Tentang Kami</a></li> 3274 <li><a href="/kontak-kami">Kontak Kami</a></li> 3275 <li><a href="/lokasi-toko">Lokasi Toko</a></li> 3276 <li><a href="/faq">FAQ</a></li> 3277 </ul> 3278 <div class="ft-address"> 3279 <p class="company">PT OKJKT</p> 3280 <p>JL. Imam Bonjol, No. 45, Ciledug RT.005,</p> 3281 <p>RT.005/RW.005, Parung Serab, Tangerang, Kota Tangerang, Banten 15153</p> 3282 </div> 3283 </div> 3284 3285 <div class="ft-col"> 3286 <h4 class="ft-title">Informasi</h4> 3287 <ul class="ft-links"> 3288 <li><a href="/syarat-dan-ketentuan">Syarat & Ketentuan</a></li> 3289 <li><a href="/kebijakan-privasi">Kebijakan Privasi</a></li> 3290 <li><a href="/kebijakan-cookie">Kebijakan Cookie</a></li> 3291 <li><a href="/pengiriman-dan-pengembalian">Pengiriman & Pengembalian</a></li> 3292 <li><a href="/pembayaran-dan-cicilan">Pembayaran & Cicilan</a></li> 3293 <li><a href="/garansi-dan-layanan">Garansi & Layanan</a></li> 3294 </ul> 3295 3296 <div class="ft-payments payments-small" aria-label="Metode Pembayaran"> 3297 <div class="pay-row"> 3298 <img src="https://plazaitdotid.pages.dev/assets/img/payments/mandiri.svg" alt="Mandiri" loading="lazy"> 3299 <img src="https://plazaitdotid.pages.dev/assets/img/payments/bni.svg" alt="BNI" loading="lazy"> 3300 <img src="https://plazaitdotid.pages.dev/assets/img/payments/bri.svg" alt="BRI" loading="lazy"> 3301 <img src="https://plazaitdotid.pages.dev/assets/img/payments/bsi.svg" alt="BSI" loading="lazy"> 3302 <img src="https://plazaitdotid.pages.dev/assets/img/payments/cimb-logo.svg" alt="ShopeePay" loading="lazy"> 3303 </div> 3304 </div> 3305 </div> 3306 3307 </div> 3308 <!-- End Collapsible Content --> 3309 3310 <!-- Expand Button (Mobile Only) --> 3311 <button class="ft-expand-btn" id="ftExpandBtn" aria-label="Lihat semua informasi footer"> 3312 <span class="expand-text">Selengkapnya</span> 3313 <svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor"> 3314 <path d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"/> 3315 </svg> 3316 </button> 3317 3318 </div> 3319 </div> 3320 <div class="ft-bottom"> 3321 <div class="container ft-bottom-inner"> 3322 <div class="ft-copy"> 3323 <span>OKJKT © <span id="yearNow">2026</span></span> 3324 <span>PT OKJKT. All rights reserved.</span> 3325 </div> 3326 </div> 3327 </div> 3328 3329 <style nonce="se3iyzEHMc9FQEB4wSyd0w=="> 3330 /* Chat Widget Styles - Lightweight & Minimal */ 3331 .chat-widget { 3332 position: fixed; 3333 bottom: 20px; 3334 right: 20px; 3335 z-index: 9999; 3336 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; 3337 } 3338 3339 /* Hide floating button on mobile - use bottom nav instead */ 3340 @media (max-width: 640px) { 3341 .chat-toggle-btn { 3342 display: none !important; 3343 } 3344 3345 /* Ensure popup is still visible on mobile even when button is hidden */ 3346 .chat-widget { 3347 display: block !important; 3348 } 3349 3350 .chat-popup { 3351 display: none; /* Hidden by default, shown via JS */ 3352 } 3353 3354 .chat-popup[style*="display: block"], 3355 .chat-popup[style*="display:block"] { 3356 display: block !important; 3357 } 3358 } 3359 3360 .chat-toggle-btn { 3361 width: 60px; 3362 height: 60px; 3363 border-radius: 50%; 3364 background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%); 3365 border: none; 3366 color: white; 3367 cursor: pointer; 3368 box-shadow: 0 4px 12px rgba(242, 140, 26, 0.3); 3369 position: relative; 3370 transition: transform 0.2s, box-shadow 0.2s; 3371 } 3372 3373 .chat-toggle-btn:hover { 3374 transform: scale(1.05); 3375 box-shadow: 0 6px 20px rgba(242, 140, 26, 0.4); 3376 } 3377 3378 #chat-toggle-btn .chat-icon { 3379 position: absolute; 3380 top: 50%; 3381 left: 50%; 3382 transform: translate(-50%, -50%); 3383 width: 28px !important; 3384 height: 28px !important; 3385 } 3386 3387 .chat-unread-badge { 3388 position: absolute; 3389 top: -5px; 3390 right: -5px; 3391 background: #ef4444; 3392 color: white; 3393 border-radius: 12px; 3394 padding: 2px 6px; 3395 font-size: 11px; 3396 font-weight: 600;
3397 min-width: 20px; 3398 text-align: center; 3399 } 3400 3401 .chat-popup { 3402 position: absolute; 3403 bottom: 80px; 3404 right: 0; 3405 width: 380px; 3406 max-width: calc(100vw - 40px); 3407 height: 500px; 3408 max-height: calc(100vh - 120px); 3409 background: white; 3410 border-radius: 12px; 3411 box-shadow: 0 10px 40px rgba(0,0,0,0.2); 3412 display: flex; 3413 flex-direction: column; 3414 overflow: hidden; 3415 } 3416 3417 .chat-popup-header { 3418 background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%); 3419 color: white; 3420 padding: 16px 20px; 3421 display: flex; 3422 justify-content: space-between; 3423 align-items: center; 3424 flex-shrink: 0; 3425 } 3426 3427 .chat-header-title { 3428 display: flex; 3429 flex-direction: column; 3430 gap: 2px; 3431 min-height: 0; 3432 } 3433 3434 .chat-popup-header h3 { 3435 margin: 0; 3436 font-size: 18px; 3437 font-weight: 600; 3438 line-height: 1.2; 3439 } 3440 3441 .chat-operating-hours { 3442 font-size: 11px; 3443 opacity: 0.9; 3444 font-weight: 400; 3445 display: flex; 3446 align-items: center; 3447 gap: 4px; 3448 line-height: 1.2; 3449 } 3450 3451 .chat-operating-hours svg { 3452 width: 12px; 3453 height: 12px; 3454 opacity: 0.8; 3455 flex-shrink: 0; 3456 } 3457 3458 .chat-header-actions { 3459 display: flex; 3460 align-items: center; 3461 gap: 8px; 3462 } 3463 3464 /* Notification Toggle Button */ 3465 .btn-notif-toggle { 3466 background: none; 3467 border: none; 3468 color: white; 3469 font-size: 18px; 3470 cursor: pointer; 3471 padding: 4px 8px; 3472 transition: all 0.2s; 3473 opacity: 0.8; 3474 } 3475 3476 .btn-notif-toggle:hover { 3477 opacity: 1; 3478 transform: scale(1.1); 3479 } 3480 3481 /* Icon states */ 3482 .btn-notif-toggle[data-status="not-subscribed"] svg { 3483 opacity: 0.7; 3484 } 3485 3486 .btn-notif-toggle[data-status="not-subscribed"]:hover svg { 3487 opacity: 1; 3488 } 3489 3490 .btn-notif-toggle[data-status="subscribed"] svg { 3491 opacity: 1; 3492 animation: bellRing 2s ease-in-out; 3493 } 3494 3495 .btn-notif-toggle[data-status="blocked"] svg { 3496 color: #ff6b6b; 3497 } 3498 3499 .btn-notif-toggle[data-status="not-supported"] { 3500 display: none !important; 3501 } 3502 3503 @keyframes bellRing { 3504 0%, 100% { transform: rotate(0deg); } 3505 10%, 30% { transform: rotate(-10deg); } 3506 20%, 40% { transform: rotate(10deg); } 3507 } 3508 3509 /* Notification Info Bar */ 3510 .chat-notif-info-bar { 3511 position: absolute; 3512 top: 64px; 3513 left: 0; 3514 right: 0; 3515 background: linear-gradient(to right, #e3f2fd, #f5f5f5); 3516 border-bottom: 1px solid #bbdefb; 3517 padding: 8px 12px; 3518 display: flex; 3519 align-items: center; 3520 gap: 8px; 3521 font-size: 12px; 3522 color: #616161; 3523 z-index: 10; 3524 animation: slideDown 0.3s ease; 3525 } 3526 3527 .chat-notif-info-bar svg { 3528 flex-shrink: 0; 3529 } 3530 3531 .chat-notif-info-bar .small { 3532 flex: 1; 3533 line-height: 1.4; 3534 } 3535 3536 .chat-notif-info-bar .btn-dismiss { 3537 background: none; 3538 border: none; 3539 color: #9e9e9e; 3540 cursor: pointer; 3541 padding: 0 4px; 3542 font-size: 16px; 3543 transition: color 0.2s; 3544 } 3545 3546 .chat-notif-info-bar .btn-dismiss:hover { 3547 color: #616161; 3548 } 3549 3550 @keyframes slideDown { 3551 from { 3552 max-height: 0; 3553 opacity: 0; 3554 } 3555 to { 3556 max-height: 50px; 3557 opacity: 1;
3558 } 3559 } 3560 3561 .chat-close-btn { 3562 background: none; 3563 border: none; 3564 color: white; 3565 font-size: 28px; 3566 line-height: 1; 3567 cursor: pointer; 3568 padding: 0; 3569 width: 30px; 3570 height: 30px; 3571 } 3572 3573 .chat-popup-body { 3574 flex: 1 1 auto; 3575 display: flex; 3576 flex-direction: column; 3577 min-height: 0; 3578 overflow: hidden; 3579 height: calc(100% - 64px); 3580 position: relative; 3581 transition: padding-top 0.3s ease; 3582 } 3583 3584 /* Add padding when info bar is visible */ 3585 .chat-popup-body.has-info-bar { 3586 padding-top: 40px; 3587 } 3588 3589 .chat-view { 3590 flex: 1 1 auto; 3591 display: none; 3592 flex-direction: column; 3593 min-height: 0; 3594 overflow: hidden; 3595 } 3596 3597 #chat-list-view { 3598 display: flex; 3599 } 3600 3601 #chat-messages-view { 3602 display: none; 3603 } 3604 3605 #chat-messages-view.active { 3606 display: flex; 3607 flex-direction: column; 3608 } 3609 3610 #chat-new-view { 3611 display: none; 3612 } 3613 3614 #chat-new-view.active { 3615 display: flex; 3616 } 3617 3618 .chat-conversations-list { 3619 flex: 1; 3620 overflow-y: auto; 3621 padding: 0; 3622 background: white; 3623 } 3624 3625 /* Custom Scrollbar for Conversations List */ 3626 .chat-conversations-list::-webkit-scrollbar { 3627 width: 6px; 3628 } 3629 3630 .chat-conversations-list::-webkit-scrollbar-track { 3631 background: #f1f1f1; 3632 } 3633 3634 .chat-conversations-list::-webkit-scrollbar-thumb { 3635 background: #F28C1A; 3636 border-radius: 3px; 3637 } 3638 3639 .chat-conversations-list::-webkit-scrollbar-thumb:hover { 3640 background: #D97809; 3641 } 3642 3643 /* Firefox */ 3644 .chat-conversations-list { 3645 scrollbar-width: thin; 3646 scrollbar-color: #F28C1A #f1f1f1; 3647 } 3648 3649 .chat-conversation-item { 3650 padding: 12px 16px; 3651 cursor: pointer; 3652 display: flex; 3653 gap: 12px; 3654 align-items: flex-start; 3655 transition: background 0.15s ease; 3656 color: #33371f; 3657 border-bottom: 1px solid #f0f0f0; 3658 } 3659 3660 .chat-conversation-item:hover { 3661 background: #f5f5f5; 3662 } 3663 3664 .chat-conversation-item.active { 3665 background: #FFF5EB; 3666 } 3667 3668 /* WhatsApp-like Avatar */ 3669 .conversation-avatar { 3670 width: 48px; 3671 height: 48px; 3672 border-radius: 50%; 3673 background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%); 3674 flex-shrink: 0; 3675 display: flex; 3676 align-items: center; 3677 justify-content: center; 3678 color: white; 3679 font-weight: 600; 3680 font-size: 18px; 3681 } 3682 3683 .conversation-avatar svg { 3684 width: 24px; 3685 height: 24px; 3686 } 3687 3688 /* WhatsApp-like Content */ 3689 .conversation-content { 3690 flex: 1; 3691 min-width: 0; 3692 display: flex; 3693 flex-direction: column; 3694 gap: 4px; 3695 } 3696 3697 .conversation-header { 3698 display: flex; 3699 justify-content: space-between; 3700 align-items: center; 3701 gap: 8px; 3702 } 3703 3704 .conversation-name { 3705 font-weight: 600; 3706 font-size: 15px; 3707 color: #111; 3708 white-space: nowrap; 3709 overflow: hidden; 3710 text-overflow: ellipsis; 3711 } 3712 3713 .conversation-time { 3714 font-size: 12px; 3715 color: #7d8166; 3716 flex-shrink: 0; 3717 } 3718 3719 .conversation-preview { 3720 display: flex; 3721 justify-content: space-between; 3722 align-items: center; 3723 gap: 8px; 3724 } 3725 3726 .conversation-message { 3727 font-size: 14px; 3728 color: #667781; 3729 white-space: nowrap; 3730 overflow: hidden; 3731 text-overflow: ellipsis; 3732 margin: 0; 3733 flex: 1; 3734 } 3735 3736 .conversation-unread { 3737 background: #25D366; 3738 color: white; 3739 border-radius: 12px; 3740 padding: 2px 8px; 3741 font-size: 12px; 3742 font-weight: 600;
3743 min-width: 20px; 3744 text-align: center; 3745 flex-shrink: 0; 3746 } 3747 3748 /* Active item styling */ 3749 .chat-conversation-item.active .conversation-name { 3750 color: #F28C1A; 3751 } 3752 3753 .chat-conversation-item.active .conversation-time { 3754 color: #F28C1A; 3755 } 3756 3757 .chat-new-btn { 3758 margin: 12px; 3759 padding: 12px; 3760 background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%); 3761 color: white; 3762 border: none; 3763 border-radius: 8px; 3764 cursor: pointer; 3765 font-weight: 500; 3766 font-size: 14px; 3767 display: flex; 3768 align-items: center; 3769 justify-content: center; 3770 gap: 8px; 3771 transition: all 0.2s; 3772 flex-shrink: 0; 3773 } 3774 3775 .chat-new-btn:hover { 3776 transform: translateY(-1px); 3777 box-shadow: 0 4px 8px rgba(242, 140, 26, 0.3); 3778 } 3779 3780 .chat-conversation-title { 3781 flex: 1; 3782 font-weight: 600; 3783 font-size: 16px; 3784 color: #1f2937; 3785 } 3786 3787 .chat-messages-container { 3788 flex: 1; 3789 overflow-y: auto; 3790 padding: 16px; 3791 display: flex; 3792 flex-direction: column; 3793 gap: 8px; 3794 min-height: 0; 3795 background: #E5DDD5; 3796 } 3797 3798 /* Custom Scrollbar for Messages Container */ 3799 .chat-messages-container::-webkit-scrollbar { 3800 width: 6px; 3801 } 3802 3803 .chat-messages-container::-webkit-scrollbar-track { 3804 background: rgba(0, 0, 0, 0.05); 3805 } 3806 3807 .chat-messages-container::-webkit-scrollbar-thumb { 3808 background: rgba(242, 140, 26, 0.6); 3809 border-radius: 3px; 3810 } 3811 3812 .chat-messages-container::-webkit-scrollbar-thumb:hover { 3813 background: #F28C1A; 3814 } 3815 3816 /* Firefox */ 3817 .chat-messages-container { 3818 scrollbar-width: thin; 3819 scrollbar-color: rgba(242, 140, 26, 0.6) rgba(0, 0, 0, 0.05); 3820 } 3821 3822 /* WhatsApp Group-like Messages */ 3823 .chat-message { 3824 display: flex; 3825 margin-bottom: 4px; 3826 animation: fadeIn 0.2s ease; 3827 } 3828 3829 @keyframes fadeIn { 3830 from { opacity: 0; transform: translateY(10px); } 3831 to { opacity: 1; transform: translateY(0); } 3832 } 3833 3834 .chat-message.mine { 3835 justify-content: flex-end; 3836 } 3837 3838 .chat-message-bubble { 3839 max-width: 80%; 3840 padding: 6px 8px 8px 10px; 3841 border-radius: 8px; 3842 position: relative; 3843 box-shadow: 0 1px 0.5px rgba(0,0,0,0.13); 3844 } 3845 3846 /* Bubble from others (Admin/CS) */ 3847 .chat-message:not(.mine) .chat-message-bubble { 3848 background: #FFFFFF; 3849 border-radius: 0 8px 8px 8px; 3850 } 3851 3852 /* Bubble tail for others */ 3853 .chat-message:not(.mine) .chat-message-bubble::before { 3854 content: ''; 3855 position: absolute; 3856 top: 0; 3857 left: -8px; 3858 width: 0; 3859 height: 0; 3860 border-style: solid; 3861 border-width: 0 8px 13px 0; 3862 border-color: transparent #FFFFFF transparent transparent; 3863 } 3864 3865 /* Bubble from user (mine) */ 3866 .chat-message.mine .chat-message-bubble { 3867 background: #e4f5d0; /* Light blue for user messages */ 3868 border-radius: 8px 0 8px 8px; 3869 } 3870 3871 /* Bubble tail for mine */ 3872 .chat-message.mine .chat-message-bubble::before { 3873 content: ''; 3874 position: absolute; 3875 top: 0; 3876 right: -8px; 3877 width: 0; 3878 height: 0; 3879 border-style: solid; 3880 border-width: 0 0 13px 8px; 3881 border-color: transparent transparent transparent #eaf5d0; 3882 } 3883 3884 .message-sender { 3885 font-size: 12.5px; 3886 font-weight: 600; 3887 color: #F28C1A !important; 3888 margin-bottom: 4px;
3889 } 3890 3891 .chat-message.mine .message-sender { 3892 display: none; 3893 } 3894 3895 /* Message text */ 3896 .message-text { 3897 font-size: 14px; 3898 line-height: 19px; 3899 color: #000000 !important; 3900 word-wrap: break-word; 3901 white-space: pre-wrap; 3902 margin-bottom: 4px; 3903 } 3904 3905 /* Message metadata (time + status) */ 3906 .message-meta { 3907 display: flex; 3908 align-items: center; 3909 justify-content: flex-end; 3910 gap: 4px; 3911 margin-top: 2px; 3912 } 3913 3914 .message-time { 3915 font-size: 11px; 3916 color: #728166 !important; 3917 line-height: 15px; 3918 } 3919 3920 /* Use multiple selectors to override global styles */ 3921 .chat-message-bubble .message-status, 3922 .message-meta .message-status, 3923 .chat-message .message-status { 3924 width: 16px !important; 3925 height: 16px !important; 3926 min-width: 16px !important; 3927 min-height: 16px !important; 3928 max-width: 16px !important; 3929 max-height: 16px !important; 3930 flex-shrink: 0; 3931 color: #728166 !important; 3932 fill: currentColor !important; 3933 } 3934 3935 .chat-message:not(.mine) .message-status { 3936 display: none; 3937 } 3938 3939 /* Loading dots animation */ 3940 @keyframes loadingDots { 3941 0%, 20% { content: '.'; } 3942 40% { content: '..'; } 3943 60%, 100% { content: '...'; } 3944 } 3945 3946 .message-status.loading::after { 3947 content: '...'; 3948 animation: loadingDots 1.5s infinite; 3949 font-size: 16px; 3950 line-height: 16px; 3951 } 3952 3953 .message-status.loading path { 3954 display: none; 3955 } 3956 3957 .message-status.failed { 3958 color: #ef4444 !important; 3959 cursor: pointer; 3960 } 3961 3962 .message-status.sent { 3963 color: #667781 !important; 3964 } 3965 3966 .chat-new-form { 3967 flex: 1; 3968 overflow-y: auto; 3969 padding: 16px; 3970 display: flex; 3971 flex-direction: column; 3972 } 3973 3974 .chat-new-form form { 3975 display: flex; 3976 flex-direction: column; 3977 gap: 16px; 3978 flex: 1; 3979 } 3980 3981 .chat-new-form .form-group { 3982 display: flex; 3983 flex-direction: column; 3984 gap: 6px; 3985 } 3986 3987 .chat-new-form label { 3988 font-size: 14px; 3989 font-weight: 500; 3990 color: #374151; 3991 } 3992 3993 .chat-new-form .form-control { 3994 width: 100%; 3995 padding: 10px 12px; 3996 border: 1px solid #d1d5db; 3997 border-radius: 8px; 3998 font-size: 14px; 3999 font-family: inherit; 4000 transition: border-color 0.2s; 4001 box-sizing: border-box; 4002 } 4003 4004 .chat-new-form .form-control:focus { 4005 outline: none; 4006 border-color: #F28C1A; 4007 box-shadow: 0 0 0 3px rgba(242, 140, 26, 0.1); 4008 } 4009 4010 .chat-new-form textarea.form-control { 4011 resize: vertical; 4012 min-height: 100px; 4013 } 4014 4015 .chat-new-form .btn { 4016 padding: 12px 20px; 4017 border: none; 4018 border-radius: 8px; 4019 font-size: 15px; 4020 font-weight: 500; 4021 cursor: pointer; 4022 transition: all 0.2s; 4023 text-align: center; 4024 } 4025 4026 .chat-new-form .btn-primary { 4027 background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%); 4028 color: white; 4029 } 4030 4031 .chat-new-form .btn-primary:hover { 4032 transform: translateY(-1px); 4033 box-shadow: 0 4px 8px rgba(242, 140, 26, 0.3); 4034 } 4035 4036 .chat-new-form .btn-primary:active { 4037 transform: scale(0.98); 4038 } 4039 4040 .chat-new-form .btn-block { 4041 width: 100%; 4042 margin-top: auto; 4043 } 4044 4045 .chat-message-form { 4046 padding: 12px; 4047 border-top: 1px solid #e5e7eb; 4048 display: flex; 4049 flex-wrap: wrap; 4050 gap: 8px; 4051 align-items: flex-end; 4052 flex-shrink: 0; 4053 background: white; 4054 } 4055 4056 .chat-product-card { 4057 flex: 1 1 100%; 4058 max-width: 100%; 4059 display: flex; 4060 gap: 12px; 4061 padding: 12px; 4062 background: #f3f4f6; 4063 border-radius: 8px; 4064 margin-bottom: 4px;
4065 border: 1px solid #e5e7eb; 4066 } 4067 4068 .chat-product-card img { 4069 width: 60px; 4070 height: 60px; 4071 object-fit: cover; 4072 border-radius: 6px; 4073 flex-shrink: 0; 4074 } 4075 4076 .chat-product-card-content { 4077 flex: 1; 4078 min-width: 0; 4079 } 4080 4081 .chat-product-card-name { 4082 font-weight: 500; 4083 font-size: 14px; 4084 color: #1f2937; 4085 margin-bottom: 4px; 4086 white-space: nowrap; 4087 overflow: hidden; 4088 text-overflow: ellipsis; 4089 } 4090 4091 .chat-product-card-variant { 4092 font-size: 12px; 4093 color: #74806b; 4094 margin-bottom: 4px; 4095 } 4096 4097 .chat-product-card-price { 4098 font-size: 13px; 4099 color: #8bea66; 4100 font-weight: 600; 4101 } 4102 4103 .chat-product-card-remove { 4104 align-self: flex-start; 4105 background: none; 4106 border: none; 4107 color: #9ca3af; 4108 cursor: pointer; 4109 padding: 4px; 4110 font-size: 18px; 4111 line-height: 1; 4112 transition: color 0.2s; 4113 } 4114 4115 .chat-product-card-remove:hover { 4116 color: #ef4444; 4117 } 4118 4119 /* Product card in messages (read-only display) */ 4120 .message-product-card { 4121 display: flex; 4122 gap: 10px; 4123 padding: 10px; 4124 background: rgba(255, 255, 255, 0.5); 4125 border-radius: 8px; 4126 margin-bottom: 6px; 4127 border: 1px solid rgba(0, 0, 0, 0.08); 4128 align-items: center; 4129 } 4130 4131 .chat-message.mine .message-product-card { 4132 background: rgba(255, 255, 255, 0.7); 4133 } 4134 4135 .message-product-card img { 4136 width: 50px; 4137 height: 50px; 4138 object-fit: cover; 4139 border-radius: 6px; 4140 flex-shrink: 0; 4141 } 4142 4143 .message-product-info { 4144 flex: 1; 4145 min-width: 0; 4146 } 4147 4148 .message-product-name { 4149 font-weight: 500; 4150 font-size: 13px; 4151 color: #33371f; 4152 margin-bottom: 2px; 4153 overflow: hidden; 4154 text-overflow: ellipsis; 4155 display: -webkit-box; 4156 -webkit-line-clamp: 2; 4157 -webkit-box-orient: vertical; 4158 line-height: 1.3; 4159 } 4160 4161 .message-product-variant { 4162 font-size: 11px; 4163 color: #78806b; 4164 margin-bottom: 2px; 4165 } 4166 4167 .message-product-price { 4168 font-size: 12px; 4169 color: #c7ea66; 4170 font-weight: 600; 4171 } 4172 4173 .message-product-link { 4174 flex-shrink: 0; 4175 width: 32px; 4176 height: 32px; 4177 display: flex; 4178 align-items: center; 4179 justify-content: center; 4180 background: rgba(102, 126, 234, 0.1); 4181 border-radius: 6px; 4182 color: #c7ea66; 4183 text-decoration: none; 4184 transition: all 0.2s; 4185 } 4186 4187 .message-product-link:hover { 4188 background: #b7ea66; 4189 color: white; 4190 } 4191 4192 .message-product-link svg { 4193 width: 16px; 4194 height: 16px; 4195 } 4196 4197 .chat-message-input { 4198 flex: 1; 4199 border: 1px solid #d1d5db; 4200 border-radius: 20px; 4201 padding: 10px 16px; 4202 resize: none; 4203 max-height: 100px; 4204 font-family: inherit; 4205 font-size: 14px; 4206 line-height: 1.5; 4207 box-sizing: border-box; 4208 overflow-y: hidden; 4209 } 4210 4211 .chat-message-input:focus { 4212 outline: none; 4213 border-color: #F28C1A; 4214 box-shadow: 0 0 0 3px rgba(242, 140, 26, 0.1); 4215 } 4216 4217 .chat-send-btn { 4218 width: 40px; 4219 height: 40px; 4220 border-radius: 50%; 4221 background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%); 4222 border: none; 4223 color: white; 4224 cursor: pointer; 4225 flex-shrink: 0; 4226 display: flex; 4227 align-items: center; 4228 justify-content: center; 4229 transition: all 0.2s; 4230 } 4231 4232 .chat-send-btn:hover { 4233 transform: scale(1.05); 4234 box-shadow: 0 2px 8px rgba(242, 140, 26, 0.3); 4235 } 4236 4237 .chat-send-btn:active { 4238 transform: scale(0.95); 4239 } 4240 4241 .chat-loading { 4242 text-align: center; 4243 padding: 20px; 4244 color: #6b7280; 4245 } 4246 4247 /* Date Separator (WhatsApp-style) */ 4248 .date-separator { 4249 display: flex; 4250 align-items: center; 4251 gap: 12px; 4252 margin: 24px 0 16px; 4253 opacity: 0; 4254 animation: fadeInSeparator 0.3s ease forwards; 4255 } 4256 4257 @keyframes fadeInSeparator { 4258 from { 4259 opacity: 0; 4260 transform: translateY(-10px); 4261 } 4262 to { 4263 opacity: 1;
4264 transform: translateY(0); 4265 } 4266 } 4267 4268 .date-separator-line { 4269 flex: 1; 4270 height: 1px; 4271 background: linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.1) 50%, transparent); 4272 } 4273 4274 .date-separator-text { 4275 flex-shrink: 0; 4276 padding: 4px 12px; 4277 background: #e9ecef; 4278 color: #6c757d; 4279 font-size: 11px; 4280 font-weight: 600; 4281 text-transform: uppercase; 4282 letter-spacing: 0.5px; 4283 border-radius: 12px; 4284 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); 4285 } 4286 4287 /* Mobile responsive */ 4288 @media (max-width: 640px) { 4289 .chat-popup { 4290 position: fixed !important; /* Override absolute positioning */ 4291 bottom: 45px !important; /* Above bottom nav */ 4292 right: 0 !important; 4293 left: 0 !important; 4294 width: 100% !important; 4295 max-width: 100% !important; 4296 /* Use dvh (dynamic viewport height) for browser UI awareness */ 4297 height: calc(100dvh - 45px) !important; 4298 max-height: calc(100dvh - 45px) !important; 4299 /* Fallback for browsers that don't support dvh */ 4300 height: calc(var(--viewport-height, 100vh) - 45px) !important; 4301 max-height: calc(var(--viewport-height, 100vh) - 45px) !important; 4302 border-radius: 0 !important; 4303 z-index: 9999 !important; 4304 } 4305 4306 .chat-popup-header { 4307 border-radius: 0; 4308 } 4309 4310 .chat-messages-container, 4311 .chat-conversations-list { 4312 /* Adjust for mobile keyboard using dynamic viewport */ 4313 max-height: calc(100dvh - 190px); 4314 /* Fallback for browsers that don't support dvh */ 4315 max-height: calc(var(--viewport-height, 100vh) - 190px); 4316 } 4317 } 4318 </style> 4319 <!-- Chat Widget Button --> 4320 <div id="chat-widget" class="chat-widget" 4321 data-user-id="" 4322 data-is-logged-in="false" 4323 data-csrf-token="df5d776748b1ed8c8dd0d987bae99b1ee3dea6c6dcbe0eedb1bea766c56d569a"> 4324 <button id="chat-toggle-btn" class="chat-toggle-btn" aria-label="Toggle chat"> 4325 <svg class="chat-icon" width="28" height="28" viewBox="0 0 640 640" fill="currentColor"> 4326 <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"/> 4327 </svg> 4328 <span id="chat-unread-badge" class="chat-unread-badge" style="display: none;">0</span> 4329 </button> 4330 4331 <div id="chat-popup" class="chat-popup" style="display: none;"> 4332 <div class="chat-popup-header"> 4333 <div class="chat-header-title"> 4334 <h3>Bantuan</h3> 4335 <span id="chatOperatingHours" class="chat-operating-hours" style="display: none;"></span> 4336 </div> 4337 <div class="chat-header-actions"> 4338 <button id="chatNotifToggle" class="btn-notif-toggle" data-status="not-supported" title="Push notification" style="display: none;"> 4339 <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"> 4340 <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"/> 4341 </svg> 4342 </button> 4343 <button id="chat-close-btn" class="chat-close-btn" aria-label="Close chat">
4343Ã</button> 4344 </div> 4345 </div> 4346 4347 <!-- Notification Info Bar (conditional) --> 4348 <div class="chat-notif-info-bar" id="chatNotifInfoBar" style="display:none;"> 4349 <svg width="14" height="14" viewBox="0 0 24 24" fill="#ffc107"> 4350 <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"/> 4351 </svg> 4352 <span class="small">Aktifkan notifikasi untuk pemberitahuan balasan</span> 4353 <button class="btn-dismiss" onclick="ChatNotification.dismissInfo()">â</button> 4354 </div> 4355 4356 <div class="chat-popup-body"> 4357 <!-- Conversations List View --> 4358 <div id="chat-list-view" class="chat-view"> 4359 <div id="chat-conversations-list" class="chat-conversations-list"> 4360 <div class="chat-loading">Memuat...</div> 4361 <!-- Conversation Item Structure (rendered by JS): 4362 <div class="chat-conversation-item"> 4363 <div class="conversation-avatar"> 4364 <svg>...</svg> 4365 </div> 4366 <div class="conversation-content"> 4367 <div class="conversation-header"> 4368 <span class="conversation-name">Admin Support</span> 4369 <span class="conversation-time">10:30</span> 4370 </div> 4371 <div class="conversation-preview"> 4372 <p class="conversation-message">Terima kasih telah menghubungi kami...</p> 4373 <span class="conversation-unread">2</span> 4374 </div> 4375 </div> 4376 </div> 4377 --> 4378 </div> 4379 <button id="chat-new-btn" class="chat-new-btn"> 4380 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 4381 <line x1="12" y1="5" x2="12" y2="19"></line> 4382 <line x1="5" y1="12" x2="19" y2="12"></line> 4383 </svg> 4384 Percakapan Baru 4385 </button> 4386 </div> 4387 4388 <!-- Chat Messages View --> 4389 <div id="chat-messages-view" class="chat-view" style="display: none;"> 4390 <div id="chat-messages-container" class="chat-messages-container"> 4391 <div class="chat-loading">Memuat pesan...</div> 4392 <!-- Message Structure (rendered by JS): 4393 <div class="chat-message"> (or .chat-message.mine) 4394 <div class="chat-message-bubble"> 4395 <div class="message-sender">Admin Support</div> (only for non-mine) 4396 <div class="message-text">Halo, ada yang bisa dibantu?</div> 4397 <div class="message-meta"> 4398 <span class="message-time">10:30</span> 4399 <svg class="message-status">...</svg> (only for mine) 4400 </div> 4401 </div> 4402 </div> 4403 --> 4404 </div> 4405 4406 <form id="chat-message-form" class="chat-message-form"> 4407 <input type="hidden" id="chat-current-conversation-id" value=""> 4408 <textarea 4409 id="chat-message-input" 4410 class="chat-message-input" 4411 placeholder="Ketik pesan..." 4412 rows="1" 4413 maxlength="5000" 4414 ></textarea> 4415 <button type="submit" class="chat-send-btn" aria-label="Send message"> 4416 <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 4417 <line x1="22" y1="2" x2="11" y2="
441713"></line> 4418 <polygon points="22 2 15 22 11 13 2 9 22 2"></polygon> 4419 </svg> 4420 </button> 4421 </form> 4422 </div> 4423 4424 <!-- New Chat View --> 4425 <div id="chat-new-view" class="chat-view" style="display: none;"> 4426 <div class="chat-messages-header"> 4427 <button id="chat-new-back-btn" class="chat-back-btn" aria-label="Back to list"> 4428 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 4429 <path d="M19 12H5M12 19l-7-7 7-7"/> 4430 </svg> 4431 </button> 4432 <div class="chat-conversation-title">Percakapan Baru</div> 4433 </div> 4434 4435 <div class="chat-new-form"> 4436 <form id="chat-start-form"> 4437 <div class="form-group"> 4438 <label for="chat-new-subject">Subjek</label> 4439 <input 4440 type="text" 4441 id="chat-new-subject" 4442 class="form-control" 4443 placeholder="Bantuan Pelanggan" 4444 maxlength="255" 4445 > 4446 </div> 4447 <div class="form-group"> 4448 <label for="chat-new-message">Pesan</label> 4449 <textarea 4450 id="chat-new-message" 4451 class="form-control" 4452 rows="4" 4453 placeholder="Tulis pertanyaan Anda..." 4454 required 4455 maxlength="5000" 4456 ></textarea> 4457 </div> 4458 <button type="submit" class="btn btn-primary btn-block">Kirim</button> 4459 </form> 4460 </div> 4461 </div> 4462 </div> 4463 </div> 4464 </div> 4465 4466 <!-- Login Required Modal --> 4467 <div class="modal-overlay" id="chatLoginModal"> 4468 <div class="modal-dialog"> 4469 <div class="modal-header"> 4470 <h3 class="modal-title"> 4471 <div class="modal-icon info"> 4472 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 4473 <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"/> 4474 </svg> 4475 </div> 4476 Login Diperlukan 4477 </h3> 4478 </div> 4479 <div class="modal-body"> 4480 <p class="modal-message">Anda harus login terlebih dahulu untuk menggunakan fitur chat bantuan pelanggan.</p> 4481 <div class="modal-actions"> 4482 <button class="modal-btn modal-btn-secondary" id="chatLoginCancel">Batal</button> 4483 <button class="modal-btn modal-btn-primary" id="chatLoginConfirm">Login Sekarang</button> 4484 </div> 4485 </div> 4486 </div> 4487 </div> 4488
4488<script src="https://plazaitdotid.pages.dev/assets/js/chat-widget.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
4488<script src="https://plazaitdotid.pages.dev/assets/js/chat-notification.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
4488 4489 <!-- Footer Collapse Toggle Script --> 4490
4490<script nonce="se3iyzEHMc9FQEB4wSyd0w=="> 4491 document.addEventListener('DOMContentLoaded', function() { 4492 const ftTop = document.getElementById('ftTop'); 4493 const expandBtn = document.getElementById('ftExpandBtn'); 4494 4495 if (ftTop && expandBtn) { 4496 const expandText = expandBtn.querySelector('.expand-text'); 4497 4498 expandBtn.addEventListener('click', function() { 4499 ftTop.classList.toggle('expanded'); 4500 const isExpanded = ftTop.classList.contains('expanded'); 4501 if (expandText) { 4502 expandText.textContent = isExpanded ? 'Sembunyikan' : 'Selengkapnya'; 4503 } 4504 }); 4505 } 4506 }); 4507 </script>
4507 4508 </footer> 4509 4510<!-- Compare Sidebar Overlay --> 4511<div class="compare-overlay" id="compareOverlay"></div> 4512 4513<!-- Floating Compare Badge (Sticky) --> 4514<button class="compare-floating-badge" id="compareFloatingBadge" aria-label="Lihat produk yang dibandingkan" style="display:none;"> 4515 <svg class="cfb-icon" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> 4516 <path d="M9.01 14H2v2h7.01v3L13 15l-3.99-4v3zm5.98-1v-3H22V8h-7.01V5L11 9l3.99 4z"/> 4517 </svg> 4518 <span class="cfb-text">Bandingkan</span> 4519 <span class="cfb-count" id="cfbCount">0</span> 4520</button> 4521 4522<!-- AI Comparison Modal --> 4523<div class="ai-compare-modal" id="aiCompareModal"> 4524 <div class="modal-backdrop"></div> 4525 <div class="modal-container"> 4526 <div class="modal-header"> 4527 <h3 class="modal-title"> 4528 <svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor"> 4529 <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"/> 4530 </svg> 4531 Analisis AI: Perbandingan Produk 4532 </h3> 4533 <button class="modal-close" id="aiCompareModalClose" aria-label="Tutup"> 4534 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 4535 <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"/> 4536 </svg> 4537 </button> 4538 </div> 4539 4540 <div class="modal-content"> 4541 <!-- Loading State --> 4542 <div class="ai-loading" id="aiLoading"> 4543 <div class="loading-animation"> 4544 <div class="typing-indicator"> 4545 <span></span> 4546 <span></span> 4547 <span></span> 4548 </div> 4549 <p>AI sedang menganalisis produk...</p> 4550 <small>Proses ini membutuhkan waktu 10-30 detik</small> 4551 </div> 4552 </div> 4553 4554 <!-- Error State --> 4555 <div class="ai-error" id="aiError" hidden> 4556 <div class="error-icon"> 4557 <svg width="48" height="48" viewBox="0 0 24 24" fill="#ef4444"> 4558 <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"/> 4559 </svg> 4560 </div> 4561 <h4>Analisis AI Gagal</h4> 4562 <p id="aiErrorMessage">Terjadi kesalahan saat memproses analisis.</p> 4563 <button class="btn btn-outline-primary" id="aiRetry">Coba Lagi</button> 4564 </div> 4565 4566 <!-- Analysis Results --> 4567 <div class="ai-results" id="aiResults" hidden> 4568 <!-- Summary Section --> 4569 <div class="ai-summary-card"> 4570 <h4> 4571 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 4572 <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"/> 4573 </svg> 4574 Ringkasan Analisis 4575 </h4> 4576 <p id="aiSummary" class="summary-text"></p> 4577 <div class="winner-badge" id="winnerBadge"> 4578 <strong>Rekomendasi Terbaik:</strong> <span id="winnerProduct"></span> 4579 <small id="winnerReason"></small> 4580 </div> 4581 </div> 4582 4583 <!-- Comparison Table --> 4584 <div class="ai-comparison-table"> 4585 <h4> 4586 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 4587 <path d="M3,3H21V5H3V3M3,7H21V9H3V7M3,11H21V13H3V11M3,15H21V17H3V15M3,19H21V21H3V19Z"/> 4588 </svg> 4589 Perbandingan Detail 4590 </h4> 4591 <div id="comparisonTable" class="comparison-grid"></div> 4592 </div> 4593 4594 <!-- Detailed Analysis --> 4595 <div class="ai-detailed-analysis"> 4596 <h4> 4597 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 4598 <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"/> 4599 </svg> 4600 Analisis Mendalam 4601 </h4> 4602 <div id="detailedAnalysis" class="products-analysis"></div> 4603 </div> 4604 4605 <!-- Recommendations --> 4606 <div class="ai-recommendations"> 4607 <h4> 4608 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 4609 <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"/> 4610 </svg> 4611 Rekomendasi Berdasarkan Kebutuhan 4612 </h4> 4613 <div class="recommendations-grid"> 4614 <div class="recommendation-card"> 4615 <h5>ð° Budget Conscious</h5> 4616 <p id="budgetRecommendation"></p> 4617 </div> 4618 <div class="recommendation-card"> 4619 <h5>â¡ Performance Focused</h5> 4620 <p id="performanceRecommendation"></p> 4621 </div> 4622 <div class="recommendation-card"> 4623 <h5>âï¸ Balanced Choice</h5> 4624 <p id="balancedRecommendation"></p> 4625 </div> 4626 </div> 4627 </div> 4628 4629 <!-- Buying Tips --> 4630 <div class="ai-tips"> 4631 <h4> 4632 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 4633 <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
4633M5,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"/> 4634 </svg> 4635 Tips Pembelian 4636 </h4> 4637 <ul id="buyingTips" class="tips-list"></ul> 4638 </div> 4639 </div> 4640 </div> 4641 </div> 4642</div> 4643 4644<!-- Cart Login Modal --> 4645<div class="modal-overlay" id="cartLoginModal"> 4646 <div class="modal-dialog"> 4647 <div class="modal-header"> 4648 <h3 class="modal-title"> 4649 <div class="modal-icon info"> 4650 <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> 4651 <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"/> 4652 </svg> 4653 </div> 4654 Login untuk Melanjutkan 4655 </h3> 4656 </div> 4657 <div class="modal-body"> 4658 <p class="modal-message" style="margin-bottom: 16px;">Silakan login atau daftar untuk mengakses keranjang belanja dan menyelesaikan pesanan Anda.</p> 4659 <div style="background: #f8fafc; border-radius: 8px; padding: 12px; margin-bottom: 20px;"> 4660 <p style="font-size: 14px; color: #646947; margin: 0; line-height: 1.6;"> 4661 <strong style="color: #2a2a0f;">Keuntungan dengan akun:</strong><br> 4662 â Simpan keranjang belanja Anda<br> 4663 â Lacak status pesanan secara real-time<br> 4664 â Checkout lebih cepat dengan data tersimpan<br> 4665 â Dapatkan notifikasi promo & diskon eksklusif 4666 </p> 4667 </div> 4668 <div class="modal-actions"> 4669 <button class="modal-btn modal-btn-secondary" id="cartLoginCancel">Batal</button> 4670 <button class="modal-btn modal-btn-primary" id="cartLoginConfirm" style="background: #ff6b35; border-color: #ff6b35;">Login</button> 4671 <button class="modal-btn modal-btn-primary" id="cartRegisterBtn" style="background: #f7931e; border-color: #f7931e;">Daftar</button> 4672 </div> 4673 </div> 4674 </div> 4675</div> 4676 4677
4678<script src="https://plazaitdotid.pages.dev/assets/js/app.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 2 bytes, line 4678
4678
4679<script src="https://plazaitdotid.pages.dev/assets/js/site-notice.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 2 bytes, line 4679
4679
4680<script src="https://plazaitdotid.pages.dev/assets/js/guest-cart.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 2 bytes, line 4680
4680
4681<script src="https://plazaitdotid.pages.dev/assets/js/cart.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 2 bytes, line 4681
4681
4682<script defer src="https://plazaitdotid.pages.dev/assets/js/mega-menu-tiles.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
4682 4683
4683<script src="https://plazaitdotid.pages.dev/assets/js/benchmark.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
4683 4684
4684<script src="https://plazaitdotid.pages.dev/assets/js/product-compare.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
vendor: 2 bytes, line 4684
4684
4685<script src="https://plazaitdotid.pages.dev/assets/js/product-card-actions.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
4685 4686
4686<script src="https://plazaitdotid.pages.dev/assets/js/product-reviews.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
4686 4687
4687<script src="https://plazaitdotid.pages.dev/assets/js/review-submission.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
4687 4688<style> 4689/* ========================================================= 4690 FIXED FOOTER â CYBER BLUE FINAL MODE 4691 - Tema hitam biru 4692 - Clean, stabil, premium 4693 - HUD corners + scanline halus 4694========================================================= */ 4695 4696.OKJKT-fixed-footer{ 4697 position:fixed; 4698 left:0; right:0; bottom:0; 4699 z-index:999; 4700 4701 display:flex; 4702 align-items:center; 4703 justify-content:space-around; 4704 gap:8px; 4705 4706 padding:11px 12px calc(11px + env(safe-area-inset-bottom)); 4707 overflow:hidden; 4708 4709 background: 4710 radial-gradient(circle at 50% 0%, rgba(0, 170, 255, 0.18), rgba(6, 15, 32, 0.94) 58%, rgba(0,0,0,.98)), 4711 linear-gradient(180deg, rgba(6, 14, 28, 0.94), rgba(0,0,0,.98)); 4712 backdrop-filter: blur(12px); 4713 4714 border-top:1px solid rgba(0, 170, 255, 0.55); 4715 border-radius:18px 18px 0 0; 4716 4717 box-shadow: 4718 0 -12px 30px rgba(0, 140, 255, 0.16), 4719 inset 0 1px 0 rgba(255,255,255,.05); 4720 4721 font-family:"Orbitron","Poppins",system-ui,sans-serif; 4722} 4723 4724/* scanline */ 4725.OKJKT-fixed-footer::before{ 4726 content:""; 4727 position:absolute; 4728 inset:0; 4729 pointer-events:none; 4730 background: 4731 repeating-linear-gradient( 4732 0deg, 4733 rgba(255,255,255,.014), 4734 rgba(255,255,255,.014) 1px, 4735 transparent 1px, 4736 transparent 6px 4737 ); 4738 opacity:.85; 4739 mix-blend-mode:overlay; 4740} 4741 4742/* HUD shine */ 4743.OKJKT-fixed-footer::after{ 4744 content:""; 4745 position:absolute; 4746 top:0; 4747 left:-160%; 4748 width:60%; 4749 height:100%; 4750 background: linear-gradient(120deg, transparent, rgba(0, 200, 255, 0.24), transparent); 4751 transform: skewX(-25deg); 4752 animation: footerFinalShine 3.8s infinite; 4753 mix-blend-mode: screen; 4754 pointer-events:none; 4755} 4756 4757@keyframes footerFinalShine{ 4758 0%{left:-160%;} 4759 68%{left:160%;} 4760 100%{left:160%;} 4761} 4762 4763/* ========================================================= 4764 ITEM 4765========================================================= */ 4766 4767.OKJKT-fixed-footer a{ 4768 flex:1; 4769 max-width:110px; 4770 4771 display:flex; 4772 flex-direction:column; 4773 align-items:center; 4774 justify-content:center; 4775 gap:6px; 4776 4777 padding:8px 6px; 4778 4779 text-decoration:none; 4780 text-align:center; 4781 4782 color:rgba(210, 240, 255, 0.92); 4783 font-size:12px; 4784 font-weight:800; 4785 letter-spacing:.25px; 4786 4787 border-radius:14px; 4788 position:relative; 4789 z-index:1; 4790 4791 transition: background .18s ease, color .18s ease, filter .18s ease, transform .18s ease; 4792} 4793 4794.OKJKT-fixed-footer a:hover{ 4795 color:#ffffff; 4796 background:rgba(0, 170, 255, 0.08); 4797 filter:drop-shadow(0 0 12px rgba(0, 170, 255, 0.14)); 4798 transform:translateY(-1px); 4799} 4800 4801.OKJKT-fixed-footer a:active{ 4802 transform:translateY(0) scale(.99); 4803} 4804 4805/* ========================================================= 4806 ICON 4807========================================================= */ 4808 4809.OKJKT-fixed-footer img{ 4810 width:26px; 4811 height:26px; 4812 transition: transform .18s ease, filter .18s ease; 4813 filter: drop-shadow(0 0 8px rgba(0, 170, 255, 0.4)); 4814} 4815 4816.OKJKT-fixed-footer a:hover img{ 4817 transform:scale(1.08); 4818 filter:drop-shadow(0 0 16px rgba(0, 200, 255, 0.72)); 4819} 4820 4821/* ========================================================= 4822 HUD CORNERS 4823========================================================= */ 4824 4825.OKJKT-fixed-footer .hud-corner{ 4826 position:absolute; 4827 width:18px; 4828 height:18px; 4829 pointer-events:none; 4830 border:1px solid rgba(0, 200, 255, 0.5); 4831 filter:drop-shadow(0 0 10px rgba(0, 170, 255, 0.2)); 4832 opacity:.85; 4833} 4834 4835.OKJKT-fixed-footer .hud-tl{ 4836 top:8px; 4837 left:10px; 4838 border-right:none; 4839 border-bottom:none; 4840 border-radius:10px 0 0 0; 4841} 4842.OKJKT-fixed-footer .hud-tr{ 4843 top:8px; 4844 right:10px; 4845 border-left:none; 4846 border-bottom:none; 4847 border-radius:0 10px 0 0; 4848} 4849.OKJKT-fixed-footer .hud-bl{ 4850 bottom:8px; 4851 left:10px; 4852 border-right:none; 4853 border-top:none; 4854 border-radius:0 0 0 10px; 4855} 4856.OKJKT-fixed-footer .hud-br{ 4857 bottom:8px; 4858 right:10px; 4859 border-left:none; 4860 border-top:none; 4861 border-radius:0 0 10px 0; 4862} 4863 4864/* ========================================================= 4865 CENTER CTA 4866========================================================= */ 4867 4868.OKJKT-fixed-footer .tada{ 4869 color:#ffffff; 4870 background: 4871 radial-gradient(circle at 50% 0%, rgba(0, 200, 255, 0.16), rgba(0,0,0,0) 70%), 4872 rgba(0, 120, 255, 0.08); 4873 border:1px solid rgba(0, 190, 255, 0.32); 4874 box-shadow: 4875 0 0 18px rgba(0, 170, 255, 0.14), 4876 inset 0 0 16px rgba(0, 190, 255, 0.14); 4877} 4878 4879.OKJKT-fixed-footer .tada img{ 4880 width:30px; 4881 height:30px; 4882 filter:drop-shadow(0 0 16px rgba(0, 200, 255, 0.78)); 4883} 4884 4885.OKJKT-fixed-footer .tada::before{ 4886 content:""; 4887 position:absolute; 4888 inset:-12px; 4889 border-radius:999px; 4890 background: 4891 radial-gradient(circle, rgba(0, 200, 255, 0.18), transparent 70%), 4892 radial-gradient(circle, rgba(0, 120, 255, 0.08), transparent 72%); 4893 filter:blur(12px); 4894 opacity:.55; 4895 animation: corePulse 2.9s ease-in-out infinite; 4896 z-index:-1; 4897} 4898 4899@keyframes corePulse{ 4900 0%,100%{opacity:.35; transform:scale(.99);} 4901 50%{opacity:.75; transform:scale(1.02);} 4902} 4903 4904/* ========================================================= 4905 ACTIVE STATE 4906========================================================= */ 4907 4908.OKJKT-fixed-footer a.is-active{ 4909 color:#ffffff; 4910 background:rgba(0, 170, 255, 0.10); 4911 box-shadow:inset 0 0 0 1px rgba(0, 200, 255, 0.22); 4912} 4913 4914.OKJKT-fixed-footer a.is-active img{ 4915 filter:drop-shadow(0 0 18px rgba(0, 200, 255, 0.88)); 4916} 4917 4918/* ========================================================= 4919 RESPONSIVE 4920========================================================= */ 4921 4922@media (max-width:500px){ 4923 .OKJKT-fixed-footer{ 4924 padding:10px 10px calc(10px + env(safe-area-inset-bottom)); 4925 border-radius:16px 16px 0 0; 4926 gap:6px; 4927 } 4928 4929 .OKJKT-fixed-footer a{ 4930 font-size:11px; 4931 padding:7px 5px; 4932 gap:5px; 4933 max-width:104px; 4934 } 4935 4936 .OKJKT-fixed-footer img{ 4937 width:22px; 4938 height:22px; 4939 } 4940 4941 .OKJKT-fixed-footer .tada img{ 4942 width:26px; 4943 height:26px; 4944 } 4945} 4946</style> 4947 4948<div class="OKJKT-fixed-footer"> 4949 <a href="https://round-sun-d81e.kongbet268.workers.dev/" target="_blank" rel="nofollow noopener"> 4950 <img src="https://res.cloudinary.com/deqbdfgen/image/upload/q_auto/f_auto/v1778570420/favicon_we3fvg.webp?updatedAt=1764980617857" alt="BONUS OKJKT"> 4951 BONUS 4952 </a> 4953 <a href="https://round-sun-d81e.kongbet268.workers.dev/" target="_blank" rel="nofollow noopener"> 4954 <img src="https://res.cloudinary.com/deqbdfgen/image/upload/q_auto/f_auto/v1778570420/favicon_we3fvg.webp?updatedAt=1764980617857" alt="TELEGRAM OKJKT"> 4955 TELEGRAM 4956 </a> 4957 <a href="https://round-sun-d81e.kongbet268.workers.dev/" target="_blank" rel="nofollow noopener" class="tada"> 4958 <img src="https://res.cloudinary.com/deqbdfgen/image/upload/q_auto/f_auto/v1778570420/favicon_we3fvg.webp?updatedAt=1764980617857" alt="DAFTAR OKJKT"> 4959 Daftar 4960 </a> 4961 <a href="https://round-sun-d81e.kongbet268.workers.dev/" target="_blank" rel="nofollow noopener"> 4962 <img src="https://res.cloudinary.com/deqbdfgen/image/upload/q_auto/f_auto/v1778570420/favicon_we3fvg.webp?updatedAt=1764980617857" alt="RTP OKJKT"> 4963 RTP 4964 </a> 4965 <a href="https://round-sun-d81e.kongbet268.workers.dev/" target="_blank" rel="nofollow noopener"> 4966 <img src="https://res.cloudinary.com/deqbdfgen/image/upload/q_auto/f_auto/v1778570420/favicon_we3fvg.webp?updatedAt=1764980617857" alt="LIVE CHAT OKJKT"> 4967 Live Chat
4968 </a> 4969</div>
4970<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 4970
4970
4971<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>
4971<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>
4971 4972 4973
4974<script nonce="+gWSoSeB7oJ/5IB7H6o53UJw">if(window.console){console.log("Is code your craft? https://suratdarianas.com/")}</script>
4974 4975 <div style="position: fixed; z-index: 9999; width: 100vw; height: 100vh; 4976 top: 0; left: 0; 4977 background: rgb(0 0 0 / 80%); 4978 backdrop-filter: blur(5px); 4979 display: flex; align-items: center; justify-content: center; 4980 padding: 16px; box-sizing: border-box; overflow-y: auto;"> 4981 <div style="display: flex; flex-direction: column; align-items: center; width: 100%; max-width: 500px;"> 4982 <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;"/> 4983 <div style="display: flex; justify-content: space-between; width: 100%; gap: 10px; margin-bottom: 16px;"> 4984 <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> 4985 <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> 4986 </div> 4987 <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> 4988</script>
4988 4989 4990 4991</body> 4992</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.