PageSourceSearch

https://karenswigs.com/

html karenswigs.com collected 2026-10-09 23:34:50 UTC 286,259 bytes, 7,995 lines download raw bytes

1
2<!--
3███████╗███████╗ ██████╗     █████╗ ██╗   ██╗████████╗
4██╔════╝██╔════╝██╔═══██╗   ██╔══██╗██║   ██║╚══██╔══╝
5███████╗█████╗  ██║   ██║   ███████║██║   ██║   ██║   
6╚════██║██╔══╝  ██║   ██║   ██╔══██║╚██╗ ██╔╝   ██║   
7███████║███████╗╚██████╔╝   ██║  ██║ ╚████╔╝    ██║   
8╚══════╝╚══════╝ ╚═════╝    ╚═╝  ╚═╝  ╚═══╝     ╚═╝  
9// WEBSITE   : dewi11
10// VERSION   : 1.0
11-->
12<!-- Script Landing Page -->
13<!DOCTYPE html>
14<html lang="id">
15
16<head>
17  <meta charset="UTF-8">
18  <title>DEWI11 Game Online – Pilihan Lengkap untuk Pecinta Gaming</title>
19  <meta name="description" content="DEWI11 menyediakan berbagai pilihan game online dan informasi promo bagi pengguna yang ingin Cuan.">
20  <meta name="robots" content="index, follow">
21  <meta name="author" content="dewi11" />
22    <meta name="publisher" content="dewi11" />
23    <meta name="copyright" content="dewi11" />
24    <meta name="keywords" content="dewi11" />
25    <meta name="pinterest" content="nopin" />
26    <meta name="geo.country" content="ID" />
27    <meta name="geo.region" content="ID">
28    <meta name="geo.placename" content="Indonesia" />
29    <meta name="language" content="ID" />
30    <meta name="tgn.nation" content="Indonesia" />
31  <link rel="canonical" href="https://karenswigs.com/">
32  <link rel="amphtml" href="https://karenswigs.dewi11lm.com">
33      <link rel="alternate" hreflang="id-id" href="https://karenswigs.dewi11lm.com"/>
34      <link rel="alternate" href="https://karenswigs.dewi11lm.com"/>
35      <link rel="alternate" hreflang="id" href="https://karenswigs.dewi11lm.com"/>
36      <link rel="alternate" hreflang="en" href="https://karenswigs.dewi11lm.com"/>
37      <link rel="alternate" hreflang="x-default" href="https://karenswigs.dewi11lm.com"/>
38  <link rel="preconnect" href="https://www.googletagmanager.com" crossorigin>
39  
39<script
40    nonce="se3iyzEHMc9FQEB4wSyd0w==">window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments) } gtag("consent", "default", { ad_storage: "denied", ad_user_data: "denied", ad_personalization: "denied", analytics_storage: "granted", wait_for_update: 500 }); gtag("js", new Date); gtag("config", "G-0LSM1YJSPZ", { send_page_view: !0, linker: { domains: ["plazait.co.id", "www.plazait.co.id"] } }); window.ga4Ecomm = { viewItem: function (e) { if (!window.gtag) return; try { gtag("event", "view_item", { currency: e.currency || "IDR", value: e.value || 0, items: [{ item_id: e.item_id || "", item_name: e.item_name || "", item_brand: e.item_brand || "", item_category: e.item_category || "", price: e.price || 0, quantity: 1 }] }) } catch (t) { } }, addToCart: function (e) { if (!window.gtag) return; try { gtag("event", "add_to_cart", { currency: e.currency || "IDR", value: (e.price || 0) * (e.quantity || 1), items: [{ item_id: e.item_id || "", item_name: e.item_name || "", item_brand: e.item_brand || "", item_category: e.item_category || "", price: e.price || 0, quantity: e.quantity || 1 }] }) } catch (t) { } } };</script>
40
41  <meta property="og:locale" content="id_ID">
42  <meta property="og:site_name" content="dewi11 MAXWIN">
43  <meta property="og:type" content="product">
44  <meta property="og:title" content="DEWI11 Game Online – Pilihan Lengkap untuk Pecinta Gaming">
45  <meta property="og:description"
46    content="DEWI11 menyediakan berbagai pilihan game online dan informasi promo bagi pengguna yang ingin Cuan.">
47  <meta property="og:url" content="https://karenswigs.com/">
48  <meta property="og:image" content="asset/banner.jpg">
49  <meta property="og:image:alt" content="DEWI11 Game Online – Pilihan Lengkap untuk Pecinta Gaming">
50  <meta property="product:price:amount" content="5000">
51  <meta property="product:price:currency" content="IDR">
52  <meta property="product:availability" content="out of stock">
53  <meta name="twitter:card" content="summary_large_image">
54  <meta name="twitter:title" content="DEWI11 Game Online – Pilihan Lengkap untuk Pecinta Gaming">
55  <meta name="twitter:description"
56    content="DEWI11 menyediakan berbagai pilihan game online dan informasi promo bagi pengguna yang ingin Cuan.">
57  <meta name="twitter:image" content="asset/banner.jpg">
58  <link rel="icon" type="image/png" href="asset/icon-dewi11.png">
59  <meta name="google-site-verification" content="QX7W1ghO6vN-iU54gfEMQSo4KtzYWrRnfZ0CHXFS-dU" />
60
61  
61<script type="application/ld+json">
62{
63  "@context": "https://schema.org",
64  "@type": "WebSite",
65  "@id": "/#website",
66  "url": "https://karenswigs.com/",
67  "name": "dewi11",
68  "inLanguage": "id",
69  "potentialAction": {
70    "@type": "SearchAction",
71    "target": "https://karenswigs.com/",
72    "query-input": "required name=search_term_string"
73  }
74}
75</script>
75
76
77  
77<script type="application/ld+json">
78{
79  "@context": "https://schema.org",
80  "@type": "Organization",
81  "@id": "/#organization",
82  "name": "dewi11",
83  "url": "https://karenswigs.com/",
84  "logo": "asset/dewi11-logo.gif"
85}
86</script>
86
87
88  
88<script type="application/ld+json">
89{
90  "@context": "https://schema.org",
91  "@type": "Product",
92  "name": "DEWI11 Game Online – Pilihan Lengkap untuk Pecinta Gaming",
93  "sku": "1S83N0690RID",
94  "image": [
95    "asset/banner.jpg"
96  ],
97  "url": "https://karenswigs.com/",
98  "description": "dewi11 menyediakan informasi link akses bandar togel online dan Toto Macau. Temukan informasi yang tersusun rapi, akses melalui perangkat desktop maupun mobile, serta layanan pelanggan yang tersedia selama 24 jam.",
99  "category": "dewi11",
100  "brand": {
101    "@type": "Brand",
102    "name": "dewi11"
103  },
104  "offers": {
105  "@type": "Offer",
106  "url": "https://karenswigs.com/",
107  "priceCurrency": "IDR",
108  "price": "5000",
109  "priceValidUntil": "2027-03-01",
110  "availability": "https://schema.org/OutOfStock",
111  "itemCondition": "https://schema.org/NewCondition",
112  "seller": {
113    "@type": "Organization",
114    "name": "dewi11",
115    "url": "https://karenswigs.com/"
116  },
117  "shippingDetails": {
118    "@type": "OfferShippingDetails",
119    "shippingDestination": {
120      "@type": "DefinedRegion",
121      "addressCountry": "ID"
122    },
123    "shippingRate": {
124      "@type": "MonetaryAmount",
125      "value": "0",
126      "currency": "IDR"
127    },
128    "deliveryTime": {
129      "@type": "ShippingDeliveryTime",
130      "handlingTime": {
131        "@type": "QuantitativeValue",
132        "minValue": 0,
133        "maxValue": 1,
134        "unitCode": "DAY"
135      },
136      "transitTime": {
137        "@type": "QuantitativeValue",
138        "minValue": 1,
139        "maxValue": 5,
140        "unitCode": "DAY"
141      }
142    }
143  },
144  "hasMerchantReturnPolicy": {
145    "@type": "MerchantReturnPolicy",
146    "applicableCountry": "ID",
147    "returnPolicyCategory": "https://schema.org/MerchantReturnNotPermitted"
148  }
149},
150"aggregateRating": {
151  "@type": "AggregateRating",
152  "ratingValue": "5",
153  "reviewCount": "6",
154  "bestRating": "5",
155  "worstRating": "1"
156},
157  "review": [
158    {
159      "@type": "Review",
160      "author": {
161        "@type": "Person",
162        "name": "Hendra Surya"
163      },
164      "reviewBody": "Buat pengagum olahraga, dewi11 ini pas banget. Tampilan pasaran olahraganya rapi, up-to-date, dan gak bikin pusing pas diliat.",
165      "reviewRating": {
166        "@type": "Rating",
167        "ratingValue": "5",
168        "bestRating": "5",
169        "worstRating": "1"
170      }
171    },
172    {
173      "@type": "Review",
174      "author": {
175        "@type": "Person",
176        "name": "Taufik Wijaya"
177      },
178      "reviewBody": "Navigasi situsnya juara! Buka dari ponsel pas sinyal lagi jelek pun tetep kencang dan gak pake loading muter-muter.",
179      "reviewRating": {
180        "@type": "Rating",
181        "ratingValue": "5",
182        "bestRating": "5",
183        "worstRating": "1"
184      }
185    },
186    {
187      "@type": "Review",
188      "author": {
189        "@type": "Person",
190        "name": "Andi Saputra"
191      },
192      "reviewBody": "Gak ada iklan mengganggu yang nutupin layar. Jadi bisa fokus meriset data pertandingan dengan tenang dan nyaman.",
193      "reviewRating": {
194        "@type": "Rating",
195        "ratingValue": "5",
196        "bestRating": "5",
197        "worstRating": "1"
198      }
199    },
200    {
201      "@type": "Review",
202      "author": {
203        "@type": "Person",
204        "name": "Farhan Wibowo"
205      },
206      "reviewBody": "Honestly, ini bukan sekadar meditasi, tapi kayak support group buat jiwa-jiwa yang lelah. Love this community so much.",
207      "reviewRating": {
208        "@type": "Rating",
209        "ratingValue": "5",
210        "bestRating": "5",
211        "worstRating": "1"
212      }
213    },
214    {
215      "@type": "Review",
216      "author": {
217        "@type": "Person",
218        "name": "Michael Rian"
219      },
220      "reviewBody": "Fitur pembaruan skornya beneran instan. Gak perlu refresh halaman berkali-kali, datanya langsung update sendiri.",
221      "reviewRating": {
222        "@type": "Rating",
223        "ratingValue": "5",
224        "bestRating": "5",
225        "worstRating": "1"
226      }
227    },
228    {
229      "@type": "Review",
230      "author": {
231        "@type": "Person",
232        "name": "Lukman Prasetyo"
233      },
234      "reviewBody": "Tanya-tanya ke Live Chat jam dua malam tetep direspon cepat dan ramah. Pelayanan customer service-nya jempolan!",
235      "reviewRating": {
236        "@type": "Rating",
237        "ratingValue": "5",
238        "bestRating": "5",
239        "worstRating": "1"
240      }
241    }
242  ]
243}
244</script>
244
245
246  
246<script type="application/ld+json">
247{
248  "@context": "https://schema.org",
249  "@type": "BreadcrumbList",
250  "itemListElement": [
251    {
252      "@type": "ListItem",
253      "position": 1,
254      "name": "dewi11",
255      "item": "https://karenswigs.com/"
256    },
257    {
258      "@type": "ListItem",
259      "position": 2,
260      "name": "ONLINE",
261      "item": "https://karenswigs.com/"
262    },
263    {
264      "@type": "ListItem",
265      "position": 3,
266      "name": "Link Akses dewi11",
267      "item": "https://karenswigs.com/"
268    },
269    {
270      "@type": "ListItem",
271      "position": 4,
272      "name": "Pelayanan Meditasi",
273      "item": "https://karenswigs.com/"
274    },
275    {
276      "@type": "ListItem",
277      "position": 5,
278      "name": "dewi11 SPORTSBOOK",
279      "item": "https://karenswigs.com/"
280    }
281  ]
282}
283</script>
283
284
285
286  
286<script type="application/ld+json">
287{
288  "@context": "https://schema.org",
289  "@type": "FAQPage",
290  "mainEntity": [
291    {
292      "@type": "Question",
293      "name": "Apa keunggulan utama dewi11 dibanding portal hiburan digital lainnya?",
294      "acceptedAnswer": {
295        "@type": "Answer",
296        "text": "dewi11 berfokus pada spesialisasi sportsbook dengan penyajian data pasaran olahraga yang terstruktur, statistik akurat, dan server kelas elit berkecepatan tinggi."
297      }
298    },
299    {
300      "@type": "Question",
301      "name": "Apakah pembaruan skor dan statistik pertandingan di dewi11 disajikan secara real-time?",
302      "acceptedAnswer": {
303        "@type": "Answer",
304        "text": "Ya, seluruh data dan pergerakan statistik pertandingan diperbarui secara otomatis dalam hitungan milidetik tanpa perlu memuat ulang halaman."
305      }
306    },
307    {
308      "@type": "Question",
309      "name": "Apakah portal dewi11 tetap lancar diakses menggunakan jaringan seluler 3G/4G?",
310      "acceptedAnswer": {
311        "@type": "Answer",
312        "text": "Sangat lancar. Arsitektur web dewi11 telah dioptimasi dengan pemuatan adaptif sehingga hemat konsumsi kuota dan tetap responsif di jaringan minim bandwidth."
313      }
314    },
315    {
316      "@type": "Question",
317      "name": "Bagaimana dewi11 menjamin privasi data para penggunanya?",
318      "acceptedAnswer": {
319        "@type": "Answer",
320        "text": "Seluruh informasi pengguna diisolasi menggunakan protokol enkripsi siber hibrida terkini, mencegah akses tanpa izin dari pihak ketiga."
321      }
322    },
323    {
324      "@type": "Question",
325      "name": "Apakah ada panduan navigasi bagi pengguna pemula yang baru mengenal dunia sportsbook?",
326      "acceptedAnswer": {
327        "@type": "Answer",
328        "text": "Ada. dewi11 menyediakan antarmuka yang sangat ringkas lengkap dengan panduan teknis yang mudah dipahami oleh siapa saja."
329      }
330    },
331    {
332      "@type": "Question",
333      "name": "Layanan bantuan apa yang tersedia jika terjadi kendala teknis di dalam portal?",
334      "acceptedAnswer": {
335        "@type": "Answer",
336        "text": "Tim Customer Service dewi11 bersiaga penuh 24 jam nonstop setiap hari melalui saluran komunikasi Live Chat dengan penanganan yang cepat dan solutif."
337      }
338    }
339  ]
340}
341</script>
341
342
343  <!-- User Session Data -->
344  <meta name="csrf-token" content="9ce6e4a17f7cc189893df9e47789b13e98829450d516a0cae5ca7b5f43e5dadc">
345  <meta name="user-logged-in" content="false">
346  <meta name="user-id" content="0">
347
348  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
349
350  <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/style.css">
351  <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/bottom-nav.css">
352  <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/search-suggest.css">
353  <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/product-detail.css">
354  <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/product-grid.css">
355  <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/site-notice.css">
356  <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/benchmark.css">
357  <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/product-filters.css">
358  <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/mega-menu-tiles.css">
359  <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/product-compare.css">
360  <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/product-card-actions.css">
361  <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/modal.css">
362
363  <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/reviews-points.css">
364
365</head>
366
367<body>
368  <header class="topbar">
369    <div class="container topbar-inner">
370      <div class="topbar-left">
371        DEWI11 Game Online – Pilihan Lengkap untuk Pecinta Gaming
372      </div>
373      <div class="topbar-right">
374        <a href="https://karenswigs.com/">dewi11</a>
375        <a href="https://karenswigs.com/">LINK ALTERNATIF dewi11</a>
376        <a href="https://karenswigs.com/">Daftar</a>
377        <a href="https://karenswigs.com/">Masuk</a>
378      </div>
379    </div>
380  </header>
381  <nav class="navbar">
382    <nav class="navbar-logo" style="width: 100%;">
383      <div class="container nav-inner" style="justify-items: center; justify-content: center;">
384        <a href="/" class="logo-mobile">
385          <img src="asset/dewi11-logo.gif" alt="dewi11" height="100">
386        </a>
387      </div>
388    </nav>
389    <div class="container nav-inner">
390      <a href="/" class="logo">
391        <img src="asset/dewi11-logo.gif" alt="dewi11" height="100">
392      </a>
393
394
395      <form class="search" method="get" action="#">
396        <input type="hidden" name="page" value="produk">
397
398        <!-- Search Icon (Desktop) -->
399        <button type="submit" class="search-icon-btn" id="searchBtn" aria-label="Cari">
400          <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"
401            stroke-linecap="round" stroke-linejoin="round">
402            <circle cx="11" cy="11" r="8" />
403            <path d="m21 21-4.35-4.35" />
404          </svg>
405        </button>
406
407        <input type="text" name="q" id="searchInput" placeholder="Cari dewi11" value="" autocomplete="off">
408
409        <div class="search-suggest" id="searchSuggest" hidden></div>
410      </form>
411
412      <div class="nav-actions">
413        <!--<button class="icon-btn" id="notifBtn" title="Notifikasi">🔔</button>-->
414        <button class="icon-btn cart-indicator" id="cartBtn" title="Keranjang">
415          🛒 <span id="cartCount" class="badge" data-role="cart-badge" aria-live="polite">0</span>
416        </button>
417
418
419        <span id="compareCount" class="badge" data-role="compare-badge" aria-live="polite">0</span>
420        </button>
421
422        <!-- Dynamic login/logout button -->
423        <button class="login-btn" id="loginBtn" aria-label="Masuk">
424          <span class="login-text">Masuk</span>
425          <span class="login-ico" aria-hidden="true">😊</span>
426        </button>
427      </div>
428    </div>
429
430    <div class="container" style="display: flex; align-items: center;">
431
432
433      <div class="mega-cats-wrapper">
434        <div class="mega-cats container" id="megaCatsScroll" style="padding-left: 5px !important;">
435          <a class="" href="https://karenswigs.dewi11lm.com">
436            dewi11 </a>
437          <a class="" href="https://karenswigs.dewi11lm.com">
438            dewi11 DAFTAR </a>
439          <a class="" href="https://karenswigs.dewi11lm.com">
440            dewi11 LOGIN </a>
441          <a class="" href="https://karenswigs.dewi11lm.com">
442            dewi11 SPORTSBOOK </a>
443          <a class="" href="https://karenswigs.dewi11lm.com">
444            dewi11 GAMPANG MAXWIN </a>
445          <a class="" href="https://karenswigs.dewi11lm.com">
446            LINK ALTERNATIF dewi11 </a>
447          <a class="" href="https://karenswigs.dewi11lm.com">
448            dewi11 TERPERCAYA </a>
449        </div>
450        <div class="mega-cats-fade" id="megaCatsFade"></div>
451      </div>
452    </div>
453  </nav>
454
455  <!-- Panel Mega Menu - Outside navbar for full-screen -->
456  <div class="mm2-panel" data-mm2="panel" role="dialog" aria-label="Kategori">
457    <div class="mm2-view is-active" data-mm2="top"></div>
458    <div class="mm2-view" data-mm2="detail"></div>
459  </div>
460
461  <!-- Backdrop - Outside navbar for full-screen -->
462  <div class="mm2-backdrop" data-mm2="backdrop"></div>
463
464  <!-- Mobile Bottom Navigation -->
465  <nav class="bottom-nav">
466    <div class="bottom-nav-inner">
467      <!-- Home -->
468      <a href="/" class="bottom-nav-item" id="bottomHomeBtn" data-page="home">
469        <div class="bottom-nav-item-icon">
470          <!-- Outlined icon (default) -->
471          <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
472            stroke-linecap="round" stroke-linejoin="round">
473            <path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" />
474            <polyline points="9 22 9 12 15 12 15 22" />
475          </svg>
476          <!-- Filled icon (active) -->
477          <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor">
478            <path
479              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" />
480            <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" />
481          </svg>
482        </div>
483        <span class="bottom-nav-item-label">Home</span>
484      </a>
485
486      <!-- Kategori -->
487      <button class="bottom-nav-item" id="bottomCategoryBtn" data-mm2="trigger" aria-label="Kategori">
488        <div class="bottom-nav-item-icon">
489          <!-- Outlined icon (default) -->
490          <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
491            stroke-linecap="round" stroke-linejoin="round">
492            <line x1="3" y1="12" x2="21" y2="12" />
493            <line x1="3" y1="6" x2="21" y2="6" />
494            <line x1="3" y1="18" x2="21" y2="18" />
495          </svg>
496          <!-- Filled icon (active) -->
497          <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor">
498            <path
499              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" />
500          </svg>
501        </div>
502        <span class="bottom-nav-item-label">Kategori</span>
503      </button>
504
505      <!-- Keranjang -->
506      <button class="bottom-nav-item" id="bottomCartBtn">
507        <div class="bottom-nav-item-icon">
508          <!-- Outlined icon (default) -->
509          <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
510            stroke-linecap="round" stroke-linejoin="round">
511            <circle cx="9" cy="21" r="1" />
512            <circle cx="20" cy="21" r="1" />
513            <path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6" />
514          </svg>
515          <!-- Filled icon (active) -->
516          <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor">
517            <path
518              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" />
519          </svg>
520          <span class="bottom-nav-item-badge" id="bottomCartCount">0</span>
521        </div>
522        <span class="bottom-nav-item-label">Keranjang</span>
523      </button>
524
525      <!-- Compare -->
526      <button class="bottom-nav-item" id="bottomCompareBtn">
527        <div class="bottom-nav-item-icon">
528          <!-- Outlined icon (default) -->
529          <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
530            stroke-linecap="round" stroke-linejoin="round">
531            <polyline points="17 11 21 7 17 3" />
532            <path d="M21 7H9" />
533            <polyline points="7 21 3 17 7 13" />
534            <path d="M15 17H3" />
535          </svg>
536          <!-- Filled icon (active) -->
537          <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor">
538            <path
539              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" />
540          </svg>
541          <span class="bottom-nav-item-badge" id="bottomCompareCount" style="display:none;">0</span>
542        </div>
543        <span class="bottom-nav-item-label">Compare</span>
544      </button>
545
546      <!-- Chat - Always show, check login in JavaScript -->
547      <button class="bottom-nav-item" id="bottomChatBtn" data-page="chat">
548        <div class="bottom-nav-item-icon">
549          <!-- Outlined icon (default) -->
550          <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
551            opacity="0.85">
552            <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" />
553          </svg>
554          <!-- Filled icon (active) -->
555          <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor">
556            <path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z" />
557          </svg>
558          <span class="bottom-nav-item-badge" id="bottomChatCount" style="display:none;">0</span>
559        </div>
560        <span class="bottom-nav-item-label">Chat</span>
561      </button>
562
563      <!-- Akun -->
564      <button class="bottom-nav-item" id="bottomLoginBtn">
565        <div class="bottom-nav-item-icon">
566          <!-- Outlined icon (default) -->
567          <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
568            stroke-linecap="round" stroke-linejoin="round">
569            <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" />
570            <circle cx="12" cy="7" r="4" />
571          </svg>
572          <!-- Filled icon (active) -->
573          <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor">
574            <path fill-rule="evenodd"
575              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"
576              clip-rule="evenodd" />
577          </svg>
578        </div>
579        <span class="bottom-nav-item-label">Login</span>
580      </button>
581      </svg>
582    </div>
583    </button>
584    </div>
585  </nav>
586  <!-- Mobile User Menu Bottom Sheet -->
587
588  
588<script nonce="se3iyzEHMc9FQEB4wSyd0w==">
589    (function () {
590      const btn = document.getElementById('megaMoreBtn');
591      const dd = document.getElementById('megaMoreDropdown');
592      if (!btn || !dd) return;
593
594      function openDD() {
595        dd.hidden = false;
596        btn.setAttribute('aria-expanded', 'true');
597        document.addEventListener('click', outside, { capture: true });
598        document.addEventListener('keydown', esc);
599      }
600      function closeDD() {
601        if (dd.hidden) return;
602        dd.hidden = true;
603        btn.setAttribute('aria-expanded', 'false');
604        document.removeEventListener('click', outside, { capture: true });
605        document.removeEventListener('keydown', esc);
606      }
607      function toggle() { dd.hidden ? openDD() : closeDD(); }
608      function outside(e) {
609        if (!dd.contains(e.target) && e.target !== btn) {
610          closeDD();
611        }
612      }
613      function esc(e) {
614        if (e.key === 'Escape') {
615          closeDD();
616          btn.focus();
617        }
618      }
619      btn.addEventListener('click', toggle);
620    })();
621
622    // ========== HORIZONTAL SCROLL FADE INDICATOR ==========
623    (function () {
624      const megaCats = document.getElementById('megaCatsScroll');
625      const fade = document.getElementById('megaCatsFade');
626      if (!megaCats || !fade) return;
627
628      function updateFade() {
629        const scrollLeft = megaCats.scrollLeft;
630        const scrollWidth = megaCats.scrollWidth;
631        const clientWidth = megaCats.clientWidth;
632        const maxScroll = scrollWidth - clientWidth;
633
634        // Hide fade when scrolled to end (within 10px tolerance)
635        if (maxScroll - scrollLeft <= 10) {
636          fade.style.opacity = '0';
637        } else {
638          fade.style.opacity = '1';
639        }
640      }
641
642      // Update on scroll
643      megaCats.addEventListener('scroll', updateFade, { passive: true });
644
645      // Update on resize
646      window.addEventListener('resize', updateFade, { passive: true });
647
648      // Initial check
649      setTimeout(updateFade, 100);
650    })();
651
652    document.addEventListener('DOMContentLoaded', function () {
653      var input = document.getElementById('searchInput');
654      if (!input) return;
655      input.addEventListener('keydown', function (e) {
656        if (e.key === 'Enter') {
657          e.preventDefault();
658          var form = input.form;
659          if (!form) return;
660          if (typeof form.requestSubmit === 'function') form.requestSubmit();
661          else form.submit();
662        }
663      });
664    });
665
666
667    (function () {
668      const cartBtn = document.getElementById('cartBtn');
669      if (cartBtn) {
670        cartBtn.addEventListener('click', function (e) {
671          e.preventDefault();
672
673          const checkLogin = () => {
674            return window.isUserLoggedIn ? window.isUserLoggedIn() : false;
675          };
676
677          if (checkLogin()) {
678            window.location.href = '/keranjang';
679          } else {
680            showCartLoginModal();
681          }
682        });
683      }
684
685      const loginBtn = document.getElementById('loginBtn');
686      if (loginBtn) {
687        loginBtn.addEventListener('click', function (e) {
688          e.preventDefault();
689          window.location.href = 'https://karenswigs.com/';
690        });
691      }
692
693      const userMenuBtn = document.getElementById('userMenuBtn');
694      const userDropdown = document.getElementById('userDropdown');
695
696      if (userMenuBtn && userDropdown) {
697        function openDropdown() {
698          userDropdown.hidden = false;
699          userMenuBtn.setAttribute('aria-expanded', 'true');
700          document.addEventListener('click', closeOnOutside, { capture: true });
701          document.addEventListener('keydown', closeOnEscape);
702        }
703
704        function closeDropdown() {
705          if (userDropdown.hidden) return;
706          userDropdown.hidden = true;
707          userMenuBtn.setAttribute('aria-expanded', 'false');
708          document.removeEventListener('click', closeOnOutside, { capture: true });
709          document.removeEventListener('keydown', closeOnEscape);
710        }
711
712        function closeOnOutside(e) {
713          if (!userDropdown.contains(e.target) && e.target !== userMenuBtn) {
714            closeDropdown();
715          }
716        }
717
718        function closeOnEscape(e) {
719          if (e.key === 'Escape') {
720            closeDropdown();
721            userMenuBtn.focus();
722          }
723        }
724
725        userMenuBtn.addEventListener('click', function (e) {
726          e.preventDefault();
727          userDropdown.hidden ? openDropdown() : closeDropdown();
728        });
729
730        // Close dropdown when clicking profile links
731        userDropdown.querySelectorAll('[data-close-dropdown]').forEach(link => {
732          link.addEventListener('click', function () {
733            closeDropdown();
734          });
735        });
736      }
737
738      // Bottom nav profile button - toggle mobile bottom sheet
739      const bottomProfileBtn = document.getElementById('bottomProfileBtn');
740      const mobileUserSheet = document.getElementById('mobileUserSheet');
741      const mobileUserSheetBackdrop = document.getElementById('mobileUserSheetBackdrop');
742
743      if (bottomProfileBtn && mobileUserSheet) {
744        function openMobileSheet() {
745          mobileUserSheet.hidden = false;
746          document.body.style.overflow = 'hidden';
747          // Trigger animation
748          requestAnimationFrame(() => {
749            mobileUserSheet.classList.add('active');
750          });
751        }
752
753        function closeMobileSheet() {
754          mobileUserSheet.classList.remove('active');
755          document.body.style.overflow = '';
756          setTimeout(() => {
757            mobileUserSheet.hidden = true;
758          }, 300);
759        }
760
761        bottomProfileBtn.addEventListener('click', function (e) {
762          e.preventDefault();
763          openMobileSheet();
764        });
765
766        if (mobileUserSheetBackdrop) {
767          mobileUserSheetBackdrop.addEventListener('click', closeMobileSheet);
768        }
769
770        // Close on escape key
771        document.addEventListener('keydown', function (e) {
772          if (e.key === 'Escape' && !mobileUserSheet.hidden) {
773            closeMobileSheet();
774          }
775        });
776
777        // Close sheet when clicking profile links
778        mobileUserSheet.querySelectorAll('[data-close-sheet]').forEach(link => {
779          link.addEventListener('click', function () {
780            closeMobileSheet();
781          });
782        });
783      }
784
785      // Handle Google avatar error in bottom-nav (fallback to initials)
786      const bottomNavAvatar = document.querySelector('.bottom-nav-avatar-img');
787      if (bottomNavAvatar) {
788        bottomNavAvatar.addEventListener('error', function () {
789          const initials = this.getAttribute('data-fallback-initials') || 'U';
790          const initialsDiv = document.createElement('div');
791          initialsDiv.className = 'bottom-nav-avatar-initials';
792          initialsDiv.textContent = initials;
793          this.parentNode.replaceChild(initialsDiv, this);
794        });
795      }
796
797      // Mobile logout button
798      const mobileLogoutBtn = document.getElementById('mobileLogoutBtn');
799      if (mobileLogoutBtn) {
800        mobileLogoutBtn.addEventListener('click', async function (e) {
801          e.preventDefault();
802
803          // Check push notification before logout
804          if (window.ChatNotification && typeof window.ChatNotification.confirmLogoutWithPushNotification === 'function') {
805            const confirmLogout = await window.ChatNotification.confirmLogoutWithPushNotification();
806            if (!confirmLogout) {
807              return; // User cancelled logout
808            }
809          }
810
811          const getCsrfToken = () => document.querySelector('meta[name="csrf-token"]')?.getAttribute('content') || '';
812
813          try {
814            const response = await fetch('/auth/logout', {
815              method: 'POST',
816              credentials: 'same-origin',
817              headers: {
818                'Content-Type': 'application/json',
819                'X-CSRF-Token': getCsrfToken()
820              },
821              body: JSON.stringify({
822                csrf_token: getCsrfToken()
823              })
824            });
825
826            if (response.ok) {
827              if (window.guestCart && typeof window.guestCart.clear === 'function') {
828                window.guestCart.clear();
829              }
830              window.location.href = '/login?logged_out=1';
831            } else {
832              console.error('Logout failed');
833              window.location.href = '/logout';
834            }
835          } catch (error) {
836            console.error('Logout error:', error);
837            window.location.href = '/logout';
838          }
839        });
840      }
841
842      const logoutBtn = document.getElementById('logoutBtn');
843      if (logoutBtn) {
844        logoutBtn.addEventListener('click', async function (e) {
845          e.preventDefault();
846
847          // Check push notification before logout
848          if (window.ChatNotification && typeof window.ChatNotification.confirmLogoutWithPushNotification === 'function') {
849            const confirmLogout = await window.ChatNotification.confirmLogoutWithPushNotification();
850            if (!confirmLogout) {
851              return; // User cancelled logout
852            }
853          }
854
855          const getCsrfToken = () => document.querySelector('meta[name="csrf-token"]')?.getAttribute('content') || '';
856
857          try {
858            const response = await fetch('/auth/logout', {
859              method: 'POST',
860              credentials: 'same-origin',
861              headers: {
862                'Content-Type': 'application/json',
863                'X-CSRF-Token': getCsrfToken()
864              },
865              body: JSON.stringify({
866                csrf_token: getCsrfToken()
867              })
868            });
869
870            if (response.ok) {
871              if (window.guestCart && typeof window.guestCart.clear === 'function') {
872                window.guestCart.clear();
873              }
874
875              window.location.href = '/login?logged_out=1';
876            } else {
877              console.error('Logout failed');
878              window.location.href = '/logout';
879            }
880          } catch (error) {
881            console.error('Logout error:', error);
882            window.location.href = '/logout';
883          }
884        });
885      }
886
887      const wishlistBtn = document.getElementById('wishlistBtn');
888      const notifBtn = document.getElementById('notifBtn');
889
890      if (wishlistBtn) {
891        wishlistBtn.addEventListener('click', function (e) {
892          e.preventDefault();
893          alert('Fitur wishlist akan segera tersedia!');
894        });
895      }
896
897      if (notifBtn) {
898        notifBtn.addEventListener('click', function (e) {
899          e.preventDefault();
900          alert('Fitur notifikasi akan segera tersedia!');
901        });
902      }
903    })();
904
905    // ========== MOBILE BOTTOM NAVIGATION ==========
906    (function initBottomNav() {
907      // Sync cart badge with bottom nav
908      function syncBottomCartBadge() {
909        const mainBadge = document.getElementById('cartCount');
910        const bottomBadge = document.getElementById('bottomCartCount');
911        if (mainBadge && bottomBadge) {
912          const count = mainBadge.textContent;
913          bottomBadge.textContent = count;
914          bottomBadge.style.display = parseInt(count) > 0 ? 'flex' : 'none';
915        }
916      }
917
918      // Sync compare badge with bottom nav
919      function syncBottomCompareBadge() {
920        const mainBadge = document.getElementById('compareCount');
921        const bottomBadge = document.getElementById('bottomCompareCount');
922        if (mainBadge && bottomBadge) {
923          const count = mainBadge.textContent;
924          bottomBadge.textContent = count;
925          bottomBadge.style.display = parseInt(count) > 0 ? 'flex' : 'none';
926        }
927      }
928
929      // Initial sync
930      syncBottomCartBadge();
931      syncBottomCompareBadge();
932
933      // Observe badge changes
934      const observer = new MutationObserver(function () {
935        syncBottomCartBadge();
936        syncBottomCompareBadge();
937      });
938
939      const cartBadge = document.getElementById('cartCount');
940      const compareBadge = document.getElementById('compareCount');
941
942      if (cartBadge) observer.observe(cartBadge, { childList: true, characterData: true, subtree: true });
943      if (compareBadge) observer.observe(compareBadge, { childList: true, characterData: true, subtree: true });
944
945      // Bottom Cart Button
946      const bottomCartBtn = document.getElementById('bottomCartBtn');
947      if (bottomCartBtn) {
948        bottomCartBtn.addEventListener('click', function (e) {
949          e.preventDefault();
950
951          const checkLogin = () => {
952            return window.isUserLoggedIn ? window.isUserLoggedIn() : false;
953          };
954
955          if (checkLogin()) {
956            window.location.href = '/keranjang';
957          } else {
958            showCartLoginModal();
959          }
960        });
961      }
962
963      // Bottom Compare Button
964      const bottomCompareBtn = document.getElementById('bottomCompareBtn');
965      if (bottomCompareBtn) {
966        bottomCompareBtn.addEventListener('click', function (e) {
967          e.preventDefault();
968
969          // Close chat widget if open
970          if (window.plazaChat && window.plazaChat.isWidgetOpen) {
971            window.plazaChat.closeWidget();
972          }
973
974          const mainCompareBtn = document.getElementById('compareBtn');
975          if (mainCompareBtn) {
976            mainCompareBtn.click();
977          }
978        });
979      }
980
981      // Bottom Category Button - triggers mega menu
982      const bottomCategoryBtn = document.getElementById('bottomCategoryBtn');
983      if (bottomCategoryBtn) {
984        bottomCategoryBtn.addEventListener('click', function (e) {
985          e.preventDefault();
986          // Trigger desktop mega menu
987          const desktopTrigger = document.querySelector('.mm2-trigger:not(#bottomCategoryBtn)');
988          if (desktopTrigger) {
989            desktopTrigger.click();
990          }
991        });
992      }
993
994      // Bottom Login Button
995      const bottomLoginBtn = document.getElementById('bottomLoginBtn');
996      if (bottomLoginBtn) {
997        bottomLoginBtn.addEventListener('click', function (e) {
998          e.preventDefault();
999          window.location.href = '/login';
1000        });
1001      }
1002
1003      // Bottom Chat Button
1004      const bottomChatBtn = document.getElementById('bottomChatBtn');
1005      if (bottomChatBtn) {
1006        bottomChatBtn.addEventListener('click', function (e) {
1007          e.preventDefault();
1008
1009          // Trigger chat widget (try multiple times if needed)
1010          const triggerChat = () => {
1011            const chatToggle = document.getElementById('chat-toggle-btn');
1012            if (chatToggle) {
1013              chatToggle.click();
1014              return true;
1015            }
1016            return false;
1017          };
1018
1019          // Immediate attempt
1020          if (!triggerChat()) {
1021            // Retry after 100ms if not found
1022            setTimeout(() => {
1023              if (!triggerChat()) {
1024                // Last resort: manually show popup
1025                const popup = document.getElementById('chat-popup');
1026                if (popup) {
1027                  popup.style.display = 'block';
1028                }
1029              }
1030            }, 100);
1031          }
1032        });
1033      }
1034
1035      // Sync chat unread badge
1036      function syncBottomChatBadge() {
1037        const chatBadge = document.getElementById('chat-unread-badge');
1038        const bottomChatBadge = document.getElementById('bottomChatCount');
1039        if (chatBadge && bottomChatBadge) {
1040          const count = chatBadge.textContent;
1041          bottomChatBadge.textContent = count;
1042          bottomChatBadge.style.display = chatBadge.style.display;
1043        }
1044      }
1045
1046      // Observe chat badge changes
1047      const chatBadge = document.getElementById('chat-unread-badge');
1048      if (chatBadge) {
1049        observer.observe(chatBadge, { attributes: true, childList: true, characterData: true, subtree: true });
1050        syncBottomChatBadge();
1051      }
1052
1053      // Active state management based on current page
1054      function updateActiveState() {
1055        const currentPath = window.location.pathname;
1056        const bottomNavItems = document.querySelectorAll('.bottom-nav-item');
1057
1058        bottomNavItems.forEach(item => {
1059          item.classList.remove('active');
1060
1061          const itemId = item.id;
1062          const page = item.getAttribute('data-page');
1063          const href = item.getAttribute('href');
1064
1065          // Check by ID for specific pages
1066          if (itemId === 'bottomHomeBtn' && currentPath === '/') {
1067            item.classList.add('active');
1068          } else if (itemId === 'bottomCartBtn' && (currentPath === '/keranjang' || currentPath === '/cart')) {
1069            item.classList.add('active');
1070          } else if (itemId === 'bottomProfileBtn' && currentPath.startsWith('/profile')) {
1071            item.classList.add('active');
1072          } else if (itemId === 'bottomCategoryBtn' && currentPath.startsWith('/kategori')) {
1073            item.classList.add('active');
1074          } else if (itemId === 'bottomCompareBtn' && currentPath === '/compare') {
1075            item.classList.add('active');
1076          } else if (itemId === 'bottomChatBtn' && currentPath === '/chat') {
1077            item.classList.add('active');
1078          }
1079          // Fallback: check by data-page attribute
1080          else if (page === 'home' && currentPath === '/') {
1081            item.classList.add('active');
1082          } else if (page === 'profile' && currentPath.startsWith('/profile')) {
1083            item.classList.add('active');
1084          }
1085          // Fallback: check by href
1086          else if (href && currentPath === href) {
1087            item.classList.add('active');
1088          }
1089        });
1090      }
1091
1092      // Update active state on load
1093      updateActiveState();
1094
1095      // Bottom nav always visible - auto-hide disabled for better UX
1096      // const bottomNav = document.querySelector('.bottom-nav');
1097      // if (bottomNav && window.innerWidth <= 640) {
1098      //   // Auto-hide feature disabled
1099      // }
1100    })();
1101    // Cart Login Modal Handler (Global scope)
1102    function showCartLoginModal() {
1103      const modal = document.getElementById('cartLoginModal');
1104      if (!modal) return;
1105
1106      modal.classList.add('show');
1107
1108      const confirmBtn = document.getElementById('cartLoginConfirm');
1109      const registerBtn = document.getElementById('cartRegisterBtn');
1110      const cancelBtn = document.getElementById('cartLoginCancel');
1111
1112      const handleLogin = () => {
1113        window.location.href = '/login?return=' + encodeURIComponent('/keranjang');
1114      };
1115
1116      const handleRegister = () => {
1117        window.location.href = '/register?return=' + encodeURIComponent('/keranjang');
1118      };
1119
1120      const handleCancel = () => {
1121        modal.classList.remove('show');
1122        confirmBtn.removeEventListener('click', handleLogin);
1123        registerBtn.removeEventListener('click', handleRegister);
1124        cancelBtn.removeEventListener('click', handleCancel);
1125      };
1126
1127      confirmBtn.removeEventListener('click', handleLogin);
1128      registerBtn.removeEventListener('click', handleRegister);
1129      cancelBtn.removeEventListener('click', handleCancel);
1130
1131      confirmBtn.addEventListener('click', handleLogin);
1132      registerBtn.addEventListener('click', handleRegister);
1133      cancelBtn.addEventListener('click', handleCancel);
1134
1135      modal.addEventListener('click', (e) => {
1136        if (e.target === modal) {
1137          handleCancel();
1138        }
1139      });
1140    }
1141  </script>
1141
1142
1143  <!-- Product Compare Sidebar -->
1144  <div class="compare-sidebar" id="compareSidebar">
1145    <div class="compare-header">
1146      <h4 class="compare-title">
1147        <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
1148          <path
1149            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" />
1150        </svg>
1151        Bandingkan Produk
1152        <span class="compare-count" id="compareCountSidebar">(0)</span>
1153      </h4>
1154      <button class="compare-close" id="compareClose" aria-label="Tutup">
1155        <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor">
1156          <path
1157            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" />
1158        </svg>
1159      </button>
1160    </div>
1161
1162    <div class="compare-content">
1163      <div class="compare-empty" id="compareEmpty">
1164        <div class="empty-icon">
1165          <svg width="48" height="48" viewBox="0 0 24 24" fill="currentColor" opacity="0.3">
1166            <path
1167              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" />
1168          </svg>
1169        </div>
1170        <h5>Belum ada produk dipilih</h5>
1171        <p>Pilih produk yang ingin dibandingkan dengan klik tombol "Bandingkan Produk" di halaman produk.</p>
1172      </div>
1173
1174      <div class="compare-list" id="compareList">
1175        <!-- Products will be populated here -->
1176      </div>
1177    </div>
1178
1179    <div class="compare-actions" id="compareActions">
1180      <button class="btn btn-outline-danger btn-sm" id="compareClearAll">
1181        <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
1182          <path
1183            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" />
1184        </svg>
1185        Hapus Semua
1186      </button>
1187      <button class="btn btn-primary btn-sm" id="compareAnalyze" disabled>
1188        <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
1189          <path
1190            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" />
1191        </svg>
1192        Analisis AI
1193      </button>
1194    </div>
1195
1196    <!-- AI Disclaimer in Sidebar -->
1197    <div class="compare-disclaimer">
1198      <div class="ai-disclaimer">
1199        <div class="disclaimer-text">
1200          <strong>💡 Catatan:</strong> Dengan berbagai pilihan yang tersedia, pengguna memiliki kebebasan untuk
1201          menentukan jenis permainan yang paling sesuai dengan preferensi masing-masing.
1202        </div>
1203      </div>
1204    </div>
1205  </div>
1206  <link rel="stylesheet" href="https://plazaitdotid.pages.dev/assets/css/pd-lightbox.css">
1207  <style>
1208    .paylater-promo {
1209      display: inline-flex;
1210      align-items: center;
1211      gap: 8px;
1212      background: linear-gradient(135deg, #ffffff 0, #ffffff 100%);
1213      border: 1px solid #000000;
1214      border-radius: 8px;
1215      padding: 8px 12px;
1216      font-size: 13px;
1217      line-height: 1.4;
1218      margin: 8px 0
1219    }
1220
1221    .paylater-promo-sm {
1222      padding: 6px 10px;
1223      font-size: 11px;
1224      gap: 6px
1225    }
1226
1227    .paylater-promo-md {
1228      padding: 8px 12px;
1229      font-size: 13px;
1230      gap: 8px
1231    }
1232
1233    .paylater-promo-lg {
1234      padding: 10px 16px;
1235      font-size: 14px;
1236      gap: 10px
1237    }
1238
1239    .paylater-icon {
1240      font-size: 1.2em;
1241      flex-shrink: 0
1242    }
1243
1244    .paylater-text {
1245      display: flex;
1246      flex-direction: column;
1247      gap: 2px
1248    }
1249
1250    .paylater-text strong {
1251      color: #000000;
1252      font-weight: 600
1253    }
1254
1255    .paylater-text small {
1256      color: #000000;
1257      font-size: .85em;
1258      opacity: .9
1259    }
1260
1261    .paylater-desktop-only {
1262      display: none
1263    }
1264
1265    .paylater-mobile-only {
1266      display: flex
1267    }
1268
1269    @media (min-width:641px) {
1270      .paylater-desktop-only {
1271        display: flex
1272      }
1273
1274      .paylater-mobile-only {
1275        display: none
1276      }
1277    }
1278
1279    @media (max-width:640px) {
1280      .paylater-promo {
1281        font-size: 12px;
1282        padding: 7px 10px
1283      }
1284
1285      .paylater-promo-lg {
1286        font-size: 13px;
1287        padding: 8px 12px
1288      }
1289    }
1290
1291    @media print {
1292      .paylater-promo {
1293        display: none !important
1294      }
1295    }
1296
1297    .paylater-compact {
1298      display: inline-block;
1299      font-size: 11px;
1300      font-weight: 600;
1301      color: #ffd700;
1302      background: #d1fae5;
1303      padding: 3px 8px;
1304      border-radius: 4px;
1305      margin: 6px 0 4px;
1306      line-height: 1.3
1307    }
1308
1309    @media (max-width:640px) {
1310      .paylater-compact {
1311        font-size: 10px;
1312        padding: 2px 6px;
1313        margin: 5px 0 3px
1314      }
1315    }
1316
1317    @media print {
1318      .paylater-compact {
1319        display: none !important
1320      }
1321    }
1322  </style>
1323  <style nonce="se3iyzEHMc9FQEB4wSyd0w==">
1324    .pd-voucher-minimal {
1325      margin: 10px 0;
1326      display: flex;
1327      flex-direction: column;
1328      gap: 6px
1329    }
1330
1331    .pdv-min-item {
1332      display: flex;
1333      align-items: center;
1334      gap: 8px;
1335      padding: 0;
1336      height: 32px;
1337      transition: all .2s ease
1338    }
1339
1340    .pdv-min-hidden {
1341      display: none
1342    }
1343
1344    .pdv-min-disabled {
1345      opacity: .5
1346    }
1347
1348    .pdv-badge-btn {
1349      display: inline-flex;
1350      align-items: center;
1351      gap: 8px;
1352      background: linear-gradient(135deg, #fdf900 0, #fdf900 100%);
1353      border: none;
1354      border-radius: 8px;
1355      padding: 3px;
1356      cursor: pointer;
1357      transition: all .2s ease;
1358      width: auto
1359    }
1360
1361    .pdv-badge-btn:hover:not(:disabled) {
1362      transform: translateY(-1px);
1363      box-shadow: 0 4px 12px rgba(102, 126, 234, .3)
1364    }
1365
1366    .pdv-badge-btn:disabled {
1367      opacity: .6;
1368      cursor: not-allowed
1369    }
1370
1371    .pdv-badge-icon {
1372      color: #fff;
1373      flex-shrink: 0
1374    }
1375
1376    .pdv-badge-text {
1377      font-size: 14px;
1378      font-weight: 700;
1379      color: #fff;
1380      white-space: nowrap
1381    }
1382
1383    .pdv-badge-code {
1384      font-family: 'Courier New', monospace;
1385      font-size: 13px;
1386      font-weight: 700;
1387      color: #fff;
1388      background: rgba(255, 255, 255, .2);
1389      padding: 4px 8px;
1390      border-radius: 4px;
1391      border: none;
1392      white-space: nowrap
1393    }
1394
1395    .pdv-min-copy,
1396    .pdv-min-more {
1397      padding: 4px 12px;
1398      font-size: 12px;
1399      font-weight: 600;
1400      border-radius: 5px;
1401      border: 1px solid #e2e8f0;
1402      background: #fff;
1403      color: #fdf900;
1404      cursor: pointer;
1405      transition: all .2s ease;
1406      white-space: nowrap
1407    }
1408
1409    .pdv-min-copy:hover:not(:disabled),
1410    .pdv-min-more:hover {
1411      background: #fdf900;
1412      color: #fff;
1413      border-color: #fdf900
1414    }
1415
1416    .pdv-min-copy:disabled {
1417      opacity: .4;
1418      cursor: not-allowed
1419    }
1420
1421    .pdv-min-copy.copied {
1422      background: #c52222;
1423      color: #fff;
1424      border-color: #c52222
1425    }
1426
1427    .pdv-min-more {
1428      margin-left: auto
1429    }
1430
1431    .modal-close {
1432      position: absolute;
1433      top: 20px;
1434      right: 20px;
1435      background: none;
1436      border: none;
1437      cursor: pointer;
1438      color: #64748b;
1439      padding: 4px;
1440      transition: color .2s ease
1441    }
1442
1443    .modal-close:hover {
1444      color: #1e293b
1445    }
1446
1447    .modal-body {
1448      margin-bottom: 8px
1449    }
1450
1451    .voucher-modal-content {
1452      text-align: center
1453    }
1454
1455    .voucher-modal-badge {
1456      display: inline-flex;
1457      flex-direction: row;
1458      align-items: center;
1459      gap: 6px;
1460      background: linear-gradient(135deg, #fdf900 0, #fdf900 100%);
1461      border-radius: 10px;
1462      padding: 8px 16px;
1463      margin-bottom: 12px
1464    }
1465
1466    .vmb-value {
1467      font-size: 18px;
1468      font-weight: 700;
1469      color: #fff;
1470      line-height: 1
1471    }
1472
1473    .vmb-label {
1474      font-size: 18px;
1475      font-weight: 700;
1476      color: #fff;
1477      text-transform: uppercase;
1478      letter-spacing: .5px
1479    }
1480
1481    .voucher-modal-code {
1482      font-family: 'Courier New', monospace;
1483      font-size: 14px;
1484      font-weight: 700;
1485      color: #fdf900;
1486      background: rgba(102, 126, 234, .1);
1487      padding: 6px 12px;
1488      border-radius: 6px;
1489      border: 2px dashed rgba(102, 126, 234, .3);
1490      display: inline-block;
1491      margin-bottom: 10px
1492    }
1493
1494    .voucher-modal-name {
1495      font-size: 14px;
1496      font-weight: 600;
1497      color: #1e293b;
1498      margin-bottom: 16px
1499    }
1500
1501    .voucher-modal-details {
1502      text-align: left;
1503      background: #f8fafc;
1504      border-radius: 8px;
1505      padding: 12px;
1506      margin-bottom: 16px
1507    }
1508
1509    .vmd-item {
1510      display: flex;
1511      align-items: flex-start;
1512      gap: 8px;
1513      padding: 6px 0;
1514      font-size: 13px;
1515      color: #64748b;
1516      border-bottom: 1px solid #e2e8f0
1517    }
1518
1519    .vmd-item:last-child {
1520      border-bottom: none
1521    }
1522
1523    .vmd-item svg {
1524      color: #fdf900;
1525      flex-shrink: 0;
1526      margin-top: 2px
1527    }
1528
1529    .vmd-item strong {
1530      color: #1e293b
1531    }
1532
1533    .modal-actions {
1534      padding: 20px
1535    }
1536
1537    .modal-btn-primary {
1538      background: linear-gradient(135deg, #fdf900 0, #fdf900 100%);
1539      color: #fff
1540    }
1541
1542    .modal-btn-primary:hover {
1543      opacity: .9;
1544      transform: translateY(-1px)
1545    }
1546
1547    @media (max-width:640px) {
1548      .pdv-min-item {
1549        gap: 6px
1550      }
1551
1552      .pdv-badge-btn {
1553        padding: 3px;
1554        gap: 6px
1555      }
1556
1557      .pdv-badge-text {
1558        font-size: 13px
1559      }
1560
1561      .pdv-badge-code {
1562        font-size: 12px;
1563        padding: 3px 6px
1564      }
1565
1566      .pdv-min-copy,
1567      .pdv-min-more {
1568        padding: 3px 10px;
1569        font-size: 11px
1570      }
1571
1572      .modal-dialog {
1573        max-width: 95%;
1574        margin: 20px
1575      }
1576
1577      .vmb-value {
1578        font-size: 16px
1579      }
1580
1581      .vmb-label {
1582        font-size: 16px
1583      }
1584
1585      .voucher-modal-code {
1586        font-size: 13px;
1587        padding: 5px 10px
1588      }
1589    }
1590  </style>
1591  <style nonce="se3iyzEHMc9FQEB4wSyd0w==">
1592    .promo-endyear-mini-banner {
1593      display: flex;
1594      align-items: center;
1595      gap: 12px;
1596      padding: 12px 16px;
1597      background: rgba(255, 255, 255, .8);
1598      backdrop-filter: blur(10px);
1599      -webkit-backdrop-filter: blur(10px);
1600      border: 2px solid rgba(242, 140, 26, .2);
1601      border-radius: 12px;
1602      margin: 16px 0;
1603      box-shadow: 0 4px 16px rgba(0, 0, 0, .08);
1604      transition: all .3s ease
1605    }
1606
1607    .promo-endyear-mini-banner:hover {
1608      transform: translateY(-2px);
1609      box-shadow: 0 6px 20px rgba(0, 0, 0, .12);
1610      border-color: rgba(242, 140, 26, .4)
1611    }
1612
1613    .pey-icon {
1614      font-size: 32px;
1615      line-height: 1;
1616      flex-shrink: 0
1617    }
1618
1619    .pey-content {
1620      flex: 1;
1621      min-width: 0
1622    }
1623
1624    .pey-content strong {
1625      display: block;
1626      font-size: 14px;
1627      font-weight: 700;
1628      color: #F28C1A;
1629      margin-bottom: 2px
1630    }
1631
1632    .pey-content span {
1633      display: block;
1634      font-size: 13px;
1635      color: #64748b;
1636      line-height: 1.4
1637    }
1638
1639    .pey-link {
1640      flex-shrink: 0;
1641      padding: 8px 16px;
1642      background: linear-gradient(135deg, #F28C1A, #FFB84D);
1643      color: #fff;
1644      text-decoration: none;
1645      font-size: 13px;
1646      font-weight: 700;
1647      border-radius: 8px;
1648      white-space: nowrap;
1649      transition: all .2s ease;
1650      box-shadow: 0 2px 8px rgba(242, 140, 26, .25)
1651    }
1652
1653    .pey-link:hover {
1654      transform: translateX(2px);
1655      box-shadow: 0 4px 12px rgba(242, 140, 26, .35)
1656    }
1657
1658    @media(max-width:640px) {
1659      .promo-endyear-mini-banner {
1660        flex-wrap: wrap;
1661        gap: 8px;
1662        padding: 10px 12px
1663      }
1664
1665      .pey-icon {
1666        font-size: 28px;
1667        align-self: flex-start
1668      }
1669
1670      .pey-content {
1671        flex: 1;
1672        min-width: 0
1673      }
1674
1675      .pey-content strong {
1676        font-size: 12px
1677      }
1678
1679      .pey-content span {
1680        font-size: 11px;
1681        line-height: 1.3
1682      }
1683
1684      .pey-link {
1685        width: 100%;
1686        flex-basis: 100%;
1687        font-size: 11px;
1688        padding: 6px 12px;
1689        text-align: center
1690      }
1691    }
1692
1693    @media print {
1694      .promo-endyear-mini-banner {
1695        display: none !important
1696      }
1697    }
1698  </style>
1699  <style nonce="se3iyzEHMc9FQEB4wSyd0w==">
1700    .pd-title-row {
1701      position: relative;
1702      margin-bottom: 12px;
1703      padding-right: 52px
1704    }
1705
1706    .pd-title {
1707      margin: 0 !important
1708    }
1709
1710    .pd-share-btn {
1711      position: absolute;
1712      top: 0;
1713      right: 0;
1714      width: 40px;
1715      height: 40px;
1716      display: inline-flex;
1717      align-items: center;
1718      justify-content: center;
1719      border-radius: 10px;
1720      border: 1px solid #e2e8f0;
1721      background: #fff;
1722      color: #64748b;
1723      cursor: pointer;
1724      transition: all .2s ease;
1725      -webkit-tap-highlight-color: transparent
1726    }
1727
1728    .pd-share-btn:hover {
1729      background: #f8fafc;
1730      border-color: #cbd5e1;
1731      color: #0f172a;
1732      transform: translateY(-1px)
1733    }
1734
1735    .pd-share-btn:active {
1736      transform: translateY(0)
1737    }
1738
1739    .pd-share-btn svg {
1740      display: block
1741    }
1742
1743    .pd-share-modal-overlay {
1744      position: fixed;
1745      inset: 0;
1746      background: rgba(15, 23, 42, .75);
1747      backdrop-filter: blur(4px);
1748      z-index: 99999;
1749      display: none;
1750      align-items: center;
1751      justify-content: center;
1752      padding: 0;
1753      animation: fadeIn .2s ease
1754    }
1755
1756    .pd-share-modal-overlay.show {
1757      display: flex
1758    }
1759
1760    .pd-share-modal {
1761      background: #fff;
1762      border-radius: 20px;
1763      box-shadow: 0 25px 50px -12px rgba(0, 0, 0, .25);
1764      max-width: 480px;
1765      width: 100%;
1766      max-height: 90vh;
1767      overflow: hidden;
1768      display: flex;
1769      flex-direction: column;
1770      animation: slideUp .3s cubic-bezier(.16, 1, .3, 1)
1771    }
1772
1773    @keyframes fadeIn {
1774      from {
1775        opacity: 0
1776      }
1777
1778      to {
1779        opacity: 1
1780      }
1781    }
1782
1783    @keyframes slideUp {
1784      from {
1785        opacity: 0;
1786        transform: translateY(20px) scale(.95)
1787      }
1788
1789      to {
1790        opacity: 1;
1791        transform: translateY(0) scale(1)
1792      }
1793    }
1794
1795    .pd-share-header {
1796      display: flex;
1797      align-items: center;
1798      justify-content: space-between;
1799      padding: 20px 24px;
1800      border-bottom: 1px solid #f1f5f9
1801    }
1802
1803    .pd-share-title {
1804      font-size: 18px;
1805      font-weight: 700;
1806      color: #0f172a;
1807      margin: 0
1808    }
1809
1810    .pd-share-close {
1811      width: 32px;
1812      height: 32px;
1813      border-radius: 8px;
1814      border: 0;
1815      background: transparent;
1816      color: #64748b;
1817      display: inline-flex;
1818      align-items: center;
1819      justify-content: center;
1820      cursor: pointer;
1821      transition: all .15s ease
1822    }
1823
1824    .pd-share-close:hover {
1825      background: #f1f5f9;
1826      color: #0f172a
1827    }
1828
1829    .pd-share-body {
1830      padding: 24px;
1831      overflow-y: auto
1832    }
1833
1834    .pd-share-preview {
1835      display: flex;
1836      gap: 12px;
1837      padding: 16px;
1838      background: #f8fafc;
1839      border-radius: 12px;
1840      margin-bottom: 24px
1841    }
1842
1843    .pd-share-preview-img {
1844      width: 64px;
1845      height: 64px;
1846      border-radius: 8px;
1847      object-fit: cover;
1848      flex-shrink: 0;
1849      border: 1px solid #e2e8f0
1850    }
1851
1852    .pd-share-preview-info {
1853      flex: 1;
1854      min-width: 0
1855    }
1856
1857    .pd-share-preview-name {
1858      font-size: 14px;
1859      font-weight: 600;
1860      color: #0f172a;
1861      margin: 0 0 4px 0;
1862      display: -webkit-box;
1863      -webkit-line-clamp: 2;
1864      -webkit-box-orient: vertical;
1865      overflow: hidden
1866    }
1867
1868    .pd-share-preview-price {
1869      font-size: 16px;
1870      font-weight: 700;
1871      color: #ffd700;
1872      margin: 0
1873    }
1874
1875    .pd-share-label {
1876      font-size: 13px;
1877      font-weight: 600;
1878      color: #475569;
1879      margin: 0 0 12px 0;
1880      text-transform: uppercase;
1881      letter-spacing: .5px
1882    }
1883
1884    .pd-share-grid {
1885      display: grid;
1886      grid-template-columns: repeat(4, 1fr);
1887      gap: 12px;
1888      margin-bottom: 24px
1889    }
1890
1891    .pd-share-option {
1892      display: flex;
1893      flex-direction: column;
1894      align-items: center;
1895      gap: 8px;
1896      padding: 16px 8px;
1897      border: 1.5px solid #e2e8f0;
1898      border-radius: 12px;
1899      background: #fff;
1900      cursor: pointer;
1901      transition: all .2s ease;
1902      text-decoration: none;
1903      color: inherit
1904    }
1905
1906    .pd-share-option:hover {
1907      border-color: #94a3b8;
1908      background: #f8fafc;
1909      transform: translateY(-2px)
1910    }
1911
1912    .pd-share-option:active {
1913      transform: translateY(0)
1914    }
1915
1916    .pd-share-icon {
1917      width: 40px;
1918      height: 40px;
1919      border-radius: 10px;
1920      display: inline-flex;
1921      align-items: center;
1922      justify-content: center;
1923      position: relative
1924    }
1925
1926    .pd-share-icon svg {
1927      width: 24px;
1928      height: 24px;
1929      display: block
1930    }
1931
1932    .pd-share-icon-whatsapp {
1933      background: linear-gradient(135deg, #ffd700 0%, #3c3300 100%);
1934      color: #fff
1935    }
1936
1937    .pd-share-icon-facebook {
1938      background: linear-gradient(135deg, #fdf900 0%, #fdf900 100%);
1939      color: #fff
1940    }
1941
1942    .pd-share-icon-twitter {
1943      background: linear-gradient(135deg, #fdf900 0%, #0d8bd9 100%);
1944      color: #fff
1945    }
1946
1947    .pd-share-icon-telegram {
1948      background: linear-gradient(135deg, #0088cc 0%, #0077b3 100%);
1949      color: #fff
1950    }
1951
1952    .pd-share-icon-email {
1953      background: linear-gradient(135deg, #EA4335 0%, #c5331f 100%);
1954      color: #fff
1955
1956    }
1957
1958    .pd-share-icon-copy {
1959      background: linear-gradient(135deg, #f1db63 0%, #e5d146 100%);
1960      color: #fff
1961    }
1962
1963    .pd-share-icon-pdf {
1964      background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
1965      color: #fff
1966    }
1967
1968    .pd-share-name {
1969      font-size: 12px;
1970      font-weight: 600;
1971      color: #475569;
1972      text-align: center
1973    }
1974
1975    .pd-share-copy-section {
1976      background: #f8fafc;
1977      padding: 16px;
1978      border-radius: 12px
1979    }
1980
1981    .pd-share-copy-input-wrap {
1982      display: flex;
1983      gap: 8px
1984    }
1985
1986    .pd-share-copy-input {
1987      flex: 1;
1988      padding: 12px 14px;
1989      border: 1px solid #e2e8f0;
1990      border-radius: 10px;
1991      font-size: 14px;
1992      color: #0f172a;
1993      background: #fff;
1994      font-family: 'Segoe UI', system-ui, sans-serif
1995    }
1996
1997    .pd-share-copy-input:focus {
1998      outline: 0;
1999      border-color: #ffd700;
2000      box-shadow: 0 0 0 3px rgba(14, 165, 233, .1)
2001    }
2002
2003    .pd-share-copy-btn {
2004      padding: 12px 20px;
2005      border: 0;
2006      border-radius: 10px;
2007      background: linear-gradient(135deg, #e90e0e 0%, #fdf900 100%);
2008      color: #fff;
2009      font-size: 14px;
2010      font-weight: 600;
2011      cursor: pointer;
2012      transition: all .2s ease;
2013      white-space: nowrap;
2014      display: inline-flex;
2015      align-items: center;
2016      gap: 6px
2017    }
2018
2019    .pd-share-copy-btn:hover {
2020      background: linear-gradient(135deg, #fdf900 0%, #fdf900 100%);
2021      transform: translateY(-1px);
2022      box-shadow: 0 4px 12px rgba(14, 165, 233, .3)
2023    }
2024
2025    .pd-share-copy-btn:active {
2026      transform: translateY(0)
2027    }
2028
2029    .pd-share-copy-btn svg {
2030      width: 16px;
2031      height: 16px
2032    }
2033
2034    .pd-share-copy-btn.copied {
2035      background: linear-gradient(135deg, #c52222 0%, #a31616 100%);
2036      pointer-events: none
2037    }
2038
2039    @media(max-width:640px) {
2040      .pd-share-modal {
2041        border-radius: 20px 20px 0 0;
2042        margin-top: auto;
2043        max-height: 85vh
2044      }
2045
2046      .pd-share-grid {
2047        grid-template-columns: repeat(3, 1fr)
2048      }
2049
2050      .pd-share-header {
2051        padding: 16px 20px
2052      }
2053
2054      .pd-share-body {
2055        padding: 20px
2056      }
2057
2058      .pd-share-btn {
2059        width: 36px;
2060        height: 36px
2061      }
2062
2063      .pd-share-btn svg {
2064        width: 18px;
2065        height: 18px
2066      }
2067    }
2068
2069    @media(max-width:480px) {
2070      .pd-share-grid {
2071        grid-template-columns: repeat(3, 1fr);
2072        gap: 10px
2073      }
2074
2075      .pd-share-option {
2076        padding: 12px 6px
2077      }
2078
2079      .pd-share-icon {
2080        width: 36px;
2081        height: 36px
2082      }
2083
2084      .pd-share-icon svg {
2085        width: 20px;
2086        height: 20px
2087      }
2088
2089      .pd-share-name {
2090        font-size: 11px
2091      }
2092    }
2093
2094    .mf-share {
2095      background: #fff;
2096      color: #fb923c;
2097      border: 2px solid #fb923c;
2098      display: inline-flex;
2099      align-items: center;
2100      justify-content: center
2101    }
2102
2103    .mf-share:active {
2104      transform: scale(.95)
2105    }
2106
2107    .mf-share svg {
2108      display: block
2109    }
2110
2111    @media(max-width:640px) {
2112      .pd-share-btn {
2113        display: none !important
2114      }
2115    }
2116
2117    .stock-badge.in {
2118      background: #e6f9ec;
2119      color: #801515;
2120      border-radius: 999px;
2121      padding: 4px 10px;
2122      font-weight: 700
2123    }
2124
2125    .stock-badge.out {
2126      background: #fee2e2;
2127      color: #b91c1c;
2128      border-radius: 999px;
2129      padding: 4px 10px;
2130      font-weight: 700
2131    }
2132
2133    .stock-info-btn {
2134      --c: #e90e0e;
2135      --b: #bae6fd;
2136      --bg: #f0f9ff;
2137      --bg-h: #e0f2fe;
2138      --b-h: #e90e0e;
2139      margin-left: 0;
2140      display: inline-flex;
2141      align-items: center;
2142      justify-content: center;
2143      gap: 0.5rem;
2144      padding: 4px 10px;
2145      border-radius: 999px;
2146      border: 1.5px solid var(--b);
2147      background: var(--bg);
2148      color: var(--c);
2149      cursor: pointer;
2150      font-size: 12px;
2151      font-weight: 600;
2152      transition: all .2s ease;
2153      -webkit-tap-highlight-color: transparent
2154    }
2155
2156    .stock-info-btn:hover {
2157      background: var(--bg-h);
2158      border-color: var(--b-h);
2159      color: #fdf900;
2160      transform: translateY(-1px);
2161      box-shadow: 0 2px 8px rgba(14, 165, 233, .15)
2162    }
2163
2164    .stock-info-btn:active {
2165      transform: translateY(0)
2166    }
2167
2168    .stock-info-btn:focus-visible {
2169      outline: 0;
2170      box-shadow: 0 0 0 3px rgba(14, 165, 233, .2)
2171    }
2172
2173    .stock-info-btn svg {
2174      width: 14px;
2175      height: 14px;
2176      flex-shrink: 0
2177    }
2178
2179    .stock-info-btn .btn-text {
2180      white-space: nowrap
2181    }
2182
2183    .stock-popover {
2184      position: absolute;
2185      z-index: 9999;
2186      min-width: 280px;
2187      max-width: 92vw;
2188      background: #0b1220;
2189      color: #eef3ff;
2190      border: 1px solid rgba(255, 255, 255, .08);
2191      border-radius: 14px;
2192      box-shadow: 0 20px 40px rgba(12, 12, 20, .45);
2193      padding: 12px 12px 8px;
2194      display: none
2195    }
2196
2197    .stock-popover.show {
2198      display: block
2199    }
2200
2201    .stock-popover::before {
2202      content: "";
2203      position: absolute;
2204      top: -8px;
2205      left: 24px;
2206      width: 14px;
2207      height: 14px;
2208      background: #0b1220;
2209      border-left: 1px solid rgba(255, 255, 255, .08);
2210      border-top: 1px solid rgba(255, 255, 255, .08);
2211      transform: rotate(45deg)
2212    }
2213
2214    .sp-head {
2215      display: flex;
2216      align-items: center;
2217      justify-content: space-between;
2218      margin-bottom: 8px
2219    }
2220
2221    .sp-title {
2222      font-weight: 800;
2223      font-size: 14px
2224    }
2225
2226    .sp-close {
2227      background: transparent;
2228      border: 0;
2229      color: #98a2b3;
2230      cursor: pointer
2231    }
2232
2233    .sp-list {
2234      list-style: none;
2235      margin: 0;
2236      padding: 0;
2237      display: flex;
2238      flex-direction: column;
2239      gap: 8px
2240    }
2241
2242    .sp-item {
2243      display: grid;
2244      grid-template-columns: 1fr auto 32px;
2245      column-gap: 12px;
2246      align-items: center;
2247      padding: 10px 10px;
2248      min-height: 44px;
2249      border-radius: 10px;
2250      background: rgba(255, 255, 255, .03)
2251    }
2252
2253    .sp-left {
2254      display: flex;
2255      align-items: center;
2256      gap: 10px
2257    }
2258
2259    .sp-dot {
2260      width: 10px;
2261      height: 10px;
2262      border-radius: 999px;
2263      background: var(--dot, #60a5fa);
2264      display: inline-block
2265    }
2266
2267    .sp-label {
2268      font-weight: 600;
2269      font-size: 13px
2270    }
2271
2272
2273    .sp-qty {
2274      grid-column: 2;
2275      justify-self: end;
2276      min-width: 40px;
2277      text-align: right;
2278      font-weight: 800;
2279      font-size: 13px;
2280      color: #cfe4ff;
2281      font-variant-numeric: tabular-nums
2282    }
2283
2284    .sp-wa {
2285      grid-column: 3;
2286      justify-self: end;
2287      width: 32px;
2288      height: 32px;
2289      min-width: 32px;
2290      min-height: 32px;
2291      box-sizing: border-box;
2292      padding: 0;
2293      line-height: 0;
2294      text-decoration: none;
2295      outline: 0;
2296      display: inline-flex;
2297      align-items: center;
2298      justify-content: center;
2299      border-radius: 999px;
2300      border: 1px solid rgba(211, 37, 37, 0.6);
2301      /* 1px untuk hasil “crisp” */
2302      background: rgba(37, 211, 102, .08);
2303      color: #d32525;
2304      transition: background-color .15s ease, border-color .15s ease, transform .05s ease;
2305      -webkit-tap-highlight-color: transparent;
2306    }
2307
2308    .sp-wa:hover {
2309      background: rgba(37, 211, 102, .16);
2310      border-color: rgba(37, 211, 102, .75)
2311    }
2312
2313    .sp-wa:active {
2314      transform: translateY(.5px) scale(.98)
2315    }
2316
2317    .sp-wa svg {
2318      width: 18px;
2319      height: 18px;
2320      display: block;
2321      vertical-align: middle
2322    }
2323
2324    .stock-popover a {
2325      text-decoration: none
2326    }
2327
2328    #deskripsi img {
2329      max-width: 200px !important;
2330      height: unset !important
2331    }
2332
2333
2334    @media(max-width:640px) {
2335      .stock-popover {
2336        position: fixed;
2337        left: 0;
2338        right: 0;
2339        bottom: max(12px, env(safe-area-inset-bottom, 12px));
2340        margin: 0 10px;
2341        padding: 14px 12px 10px;
2342        border-radius: 16px
2343      }
2344
2345      .stock-popover::before {
2346        display: none
2347      }
2348
2349      .stock-info-btn {
2350        padding: 4px 8px;
2351        gap: 4px;
2352        border: 0;
2353        background: transparent
2354      }
2355
2356      .stock-info-btn:hover {
2357        background: transparent;
2358        box-shadow: none;
2359        transform: none
2360      }
2361
2362      .stock-info-btn .btn-text {
2363        display: none
2364      }
2365
2366      .stock-info-btn svg {
2367        width: 16px;
2368        height: 16px
2369      }
2370
2371      .sp-item {
2372        grid-template-columns: 1fr auto 36px
2373      }
2374
2375      .sp-wa {
2376        width: 36px;
2377        height: 36px;
2378        min-width: 36px;
2379        min-height: 36px
2380      }
2381
2382      .sp-wa svg {
2383        width: 19px;
2384        height: 19px
2385      }
2386    }
2387
2388    .stock-dot {
2389      position: absolute;
2390      bottom: 8px;
2391      right: 8px;
2392      width: 8px;
2393      height: 8px;
2394      border-radius: 50%;
2395      box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
2396      z-index: 2;
2397      cursor: help
2398    }
2399
2400    .stock-dot.ready {
2401      background: #10b981
2402    }
2403
2404    .stock-dot.low {
2405      background: #f59e0b
2406    }
2407
2408    .stock-dot.out {
2409      background: #ef4444
2410    }
2411
2412    .stock-dot:hover {
2413      transform: scale(1.2);
2414      transition: transform 0.2s ease
2415    }
2416
2417    @media(max-width:640px) {
2418      .stock-dot {
2419        width: 7px;
2420        height: 7px;
2421        bottom: 6px;
2422        right: 6px
2423      }
2424    }
2425
2426    .pd-related-card .spec-chips {
2427      font-size: 11px;
2428      color: #64748b;
2429      margin: 4px 0 6px 0;
2430      line-height: 1.3;
2431      font-weight: 500
2432    }
2433
2434    .pd-related-card .spec-chips .spec-divider {
2435      margin: 0 4px;
2436      opacity: 0.6
2437    }
2438
2439    @media(max-width:640px) {
2440      .pd-related-card .spec-chips {
2441        font-size: 10px;
2442        margin: 3px 0 5px 0
2443      }
2444
2445      #deskripsi img {
2446        max-width: 300px !important;
2447        height: unset !important;
2448        justify-self: center !important
2449      }
2450    }
2451
2452    .pwp-trigger-badge {
2453      display: inline-flex;
2454      align-items: center;
2455      gap: 4px;
2456      padding: 3px 8px 4px;
2457      background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%);
2458      color: #78350f;
2459      border-radius: 6px;
2460      font-size: .65rem;
2461      font-weight: 600;
2462      border: 0
2463    }
2464
2465    .pwp-trigger-badge svg {
2466      flex-shrink: 0;
2467      width: 12px;
2468      height: 12px
2469    }
2470
2471    .pwp-deals-section {
2472      margin: 0;
2473      padding: 12px;
2474      background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);
2475      border-radius: 12px;
2476      border: 2px solid #fbbf24
2477    }
2478
2479    .pwp-deals-header {
2480      display: flex;
2481      gap: 10px;
2482      margin-bottom: 10px
2483    }
2484
2485    .pwp-icon {
2486      flex-shrink: 0;
2487      color: #f59e0b;
2488      width: 18px;
2489      height: 18px
2490    }
2491
2492    .pwp-text .pwp-title {
2493      margin: 0 0 2px 0;
2494      font-size: 14px;
2495      font-weight: 700;
2496      color: #78350f
2497    }
2498
2499    .pwp-text .pwp-subtitle {
2500      margin: 0;
2501      font-size: 11px;
2502      color: #92400e;
2503      opacity: 0.9
2504    }
2505
2506    .pwp-deals-loading {
2507      text-align: center;
2508      padding: 40px 0;
2509      color: #92400e
2510    }
2511
2512    .pwp-spinner {
2513      width: 40px;
2514      height: 40px;
2515      border: 3px solid #fbbf24;
2516      border-top-color: #f59e0b;
2517      border-radius: 50%;
2518      animation: spin 0.8s linear infinite;
2519      margin: 0 auto 12px
2520    }
2521
2522    @keyframes spin {
2523      to {
2524        transform: rotate(360deg)
2525      }
2526    }
2527
2528    .pwp-deals-grid {
2529      display: flex;
2530      flex-direction: column;
2531      gap: 6px
2532    }
2533
2534    .pwp-deal-card {
2535      background: #fff;
2536      border-radius: 6px;
2537      overflow: hidden;
2538      border: 1px solid #fbbf24;
2539      display: flex;
2540      align-items: center;
2541      padding: 8px;
2542      gap: 10px
2543    }
2544
2545    .pwp-deal-card:hover {
2546      background: #fef3c7
2547    }
2548
2549    .pwp-deal-thumb {
2550      flex-shrink: 0;
2551      width: 50px;
2552      height: 50px;
2553      background: #f8fafc;
2554      overflow: hidden;
2555      border-radius: 4px
2556    }
2557
2558    .pwp-deal-thumb img {
2559      width: 100%;
2560      height: 100%;
2561      object-fit: cover
2562    }
2563
2564    .pwp-deal-badge {
2565      background: #dc2626;
2566      color: #fff;
2567      padding: 2px 5px;
2568      border-radius: 3px;
2569      font-size: 9px;
2570      font-weight: 700;
2571      margin-left: auto
2572    }
2573
2574    .pwp-deal-info {
2575      flex: 1;
2576      display: flex;
2577      flex-direction: column;
2578      gap: 4px
2579    }
2580
2581    .pwp-deal-name {
2582      font-size: 12px;
2583      font-weight: 600;
2584      color: #0f172a;
2585      margin: 0;
2586      line-height: 1.2
2587    }
2588
2589    .pwp-deal-prices {
2590      display: flex;
2591      align-items: center;
2592      gap: 6px;
2593      flex-wrap: wrap
2594    }
2595
2596    .pwp-deal-price {
2597      font-size: 14px;
2598      font-weight: 800;
2599      color: #dc2626;
2600      white-space: nowrap
2601    }
2602
2603    .pwp-deal-original {
2604      font-size: 11px;
2605      color: #64748b;
2606      text-decoration: line-through;
2607      white-space: nowrap
2608    }
2609
2610    .pwp-cart-note {
2611      margin-top: 8px;
2612      padding: 6px 10px;
2613      background: #e0f2fe;
2614      border-left: 2px solid#e90e0e;
2615      font-size: 11px;
2616      color: #0c4a6e;
2617      border-radius: 4px
2618    }
2619
2620    @media(max-width:640px) {
2621      .pwp-deals-section {
2622        margin: 12px 0;
2623        padding: 10px;
2624        border-radius: 10px
2625      }
2626
2627      .pwp-deals-header {
2628        gap: 8px
2629      }
2630
2631      .pwp-text .pwp-title {
2632        font-size: 13px
2633      }
2634
2635      .pwp-text .pwp-subtitle {
2636        font-size: 10px
2637      }
2638
2639      .pwp-deal-card {
2640        padding: 6px;
2641        gap: 8px
2642      }
2643
2644      .pwp-deal-thumb {
2645        width: 45px;
2646        height: 45px
2647      }
2648
2649      .pwp-deal-name {
2650        font-size: 11px
2651      }
2652
2653      .pwp-deal-price {
2654        font-size: 13px
2655      }
2656
2657      .pwp-deal-original {
2658        font-size: 10px
2659      }
2660    }
2661
2662    .preorder-badge {
2663      display: inline-flex;
2664      align-items: center;
2665      gap: 5px;
2666      padding: 6px 12px;
2667      background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%);
2668      color: #fff;
2669      border-radius: 8px;
2670      font-size: 13px;
2671      font-weight: 700;
2672      border: 0;
2673      box-shadow: 0 2px 8px rgba(139, 92, 246, .25)
2674    }
2675
2676    .preorder-badge svg {
2677      width: 16px;
2678      height: 16px;
2679      flex-shrink: 0
2680    }
2681
2682    .preorder-info {
2683      margin: 12px 0;
2684      padding: 14px;
2685      background: linear-gradient(135deg, #f5f3ff 0%, #ede9fe 100%);
2686      border: 1.5px solid #c4b5fd;
2687      border-radius: 12px
2688    }
2689
2690    .preorder-info-header {
2691      display: flex;
2692      align-items: center;
2693      gap: 8px;
2694      margin-bottom: 10px
2695    }
2696
2697    .preorder-info-icon {
2698      width: 20px;
2699      height: 20px;
2700      color: #7c3aed;
2701      flex-shrink: 0
2702    }
2703
2704    .preorder-info-title {
2705      font-size: 14px;
2706      font-weight: 700;
2707      color: #5b21b6;
2708      margin: 0
2709    }
2710
2711    .preorder-info-items {
2712      display: flex;
2713      flex-direction: column;
2714      gap: 8px
2715    }
2716
2717    .preorder-info-row {
2718      display: flex;
2719      align-items: center;
2720      justify-content: space-between;
2721      font-size: 13px
2722    }
2723
2724    .preorder-info-label {
2725      color: #6b21a8;
2726      font-weight: 600
2727    }
2728
2729    .preorder-info-value {
2730      color: #5b21b6;
2731      font-weight: 700
2732    }
2733
2734    .preorder-info-value.highlight {
2735      color: #dc2626;
2736      font-size: 14px
2737    }
2738
2739    .preorder-info-note {
2740      margin-top: 10px;
2741      padding: 8px 10px;
2742      background: #fef3c7;
2743      border-left: 2px solid #f59e0b;
2744      font-size: 12px;
2745      color: #78350f;
2746      border-radius: 6px;
2747      line-height: 1.4
2748    }
2749
2750    @media(max-width:640px) {
2751      .preorder-badge {
2752        font-size: 12px;
2753        padding: 5px 10px
2754      }
2755
2756      .preorder-info {
2757        margin: 10px 0;
2758        padding: 12px
2759      }
2760
2761      .preorder-info-title {
2762        font-size: 13px
2763      }
2764
2765      .preorder-info-row {
2766        font-size: 12px
2767      }
2768
2769      .preorder-info-note {
2770        font-size: 11px;
2771        padding: 6px 8px
2772      }
2773    }
2774  </style>
2775
2776  <div class="pd-sticky-header" id="pd-sticky-header">
2777    <div class="pd-sticky-header-container">
2778      <div class="pd-sticky-thumb"><img src="asset/banner.jpg" alt="dewi11"
2779          id="pd-sticky-thumb-img"></div>
2780      <div class="pd-sticky-info">
2781        <h2 class="pd-sticky-title" id="pd-sticky-title">DEWI11 Game Online – Pilihan Lengkap untuk Pecinta Gaming</h2>
2782        <div class="pd-sticky-price-row"><span class="pd-sticky-price" id="pd-sticky-price">Rp 10.000,-</span><span
2783            class="pd-sticky-price-original" id="pd-sticky-price-original">Rp 1.000.000</span><span
2784            class="pd-sticky-discount" id="pd-sticky-discount">-99.5%</span></div>
2785      </div>
2786      <div class="pd-sticky-actions"><button type="button" class="pd-sticky-share-btn" id="pd-sticky-share-btn"
2787          aria-label="Bagikan produk" title="Bagikan"><svg viewBox="0 0 24 24" width="16" height="16"
2788            aria-hidden="true">
2789            <path fill="currentColor"
2790              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" />
2791          </svg></button><button type="button" class="pd-sticky-btn pd-sticky-btn-chat" id="pd-sticky-chat"><svg
2792            viewBox="0 0 640 640" fill="currentColor" aria-hidden="true">
2793            <path
2794              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" />
2795          </svg>Tanya</button><button type="button" class="pd-sticky-btn pd-sticky-btn-cart" id="pd-sticky-add-cart"
2796          disabled>+ Keranjang</button><button type="button" class="pd-sticky-btn pd-sticky-btn-buy" id="pd-sticky-buy"
2797          disabled>Beli Sekarang</button></div>
2798    </div>
2799  </div>
2800
2801  <main class="product-single product-single--v3">
2802    <nav class="pd-breadcrumb" aria-label="breadcrumb"><a
2803        href="https://karenswigs.com/">dewi11</a><span>/</span><a href="https://karenswigs.com/">dewi11
2804        ONLINE</a><span>/</span><a href="https://karenswigs.com/">dewi11 LOGIN</a><span>/</span><a
2805        href="https://karenswigs.com/">dewi11 SPORTSBOOK</a><span>/</span><a href="https://karenswigs.com/">APLIKASI
2806        ONLINE </a><span>/</span><span class="current">DEWI11 Game Online – Pilihan Lengkap untuk Pecinta Gaming
2807
2808      </span></nav>
2809
2810    <div class="pd-top-layout">
2811      <section class="pd-media-card">
2812        <figure class="pd-main-image" id="pd-main-figure"><img id="pd-main-img"
2813            src="asset/banner.jpg" alt="dewi11" data-slug="" loading="eager">
2814        </figure>
2815
2816        <div class="pd-mobile-slider-wrapper">
2817          <div class="pd-mobile-slider" id="pd-mobile-slider" aria-label="Galeri gambar (geser)">
2818            <div class="pd-mslide"><img src="asset/banner.jpg" alt="dewi11" loading="eager">
2819            </div>
2820            <div class="pd-mslide"><img src="asset/banner.jpg" alt="dewi11" loading="lazy">
2821            </div>
2822            <div class="pd-mslide"><img src="asset/banner.jpg" alt="dewi11" loading="lazy">
2823            </div>
2824            <div class="pd-mslide"><img src="asset/banner.jpg" alt="dewi11" loading="lazy">
2825            </div>
2826            <div class="pd-mslide"><img src="asset/banner.jpg" alt="dewi11" loading="lazy">
2827            </div>
2828            <div class="pd-mslide"><img src="asset/banner.jpg" alt="dewi11" loading="lazy">
2829            </div>
2830          </div>
2831          <div class="pd-gallery-counter" id="pd-gallery-counter">1/6</div>
2832        </div>
2833        <div class="pd-thumb-gallery" id="pd-thumb-gallery" aria-label="Galeri gambar produk"><button type="button"
2834            class="pd-thumb-btn active" data-full="asset/banner.jpg" data-alt="dewi11"
2835            data-slug="" aria-label="Gambar 1"><img src="asset/banner.jpg" alt="dewi11"
2836              loading="lazy"></button><button type="button" class="pd-thumb-btn "
2837            data-full="asset/banner.jpg" data-alt="dewi11"
2838            data-slug="asset/banner.jpg" aria-label="Gambar 2"><img
2839              src="asset/banner.jpg" alt="dewi11" loading="lazy"></button><button type="button"
2840            class="pd-thumb-btn " data-full="asset/banner.jpg" data-alt="dewi11"
2841            data-slug="lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-223.webp"
2842            aria-label="Gambar 3"><img src="asset/banner.jpg" alt="dewi11"
2843              loading="lazy"></button><button type="button" class="pd-thumb-btn "
2844            data-full="asset/banner.jpg" data-alt="dewi11"
2845            data-slug="lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-776.webp"
2846            aria-label="Gambar 4"><img src="asset/banner.jpg" alt="dewi11"
2847              loading="lazy"></button><button type="button" class="pd-thumb-btn "
2848            data-full="asset/banner.jpg" data-alt="dewi11"
2849            data-slug="lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-634.webp"
2850            aria-label="Gambar 5"><img src="asset/banner.jpg" alt="dewi11"
2851              loading="lazy"></button><button type="button" class="pd-thumb-btn "
2852            data-full="asset/banner.jpg" data-alt="dewi11"
2853            data-slug="lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-892.webp"
2854            aria-label="Gambar 6"><img src="asset/banner.jpg" alt="dewi11"
2855              loading="lazy"></button></div>
2856      </section>
2857      <section class="pd-info-card">
2858        <div id="pd-variant-combined" class="pd-variant-combined" hidden></div>
2859        <div class="pd-title-row">
2860          <h1 class="pd-title" id="pd-title">DEWI11 Game Online – Pilihan Lengkap untuk Pecinta Gaming</h1>
2861          <button type="button" class="pd-share-btn" id="pd-share-btn" aria-label="Bagikan produk" title="Bagikan"><svg
2862              viewBox="0 0 24 24" width="20" height="20" aria-hidden="true">
2863              <path fill="currentColor"
2864                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" />
2865            </svg></button>
2866        </div>
2867        <div id="pd-price-anchor">
2868        </div>
2869        <div class="pd-price-qr-container">
2870          <div class="pd-price-block" id="pd-price-block">
2871            <div class="pd-price-row">
2872              <span class="pd-price-current" id="pd-price-current">Rp 10.000</span>
2873              <span class="pd-price-original" id="pd-price-original">Rp 50.000</span>
2874              <span class="pd-discount-badge" id="pd-discount-badge">-90%</span>
2875            </div>
2876            <div class="pd-meta-row">
2877              <span class="sold-inline" id="pd-sold-inline" data-role="sold-chip">Terjual Terjual 2K</span>
2878              <span class="pwp-trigger-badge" id="pwp-trigger-badge" hidden>
2879                <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor">
2880                  <path
2881                    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" />
2882                </svg>Bisa PWP</span>
2883            </div>
2884            <div class="pd-meta-inline"><span class="stock-badge out" id="pd-stock-badge">dewi11</span>
2885              <span class="sku">SKU: <span id="pd-sku">1S83N0880RID</span></span>
2886            </div>
2887            <div class="paylater-promo paylater-promo-sm paylater-mobile-only">
2888              <span class="paylater-icon">💳</span>
2889              <span class="paylater-text">
2890                <strong>dewi11</strong>
2891                <small>dewi11 TOGEL</small>
2892              </span>
2893            </div>
2894
2895            <div class="stock-popover" id="pd-stock-popover" role="dialog" aria-hidden="true"
2896              aria-label="Informasi stok cabang">
2897              <div class="sp-head">
2898                <div class="sp-title">Stok Cabang</div><button type="button" class="sp-close"
2899                  id="pd-stock-popover-close" aria-label="Tutup"><svg width="18" height="18" viewBox="0 0 24 24">
2900                    <path fill="currentColor"
2901                      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" />
2902                  </svg></button>
2903              </div>
2904              <ul class="sp-list">
2905                <li class="sp-item">
2906                  <div class="sp-left"><span class="sp-dot" style="--dot:#60a5fa;"></span><span class="sp-label">Asia
2907                      Mega Mas</span></div><span class="sp-qty" id="sp-qty-meg">0</span><a class="sp-wa"
2908                    href="https://karenswigs.dewi11lm.com"
2909                    target="_blank" rel="noopener" aria-label="WhatsApp Asia Mega Mas"><svg class="ico-wa"
2910                      viewBox="0 0 24 24" aria-hidden="true" focusable="false">
2911                      <path fill="currentColor"
2912                        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" />
2913                    </svg></a>
2914                </li>
2915
2916                <li class="sp-item">
2917                  <div class="sp-left">
2918                    <span class="sp-dot" style="--dot:#d33434;"></span>
2919                    <span class="sp-label">Medan Fair</span>
2920                  </div>
2921                  <span class="sp-qty" id="sp-qty-mdf">0</span>
2922                  <a class="sp-wa"
2923                    href="https://karenswigs.dewi11lm.com"
2924                    target="_blank" rel="noopener" aria-label="WhatsApp Medan Fair">
2925                    <svg class="ico-wa" viewBox="0 0 24 24" aria-hidden="true" focusable="false">
2926                      <path fill="currentColor"
2927                        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" />
2928                    </svg>
2929                  </a>
2930                </li>
2931
2932                <li class="sp-item">
2933                  <div class="sp-left">
2934                    <span class="sp-dot" style="--dot:#f59e0b;"></span>
2935                    <span class="sp-label">Banda Aceh</span>
2936                  </div>
2937                  <span class="sp-qty" id="sp-qty-bda">0</span>
2938                  <a class="sp-wa"
2939                    href="https://wa.me/6281355775564?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"
2940                    target="_blank" rel="noopener" aria-label="WhatsApp Banda Aceh">
2941                    <svg class="ico-wa" viewBox="0 0 24 24" aria-hidden="true" focusable="false">
2942                      <path fill="currentColor"
2943                        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" />
2944                    </svg>
2945                  </a>
2946                </li>
2947              </ul>
2948            </div>
2949
2950          </div>
2951          <div class="pd-qr-print" style="display:none;">
2952            <div class="pd-qr-label">Scan untuk lihat produk:</div><img
2953              src="https://api.qrserver.com/v1/create-qr-code/?size=120x120&data=https%3A%2F%2Fplazait.co.id%2Fproduct%2Flenovo-legion-go-8as
2953p2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-black"
2954              alt="QR Code" class="pd-qr-image">
2955          </div>
2956        </div>
2957        <div id="pd-variants-anchor"></div>
2958
2959
2960
2961        <div class="pd-compare-section">
2962          <button type="button" class="pd-compare-btn" id="pd-compare-btn" data-product-id="325">
2963            <svg class="compare-icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor">
2964              <path d="M21,9L17,5V8H10V10H17V13M7,11L3,15L7,19V16H14V14H7V11Z" />
2965            </svg>
2966            <span class="compare-text">Bandingkan Produk</span>
2967            <span class="compare-remove" hidden>
2968              <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor">
2969                <path
2970                  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" />
2971              </svg>
2972              Hapus dari Perbandingan
2973            </span>
2974          </button>
2975          <div class="pd-compare-info">
2976            <small class="compare-note" id="compare-note">Bandingkan hingga 5 produk dengan bantuan AI</small>
2977          </div>
2978        </div>
2979
2980        <div class="pd-short-desc">
2981          <p><strong>Informasi dewi11 :</strong></p>
2982          <ul>
2983            <li>Pilihan produk yang lengkap.</li>
2984            <li>Mudah mencari kebutuhan berdasarkan kategori.</li>
2985            <li>Cocok untuk pencinta olahraga dan lainnya.</li>
2986            <li>
2986Proses belanja lebih praktis dari rumah.</li
2987            <li>Kunjungi Sekarang: <a href="https://karenswigs.com/">Klik Disini</a></li>
2988          </ul>
2989        </div>
2990        <div id="golden-slot-standalone-v3">
2991
2992          <div class="pwp-deals-section" id="pwp-deals-section" hidden data-product-id="325" data-variant-id="0"
2993            data-category-path="Komputer &amp; Laptop/Laptop/Gaming">
2994            <div class="pwp-deals-header"><svg class="pwp-icon" width="20" height="20" viewBox="0 0 24 24"
2995                fill="currentColor">
2996                <path
2997                  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" />
2998              </svg>
2999              <div class="pwp-text">
3000                <h3 class="pwp-title">Penawaran Spesial PWP (Purchase with Purchase)</h3>
3001                <p class="pwp-subtitle">Beli produk ini dan dapatkan produk pilihan dengan harga spesial</p>
3002              </div>
3003            </div>
3004            <div class="pwp-deals-loading">
3005              <div class="pwp-spinner"></div>
3006              <p>Memuat penawaran...</p>
3007            </div>
3008            <div class="pwp-deals-grid" id="pwp-deals-grid"></div>
3009            <p class="pwp-cart-note">💡 Produk PWP dapat ditambahkan di halaman keranjang setelah produk ini dimasukkan
3010            </p>
3011          </div>
3012      </section>
3013
3014      <aside class="pd-sidebar">
3015        <div class="pd-side-card pd-buy-card">
3016          <form class="pd-buy-form" id="pd-buy-form" data-pid="325">
3017            <input type="hidden" name="variant_id" id="pd-variant-id" value="0">
3018            <div>
3019              <label for="qty" class="qty-label">Qty</label>
3020              <input type="number" id="qty" name="qty" value="0" min="1" max="0" disabled>
3021            </div>
3022            <div class="pd-actions">
3023              <button type="submit" class="btn-add-cart" id="btn-add-cart" disabled>+ Keranjang</button>
3024              <button type="button" class="btn-buy" id="btn-buy" data-id="278426" disabled>Beli</button>
3025              <button type="button" class="btn-chat-icon" id="btn-chat-icon" aria-label="Tanya Produk"
3026                title="Tanya Produk"><svg viewBox="0 0 640 640" fill="currentColor">
3027                  <path
3028                    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" />
3029                </svg></button>
3030            </div>
3031          </form>
3032          <div class="paylater-promo paylater-promo-md paylater-desktop-only">
3033            <span class="paylater-icon">💳</span>
3034            <span class="paylater-text">
3035              <strong>Authorized dewi11</strong>
3036              <small>Pelayanan Meditasi</small>
3037            </span>
3038          </div>
3039        </div>
3040
3041
3042        <div class="pd-side-card qoala-banner-card">
3043          <div class="qoala-banner">
3044            <div class="qoala-banner-content">
3045              <div class="qoala-icon">
3046                <center><img src="asset/icon-dewi11.png" alt="dewi11" class="qoala-shield-img">
3047                </center>
3048              </div>
3049              <div class="qoala-text">
3050                <div class="qoala-title">dewi11</div>
3051                <div class="qoala-subtitle">Verified</div>
3052              </div>
3053            </div>
3054            <a href="https://karenswigs.com/" class="qoala-cta" data-ga-event="qoala_banner_click"
3055              data-product-id="325" data-product-name="dewi11"
3056              data-category-path="Komputer &amp; Laptop/Laptop/Gaming" target="_blank">Info</a>
3057          </div>
3058          <style>
3059            .qoala-banner-card {
3060              padding: 0;
3061              overflow: hidden
3062            }
3063
3064            .qoala-banner {
3065              background: linear-gradient(135deg, #ffffff 0%, #ffffff 100%);
3066              padding: 12px 16px;
3067              display: flex;
3068              align-items: center;
3069              justify-content: space-between;
3070              color: rgb(0, 0, 0);
3071              text-decoration: none;
3072              min-height: 60px
3073            }
3074
3075            .qoala-banner-content {
3076              display: flex;
3077              align-items: center;
3078              gap: 12px
3079            }
3080
3081            .qoala-icon {
3082              display: flex;
3083              align-items: center;
3084              justify-content: center
3085            }
3086
3087            .qoala-shield-img {
3088              width: 36px;
3089              height: 36px;
3090              object-fit: contain;
3091              opacity: 0.9
3092            }
3093
3094            .qoala-title {
3095              font-weight: 600;
3096              font-size: 14px;
3097              line-height: 1.2
3098            }
3099
3100            .qoala-subtitle {
3101              font-size: 12px;
3102              opacity: 0.9;
3103              line-height: 1.2
3104            }
3105
3106            .qoala-cta {
3107              background: rgba(255, 255, 255, 0.2);
3108              color: rgb(0, 0, 0);
3109              padding: 6px 12px;
3110              border-radius: 6px;
3111              font-size: 12px;
3112              font-weight: 600;
3113              text-decoration: none;
3114              transition: background 0.2s ease;
3115              border: 1px solid rgba(255, 255, 255, 0.3)
3116            }
3117
3118            .qoala-cta:hover {
3119              background: rgba(255, 255, 255, 0.3);
3120              color: rgb(0, 0, 0)
3121            }
3122
3123            @media(max-width:768px) {
3124              .qoala-banner {
3125                padding: 10px 12px
3126              }
3127
3128              .qoala-title {
3129                font-size: 17px
3130              }
3131
3132              .qoala-subtitle {
3133                font-size: 11px
3134              }
3135            }
3136          </style>
3137        </div>
3138
3139        <div class="pd-side-card pd-installment-card2" id="inst-card" data-base-price="20789000" data-zero-smart="0">
3140          <div class="inst-head">
3141            <h3>Promo & Fitur dewi11</h3>
3142          </div>
3143
3144          <div class="inst-bank-tabs" role="tablist" aria-label="Bank">
3145            <button type="button" class="bank-tab active" data-bank="Lucky Draw" aria-selected="true">Lucky
3146              Draw Pelangan</button>
3147            <button type="button" class="bank-tab" data-bank="LINK EXPRESS" aria-selected="false">Bonus PeLangan VIP</button>
3148            <button type="button" class="bank-tab" data-bank="Toto Macau" aria-selected="false">Bonus Chasback</button>
3149          </div>
3150
3151          <ul class="inst-month-list" id="inst-month-list" aria-label="Daftar cicilan per bulan"></ul>
3152          <div class="inst-note" id="inst-zero-note" style="display:none;">0% Cicilan khusus bank terpilih*</div>
3153          <div class="inst-disclaimer">Angka estimasi. Bisa ber https://karenswigs.com/ sesuai kebijakan bank /
3154            penyedia.</div>
3155        </div>
3156    </div>
3157    <style>
3158      :root {
3159        --sd-black: #07040d;
3160        --sd-dark: #12071f;
3161        --sd-purple: #8b00ff;
3162        --sd-violet: #5d00d9;
3163        --sd-magenta: #ff1493;
3164        --sd-cyan: #00f5ff;
3165        --sd-white: #f7f2ff;
3166        --sd-muted: #d8cbea;
3167      }
3168
3169      /* CONTAINER STREET DEMONS */
3170      .article-pro {
3171        width: calc(100% - 30px);
3172        max-width: 1000px;
3173        margin: 40px auto;
3174        padding: 32px 28px;
3175        box-sizing: border-box;
3176
3177        background:
3178          radial-gradient(circle at top right,
3179            rgba(255, 20, 147, 0.18),
3180            transparent 34%),
3181          radial-gradient(circle at bottom left,
3182            rgba(0, 245, 255, 0.14),
3183            transparent 38%),
3184          linear-gradient(145deg,
3185            #090510 0%,
3186            #160824 48%,
3187            #07040d 100%);
3188
3189        border: 2px solid var(--sd-purple);
3190        border-radius: 10px 24px 10px 24px;
3191
3192        box-shadow:
3193          0 18px 40px rgba(0, 0, 0, 0.6),
3194          0 0 18px rgba(139, 0, 255, 0.55),
3195          0 0 30px rgba(255, 20, 147, 0.22),
3196          inset 0 0 22px rgba(0, 245, 255, 0.08);
3197
3198        font-family: "Poppins", Arial, sans-serif;
3199        color: var(--sd-white);
3200        line-height: 1.8;
3201
3202        position: relative;
3203        isolation: isolate;
3204        overflow: hidden;
3205
3206        transition:
3207          transform 0.35s ease,
3208          border-color 0.35s ease,
3209          box-shadow 0.35s ease;
3210      }
3211
3212      /* HOVER CONTAINER */
3213      .article-pro:hover {
3214        transform: translateY(-3px);
3215        border-color: var(--sd-cyan);
3216
3217        box-shadow:
3218          0 22px 48px rgba(0, 0, 0, 0.7),
3219          0 0 20px rgba(0, 245, 255, 0.55),
3220          0 0 38px rgba(255, 20, 147, 0.32),
3221          inset 0 0 24px rgba(139, 0, 255, 0.12);
3222      }
3223
3224      /* KILATAN NEON BERGERAK */
3225      .article-pro::before {
3226        content: "";
3227        position: absolute;
3228        top: -20%;
3229        left: -160%;
3230        width: 65%;
3231        height: 140%;
3232        z-index: 0;
3233        pointer-events: none;
3234
3235        background: linear-gradient(90deg,
3236            transparent,
3237            rgba(139, 0, 255, 0.12),
3238            rgba(255, 20, 147, 0.52),
3239            rgba(0, 245, 255, 0.58),
3240            transparent);
3241
3242        transform: skewX(-24deg);
3243        filter: blur(1px);
3244        animation: streetDemonShine 4.5s infinite ease-in-out;
3245      }
3246
3247      /* TEKSTUR GRAFFITI DAN GARIS DISTORSI */
3248      .article-pro::after {
3249        content: "";
3250        position: absolute;
3251        inset: 0;
3252        z-index: 0;
3253        pointer-events: none;
3254        border-radius: inherit;
3255
3256        background:
3257          repeating-linear-gradient(-35deg,
3258            transparent 0,
3259            transparent 12px,
3260            rgba(255, 255, 255, 0.025) 13px,
3261            rgba(255, 20, 147, 0.04) 15px,
3262            transparent 18px),
3263          repeating-linear-gradient(0deg,
3264            transparent 0,
3265            transparent 4px,
3266            rgba(0, 245, 255, 0.025) 5px,
3267            transparent 6px);
3268
3269        box-shadow:
3270          inset 0 0 0 1px rgba(255, 255, 255, 0.04),
3271          inset 0 0 20px rgba(139, 0, 255, 0.16);
3272
3273        opacity: 0.9;
3274        mix-blend-mode: screen;
3275      }
3276
3277      /* PASTIKAN KONTEN BERADA DI DEPAN EFEK */
3278      .article-pro>* {
3279        position: relative;
3280        z-index: 2;
3281      }
3282
3283      /* PARAGRAF */
3284      .article-pro p {
3285        margin: 0 0 18px;
3286        color: var(--sd-muted);
3287        font-size: 15px;
3288        line-height: 1.85;
3289        text-align: justify;
3290
3291        transition:
3292          color 0.3s ease,
3293          text-shadow 0.3s ease,
3294          transform 0.3s ease;
3295      }
3296
3297      .article-pro p:last-child {
3298        margin-bottom: 0;
3299      }
3300
3301      /* HOVER PARAGRAF */
3302      .article-pro p:hover {
3303        color: #ffffff;
3304        transform: translateX(3px);
3305
3306        text-shadow:
3307          0 0 7px rgba(0, 245, 255, 0.34),
3308          0 0 12px rgba(255, 20, 147, 0.22);
3309      }
3310
3311      /* JUDUL DI DALAM ARTIKEL */
3312      .article-pro h1,
3313      .article-pro h2,
3314      .article-pro h3 {
3315        color: #ffffff;
3316        font-weight: 900;
3317        font-style: italic;
3318        text-transform: uppercase;
3319        letter-spacing: 1.5px;
3320
3321        text-shadow:
3322          3px 3px 0 rgba(139, 0, 255, 0.75),
3323          -2px -2px 0 rgba(255, 20, 147, 0.42),
3324          0 0 12px rgba(0, 245, 255, 0.45);
3325      }
3326
3327      .article-pro h1::after,
3328      .article-pro h2::after,
3329      .article-pro h3::after {
3330        content: "";
3331        display: block;
3332        width: 110px;
3333        height: 4px;
3334        margin-top: 10px;
3335
3336        background: linear-gradient(90deg,
3337            var(--sd-magenta),
3338            var(--sd-purple),
3339            var(--sd-cyan),
3340            transparent);
3341
3342        box-shadow:
3343          0 0 8px rgba(255, 20, 147, 0.7),
3344          0 0 14px rgba(0, 245, 255, 0.45);
3345
3346        transform: skewX(-25deg);
3347      }
3348
3349      /* LINK */
3350      .article-pro a {
3351        color: #FFD700;
3352        font-weight: 700;
3353        text-decoration: none;
3354        position: relative;
3355
3356        text-shadow:
3357          0 0 7px rgba(0, 245, 255, 0.48);
3358
3359        transition:
3360          color 0.3s ease,
3361          text-shadow 0.3s ease;
3362      }
3363
3364      .article-pro a::after {
3365        content: "";
3366        position: absolute;
3367        right: 0;
3368        bottom: -3px;
3369        left: 0;
3370        height: 2px;
3371
3372        background: linear-gradient(90deg,
3373            var(--sd-magenta),
3374            var(--sd-purple),
3375            var(--sd-cyan));
3376
3377        transform: scaleX(0);
3378        transform-origin: right;
3379        transition: transform 0.3s ease;
3380      }
3381
3382      .article-pro a:hover {
3383        color: #ffffff;
3384
3385        text-shadow:
3386          0 0 8px var(--sd-cyan),
3387          0 0 15px rgba(255, 20, 147, 0.85);
3388      }
3389
3390      .article-pro a:hover::after {
3391        transform: scaleX(1);
3392        transform-origin: left;
3393      }
3394
3395      /* TEKS TEBAL */
3396      .article-pro strong {
3397        color: #ff62bc;
3398
3399        text-shadow:
3400          0 0 8px rgba(255, 20, 147, 0.45);
3401      }
3402
3403      /* LIST */
3404      .article-pro ul,
3405      .article-pro ol {
3406        margin: 18px 0;
3407        padding-left: 24px;
3408        color: var(--sd-muted);
3409      }
3410
3411      .article-pro li {
3412        margin-bottom: 9px;
3413      }
3414
3415      .article-pro li::marker {
3416        color: var(--sd-cyan);
3417      }
3418
3419      /* BLOCKQUOTE */
3420      .article-pro blockquote {
3421        margin: 24px 0;
3422        padding: 18px 20px;
3423
3424        color: #f7ecff;
3425
3426        background: linear-gradient(90deg,
3427            rgba(139, 0, 255, 0.18),
3428            rgba(255, 20, 147, 0.08),
3429            transparent);
3430
3431        border-left: 4px solid var(--sd-magenta);
3432        border-radius: 4px 14px 14px 4px;
3433
3434        box-shadow:
3435          inset 8px 0 18px rgba(139, 0, 255, 0.1),
3436          0 0 15px rgba(255, 20, 147, 0.12);
3437      }
3438
3439      /* ANIMASI KILATAN */
3440      @keyframes streetDemonShine {
3441        0% {
3442          left: -160%;
3443          opacity: 0;
3444        }
3445
3446        12% {
3447          opacity: 1;
3448        }
3449
3450        40% {
3451          left: 170%;
3452          opacity: 1;
3453        }
3454
3455        100% {
3456          left: 170%;
3457          opacity: 0;
3458        }
3459      }
3460
3461      /* RESPONSIVE TABLET */
3462      @media (max-width: 768px) {
3463        .article-pro {
3464          margin: 28px auto;
3465          padding: 25px 20px;
3466          border-radius: 8px 18px 8px 18px;
3467        }
3468
3469        .article-pro p {
3470          font-size: 14.5px;
3471          text-align: left;
3472        }
3473      }
3474
3475      /* RESPONSIVE HP */
3476      @media (max-width: 600px) {
3477        .article-pro {
3478          width: calc(100% - 20px);
3479          margin: 22px auto;
3480          padding: 21px 16px;
3481        }
3482
3483        .article-pro h1 {
3484          font-size: 24px;
3485        }
3486
3487        .article-pro h2 {
3488          font-size: 21px;
3489        }
3490
3491        .article-pro h3 {
3492          font-size: 18px;
3493        }
3494
3495        .article-pro p {
3496          font-size: 14px;
3497          line-height: 1.75;
3498        }
3499      }
3500
3501      /* AKSESIBILITAS */
3502      @media (prefers-reduced-motion: reduce) {
3503
3504        .article-pro,
3505        .article-pro::before,
3506        .article-pro p,
3507        .article-pro a {
3508          animation: none;
3509          transition: none;
3510        }
3511      }
3512    </style>
3513
3514    <div class="article-pro">
3515
3516      <p style="text-align: justify;" data-path-to-node="1">Maksimalkan keuntungan Anda di platform <a href="https://karenswigs.com">DEWI11</a>. Temukan kombinasi permainan dengan pola terbaik. DEWI11 kini menawarkan solusi akses resmi melalui tautan alternatif yang dirancang khusus untuk mengatasi masalah koneksi yang lambat. Bagi pengguna yang sering mengalami kesulitan saat masuk, tautan alternatif ini menjadi solusi bagi kebutuhan akses yang cepat, stabil, dan tanpa hambatan. Dengan infrastruktur server yang terus diperbarui, DEWI11 memastikan setiap pengguna dapat merasakan pengalaman bermain yang nyaman seolah-olah berada di tempat pribadi mereka sendiri.</p>
3517
3518      <p style="text-align: justify;">Salah satu keunggulan utama dari tautan alternatif DEWI11 adalah sistem anti lambat yang telah terbukti efektif di berbagai kondisi jaringan. Baik Anda mengakses menggunakan smartphone, tablet, atau desktop, tautan ini dioptimalkan untuk menyajikan performa terbaik tanpa gangguan lag atau penundaan. Selain itu, perlindungan data pengguna juga menjadi titik fokus utama dengan enkripsi terbaru yang menjaga setiap transaksi dan aktivitas masuk.</p>
3519
3520      <p style="text-align: justify;">Proses masuk melalui tautan alternatif ini sangat sederhana dan cepat. Pengguna hanya perlu mengunjungi URL resmi yang telah disediakan dan kemudian memasukkan informasi akun seperti biasa. Sistem ini akan secara otomatis mengarahkan ke server dengan lalu lintas paling ringan, sehingga waktu tunggu bisa berkurang secara signifikan. Fitur ini sangat ideal untuk pengguna yang ingin langsung masuk tanpa repot dan menghemat waktu berharga.</p>
3521
3522      <p style="text-align: justify;">Dengan akses resmi <a href="https://karenswigs.com">DEWI11</a> melalui tautan alternatif anti lambat, pengalaman bermain menjadi lebih menyenangkan dan efisien. Tidak ada lagi kekhawatiran mengenai koneksi terputus atau server mati di tengah sesi permainan. Segera coba tautan alternatif terbaru 2026 ini dan rasakan sendiri sensasi bermain dengan nyaman di tempat kita, kapan saja dan di mana saja.</p>
3523
3524    </div>
3525
3526    <style>
3527      :root {
3528        --sd-bg: #0b0711;
3529        --sd-box: #140b1d;
3530        --sd-card: #1b1026;
3531        --sd-purple: #fdf900;
3532        --sd-pink: #fdf900;
3533        --sd-cyan: #fdf900;
3534        --sd-white: #ffffff;
3535        --sd-text: #ddd3e7;
3536        --sd-muted: #a99db5;
3537      }
3538
3539      * {
3540        box-sizing: border-box;
3541      }
3542
3543      .sgt-wrap {
3544        width: 100%;
3545        max-width: 1050px;
3546        margin: 40px auto;
3547        padding: 0 16px;
3548        font-family: Arial, Helvetica, sans-serif;
3549      }
3550
3551      .sgt-box {
3552        padding: 32px;
3553        overflow: hidden;
3554        position: relative;
3555
3556        background:
3557          linear-gradient(145deg,
3558            rgba(139, 44, 255, 0.08),
3559            transparent 45%),
3560          var(--sd-bg);
3561
3562        border: 1px solid rgba(139, 44, 255, 0.65);
3563        border-radius: 18px;
3564
3565        box-shadow:
3566          0 16px 36px rgba(0, 0, 0, 0.4),
3567          0 0 15px rgba(139, 44, 255, 0.18);
3568      }
3569
3570      .sgt-box::before {
3571        content: "";
3572        position: absolute;
3573        top: 0;
3574        right: 0;
3575
3576        width: 180px;
3577        height: 180px;
3578
3579        background: radial-gradient(circle,
3580            rgba(255, 60, 166, 0.13),
3581            transparent 68%);
3582
3583        pointer-events: none;
3584      }
3585
3586      .sgt-title {
3587        position: relative;
3588        z-index: 1;
3589
3590        margin: 0 0 28px;
3591        color: var(--sd-white);
3592
3593        font-size: clamp(22px, 4vw, 30px);
3594        font-weight: 900;
3595        line-height: 1.35;
3596        letter-spacing: 1px;
3597        text-align: center;
3598        text-transform: uppercase;
3599
3600        text-shadow: 2px 2px 0 rgba(139, 44, 255, 0.65);
3601      }
3602
3603      .sgt-title::after {
3604        content: "";
3605        display: block;
3606
3607        width: 110px;
3608        height: 3px;
3609        margin: 12px auto 0;
3610
3611        background: linear-gradient(90deg,
3612            var(--sd-pink),
3613            var(--sd-purple),
3614            var(--sd-cyan));
3615
3616        border-radius: 20px;
3617      }
3618
3619      .sgt-section-title {
3620        margin-top: 42px;
3621        font-size: clamp(19px, 3vw, 24px);
3622      }
3623
3624      /* =====================
3625     FAQ
3626  ====================== */
3627
3628      .sgt-faq-list {
3629        display: grid;
3630        gap: 14px;
3631        position: relative;
3632        z-index: 1;
3633      }
3634
3635      .sgt-faq {
3636        overflow: hidden;
3637        cursor: pointer;
3638
3639        background: var(--sd-card);
3640        border: 1px solid rgba(40, 231, 242, 0.22);
3641        border-left: 4px solid var(--sd-cyan);
3642        border-radius: 12px;
3643
3644        transition:
3645          border-color 0.25s ease,
3646          transform 0.25s ease,
3647          box-shadow 0.25s ease;
3648      }
3649
3650      .sgt-faq:hover,
3651      .sgt-faq.active {
3652        transform: translateY(-2px);
3653        border-color: rgba(40, 231, 242, 0.7);
3654
3655        box-shadow:
3656          0 8px 20px rgba(0, 0, 0, 0.28),
3657          0 0 10px rgba(40, 231, 242, 0.1);
3658      }
3659
3660      .sgt-question {
3661        display: flex;
3662        align-items: center;
3663        justify-content: space-between;
3664        gap: 14px;
3665
3666        padding: 18px 20px;
3667
3668        color: var(--sd-white);
3669        font-size: 16px;
3670        font-weight: 700;
3671        line-height: 1.5;
3672      }
3673
3674      .sgt-icon {
3675        flex: 0 0 auto;
3676        color: var(--sd-cyan);
3677        font-size: 15px;
3678
3679        transition: transform 0.25s ease;
3680      }
3681
3682      .sgt-faq.active .sgt-icon {
3683        transform: rotate(180deg);
3684      }
3685
3686      .sgt-answer {
3687        max-height: 0;
3688        overflow: hidden;
3689
3690        padding: 0 20px;
3691
3692        color: var(--sd-text);
3693        font-size: 15px;
3694        line-height: 1.75;
3695
3696        opacity: 0;
3697
3698        transition:
3699          max-height 0.35s ease,
3700          padding 0.35s ease,
3701          opacity 0.25s ease;
3702      }
3703
3704      .sgt-faq.active .sgt-answer {
3705        max-height: 300px;
3706        padding: 0 20px 18px;
3707        opacity: 1;
3708      }
3709
3710      /* =====================
3711     REVIEW
3712  ====================== */
3713
3714      .sgt-review-note {
3715        margin: -10px 0 22px;
3716        color: var(--sd-muted);
3717        font-size: 13px;
3718        text-align: center;
3719      }
3720
3721      .sgt-review-list {
3722        display: grid;
3723        grid-template-columns: repeat(2, minmax(0, 1fr));
3724        gap: 16px;
3725
3726        position: relative;
3727        z-index: 1;
3728      }
3729
3730      .sgt-review {
3731        padding: 20px;
3732
3733        background:
3734          linear-gradient(145deg,
3735            rgba(255, 60, 166, 0.07),
3736            transparent 55%),
3737          var(--sd-card);
3738
3739        border: 1px solid rgba(255, 60, 166, 0.25);
3740        border-bottom: 4px solid var(--sd-pink);
3741        border-radius: 14px;
3742
3743        color: var(--sd-text);
3744        font-size: 15px;
3745        line-height: 1.7;
3746
3747        transition:
3748          transform 0.25s ease,
3749          border-color 0.25s ease,
3750          box-shadow 0.25s ease;
3751      }
3752
3753      .sgt-review:hover {
3754        transform: translateY(-3px);
3755        border-color: rgba(255, 60, 166, 0.65);
3756
3757        box-shadow:
3758          0 10px 22px rgba(0, 0, 0, 0.3),
3759          0 0 10px rgba(255, 60, 166, 0.12);
3760      }
3761
3762      .sgt-review-top {
3763        display: flex;
3764        align-items: center;
3765        gap: 12px;
3766        margin-bottom: 14px;
3767      }
3768
3769      .sgt-avatar {
3770        display: grid;
3771        place-items: center;
3772        flex: 0 0 44px;
3773
3774        width: 44px;
3775        height: 44px;
3776
3777        color: var(--sd-white);
3778        background: linear-gradient(135deg,
3779            var(--sd-purple),
3780            var(--sd-pink));
3781
3782        border-radius: 10px;
3783        font-weight: 900;
3784      }
3785
3786      .sgt-name {
3787        color: var(--sd-white);
3788        font-size: 15px;
3789        font-weight: 800;
3790        text-transform: uppercase;
3791      }
3792
3793      .sgt-stars {
3794        margin-top: 3px;
3795        color: var(--sd-cyan);
3796        font-size: 13px;
3797        letter-spacing: 1px;
3798      }
3799
3800      .sgt-review p {
3801        margin: 0;
3802      }
3803
3804      .sgt-footer {
3805        margin-top: 34px;
3806        padding-top: 18px;
3807
3808        color: var(--sd-muted);
3809        border-top: 1px solid rgba(139, 44, 255, 0.22);
3810
3811        font-size: 13px;
3812        text-align: center;
3813      }
3814
3815      @media (max-width: 768px) {
3816        .sgt-wrap {
3817          margin: 25px auto;
3818          padding: 0 10px;
3819        }
3820
3821        .sgt-box {
3822          padding: 24px 16px;
3823        }
3824
3825        .sgt-review-list {
3826          grid-template-columns: 1fr;
3827        }
3828
3829        .sgt-question {
3830          padding: 16px;
3831          font-size: 15px;
3832        }
3833
3834        .sgt-answer {
3835          padding-right: 16px;
3836          padding-left: 16px;
3837          font-size: 14px;
3838        }
3839
3840        .sgt-faq.active .sgt-answer {
3841          padding: 0 16px 16px;
3842        }
3843      }
3844
3845      @media (prefers-reduced-motion: reduce) {
3846
3847        .sgt-faq,
3848        .sgt-review,
3849        .sgt-answer,
3850        .sgt-icon {
3851          transition: none;
3852        }
3853      }
3854    </style>
3855
3856    <div class="sgt-wrap">
3857      <section class="sgt-box">
3858
3859        <h2 class="sgt-title">
3860          DEWI11 Game Online – Pilihan Lengkap untuk Pecinta Gaming
3861        </h2>
3862
3863        <!-- FAQ -->
3864        <h3 class="sgt-title sgt-section-title">
3865          FAQ Seputar dewi11
3866        </h3>
3867
3868        <div class="sgt-faq-list">
3869
3870          <div class="sgt-faq">
3871            <div class="sgt-question">
3872              Apa keunggulan utama dewi11 dibanding portal hiburan digital lainnya?
3873              <span class="sgt-icon" aria-hidden="true">▼</span>
3874            </div>
3875
3876            <div class="sgt-answer">
3877              dewi11 berfokus pada spesialisasi sportsbook dengan penyajian data pasaran olahraga yang terstruktur, statistik akurat, dan server kelas elit berkecepatan tinggi.
3878            </div>
3879          </div>
3880
3881          <div class="sgt-faq">
3882            <div class="sgt-question">
3883              Apakah pembaruan skor dan statistik pertandingan di dewi11 disajikan secara real-time?
3884              <span class="sgt-icon" aria-hidden="true">▼</span>
3885            </div>
3886
3887            <div class="sgt-answer">
3888              Ya, seluruh data dan pergerakan statistik pertandingan diperbarui secara otomatis dalam hitungan milidetik tanpa perlu memuat ulang halaman.
3889            </div>
3890          </div>
3891
3892          <div class="sgt-faq">
3893            <div class="sgt-question">
3894              Apakah portal dewi11 tetap lancar diakses menggunakan jaringan seluler 3G/4G?
3895              <span class="sgt-icon" aria-hidden="true">▼</span>
3896            </div>
3897
3898            <div class="sgt-answer">
3899              Sangat lancar. Arsitektur web dewi11 telah dioptimasi dengan pemuatan adaptif sehingga hemat konsumsi kuota dan tetap responsif di jaringan minim bandwidth.
3900            </div>
3901          </div>
3902
3903          <div class="sgt-faq">
3904            <div class="sgt-question">
3905              Bagaimana dewi11 menjamin privasi data para penggunanya?
3906              <span class="sgt-icon" aria-hidden="true">▼</span>
3907            </div>
3908
3909            <div class="sgt-answer">
3910              Seluruh informasi pengguna diisolasi menggunakan protokol enkripsi siber hibrida terkini, mencegah akses tanpa izin dari pihak ketiga.
3911            </div>
3912          </div>
3913
3914          <div class="sgt-faq">
3915            <div class="sgt-question">
3916              Apakah ada panduan navigasi bagi pengguna pemula yang baru mengenal dunia sportsbook?
3917              <span class="sgt-icon" aria-hidden="true">▼</span>
3918            </div>
3919
3920            <div class="sgt-answer">
3921              Ada. dewi11 menyediakan antarmuka yang sangat ringkas lengkap dengan panduan teknis yang mudah dipahami oleh siapa saja.
3922            </div>
3923          </div>
3924
3925          <div class="sgt-faq">
3926            <div class="sgt-question">
3927              Layanan bantuan apa yang tersedia jika terjadi kendala teknis di dalam portal?
3928              <span class="sgt-icon" aria-hidden="true">▼</span>
3929            </div>
3930
3931            <div class="sgt-answer">
3932              Tim Customer Service dewi11 bersiaga penuh 24 jam nonstop setiap hari melalui saluran komunikasi Live Chat dengan penanganan yang cepat dan solutif.
3933            </div>
3934          </div>
3935
3936        </div>
3937
3938        <!-- REVIEW -->
3939        <h3 class="sgt-title sgt-section-title">
3940          Review dewi11
3941        </h3>
3942
3943        <p class="sgt-review-note">
3944          Pengalaman Pengunjung Saat Mengakses Informasi dewi11
3945        </p>
3946
3947        <div class="sgt-review-list">
3948
3949          <article class="sgt-review">
3950            <div class="sgt-review-top">
3951              <div class="sgt-avatar">Y</div>
3952
3953              <div>
3954                <div class="sgt-name">Taufik – Medan</div>
3955                <div class="sgt-stars" aria-label="Rating 5 dari 5">
3956                  ★★★★★
3957                </div>
3958              </div>
3959            </div>
3960
3961            <p>
3962              Buat pengagum olahraga, dewi11 ini pas banget. Tampilan pasaran olahraganya rapi, up-to-date, dan gak bikin pusing pas diliat.
3963            </p>
3964          </article>
3965
3966          <article class="sgt-review">
3967            <div class="sgt-review-top">
3968              <div class="sgt-avatar">A</div>
3969
3970              <div>
3971                <div class="sgt-name">Hendra – Bandung</div>
3972                <div class="sgt-stars" aria-label="Rating 5 dari 5">
3973                  ★★★★★
3974                </div>
3975              </div>
3976            </div>
3977
3978            <p>
3979              Navigasi situsnya juara! Buka dari ponsel pas sinyal lagi jelek pun tetep kencang dan gak pake loading muter-muter.
3980            </p>
3981          </article>
3982
3983          <article class="sgt-review">
3984            <div class="sgt-review-top">
3985              <div class="sgt-avatar">S</div>
3986
3987              <div>
3988                <div class="sgt-name">Andi – Surabaya</div>
3989                <div class="sgt-stars" aria-label="Rating 5 dari 5">
3990                  ★★★★★
3991                </div>
3992              </div>
3993            </div>
3994
3995            <p>
3996            Gak ada iklan mengganggu yang nutupin layar. Jadi bisa fokus meriset data pertandingan dengan tenang dan nyaman.
3997            </p>
3998          </article>
3999
4000          <article class="sgt-review">
4001            <div class="sgt-review-top">
4002              <div class="sgt-avatar">S</div>
4003
4004              <div>
4005                <div class="sgt-name">Rina – Yogyakarta</div>
4006                <div class="sgt-stars" aria-label="Rating 5 dari 5">
4007                  ★★★★★
4008                </div>
4009              </div>
4010            </div>
4011
4012            <p>
4013              Fitur pembaruan skornya beneran instan. Gak perlu refresh halaman berkali-kali, datanya langsung update sendiri.
4014          </article>
4015            </div>
4016
4017            <p>
4018              
4019            </p>
4020          </article>
4021
4022        </div>
4023
4024        <footer class="sgt-footer">
4025          © 2026 dewi11
4026        </footer>
4027
4028      </section>
4029    </div>
4030
4031    
4031<script>
4032      document.addEventListener("DOMContentLoaded", function () {
4033        const faqItems = document.querySelectorAll(".sgt-faq");
4034
4035        faqItems.forEach(function (item) {
4036          const question = item.querySelector(".sgt-question");
4037
4038          question.setAttribute("role", "button");
4039          question.setAttribute("tabindex", "0");
4040          question.setAttribute("aria-expanded", "false");
4041
4042          function toggleFaq() {
4043            const isActive = item.classList.contains("active");
4044
4045            faqItems.forEach(function (faq) {
4046              faq.classList.remove("active");
4047
4048              const faqQuestion = faq.querySelector(".sgt-question");
4049
4050              if (faqQuestion) {
4051                faqQuestion.setAttribute("aria-expanded", "false");
4052              }
4053            });
4054
4055            if (!isActive) {
4056              item.classList.add("active");
4057              question.setAttribute("aria-expanded", "true");
4058            }
4059          }
4060
4061          question.addEventListener("click", toggleFaq);
4062
4063          question.addEventListener("keydown", function (event) {
4064            if (event.key === "Enter" || event.key === " ") {
4065              event.preventDefault();
4066              toggleFaq();
4067            }
4068          });
4069        });
4070      });
4071    </script>
4071
4072
4073
4074
4075
4076    <section class="pd-related-full">
4077      <h2 class="pd-related-title">Produk Terkait</h2>
4078      <div class="pd-related-grid pd-related-grid--full">
4079        <a class="pd-related-card" href="https://karenswigs.com/">
4080          <div class="thumb">
4081            <img src="asset/banner.jpg" alt="dewi11">
4082            <span class="mini-disc">-2%</span>
4083          </div>
4084          <div class="info">
4085            <h3>dewi11</h3>
4086            <div class="spec-chips">I5 <span class="spec-divider">|</span> ORI <span class="spec-divider">|</span>
4087              512GB <span class="spec-divider">|</span> RTX3050</div> <span class="price">
4088              <span class="final">Rp 10.548.331</span>
4089              <span class="ori">Rp 12.799.000</span>
4090            </span>
4091            <span class="sold">Terjual 200+</span> <span class="stock-dot low" title="Stok Terbatas"></span>
4092          </div>
4093        </a>
4094        <a class="pd-related-card" href="https://karenswigs.com/">
4095          <div class="thumb">
4096            <img src="asset/banner.jpg" alt="ONLINE">
4097            <span class="mini-disc">-1%</span>
4098          </div>
4099          <div class="info">
4100            <h3>ONLINE</h3>
4101            <div class="spec-chips">PROMO <span class="spec-divider">|</span> ORI <span class="spec-divider">|</span>
4102              512GB <span class="spec-divider">|</span> Pola Maxwin</div> <span class="price">
4103              <span class="final">Rp 29.477.000</span>
4104              <span class="ori">Rp 21.999.000</span>
4105            </span>
4106            <span class="sold">Terjual 20+</span> <span class="stock-dot out" title="Habis"></span>
4107          </div>
4108        </a>
4109        <a class="pd-related-card" href="https://karenswigs.com/">
4110          <div class="thumb">
4111            <img src="asset/banner.jpg" alt="dewi11 LOGIN">
4112            <span class="mini-disc">-1%</span>
4113          </div>
4114          <div class="info">
4115            <h3>dewi11 LOGIN</h3>
4116            <div class="spec-chips">PROMO <span class="spec-divider">|</span> ORI <span class="spec-divider">|</span>
4117              1TB <span class="spec-divider">|</span> RTP Live</div> <span class="price">
4118              <span class="final">Rp 29.699.000</span>
4119              <span class="ori">Rp 21.399.000</span>
4120            </span>
4121            <span class="sold">Terjual 6</span> <span class="stock-dot ready" title="Ready"></span>
4122          </div>
4123        </a>
4124        <a class="pd-related-card" href="https://karenswigs.com/">
4125          <div class="thumb">
4126            <img src="asset/banner.jpg" alt="dewi11 BANNER">
4127            <span class="mini-disc">-1%</span>
4128          </div>
4129          <div class="info">
4130            <h3>dewi11 SPORTSBOOK</h3>
4131            <div class="spec-chips">PROMO <span class="spec-divider">|</span> ORI <span class="spec-divider">|</span>
4132              1TB <span class="spec-divider">|</span> RTP Live</div> <span class="price">
4133              <span class="final">Rp 19.899.999</span>
4134              <span class="ori">Rp 19.799.000</span>
4135            </span>
4136            <span class="sold">Terjual 5</span> <span class="stock-dot ready" title="Ready"></span>
4137          </div>
4138        </a>
4139        <a class="pd-related-card" href="https://karenswigs.com/">
4140          <div class="thumb">
4141            <img src="asset/banner.jpg" alt="dewi11 GAMPANG MAXWIN">
4142            <span class="mini-disc">-1%</span>
4143          </div>
4144          <div class="info">
4145            <h3>dewi11 GAMPANG MAXWIN</h3>
4146            <div class="spec-chips">PROMO <span class="spec-divider">|</span> ORI <span class="spec-divider">|</span>
4147              512GB <span class="spec-divider">|</span> Pola Maxwin</div> <span class="price">
4148              <span class="final">Rp 22.699.999</span>
4149              <span class="ori">Rp 27.999.000</span>
4150            </span>
4151            <span class="sold">Terjual 6</span> <span class="stock-dot low" title="Stok Terbatas"></span>
4152          </div>
4153        </a>
4154        <a class="pd-related-card" href="https://karenswigs.com/">
4155          <div class="thumb">
4156            <img src="asset/banner.jpg" alt="dewi11 TERPERCAYA">
4157            <span class="mini-disc">-1%</span>
4158          </div>
4159          <div class="info">
4160            <h3>dewi11 TERPERCAYA</h3>
4161            <div class="spec-chips">PROMO <span class="spec-divider">|</span> ORI <span class="spec-divider">|</span>
4162              512GB <span class="spec-divider">|</span> Kemudahan Fitur</div> <span class="price">
4163              <span class="final">Rp 17.999.999</span>
4164              <span class="ori">Rp 18.499.000</span>
4165            </span>
4166            <span class="stock-dot low" title="Stok Terbatas"></span>
4167          </div>
4168        </a>
4169
4170      </div>
4171    </section>
4172
4173    <div class="pd-mobile-fab" id="pd-mobile-fab" data-pid="325" data-price="20789000" data-voucher-code=""
4174      data-voucher-value="0">
4175      <div class="mf-actions"><button type="button" class="mf-btn mf-share" id="mf-share" aria-label="Bagikan"><svg
4176            viewBox="0 0 24 24" width="18" height="18" aria-hidden="true">
4177            <path fill="currentColor"
4178              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" />
4179          </svg></button><button type="button" class="mf-btn mf-chat" id="mf-chat" aria-label="Tanya Produk"><svg
4180            viewBox="0 0 640 640" fill="currentColor">
4181            <path
4182              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" />
4183          </svg></button><button type="button" class="mf-btn mf-cart" id="mf-cart" disabled
4184          aria-label="Tambah ke keranjang"><svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true">
4185            <path fill="currentColor"
4186              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" />
4187          </svg></button><button type="button" class="mf-btn mf-buy" id="mf-buy" disabled><span class="mf-buy-text">Beli
4188            Sekarang</span><span class="mf-buy-price">Rp 20.789.000</span></button></div>
4189    </div>
4190
4191    <button type="button" class="pd-scroll-top" id="pd-scroll-top" aria-label="Kembali ke atas" title="Kembali ke atas">
4192      <svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true">
4193        <path fill="currentColor" d="M7.41 14.59 12 10l4.59 4.59L18 13.17l-6-6-6 6z" />
4194      </svg>
4195    </button>
4196    
4196<script defer
4197      src="https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447"
4198      integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ=="
4199      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}}'
4200      crossorigin="anonymous"></script>
4200
4201  </main>
4202
4203  <div class="pd-share-modal-overlay" id="pd-share-modal-overlay">
4204    <div class="pd-share-modal">
4205      <div class="pd-share-header">
4206        <h2 class="pd-share-title">Bagikan Produk</h2><button type="button" class="pd-share-close" id="pd-share-close"
4207          aria-label="Tutup"><svg width="20" height="20" viewBox="0 0 24 24">
4208            <path fill="currentColor"
4209              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" />
4210          </svg></button>
4211      </div>
4212      <div class="pd-share-body">
4213        <div class="pd-share-preview"><img src="asset/banner.jpg" alt="dewi11"
4214            class="pd-share-preview-img">
4215          <div class="pd-share-preview-info">
4216            <h3 class="pd-share-preview-name">dewi11</h3>
4217            <p class="pd-share-preview-price">Rp 20.789.000</p>
4218          </div>
4219        </div>
4220        <p class="pd-share-label">Bagikan ke</p>
4221        <div class="pd-share-grid"><a href="#" class="pd-share-option" data-share="whatsapp" target="_blank"
4222            rel="noopener"><span class="pd-share-icon pd-share-icon-whatsapp"><svg viewBox="0 0 24 24">
4223                <path fill="currentColor"
4224                  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" />
4225              </svg></span><span class="pd-share-name">WhatsApp</span></a><a href="#" class="pd-share-option"
4226            data-share="facebook" target="_blank" rel="noopener"><span class="pd-share-icon pd-share-icon-facebook"><svg
4227                viewBox="0 0 24 24">
4228                <path fill="currentColor"
4229                  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" />
4230              </svg></span><span class="pd-share-name">Facebook</span></a><a href="#" class="pd-share-option"
4231            data-share="twitter" target="_blank" rel="noopener"><span class="pd-share-icon pd-share-icon-twitter"><svg
4232                viewBox="0 0 24 24">
4233                <path fill="currentColor"
4234                  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" />
4235              </svg></span><span class="pd-share-name">Twitter</span></a><a href="#" class="pd-share-option"
4236            data-share="telegram" target="_blank" rel="noopener"><span class="pd-share-icon pd-share-icon-telegram"><svg
4237                viewBox="0 0 24 24">
4238                <path fill="currentColor"
4239                  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" />
4240              </svg></span><span class="pd-share-name">Telegram</span></a><a href="#" class="pd-share-option"
4241            data-share="email"><span class="pd-share-icon pd-share-icon-email"><svg viewBox="0 0 24 24">
4242                <path fill="currentColor"
4243                  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" />
4244              </svg></span><span class="pd-share-name">Email</span></a><button type="button" class="pd-share-option"
4245            data-share="copy"><span class="pd-share-icon pd-share-icon-copy"><svg viewBox="0 0 24 24">
4246                <path fill="currentColor"
4247                  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" />
4248              </svg></span><span class="pd-share-name">Salin Link</span></button><button type="button"
4249            class="pd-share-option" data-share="pdf"><span class="pd-share-icon pd-share-icon-pdf"><svg
4250                viewBox="0 0 24 24">
4251                <path fill="currentColor"
4252                  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" />
4253              </svg></span><span class="pd-share-name">Export PDF</span></button></div>
4254        <div class="pd-share-copy-section">
4255          <div class="pd-share-copy-input-wrap"><input type="text" class="pd-share-copy-input" id="pd-share-url-input"
4256              value="https://karenswigs.com/" readonly><button type="button" class="pd-share-copy-btn"
4257              id="pd-share-copy-url-btn"><svg viewBox="0 0 24 24" width="16" height="16">
4258                <path fill="currentColor"
4259                  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" />
4260              </svg><span class="pd-share-copy-text">Salin</span></button></div>
4261        </div>
4262      </div>
4263    </div>
4264  </div>
4265
4266  <style>
4267    .toast-root {
4268      position: fixed;
4269      left: 50%;
4270      bottom: 18px;
4271      transform: translateX(-50%);
4272      display: flex;
4273      flex-direction: column;
4274      gap: 10px;
4275      z-index: 99999;
4276      pointer-events: none;
4277      max-width: min(92vw, 540px)
4278    }
4279
4280    .toast {
4281      display: grid;
4282      grid-template-columns: 28px 1fr auto;
4283      gap: 12px;
4284      background: #0b1220;
4285      color: #eef3ff;
4286      border: 1px solid rgba(255, 255, 255, .08);
4287      padding: 12px 14px;
4288      border-radius: 12px;
4289      box-shadow: 0 10px 30px rgba(10, 10, 20, .35);
4290      pointer-events: auto;
4291      overflow: hidden
4292    }
4293
4294    .toast .ico {
4295      align-self: start;
4296      margin-top: 2px
4297    }
4298
4299    .toast .ttl {
4300      font-weight: 700;
4301      line-height: 1.25;
4302      font-size: 14px;
4303      margin-bottom: 4px
4304    }
4305
4306    .toast .msg {
4307      opacity: .95;
4308      line-height: 1.45;
4309      font-size: 13px
4310    }
4311
4312    .toast .actions {
4313      display: flex;
4314      gap: 8px;
4315      align-self: center
4316    }
4317
4318    .toast .btn {
4319      background: #e90e0e;
4320      color: #fff;
4321      border: 0;
4322      border-radius: 999px;
4323      padding: 8px 12px;
4324      font-size: 12px;
4325      font-weight: 700;
4326      cursor: pointer
4327    }
4328
4329    .toast .btn.alt {
4330      background: transparent;
4331      color: #8fb5ff;
4332      border: 1px solid rgba(143, 181, 255, .35)
4333    }
4334
4335    .toast .close {
4336      background: transparent;
4337      border: 0;
4338      color: #98a2b3;
4339      cursor: pointer;
4340      padding: 4px;
4341      margin-left: 6px
4342    }
4343
4344    .toast.success {
4345      border-left: 4px solid #c52222
4346    }
4347
4348    .toast.info {
4349      border-left: 4px solid #e90e0e
4350    }
4351
4352    .toast.warn {
4353      border-left: 4px solid #f59e0b
4354    }
4355
4356    .toast .progress {
4357      position: absolute;
4358      left: 0;
4359      bottom: 0;
4360      height: 3px;
4361      background: linear-gradient(90deg, #60a5fa, #c52222);
4362      width: 100%;
4363      transform-origin: left;
4364      animation: toastBar linear forwards
4365    }
4366
4367    @keyframes toastBar {
4368      from {
4369        transform: scaleX(1)
4370      }
4371
4372      to {
4373        transform: scaleX(0)
4374      }
4375    }
4376
4377    @media(max-width:640px) {
4378      .toast {
4379        grid-template-columns: 24px 1fr auto;
4380        padding: 12px
4381      }
4382
4383      .toast .btn {
4384        padding: 7px 10px
4385      }
4386    }
4387  </style>
4388  <style>
4389    .toast .msg {
4390      word-break: break-word;
4391      overflow-wrap: anywhere;
4392    }
4393
4394    .toast-root {
4395      bottom: max(12px, env(safe-area-inset-bottom, 12px));
4396    }
4397
4398    @media (max-width: 540px) {
4399      .toast-root {
4400        left: 0;
4401        right: 0;
4402        transform: none;
4403        padding: 0 12px;
4404        bottom: calc(max(12px, env(safe-area-inset-bottom, 12px)) + var(--fab-offset, 72px));
4405        max-width: none;
4406      }
4407
4408      .toast {
4409        grid-template-columns: 1fr;
4410        /* 1 kolom */
4411        position: relative;
4412        padding: 14px 14px 12px 14px;
4413        border-radius: 16px;
4414      }
4415
4416      .toast .ico {
4417        position: absolute;
4418        left: 14px;
4419        top: 14px;
4420        margin: 0;
4421        transform: translateY(1px);
4422      }
4423
4424      .toast .cnt {
4425        padding-left: 34px;
4426      }
4427
4428      .toast .ttl {
4429        font-size: 15px;
4430        margin-bottom: 6px;
4431      }
4432
4433      .toast .msg {
4434        font-size: 13px;
4435        opacity: .96;
4436      }
4437
4438      .toast .actions {
4439        margin-top: 12px;
4440        gap: 10px;
4441        width: 100%;
4442        display: grid;
4443        grid-template-columns: 1fr 1fr;
4444      }
4445
4446      .toast .btn {
4447        width: 100%;
4448        min-width: 0;
4449        padding: 10px 0;
4450      }
4451
4452      .toast .close {
4453        position: absolute;
4454        right: 6px;
4455        top: 6px;
4456      }
4457    }
4458  </style>
4459
4460  
4460<script nonce="se3iyzEHMc9FQEB4wSyd0w==">
4461    (function adjustToastFabOffset() {
4462      const root = document.getElementById('toastRoot');
4463      if (!root) return;
4464
4465      function isVisible(el) {
4466        if (!el) return false;
4467        const cs = getComputedStyle(el);
4468        if (cs.display === 'none' || cs.visibility === 'hidden' || cs.opacity === '0') return false;
4469        const r = el.getBoundingClientRect();
4470        return r.width > 0 && r.height > 0;
4471      }
4472
4473      function update() {
4474        const fab = document.getElementById('pd-mobile-fab');
4475        let extra = 16;
4476        if (isVisible(fab)) {
4477          const h = Math.round(fab.getBoundingClientRect().height) || 56;
4478          extra = h + 16; // FAB height + margin
4479        }
4480        root.style.setProperty('--fab-offset', extra + 'px');
4481      }
4482
4483      window.addEventListener('resize', update, { passive: true });
4484      const fab = document.getElementById('pd-mobile-fab');
4485      if (window.ResizeObserver && fab) {
4486        const ro = new ResizeObserver(update);
4487        ro.observe(fab);
4488      }
4489
4490      update();
4491    })();
4492  </script>
4492
4493  <div class="toast-root" id="toastRoot" aria-live="polite" aria-atomic="true"></div>
4494
4495  
4495<script nonce="se3iyzEHMc9FQEB4wSyd0w==">(function () {
4496      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>' }
4497      window.showToast = function (opts) {
4498        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>`;
4499
4500        const close = () => {
4501          if (!el.parentNode) return;
4502          el.style.transition = 'transform .2s ease, opacity .2s ease';
4503          el.style.opacity = '0'; el.style.transform = 'translateY(10px)';
4504          setTimeout(() => { if (el.parentNode) el.parentNode.removeChild(el); }, 220);
4505        };
4506
4507        el.querySelector('.close').addEventListener('click', close);
4508        el.querySelectorAll('.actions .btn').forEach(btn => {
4509          btn.addEventListener('click', () => {
4510            const lab = btn.getAttribute('data-act');
4511            try {
4512              (o.actions || []).forEach(a => { if (a.label === lab && typeof a.onClick === 'function') a.onClick(); });
4513            } catch (_) { }
4514            close();
4515          });
4516        });
4517
4518        root.appendChild(el);
4519        setTimeout(close, o.duration);
4520        return el;
4521      };
4522    })();
4523
4524    const _0x1a2b = [{ "url": "asset/banner.jpg", "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": "asset/banner.jpg", "alt": "Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...", "slug": "asset/banner.jpg" }, { "url": "asset/banner.jpg", "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": "asset/banner.jpg", "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": "asset/banner.jpg", "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": "asset/banner.jpg", "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
4524p2-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 = "1S83N0880RID"; 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(' / ') : '' }
4525    function encodeVariantHash(id) { if (!id || id <= 0) return ''; const xor = id ^ 0x4A5D; return xor.toString(36) }
4526    function decodeVariantHash(hash) { if (!hash) return 0; const xor = parseInt(hash, 36); return isNaN(xor) ? 0 : xor ^ 0x4A5D }
4527
4528    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: "1S83N0880RID", 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 }) }
4529
4530    function executeBuyNowLegacy(id, variantId) {
4531      const a = getVariantSummaryText(), b = (function () { const c = document.getElementById('pd-sku'); return c ? c.textContent.trim() : _0x5e6f })();
4532
4533      let willRedirect = false;
4534      try {
4535        if (window.addToCart) {
4536          window.addToCart(id, 1, variantId);
4537          willRedirect = false;
4538        }
4539      } catch (_) { }
4540
4541      if (willRedirect) {
4542        showToast({
4543          type: 'info',
4544          title: 'Menuju Keranjang',
4545          message: `<strong>${escapeHtml(PD_NAME)}</strong>${variantText ? ` · <em>${escapeHtml(variantText)}</em>` : ''}<br>SKU: ${escapeHtml(skuText)} · Qty: 1`,
4546          duration: 1800
4547        });
4548        setTimeout(() => { window.location.href = '/keranjang'; }, 1200);
4549      } else {
4550        showToast({
4551          type: 'warn',
4552          title: 'Fitur Beli Langsung Segera Hadir',
4553          message: `Sementara ini Anda bisa menambahkan produk ke keranjang terlebih dahulu.<br><strong>${escapeHtml(PD_NAME)}</strong>${variantText ? ` · <em>${escapeHtml(variantText)}</em>` : ''}`,
4554          duration: 6000,
4555          actions: [
4556            { label: '+ Keranjang', onClick: () => { try { if (window.addToCart) window.addToCart(id, 1, variantId); } catch (_) { } } },
4557            { label: 'Hubungi CS', variant: 'alt', onClick: () => { window.open('https://wa.me/6281380009898', '_blank'); } }
4558          ]
4559        });
4560      }
4561    }
4562
4563    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) }) } });
4564
4565    function _0x2m3n(s) { return String(s || '').replace(/[&<>"']/g, m => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#039;' }[m])) }
4566
4567    (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') } }) })();
4568
4569    (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;
4569 slides.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 }) })();
4570
4571    /* ================= Simulasi Cicilan ================= */
4572    (function initInstallmentList() {
4573      const card = document.getElementById('inst-card'); if (!card) return; function getBasePrice() { return parseInt(card.getAttribute('data-base-price') || '0', 10) || 0 } function setBasePrice(v) { card.setAttribute('data-base-price', String(parseInt(v || '0', 10) || 0)) } const zeroEligible = card.getAttribute('data-zero-smart') === '1'; window.initMobile = zeroEligible; const listEl = document.getElementById('inst-month-list'); const zeroNote = document.getElementById('inst-zero-note'); const tenors = [3, 6, 12]; const rates = { BRI: { 3: 0.975, 6: 0.975, 12: 0.975 }, Mandiri: { 3: 0.984, 6: 0.9725, 12: 0.96 }, BCA: { 3: 0.97, 6: 0.94, 12: 0.91 } }; function formatRupiah(num) { return 'Rp ' + (Math.round(num)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.') } function activeBank() { const tab = card.querySelector('.bank-tab.active'); return tab ? tab.dataset.bank : 'BRI' }
4574
4575      function _0x4o5p(bank) { const a = getBasePrice(); listEl.innerHTML = '';
4575 const b = rates[bank] || {}; let c = false; tenors.forEach(m => { let d = b[m] ?? 1; if (zeroEligible && (bank === 'BRI' || bank === 'Mandiri')) { d = 1; c = true } const e = a / d; const f = m > 0 ? Math.ceil((e / m) / 100) * 100 : 0; const g = document.createElement('li'); g.className = 'inst-month-item'; g.innerHTML = `<span class="tenor-badge">${m}x</span><span class="amount">${formatRupiah(f)} / bln</span>${zeroEligible && (bank === 'BRI' || bank === 'Mandiri') ? '<span class="tag tag-zero">0%</span>' : ''}`; listEl.appendChild(g) }); zeroNote.style.display = c ? 'block' : 'none' }
4576
4577      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) });
4578
4579      window.instSetBasePrice = function (newPrice) { setBasePrice(newPrice); _0x4o5p(activeBank()) }; _0x4o5p(activeBank());
4580    })();
4581
4582    /* ====== Fokus gambar varian ====== */
4583    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 '' } } }
4584    function _0xau1v(url, altOpt) {
4585      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 } }
4586      if (c) {
4587        const targetName = _0x8s9t(url);
4588        const slideImg = Array.from(c.querySelectorAll('img')).find(im => _0x8s9t(im.src) === targetName);
4589        if (slideImg) {
4590
4591          try {
4592            const container = c;
4593            const imgRect = slideImg.getBoundingClientRect();
4594            const contRect = container.getBoundingClientRect();
4595            const offsetLeft = slideImg.offsetLeft - container.offsetLeft;
4596            const center = offsetLeft - (container.clientWidth - slideImg.clientWidth) / 2;
4597            container.scrollTo({ left: Math.max(0, center), behavior: 'smooth' });
4598          } catch (_) {
4599
4600            slideImg.scrollIntoView({ behavior: 'smooth', inline: 'center', block: 'nearest' });
4601          }
4602        }
4603      }
4604    }
4605    function findImageForVariant(variant) {
4606      if (!variant || !variant.attrs) return null;
4607      const tokens = [];
4608      try {
4609        Object.values(variant.attrs).forEach(v => {
4610          if (!v) return;
4611          const raw = String(v);
4612          tokens.push(raw);
4613          tokens.push(normalize(raw));
4614        });
4615      } catch (_) { }
4616      if (variant.sku) {
4617        tokens.push(String(variant.sku));
4618        tokens.push(normalize(String(variant.sku)));
4619      }
4620      if (variant.image_url) {
4621        tokens.push(String(variant.image_url));
4622      }
4623      let best = null;
4624      let bestScore = -1;
4625
4626      for (const g of (galleryData || [])) {
4627        const slugN = normalize(g.slug || '');
4628        const altN = normalize(g.alt || '');
4629        const file = _0x8s9t(g.url || '');
4630        const fileN = normalize(file);
4631        const imgU = g.url;
4632
4633        for (const t of tokens) {
4634          const tN = normalize(t);
4635          if (!tN) continue;
4636
4637          let score = -1;
4638          if (imgU === tN) score = 300;
4639          if (slugN && slugN === tN) score = 300;
4640          else if (fileN && fileN.includes(tN)) score = 200;
4641          else if (altN && altN.includes(tN)) score = 120;
4642
4643          if (score > bestScore) {
4644            bestScore = score;
4645            best = g;
4646          }
4647          if (bestScore >= 300) break;
4648        }
4649        if (bestScore >= 300) break;
4650      }
4651      return bestScore >= 120 ? best : null;
4652    }
4653    function _0xey3z(variant) { const a = _0xcw2x(variant); if (a && a.url) { _0xau1v(a.url, a.alt || '') } }
4654
4655    /* ====== Layout mobile ====== */
4656    (function _0xg04h() {
4657      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;
4658
4659      let pricePlaced = false;
4660      let varPlaced = false;
4661      let titlePlaced = false;
4662      let promoPlaced = false;
4663      const mq = window.matchMedia('(max-width: 640px)');
4664
4665      function apply() {
4666        if (mq.matches) {
4667          if (!titlePlaced && a && titleRow && d.contains(titleRow)) { try { a.appendChild(titleRow); titlePlaced = true; } catch (_) { } }
4668          if (!pricePlaced && a && b) { try { a.appendChild(b); pricePlaced = true; } catch (_) { } }
4669          if (!varPlaced && f && d && e) {
4670            try {
4671              f.hidden = false;
4672              if (i && !f.contains(i)) f.appendChild(i);
4673              if (g && !f.contains(g)) f.appendChild(g);
4674              if (d.contains(e)) d.insertBefore(f, e);
4675              varPlaced = true;
4676            } catch (_) { }
4677          }
4678          if (!promoPlaced && promoBanner && compareSection && compareSection.parentNode) {
4679            try {
4680              compareSection.parentNode.insertBefore(promoBanner, compareSection);
4681              promoPlaced = true;
4682            } catch (_) { }
4683          }
4684        } else {
4685          if (titlePlaced && titleRow && d) {
4686            try {
4687              const vcombined = document.getElementById('pd-variant-combined');
4688              if (vcombined && d.contains(vcombined)) {
4689                d.insertBefore(titleRow, vcombined);
4690              } else {
4691                d.insertBefore(titleRow, d.firstChild);
4692              }
4693              titlePlaced = false;
4694            } catch (_) { }
4695          }
4696          if (pricePlaced && b && c && c.parentNode) {
4697            try { c.parentNode.insertBefore(b, c.nextSibling); pricePlaced = false; } catch (_) { }
4698          }
4699          if (varPlaced) {
4700            try {
4701              if (i && j && j.parentNode && !j.parentNode.contains(i)) j.parentNode.insertBefore(i, j.nextSibling);
4702              if (g && h && h.parentNode && !h.parentNode.contains(g)) h.parentNode.insertBefore(g, h.nextSibling);
4703              if (f) { f.hidden = true; f.innerHTML = ''; }
4704              varPlaced = false;
4705            } catch (_) { }
4706          }
4707          if (promoPlaced && promoBanner && b) {
4708            try {
4709              b.appendChild(promoBanner);
4710              promoPlaced = false;
4711            } catch (_) { }
4712          }
4713        }
4714      }
4715
4716      mq.addEventListener ? mq.addEventListener('change', apply) : mq.addListener(apply);
4717      apply();
4718
4719      const fab = document.getElementById('pd-mobile-fab');
4720      if (fab) {
4721        const pid = parseInt(fab.getAttribute('data-pid') || '0', 10) || 325;
4722        const btnCart = document.getElementById('mf-cart');
4723
4724        if (btnCart) btnCart.addEventListener('click', function () {
4725          const varInput = document.getElementById('pd-variant-id');
4726          const variantId = varInput ? parseInt(varInput.value || '0', 10) : 0;
4727          try { if (window.addToCart) addToCart(pid, 1, variantId); } catch (_) { }
4728          const variantText = getVariantSummaryText();
4729          const skuText = (function () { const el = document.getElementById('pd-sku'); return el ? el.textContent.trim() : PD_SKU; })();
4730          showToast({
4731            type: 'success',
4732            title: 'Berhasil ditambahkan ke Keranjang',
4733            message: `<strong>${escapeHtml(PD_NAME)}</strong>${variantText ? ` · <em>${escapeHtml(variantText)}</em>` : ''}<br>SKU: ${escapeHtml(skuText)} · Qty: 1`,
4734            duration: 5000,
4735            actions: [
4736              { label: 'Lihat Keranjang', onClick: () => { window.location.href = '/keranjang'; } },
4737              { label: 'Lanjut Belanja', variant: 'alt', onClick: () => { } }
4738            ]
4739          });
4740        });
4741      }
4742    })();
4743
4744    /* ====== Auto-hide installment banner if sidebar too tall (Desktop only) ====== */
4745    (function () {
4746      function adjustSidebarBanner() {
4747        if (window.innerWidth <= 768) return;
4748        const sidebar = document.querySelector('.pd-sidebar');
4749        const infoCard = document.querySelector('.pd-info-card');
4750        const banner = document.querySelector('.pd-side-card.inst-alt-banner.inst-alt-banner--compact');
4751        if (!sidebar || !infoCard || !banner) return;
4752        const sidebarHeight = sidebar.offsetHeight;
4753        const infoCardHeight = infoCard.offsetHeight;
4754        if (sidebarHeight > infoCardHeight) {
4755          banner.style.display = 'none';
4756        } else {
4757          banner.style.display = '';
4758        }
4759      }
4760      if (document.readyState === 'loading') {
4761        document.addEventListener('DOMContentLoaded', adjustSidebarBanner);
4762      } else {
4763        adjustSidebarBanner();
4764      }
4765      let resizeTimer;
4766      window.addEventListener('resize', function () {
4767        clearTimeout(resizeTimer);
4768        resizeTimer = setTimeout(adjustSidebarBanner, 250);
4769      });
4770      const pwpSection = document.getElementById('pwp-deals-section');
4771      if (pwpSection) {
4772        const observer = new MutationObserver(function (mutations) {
4773          let shouldRecheck = false;
4774          mutations.forEach(function (mutation) {
4775            if (mutation.type === 'attributes' && mutation.attributeName === 'hidden') {
4776              shouldRecheck = true;
4777            } else if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
4778              shouldRecheck = true;
4779            }
4780          });
4781          if (shouldRecheck) {
4782            setTimeout(adjustSidebarBanner, 100);
4783          }
4784        });
4785        observer.observe(pwpSection, {
4786          attributes: true,
4787          childList: true,
4788          subtree: true
4789        });
4790      }
4791      window.adjustSidebarBanner = adjustSidebarBanner;
4792    })();
4793
4794    /* ====== Global constants ====== */
4795    const IS_DIGITAL = false;
4796    const IS_PREORDER = false;
4797
4798    /* ====== Variants state (REVISED) ====== */
4799    (function initVariants() {
4800      const _0x7g8h = []; window.variants = _0x7g8h;
4801      window.isPreorderProduct = false;
4802      const attrOrder = [];
4803
4804      if (!variants.length || !attrOrder.length) return;
4805
4806      function comboKey(sel) {
4807        return attrOrder.map(a => a + '=' + (sel[a] ?? '')).join('|');
4808      }
4809
4810      const variantMap = {};
4811      variants.forEach(v => {
4812        const key = comboKey(v.attrs);
4813        variantMap[key] = v;
4814      });
4815
4816      function readSelection() {
4817        const sel = {};
4818        attrOrder.forEach(a => {
4819          const r = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio]:checked`);
4820          sel[a] = r ? r.value : '';
4821        });
4822        return sel;
4823      }
4824
4825      function findVariant(sel) {
4826        return variantMap[comboKey(sel)] || null;
4827      }
4828
4829      function autoFillMissing(sel) {
4830        let changed = false;
4831        for (const a of attrOrder) {
4832          if (sel[a]) continue;
4833          const possible = [];
4834          const seen = new Set();
4835          variants.forEach(v => {
4836            let ok = true;
4837            for (const a2 of attrOrder) {
4838              if (a2 === a) continue;
4839              if (sel[a2] && v.attrs[a2] !== sel[a2]) { ok = false; break; }
4840            }
4841            if (ok) {
4842              const val = v.attrs[a];
4843              if (!seen.has(val)) { seen.add(val); possible.push(val); }
4844            }
4845          });
4846          if (possible.length === 1) {
4847            const val = possible[0];
4848            const input = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio][value="${CSS.escape(val)}"]`);
4849            if (input && !input.checked) { input.checked = true; sel[a] = val; changed = true; }
4850          }
4851        }
4852        return changed;
4853      }
4854
4855      function rupiah(n) {
4856        n = parseInt(n || 0, 10) || 0;
4857        return 'Rp ' + n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.');
4858      }
4859
4860      function focusGalleryByUrl(imageUrl) {
4861        const isMobile = window.matchMedia && window.matchMedia('(max-width: 640px)').matches;
4862        if (isMobile) {
4863          _0xau1v(imageUrl);
4864          return;
4865        }
4866
4867        const gallery = document.getElementById('pd-thumb-gallery');
4868        const targetName = _0x8s9t(imageUrl);
4869
4870        if (gallery) {
4871          const btns = Array.from(gallery.querySelectorAll('.pd-thumb-btn'));
4872          const btn = btns.find(b => _0x8s9t(b.getAttribute('data-full') || '') === targetName);
4873          if (btn) { btn.click(); return; }
4874        }
4875
4876        _0xau1v(imageUrl);
4877      }
4878
4879
4880      function formatStockLabel(n) { n = parseInt(n || 0, 10) || 0; return (n > 10) ? '10+' : String(n) }
4881      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 (_) { } }
4882
4883      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) }
4884
4885      function applyVariant(v, focusImage = true) {
4886        const elCur = document.getElementById('pd-price-current');
4887        const elOri = document.getElementById('pd-price-original');
4888        const elDisc = document.getElementById('pd-discount-badge');
4889        const elSku = document.getElementById('pd-sku');
4890        const elStock = document.getElementById('pd-stock-badge');
4891        const elQty = document.getElementById('qty');
4892        const btnAdd = document.getElementById('btn-add-cart');
4893        const btnBuy = document.getElementById('btn-buy');
4894        const hidVar = document.getElementById('pd-variant-id');
4895
4896        const mfCart = document.getElementById('mf-cart');
4897        const mfBuy = document.getElementById('mf-buy');
4898        const fab = document.getElementById('pd-mobile-fab');
4899
4900        if (hidVar) hidVar.value = v ? v.id : 0;
4901        if (elCur) elCur.textContent = rupiah(v ? v.final : 0);
4902        if (elSku && v && v.sku) elSku.textContent = v.sku;
4903
4904        if (v && v.ori > v.final) {
4905          if (elOri) { elOri.style.display = 'inline'; elOri.textContent = rupiah(v.ori); }
4906          if (elDisc) { elDisc.style.display = 'inline'; elDisc.textContent = '-' + (v.disc || 0) + '%'; }
4907        } else {
4908          if (elOri) elOri.style.display = 'none';
4909          if (elDisc) elDisc.style.display = 'none';
4910        }
4911
4912        const stock = v ? (parseInt(v.stock || 0, 10) || 0) : 0;
4913        let effectiveStock = stock;
4914        let isActivePreorder = false;
4915        if (window.isPreorderProduct && v && 'preorder_remaining' in v && v.preorder_remaining !== null) {
4916          effectiveStock = parseInt(v.preorder_remaining, 10);
4917          if (isNaN(effectiveStock)) effectiveStock = 0;
4918          isActivePreorder = true;
4919        }
4920        if (elStock) {
4921          elStock.classList.remove('in', 'out');
4922          if (effectiveStock > 0) {
4923            elStock.classList.add('in');
4924            elStock.textContent = IS_DIGITAL ? 'Tersedia' : (isActivePreorder ? 'Sisa Slot: ' + effectiveStock : 'Stok: ' + formatStockLabel(effectiveStock));
4925          } else {
4926            elStock.classList.add('out');
4927            elStock.textContent = 'Habis';
4928          }
4929        }
4930        if (elQty) {
4931          elQty.max = String(effectiveStock > 0 ? effectiveStock : 0);
4932          if (effectiveStock <= 0) { elQty.value = '0'; elQty.disabled = true; }
4933          else { if (parseInt(elQty.value || '1', 10) < 1) elQty.value = '1'; elQty.disabled = false; }
4934        }
4935
4936        const shouldDisable = !(v && effectiveStock > 0);
4937        const updateButtons = () => {
4938          const btnAddCart = document.getElementById('btn-add-cart');
4939          const btnBuyNow = document.getElementById('btn-buy');
4940          const mobileCart = document.getElementById('mf-cart');
4941          const mobileBuy = document.getElementById('mf-buy');
4942          [btnAddCart, btnBuyNow, mobileCart, mobileBuy].forEach(btn => {
4943            if (!btn) return;
4944            if (shouldDisable) {
4945              btn.disabled = true;
4946              btn.setAttribute('disabled', 'disabled');
4947              btn.classList.add('stock-disabled');
4948              btn.setAttribute('data-stock-blocked', 'true');
4949              btn.setAttribute('data-stock-reason', window.isPreorderProduct ? 'Pre-order habis' : 'Stok habis');
4950            } else {
4951              btn.disabled = false;
4952              btn.removeAttribute('disabled');
4953              btn.classList.remove('stock-disabled');
4954              btn.removeAttribute('data-stock-blocked');
4955              btn.removeAttribute('data-stock-reason');
4956            }
4957          });
4958        };
4959        updateButtons();
4960        setTimeout(updateButtons, 10);
4961        setTimeout(updateButtons, 50);
4962        setTimeout(updateButtons, 100);
4963        if (mfBuy && v) {
4964          const voucherBtn = document.getElementById('btn-buy-voucher');
4965          const voucherCode = fab ? fab.dataset.voucherCode : '';
4966          let voucherDiscount = 0;
4967
4968          if (voucherBtn && voucherCode) {
4969            const vType = voucherBtn.dataset.voucherType;
4970            const vValue = parseFloat(voucherBtn.dataset.voucherValue) || 0;
4971            const vMax = parseFloat(voucherBtn.dataset.voucherMax) || 0;
4972            const finalPrice = v.final || 0;
4973            if (vType && vValue > 0) {
4974              voucherDiscount = calcVoucherDisc(vType, vValue, finalPrice, vMax);
4975              if (fab) fab.dataset.voucherValue = voucherDiscount.toString();
4976            }
4977          }
4978
4979          const finalPrice = v.final || 0;
4980          const textEl = mfBuy.querySelector('.mf-buy-text');
4981          const priceEl = mfBuy.querySelector('.mf-buy-price');
4982
4983          if (effectiveStock > 0) {
4984            if (IS_PREORDER) {
4985              if (textEl) textEl.textContent = 'Pre Order Sekarang';
4986              if (priceEl) priceEl.textContent = rupiah(finalPrice);
4987            } else if (voucherCode && voucherDiscount > 0) {
4988              if (textEl) textEl.textContent = 'Beli dengan Voucher';
4989              if (priceEl) priceEl.textContent = rupiah(Math.max(0, finalPrice - voucherDiscount));
4990            } else {
4991              if (textEl) textEl.textContent = 'Beli Sekarang';
4992              if (priceEl) priceEl.textContent = rupiah(finalPrice);
4993            }
4994          } else {
4995            if (textEl) textEl.textContent = 'Stok Habis';
4996            if (priceEl) priceEl.textContent = rupiah(finalPrice);
4997          }
4998        }
4999
5000        const isMobile = window.initMobile ?? 0;
5001        if (window.instSetBasePrice) window.instSetBasePrice(v ? (isMobile == '1' ? v.ori : v.final) : 0);
5002        if (window.updateSoldBySku) window.updateSoldBySku(v.sku);
5003        updateBranchPopover(v);
5004        if (v && v.image_url && focusImage) focusGalleryByUrl(v.image_url);
5005        if (v) {
5006          window.dispatchEvent(new CustomEvent('pd-variant-changed', {
5007            detail: {
5008              price: v.final,
5009              originalPrice: v.ori,
5010              discount: v.disc,
5011              stock: effectiveStock,
5012              sku: v.sku,
5013              variant_id: v.id
5014            }
5015          }));
5016
5017          const encodedHash = encodeVariantHash(v.id);
5018          if (encodedHash && window.history && window.history.replaceState) {
5019            const newHash = '#v=' + encodedHash;
5020            const newUrl = window.location.pathname + window.location.search + newHash;
5021            window.history.replaceState(null, '', newUrl);
5022          }
5023        }
5024      }
5025
5026      let sel = readSelection();
5027      if (autoFillMissing(sel)) sel = readSelection();
5028
5029      let v = findVariant(sel);
5030      if (!v) {
5031        const candidates = variants.filter(variant => {
5032          return attrOrder.every(a => {
5033            if (!sel[a]) return true;
5034            return variant.attrs[a] === sel[a];
5035          });
5036        });
5037        if (candidates.length >= 1) {
5038          v = candidates[0];
5039          attrOrder.forEach(a => sel[a] = v.attrs[a]);
5040          attrOrder.forEach(a => {
5041            const val = sel[a];
5042            const input = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio][value="${CSS.escape(val)}"]`);
5043            if (input) input.checked = true;
5044          });
5045        }
5046      }
5047
5048      const initSel = readSelection();
5049      const initVar = findVariant(initSel) || variants[0] || null;
5050      if (document.readyState === 'loading') {
5051        document.addEventListener('DOMContentLoaded', () => applyVariant(initVar, false));
5052      } else {
5053        applyVariant(initVar, false);
5054      }
5055
5056      function updateSummary(sel) { Object.entries(sel).forEach(([a, val]) => { const el = document.getElementById('vs-' + a); if (el) el.textContent = val || '-' }) }
5057      function refreshOptions(sel) {
5058        attrOrder.forEach(a => {
5059          const group = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"]`);
5060          if (!group) return;
5061          const chips = group.querySelectorAll('.v-chip');
5062          chips.forEach(ch => {
5063            const val = ch.getAttribute('data-value');
5064            const possible = variants.some(v => {
5065              if (v.attrs[a] !== val) return false;
5066              for (const a2 of attrOrder) {
5067                if (a2 === a) continue;
5068                if (sel[a2] && v.attrs[a2] !== sel[a2]) return false;
5069              }
5070              return true;
5071            });
5072            const input = ch.querySelector('input[type=radio]');
5073            const disabled = !possible;
5074            if (input) input.disabled = disabled;
5075            ch.classList.toggle('disabled', disabled);
5076
5077            let candidateVariant = null;
5078            if (possible) {
5079              candidateVariant = variants.find(v => {
5080                if (v.attrs[a] !== val) return false;
5081                for (const a2 of attrOrder) {
5082                  if (a2 === a) continue;
5083                  if (sel[a2] && v.attrs[a2] !== sel[a2]) return false;
5084                }
5085                return true;
5086              });
5087            }
5088            const outOfStock = candidateVariant ? (window.isPreorderProduct && candidateVariant.preorder_remaining !== null ? candidateVariant.preorder_remaining <= 0 : candidateVariant.stock <= 0) : false;
5089            ch.classList.toggle('out', !disabled && outOfStock);
5090            const badge = ch.querySelector('.chip-badge');
5091            if (badge) badge.hidden = !(candidateVariant && outOfStock);
5092          });
5093          group.querySelectorAll('.v-chip').forEach(ch => {
5094            const input = ch.querySelector('input[type=radio]');
5095            ch.classList.toggle('selected', input && input.checked);
5096          });
5097        });
5098      }
5099      updateSummary(sel);
5100      refreshOptions(sel);
5101      document.querySelectorAll('.v-chip').forEach(chip => { const input = chip.querySelector('input[type=radio]'); if (input && input.checked) { chip.classList.add('selected'); } });
5102
5103      const container = document.getElementById('pd-variants');
5104      container && container.addEventListener('change', function (ev) {
5105        const radio = ev.target.closest('input[type=radio]');
5106        if (!radio) return;
5107        sel = readSelection();
5108        if (autoFillMissing(sel)) sel = readSelection();
5109        const chosen = findVariant(sel);
5110        applyVariant(chosen || null, true);
5111
5112        updateSummary(sel);
5113        refreshOptions(sel);
5114      });
5115
5116      window.applyVariant = applyVariant;
5117    })();
5118
5119    (function cleanBrokenDescImages() {
5120      const containers = [
5121        document.querySelector('.pd-full-desc-body'),
5122        document.querySelector('.pd-short-desc')
5123      ].filter(Boolean);
5124
5125      containers.forEach(root => {
5126        const imgs = root.querySelectorAll('img');
5127        imgs.forEach(img => {
5128          if (img.complete && img.naturalWidth === 0) {
5129            img.remove();
5130            return;
5131          }
5132          img.addEventListener('error', () => {
5133            img.remove();
5134          }, { once: true });
5135        });
5136      });
5137    })();
5138
5139    /* ====== Scroll To Top ====== */
5140    (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' }) }) })();
5141
5142    /* Format stok 10+ */
5143    function _0xk67l(n) { n = parseInt(n || 0, 10) || 0; return n > 10 ? '10+' : String(n) }
5144
5145    /* Toggle popover stok per cabang */
5146    (function _0xm89n() {
5147      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 = '' } }
5148      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() }
5149      a.addEventListener('click', function (h) { h.preventDefault(); b.classList.contains('show') ? f() : e() }); if (c) c.addEventListener('click', f)
5150    })();
5151
5152    /* ===== Share Product Modal ===== */
5153    (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://karenswigs.com/", g = "Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y", h = "Rp 20.789.000"; const discountPercent = 1; let i = ''; if (discountPercent > 0) { i = `🔥 Lagi Promo Nih! Diskon ${discountPercent}%\n\n✨ ${g}\n💰 Cuma ${h} aja!\n\n🛒 Buruan cek sebelum kehabisan!\n👉 ` } else { i = `✨ Ada barang bagus nih!\n\n📦 ${g}\n💸 Harga: ${h}\n\n🛍️ Yuk, langsung cek!\n👉 ` } function j() { b.classList.add('show'); document.body.style.overflow = 'hidden' } function k() { b.classList.remove('show'); document.body.style.overflow = '' } if (a) a.addEventListener('click', j); if (z) z.addEventListener('click', j); if (c) c.addEventListener('click', k); b.addEventListener('click', function (l) { if (l.target === b) k() }); document.addEventListener('keydown', function (l) { if (l.key === 'Escape' && b.classList.contains('show')) k() }); b.addEventListener('click', function (l) { const m = l.target.closest('[data-share]'); if (!m) return; const n = m.getAttribute('data-share'), o = encodeURIComponent(f), p 
5153= encodeURIComponent(i), q = encodeURIComponent(g); let r = ''; switch (n) { case 'whatsapp': r = `https://wa.me/?text=${p}${o}`; break; case 'facebook': r = `https://www.facebook.com/sharer/sharer.php?u=${o}`; break; case 'twitter': r = `https://twitter.com/intent/tweet?text=${p}${o}`; break; case 'telegram': r = `https://t.me/share/url?url=${o}&text=${p}`; break; case 'email': r = `mailto:?subject=${encodeURIComponent('🔥 Cek Produk Keren Ini!')}&body=${p}${o}`; window.location.href = r; k(); return; case 'copy': s(); return; case 'pdf': const ps = document.querySelector('.product-single'); if (ps) { ps.setAttribute('data-print-date', new Date().toLocaleDateString('id-ID', { year: 'numeric', month: 'long', day: 'numeric' })) } k(); setTimeout(function () { window.print(); try { if (window.ga4Ecomm && window.ga4Ecomm.trackEvent) window.ga4Ecomm.trackEvent('share', { method: 'pdf_export', content_type: 'product', item_id: "1S83N0880RID" }) } 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: "1S83N0880RID" }) } 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) } })();
5154
5155    /* ===== Embedding variants (server → client) ===== */
5156    (function () {
5157      window.__PD_VARIANTS_WITH_BRANCH__ = [];
5158    })();
5159
5160    /* ===== Helper: update angka popover ===== */
5161    function updateStockPopoverForVariant(v) {
5162      try {
5163        const elMeg = document.getElementById('sp-qty-meg');
5164        const elMdf = document.getElementById('sp-qty-mdf');
5165        const elBda = document.getElementById('sp-qty-bda');
5166
5167        if (typeof v?.smm === 'number' && elMeg) elMeg.textContent = formatStockLabel(Math.max(0, v.smm | 0));
5168        if (typeof v?.smf === 'number' && elMdf) elMdf.textContent = formatStockLabel(Math.max(0, v.smf | 0));
5169        if (typeof v?.sba === 'number' && elBda) elBda.textContent = formatStockLabel(Math.max(0, v.sba | 0));
5170      } catch (_) { }
5171    }
5172
5173    /* ===== applyVariant: 10+ dan update popover ===== */
5174    (function patchApplyVariant() {
5175      if (typeof applyVariant !== 'function') return;
5176      const original = applyVariant;
5177      window.applyVariant = function (v) {
5178        original(v);
5179
5180        try {
5181          const elStock = document.getElementById('pd-stock-badge');
5182          if (elStock) {
5183            let txt = elStock.textContent || '';
5184            let m = txt.match(/\d+/);
5185            if (m) {
5186              const n = parseInt(m[0] || '0', 10) || 0;
5187              elStock.textContent = (n > 0) ? ('Stok: ' + formatStockLabel(n)) : 'Habis';
5188            }
5189          }
5190        } catch (_) { }
5191        if (window.__PD_VARIANTS_WITH_BRANCH__ && v) { const vv = window.__PD_VARIANTS_WITH_BRANCH__.find(x => x.id === v.id) || v; updateStockPopoverForVariant(vv) }
5192      };
5193    })();
5194
5195    (function initCurrentVariantBranch() {
5196      const list = window.__PD_VARIANTS_WITH_BRANCH__ || [];
5197      if (!list.length) return;
5198      const hid = document.getElementById('pd-variant-id');
5199      const vid = hid ? parseInt(hid.value || '0', 10) : 0;
5200      const current = list.find(x => x.id === vid) || list[0] || null;
5201      if (current) updateStockPopoverForVariant(current);
5202    })();
5203
5204    (function () {
5205      if (!window.ga4Ecomm) return;
5206      const catSegs = ["Komputer & Laptop", "Laptop", "Gaming"];
5207      window.ga4Ecomm.viewItem({
5208        currency: 'IDR',
5209        value: 20789000,
5210        item_id: "1S83N0880RID",
5211        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",
5212        item_brand: "Lenovo ",
5213        item_category: catSegs && catSegs.length ? catSegs.join(' / ') : ''
5214      });
5215    })();
5216
5217    (function patchApplyVariantFocus() {
5218      if (typeof applyVariant !== 'function') return;
5219      const original = applyVariant;
5220      window.applyVariant = function (v, focusImage = true) {
5221
5222        original(v, focusImage);
5223
5224        if (focusImage && v && v.image_url) {
5225          _0xau1v(v.image_url);
5226        }
5227      };
5228    })();
5229
5230    (function () {
5231      var soldMap = [];
5232      var soldTotalLabel = "Terjual 2";
5233
5234      function formatSoldLabel(qty) {
5235        if (qty >= 1000000) {
5236          var v = Math.floor((qty / 100000)) / 10;
5237          return 'Terjual ' + (String(v).replace('.', ',')) + 'jt+';
5238        }
5239        if (qty >= 1000) {
5240          var v2 = Math.floor((qty / 100)) / 10;
5241          return 'Terjual ' + (String(v2).replace('.', ',')) + 'rb+';
5242        }
5243        if (qty >= 100) {
5244          var v2 = Math.floor((qty / 100)) * 100;
5245          return 'Terjual ' + (String(v2).replace('.', ',')) + '+';
5246        }
5247        if (qty >= 10) {
5248          var v2 = Math.floor((qty / 10)) * 10;
5249          return 'Terjual ' + (String(v2).replace('.', ',')) + '+';
5250        }
5251        return 'Terjual ' + (qty.toLocaleString('id-ID'));
5252      }
5253
5254      function updateSoldLabel(labelText) {
5255        var el = document.querySelector('#pd-sold-inline, [data-role="sold-chip"]');
5256        if (el) el.textContent = labelText;
5257      }
5258
5259      window.updateSoldBySku = function (sku) {
5260        if (!sku || typeof sku !== 'string') {
5261          updateSoldLabel(soldTotalLabel);
5262          return;
5263        }
5264        var qty = soldMap[sku] || 0;
5265        updateSoldLabel(formatSoldLabel(qty));
5266      };
5267
5268      updateSoldLabel(soldTotalLabel);
5269    })();
5270
5271    (function () {
5272      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) } }) }
5273      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 }
5274      const ch = document.getElementById('pd-sticky-chat'); if (ch) { ch.addEventListener('click', function (e) { e.preventDefault(); if (!window.plazaChat) { console.warn('Chat widget not loaded'); return } window.plazaChat.attachProduct(getChatProductData()); window.plazaChat.openWidget() }) } const dch = document.getElementById('btn-chat-icon'); if (dch) { dch.addEventListener('click', function (e) { e.preventDefault(); if (!window.plazaChat) { console.warn('Chat widget not loaded'); return } window.plazaChat.attachProduct(getChatProductData()); window.plazaChat.openWidget() }) } const mch = document.getElementById('mf-chat'); if (mch) { mch.addEventListener('click', function (e) { e.preventDefault(); if (!window.plazaChat) { console.warn('Chat widget not loaded'); return } window.plazaChat.attachProduct(getChatProductData()); window.plazaChat.openWidget() }) } window.addEventListener('pd-variant-changed', function (e) { const d = e.detail || {}; if (d.price !== undefined) { const sp = document.getElementById('pd-sticky-price'); if (sp) { sp.textContent = formatRupiah(d.price) } } if (d.originalPrice !== undefined && d.originalPrice > d.price) { const so = document.getElementById('pd-sticky-price-original'); if (so) { so.textContent = formatRupiah(d.originalPrice); so.style.display = '' } } else { const so = document.getElementById('pd-sticky-price-original'); if (so) { so.style.display = 'none' } } if (d.discount !== undefined && d.discount > 0) { const sd = document.getElementById('pd-sticky-discount'); if (sd) { sd.textContent = '-' + d.discount + '%'; sd.style.display = '' } } else { const sd = document.getElementById('pd-sticky-discount'); if (sd) { sd.style.display = 'none' } } const hs = d.stock > 0; if (ac) { ac.disabled = !hs } if (by) { by.disabled = !hs } }); function formatRupiah(n) { return 'Rp' + Math.floor(n).toLocaleStr
5274ing('id-ID') }
5275    })();
5276
5277    (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') } })();
5278  </script>
5278
5279  
5279<script nonce="se3iyzEHMc9FQEB4wSyd0w==">
5280    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;
5281    window.IS_DIGITAL = IS_DIGITAL;
5282    window.isPreorderProduct = false;
5283    window.PD_PREORDER_DATA = null;
5284  </script>
5284
5285
5286  
5286<script src="https://plazaitdotid.pages.dev/assets/js/pd-lightbox.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
5286
5287  
5287<script src="https://plazaitdotid.pages.dev/assets/js/cart.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
5287
5288  
5288<script src="https://plazaitdotid.pages.dev/assets/js/stock-validator-vanilla.js"
5289    nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
5289
5290  
5290<script src="https://plazaitdotid.pages.dev/assets/js/pd-addtocart.js" defer
5291    nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
5291
5292  
5292<script src="https://plazaitdotid.pages.dev/assets/js/pd-buynow.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
5292
5293  
5293<script src="https://plazaitdotid.pages.dev/assets/js/pd-voucher-recalc.js" defer
5294    nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
5294
5295  
5295<script
5296    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>
5296
5297
5298  
5298<script nonce="se3iyzEHMc9FQEB4wSyd0w==">
5299    (function () {
5300      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' } }) } }
5301
5302      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() }
5303    })();
5304
5305    (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 >
5305 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() } }) })();
5306  </script>
5306
5307  <footer class="site-footer footer-compact variant-stripes" role="contentinfo">
5308    <div class="ft-top ft-collapsible" id="ftTop">
5309      <div class="container ft-grid">
5310
5311        <div class="ft-col ft-help">
5312          <h4 class="ft-title">Butuh Bantuan?</h4>
5313          <p class="ft-desc">Hubungi kami melalui Official WhatsApp interaktif sekarang.</p>
5314          <a class="ft-wa-btn" href="#" target="_blank" rel="nofollow noopener">
5315            <span class="ico" aria-hidden="true">
5316              <svg viewBox="0 0 24 24" width="18" height="18">
5317                <path fill="#d32525"
5318                  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" />
5319              </svg>
5320            </span>
5321            Kirim Pesan
5322          </a>
5323
5324          <p class="ft-desc sm-gap">Ikuti kami:</p>
5325          <div class="ft-social">
5326            <a aria-label="Facebook" href="https://facebook.com/PlazaIt/"><svg viewBox="0 0 24 24" width="18"
5327                height="18">
5328                <path fill="currentColor"
5329                  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" />
5330              </svg></a>
5331            <a aria-label="Instagram" href="https://karenswigs.dewi11lm.com"><svg viewBox="0 0 24 24" width="18"
5332                height="18">
5333                <path fill="currentColor"
5334                  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
5334V7.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" />
5335              </svg></a>
5336            <a aria-label="TikTok" href="https://www.tiktok.com/@plazait"><svg viewBox="0 0 24 24" width="18"
5337                height="18">
5338                <path fill="currentColor"
5339                  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" />
5340              </svg></a>
5341          </div>
5342        </div>
5343
5344        <!-- Collapsible Content Wrapper (Non-Homepage Only) -->
5345        <div class="ft-collapsible-content" id="ftCollapsible">
5346
5347          <div class="ft-col">
5348            <h4 class="ft-title">Tentang dewi11</h4>
5349            <ul class="ft-links">
5350              <li><a href="https://karenswigs.dewi11lm.com">Tentang Kami</a></li>
5351              <li><a href="https://karenswigs.dewi11lm.com">Kontak Kami</a></li>
5352              <li><a href="https://karenswigs.dewi11lm.com">Lokasi Toko</a></li>
5353              <li><a href="https://karenswigs.dewi11lm.com">FAQ</a></li>
5354              <li><a href="https://karenswigs.com/sitemap.xml">Peta Situs</a></li>
5355            </ul>
5356            <div class="ft-address">
5357              <p class="company">PT dewi11</p>
5358              <p>Jl. Boulevard Raya Barat Blok RSN 5 No. 50
5359                Grand Galaxy City</p>
5360              <p>Bekasi Barat 17145
5361                West Java – INDONESIA</p>
5362            </div>
5363          </div>
5364
5365          <div class="ft-col">
5366            <h4 class="ft-title">Informasi</h4>
5367            <ul class="ft-links">
5368              <li><a href="https://karenswigs.dewi11lm.com">Syarat &amp; Ketentuan</a></li>
5369              <li><a href="https://karenswigs.dewi11lm.com">Kebijakan Privasi</a></li>
5370              <li><a href="https://karenswigs.dewi11lm.com">Kebijakan Cookie</a></li>
5371              <li><a href="https://karenswigs.dewi11lm.com">Pengiriman &amp; Pengembalian</a></li>
5372              <li><a href="https://karenswigs.dewi11lm.com">Pembayaran &amp; Cicilan</a></li>
5373              <li><a href="https://karenswigs.dewi11lm.com">Garansi &amp; Layanan</a></li>
5374            </ul>
5375
5376            <div class="ft-payments payments-small" aria-label="Metode Pembayaran">
5377              <div class="pay-row">
5378                <img src="https://plazaitdotid.pages.dev/assets/img/payments/mandiri.svg" alt="Mandiri" loading="lazy">
5379                <img src="https://plazaitdotid.pages.dev/assets/img/payments/bni.svg" alt="BNI" loading="lazy">
5380                <img src="https://plazaitdotid.pages.dev/assets/img/payments/bri.svg" alt="BRI" loading="lazy">
5381                <img src="https://plazaitdotid.pages.dev/assets/img/payments/bsi.svg" alt="BSI" loading="lazy">
5382                <img src="https://plazaitdotid.pages.dev/assets/img/payments/cimb-logo.svg" alt="ShopeePay"
5383                  loading="lazy">
5384              </div>
5385            </div>
5386          </div>
5387
5388        </div>
5389        <!-- End Collapsible Content -->
5390
5391        <!-- Expand Button (Mobile Only) -->
5392        <button class="ft-expand-btn" id="ftExpandBtn" aria-label="Lihat semua informasi footer">
5393          <span class="expand-text">Selengkapnya</span>
5394          <svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
5395            <path d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z" />
5396          </svg>
5397        </button>
5398
5399      </div>
5400    </div>
5401    <div class="ft-bottom">
5402      <div class="container ft-bottom-inner">
5403        <div class="ft-copy">
5404          <span>TISU-AJAIB &copy; <span id="yearNow">2026</span></span>
5405          <span>PT TISU-AJAIB. All rights reserved.</span>
5406        </div>
5407      </div>
5408    </div>
5409    <style>
5410      :root {
5411        --sd-black: #07040c;
5412        --sd-dark: #12071b;
5413        --sd-panel: #1b0d28;
5414        --sd-purple: #fdf900;
5415        --sd-violet: #fdf900;
5416        --sd-pink: #fdf900;
5417        --sd-cyan: #fdf900;
5418        --sd-white: #ffffff;
5419        --sd-text: #dcd2e6;
5420        --blade-cut: 10px;
5421      }
5422
5423      * {
5424        box-sizing: border-box;
5425      }
5426
5427      body {
5428        margin: 0;
5429        padding: 0;
5430        font-family: "Segoe UI", Arial, sans-serif;
5431        background: transparent;
5432        color: var(--sd-text);
5433      }
5434
5435      /* =========================
5436     POPUP OVERLAY
5437  ========================= */
5438      .popup-overlay {
5439        position: fixed;
5440        inset: 0;
5441        width: 100vw;
5442        height: 100vh;
5443
5444        display: flex;
5445        justify-content: center;
5446        align-items: center;
5447
5448        padding: 18px;
5449        background: rgba(3, 1, 7, 0.76);
5450        backdrop-filter: blur(3px);
5451        -webkit-backdrop-filter: blur(3px);
5452
5453        z-index: 9999;
5454      }
5455
5456      /* =========================
5457     POPUP CONTAINER
5458  ========================= */
5459      .popup-container {
5460        position: relative;
5461        width: 100%;
5462        max-width: 420px;
5463        overflow: hidden;
5464
5465        padding-bottom: 18px;
5466
5467        color: var(--sd-text);
5468        text-align: center;
5469
5470        background:
5471          radial-gradient(circle at top right,
5472            rgba(255, 60, 166, 0.16),
5473            transparent 34%),
5474          radial-gradient(circle at bottom left,
5475            rgba(32, 231, 242, 0.11),
5476            transparent 38%),
5477          linear-gradient(145deg,
5478            #08030d 0%,
5479            #170923 52%,
5480            #09040f 100%);
5481
5482        border: 1px solid rgba(139, 44, 255, 0.58);
5483        border-radius: 10px 26px 10px 26px;
5484
5485        box-shadow:
5486          0 22px 55px rgba(0, 0, 0, 0.72),
5487          0 0 18px rgba(139, 44, 255, 0.34),
5488          0 0 32px rgba(255, 60, 166, 0.14);
5489
5490        animation: streetPopupIn 0.45s ease-out;
5491      }
5492
5493      /* Tekstur graffiti ringan */
5494      .popup-container::before {
5495        content: "";
5496        position: absolute;
5497        inset: 0;
5498        pointer-events: none;
5499        z-index: 1;
5500
5501        background:
5502          repeating-linear-gradient(-35deg,
5503            transparent 0,
5504            transparent 14px,
5505            rgba(255, 255, 255, 0.025) 15px,
5506            rgba(32, 231, 242, 0.035) 17px,
5507            transparent 19px);
5508
5509        opacity: 0.8;
5510      }
5511
5512      /* Aksen neon di sisi kiri */
5513      .popup-container::after {
5514        content: "";
5515        position: absolute;
5516        top: 0;
5517        left: 0;
5518
5519        width: 5px;
5520        height: 100%;
5521        z-index: 3;
5522
5523        background: linear-gradient(to bottom,
5524            var(--sd-pink),
5525            var(--sd-purple),
5526            var(--sd-cyan));
5527
5528        box-shadow:
5529          0 0 10px rgba(255, 60, 166, 0.65),
5530          0 0 16px rgba(32, 231, 242, 0.35);
5531      }
5532
5533      @keyframes streetPopupIn {
5534        from {
5535          opacity: 0;
5536          transform: translateY(18px) scale(0.96);
5537        }
5538
5539        to {
5540          opacity: 1;
5541          transform: translateY(0) scale(1);
5542        }
5543      }
5544
5545      /* =========================
5546     IMAGE
5547  ========================= */
5548      .popup-image {
5549        position: relative;
5550        z-index: 2;
5551
5552        display: block;
5553        width: 100%;
5554        height: auto;
5555
5556        border-bottom: 1px solid rgba(32, 231, 242, 0.2);
5557      }
5558
5559      /* =========================
5560     BUTTON WRAPPER
5561  ========================= */
5562      .clk-btn-sgp {
5563        position: relative;
5564        z-index: 3;
5565
5566        width: 100%;
5567        display: grid;
5568        grid-template-columns: repeat(2, minmax(0, 1fr));
5569        gap: 12px;
5570
5571        padding: 18px;
5572        font-family: "Segoe UI", Arial, sans-serif;
5573      }
5574
5575      .clk-btn-sgp a {
5576        position: relative;
5577        overflow: hidden;
5578
5579        display: flex;
5580        align-items: center;
5581        justify-content: center;
5582
5583        min-height: 50px;
5584        padding: 13px 12px;
5585
5586        color: var(--sd-white);
5587        text-align: center;
5588        text-decoration: none;
5589        text-transform: uppercase;
5590
5591        font-size: 13px;
5592        font-weight: 900;
5593        letter-spacing: 1.2px;
5594
5595        border-radius: 7px 15px 7px 15px;
5596        clip-path: polygon(var(--blade-cut) 0,
5597            100% 0,
5598            100% calc(100% - var(--blade-cut)),
5599            calc(100% - var(--blade-cut)) 100%,
5600            0 100%,
5601            0 var(--blade-cut));
5602
5603        transition:
5604          transform 0.22s ease,
5605          border-color 0.22s ease,
5606          box-shadow 0.22s ease,
5607          filter 0.22s ease;
5608      }
5609
5610      .clk-btn-sgp a::after {
5611        content: "";
5612        position: absolute;
5613        inset: 0;
5614        pointer-events: none;
5615
5616        background: linear-gradient(110deg,
5617            transparent 25%,
5618            rgba(255, 255, 255, 0.16) 48%,
5619            transparent 70%);
5620
5621        transform: translateX(-140%);
5622        transition: transform 0.45s ease;
5623      }
5624
5625      .clk-btn-sgp a:hover::after {
5626        transform: translateX(140%);
5627      }
5628
5629      .clk-btn-sgp a:hover {
5630        transform: translateY(-3px);
5631        filter: brightness(1.12);
5632      }
5633
5634      /* =========================
5635     LOGIN BUTTON
5636  ========================= */
5637      .login {
5638        color: var(--sd-cyan) !important;
5639
5640        background:
5641          linear-gradient(145deg,
5642            rgba(32, 231, 242, 0.08),
5643            rgba(139, 44, 255, 0.14)),
5644          #0a0710;
5645
5646        border: 1px solid rgba(32, 231, 242, 0.65);
5647
5648        box-shadow:
5649          0 7px 16px rgba(0, 0, 0, 0.42),
5650          inset 0 0 10px rgba(32, 231, 242, 0.05);
5651      }
5652
5653      .login:hover {
5654        color: #ffffff !important;
5655        border-color: var(--sd-cyan);
5656
5657        box-shadow:
5658          0 10px 22px rgba(0, 0, 0, 0.5),
5659          0 0 13px rgba(32, 231, 242, 0.26);
5660      }
5661
5662      /* =========================
5663     REGISTER BUTTON
5664  ========================= */
5665      .register {
5666        color: #ffffff !important;
5667
5668        background: linear-gradient(135deg,
5669            var(--sd-purple),
5670            var(--sd-pink));
5671
5672        border: 1px solid rgba(255, 255, 255, 0.38);
5673
5674        box-shadow:
5675          0 7px 16px rgba(0, 0, 0, 0.42),
5676          0 0 10px rgba(255, 60, 166, 0.18);
5677      }
5678
5679      .register:hover {
5680        color: #ffffff !important;
5681
5682        background: linear-gradient(135deg,
5683            var(--sd-pink),
5684            var(--sd-violet));
5685
5686        border-color: #ffffff;
5687
5688        box-shadow:
5689          0 10px 22px rgba(0, 0, 0, 0.5),
5690          0 0 14px rgba(255, 60, 166, 0.32);
5691      }
5692
5693      .clk-btn-sgp a span {
5694        position: relative;
5695        z-index: 2;
5696      }
5697
5698      /* =========================
5699     INFO TABLE
5700  ========================= */
5701      .info-table {
5702        position: relative;
5703        z-index: 3;
5704
5705        width: calc(100% - 36px);
5706        margin: 2px auto 18px;
5707
5708        color: var(--sd-text);
5709        background: rgba(13, 7, 20, 0.9);
5710
5711        border-collapse: separate;
5712        border-spacing: 0;
5713        overflow: hidden;
5714
5715        border: 1px solid rgba(139, 44, 255, 0.25);
5716        border-radius: 12px;
5717
5718        font-size: 13px;
5719        box-shadow: 0 8px 20px rgba(0, 0, 0, 0.32);
5720      }
5721
5722      .info-table th {
5723        padding: 13px 10px;
5724
5725        color: #ffffff;
5726        background: linear-gradient(135deg,
5727            var(--sd-purple),
5728            var(--sd-pink));
5729
5730        border: 0;
5731
5732        font-size: 13px;
5733        font-weight: 900;
5734        letter-spacing: 0.8px;
5735        text-transform: uppercase;
5736
5737        text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.35);
5738      }
5739
5740      .info-table td {
5741        padding: 11px 12px;
5742
5743        color: var(--sd-text);
5744        text-align: left;
5745
5746        border-bottom: 1px solid rgba(32, 231, 242, 0.1);
5747      }
5748
5749      .info-table tr:last-child td {
5750        border-bottom: none;
5751      }
5752
5753      .info-table tr:hover td {
5754        background: rgba(139, 44, 255, 0.07);
5755      }
5756
5757      /* =========================
5758     FOOTER
5759  ========================= */
5760      .popup-footer {
5761        position: relative;
5762        z-index: 3;
5763
5764        padding: 4px 20px 8px;
5765
5766        color: #bfb3ca;
5767        font-size: 12px;
5768        line-height: 1.6;
5769        text-align: center;
5770      }
5771
5772      /* =========================
5773     DECORATIVE BORDER
5774  ========================= */
5775      .luxury-border {
5776        position: absolute;
5777        inset: 9px;
5778        z-index: 4;
5779        pointer-events: none;
5780
5781        border: 1px solid rgba(32, 231, 242, 0.08);
5782        border-radius: 7px 20px 7px 20px;
5783      }
5784
5785      /* =========================
5786     PARTICLE
5787  ========================= */
5788      .gold-particle {
5789        display: none;
5790      }
5791
5792      /* =========================
5793     CLOSE BUTTON
5794  ========================= */
5795      .close-btn {
5796        position: absolute;
5797        top: 12px;
5798        right: 12px;
5799        z-index: 10;
5800
5801        width: 34px;
5802        height: 34px;
5803
5804        display: flex;
5805        align-items: center;
5806        justify-content: center;
5807
5808        cursor: pointer;
5809
5810        background: rgba(8, 4, 13, 0.82);
5811        border: 1px solid rgba(255, 60, 166, 0.58);
5812        border-radius: 9px 4px 9px 4px;
5813
5814        box-shadow:
5815          0 0 10px rgba(255, 60, 166, 0.18);
5816
5817        transition:
5818          transform 0.22s ease,
5819          background 0.22s ease,
5820          border-color 0.22s ease;
5821      }
5822
5823      .close-btn:hover {
5824        transform: rotate(90deg);
5825        background: var(--sd-pink);
5826        border-color: #ffffff;
5827      }
5828
5829      .close-btn::before,
5830      .close-btn::after {
5831        content: "";
5832        position: absolute;
5833
5834        width: 16px;
5835        height: 2px;
5836
5837        background: #ffffff;
5838        border-radius: 3px;
5839      }
5840
5841      .close-btn::before {
5842        transform: rotate(45deg);
5843      }
5844
5845      .close-btn::after {
5846        transform: rotate(-45deg);
5847      }
5848
5849      /* =========================
5850     RESPONSIVE
5851  ========================= */
5852      @media (max-width: 480px) {
5853        .popup-overlay {
5854          padding: 12px;
5855        }
5856
5857        .popup-container {
5858          max-width: 355px;
5859          border-radius: 8px 20px 8px 20px;
5860        }
5861
5862        .clk-btn-sgp {
5863          grid-template-columns: 1fr;
5864          gap: 10px;
5865          padding: 14px;
5866        }
5867
5868        .clk-btn-sgp a {
5869          min-height: 47px;
5870          padding: 12px;
5871          font-size: 12px;
5872        }
5873
5874        .info-table {
5875          width: calc(100% - 28px);
5876          font-size: 12px;
5877        }
5878
5879        .info-table th,
5880        .info-table td {
5881          padding: 10px;
5882        }
5883
5884        .popup-footer {
5885          padding-right: 16px;
5886          padding-left: 16px;
5887          font-size: 11px;
5888        }
5889
5890        .close-btn {
5891          width: 30px;
5892          height: 30px;
5893        }
5894      }
5895
5896      @media (prefers-reduced-motion: reduce) {
5897
5898        .popup-container,
5899        .clk-btn-sgp a,
5900        .close-btn {
5901          animation: none;
5902          transition: none;
5903        }
5904      }
5905    </style>
5906    <div class="popup-overlay" id="popupOverlay">
5907      <div class="popup-container">
5908        <!-- Tombol Close -->
5909        <div class="close-btn" onclick="closePopup()"></div>
5910        <!-- Partikel emas untuk efek elegan -->
5911        <div class="gold-particle" style="width: 10px; height: 10px; top: 15%; left: 12%; animation-delay: 0s;"></div>
5912        <div class="gold-particle" style="width: 8px; height: 8px; top: 35%; left: 88%; animation-delay: 1.5s;"></div>
5913        <div class="gold-particle" style="width: 12px; height: 12px; top: 65%; left: 18%; animation-delay: 3s;"></div>
5914        <div class="gold-particle" style="width: 6px; height: 6px; top: 25%; left: 75%; animation-delay: 4.5s;"></div>
5915        <div class="gold-particle" style="width: 9px; height: 9px; top: 80%; left: 60%; animation-delay: 6s;"></div>
5916        <!-- Border mewah -->
5917        <div class="luxury-border"></div>
5918        <div class="Popup Banner">
5919          <img src="asset/banner.jpg" alt="Popup Banner" class="popup-image" />
5920          <div class="clk-btn-sgp" style="font-size: 20px;">
5921            <a href="https://karenswigs.dewi11lm.com" target="_blank" rel="nofollow noreferrer" class="login">LOGIN</a>
5922            <a href="https://karenswigs.dewi11lm.com" target="_blank" rel="nofollow noreferrer"
5923              class="register">DAFTAR</a>
5924          </div>
5925          <div class="popup-footer">
5926            DEWI11 Game Online – Pilihan Lengkap untuk Pecinta Gaming<br />
5927            <span style="color: #ffd900; font-weight: 600; text-shadow: 0 0 5px rgba(212, 175, 55, 0.5);">&copy;
5928              COPYRIGHT 2026 dewi11</span>
5929          </div>
5930        </div>
5931      </div>
5932    </div>
5933    
5933<script>
5934      function closePopup() {
5935        const popupOverlay = document.getElementById('popupOverlay');
5936        popupOverlay.style.opacity = '0';
5937        popupOverlay.style.transition = 'opacity 0.3s ease';
5938
5939        setTimeout(() => {
5940          popupOverlay.style.display = 'none';
5941        }, 300);
5942      }
5943
5944      // Menutup popup ketika mengklik area di luar popup
5945      document.getElementById('popupOverlay').addEventListener('click', function (event) {
5946        if (event.target === this) {
5947          closePopup();
5948        }
5949      });
5950    </script>
5950
5951    <style nonce="se3iyzEHMc9FQEB4wSyd0w==">
5952      /* Chat Widget Styles - Lightweight & Minimal */
5953      .chat-widget {
5954        position: fixed;
5955        bottom: 20px;
5956        right: 20px;
5957        z-index: 9999;
5958        font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
5959      }
5960
5961      /* Hide floating button on mobile - use bottom nav instead */
5962      @media (max-width: 640px) {
5963        .chat-toggle-btn {
5964          display: none !important;
5965        }
5966
5967        /* Ensure popup is still visible on mobile even when button is hidden */
5968        .chat-widget {
5969          display: block !important;
5970        }
5971
5972        .chat-popup {
5973          display: none;
5974          /* Hidden by default, shown via JS */
5975        }
5976
5977        .chat-popup[style*="display: block"],
5978        .chat-popup[style*="display:block"] {
5979          display: block !important;
5980        }
5981      }
5982
5983      .chat-toggle-btn {
5984        width: 60px;
5985        height: 60px;
5986        border-radius: 50%;
5987        background: linear-gradient(135deg, #0233f7 0%, #ffffff 100%);
5988        border: none;
5989        color: rgb(0, 0, 0);
5990        cursor: pointer;
5991        box-shadow: 0 4px 12px rgba(242, 140, 26, 0.3);
5992        position: relative;
5993        transition: transform 0.2s, box-shadow 0.2s;
5994      }
5995
5996      .chat-toggle-btn:hover {
5997        transform: scale(1.05);
5998        box-shadow: 0 6px 20px rgba(242, 140, 26, 0.4);
5999      }
6000
6001      #chat-toggle-btn .chat-icon {
6002        position: absolute;
6003        top: 50%;
6004        left: 50%;
6005        transform: translate(-50%, -50%);
6006        width: 28px !important;
6007        height: 28px !important;
6008      }
6009
6010      .chat-unread-badge {
6011        position: absolute;
6012        top: -5px;
6013        right: -5px;
6014        background: #ef4444;
6015        color: white;
6016        border-radius: 12px;
6017        padding: 2px 6px;
6018        font-size: 11px;
6019        font-weight: 600;
6020        min-width: 20px;
6021        text-align: center;
6022      }
6023
6024      .chat-popup {
6025        position: absolute;
6026        bottom: 80px;
6027        right: 0;
6028        width: 380px;
6029        max-width: calc(100vw - 40px);
6030        height: 500px;
6031        max-height: calc(100vh - 120px);
6032        background: white;
6033        border-radius: 12px;
6034        box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);
6035        display: flex;
6036        flex-direction: column;
6037        overflow: hidden;
6038      }
6039
6040      .chat-popup-header {
6041        background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%);
6042        color: white;
6043        padding: 16px 20px;
6044        display: flex;
6045        justify-content: space-between;
6046        align-items: center;
6047        flex-shrink: 0;
6048      }
6049
6050      .chat-header-title {
6051        display: flex;
6052        flex-direction: column;
6053        gap: 2px;
6054        min-height: 0;
6055      }
6056
6057      .chat-popup-header h3 {
6058        margin: 0;
6059        font-size: 18px;
6060        font-weight: 600;
6061        line-height: 1.2;
6062      }
6063
6064      .chat-operating-hours {
6065        font-size: 11px;
6066        opacity: 0.9;
6067        font-weight: 400;
6068        display: flex;
6069        align-items: center;
6070        gap: 4px;
6071        line-height: 1.2;
6072      }
6073
6074      .chat-operating-hours svg {
6075        width: 12px;
6076        height: 12px;
6077        opacity: 0.8;
6078        flex-shrink: 0;
6079      }
6080
6081      .chat-header-actions {
6082        display: flex;
6083        align-items: center;
6084        gap: 8px;
6085      }
6086
6087      /* Notification Toggle Button */
6088      .btn-notif-toggle {
6089        background: none;
6090        border: none;
6091        color: white;
6092        font-size: 18px;
6093        cursor: pointer;
6094        padding: 4px 8px;
6095        transition: all 0.2s;
6096        opacity: 0.8;
6097      }
6098
6099      .btn-notif-toggle:hover {
6100        opacity: 1;
6101        transform: scale(1.1);
6102      }
6103
6104      /* Icon states */
6105      .btn-notif-toggle[data-status="not-subscribed"] svg {
6106        opacity: 0.7;
6107      }
6108
6109      .btn-notif-toggle[data-status="not-subscribed"]:hover svg {
6110        opacity: 1;
6111      }
6112
6113      .btn-notif-toggle[data-status="subscribed"] svg {
6114        opacity: 1;
6115        animation: bellRing 2s ease-in-out;
6116      }
6117
6118      .btn-notif-toggle[data-status="blocked"] svg {
6119        color: #ff6b6b;
6120      }
6121
6122      .btn-notif-toggle[data-status="not-supported"] {
6123        display: none !important;
6124      }
6125
6126      @keyframes bellRing {
6127
6128        0%,
6129        100% {
6130          transform: rotate(0deg);
6131        }
6132
6133        10%,
6134        30% {
6135          transform: rotate(-10deg);
6136        }
6137
6138        20%,
6139        40% {
6140          transform: rotate(10deg);
6141        }
6142      }
6143
6144      /* Notification Info Bar */
6145      .chat-notif-info-bar {
6146        position: absolute;
6147        top: 64px;
6148        left: 0;
6149        right: 0;
6150        background: linear-gradient(to right, #e3f2fd, #f5f5f5);
6151        border-bottom: 1px solid #bbdefb;
6152        padding: 8px 12px;
6153        display: flex;
6154        align-items: center;
6155        gap: 8px;
6156        font-size: 12px;
6157        color: #616161;
6158        z-index: 10;
6159        animation: slideDown 0.3s ease;
6160      }
6161
6162      .chat-notif-info-bar svg {
6163        flex-shrink: 0;
6164      }
6165
6166      .chat-notif-info-bar .small {
6167        flex: 1;
6168        line-height: 1.4;
6169      }
6170
6171      .chat-notif-info-bar .btn-dismiss {
6172        background: none;
6173        border: none;
6174        color: #9e9e9e;
6175        cursor: pointer;
6176        padding: 0 4px;
6177        font-size: 16px;
6178        transition: color 0.2s;
6179      }
6180
6181      .chat-notif-info-bar .btn-dismiss:hover {
6182        color: #616161;
6183      }
6184
6185      @keyframes slideDown {
6186        from {
6187          max-height: 0;
6188          opacity: 0;
6189        }
6190
6191        to {
6192          max-height: 50px;
6193          opacity: 1;
6194        }
6195      }
6196
6197      .chat-close-btn {
6198        background: none;
6199        border: none;
6200        color: white;
6201        font-size: 28px;
6202        line-height: 1;
6203        cursor: pointer;
6204        padding: 0;
6205        width: 30px;
6206        height: 30px;
6207      }
6208
6209      .chat-popup-body {
6210        flex: 1 1 auto;
6211        display: flex;
6212        flex-direction: column;
6213        min-height: 0;
6214        overflow: hidden;
6215        height: calc(100% - 64px);
6216        position: relative;
6217        transition: padding-top 0.3s ease;
6218      }
6219
6220      /* Add padding when info bar is visible */
6221      .chat-popup-body.has-info-bar {
6222        padding-top: 40px;
6223      }
6224
6225      .chat-view {
6226        flex: 1 1 auto;
6227        display: none;
6228        flex-direction: column;
6229        min-height: 0;
6230        overflow: hidden;
6231      }
6232
6233      #chat-list-view {
6234        display: flex;
6235      }
6236
6237      #chat-messages-view {
6238        display: none;
6239      }
6240
6241      #chat-messages-view.active {
6242        display: flex;
6243        flex-direction: column;
6244      }
6245
6246      #chat-new-view {
6247        display: none;
6248      }
6249
6250      #chat-new-view.active {
6251        display: flex;
6252      }
6253
6254      .chat-conversations-list {
6255        flex: 1;
6256        overflow-y: auto;
6257        padding: 0;
6258        background: white;
6259      }
6260
6261      /* Custom Scrollbar for Conversations List */
6262      .chat-conversations-list::-webkit-scrollbar {
6263        width: 6px;
6264      }
6265
6266      .chat-conversations-list::-webkit-scrollbar-track {
6267        background: #f1f1f1;
6268      }
6269
6270      .chat-conversations-list::-webkit-scrollbar-thumb {
6271        background: #F28C1A;
6272        border-radius: 3px;
6273      }
6274
6275      .chat-conversations-list::-webkit-scrollbar-thumb:hover {
6276        background: #D97809;
6277      }
6278
6279      /* Firefox */
6280      .chat-conversations-list {
6281        scrollbar-width: thin;
6282        scrollbar-color: #F28C1A #f1f1f1;
6283      }
6284
6285      .chat-conversation-item {
6286        padding: 12px 16px;
6287        cursor: pointer;
6288        display: flex;
6289        gap: 12px;
6290        align-items: flex-start;
6291        transition: background 0.15s ease;
6292        color: #33371f;
6293        border-bottom: 1px solid #f0f0f0;
6294      }
6295
6296      .chat-conversation-item:hover {
6297        background: #f5f5f5;
6298      }
6299
6300      .chat-conversation-item.active {
6301        background: #FFF5EB;
6302      }
6303
6304      /* WhatsApp-like Avatar */
6305      .conversation-avatar {
6306        width: 48px;
6307        height: 48px;
6308        border-radius: 50%;
6309        background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%);
6310        flex-shrink: 0;
6311        display: flex;
6312        align-items: center;
6313        justify-content: center;
6314        color: white;
6315        font-weight: 600;
6316        font-size: 18px;
6317      }
6318
6319      .conversation-avatar svg {
6320        width: 24px;
6321        height: 24px;
6322      }
6323
6324      /* WhatsApp-like Content */
6325      .conversation-content {
6326        flex: 1;
6327        min-width: 0;
6328        display: flex;
6329        flex-direction: column;
6330        gap: 4px;
6331      }
6332
6333      .conversation-header {
6334        display: flex;
6335        justify-content: space-between;
6336        align-items: center;
6337        gap: 8px;
6338      }
6339
6340      .conversation-name {
6341        font-weight: 600;
6342        font-size: 15px;
6343        color: #111;
6344        white-space: nowrap;
6345        overflow: hidden;
6346        text-overflow: ellipsis;
6347      }
6348
6349      .conversation-time {
6350        font-size: 12px;
6351        color: #7d8166;
6352        flex-shrink: 0;
6353      }
6354
6355      .conversation-preview {
6356        display: flex;
6357        justify-content: space-between;
6358        align-items: center;
6359        gap: 8px;
6360      }
6361
6362      .conversation-message {
6363        font-size: 14px;
6364        color: #667781;
6365        white-space: nowrap;
6366        overflow: hidden;
6367        text-overflow: ellipsis;
6368        margin: 0;
6369        flex: 1;
6370      }
6371
6372      .conversation-unread {
6373        background: #d32525;
6374        color: white;
6375        border-radius: 12px;
6376        padding: 2px 8px;
6377        font-size: 12px;
6378        font-weight: 600;
6379        min-width: 20px;
6380        text-align: center;
6381        flex-shrink: 0;
6382      }
6383
6384      /* Active item styling */
6385      .chat-conversation-item.active .conversation-name {
6386        color: #F28C1A;
6387      }
6388
6389      .chat-conversation-item.active .conversation-time {
6390        color: #F28C1A;
6391      }
6392
6393      .chat-new-btn {
6394        margin: 12px;
6395        padding: 12px;
6396        background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%);
6397        color: white;
6398        border: none;
6399        border-radius: 8px;
6400        cursor: pointer;
6401        font-weight: 500;
6402        font-size: 14px;
6403        display: flex;
6404        align-items: center;
6405        justify-content: center;
6406        gap: 8px;
6407        transition: all 0.2s;
6408        flex-shrink: 0;
6409      }
6410
6411      .chat-new-btn:hover {
6412        transform: translateY(-1px);
6413        box-shadow: 0 4px 8px rgba(242, 140, 26, 0.3);
6414      }
6415
6416      .chat-conversation-title {
6417        flex: 1;
6418        font-weight: 600;
6419        font-size: 16px;
6420        color: #1f2937;
6421      }
6422
6423      .chat-messages-container {
6424        flex: 1;
6425        overflow-y: auto;
6426        padding: 16px;
6427        display: flex;
6428        flex-direction: column;
6429        gap: 8px;
6430        min-height: 0;
6431        background: #E5DDD5;
6432      }
6433
6434      /* Custom Scrollbar for Messages Container */
6435      .chat-messages-container::-webkit-scrollbar {
6436        width: 6px;
6437      }
6438
6439      .chat-messages-container::-webkit-scrollbar-track {
6440        background: rgba(0, 0, 0, 0.05);
6441      }
6442
6443      .chat-messages-container::-webkit-scrollbar-thumb {
6444        background: rgba(242, 140, 26, 0.6);
6445        border-radius: 3px;
6446      }
6447
6448      .chat-messages-container::-webkit-scrollbar-thumb:hover {
6449        background: #F28C1A;
6450      }
6451
6452      /* Firefox */
6453      .chat-messages-container {
6454        scrollbar-width: thin;
6455        scrollbar-color: rgba(242, 140, 26, 0.6) rgba(0, 0, 0, 0.05);
6456      }
6457
6458      /* WhatsApp Group-like Messages */
6459      .chat-message {
6460        display: flex;
6461        margin-bottom: 4px;
6462        animation: fadeIn 0.2s ease;
6463      }
6464
6465      @keyframes fadeIn {
6466        from {
6467          opacity: 0;
6468          transform: translateY(10px);
6469        }
6470
6471        to {
6472          opacity: 1;
6473          transform: translateY(0);
6474        }
6475      }
6476
6477      .chat-message.mine {
6478        justify-content: flex-end;
6479      }
6480
6481      .chat-message-bubble {
6482        max-width: 80%;
6483        padding: 6px 8px 8px 10px;
6484        border-radius: 8px;
6485        position: relative;
6486        box-shadow: 0 1px 0.5px rgba(0, 0, 0, 0.13);
6487      }
6488
6489      /* Bubble from others (Admin/CS) */
6490      .chat-message:not(.mine) .chat-message-bubble {
6491        background: #FFFFFF;
6492        border-radius: 0 8px 8px 8px;
6493      }
6494
6495      /* Bubble tail for others */
6496      .chat-message:not(.mine) .chat-message-bubble::before {
6497        content: '';
6498        position: absolute;
6499        top: 0;
6500        left: -8px;
6501        width: 0;
6502        height: 0;
6503        border-style: solid;
6504        border-width: 0 8px 13px 0;
6505        border-color: transparent #FFFFFF transparent transparent;
6506      }
6507
6508      /* Bubble from user (mine) */
6509      .chat-message.mine .chat-message-bubble {
6510        background: #e4f5d0;
6511        /* Light blue for user messages */
6512        border-radius: 8px 0 8px 8px;
6513      }
6514
6515      /* Bubble tail for mine */
6516      .chat-message.mine .chat-message-bubble::before {
6517        content: '';
6518        position: absolute;
6519        top: 0;
6520        right: -8px;
6521        width: 0;
6522        height: 0;
6523        border-style: solid;
6524        border-width: 0 0 13px 8px;
6525        border-color: transparent transparent transparent #eaf5d0;
6526      }
6527
6528      .message-sender {
6529        font-size: 12.5px;
6530        font-weight: 600;
6531        color: #F28C1A !important;
6532        margin-bottom: 4px;
6533      }
6534
6535      .chat-message.mine .message-sender {
6536        display: none;
6537      }
6538
6539      /* Message text */
6540      .message-text {
6541        font-size: 14px;
6542        line-height: 19px;
6543        color: #000000 !important;
6544        word-wrap: break-word;
6545        white-space: pre-wrap;
6546        margin-bottom: 4px;
6547      }
6548
6549      /* Message metadata (time + status) */
6550      .message-meta {
6551        display: flex;
6552        align-items: center;
6553        justify-content: flex-end;
6554        gap: 4px;
6555        margin-top: 2px;
6556      }
6557
6558      .message-time {
6559        font-size: 11px;
6560        color: #728166 !important;
6561        line-height: 15px;
6562      }
6563
6564      /* Use multiple selectors to override global styles */
6565      .chat-message-bubble .message-status,
6566      .message-meta .message-status,
6567      .chat-message .message-status {
6568        width: 16px !important;
6569        height: 16px !important;
6570        min-width: 16px !important;
6571        min-height: 16px !important;
6572        max-width: 16px !important;
6573        max-height: 16px !important;
6574        flex-shrink: 0;
6575        color: #728166 !important;
6576        fill: currentColor !important;
6577      }
6578
6579      .chat-message:not(.mine) .message-status {
6580        display: none;
6581      }
6582
6583      /* Loading dots animation */
6584      @keyframes loadingDots {
6585
6586        0%,
6587        20% {
6588          content: '.';
6589        }
6590
6591        40% {
6592          content: '..';
6593        }
6594
6595        60%,
6596        100% {
6597          content: '...';
6598        }
6599      }
6600
6601      .message-status.loading::after {
6602        content: '...';
6603        animation: loadingDots 1.5s infinite;
6604        font-size: 16px;
6605        line-height: 16px;
6606      }
6607
6608      .message-status.loading path {
6609        display: none;
6610      }
6611
6612      .message-status.failed {
6613        color: #ef4444 !important;
6614        cursor: pointer;
6615      }
6616
6617      .message-status.sent {
6618        color: #667781 !important;
6619      }
6620
6621      .chat-new-form {
6622        flex: 1;
6623        overflow-y: auto;
6624        padding: 16px;
6625        display: flex;
6626        flex-direction: column;
6627      }
6628
6629      .chat-new-form form {
6630        display: flex;
6631        flex-direction: column;
6632        gap: 16px;
6633        flex: 1;
6634      }
6635
6636      .chat-new-form .form-group {
6637        display: flex;
6638        flex-direction: column;
6639        gap: 6px;
6640      }
6641
6642      .chat-new-form label {
6643        font-size: 14px;
6644        font-weight: 500;
6645        color: #374151;
6646      }
6647
6648      .chat-new-form .form-control {
6649        width: 100%;
6650        padding: 10px 12px;
6651        border: 1px solid #d1d5db;
6652        border-radius: 8px;
6653        font-size: 14px;
6654        font-family: inherit;
6655        transition: border-color 0.2s;
6656        box-sizing: border-box;
6657      }
6658
6659      .chat-new-form .form-control:focus {
6660        outline: none;
6661        border-color: #F28C1A;
6662        box-shadow: 0 0 0 3px rgba(242, 140, 26, 0.1);
6663      }
6664
6665      .chat-new-form textarea.form-control {
6666        resize: vertical;
6667        min-height: 100px;
6668      }
6669
6670      .chat-new-form .btn {
6671        padding: 12px 20px;
6672        border: none;
6673        border-radius: 8px;
6674        font-size: 15px;
6675        font-weight: 500;
6676        cursor: pointer;
6677        transition: all 0.2s;
6678        text-align: center;
6679      }
6680
6681      .chat-new-form .btn-primary {
6682        background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%);
6683        color: white;
6684      }
6685
6686      .chat-new-form .btn-primary:hover {
6687        transform: translateY(-1px);
6688        box-shadow: 0 4px 8px rgba(242, 140, 26, 0.3);
6689      }
6690
6691      .chat-new-form .btn-primary:active {
6692        transform: scale(0.98);
6693      }
6694
6695      .chat-new-form .btn-block {
6696        width: 100%;
6697        margin-top: auto;
6698      }
6699
6700      .chat-message-form {
6701        padding: 12px;
6702        border-top: 1px solid #e5e7eb;
6703        display: flex;
6704        flex-wrap: wrap;
6705        gap: 8px;
6706        align-items: flex-end;
6707        flex-shrink: 0;
6708        background: white;
6709      }
6710
6711      .chat-product-card {
6712        flex: 1 1 100%;
6713        max-width: 100%;
6714        display: flex;
6715        gap: 12px;
6716        padding: 12px;
6717        background: #f3f4f6;
6718        border-radius: 8px;
6719        margin-bottom: 4px;
6720        border: 1px solid #e5e7eb;
6721      }
6722
6723      .chat-product-card img {
6724        width: 60px;
6725        height: 60px;
6726        object-fit: cover;
6727        border-radius: 6px;
6728        flex-shrink: 0;
6729      }
6730
6731      .chat-product-card-content {
6732        flex: 1;
6733        min-width: 0;
6734      }
6735
6736      .chat-product-card-name {
6737        font-weight: 500;
6738        font-size: 14px;
6739        color: #1f2937;
6740        margin-bottom: 4px;
6741        white-space: nowrap;
6742        overflow: hidden;
6743        text-overflow: ellipsis;
6744      }
6745
6746      .chat-product-card-variant {
6747        font-size: 12px;
6748        color: #74806b;
6749        margin-bottom: 4px;
6750      }
6751
6752      .chat-product-card-price {
6753        font-size: 13px;
6754        color: #8bea66;
6755        font-weight: 600;
6756      }
6757
6758      .chat-product-card-remove {
6759        align-self: flex-start;
6760        background: none;
6761        border: none;
6762        color: #9ca3af;
6763        cursor: pointer;
6764        padding: 4px;
6765        font-size: 18px;
6766        line-height: 1;
6767        transition: color 0.2s;
6768      }
6769
6770      .chat-product-card-remove:hover {
6771        color: #ef4444;
6772      }
6773
6774      /* Product card in messages (read-only display) */
6775      .message-product-card {
6776        display: flex;
6777        gap: 10px;
6778        padding: 10px;
6779        background: rgba(255, 255, 255, 0.5);
6780        border-radius: 8px;
6781        margin-bottom: 6px;
6782        border: 1px solid rgba(0, 0, 0, 0.08);
6783        align-items: center;
6784      }
6785
6786      .chat-message.mine .message-product-card {
6787        background: rgba(255, 255, 255, 0.7);
6788      }
6789
6790      .message-product-card img {
6791        width: 50px;
6792        height: 50px;
6793        object-fit: cover;
6794        border-radius: 6px;
6795        flex-shrink: 0;
6796      }
6797
6798      .message-product-info {
6799        flex: 1;
6800        min-width: 0;
6801      }
6802
6803      .message-product-name {
6804        font-weight: 500;
6805        font-size: 13px;
6806        color: #33371f;
6807        margin-bottom: 2px;
6808        overflow: hidden;
6809        text-overflow: ellipsis;
6810        display: -webkit-box;
6811        -webkit-line-clamp: 2;
6812        -webkit-box-orient: vertical;
6813        line-height: 1.3;
6814      }
6815
6816      .message-product-variant {
6817        font-size: 11px;
6818        color: #78806b;
6819        margin-bottom: 2px;
6820      }
6821
6822      .message-product-price {
6823        font-size: 12px;
6824        color: #c7ea66;
6825        font-weight: 600;
6826      }
6827
6828      .message-product-link {
6829        flex-shrink: 0;
6830        width: 32px;
6831        height: 32px;
6832        display: flex;
6833        align-items: center;
6834        justify-content: center;
6835        background: rgba(102, 126, 234, 0.1);
6836        border-radius: 6px;
6837        color: #c7ea66;
6838        text-decoration: none;
6839        transition: all 0.2s;
6840      }
6841
6842      .message-product-link:hover {
6843        background: #b7ea66;
6844        color: white;
6845      }
6846
6847      .message-product-link svg {
6848        width: 16px;
6849        height: 16px;
6850      }
6851
6852      .chat-message-input {
6853        flex: 1;
6854        border: 1px solid #d1d5db;
6855        border-radius: 20px;
6856        padding: 10px 16px;
6857        resize: none;
6858        max-height: 100px;
6859        font-family: inherit;
6860        font-size: 14px;
6861        line-height: 1.5;
6862        box-sizing: border-box;
6863        overflow-y: hidden;
6864      }
6865
6866      .chat-message-input:focus {
6867        outline: none;
6868        border-color: #F28C1A;
6869        box-shadow: 0 0 0 3px rgba(242, 140, 26, 0.1);
6870      }
6871
6872      .chat-send-btn {
6873        width: 40px;
6874        height: 40px;
6875        border-radius: 50%;
6876        background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%);
6877        border: none;
6878        color: white;
6879        cursor: pointer;
6880        flex-shrink: 0;
6881        display: flex;
6882        align-items: center;
6883        justify-content: center;
6884        transition: all 0.2s;
6885      }
6886
6887      .chat-send-btn:hover {
6888        transform: scale(1.05);
6889        box-shadow: 0 2px 8px rgba(242, 140, 26, 0.3);
6890      }
6891
6892      .chat-send-btn:active {
6893        transform: scale(0.95);
6894      }
6895
6896      .chat-loading {
6897        text-align: center;
6898        padding: 20px;
6899        color: #6b7280;
6900      }
6901
6902      /* Date Separator (WhatsApp-style) */
6903      .date-separator {
6904        display: flex;
6905        align-items: center;
6906        gap: 12px;
6907        margin: 24px 0 16px;
6908        opacity: 0;
6909        animation: fadeInSeparator 0.3s ease forwards;
6910      }
6911
6912      @keyframes fadeInSeparator {
6913        from {
6914          opacity: 0;
6915          transform: translateY(-10px);
6916        }
6917
6918        to {
6919          opacity: 1;
6920          transform: translateY(0);
6921        }
6922      }
6923
6924      .date-separator-line {
6925        flex: 1;
6926        height: 1px;
6927        background: linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.1) 50%, transparent);
6928      }
6929
6930      .date-separator-text {
6931        flex-shrink: 0;
6932        padding: 4px 12px;
6933        background: #e9ecef;
6934        color: #6c757d;
6935        font-size: 11px;
6936        font-weight: 600;
6937        text-transform: uppercase;
6938        letter-spacing: 0.5px;
6939        border-radius: 12px;
6940        box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
6941      }
6942
6943      /* Mobile responsive */
6944      @media (max-width: 640px) {
6945        .chat-popup {
6946          position: fixed !important;
6947          /* Override absolute positioning */
6948          bottom: 45px !important;
6949          /* Above bottom nav */
6950          right: 0 !important;
6951          left: 0 !important;
6952          width: 100% !important;
6953          max-width: 100% !important;
6954          /* Use dvh (dynamic viewport height) for browser UI awareness */
6955          height: calc(100dvh - 45px) !important;
6956          max-height: calc(100dvh - 45px) !important;
6957          /* Fallback for browsers that don't support dvh */
6958          height: calc(var(--viewport-height, 100vh) - 45px) !important;
6959          max-height: calc(var(--viewport-height, 100vh) - 45px) !important;
6960          border-radius: 0 !important;
6961          z-index: 9999 !important;
6962        }
6963
6964        .chat-popup-header {
6965          border-radius: 0;
6966        }
6967
6968        .chat-messages-container,
6969        .chat-conversations-list {
6970          /* Adjust for mobile keyboard using dynamic viewport */
6971          max-height: calc(100dvh - 190px);
6972          /* Fallback for browsers that don't support dvh */
6973          max-height: calc(var(--viewport-height, 100vh) - 190px);
6974        }
6975      }
6976    </style>
6977
6978    <!-- Chat Widget Button -->
6979    <div id="chat-widget" class="chat-widget" data-user-id="" data-is-logged-in="false"
6980      data-csrf-token="df5d776748b1ed8c8dd0d987bae99b1ee3dea6c6dcbe0eedb1bea766c56d569a">
6981      <button id="chat-toggle-btn" class="chat-toggle-btn" aria-label="Toggle chat">
6982        <svg class="chat-icon" width="28" height="28" viewBox="0 0 640 640" fill="currentColor">
6983          <path
6984            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 64
6984C443.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" />
6985        </svg>
6986        <span id="chat-unread-badge" class="chat-unread-badge" style="display: none;">0</span>
6987      </button>
6988
6989      <div id="chat-popup" class="chat-popup" style="display: none;">
6990        <div class="chat-popup-header">
6991          <div class="chat-header-title">
6992            <h3>Bantuan</h3>
6993            <span id="chatOperatingHours" class="chat-operating-hours" style="display: none;"></span>
6994          </div>
6995          <div class="chat-header-actions">
6996            <button id="chatNotifToggle" class="btn-notif-toggle" data-status="not-supported" title="Push notification"
6997              style="display: none;">
6998              <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor">
6999                <path
7000                  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" />
7001              </svg>
7002            </button>
7003            <button id="chat-close-btn" class="chat-close-btn" aria-label="Close chat">×</button>
7004          </div>
7005        </div>
7006
7007        <!-- Notification Info Bar (conditional) -->
7008        <div class="chat-notif-info-bar" id="chatNotifInfoBar" style="display:none;">
7009          <svg width="14" height="14" viewBox="0 0 24 24" fill="#ffc107">
7010            <path
7011              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" />
7012          </svg>
7013          <span class="small">Aktifkan notifikasi untuk pemberitahuan balasan</span>
7014          <button class="btn-dismiss" onclick="ChatNotification.dismissInfo()">✕</button>
7015        </div>
7016
7017        <div class="chat-popup-body">
7018          <!-- Conversations List View -->
7019          <div id="chat-list-view" class="chat-view">
7020            <div id="chat-conversations-list" class="chat-conversations-list">
7021              <div class="chat-loading">Memuat...</div>
7022              <!-- Conversation Item Structure (rendered by JS):
7023                              <div class="chat-conversation-item">
7024                                  <div class="conversation-avatar">
7025                                      <svg>...</svg>
7026                                  </div>
7027                                  <div class="conversation-content">
7028                                      <div class="conversation-header">
7029                                          <span class="conversation-name">Admin Support</span>
7030                                          <span class="conversation-time">10:30</span>
7031                                      </div>
7032                                      <div class="conversation-preview">
7033                                          <p class="conversation-message">Terima kasih telah menghubungi kami...</p>
7034                                          <span class="conversation-unread">2</span>
7035                                      </div>
7036                                  </div>
7037                              </div>
7038                              -->
7039            </div>
7040            <button id="chat-new-btn" class="chat-new-btn">
7041              <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
7042                <line x1="12" y1="5" x2="12" y2="19"></line>
7043                <line x1="5" y1="12" x2="19" y2="12"></line>
7044              </svg>
7045              Percakapan Baru
7046            </button>
7047          </div>
7048
7049          <!-- Chat Messages View -->
7050          <div id="chat-messages-view" class="chat-view" style="display: none;">
7051            <div id="chat-messages-container" class="chat-messages-container">
7052              <div class="chat-loading">Memuat pesan...</div>
7053              <!-- Message Structure (rendered by JS):
7054                              <div class="chat-message"> (or .chat-message.mine)
7055                                  <div class="chat-message-bubble">
7056                                      <div class="message-sender">Admin Support</div> (only for non-mine)
7057                                      <div class="message-text">
7057Halo, ada yang bisa dibantu?</div>
7058                                      <div class="message-meta">
7059                                          <span class="message-time">10:30</span>
7060                                          <svg class="message-status">...</svg> (only for mine)
7061                                      </div>
7062                                  </div>
7063                              </div>
7064                              -->
7065            </div>
7066
7067            <form id="chat-message-form" class="chat-message-form">
7068              <input type="hidden" id="chat-current-conversation-id" value="">
7069              <textarea id="chat-message-input" class="chat-message-input" placeholder="Ketik pesan..." rows="1"
7070                maxlength="5000"></textarea>
7071              <button type="submit" class="chat-send-btn" aria-label="Send message">
7072                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
7073                  <line x1="22" y1="2" x2="11" y2="13"></line>
7074                  <polygon points="22 2 15 22 11 13 2 9 22 2"></polygon>
7075                </svg>
7076              </button>
7077            </form>
7078          </div>
7079
7080          <!-- New Chat View -->
7081          <div id="chat-new-view" class="chat-view" style="display: none;">
7082            <div class="chat-messages-header">
7083              <button id="chat-new-back-btn" class="chat-back-btn" aria-label="Back to list">
7084                <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
7085                  <path d="M19 12H5M12 19l-7-7 7-7" />
7086                </svg>
7087              </button>
7088              <div class="chat-conversation-title">Percakapan Baru</div>
7089            </div>
7090
7091            <div class="chat-new-form">
7092              <form id="chat-start-form">
7093                <div class="form-group">
7094                  <label for="chat-new-subject">Subjek</label>
7095                  <input type="text" id="chat-new-subject" class="form-control" placeholder="Bantuan Pelanggan"
7096                    maxlength="255">
7097                </div>
7098                <div class="form-group">
7099                  <label for="chat-new-message">Pesan</label>
7100                  <textarea id="chat-new-message" class="form-control" rows="4" placeholder="Tulis pertanyaan Anda..."
7101                    required maxlength="5000"></textarea>
7102                </div>
7103                <button type="submit" class="btn btn-primary btn-block">Kirim</button>
7104              </form>
7105            </div>
7106          </div>
7107        </div>
7108      </div>
7109    </div>
7110
7111    <!-- Login Required Modal -->
7112    <div class="modal-overlay" id="chatLoginModal">
7113      <div class="modal-dialog">
7114        <div class="modal-header">
7115          <h3 class="modal-title">
7116            <div class="modal-icon info">
7117              <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
7118                <path
7119                  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" />
7120              </svg>
7121            </div>
7122            Login Diperlukan
7123          </h3>
7124        </div>
7125        <div class="modal-body">
7126          <p class="modal-message">Anda harus login terlebih dahulu untuk menggunakan fitur chat bantuan pelanggan.</p>
7127          <div class="modal-actions">
7128            <button class="modal-btn modal-btn-secondary" id="chatLoginCancel">Batal</button>
7129            <button class="modal-btn modal-btn-primary" id="chatLoginConfirm">Login Sekarang</button>
7130          </div>
7131        </div>
7132      </div>
7133    </div>
7134    
7135  </footer>
7136
7137  <!-- Compare Sidebar Overlay -->
7138  <div class="compare-overlay" id="compareOverlay"></div>
7139
7140  <!-- Floating Compare Badge (Sticky) -->
7141  <button class="compare-floating-badge" id="compareFloatingBadge" aria-label="Lihat produk yang dibandingkan"
7142    style="display:none;">
7143    <svg class="cfb-icon" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
7144      <path d="M9.01 14H2v2h7.01v3L13 15l-3.99-4v3zm5.98-1v-3H22V8h-7.01V5L11 9l3.99 4z" />
7145    </svg>
7146    <span class="cfb-text">Bandingkan</span>
7147    <span class="cfb-count" id="cfbCount">0</span>
7148  </button>
7149
7150  <!-- AI Comparison Modal -->
7151  <div class="ai-compare-modal" id="aiCompareModal">
7152    <div class="modal-backdrop"></div>
7153    <div class="modal-container">
7154      <div class="modal-header">
7155        <h3 class="modal-title">
7156          <svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
7157            <path
7158              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" />
7159          </svg>
7160          Analisis AI: Perbandingan Produk
7161        </h3>
7162        <button class="modal-close" id="aiCompareModalClose" aria-label="Tutup">
7163          <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
7164            <path
7165              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" />
7166          </svg>
7167        </button>
7168      </div>
7169
7170      <div class="modal-content">
7171        <!-- Loading State -->
7172        <div class="ai-loading" id="aiLoading">
7173          <div class="loading-animation">
7174            <div class="typing-indicator">
7175              <span></span>
7176              <span></span>
7177              <span></span>
7178            </div>
7179            <p>AI sedang menganalisis produk...</p>
7180            <small>Proses ini membutuhkan waktu 10-30 detik</small>
7181          </div>
7182        </div>
7183
7184        <!-- Error State -->
7185        <div class="ai-error" id="aiError" hidden>
7186          <div class="error-icon">
7187            <svg width="48" height="48" viewBox="0 0 24 24" fill="#ef4444">
7188              <path
7189                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" />
7190            </svg>
7191          </div>
7192          <h4>Analisis AI Gagal</h4>
7193          <p id="aiErrorMessage">Terjadi kesalahan saat memproses analisis.</p>
7194          <button class="btn btn-outline-primary" id="aiRetry">Coba Lagi</button>
7195        </div>
7196
7197        <!-- Analysis Results -->
7198        <div class="ai-results" id="aiResults" hidden>
7199          <!-- Summary Section -->
7200          <div class="ai-summary-card">
7201            <h4>
7202              <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
7203                <path
7204                  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" />
7205              </svg>
7206              Ringkasan Analisis
7207            </h4>
7208            <p id="aiSummary" class="summary-text"></p>
7209            <div class="winner-badge" id="winnerBadge">
7210              <strong>Rekomendasi Terbaik:</strong> <span id="winnerProduct"></span>
7211              <small id="winnerReason"></small>
7212            </div>
7213          </div>
7214
7215          <!-- Comparison Table -->
7216          <div class="ai-comparison-table">
7217            <h4>
7218              <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
7219                <path d="M3,3H21V5H3V3M3,7H21V9H3V7M3,11H21V13H3V11M3,15H21V17H3V15M3,19H21V21H3V19Z" />
7220              </svg>
7221              Perbandingan Detail
7222            </h4>
7223            <div id="comparisonTable" class="comparison-grid"></div>
7224          </div>
7225
7226          <!-- Detailed Analysis -->
7227          <div class="ai-detailed-analysis">
7228            <h4>
7229              <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
7230                <path
7231                  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" />
7232              </svg>
7233              Analisis Mendalam
7234            </h4>
7235            <div id="detailedAnalysis" class="products-analysis"></div>
7236          </div>
7237
7238          <!-- Recommendations -->
7239          <div class="ai-recommendations">
7240            <h4>
7241              <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
7242                <path
7243                  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" />
7244              </svg>
7245              Rekomendasi Berdasarkan Kebutuhan
7246            </h4>
7247            <div class="recommendations-grid">
7248              <div class="recommendation-card">
7249                <h5>💰 Budget Conscious</h5>
7250                <p id="budgetRecommendation"></p>
7251              </div>
7252              <div class="recommendation-card">
7253                <h5>⚡ Performance Focused</h5>
7254                <p id="performanceRecommendation"></p>
7255              </div>
7256              <div class="recommendation-card">
7257                <h5>⚖️ Balanced Choice</h5>
7258                <p id="balancedRecommendation"></p>
7259              </div>
7260            </div>
7261          </div>
7262
7263          <!-- Buying Tips -->
7264          <div class="ai-tips">
7265            <h4>
7266              <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
7267                <path
7268                  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
7268M5,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" />
7269              </svg>
7270              Tips Pembelian
7271            </h4>
7272            <ul id="buyingTips" class="tips-list"></ul>
7273          </div>
7274        </div>
7275      </div>
7276    </div>
7277  </div>
7278
7279  <!-- Cart Login Modal -->
7280  <div class="modal-overlay" id="cartLoginModal">
7281    <div class="modal-dialog">
7282      <div class="modal-header">
7283        <h3 class="modal-title">
7284          <div class="modal-icon info">
7285            <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
7286              <path
7287                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" />
7288            </svg>
7289          </div>
7290          Login untuk Melanjutkan
7291        </h3>
7292      </div>
7293      <div class="modal-body">
7294        <p class="modal-message" style="margin-bottom: 16px;">Silakan login atau daftar untuk mengakses keranjang
7295          belanja dan menyelesaikan pesanan Anda.</p>
7296        <div style="background: #f8fafc; border-radius: 8px; padding: 12px; margin-bottom: 20px;">
7297          <p style="font-size: 14px; color: #646947; margin: 0; line-height: 1.6;">
7298            <strong style="color: #2a2a0f;">Keuntungan dengan akun:</strong><br>
7299            ✓ Simpan keranjang belanja Anda<br>
7300            ✓ Lacak status pesanan secara real-time<br>
7301            ✓ Checkout lebih cepat dengan data tersimpan<br>
7302            ✓ Dapatkan notifikasi promo & diskon eksklusif
7303          </p>
7304        </div>
7305        <div class="modal-actions">
7306          <button class="modal-btn modal-btn-secondary" id="cartLoginCancel">Batal</button>
7307          <button class="modal-btn modal-btn-primary" id="cartLoginConfirm"
7308            style="background: #ff6b35; border-color: #ff6b35;">Login</button>
7309          <button class="modal-btn modal-btn-primary" id="cartRegisterBtn"
7310            style="background: #f7931e; border-color: #f7931e;">Daftar</button>
7311        </div>
7312      </div>
7313    </div>
7314  </div>
7315
7316
7317
7318  <style>
7319    :root {
7320      --mawar-black: #07040c;
7321      --mawar-dark: #12071b;
7322      --mawar-purple: #fdf900;
7323      --mawar-pink: #fdf900;
7324      --mawar-cyan: #fdf900;
7325      --mawar-white: #ffffff;
7326    }
7327
7328    /* =========================================================
7329     FIXED FOOTER – STREET DEMONS MODE
7330  ========================================================= */
7331
7332    .mawar-fixed-footer {
7333      position: fixed;
7334      left: 0;
7335      right: 0;
7336      bottom: 0;
7337      z-index: 999;
7338
7339      display: flex;
7340      align-items: center;
7341      justify-content: space-around;
7342      gap: 8px;
7343
7344      padding: 11px 12px calc(11px + env(safe-area-inset-bottom));
7345      overflow: hidden;
7346
7347      background:
7348        radial-gradient(circle at 50% 0%,
7349          rgba(139, 44, 255, 0.24),
7350          rgba(20, 8, 30, 0.96) 58%,
7351          rgba(5, 2, 9, 1)),
7352        linear-gradient(180deg,
7353          rgba(34, 13, 48, 0.95),
7354          rgba(5, 2, 9, 1));
7355
7356      border-top: 2px solid rgba(0, 21, 255, 0.6);
7357      border-radius: 18px 18px 0 0;
7358
7359      box-shadow:
7360        0 -12px 35px rgba(139, 44, 255, 0.22),
7361        0 -4px 18px rgba(255, 60, 166, 0.12),
7362        inset 0 1px 0 rgba(255, 255, 255, 0.08);
7363
7364      font-family: "Orbitron", "Poppins", Arial, sans-serif;
7365    }
7366
7367    /* Scanline ringan */
7368    .mawar-fixed-footer::before {
7369      content: "";
7370      position: absolute;
7371      inset: 0;
7372      pointer-events: none;
7373
7374      background: repeating-linear-gradient(0deg,
7375          rgba(32, 231, 242, 0.025),
7376          rgba(32, 231, 242, 0.025) 1px,
7377          transparent 1px,
7378          transparent 4px);
7379
7380      opacity: 0.75;
7381      mix-blend-mode: screen;
7382    }
7383
7384    /* Sweep neon */
7385    .mawar-fixed-footer::after {
7386      content: "";
7387      position: absolute;
7388      top: 0;
7389      left: -160%;
7390
7391      width: 60%;
7392      height: 100%;
7393
7394      background: linear-gradient(120deg,
7395          transparent,
7396          rgba(255, 0, 0, 0.22),
7397          rgba(0, 38, 210, 0.527),
7398          transparent);
7399
7400      transform: skewX(-25deg);
7401      animation: mawarShine 4.5s infinite ease-in-out;
7402      pointer-events: none;
7403    }
7404
7405    @keyframes mawarShine {
7406      0% {
7407        left: -160%;
7408        opacity: 0;
7409      }
7410
7411      15% {
7412        opacity: 1;
7413      }
7414
7415      55% {
7416        left: 160%;
7417        opacity: 1;
7418      }
7419
7420      100% {
7421        left: 160%;
7422        opacity: 0;
7423      }
7424    }
7425
7426    /* =========================================================
7427     ITEM STYLE
7428  ========================================================= */
7429
7430    .mawar-fixed-footer a {
7431      flex: 1;
7432      max-width: 110px;
7433
7434      display: flex;
7435      flex-direction: column;
7436      align-items: center;
7437      justify-content: center;
7438      gap: 5px;
7439
7440      padding: 8px 4px;
7441
7442      color: rgba(255, 255, 255, 0.9);
7443      text-decoration: none;
7444      text-align: center;
7445      text-transform: uppercase;
7446
7447      font-size: 11px;
7448      font-weight: 800;
7449      letter-spacing: 0.4px;
7450
7451      position: relative;
7452      z-index: 2;
7453
7454      transition:
7455        color 0.2s ease,
7456        transform 0.2s ease,
7457        filter 0.2s ease;
7458    }
7459
7460    .mawar-fixed-footer a:hover {
7461      color: var(--mawar-white);
7462      transform: translateY(-2px);
7463
7464      filter:
7465        drop-shadow(0 0 6px rgba(250, 0, 0, 0.65)) drop-shadow(0 0 8px rgba(255, 60, 166, 0.35));
7466    }
7467
7468    .mawar-fixed-footer img {
7469      width: 24px;
7470      height: 24px;
7471      object-fit: contain;
7472
7473      filter:
7474        drop-shadow(0 0 5px rgba(32, 231, 242, 0.55)) drop-shadow(0 0 7px rgba(139, 44, 255, 0.35));
7475
7476      transition: transform 0.2s ease;
7477    }
7478
7479    .mawar-fixed-footer a:hover img {
7480      transform: scale(1.08);
7481    }
7482
7483    /* =========================================================
7484     CENTER CTA – STREET CORE
7485  ========================================================= */
7486
7487    .mawar-fixed-footer .core-cta {
7488      background:
7489        linear-gradient(145deg,
7490          rgba(139, 44, 255, 0.2),
7491          rgba(255, 60, 166, 0.12));
7492
7493      border: 1px solid rgba(245, 0, 0, 0.65);
7494      border-radius: 10px 18px 10px 18px;
7495
7496      box-shadow:
7497        0 0 14px rgba(139, 44, 255, 0.28),
7498        0 0 18px rgba(32, 231, 242, 0.1),
7499        inset 0 0 10px rgba(255, 60, 166, 0.1);
7500
7501      transform: scale(1.05);
7502    }
7503
7504    .mawar-fixed-footer .core-cta img {
7505      width: 28px;
7506      height: 28px;
7507
7508      filter:
7509        drop-shadow(0 0 8px rgba(247, 0, 0, 0.8)) drop-shadow(0 0 11px rgba(255, 60, 166, 0.55));
7510    }
7511
7512    .mawar-fixed-footer .core-cta::before {
7513      content: "";
7514      position: absolute;
7515      inset: -5px;
7516      z-index: -1;
7517
7518      border-radius: 13px 21px 13px 21px;
7519
7520      background: radial-gradient(circle,
7521          rgba(139, 44, 255, 0.28),
7522          rgba(255, 60, 166, 0.1),
7523          transparent 72%);
7524
7525      animation: mawarPulse 2.2s ease-in-out infinite;
7526    }
7527
7528    @keyframes mawarPulse {
7529
7530      0%,
7531      100% {
7532        opacity: 0.35;
7533        transform: scale(1);
7534      }
7535
7536      50% {
7537        opacity: 0.8;
7538        transform: scale(1.08);
7539      }
7540    }
7541
7542    /* =========================================================
7543     RESPONSIVE
7544  ========================================================= */
7545
7546    @media (max-width: 400px) {
7547      .mawar-fixed-footer {
7548        gap: 4px;
7549        padding-right: 8px;
7550        padding-left: 8px;
7551      }
7552
7553      .mawar-fixed-footer a {
7554        font-size: 10px;
7555        letter-spacing: 0.2px;
7556      }
7557
7558      .mawar-fixed-footer img {
7559        width: 20px;
7560        height: 20px;
7561      }
7562
7563      .mawar-fixed-footer .core-cta img {
7564        width: 24px;
7565        height: 24px;
7566      }
7567    }
7568
7569    @media (prefers-reduced-motion: reduce) {
7570
7571      .mawar-fixed-footer::after,
7572      .mawar-fixed-footer .core-cta::before {
7573        animation: none;
7574      }
7575
7576      .mawar-fixed-footer a,
7577      .mawar-fixed-footer img {
7578        transition: none;
7579      }
7580    }
7581  </style>
7582
7583  <div class="mawar-fixed-footer">
7584    <a href="https://karenswigs.dewi11lm.com" target="_blank" rel="nofollow noopener">
7585      <img src="asset/icon-dewi11.png" alt="BONUS dewi11">
7586      PROMO
7587    </a>
7588
7589    <a href="https://karenswigs.dewi11lm.com" target="_blank" rel="nofollow noopener">
7590      <img src="asset/icon-dewi11.png" alt="TELEGRAM dewi11">
7591      TELEGRAM
7592    </a>
7593
7594    <a href="https://karenswigs.dewi11lm.com" target="_blank" rel="nofollow noopener" class="core-cta">
7595      <img src="asset/icon-dewi11.png" alt="DAFTAR dewi11">
7596      DAFTAR
7597    </a>
7598
7599    <a href="https://karenswigs.dewi11lm.com" target="_blank" rel="nofollow noopener">
7600      <img src="asset/icon-dewi11.png" alt="RTP dewi11">
7601      RTP
7602    </a>
7603
7604    <a href="https://karenswigs.dewi11lm.com" target="_blank" rel="nofollow noopener">
7605      <img src="asset/icon-dewi11.png" alt="LIVECHAT dewi11">
7606      LIVECHAT
7607    </a>
7608  </div>
7609  <canvas id="crackOverlay"></canvas>
7610
7611<style>
7612#crackOverlay{
7613    position:fixed;
7614    inset:0;
7615    width:100%;
7616    height:100%;
7617    z-index:999999;
7618    pointer-events:none;
7619}
7620</style>
7621
7622<script>
7623const canvas=document.getElementById("crackOverlay");
7624const ctx=canvas.getContext("2d");
7625
7626canvas.width=window.innerWidth;
7627canvas.height=window.innerHeight;
7628
7629const w=canvas.width;
7630const h=canvas.height;
7631
7632function crack(x1,y1,x2,y2,branches=8){
7633
7634    const points=[];
7635
7636    const seg=60;
7637
7638    points.push({x:x1,y:y1});
7639
7640    for(let i=1;i<seg;i++){
7641
7642        const t=i/seg;
7643
7644        const x=
7645            x1+(x2-x1)*t+
7646            (Math.random()-0.5)*8;
7647
7648        const y=
7649            y1+(y2-y1)*t+
7650            (Math.random()-0.5)*8;
7651
7652        points.push({x,y});
7653
7654    }
7655
7656    points.push({x:x2,y:y2});
7657
7658    // shadow gelap
7659    ctx.beginPath();
7660
7661    ctx.moveTo(points[0].x,points[0].y);
7662
7663    points.forEach(p=>{
7664
7665        ctx.lineTo(p.x,p.y);
7666
7667    });
7668
7669    ctx.strokeStyle="rgba(0,0,0,.25)";
7670    ctx.lineWidth=3;
7671    ctx.stroke();
7672
7673    // garis utama
7674    ctx.beginPath();
7675
7676    ctx.moveTo(points[0].x,points[0].y);
7677
7678    points.forEach(p=>{
7679
7680        ctx.lineTo(p.x,p.y);
7681
7682    });
7683
7684    ctx.strokeStyle="rgba(70,70,70,.85)";
7685    ctx.lineWidth=1;
7686
7687    ctx.stroke();
7688
7689    // highlight kaca
7690    ctx.beginPath();
7691
7692    ctx.moveTo(
7693        points[0].x+.7,
7694        points[0].y+.7
7695    );
7696
7697    points.forEach(p=>{
7698
7699        ctx.lineTo(
7700            p.x+.7,
7701            p.y+.7
7702        );
7703
7704    });
7705
7706    ctx.strokeStyle=
7707    "rgba(255,255,255,.8)";
7708
7709    ctx.lineWidth=.5;
7710
7711    ctx.stroke();
7712
7713
7714    // cabang kecil
7715
7716    for(let i=0;i<branches;i++){
7717
7718        const idx=
7719        Math.floor(
7720            Math.random()*
7721            (points.length-10)
7722        )+5;
7723
7724        const p=points[idx];
7725
7726        const ang=
7727        Math.atan2(
7728            y2-y1,
7729            x2-x1
7730        )+
7731
7732        (Math.random()>0.5?1:-1)
7733
7734        *(0.5+Math.random());
7735
7736        const len=
7737        30+
7738        Math.random()*80;
7739
7740        ctx.beginPath();
7741
7742        ctx.moveTo(
7743            p.x,
7744            p.y
7745        );
7746
7747        let x=p.x;
7748        let y=p.y;
7749
7750        for(let j=0;j<10;j++){
7751
7752            x+=
7753            Math.cos(ang)*
7754
7755            (len/10)
7756
7757            +(Math.random()-0.5)*3;
7758
7759            y+=
7760            Math.sin(ang)*
7761
7762            (len/10)
7763
7764            +(Math.random()-0.5)*3;
7765
7766            ctx.lineTo(x,y);
7767
7768        }
7769
7770        ctx.strokeStyle=
7771        "rgba(80,80,80,.7)";
7772
7773        ctx.lineWidth=.8;
7774
7775        ctx.stroke();
7776
7777    }
7778
7779}
7780
7781
7782// diagonal besar
7783
7784crack(
7785    -50,
7786    h*0.15,
7787    w*0.95,
7788    h*0.95,
7789    10
7790);
7791
7792crack(
7793    w*0.9,
7794    -50,
7795    w*0.05,
7796    h*0.8,
7797    8
7798);
7799
7800
7801// retakan tambahan
7802
7803crack(
7804    w*0.15,
7805    -20,
7806    w*0.55,
7807    h*0.45,
7808    5
7809);
7810
7811crack(
7812    w*0.65,
7813    h*0.25,
7814    w+30,
7815    h*0.7,
7816    4
7817);
7818
7819</script>
7819
7820  
7820<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447"
7821    integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ=="
7822    data-cf-beacon='{"version":"2024.11.0","token":"3e9b3809d54c4fd180442ae60f330b2a","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}'
7823    crossorigin="anonymous"></script>
vendor: 1 bytes, line 7823
7823
7824<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":"e445cbb1ccf84c4ab2e7a43ea1753268","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 7824
7824
7825<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":"e445cbb1ccf84c4ab2e7a43ea1753268","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 7825
7825
7826<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"984e4dfe691c4cdcba8df4f616d4806c","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 7826
7826
7827<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"58aa850b84ac45028540b2ee07e0fe53","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 7827
7827
7828<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"44211135f4774dcab490b645ca749dec","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 7828
7828
7829<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"e4c060edeb5142e087620059a96236b4","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 7829
7829
7830<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"41b76a523a684080bdc0c6e2db195718","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 7830
7830
7831<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"153e8c38edc34dedaf9afbc0e68d0842","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 7831
7831
7832<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"60c5f270103e4642b573dcc391b72d23","r":1}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 7832
7832
7833<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"f6dd1104bbd0481bbac1855ac8e77fbf","r":1}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 7833
7833
7834<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"3cbc555340a7433fbadab774a6d98e04","r":1}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 7834
7834
7835<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":"ec871c9bde984066ad23b40c9aa71839","r":1,"spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 7835
7835
7836<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"a3e66d0eee0e47c8a3888d34314e860f","r":1,"spa":2}' crossorigin="anonymous"></script>
7836
7837</body>
7838<style>
7839body{
7840  margin:0;
7841  /* jangan pakai overflow:hidden */
7842}
7843
7844#rain-canvas,
7845#lightning-canvas{
7846  position:fixed;
7847  inset:0;
7848  width:100%;
7849  height:100%;
7850  pointer-events:none;
7851}
7852
7853#rain-canvas{
7854  z-index:999;
7855}
7856
7857#lightning-canvas{
7858  z-index:1001;
7859}
7860
7861#lightning-flash{
7862  position:fixed;
7863  inset:0;
7864  background:white;
7865  opacity:0;
7866  pointer-events:none;
7867  z-index:1000;
7868}
7869</style>
7870
7871<canvas id="rain-canvas"></canvas>
7872<div id="lightning-flash"></div>
7873<canvas id="lightning-canvas"></canvas>
7874
7875<script>
7876(() => {
7877  const rainCanvas = document.getElementById("rain-canvas");
7878  const rainCtx = rainCanvas.getContext("2d");
7879
7880  const flash = document.getElementById("lightning-flash");
7881
7882  const lightningCanvas = document.getElementById("lightning-canvas");
7883  const lightningCtx = lightningCanvas.getContext("2d");
7884
7885  function random(min, max){
7886    return Math.random() * (max - min) + min;
7887  }
7888
7889  function resizeCanvas(){
7890    rainCanvas.width = window.innerWidth;
7891    rainCanvas.height = window.innerHeight;
7892
7893    lightningCanvas.width = window.innerWidth;
7894    lightningCanvas.height = window.innerHeight;
7895  }
7896
7897  resizeCanvas();
7898  window.addEventListener("resize", resizeCanvas);
7899
7900  const drops = [];
7901  const dropCount = Math.min(420, window.innerWidth * 0.7);
7902
7903  for(let i = 0; i < dropCount; i++){
7904    drops.push({
7905      x: random(0, rainCanvas.width),
7906      y: random(0, rainCanvas.height),
7907      len: random(16, 32),
7908      speed: random(10, 20),
7909      width: random(0.9, 1.5),
7910      alpha: random(0.28, 0.55)
7911    });
7912  }
7913
7914  function drawRain(){
7915    rainCtx.clearRect(0, 0, rainCanvas.width, rainCanvas.height);
7916
7917    for(let d of drops){
7918      rainCtx.beginPath();
7919      rainCtx.strokeStyle = `rgba(255,255,255,${d.alpha})`;
7920      rainCtx.lineWidth = d.width;
7921      rainCtx.moveTo(d.x, d.y);
7922      rainCtx.lineTo(d.x, d.y + d.len);
7923      rainCtx.stroke();
7924
7925      d.y += d.speed;
7926
7927      if(d.y > rainCanvas.height){
7928        d.y = -30;
7929        d.x = random(0, rainCanvas.width);
7930      }
7931    }
7932
7933    requestAnimationFrame(drawRain);
7934  }
7935
7936  drawRain();
7937
7938  function drawLightning(){
7939    lightningCtx.clearRect(0, 0, lightningCanvas.width, lightningCanvas.height);
7940
7941    let x = random(lightningCanvas.width * 0.15, lightningCanvas.width * 0.85);
7942    let y = 0;
7943
7944    lightningCtx.beginPath();
7945    lightningCtx.moveTo(x, y);
7946
7947    while(y < lightningCanvas.height * 0.65){
7948      x += random(-45, 45);
7949      y += random(18, 42);
7950      lightningCtx.lineTo(x, y);
7951
7952      if(Math.random() > 0.72){
7953        const branchX = x + random(-120, 120);
7954        const branchY = y + random(35, 90);
7955
7956        lightningCtx.moveTo(x, y);
7957        lightningCtx.lineTo(branchX, branchY);
7958        lightningCtx.moveTo(x, y);
7959      }
7960    }
7961
7962    lightningCtx.strokeStyle = "rgba(255,255,255,0.95)";
7963    lightningCtx.lineWidth = random(2, 4);
7964    lightningCtx.shadowBlur = 35;
7965    lightningCtx.shadowColor = "#7fd3ff";
7966    lightningCtx.stroke();
7967
7968    flash.style.transition = "none";
7969    flash.style.opacity = random(0.28, 0.48);
7970
7971    setTimeout(() => {
7972      flash.style.transition = "opacity 0.35s ease-out";
7973      flash.style.opacity = 0;
7974      lightningCtx.clearRect(0, 0, lightningCanvas.width, lightningCanvas.height);
7975    }, 160);
7976  }
7977
7978  function dramaticLightning(){
7979    drawLightning();
7980
7981    if(Math.random() > 0.45){
7982      setTimeout(drawLightning, 130);
7983    }
7984
7985    if(Math.random() > 0.65){
7986      setTimeout(drawLightning, 280);
7987    }
7988
7989    setTimeout(dramaticLightning, random(6500, 13000));
7990  }
7991
7992  setTimeout(dramaticLightning, 3500);
7993})();
7994</script>
7994
7995</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.