PageSourceSearch

https://mymousegames.com/

html mymousegames.com collected 2026-10-01 01:32:59 UTC 261,437 bytes, 4,753 lines download raw bytes

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

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.