PageSourceSearch

https://ecole-decouverte.com/

html ecole-decouverte.com collected 2026-10-09 23:36:37 UTC 257,457 bytes, 4,694 lines download raw bytes

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