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