PageSourceSearch

https://happyw.co/

html happyw.co collected 2026-09-29 15:48:41 UTC 287,371 bytes, 6,064 lines download raw bytes

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