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