PageSourceSearch

https://hoki123.net/

html hoki123.net collected 2026-09-30 23:12:55 UTC 248,740 bytes, 4,730 lines download raw bytes

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