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