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