PageSourceSearch

https://bbni4dabsen.com/home

html bbni4dabsen.com collected 2026-10-09 22:41:20 UTC 245,858 bytes, 5,625 lines download raw bytes

1<!doctype html>
2<html lang="id">
3  <head>
4    <meta charset="utf-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
6    <title>BBNI4D - Link Alternatif Resmi Slot Online Mudah Masuk Depo Cepat 2026</title>    
7    <link rel="icon" type="image/png" href="/favicon.png">
8    
9    <meta name="description" content="BBNi4D menyediakan link alternatif resmi untuk permainan slot online yang mudah diakses kapapun dan dimanapun kamu berada.">
10<meta name="robots" content="index, follow">
11<meta name="language" content="id">
12<meta name="geo.region" content="ID">
13<meta name="geo.country" content="Indonesia">
14
15<meta name="author" content="BBNI4D Official">
16<meta name="publisher" content="BBNI4D">
17
18<link rel="canonical" href="https://bbni4dabsen.com/">
19<link rel="amphtml" href="https://bbni4dyoung.com/">
20<link rel="alternate" hreflang="id-id" href="https://bbni4dyoung.com/"/>
21<link rel="alternate" href="https://bbni4dyoung.com/"/>
22<link rel="alternate" hreflang="id" href="https://bbni4dyoung.com"/>
23<link rel="alternate" hreflang="en" href="https://bbni4dyoung.com/"/>
24<link rel="alternate" hreflang="x-default" href="https://bbni4dyoung.com/"/>
25
26<link rel="icon" type="image/png" href="/favicon.png">
27<link rel="apple-touch-icon" href="/favicon.png">
28<!-- Open Graph -->
29<meta property="og:type" content="website">
30<meta property="og:locale" content="id_ID">
31<meta property="og:site_name" content="BBNI4D">
32<meta property="og:title" content="BBNI4D - Link Alternatif Resmi Slot Online Mudah Masuk Depo Cepat 2026 ">
33<meta property="og:description" content="BBNi4D menyediakan link alternatif resmi untuk permainan slot online yang mudah diakses kapapun dan dimanapun kamu berada.">
34<meta property="og:url" content="https://bbni4dabsen.com/">
35<meta property="og:image" content="https://bbni4dabsen.com/favicon.png">
36<meta property="og:image:width" content="512">
37<meta property="og:image:height" content="512">
38
39<!-- Twitter Card -->
40<meta name="twitter:card" content="summary_large_image">
41<meta name="twitter:title" content="BBNI4D - Link Alternatif Resmi Slot Online Mudah Masuk Depo Cepat 2026 ">
42<meta name="twitter:description" content="BBNi4D menyediakan link alternatif resmi untuk permainan slot online yang mudah diakses kapapun dan dimanapun kamu berada.">
43<meta name="twitter:image" content="https://bbni4dabsen.com/favicon.png">
44
45<!-- Theme -->
46<meta name="theme-color" content="#ED6530">
47<meta name="msapplication-TileColor" content="#286A78">
vendor: 69 bytes, lines 47-50
47
48
49
50<script async src="https://www.googletagmanager.com/gtag/js?id=
50G-BN2CTLQ453
vendor: 13 bytes, line 50
50"></script>
51<script>
52  
vendor: 136 bytes, lines 52-55
52window.dataLayer = window.dataLayer || [];
53  function gtag(){dataLayer.push(arguments);}
54  gtag('js', new Date());
55  gtag('config', '
55G-BN2CTLQ453
vendor: 5 bytes, line 55
55');
56</script>
56
57
58<meta name="google-site-verification" content="bdUa3qjvGexrYypQ_oL0Kxd6Qiz924CEm93y4EaLMVo">
59<meta name="google-site-verification" content="khh4z5LeuCvRZzjnhVh4bOz_XXioNBnZJmotbRxsB5A">
60<meta name="google-site-verification" content="aweSHAarAF6QYxkEFC7_se5k8OvP1oeZE_GrDIrPfhw">
61<meta name="google-site-verification" content="aQ2Q7QqHw11_7p4cJ4HK3c2XquuQFW2xnIA3o3p6mz8" />
62<meta name="google-site-verification" content="whrUD2vihU674aLGfF8f3EalseUcL8YttMsDJXO13Kk" />
63
64<meta name="dmca-site-verification" content="R3lnbFRNWWZWK0F2anZwUktRZVJOdz090">
65<meta name="dmca-site-verification" content="Rm04T0U4RlUxNXhHM0FDZUprQUNqZz090">
vendor: 80 bytes, lines 65-69
65
66
67<noscript>
68  <iframe
69    src="https://www.googletagmanager.com/ns.html?id=
69GTM-M5WJX4DN
vendor: 107 bytes, lines 69-75
69"
70    height="0"
71    width="0"
72    style="display:none;visibility:hidden">
73  </iframe>
74</noscript>
75
76<script type="application/ld+json">
77{
78  "@context": "https://schema.org",
79  "@graph": [
80    {
81      "@type": "Organization",
82      "@id": "https://bbni4dabsen.com/#organization",
83      "name": "BBNI4D",
84      "alternateName": "BBNI4D Official",
85      "url": "https://bbni4dabsen.com/",
86      "logo": {
87        "@type": "ImageObject",
88        "@id": "https://bbni4dabsen.com/#logo",
89        "url": "https://bbni4dabsen.com/images/logoweb.png",
90        "contentUrl": "https://bbni4dabsen.com/images/logoweb.png",
91        "caption": "BBNI4D Official Logo"
92      },
93      "image": {
94        "@id": "https://bbni4dabsen.com/#logo"
95      },
96      "sameAs": [
97        "https://www.youtube.com/@BBNI4D-Slot",
98        "https://www.instagram.com/bbni4d.slot/",
99        "https://x.com/BBNI4Dslot"
100      ],
101      "contactPoint": [
102        {
103          "@type": "ContactPoint",
104          "contactType": "customer service",
105          "telephone": "+62-822-1128-1147",
106          "areaServed": "ID",
107          "availableLanguage": [
108            "Indonesian",
109            "id"
110          ]
111        }
112      ],
113      "address": {
114        "@type": "PostalAddress",
115        "addressCountry": "ID"
116      }
117    },
118    {
119      "@type": "WebSite",
120      "@id": "https://bbni4dabsen.com/#website",
121      "url": "https://bbni4dabsen.com/",
122      "name": "BBNI4D",
123      "alternateName": "BBNI4D Link Alternatif",
124      "publisher": {
125        "@id": "https://bbni4dabsen.com/#organization"
126      },
127      "inLanguage": "id-ID",
128      "potentialAction": {
129        "@type": "SearchAction",
130        "target": "https://bbni4dabsen.com/?s={search_term_string}",
131        "query-input": "required name=search_term_string"
132      }
133    },
134    {
135      "@type": "WebPage",
136      "@id": "https://bbni4dabsen.com/#webpage",
137      "url": "https://bbni4dabsen.com/",
138      "name": "BBNI4D - Link Alternatif Resmi Slot Online Mudah Masuk Depo Cepat 2026",
139      "description": "BBNi4D menyediakan link alternatif resmi untuk permainan slot online yang mudah diakses kapapun dan dimanapun kamu berada.",
140      "isPartOf": {
141        "@id": "https://bbni4dabsen.com/#website"
142      },
143      "about": {
144        "@id": "https://bbni4dabsen.com/#organization"
145      },
146      "primaryImageOfPage": {
147        "@id": "https://bbni4dabsen.com/#primaryimage"
148      },
149      "breadcrumb": {
150        "@id": "https://bbni4dabsen.com/#breadcrumb"
151      },
152      "inLanguage": "id-ID",
153      "datePublished": "2025-11-13T11:00:00+07:00",
154      "dateModified": "2025-11-13T11:00:00+07:00"
155    },
156    {
157      "@type": "ImageObject",
158      "@id": "https://bbni4dabsen.com/#primaryimage",
159      "url": "https://bbni4dabsen.com/favicon.png",
160      "contentUrl": "https://bbni4dabsen.com/favicon.png",
161      "width": 512,
162      "height": 512,
163      "caption": "BBNI4D - Link Alternatif Resmi"
164    },
165    {
166      "@type": "BreadcrumbList",
167      "@id": "https://bbni4dabsen.com/#breadcrumb",
168      "itemListElement": [
169        {
170          "@type": "ListItem",
171          "position": 1,
172          "name": "Home",
173          "item": "https://bbni4dabsen.com/"
174        },
175        {
176          "@type": "ListItem",
177          "position": 2,
178          "name": "BBNI4D Link Alternatif Resmi",
179          "item": "https://bbni4dabsen.com/"
180        }
181      ]
182    },
183    {
184      "@type": "Article",
185      "@id": "https://bbni4dabsen.com/#article",
186      "mainEntityOfPage": {
187        "@id": "https://bbni4dabsen.com/#webpage"
188      },
189      "headline": "BBNI4D - Link Alternatif Resmi Slot Online Mudah Masuk Depo Cepat 2026",
190      "alternativeHeadline": "BBNI4D Link Alternatif Resmi Mudah Masuk dan Depo Cepat",
191      "description": "BBNi4D menyediakan link alternatif resmi untuk permainan slot online yang mudah diakses kapapun dan dimanapun kamu berada.",
192      "image": [
193        "https://bbni4dabsen.com/images/upload-MobileSlides-20251008093015.jpg",
194        "https://bbni4dabsen.com/images/upload-MobileSlides-20251008093039.jpg",
195        "https://bbni4dabsen.com/images/upload-MobileSlides-20251008093101.jpg",
196        "https://bbni4dabsen.com/favicon.png"
197      ],
198      "author": {
199        "@type": "Organization",
200        "name": "BBNI4D Official",
201        "url": "https://bbni4dabsen.com/"
202      },
203      "publisher": {
204        "@id": "https://bbni4dabsen.com/#organization"
205      },
206      "datePublished": "2025-11-13T11:00:00+07:00",
207      "dateModified": "2025-11-13T11:00:00+07:00",
208      "inLanguage": "id-ID",
209      "keywords": [
210        "BBNI4D",
211        "BBNI4D login",
212        "BBNI4D link alternatif",
213        "BBNI4D resmi",
214        "link alternatif BBNI4D",
215        "slot online",
216        "depo cepat",
217        "situs mudah masuk 2026"
218      ],
219      "articleSection": [
220        "Link Alternatif",
221        "Login",
222        "Deposit Cepat",
223        "Customer Service",
224        "Keamanan"
225      ],
226      "about": [
227        {
228          "@type": "Thing",
229          "name": "BBNI4D"
230        },
231        {
232          "@type": "Thing",
233          "name": "Link Alternatif"
234        },
235        {
236          "@type": "Thing",
237          "name": "Slot Online"
238        },
239        {
240          "@type": "Thing",
241          "name": "Deposit Cepat"
242        }
243      ],
244      "mentions": [
245        {
246          "@type": "Thing",
247          "name": "Login Mudah"
248        },
249        {
250          "@type": "Thing",
251          "name": "Server Stabil"
252        },
253        {
254          "@type": "Thing",
255          "name": "Customer Service 24 Jam"
256        },
257        {
258          "@type": "Thing",
259          "name": "Transaksi Praktis"
260        }
261      ]
262    },
263    {
264      "@type": "FAQPage",
265      "@id": "https://bbni4dabsen.com/#faq",
266      "mainEntity": [
267        {
268          "@type": "Question",
269          "name": "Apa itu BBNI4D?",
270          "acceptedAnswer": {
271            "@type": "Answer",
272            "text": "BBNI4D adalah platform yang menyediakan link alternatif resmi dengan akses cepat, sistem stabil, tampilan modern, dan layanan pelanggan 24 jam."
273          }
274        },
275        {
276          "@type": "Question",
277          "name": "Apa keunggulan link alternatif BBNI4D?",
278          "acceptedAnswer": {
279            "@type": "Answer",
280            "text": "Link alternatif BBNI4D membantu pengguna tetap dapat mengakses website dengan mudah ketika domain utama mengalami kendala teknis."
281          }
282        },
283        {
284          "@type": "Question",
285          "name": "Apakah BBNI4D bisa diakses lewat HP?",
286          "acceptedAnswer": {
287            "@type": "Answer",
288            "text": "Ya, BBNI4D dapat diakses melalui Android, iPhone, tablet, laptop, dan komputer dengan tampilan yang responsif."
289          }
290        },
291        {
292          "@type": "Question",
293          "name": "Apakah layanan pelanggan BBNI4D tersedia 24 jam?",
294          "acceptedAnswer": {
295            "@type": "Answer",
296            "text": "Ya, layanan pelanggan BBNI4D tersedia 24 jam untuk membantu informasi login, link alternatif, transaksi, dan kendala teknis."
297          }
298        },
299        {
300          "@type": "Question",
301          "name": "Bagaimana cara menggunakan link alternatif BBNI4D dengan aman?",
302          "acceptedAnswer": {
303            "@type": "Answer",
304            "text": "Gunakan link resmi, jangan membagikan data akun, gunakan password kuat, dan pastikan perangkat aman dari virus atau malware."
305          }
306        }
307      ]
308    },
309    {
310      "@type": "OfferCatalog",
311      "@id": "https://bbni4dabsen.com/#services",
312      "name": "Layanan BBNI4D",
313      "itemListElement": [
314        {
315          "@type": "Offer",
316          "name": "Link Alternatif Resmi",
317          "description": "Akses resmi BBNI4D yang mudah digunakan dan diperbarui secara berkala."
318        },
319        {
320          "@type": "Offer",
321          "name": "Login Mudah",
322          "description": "Sistem login praktis dengan tampilan yang responsif di berbagai perangkat."
323        },
324        {
325          "@type": "Offer",
326          "name": "Deposit Cepat",
327          "description": "Proses transaksi yang praktis dengan konfirmasi lebih cepat."
328        },
329        {
330          "@type": "Offer",
331          "name": "Customer Service 24 Jam",
332          "description": "Layanan bantuan pengguna tersedia setiap hari selama 24 jam."
333        }
334      ]
335    },
336    {
337      "@type": "SiteNavigationElement",
338      "@id": "https://bbni4dabsen.com/#navigation",
339      "name": [
340        "INFO",
341        "POINT",
342        "GROUP",
343        "REPORT",
344        "MESSENGER",
345        "WHATSAPP",
346        "TELEGRAM"
347      ],
348      "url": [
349        "https://t.ly/rtpbbni4d",
350        "https://bkbmindah.com/bkbmpoint",
351        "https://t.me/bkbmgroupjp/",
352        "https://docs.google.com/forms/d/e/1FAIpQLSdoGqUDrZ88dc7JtyltalKbt-iE4lehMTTwsBJSuMm7PQ5oEA/viewform?usp=sf_link",
353        "https://www.messenger.com/t/789991120859719",
354        "http://wa.me/6287768122325",
355        "https://t.me/vivirealbkb"
356      ]
357    }
358  ]
359}
360<!-- Meta Pixel Code -->
361<script>
vendor: 408 bytes, lines 361-370
361
362!function(f,b,e,v,n,t,s)
363{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
364n.callMethod.apply(n,arguments):n.queue.push(arguments)};
365if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
366n.queue=[];t=b.createElement(e);t.async=!0;
367t.src=v;s=b.getElementsByTagName(e)[0];
368s.parentNode.insertBefore(t,s)}(window, document,'script',
369'https://connect.facebook.net/en_US/fbevents.js');
370fbq('init', '
3701627643512416962
vendor: 32 bytes, lines 370-371
370');
371fbq('track', 'PageView');
372</script>
372
373<noscript><img height="1" width="1" style="display:none"
374src="https://www.facebook.com/tr?id=1627643512416962&ev=PageView&noscript=1"
375/></noscript>
376<!-- End Meta Pixel Code -->
377
378<!-- Meta Pixel Code -->
379<script>
vendor: 408 bytes, lines 379-388
379
380!function(f,b,e,v,n,t,s)
381{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
382n.callMethod.apply(n,arguments):n.queue.push(arguments)};
383if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
384n.queue=[];t=b.createElement(e);t.async=!0;
385t.src=v;s=b.getElementsByTagName(e)[0];
386s.parentNode.insertBefore(t,s)}(window, document,'script',
387'https://connect.facebook.net/en_US/fbevents.js');
388fbq('init', '
3881098126932587541
vendor: 32 bytes, lines 388-389
388');
389fbq('track', 'PageView');
390</script>
390
391<noscript><img height="1" width="1" style="display:none"
392src="https://www.facebook.com/tr?id=1098126932587541&ev=PageView&noscript=1"
393/></noscript>
394<!-- End Meta Pixel Code -->
395
396<!-- Meta Pixel Code -->
397<script>
vendor: 408 bytes, lines 397-406
397
398!function(f,b,e,v,n,t,s)
399{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
400n.callMethod.apply(n,arguments):n.queue.push(arguments)};
401if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
402n.queue=[];t=b.createElement(e);t.async=!0;
403t.src=v;s=b.getElementsByTagName(e)[0];
404s.parentNode.insertBefore(t,s)}(window, document,'script',
405'https://connect.facebook.net/en_US/fbevents.js');
406fbq('init', '
4061704980757388455
vendor: 32 bytes, lines 406-407
406');
407fbq('track', 'PageView');
408</script>
408
409<noscript><img height="1" width="1" style="display:none"
410src="https://www.facebook.com/tr?id=1704980757388455&ev=PageView&noscript=1"
411/></noscript>
412<!-- End Meta Pixel Code -->
413
414<!-- Meta Pixel Code -->
415<script>
vendor: 408 bytes, lines 415-424
415
416!function(f,b,e,v,n,t,s)
417{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
418n.callMethod.apply(n,arguments):n.queue.push(arguments)};
419if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
420n.queue=[];t=b.createElement(e);t.async=!0;
421t.src=v;s=b.getElementsByTagName(e)[0];
422s.parentNode.insertBefore(t,s)}(window, document,'script',
423'https://connect.facebook.net/en_US/fbevents.js');
424fbq('init', '
4241064370259783264
vendor: 32 bytes, lines 424-425
424');
425fbq('track', 'PageView');
426</script>
426
427<noscript><img height="1" width="1" style="display:none"
428src="https://www.facebook.com/tr?id=1064370259783264&ev=PageView&noscript=1"
429/></noscript>
430<!-- End Meta Pixel Code -->
431
432<!-- Meta Pixel Code -->
433<script>
vendor: 408 bytes, lines 433-442
433
434!function(f,b,e,v,n,t,s)
435{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
436n.callMethod.apply(n,arguments):n.queue.push(arguments)};
437if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
438n.queue=[];t=b.createElement(e);t.async=!0;
439t.src=v;s=b.getElementsByTagName(e)[0];
440s.parentNode.insertBefore(t,s)}(window, document,'script',
441'https://connect.facebook.net/en_US/fbevents.js');
442fbq('init', '
4421429186538682157
vendor: 32 bytes, lines 442-443
442');
443fbq('track', 'PageView');
444</script>
444
445<noscript><img height="1" width="1" style="display:none"
446src="https://www.facebook.com/tr?id=1429186538682157&ev=PageView&noscript=1"
447/></noscript>
448<!-- End Meta Pixel Code -->
449
450<!-- Meta Pixel Code -->
451<script>
vendor: 408 bytes, lines 451-460
451
452!function(f,b,e,v,n,t,s)
453{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
454n.callMethod.apply(n,arguments):n.queue.push(arguments)};
455if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
456n.queue=[];t=b.createElement(e);t.async=!0;
457t.src=v;s=b.getElementsByTagName(e)[0];
458s.parentNode.insertBefore(t,s)}(window, document,'script',
459'https://connect.facebook.net/en_US/fbevents.js');
460fbq('init', '
4601112048771321103
vendor: 32 bytes, lines 460-461
460');
461fbq('track', 'PageView');
462</script>
462
463<noscript><img height="1" width="1" style="display:none"
464src="https://www.facebook.com/tr?id=1112048771321103&ev=PageView&noscript=1"
465/></noscript>
466<!-- End Meta Pixel Code -->
467
468<!-- Meta Pixel Code -->
469<script>
vendor: 408 bytes, lines 469-478
469
470!function(f,b,e,v,n,t,s)
471{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
472n.callMethod.apply(n,arguments):n.queue.push(arguments)};
473if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
474n.queue=[];t=b.createElement(e);t.async=!0;
475t.src=v;s=b.getElementsByTagName(e)[0];
476s.parentNode.insertBefore(t,s)}(window, document,'script',
477'https://connect.facebook.net/en_US/fbevents.js');
478fbq('init', '
4781414675310108106
vendor: 32 bytes, lines 478-479
478');
479fbq('track', 'PageView');
480</script>
480
481<noscript><img height="1" width="1" style="display:none"
482src="https://www.facebook.com/tr?id=1414675310108106&ev=PageView&noscript=1"
483/></noscript>
484<!-- End Meta Pixel Code --> 
485
486<!-- Meta Pixel Code -->
487<script>
vendor: 408 bytes, lines 487-496
487
488!function(f,b,e,v,n,t,s)
489{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
490n.callMethod.apply(n,arguments):n.queue.push(arguments)};
491if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
492n.queue=[];t=b.createElement(e);t.async=!0;
493t.src=v;s=b.getElementsByTagName(e)[0];
494s.parentNode.insertBefore(t,s)}(window, document,'script',
495'https://connect.facebook.net/en_US/fbevents.js');
496fbq('init', '
4961803629964302049
vendor: 32 bytes, lines 496-497
496');
497fbq('track', 'PageView');
498</script>
498
499<noscript><img height="1" width="1" style="display:none"
500src="https://www.facebook.com/tr?id=1803629964302049&ev=PageView&noscript=1"
501/></noscript>
502<!-- End Meta Pixel Code -->
503
504<!-- Meta Pixel Code -->
505<script>
vendor: 408 bytes, lines 505-514
505
506!function(f,b,e,v,n,t,s)
507{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
508n.callMethod.apply(n,arguments):n.queue.push(arguments)};
509if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
510n.queue=[];t=b.createElement(e);t.async=!0;
511t.src=v;s=b.getElementsByTagName(e)[0];
512s.parentNode.insertBefore(t,s)}(window, document,'script',
513'https://connect.facebook.net/en_US/fbevents.js');
514fbq('init', '
5142947375302278881
vendor: 32 bytes, lines 514-515
514');
515fbq('track', 'PageView');
516</script>
516
517<noscript><img height="1" width="1" style="display:none"
518src="https://www.facebook.com/tr?id=2947375302278881&ev=PageView&noscript=1"
519/></noscript>
520<!-- End Meta Pixel Code -->    
521    <link rel="preconnect" href="https://img.viva88athenae.com">
522    <link rel="preload" href="/fonts/new/ubuntu-normal-400-latin.woff2" as="font" type="font/woff2" crossorigin>
523    <link rel="preload" href="/fonts/new/ubuntu-normal-700-latin.woff2" as="font" type="font/woff2" crossorigin>
524    <link rel="preload" href="/fonts/new/oswald-normal-400-latin.woff2" as="font" type="font/woff2" crossorigin>
525    <link href="/css/new/vendor/bootstrap.min.css?v=1790436337" rel="stylesheet">
526    <style id="jt-fonts">/* Self-hosted Ubuntu + Oswald (latin / latin-ext), font-display: swap */
527/* latin-ext */
528@font-face {
529  font-family: 'Oswald';
530  font-style: normal;
531  font-weight: 400;
532  font-display: swap;
533  src: url(/fonts/new/oswald-normal-400-latinext.woff2) format('woff2');
534  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
535}
536/* latin */
537@font-face {
538  font-family: 'Oswald';
539  font-style: normal;
540  font-weight: 400;
541  font-display: swap;
542  src: url(/fonts/new/oswald-normal-400-latin.woff2) format('woff2');
543  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
544}
545/* latin-ext */
546@font-face {
547  font-family: 'Oswald';
548  font-style: normal;
549  font-weight: 500;
550  font-display: swap;
551  src: url(/fonts/new/oswald-normal-500-latinext.woff2) format('woff2');
552  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
553}
554/* latin */
555@font-face {
556  font-family: 'Oswald';
557  font-style: normal;
558  font-weight: 500;
559  font-display: swap;
560  src: url(/fonts/new/oswald-normal-500-latin.woff2) format('woff2');
561  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
562}
563/* latin-ext */
564@font-face {
565  font-family: 'Oswald';
566  font-style: normal;
567  font-weight: 600;
568  font-display: swap;
569  src: url(/fonts/new/oswald-normal-600-latinext.woff2) format('woff2');
570  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
571}
572/* latin */
573@font-face {
574  font-family: 'Oswald';
575  font-style: normal;
576  font-weight: 600;
577  font-display: swap;
578  src: url(/fonts/new/oswald-normal-600-latin.woff2) format('woff2');
579  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
580}
581/* latin-ext */
582@font-face {
583  font-family: 'Oswald';
584  font-style: normal;
585  font-weight: 700;
586  font-display: swap;
587  src: url(/fonts/new/oswald-normal-700-latinext.woff2) format('woff2');
588  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
589}
590/* latin */
591@font-face {
592  font-family: 'Oswald';
593  font-style: normal;
594  font-weight: 700;
595  font-display: swap;
596  src: url(/fonts/new/oswald-normal-700-latin.woff2) format('woff2');
597  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
598}
599/* latin-ext */
600@font-face {
601  font-family: 'Ubuntu';
602  font-style: italic;
603  font-weight: 300;
604  font-display: swap;
605  src: url(/fonts/new/ubuntu-italic-300-latinext.woff2) format('woff2');
606  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1D
606BF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
607}
608/* latin */
609@font-face {
610  font-family: 'Ubuntu';
611  font-style: italic;
612  font-weight: 300;
613  font-display: swap;
614  src: url(/fonts/new/ubuntu-italic-300-latin.woff2) format('woff2');
615  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
616}
617/* latin-ext */
618@font-face {
619  font-family: 'Ubuntu';
620  font-style: italic;
621  font-weight: 400;
622  font-display: swap;
623  src: url(/fonts/new/ubuntu-italic-400-latinext.woff2) format('woff2');
624  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
625}
626/* latin */
627@font-face {
628  font-family: 'Ubuntu';
629  font-style: italic;
630  font-weight: 400;
631  font-display: swap;
632  src: url(/fonts/new/ubuntu-italic-400-latin.woff2) format('woff2');
633  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
634}
635/* latin-ext */
636@font-face {
637  font-family: 'Ubuntu';
638  font-style: italic;
639  font-weight: 500;
640  font-display: swap;
641  src: url(/fonts/new/ubuntu-italic-500-latinext.woff2) format('woff2');
642  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
643}
644/* latin */
645@font-face {
646  font-family: 'Ubuntu';
647  font-style: italic;
648  font-weight: 500;
649  font-display: swap;
650  src: url(/fonts/new/ubuntu-italic-500-latin.woff2) format('woff2');
651  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
652}
653/* latin-ext */
654@font-face {
655  font-family: 'Ubuntu';
656  font-style: italic;
657  font-weight: 700;
658  font-display: swap;
659  src: url(/fonts/new/ubuntu-italic-700-latinext.woff2) format('woff2');
660  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
661}
662/* latin */
663@font-face {
664  font-family: 'Ubuntu';
665  font-style: italic;
666  font-weight: 700;
667  font-display: swap;
668  src: url(/fonts/new/ubuntu-italic-700-latin.woff2) format('woff2');
669  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
670}
671/* latin-ext */
672@font-face {
673  font-family: 'Ubuntu';
674  font-style: normal;
675  font-weight: 300;
676  font-display: swap;
677  src: url(/fonts/new/ubuntu-normal-300-latinext.woff2) format('woff2');
678  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
679}
680/* latin */
681@font-face {
682  font-family: 'Ubuntu';
683  font-style: normal;
684  font-weight: 300;
685  font-display: swap;
686  src: url(/fonts/new/ubuntu-normal-300-latin.woff2) format('woff2');
687  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
688}
689/* latin-ext */
690@font-face {
691  font-family: 'Ubuntu';
692  font-style: normal;
693  font-weight: 400;
694  font-display: swap;
695  src: url(/fonts/new/ubuntu-normal-400-latinext.woff2) format('woff2');
696  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
697}
698/* latin */
699@font-face {
700  font-family: 'Ubuntu';
701  font-style: normal;
702  font-weight: 400;
703  font-display: swap;
704  src: url(/fonts/new/ubuntu-normal-400-latin.woff2) format('woff2');
705  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
706}
707/* latin-ext */
708@font-face {
709  font-family: 'Ubuntu';
710  font-style: normal;
711  font-weight: 500;
712  font-display: swap;
713  src: url(/fonts/new/ubuntu-normal-500-latinext.woff2) format('woff2');
714  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1D
714BF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
715}
716/* latin */
717@font-face {
718  font-family: 'Ubuntu';
719  font-style: normal;
720  font-weight: 500;
721  font-display: swap;
722  src: url(/fonts/new/ubuntu-normal-500-latin.woff2) format('woff2');
723  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
724}
725/* latin-ext */
726@font-face {
727  font-family: 'Ubuntu';
728  font-style: normal;
729  font-weight: 700;
730  font-display: swap;
731  src: url(/fonts/new/ubuntu-normal-700-latinext.woff2) format('woff2');
732  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
733}
734/* latin */
735@font-face {
736  font-family: 'Ubuntu';
737  font-style: normal;
738  font-weight: 700;
739  font-display: swap;
740  src: url(/fonts/new/ubuntu-normal-700-latin.woff2) format('woff2');
741  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
742}
743</style>    <style id="jt-theme">/* Theme: ES — ES */
744:root {
745    /* --- Light theme overrides (auto-generated dari base gelap) --- */
746    /* --- Accent --- */
747    --accent-color:                #f35925;
748
749    /* --- Text --- */
750    --primary-text-color:          #141414;
751    --secondary-text-color:        #2b2b2b;
752    --accent-text-color:           #f35925;
753
754    /* --- Teks tambahan --- */
755    --muted-text-color:            #595959;
756    --muted-text-color-secondary:  #5c5656;
757    --muted-text-color-tertiary:   #6c5147;
758
759    /* --- Background utama --- */
760    --primary-background-color:    #dddddd;
761    --secondary-background-color:  #e6e6e6;
762    --ternary-background-color:    #d2d2d2;
763    --quaternary-background-color: #dddddd;
764
765    /* --- Background tambahan --- */
766    --placeholder-bg:              #c8c8c8;
767    --overlay-bg:                  rgba(0,0,0,0.6);
768    --handle-color:                rgba(0,0,0,0.2);
769    --table-hover-bg:              rgba(243,89,37,0.06);
770    --btn-close-hover-bg:          rgba(128,128,128,0.12);
771    --qr-bg:                       #ffffff;
772
773    /* --- Navbar --- */
774    --navbar-bg:                   var(--ternary-background-color);
775    --bottom-navbar-bg:            var(--ternary-background-color);
776
777    /* --- Navbar text --- */
778    --navbar-text-color:           #141414;
779    --bottom-navbar-text-color:    #141414;
780
781    /* --- Header & Home elemen (terpisah dari primary/secondary/accent-text) --- */
782    --topbar-link-color:           var(--primary-text-color);
783    --section-title-color:         var(--primary-text-color);
784    --togel-market-name-color:     #ffffff;
785    --balance-text-color:          var(--secondary-text-color);
786    --nav-active-color:            var(--accent-text-color);
787    --marquee-date-color:          var(--accent-text-color);
788    --username-text-color:         var(--secondary-text-color);
789    --marquee-text-color:          var(--secondary-text-color);
790
791    /* --- Menu / Marquee / Search --- */
792    --menu-box-bg:                 rgba(243,89,37,0.06);
793    --marquee-bg:                  #e6e6e6;
794    --search-bg:                   #d2d2d2;
795
796    /* --- Widget profile gradient --- */
797    --widget-profile-bg-start:     #d2d2d2;
798    --widget-profile-bg-end:       #e6e6e6;
799
800    /* --- Tombol Deposit (gradient) --- */
801    --btn-deposit-color-start:     #d94a1a;
802    --btn-deposit-color-mid:       #ff7a42;
803    --btn-deposit-color-end:       #d94a1a;
804    --btn-deposit-text:            #ffffff;
805
806    /* --- Tombol Withdraw (gradient) --- */
807    --btn-withdraw-color-start:    #e6e6e6;
808    --btn-withdraw-color-end:      #d2d2d2;
809    --btn-withdraw-text:           #141414;
810
811    /* --- Tab aktif & tabel rekening (terpisah dari accent utama) --- */
812    --tx-tab-active-color:         var(--accent-color);
813    --tx-table-accent-color:       var(--accent-text-color);
814
815    /* --- Table stripe & input placeholder (terpisah, dikalibrasi thd bg literal) --- */
816    --table-stripe-odd-bg:         var(--primary-background-color);
817    --table-stripe-even-bg:        var(--secondary-background-color);
818    --input-placeholder-color:     #6b7280;
819
820    /* --- CMS sidebar nav item (state tidak-aktif/hover/aktif, terpisah dari muted-text-color umum) --- */
821    --cms-nav-color:               var(--muted-text-color);
822    --cms-nav-hover-color:         var(--secondary-text-color);
823    --cms-nav-active-color:        var(--primary-text-color);
824
825    /* --- History table --- */
826    --color-tanggal:               #c91612;
827    --color-pasaran:               #0967b3;
828    --color-debit:                 #c91612;
829    --color-kredit:                #327135;
830    --color-balance:               #0967b3;
831
832    /* --- Component backgrounds --- */
833    --btn-menu-bg:                 var(--ternary-background-color);
834    --card-bg:                     var(--ternary-background-color);
835    --avatar-bg:                   var(--ternary-background-color);
836    --table-header-bg:             var(--ternary-background-color);
837    --dropdown-bg:                 var(--secondary-background-color);
838    --sidebar-bg:                  var(--secondary-background-color);
839    --input-bg:                    var(--secondary-background-color);
840    --menu-box-border-color:       rgba(243,89,37,0.14);
841    --breadcrumb-color:            var(--accent-color);
842    --alert-danger-bg:             #ee5f5b;
843
844    /* --- Accent alpha (untuk hover/active) --- */
845    --accent-bg-subtle:            rgba(243,89,37,0.10);
846    --accent-bg-active:            rgba(243,89,37,0.12);
847    --accent-border-subtle:        rgba(243,89,37,0.32);
848
849    /* --- Skeleton shimmer --- */
850    --skeleton-color-base:         var(--ternary-background-color);
851    --skeleton-color-shine:        #c8c8c8;
852
853    /* --- Card togel pasaran (home) --- */
854    --togel-card-bg:               #1b6d79;
855    --togel-card-number-color:     #ffffff;
856
857    /* --- Splide pagination --- */
858    --splide-pagination-inactive:  #a8b2bd;
859
860    /* --- Border --- */
861    --border-color:                rgba(0,0,0,0.08);
862    --border-subtle-color:         rgba(0,0,0,0.04);
863
864    /* --- Font & Radius --- */
865    --font-body:                   "Ubuntu", sans-serif;
866    --radius-sm:                   6px;
867    --radius-md:                   8px;
868    --radius-lg:                   10px;
869    --radius-xl:                   12px;
870    --radius-pill:                 999px;
871
872    /* --- Font sizes --- */
873    --fs-xs:                       10px;
874    --fs-sm:                       11px;
875    --fs-md:                       12px;
876    --fs-base:                     13px;
877    --fs-lg:                       14px;
878    --fs-xl:                       15px;
879    --fs-2xl:                      16px;
880    --fs-3xl:                      18px;
881}
882
883:root[data-theme="dark"] {
884    /* --- Accent --- */
885    --accent-color:               #f15a23;
886
887    /* --- Text --- */
888    --primary-text-color:         #ffffff;
889    --secondary-text-color:       #d4d4d4;
890    --accent-text-color:          #f47e53;
891
892    /* --- Teks tambahan --- */
893    --muted-text-color:           #888888;
894    --muted-text-color-secondary: #2b2626;
895    --muted-text-color-tertiary:  #b5674a;
896
897    /* --- Background utama --- */
898    --primary-background-color:   #24150f;
899    --secondary-background-color: #1c0d08;
900    --ternary-background-color:   #2e1b15;
901    --quaternary-background-color: #24150f;
902
903    /* --- Background tambahan --- */
904    --placeholder-bg:             #3e261e;
905    --overlay-bg:                 rgba(0,0,0,0.6);
906    --handle-color:               rgba(255,255,255,0.2);
907    --table-hover-bg:             rgba(241,90,35,0.05);
908    --btn-close-hover-bg:         rgba(128,128,128,0.12);
909    --qr-bg:                      #ffffff;
910
911    /* --- Navbar --- */
912    --navbar-bg:                  var(--ternary-background-color);
913    --bottom-navbar-bg:           var(--ternary-background-color);
914
915    /* --- Navbar text --- */
916    --navbar-text-color:          #ffffff;
917    --bottom-navbar-text-color:   #ffffff;
918
919    /* --- Header & Home elemen (terpisah dari primary/secondary/
919accent-text) --- */
920    --topbar-link-color:          var(--primary-text-color);
921    --section-title-color:        var(--primary-text-color);
922    --togel-market-name-color:    var(--primary-text-color);
923    --balance-text-color:         var(--secondary-text-color);
924    --nav-active-color:           var(--accent-text-color);
925    --marquee-date-color:         var(--accent-text-color);
926    --username-text-color:        var(--secondary-text-color);
927    --marquee-text-color:         var(--secondary-text-color);
928
929    /* --- Menu / Marquee / Search --- */
930    --menu-box-bg:                rgba(241,90,35,0.05);
931    --marquee-bg:                 #1c0d08;
932    --search-bg:                  #2e1b15;
933
934    /* --- Widget profile gradient --- */
935    --widget-profile-bg-start:    #3f261c;
936    --widget-profile-bg-end:      #1c0d08;
937
938    /* --- Tombol Deposit (gradient) --- */
939    --btn-deposit-color-start:    #f15a23;
940    --btn-deposit-color-mid:      #f37040;
941    --btn-deposit-color-end:      #f15a23;
942    --btn-deposit-text:           #ffffff;
943
944    /* --- Tombol Withdraw (gradient) --- */
945    --btn-withdraw-color-start:   #1c0d08;
946    --btn-withdraw-color-end:     #2e1b15;
947    --btn-withdraw-text:          #ffffff;
948
949    /* --- Tab aktif & tabel rekening (terpisah dari accent utama) --- */
950    --tx-tab-active-color:        var(--accent-color);
951    --tx-table-accent-color:      var(--accent-text-color);
952
953    /* --- Table stripe & input placeholder (terpisah, dikalibrasi thd bg literal) --- */
954    --table-stripe-odd-bg:        var(--primary-background-color);
955    --table-stripe-even-bg:       var(--secondary-background-color);
956    --input-placeholder-color:    #6b7280;
957
958    /* --- CMS sidebar nav item (state tidak-aktif/hover/aktif, terpisah dari muted-text-color umum) --- */
959    --cms-nav-color:              var(--muted-text-color);
960    --cms-nav-hover-color:        var(--secondary-text-color);
961    --cms-nav-active-color:       var(--primary-text-color);
962
963    /* --- History table --- */
964    --color-tanggal:              #ef5350;
965    --color-pasaran:              #42a5f5;
966    --color-debit:                #ef5350;
967    --color-kredit:               #66bb6a;
968    --color-balance:              #42a5f5;
969
970    /* --- Component backgrounds --- */
971    --btn-menu-bg:                var(--ternary-background-color);
972    --card-bg:                    var(--ternary-background-color);
973    --avatar-bg:                  var(--ternary-background-color);
974    --table-header-bg:            var(--ternary-background-color);
975    --dropdown-bg:                var(--secondary-background-color);
976    --sidebar-bg:                 var(--secondary-background-color);
977    --input-bg:                   var(--secondary-background-color);
978    --menu-box-border-color:      rgba(241,90,35,0.12);
979    --breadcrumb-color:           var(--accent-color);
980    --alert-danger-bg:            #ee5f5b;
981
982    /* --- Accent alpha (untuk hover/active) --- */
983    --accent-bg-subtle:           rgba(241,90,35,0.10);
984    --accent-bg-active:           rgba(241,90,35,0.12);
985    --accent-border-subtle:       rgba(241,90,35,0.32);
986
987    /* --- Skeleton shimmer --- */
988    --skeleton-color-base:        var(--ternary-background-color);
989    --skeleton-color-shine:       #3e261e;
990
991    /* --- Card togel pasaran (home) --- */
992    --togel-card-bg:               var(--secondary-background-color);
993    --togel-card-number-color:    var(--primary-text-color);
994
995    /* --- Splide pagination --- */
996    --splide-pagination-inactive: #dee2e6;
997
998    /* --- Border --- */
999    --border-color:               rgba(255,255,255,0.08);
1000    --border-subtle-color:        rgba(255,255,255,0.04);
1001
1002    /* --- Font & Radius --- */
1003    --font-body:                  "Ubuntu", sans-serif;
1004    --radius-sm:                  6px;
1005    --radius-md:                  8px;
1006    --radius-lg:                  10px;
1007    --radius-xl:                  12px;
1008    --radius-pill:                999px;
1009
1010    /* --- Font sizes --- */
1011    --fs-xs:                      10px;
1012    --fs-sm:                      11px;
1013    --fs-md:                      12px;
1014    --fs-base:                    13px;
1015    --fs-lg:                      14px;
1016    --fs-xl:                      15px;
1017    --fs-2xl:                     16px;
1018    --fs-3xl:                     18px;
1019}
1020
1021/* History table column colors */
1022.history-table .col-tanggal  { white-space: nowrap; color: var(--color-tanggal); }
1023.history-table .col-pasaran  { color: var(--color-pasaran); }
1024.history-table .col-betid    { font-size: var(--fs-xs); word-break: break-all; color: var(--accent-text-color); }
1025.history-table .col-deskripsi { color: var(--primary-text-color); }
1026.history-table .col-balance  { white-space: nowrap; color: var(--color-balance); }
1027</style>    <link rel="stylesheet" href="/css/new/layout.min.css?v=1790436337">
1028    <link rel="stylesheet" href="/css/new/logo.css?v=1790436337">
1029    <style>.splide__list{display:flex;margin:0!important;padding:0!important}.splide__track{overflow:hidden;position:relative}</style>
1030
1031    <link id="css-home-sections" rel="stylesheet" href="/css/new/home-sections.min.css?v=1790436337" media="print" onload="this.media='all'">
1032    
1033    <link id="css-bootstrap-icons" rel="stylesheet" href="/css/new/vendor/bootstrap-icons.min.css?v=1790436337" media="print" onload="this.media='all'">
1034    <link id="css-splide" rel="stylesheet" href="/css/new/vendor/splide.min.css?v=1790436337" media="print" onload="this.media='all'">
1035    <noscript>
1036        <link rel="stylesheet" href="/css/new/home-sections.min.css?v=1790436337">
1037        <link rel="stylesheet" href="/css/new/vendor/bootstrap-icons.min.css?v=1790436337">
1038        <link rel="stylesheet" href="/css/new/vendor/splide.min.css?v=1790436337">
1039        <link rel="stylesheet" href="/css/new/game.min.css?v=1790436337">
1040    </noscript>
1041
1042    <style>
1043    @media (max-width: 768px) {
1044        .driver-popover { max-width: 220px !important; font-size: 12px !important; padding: 10px 12px !important; }
1045        .driver-popover-title { font-size: 13px !important; margin-bottom: 4px !important; }
1046        .driver-popover-description { font-size: 12px !important; }
1047    }
1048    </style>
1049
1050    <style>
1051        a {
1052          color: inherit; /* blue colors for links too */
1053          text-decoration: inherit; /* no underline */
1054        }
1055    
1056        .desktop-only {
1057            display: block!important;
1058        }
1059        
1060        .mobile-only {
1061            display: none !important;
1062        }
1063        
1064        .btn {
1065            height: 30px;
1066            border-radius: 3px;
1067        }
1068        
1069        .login-field {
1070            width: 104px;
1071            height: 30px;
1072            border-radius: 3px;
1073        }
1074
1075        .login-input-field {
1076            margin: 0px;
1077            padding: 0px 8px;
1078            border-radius: 3px !important;
1079        }
1080        
1081        .section>.home-view {
1082            padding: 0px;
1083        }
1084
1085        @media only screen and (max-width: 1000px) {
1086
1087            .desktop-only {
1088                display: none!important;
1089            }
1090                
1091            .mobile-only {
1092                display: block!important;
1093            }
1094            
1095            .login-form {
1096                padding: 32px 0;
1097                margin: 0px 64px;
1098                display: flex;
1099                flex-direction: column;
1100            }
1101            
1102            .login-field, .login-form>button, .btn-promosi {
1103                height: 36px;
1104                width: 100% !important;
1105                border-radius: 8px;
1106                overflow: hidden;
1107            }
1108                    
1109            .login-input-field {
1110                border-top-left-radius: 0 !important;
1111                border-bottom-left-radius: 0 !important;
1112                font-size: 1rem;
1113            }
1114            
1115            .section {
1116                padding: 0px 8px!important;
1117            }
1118        }
1119
1120        .grecaptcha-badge {
1121            display: none !important;
1122        }
1123    </style>
1124    
1125    
1126</head>
1127  <body>
1128    
1128<script src="/js/new/vendor/jquery.min.js?v=1790436337"></script>
1128
1129    
1129<script>
1130        window.JT_CSRF_TOKEN = '787484eedb9611bc203b971a0ccb318fc84a79a404d1cac2f62b4d4b469da5fa';
1131        window.JT_NEED_RECAPTCHA_REGISTER = false;
1132        window.JT_NEED_RECAPTCHA_LOGIN = false;
1133        window.JT_NEED_RECAPTCHA = false;
1134        window.JT_RECAPTCHA_SITE_KEY = '6Leu4cosAAAAABe-B_1-oryumOl99wsUEEFN3z8A';
1135        window.JT_NEED_TURNSTILE_REGISTER = false;
1136        window.JT_NEED_TURNSTILE_LOGIN = false;
1137        window.JT_NEED_TURNSTILE = false;
1138        window.JT_NEED_IFRAME_CAPTCHA = false;
1139        window.JT_CAPTCHA_LOGIN_MODE = '1';
1140        window.JT_CAPTCHA_REGISTER_MODE = '1';
1141
1142        $.ajaxSetup({
1143            beforeSend: function (xhr, settings) {
1144                if (settings.type === 'POST' && !settings.crossDomain) {
1145                    xhr.setRequestHeader('X-CSRF-Token', window.JT_CSRF_TOKEN || '');
1146                }
1147            }
1148        });
1149
1150        var _recaptchaLoader = null;
1151        function jtLoadRecaptcha() {
1152            if (!window.JT_NEED_RECAPTCHA) return Promise.resolve();
1153            if (typeof grecaptcha !== 'undefined' && grecaptcha.enterprise) return Promise.resolve();
1154            if (_recaptchaLoader) return _recaptchaLoader;
1155            _recaptchaLoader = new Promise(function (resolve, reject) {
1156                var s = document.createElement('script');
1157                s.src = 'https://www.google.com/recaptcha/enterprise.js?render=' + encodeURIComponent(window.JT_RECAPTCHA_SITE_KEY);
1158                s.async = true;
1159                s.onload = function () { resolve(); };
1160                s.onerror = function () { _recaptchaLoader = null; reject(new Error('recaptcha load failed')); };
1161                document.head.appendChild(s);
1162            });
1163            return _recaptchaLoader;
1164        }
1165
1166        
1167        function jtWarmAuthScripts() {
1168            if (window.JT_NEED_RECAPTCHA) jtLoadRecaptcha().catch(function () {});
1169            if (window.JT_NEED_TURNSTILE && typeof window.turnst === 'function') {
1170                window.turnst('').catch(function () {});
1171            }
1172        }
1173
1174        $(document).on(
1175            'focusin',
1176            '#desktoplogin input, #mobilelogin input, #formRegister input, #formRegister select, #desktopregister input, #mobileregister input',
1177            jtWarmAuthScripts
1178        );
1179        $(document).on(
1180            'click',
1181            '.btn-daftar, [onclick*="register"], a[href*="register"]',
1182            jtWarmAuthScripts
1183        );
1184
1185        function jtNeedRecaptchaRegister($form) {
1186            var isRecaptchaRegister = String($form.find('input[name="isrecaptcharegister"]').val() || '');
1187            return window.JT_NEED_RECAPTCHA_REGISTER === true || isRecaptchaRegister === '1';
1188        }
1189
1190        function jtNeedRecaptchaLogin($form) {
1191            var isRecaptchaLogin = String($form.find('input[name="isrecaptchalogin"]').val() || '');
1192            return window.JT_NEED_RECAPTCHA_LOGIN === true || isRecaptchaLogin === '1';
1193        }
1194
1195        function jtWithRecaptchaToken($form, $status, action, shouldRun, onReady, failCls, onFail, tokenField) {
1196            if (!shouldRun) {
1197                onReady();
1198                return;
1199            }
1200            var fieldName = tokenField || 'recaptcha_token';
1201            var warnCls = (failCls === undefined) ? 'alert alert-sm alert-warning' : failCls;
1202            function showFail(msg) {
1203                if (warnCls) {
1204                    $status.removeClass().addClass(warnCls).text(msg).fadeIn(1000);
1205                } else {
1206                    $status.removeClass().text(msg).fadeIn(1000);
1207                }
1208                if (typeof onFail === 'function') {
1209                    onFail();
1210                }
1211            }
1212            jtLoadRecaptcha().then(function () {
1213                if (typeof grecaptcha === 'undefined' || !grecaptcha.enterprise) {
1214                    showFail('Verifikasi gagal dimuat, refresh halaman');
1215                    return;
1216                }
1217                grecaptcha.enterprise.ready(function () {
1218                    grecaptcha.enterprise.execute(window.JT_RECAPTCHA_SITE_KEY, { action: action })
1219                        .then(function (token) {
1220                            jtSetHidden($form, fieldName, token);
1221                            onReady();
1222                        })
1223                        .catch(function () {
1224                            showFail('Verifikasi gagal, coba lagi');
1225                        });
1226                });
1227            }).catch(function () {
1228                showFail('Verifikasi gagal dimuat, refresh halaman');
1229            });
1230        }
1231
1232        function jtWithRecaptchaRegisterToken($form, $status, onReady) {
1233            jtWithRecaptchaToken($form, $status, 'register', jtNeedRecaptchaRegister($form), onReady, undefined, undefined, 'recaptcha_register_token');
1234        }
1235
1236        function jtWithRecaptchaLoginToken($form, $status, onReady, onF
1236ail) {
1237            jtWithRecaptchaToken($form, $status, 'login', jtNeedRecaptchaLogin($form), onReady, '', onFail, 'recaptcha_login_token');
1238        }
1239
1240        function jtSetHidden($form, name, value) {
1241            var $el = $form.find('input[name="' + name + '"]');
1242            if ($el.length === 0) {
1243                $form.append('<input type="hidden" name="' + name + '" value="">');
1244                $el = $form.find('input[name="' + name + '"]');
1245            }
1246            $el.val(value);
1247        }
1248
1249        function jtWithTurnstileAction($form, actionName, needFlag, onReady) {
1250            if (!needFlag || typeof window.turnst !== 'function') {
1251                onReady();
1252                return;
1253            }
1254            window.turnst(actionName).then(function (fpResult) {
1255                jtSetHidden($form, 'fp_event_id', (fpResult && fpResult.eventId) || '');
1256                jtSetHidden($form, 'fp_visitor_id', (fpResult && fpResult.visitorId) || '');
1257                onReady();
1258            }).catch(function () {
1259                jtSetHidden($form, 'fp_event_id', '');
1260                jtSetHidden($form, 'fp_visitor_id', '');
1261                onReady();
1262            });
1263        }
1264
1265        function jtWithTurnstileRegister($form, onReady) {
1266            jtWithTurnstileAction($form, 'account_create', window.JT_NEED_TURNSTILE_REGISTER, onReady);
1267        }
1268
1269        function jtWithTurnstileLogin($form, onReady) {
1270            jtWithTurnstileAction($form, 'account_login', window.JT_NEED_TURNSTILE_LOGIN, onReady);
1271        }
1272
1273        var _jtIframePending = null;
1274
1275        function jtShowIframeCaptcha(isMobile, onReady, onCancelMsg) {
1276            if (!window.JT_NEED_IFRAME_CAPTCHA) {
1277                onReady();
1278                return;
1279            }
1280            var modalId = isMobile ? '#captchaModalMobile' : '#captchaModalDesktop';
1281            var $modal = $(modalId);
1282            if ($modal.length === 0) {
1283                onReady();
1284                return;
1285            }
1286            _jtIframePending = {
1287                isMobile: !!isMobile,
1288                onReady: onReady,
1289                onCancelMsg: onCancelMsg || null
1290            };
1291            $modal.css('display', 'flex');
1292        }
1293
1294        function jtWithIframeCaptchaLogin($form, isMobile, onReady, onCancelMsg) {
1295            var mode = String($form.find('input[name="iscaptchalogin"]').val() || window.JT_CAPTCHA_LOGIN_MODE || '1');
1296            if (mode !== '2') {
1297                onReady();
1298                return;
1299            }
1300            jtShowIframeCaptcha(isMobile, function (token, key) {
1301                jtSetHidden($form, 'token', token || '');
1302                jtSetHidden($form, 'key', key || '');
1303                onReady();
1304            }, onCancelMsg);
1305        }
1306
1307        function jtWithIframeCaptchaRegister($form, isMobile, onReady, onCancelMsg) {
1308            var mode = String($form.find('input[name="iscaptcharegister"]').val() || window.JT_CAPTCHA_REGISTER_MODE || '1');
1309            if (mode !== '2') {
1310                onReady();
1311                return;
1312            }
1313            jtShowIframeCaptcha(isMobile, function (token, key) {
1314                jtSetHidden($form, 'token', token || '');
1315                jtSetHidden($form, 'key', key || '');
1316                onReady();
1317            }, onCancelMsg);
1318        }
1319
1320        window.addEventListener('message', function (e) {
1321            if (e.origin !== 'https://recaptcha.viva88athenae.com') {
1322                return;
1323            }
1324            if (!_jtIframePending) {
1325                return; 
1326            }
1327            var pending = _jtIframePending;
1328            _jtIframePending = null;
1329
1330            var dataCaptcha = e.data || {};
1331            var $modal = pending.isMobile ? $('#captchaModalMobile') : $('#captchaModalDesktop');
1332            $modal.css('display', 'none');
1333
1334            if (dataCaptcha.verified !== true) {
1335                if (typeof pending.onCancelMsg === 'function') {
1336                    pending.onCancelMsg('Verifikasi Kosong');
1337                }
1338                return;
1339            }
1340
1341            if (typeof pending.onReady === 'function') {
1342                pending.onReady(dataCaptcha.token || '', dataCaptcha.key || '');
1343            }
1344        });
1345    </script>
1345
1346
1347      
1348<style>
1349    .btn-tele {
1350        text-shadow: 1px 1px #000000;
1351        height: 36px!important;
1352        border-radius: 8px;
1353        background: #28323C;
1354        color: white;
1355    }
1356</style>
1357
1358    
1359<div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasRight" aria-labelledby="offcanvasExampleLabel" style="width: 50%; background: var(--primary-background-color); color: var(--primary-text-color); z-index: 99999">
1360    <div class="offcanvas-header py-3 d-flex justify-content-between">
1361        <h5 class="offcanvas-title" id="offcanvasExampleLabel" style="color: var(--menu-item-color); font-size: 1.2rem; font-weight: bold">Kontak Kami</h5>
1362        <button type="button" class="text-reset" style="background: transparent; border: none" data-bs-dismiss="offcanvas" aria-label="Close"><i class="bi bi-x" style="color: var(--primary-text-color); font-size: 20px"></i></button>
1363    </div>
1364    <div class="offcanvas-body p-0 px-2">
1365            <div class="d-flex flex-column w-100 gap-2">
1366                
1367                                
1368                                                
1369                            <a  href="https://t.me/OFFICIALBBNI4D" target='_blank' class="d-flex p-3 w-100 gap-3 rounded" style="background: var(--menu-box-bg, transparent); border: 1px solid var(--menu-box-border-color, rgba(255, 255, 255, 0.06));">
1370                               <div class="fw-bold"><img src="https://img.viva88athenae.com/kontak/telegram.png" width="18" height="18" alt=""></div>
1371                               <div style="color: var(--primary-text-color);">CUSTOMER SERVICE CHAT 24JAM</div>
1372                            </a>
1373                            
1374                                            
1375
1376                                
1377
1378            </div>
1379
1380    </div>
1381</div>
1382
1383            
1384    <style>
1385    
1386    #mySidenav {
1387    position: fixed;
1388    top: 180px;
1389    right: 100px;
1390    z-index: 999;
1391}
1392
1393#mySidenav div#nav:hover {
1394  left: -138px;
1395}
1396
1397#mySidenav div#nav {
1398    position: absolute;
1399    font-size: 20px;
1400    border-radius: 0 5px 5px 0;
1401    left: 36px;
1402    transition: 0.3s;
1403    display: flex;
1404}
1405
1406#kontak-content {
1407    width: 190px;
1408    padding: 5px 10px 8px 10px;
1409    font-size: 15px;
1410    background-color: #FFF;
1411    color: #000;
1412}
1413    
1414</style>
1415
1416            <!-- SIDENAV -->
1417            <div id="mySidenav" class="sidenav desktop-only">
1418                <div id="nav">
1419                    <div style="display: flex; align-items: start;">
1420                        <div style="height: 246px; width: 64px; background: var(--accent-color); border-radius: 8px 0px 0px 8px; overflow: hidden;  box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;">
1421                            
1422                            <img src="https://img.viva88athenae.com//new/assets/hubungi.png?2" alt="Hubungi Kami">
1423
1424                        </div>
1425                        <!--<img id="about" src="/images/kontak.png?4">-->
1426                    </div>
1427                    <div class="ptsans" style="font-size: 1rem; background: white; border-radius: 0px 5px 5px 5px; overflow: hidden; width: 160px">
1428                       <div id="" style="padding: 4px">
1429                       <img src="/assets/24h.png" style="width: 100%" alt="Layanan 24 Jam">
1430                        </div>
1431                    
1432                        <div id="kontak-content" style="display: flex; flex-direction: column; width: 100%; font-size: .8rem">
1433                            <div style="display: grid; place-items: center; font-weight: bold; font-size: 1rem">MEMBER SERVICE</div>
1434                            
1435                                                                
1436                                                                                
1437                                            <a href="https://t.me/OFFICIALBBNI4D" target='_blank' style="padding: 4px; display: flex; align-items: center; gap: 8px; border-bottom: 1px solid #e0e0e0">
1438                                                <img src="https://img.viva88athenae.com/kontak/telegram.png" width="20" height="20" alt=""><span>CUSTOMER SERVICE CHAT 24JAM</span>
1439                                            </a>
1440                                            
1441                                            
1442                                    
1443                                                                
1444    
1445                        </div>
1446                            <div style="margin: 8px">
1447                                <a href="/register"><input type="button" value="DAFTAR SEKARANG" style="width: 100%; border-radius: 5px; font-size: .875rem!important; height: 40px; border: none; font-weight: bold; background: black; color: white"></a>
1448                            </div>
1449                    </div>
1450                </div>
1451            </div>
1452    
1453        
1454        
1455    
1456    <div class="d-none d-md-block px-2">
1457        
1458                        
1459                <div class="section desktop-topbar d-flex align-items-center justify-content-between">
1460                    <div class="d-flex align-items-center gap-4">
1461            
1462                    </div>
1463            
1464                                
1465                    <!-- Desktop Login Start -->
1466                    
1467                    <style>
1468                        
1469                        .login-form {
1470                            display: flex;
1471                            align-items: center;
1472                            justify-content: end;
1473                            gap: 4px;
1474                        }
1475                        
1476                        .btn-masuk {
1477                            background: linear-gradient(#f17a77, #ee5f5b 60%, #ec4d49) !important;
1478                            color: white;
1479                        }
1480                        
1481                        .btn-daftar {
1482                            background: linear-gradient(#74cae3, #5bc0de 60%, #4ab9db); !important;
1483                            color: white;
1484                        }
1485
1486                        .btn-google {
1487                            width: 30px;
1488                            height: 30px;
1489                            background: #fff;
1490                            border: 1px solid #ddd;
1491                            border-radius: 3px;
1492                            display: inline-flex;
1493                            align-items: center;
1494                            justify-content: center;
1495                        }
1496
1497                        .btn-google:hover {
1498                            background: #f5f5f5;
1499                        }
1500
1501                        .btn-google-mobile {
1502                            background: #fff;
1503                            color: #3c4043;
1504                            border: 1px solid #dadce0;
1505                            border-radius: 3px;
1506                            height: 36px;
1507                            padding: 0 12px;
1508                            font-weight: 600;
1509                            font-size: 1.2rem;
1510                            display: flex;
1511                            align-items: center;
1512                            justify-content: center;
1513                            gap: 8px;
1514                        }
1515
1516                        .btn-google-mobile:hover {
1517                            background: #f8f9fa;
1518                            color: #202124;
1519                        }
1520
1521                    </style>
1522                    
1523                    <div class="d-flex align-items-center gap-2">
1524                        <div id="desktoplogin" class="desktop-only">
1525                            <form class="login-form form" role="form">
1526                                <div id="msgbox" style="margin-right: 8px; color: #b29459; font-size: 1rem; white-space:nowrap;"></div>
1527                                <div class="input-group login-field">
1528                                    <span class="input-group-text prepend mobile-only "><div class="h-100 center"><i class="bi bi-person-circle prepend-icon"></i></div></span>
1529                                    <input type="text" name="username" class="form-control login-input-field username" placeholder="Nama Akun" aria-label="Username">
1530                                </div>
1531                                
1532                                
1533                                
1534                                <div class="input-group login-field">
1535                                    <span class="input-group-text mobile-only prepend"><div class="h-100 center"><i class="bi bi-shield-lock-fill prepend-icon"></i></div></span>
1536                                    <input type="password" name="password" class="form-control login-input-field password" placeholder="Kata Sandi" aria-label="Password">
1537                                </div>
1538                                
1539                                <!-- captcha -->
1540                         
1541                                    <div class="verifikasiform" style="">
1542                                        <div style="display: flex; gap: 2px;">
1543                                            <span id="verifikasi"><img src="/capimg.php" width="40" height="30" style="border:1px #999 solid;" alt="Kode verifikasi"></span>
1544                                            <input type="text" class="form-control login-field" name="verifikasi" id="verform" style="width:40px;height: 30px !important" autocomplete="off" aria-label="Kode verifikasi">
1545                                        </div>
1546            
1547                                    </div>
1548                                    <input type="hidden" name="verif" id="verifval" class="verifval" value="1">
1549                              
1550                                <!-- end captcha -->
1551            
1552            
1553                                <!--<button value="Masuk" class="btn btn-masuk fw-bold p-0 px-2 submit">Masuk</button>-->
1554                                <button type="button" class="btn btn-masuk fw-bold p-0 px-2 submit d-flex justify-content-center align-items-center">Masuk</button>
1555                                <button type="button" class="btn btn-daftar btn-daftar-desktop fw-bold p-0 px-2 desktop-only" onclick="openRegister('desktop')">Daftar</button>
1556                                
1557                                <input type="hidden" name="task" value="login">
1558                                <input type="hidden" name="iscaptchalogin" value="1">
1559                                <input type="hidden" name="isrecaptchalogin" value="0">
1560                                <input type="hidden" name="recaptcha_login_token" value="">
1561                                <input type="hidden" name="fp_event_id" value="">
1562                                <input type="hidden" name="fp_visitor_id" value="">
1563                                <input type="hidden" name="logindesktop" value="++xallHkXxsruE8sljIIM8eJRvgRmYEi8zhEvgVzcjY=">
1564                            </form>
1565
1566                                                        
1567                            
1567<script>
1568                                function jtRandomString(length) {
1569                                    var result = '';
1570                                    var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
1571                                
1572                                    for (var i = 0; i < length; i++) {
1573                                        result += characters.charAt(Math.floor(Math.random() * characters.length));
1574                                    }
1575                                
1576                                    return result;
1577                                }
1578                                
1579                                function jtGetCaptchaHtml(captchaPath, captchaStyle) {
1580                                    var r = Math.floor(Math.random() * 10000);
1581                                    return '<img src="' + captchaPath + '?' + r + '" ' + captchaStyle + ' alt="Kode verifikasi">';
1582                                }
1583                                
1584                                function jtHandleLoginResponse(res, $root, verHtml) {
1585                                    var $msg = $root.find('#msgbox');
1586
1587                                    var code = res && res.error && res.error.code;
1588                                    var msg  = res && res.error && res.error.message;
1589                                    var data = (res && res.data) || {};
1590
1591                                    if (code === 200 && msg === 'success') {
1592                                        toast('Login berhasil', 200);
1593                                        $msg.removeClass().text('Logging in').fadeTo(900, 1, function() {
1594                                            window.location = '/home';
1595                                        });
1596                                        return;
1597                                    }
1598
1599                                    if (code === 429 || msg === 'ratelimit') {
1600                                        $msg.removeClass().text('Terlalu banyak percobaan.').fadeIn(1000);
1601                                    } else if (msg === 'wrong') {
1602                                        $msg.removeClass().text('Salah Password').fadeIn(1000);
1603                                        $root.find('#verifikasi').html(verHtml);
1604                                    } else if (msg === 'banned') {
1605                                        $msg.removeClass().text('User di Banned').fadeIn(1000);
1606                                        $root.find('#verifikasi').html(verHtml);
1607                                    } else if (msg === 'empty') {
1608                                        $msg.removeClass().text('Silakan diisi').fadeIn(1000);
1609                                    } else if (msg === 'capempty') {
1610                                        $msg.removeClass().text('Verifikasi Kosong').fadeIn(1000);
1611                                        $root.find('#verifikasi').html(verHtml);
1612                                    } else if (msg === 'caperror') {
1613                                        $msg.removeClass().text('Verifikasi Salah').fadeIn(1000);
1614                                        $root.find('#verifikasi').html(verHtml);
1615                                    } else if (msg === 'recaperror') {
1616                                        $msg.removeClass().text('Recaptcha salah, coba lagi').fadeIn(1000);
1617                                    } else if (msg === 'iperror') {
1618                                        $msg.removeClass().text('IP Tidak Sesuai').fadeIn(1000);
1619                                        $root.find('#verifikasi').html(verHtml);
1620                                    } else if (msg === 'capexp') {
1621                                        $msg.removeClass().text('Captcha Expired').fadeIn(1000);
1622                                        $root.find('#verifikasi').html(verHtml);
1623                                    } else if (msg === 'cap') {
1624                                        $msg.removeClass().text('Isi Verifikasi').fadeIn(1000);
1625                                        $root.find('#verifikasi').html(verHtml);
1626                                        $root.find('.verifikasiform, #mverifikasiform').show();
1627                                        $root.find('.verifval').val('1');
1628                                    } else if (msg === 'turnnoevent') {
1629                                        window.location.reload();
1630                                    } else if (msg === 'turnblock') {
1631                                        $msg.removeClass().text('Insecure Device').fadeIn(1000);
1632                                    } else {
1633                                        $msg.removeClass().text('Login gagal, coba lagi').fadeIn(1000);
1634                                        $root.find('#verifikasi').html(verHtml);
1635                                    }
1636                                }
1637                                
1638                                function jtSubmitLogin(rootSel, captchaPath, captchaStyle) {
1639                                    var $root = $(rootSel);
1640                                    var $form = $root.find('form.form');
1641                                
1642                                    if ($form.length === 0) {
1643                                        $form = $root.find('.form');
1644                                    }
1645                                
1646                                    if ($form.length === 0) {
1647                                        console.error('Login form not found:', rootSel);
1648                                        return false;
1649                                    }
1650                                
1651                                    var $submitBtn = $root.find('.submit');
1652                                    var $msg = $root.find('#msgbox');
1653                                    var verHtml = jtGetCaptchaHtml(captchaPath, captchaStyle);
1654                                    var isMobile = (rootSel.indexOf('mobile') !== -1);
1655                                
1656                                    $msg.removeClass().text('Validating').fadeIn(1000);
1657                                
1658                                    $submitBtn.prop('disabled', true).addClass('disabled');
1659
1660                                    function unlockSubmit() {
1661                                        $submitBtn.prop('disabled', false).removeClass('disabled');
1662                                    }
1663
1664                                    function doLoginPost() {
1665                                        $.ajax({
1666                                            url: '/api/front/login',
1667                                            type: 'POST',
1668                                            data: $form.serialize(),
1669                                            dataType: 'json',
1670                                            headers: { 'X-CSRF-Token': window.JT_CSRF_TOKEN || '' },
1671                                            success: function(data) {
1672                                                jtHandleLoginResponse(data, $root, verHtml);
1673                                            }
1674                                        })
1675                                        .fail(function() {
1676                                            $msg.removeClass().text('Koneksi gagal').fadeIn(1000);
1677                                            $root.find('#verifikasi').html(verHtml);
1678                                        })
1679                                        .always(unlockSubmit);
1680                                    }
1681
1682                                    function afterTurnstile() {
1683                                        if (typeof jtWithRecaptchaLoginToken === 'function') {
1684                                            jtWithRecaptchaLoginToken($form, $msg, doLoginPost, unlockSubmit);
1685                                        } else {
1686                                            doLoginPost();
1687                                        }
1688                                    }
1689
1690                                    function afterIframe() {
1691                                        if (typeof jtWithTurnstileLogin === 'function') {
1692                                            jtWithTurnstileLogin($form, afterTurnstile);
1693                                        } else {
1694                                            afterTurnstile();
1695                                        }
1696                                    }
1697
1698                                    if (typeof jtWithIframeCaptchaLogin === 'function') {
1699                                        jtWithIframeCaptchaLogin($form, isMobile, afterIframe, function (msgText) {
1700                                            $msg.removeClass().text(msgText || 'Verifikasi Kosong').fadeIn(1000);
1701                                            unlockSubmit();
1702                                        });
1703                                    } else {
1704                                        afterIframe();
1705                                    }
1706                                
1707                                    return false;
1708                                }
1709                                
1710                                // Login desktop
1711                                $(document).on('click', '#desktoplogin .submit', function(e) {
1712                                    e.preventDefault();
1713                                
1714                                    jtSubmitLogin(
1715                                        '#desktoplogin',
1716                                        '/capimg.php',
1717                                        'width="40" height="30" style="border:1px #999 solid;"'
1718                                    );
1719                                
1720                                    return false;
1721                                });
1722                                
1723                                // Login mobile
1724                                $(document).on('click', '#mobilelogin .submit', function(e) {
1725                                    e.preventDefault();
1726                                
1727                                    jtSubmitLogin(
1728                                        '#mobilelogin',
1729                                        '/mcapimg.php',
1730                                        'width="600" height="88" style="width:100%;height:auto;border-radius:5px;"'
1731                                    );
1732                                
1733                                    return false;
1734                                });
1735                                
1736                                // Tekan Enter utk login
1737                                $(document).on('keypress', '#desktoplogin input, #mobilelogin input', function(e) {
1738                                    if (e.which === 13) {
1739                                        e.preventDefault();
1740                                
1741                                        var $root = $(this).closest('#desktoplogin, #mobilelogin');
1742                                
1743                                        if ($root.attr('id') === 'desktoplogin') {
1744                                            $('#desktoplogin .submit').trigger('click');
1745                                        } else {
1746                                            $('#mobilelogin .submit').trigger('click');
1747                                        }
1748                                
1749                                        return false;
1750                                    }
1751                                });
1752                                
1753                                function jtEnsureDriver(done) {
1754                                    if (window.driver && window.driver.js) {
1755                                        done();
1756                                        return;
1757                                    }
1758                                    if (window._jtDriverLoading) {
1759                                        window._jtDriverLoading.push(done);
1760                                        return;
1761                                    }
1762                                    window._jtDriverLoading = [done];
1763
1764                                    var link = document.createElement('link');
1765                                    link.rel = 'stylesheet';
1766                                    link.href = 'https://cdn.jsdelivr.net/npm/[email protected]/dist/driver.css';
1767                                    link.integrity = 'sha384-eyrYgcjChmzD338JTHFZssgJHOqqOZbajet8yZpCw8ESroLDi28BarMEKCImNGHC';
1768                                    link.crossOrigin = 'anonymous';
1769                                    document.head.appendChild(link);
1770
1771                                    var s = document.createElement('script');
1772                                    s.src = 'https://cdn.jsdelivr.net/npm/[email protected]/dist/driver.js.iife.js';
1773                                    s.integrity = 'sha384-BhR06AMz62Xn0o53z8itVS1vw4JslNckRFgOTa6/Dob0Agdmbbh8Dr9sDO2h18TO';
1774                                    s.crossOrigin = 'anonymous';
1775                                    s.onload = function () {
1776                                        var q = window._jtDriverLoading || [];
1777                                        window._jtDriverLoading = null;
1778                                        q.forEach(function (fn) {
1779                                            try { fn(); } catch (e) {}
1780                                        });
1781                                    };
1782                                    s.onerror = function () {
1783                                        window._jtDriverLoading = null;
1784                                    };
1785                                    document.head.appendChild(s);
1786                                }
1787
1788                                function scrollToLoginForm() {
1789                                    if (typeof jtWarmAuthScripts === 'function') jtWarmAuthScripts();
1790                                    var isDesktop = window.innerWidth >= 992;
1791                                    var formEl = document.getElementById(isDesktop ? 'desktoplogin' : 'mobilelogin');
1792
1793                                    if (!formEl) {
1794                                        return;
1795                                    }
1796
1797                                    formEl.scrollIntoView({
1798                                        behavior: 'smooth',
1799                                        block: 'center'
1800                                    });
1801
1802                                    setTimeout(function() {
1803                                        var inp = formEl.querySelector('input[type="text"], input[name="username"], input[name="BOX_username"]');
1804
1805                                        if (inp) {
1806                                            inp.focus();
1807                                        }
1808
1809                                        if (!inp) {
1810                                            return;
1811                                        }
1812
1813                                        jtEnsureDriver(function () {
1814                                            if (!window.driver || !window.driver.js) {
1815                                                return;
1816                                            }
1817
1818                                            var driver = window.driver.js.driver({
1819                                                popoverClass: 'driverjs-theme',
1820                                                showProgress: false,
1821                                                showButtons: [],
1822                                                overlayOpacity: 0.3,
1823                                                steps: [
1824                                                    {
1825                                                        element: inp,
1826                                                        popover: {
1827                                                            title: 'Harap Login',
1828                                                            description: 'Silakan masukkan username Anda',
1829                                                            side: 'bottom',
1830                                                            align: 'start',
1831                                                            showButtons: [],
1832                                                            nextBtnText: '',
1833                                                            prevBtnText: '',
1834                                                            doneBtnText: ''
1835                                                        }
1836                                                    }
1837                                                ],
1838                                                onDestroyStarted: () => driver.destroy(),
1839                                            });
1840                                            driver.drive();
1841
1842                                            var destroyDriver = function() {
1843                                                driver.destroy();
1844                                                inp.removeEventListener('input', destroyDriver);
1845                                                inp.removeEventListener('click', destroyDriver);
1846                                                inp.removeEventListener('focus', destroyDriver);
1847                                            };
1848                                            inp.addEventListener('input', destroyDriver, { once: true });
1849                                            inp.addEventListener('click', destroyDriver, { once: true });
1850                                            inp.addEventListener('focus', destroyDriver, { once: true });
1851                                        });
1852                                    }, 400);
1853                                }
1854                                
1855                                window.JT_LOGGED_IN = false;
1856                                
1857                                if (sessionStorage.getItem('jt_pending_action')) {
1858                                    $(document).ready(function() {
1859                                        scrollToLoginForm();
1860                                    });
1861                                }
1862                                </script>
1862
1863            
1864                        </div>
1865                    
1866                        
1867                        <!--<a href="/event">-->
1868                        <!--    <img src="https://img.viva88athenae.com//btnevent.png" alt="EVENT" height="24px"/>-->
1869                        <!--</a>-->
1870                    </div>
1871                    
1872                    <!-- Desktop Login End -->
1873                  </div>
1874                  
1875                  <div class="desktop-topbar-line"></div>
1876                
1877                
1878                
1879
1880        <div class="desktop-topbar-line d-flex align-items-center justify-content-between" style="margin-left:-2.0rem;margin-right:-2.0rem"></div>
1881            
1882                  <nav class="section desktop-mainnav d-flex align-items-center">
1883                    <!-- <a class="navbar-brand me-2 flex-shrink-0 navbar-brand-guest" href="/home" onclick="content('/home.php','#content',this); return false;"> -->
1884                    <a class="navbar-brand me-2 flex-shrink-0" href="/home" onclick="openPage('home'); return false;">
1885                      <img src="/images/logo.png?v=1790436337" alt="Logo" class="logo">
1886                    </a>
1887                    <div class="d-flex align-items-stretch h-100 ms-auto" style="overflow-x:auto;scrollbar-width:none;">
1888                                            <a href="/home"
1889                         onclick="openPage('home',this); return false;"                         class="desktop-nav-link"
1890                         data-nav="home">
1891                                                  <img src="https://img.viva88athenae.com/new/menu-home.png?v=1790436337" alt="">
1892                                                <span>Home</span>
1893                      </a>
1894                                            <a href="/togel"
1895                         onclick="window.JT_LOGGED_IN ? content('/togel.php','#content',this) : (sessionStorage.setItem('jt_pending_action', JSON.stringify({type:'togel'})), scrollToLoginForm()); return false;"                         class="desktop-nav-link"
1896                         data-nav="togel">
1897                                                  <img src="https://img.viva88athenae.com/new/menu-togel.png?v=1790436337" alt="">
1898                                                <span>Togel</span>
1899                      </a>
1900                                            <a href="/slot"
1901                         onclick="showProviders('slot',this); return false;"                         class="desktop-nav-link"
1902                         data-nav="slot">
1903                                                  <img src="https://img.viva88athenae.com/new/menu-slot.png?v=1790436337" alt="">
1904                                                <span>Slot</span>
1905                      </a>
1906                                            <a href="/casino"
1907                         onclick="showProviders('casino',this); return false;"                         class="desktop-nav-link"
1908                         data-nav="casino">
1909                                                  <img src="https://img.viva88athenae.com/new/menu-casino.png?v=1790436337" alt="">
1910                                                <span>Casino</span>
1911                      </a>
1912                                            <a href="/sport"
1913                         onclick="openPage('sport',this); return false;"                         class="desktop-nav-link"
1914                         data-nav="sport">
1915                                                  <img src="https://img.viva88athenae.com/new/menu-sport.png?v=1790436337" alt="">
1916                                                <span>Sport</span>
1917                      </a>
1918                                            <a href="/sabung"
1919                         onclick="openPage('sabung',this); return false;"                         class="desktop-nav-link"
1920                         data-nav="sabung">
1921                                                  <img src="https://img.viva88athenae.com/new/menu-sabung.png?v=1790436337" alt="">
1922                                                <span>Sabung</span>
1923                      </a>
1924                                            <a href="/arcade"
1925                         onclick="showProviders('arcade',this); return false;"                         class="desktop-nav-link"
1926                         data-nav="arcade">
1927                                                  <img src="https://img.viva88athenae.com/new/menu-arcade.png?v=1790436337" alt="">
1928                                                <span>Arcade</span>
1929                      </a>
1930                                            <a href="/interactive"
1931                         onclick="showProviders('interactive',this); return false;"                         class="desktop-nav-link"
1932                         data-nav="interactive">
1933                                                  <img src="https://img.viva88athenae.com/new/menu-interactive.png?v=1790436337" alt="">
1934                                                <span>Interactive</span>
1935                      </a>
1936                                            <a href="/kupon"
1937                         onclick="window.JT_LOGGED_IN ? content('/kupon.php','#content',this) : (sessionStorage.setItem('jt_pending_action', JSON.stringify({type:'kupon'})), scrollToLoginForm()); return false;"                         class="desktop-nav-link"
1938                         data-nav="kupon">
1939                                                  <img src="https://img.viva88athenae.com/new/menu-kupon.png?v=1790436337" alt="">
1940                                                <span>Kupon</span>
1941                      </a>
1942                                            <a href="/promosi"
1943                         onclick="openPage('promosi',this); return false;"                         class="desktop-nav-link"
1944                         data-nav="promosi">
1945                                                  <img src="https://img.viva88athenae.com/new/menu-promo.png?v=1790436337" alt="">
1946                                                <span>Promosi</span>
1947                      </a>
1948                                            <a href="/event"
1949                         onclick="openPage('event',this); return false;"                         class="desktop-nav-link"
1950                         data-nav="event">
1951                                                  <img src="https://img.viva88athenae.com/new/menu-event.png?v=1790436337" alt="">
1952                                                <span>Event</span>
1953                      </a>
1954                                          </div>
1955                  </nav>
1956            
1957                </div>
1958        <!-- WHEEL -->
1959                <!-- WHEEL -->
1960        
1961
1962            
1963                <nav class="navbar px-3 d-md-none" style="z-index: 1046">
1964                  <div class="w-100 d-flex justify-content-between align-items-center ps-3">
1965                    <a class="navbar-brand" href="/home" onclick="content('/home.php','#content',this); return false;">
1966                      <img src="/images/logo.png?v=1790436337" alt="Logo" class="logo">
1967                    </a>
1968                                            <div class="d-flex align-items-center gap-2 pe-2">
1969                          <button class="btn btn-transparent py-0 px-2" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasRight" aria-controls="offcanvasRight" aria-label="Menu kontak">
1970                            <i class="bi bi-person-lines-fill" style="font-size: 20px; color: var(--primary-text-color)" aria-hidden="true"></i>
1971                          </button>
1972                        </div>
1973                                              </div>
1974                  </div>
1975                </nav>
1976                
1977
1978
1979                
1980                
1981
1982<style>
1983
1984        .banner {
1985              aspect-ratio: 1920 / 380;
1986              width: 100%;
1987              object-fit: cover;
1988              background: black
1989        }
1990
1991        @media only screen and (max-width: 1000px) {
1992
1993            .banner {
1994                aspect-ratio: 600 / 300;
1995            }
1996
1997        }
1998
1999</style>
2000
2001<div class="carousel slide" id="banner-carousel" data-bs-ride="carousel">
2002  <div class="carousel-indicators">
2003                         <button type="button" data-bs-target="#banner-carousel" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
2004                                <button type="button" data-bs-target="#banner-carousel" data-bs-slide-to="1" aria-label="Slide 2"></button>
2005                                <button type="button" data-bs-target="#banner-carousel" data-bs-slide-to="2" aria-label="Slide 3"></button>
2006                                <button type="button" data-bs-target="#banner-carousel" data-bs-slide-to="3" aria-label="Slide 4"></button>
2007                                <button type="button" data-bs-target="#banner-carousel" data-bs-slide-to="4" aria-label="Slide 5"></button>
2008                                <button type="button" data-bs-target="#banner-carousel" data-bs-slide-to="5" aria-label="Slide 6"></button>
2009                                <button type="button" data-bs-target="#banner-carousel" data-bs-slide-to="6" aria-label="Slide 7"></button>
2010                                <button type="button" data-bs-target="#banner-carousel" data-bs-slide-to="7" aria-label="Slide 8"></button>
2011                                <button type="button" data-bs-target="#banner-carousel" data-bs-slide-to="8" aria-label="Slide 9"></button>
2012              </div>
2013    <div class="carousel-inner" style="height: 100%">
2014                    <div class="carousel-item active" style="height: 100%">
2015    
2016                <a >
2017    
2018                    <img
2019                        src="/images/upload-Slides-20260409161453.webp"
2020                        class="d-block w-100 banner"
2021                        alt=""
2022                        fetchpriority="high"                    >
2023    
2024                </a>
2025    
2026            </div>
2027                    <div class="carousel-item " style="height: 100%">
2028    
2029                <a >
2030    
2031                    <img
2032                        src="/images/upload-Slides-20260409161548.webp"
2033                        class="d-block w-100 banner"
2034                        alt=""
2035                                            >
2036    
2037                </a>
2038    
2039            </div>
2040                    <div class="carousel-item " style="height: 100%">
2041    
2042                <a >
2043    
2044                    <img
2045                        src="/images/upload-Slides-20251008093215.jpg"
2046                        class="d-block w-100 banner"
2047                        alt=""
2048                                            >
2049    
2050                </a>
2051    
2052            </div>
2053                    <div class="carousel-item " style="height: 100%">
2054    
2055                <a >
2056    
2057                    <img
2058                        src="/images/upload-Slides-20251008093231.jpg"
2059                        class="d-block w-100 banner"
2060                        alt=""
2061                                            >
2062    
2063                </a>
2064    
2065            </div>
2066                    <div class="carousel-item " style="height: 100%">
2067    
2068                <a >
2069    
2070                    <img
2071                        src="/images/upload-Slides-20251008093248.jpg"
2072                        class="d-block w-100 banner"
2073                        alt=""
2074                                            >
2075    
2076                </a>
2077    
2078            </div>
2079                    <div class="carousel-item " style="height: 100%">
2080    
2081                <a >
2082    
2083                    <img
2084                        src="/images/upload-Slides-20251008093305.jpg"
2085                        class="d-block w-100 banner"
2086                        alt=""
2087                                            >
2088    
2089                </a>
2090    
2091            </div>
2092                    <div class="carousel-item " style="height: 100%">
2093    
2094                <a >
2095    
2096                    <img
2097                        src="/images/upload-Slides-20251008093320.jpg"
2098                        class="d-block w-100 banner"
2099                        alt=""
2100                                            >
2101    
2102                </a>
2103    
2104            </div>
2105                    <div class="carousel-item " style="height: 100%">
2106    
2107                <a >
2108    
2109                    <img
2110                        src="https://img.viva88athenae.com/banner/mgl-25.jpg"
2111                        class="d-block w-100 banner"
2112                        alt=""
2113                                            >
2114    
2115                </a>
2116    
2117            </div>
2118                    <div class="carousel-item " style="height: 100%">
2119    
2120                <a >
2121    
2122                    <img
2123                        src="https://img.viva88athenae.com/banner/slider-fgs.jpg"
2124                        class="d-block w-100 banner"
2125                        alt=""
2126                                            >
2127    
2128                </a>
2129    
2130            </div>
2131            </div>
2132</div>
2133
2134                <div class="section marquee-bar">
2135                  <div class="marquee-date ps-2">
2136                    <span id="datetime"></span>
2137                    <i class="bi bi-volume-up-fill ms-1 secondary-text-color"></i>
2138                  </div>
2139                  <div class="marquee-text">
2140                    <div class="marquee-runner" id="marqueeRunner">
2141                      <span>Selamat Datang di Situs BBNI4D!! Link Alternatif BBNI4D : https://bbni4dsignature.com, https://bbni4dmatcha.com, https://bbni4dsmack.com</span>
2142                    </div>
2143                  </div>
2144                </div>
2145
2146                <div class="p-2">
2147                    <div class="d-md-none">
2148                    <div id="lobbyMenuWrap" class="splide pb-4 mt-2">
2149                      <div class="splide__track">
2150                        <ul class="splide__list">
2151                                                    <li class="splide__slide">
2152                            <a href="/home"
2153                               onclick="openPage('home',this); return false;"
2154                               class="lobby-menu"
2155                               data-nav="home">
2156                              <img src="https://img.viva88athenae.com/new/menu-home.png?v=1790436337" alt="">
2157                              <small>Home</small>
2158                            </a>
2159                          </li>
2160                                                    <li class="splide__slide">
2161                            <a href="/togel"
2162                               onclick="window.JT_LOGGED_IN ? content('/togel.php','#content',this) : (sessionStorage.setItem('jt_pending_action', JSON.stringify({type:'togel'})), scrollToLoginForm()); return false;"
2163                               class="lobby-menu"
2164                               data-nav="togel">
2165                              <img src="https://img.viva88athenae.com/new/menu-togel.png?v=1790436337" alt="">
2166                              <small>Togel</small>
2167                            </a>
2168                          </li>
2169                                                    <li class="splide__slide">
2170                            <a href="/kupon"
2171                               onclick="window.JT_LOGGED_IN ? content('/kupon.php','#content',this) : (sessionStorage.setItem('jt_pending_action', JSON.stringify({type:'kupon'})), scrollToLoginForm()); return false;"
2172                               class="lobby-menu"
2173                               data-nav="kupon">
2174                              <img src="https://img.viva88athenae.com/new/menu-kupon.png?v=1790436337" alt="">
2175                              <small>Kupon</small>
2176                            </a>
2177                          </li>
2178                                                    <li class="splide__slide">
2179                            <a href="/slot"
2180                               onclick="showProviders('slot',this); return false;"
2181                               class="lobby-menu"
2182                               data-nav="slot">
2183                              <img src="https://img.viva88athenae.com/new/menu-slot.png?v=1790436337" alt="">
2184                              <small>Slot</small>
2185                            </a>
2186                          </li>
2187                                                    <li class="splide__slide">
2188                            <a href="/casino"
2189                               onclick="showProviders('casino',this); return false;"
2190                               class="lobby-menu"
2191                               data-nav="casino">
2192                              <img src="https://img.viva88athenae.com/new/menu-casino.png?v=1790436337" alt="">
2193                              <small>Casino</small>
2194                            </a>
2195                          </li>
2196                                                    <li class="splide__slide">
2197                            <a href="/sport"
2198                               onclick="openPage('sport',this); return false;"
2199                               class="lobby-menu"
2200                               data-nav="sport">
2201                              <img src="https://img.viva88athenae.com/new/menu-sport.png?v=1790436337" alt="">
2202                              <small>Sport</small>
2203                            </a>
2204                          </li>
2205                                                    <li class="splide__slide">
2206                            <a href="/sabung"
2207                               onclick="openPage('sabung',this); return false;"
2208                               class="lobby-menu"
2209                               data-nav="sabung">
2210                              <img src="https://img.viva88athenae.com/new/menu-sabung.png?v=1790436337" alt="">
2211                              <small>Sabung</small>
2212                            </a>
2213                          </li>
2214                                                    <li class="splide__slide">
2215                            <a href="/arcade"
2216                               onclick="showProviders('arcade',this); return false;"
2217                               class="lobby-menu"
2218                               data-nav="arcade">
2219                              <img src="https://img.viva88athenae.com/new/menu-arcade.png?v=1790436337" alt="">
2220                              <small>Arcade</small>
2221                            </a>
2222                          </li>
2223                                                    <li class="splide__slide">
2224                            <a href="/interactive"
2225                               onclick="showProviders('interactive',this); return false;"
2226                               class="lobby-menu"
2227                               data-nav="interactive">
2228                              <img src="https://img.viva88athenae.com/new/menu-interactive.png?v=1790436337" alt="">
2229                              <small>Interactive</small>
2230                            </a>
2231                          </li>
2232                                                  </ul>
2233                      </div>
2234                    </div>
2235                    </div>
2236
2237                    
2237<script>
2238                    document.addEventListener('DOMContentLoaded', function () {
2239                      var lobbyEl = document.getElementById('lobbyMenuWrap');
2240                      if (lobbyEl && !lobbyEl.classList.contains('is-initialized')) {
2241                        var mountLobby = function () {
2242                          if (!lobbyEl || typeof Splide === 'undefined' || lobbyEl.classList.contains('is-initialized')) return;
2243                          new Splide('#lobbyMenuWrap', {
2244                            type: 'slide', perPage: 5, perMove: 5,
2245                            gap: '8px', pagination: true, arrows: false, drag: true,
2246                          }).mount();
2247                        };
2248                        if (typeof ensureSplide === 'function') {
2249                          ensureSplide().then(mountLobby).catch(function () {});
2250                        } else {
2251                          mountLobby();
2252                        }
2253                      }
2254
2255                      if (typeof initUserareaShell === 'function') {
2256                        initUserareaShell();
2257                      } else if (typeof initGuestShell === 'function') {
2258                        initGuestShell();
2259                      } else if (typeof content === 'function') {
2260                        var isDesktop = window.innerWidth >= 768;
2261                        var homeMenu = isDesktop
2262                          ? document.querySelector('.desktop-nav-link[data-nav="home"]')
2263                          : document.querySelector('#lobbyMenuWrap .lobby-menu[data-nav="home"]');
2264                        content('/home.php', '#content', homeMenu);
2265                      }
2266                    });
2267                    </script>
2267
2268                </div>
2269                
2270                    
2271                <!-- Mobile Login Start -->
2272            
2273                <div id="mobilelogin" class="d-block d-lg-none mb-3">
2274                        <form class="login-form form d-flex flex-column gap-2 align-items-center" style="padding: 0px; padding-top: 16px" role="form">
2275                        <div id="msgbox" style="font-size: 1rem; width: 100%"></div>
2276                        <div class="input-group login-field">
2277                            <span class="input-group-text prepend mobile-only "><div class="h-100 center"><i class="bi bi-person-circle prepend-icon"></i></div></span>
2278                            <input type="text" name="username" class="form-control login-input-field username" placeholder="Username" aria-label="Username">
2279                        </div>
2280                        <div class="input-group login-field">
2281                            <span class="input-group-text mobile-only prepend"><div class="h-100 center"><i class="bi bi-shield-lock-fill prepend-icon"></i></div></span>
2282                            <input type="password" name="password" class="form-control login-input-field password" placeholder="Password" aria-label="Password">
2283                        </div>
2284                        
2285                        <!-- captcha -->
2286                       
2287                        <div id="mverifikasiform" class="w-100" style="">
2288                            
2289                            <span id="verifikasi"><img src="/mcapimg.php" width="600" height="88" style="width:100%;height:auto;border-radius: 5px;" alt="Kode verifikasi"></span>
2290                            <div class="input-group login-field mt-1">
2291                                <span class="input-group-text mobile-only prepend"><div class="h-100 center"><i class="bi bi-person-fill-check prepend-icon"></i></div></span>
2292                                <input type="text" class="form-control login-input-field" name="verifikasi" id="mverform" autocomplete="off" placeholder="Verifikasi">
2293                            </div>
2294                        </div>
2295                
2296                        <input type="hidden" name="verif" id="verifval" class="verifval" value="1">
2297                
2298                        <!-- end captcha -->
2299                        
2300                        <label style="font-size:12px;display:flex;align-items:center;margin-top:2px;margin-bottom:4px;cursor:pointer;">
2301                            <input class="login-field" type="checkbox" id="rememberMe" name="remember" style="margin-right:4px;width:12px;height:12px;cursor:pointer;"> <span style="white-space: nowrap;">Remember Me</span>
2302                        </label>
2303                
2304                        <!--<button type="submit" value="Masuk" class="btn btn-masuk fw-bold p-0 px-2 submit">Masuk</button>-->
2305                        <button type="button" class="btn btn-masuk fw-bold p-0 px-2 submit w-100 d-flex justify-content-center align-items-center" style="height: 36px; border-radius: 8px">Masuk</button>
2306                        <button type="button" class="btn btn-daftar btn-info btn-daftar-mobile fw-bold p-0 px-2 mobile-only" onclick="openDaftarMobile()">Daftar Sekarang</button>
2307
2308                        
2309                                                    <button type="button" class="btn btn-tele fw-bold p-0 px-2 mobile-only" onclick="window.open('https://telegram.me/BBNI4D_bot', '_blank')"><i class="bi bi-telegram me-2" style="color: #0088cc"></i>Main di Telegram</button>
2310                                        
2311                        
2312                        <input type="hidden" name="task" value="login">    
2313                        <input type="hidden" name="iscaptchalogin" value="1">
2314                        <input type="hidden" name="isrecaptchalogin" value="0">
2315                        <input type="hidden" name="recaptcha_login_token" value="">
2316                        <input type="hidden" name="fp_event_id" value="">
2317                        <input type="hidden" name="fp_visitor_id" value="">
2318                        <input type="hidden" name="loginmobile" value="DzXTrNjavKQ4o2iIC925HBtf2D7Nmpmjl1COVBHexeE=">
2319                    </form>
2320
2321                                        
2322                    <a href="/wap" class="mt-4" style="display: grid; place-items: center; font-size: 1rem; cursor: pointer; color: var(--menu-item-color)">WAP</a>
2323                
2324                </div>
2325            
2326                <!-- Mobile Login End -->
2327
2328                
2328<script>
2329                    function openDaftar() {
2330                        if (typeof openRegister === 'function') {
2331                            openRegister('desktop');
2332                        } else {
2333                            window.location.href = '/register';
2334                        }
2335                    }
2336                    
2337                    function openDaftarMobile() {
2338                        if (typeof openRegister === 'function') {
2339                            openRegister('mobile');
2340                            $("#content").get(0).scrollIntoView({behavior: 'smooth'});
2341                        } else {
2342                            window.location.href = '/register';
2343                        }
2344                    }
2345                    
2346                    
2347                </script>
2347
2348
2349                
2350    <div class="modal fade" id="modal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
2351      <div class="modal-dialog modal-dialog-centered modal-lg modal-fullscreen-sm-down">
2352        <div id="modal-content" class="modal-content rounded-0 primary-background-color">
2353        </div>
2354      </div>
2355    </div>
2356
2357    <div id="content" class="section p-2" style="position:relative;min-height:60vh;">
2358<div class="home-view">
2359            
2360        <div class="home-section">
2361        <div class="section-title">
2362            <i class="bi bi-bar-chart-fill me-1"></i>
2363            Pasaran Togel        </div>
2364        <div id="togel-panel" class="togel-grid-wrap togel-panel" style="margin-bottom: 20px;margin-top: 15px;">
2365                        <div class="togel-panel-more"><i class="bi bi-chevron-double-down"></i></div>
2366        </div>
2367    </div>
2368
2369    
2370        
2371        <div class="home-section">
2372        <div class="section-title">
2373            <i class="bi bi-fire me-1"></i>
2374            Hot Slot Games        </div>
2375        <div class="game-scroll-wrap">
2376                    <div class="game-card" onclick="launchGame('2p6jSAStqDyueTZP_frU92ww5W9Vs-JzbMe38ZygZOw', 450, 800)">
2377            <div class="game-card-img-box">
2378                <img class="js-game-image" src="https://img.viva88athenae.com/new/pg/images/mahjong-ways.png?v=1" data-provider="pg" alt="" loading="lazy" decoding="async">
2379                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2380                <span class="game-flag-badge game-flag-badge--hot">HOT</span>
2381                
2382            </div>
2383            
2384        </div>        <div class="game-card" onclick="launchGame('hPYqNGE3dUr6MnzVBgdNhVDKdCs89SnwmvcXugiKZP8', 450, 800)">
2385            <div class="game-card-img-box">
2386                <img class="js-game-image" src="https://img.viva88athenae.com/new/pg/images/mahjong-ways2.png?v=1" data-provider="pg" alt="" loading="lazy" decoding="async">
2387                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2388                <span class="game-flag-badge game-flag-badge--hot">HOT</span>
2389                
2390            </div>
2391            
2392        </div>        <div class="game-card" onclick="launchGame('ZzmHUXecTYLMemjuDu1rFbLrGBRodmGVUCbrqzLAL0k', 450, 800)">
2393            <div class="game-card-img-box">
2394                <img class="js-game-image" src="https://img.viva88athenae.com/new/pg/images/wild-bounty-showdown.png?v=1" data-provider="pg" alt="" loading="lazy" decoding="async">
2395                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2396                <span class="game-flag-badge game-flag-badge--hot">HOT</span>
2397                
2398            </div>
2399            
2400        </div>        <div class="game-card" onclick="launchGame('UE9f7ONCiiKHTKsxlGT-aiP1BrhoN3XXFWVONHeuzlI', 1200, 800)">
2401            <div class="game-card-img-box">
2402                <img class="js-game-image" src="https://img.viva88athenae.com/new/pp/images/vs20olympx.png?v=1" data-provider="pp" alt="" loading="lazy" decoding="async">
2403                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2404                <span class="game-flag-badge game-flag-badge--hot">HOT</span>
2405                
2406            </div>
2407            
2408        </div>        <div class="game-card" onclick="launchGame('Rj9EvSQAc6dInBeR7MoS9MmmWP1lRjOLutXB91MmRzIRIt5sh2iazDOHctXHt5dN', 1200, 800)">
2409            <div class="game-card-img-box">
2410                <img class="js-game-image" src="https://img.viva88athenae.com/new/pp/images/vswaysmahwblck.png?v=1" data-provider="pp" alt="" loading="lazy" decoding="async">
2411                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2412                <span class="game-flag-badge game-flag-badge--hot">HOT</span>
2413                
2414            </div>
2415            
2416        </div>        <div class="game-card" onclick="launchGame('wrBaRtMb2ev9rqI2eOlFeuCtWqAagmQF6MSwgLWiQ9FTmFPg7yECQxcT344C9YnK', 1200, 800)">
2417            <div class="game-card-img-box">
2418                <img class="js-game-image" src="https://img.viva88athenae.com/new/pp/images/vs20olympgold.png?v=1" data-provider="pp" alt="" loading="lazy" decoding="async">
2419                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2420                <span class="game-flag-badge game-flag-badge--hot">HOT</span>
2421                
2422            </div>
2423            
2424        </div>        <div class="game-card" onclick="launchGame('U74IE3Z295Ko1Lw2IMWPss4w3IXym3hrlJilMscgdB4', 450, 800)">
2425            <div class="game-card-img-box">
2426                <img class="js-game-image" src="https://img.viva88athenae.com/new/cq9/images/VPCQS28.png?v=1" data-provider="cq9" alt="" loading="lazy" decoding="async">
2427                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2428                
2429                
2430            </div>
2431            
2432        </div>        <div class="game-card" onclick="launchGame('lA45gelOeKtXpArHx8YXe2pf9PNF2T9t6MB-2tqq9tQ', 450, 800)">
2433            <div class="game-card-img-box">
2434                <img class="js-game-image" src="https://img.viva88athenae.com/new/mgw/images/6059.png?v=1" data-provider="mgw" alt="" loading="lazy" decoding="async">
2435                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2436                <span class="game-flag-badge game-flag-badge--hot">HOT</span>
2437                
2438            </div>
2439            
2440        </div>        <div class="game-card" onclick="launchGame('LqvOhZwQgB4-xzZjI4domR74s8hOSdO5IVNdMEKHGeqD1aEannb_vfNk0rdmBUS_', 1200, 800)">
2441            <div class="game-card-img-box">
2442                <img class="js-game-image" src="https://img.viva88athenae.com/new/mg/images/p5_mahjongmaxwin.png?v=1" data-provider="mg" alt="" loading="lazy" decoding="async">
2443                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2444                
2445                
2446            </div>
2447            
2448        </div>        <div class="game-card" onclick="launchGame('-Nro3KgsZzsMxKFMkQJ5VYau9rIrdUtyKvOMVo0nN_RcNzuNM0Uxo-C1-HLZEe5Z', 450, 800)">
2449            <div class="game-card-img-box">
2450                <img class="js-game-image" src="https://img.viva88athenae.com/new/fgs/images/S5G-H5-99950.png?v=1" data-provider="fgs" alt="" loading="lazy" decoding="async">
2451                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2452                
2453                
2454            </div>
2455            
2456        </div>        </div>
2457    </div>
2458    
2459        
2460        <div class="home-section">
2461        <div class="section-title">
2462            <i class="bi bi-suit-heart-fill me-1"></i>
2463            Hot Casino Games        </div>
2464        <div class="game-scroll-wrap">
2465                    <div class="game-card" onclick="launchGame('8HpdBgOBpVMRuZjtGTySJMtmPd8Of-CkqA1ArmI3kS8', 1080, 700)">
2466            <div class="game-card-img-box">
2467                <img class="js-game-image" src="https://img.viva88athenae.com/new/pp/images/1301.png?v=1" data-provider="pplc" alt="" loading="lazy" decoding="async">
2468                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2469                
2470                
2471            </div>
2472            
2473        </div>        <div class="game-card" onclick="launchGame('Zv83RNLYAuxqTNW-JmdeoUCGH2YrFhfPvW0nXZjiMEQ', 1080, 700)">
2474            <div class="game-card-img-box">
2475                <img class="js-game-image" src="https://img.viva88athenae.com/new/pp/images/1101.png?v=1" data-provider="pplc" alt="" loading="lazy" decoding="async">
2476                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2477                
2478                
2479            </div>
2480            
2481        </div>        <div class="game-card" onclick="launchGame('fyg4YHR7iIYmqHGEeSHJgBmenRiAJ1I3uVGKEGecKPw', 1080, 700)">
2482            <div class="game-card-img-box">
2483                <img class="js-game-image" src="https://img.viva88athenae.com/new/pp/images/801.png?v=1" data-provider="pplc" alt="" loading="lazy" decoding="async">
2484                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2485                
2486                
2487            </div>
2488            
2489        </div>        <div class="game-card" onclick="launchGame('SL1be_E6J1XVQnxaVD6JV1eEsjjZGNx5fJ-WDbjhMgE', 1080, 700)">
2490            <div class="game-card-img-box">
2491                <img class="js-game-image" src="https://img.viva88athenae.com/new/evo/images/icefishing.png?v=1" data-provider="evo" alt="" loading="lazy" decoding="async">
2492                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2493                
2494                
2495            </div>
2496            
2497        </div>        <div class="game-card" onclick="launchGame('hSTyO09ddHdZqOTzA-Y9YiUsBCU9lY3l6naT5yWEQmA', 1080, 700)">
2498            <div class="game-card-img-box">
2499                <img class="js-game-image" src="https://img.viva88athenae.com/new/evo/images/crazytime.png?v=1" data-provider="evo" alt="" loading="lazy" decoding="async">
2500                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2501                
2502                
2503            </div>
2504            
2505        </div>        <div class="game-card" onclick="launchGame('pwJIS00PdPhWQ2Q3LeM9yZQzYSXrB6F2t6IOcpgbr6uNnnjuHvMHd2oxF89owEhY', 1080, 700)">
2506            <div class="game-card-img-box">
2507                <img class="js-game-image" src="https://img.viva88athenae.com/new/ion/images/ion_roulette.png?v=1" data-provider="ion" alt="" loading="lazy" decoding="async">
2508                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2509                
2510                
2511            </div>
2512            
2513        </div>        <div class="game-card" onclick="launchGame('SA5uv1F8lsqLR00wFdXuvZip7rDiwNW-_WN-Rp9cPmAEMKc4HMLfMz4eHo2su-Cy', 1080, 700)">
2514            <div class="game-card-img-box">
2515                <img class="js-game-image" src="https://img.viva88athenae.com/new/evo/images/lightningstorm.png?v=1" data-provider="evo" alt="" loading="lazy" decoding="async">
2516                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2517                
2518                
2519            </div>
2520            
2521        </div>        <div class="game-card" onclick="launchGame('TJU8t5-GzSfEa1Yg4m8k6nfgQhWZa58gsZvaWvq-34I', 1080, 700)">
2522            <div class="game-card-img-box">
2523                <img class="js-game-image" src="https://img.viva88athenae.com/new/sx/images/lobb
2523y.png?v=1" data-provider="sx" alt="" loading="lazy" decoding="async">
2524                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2525                
2526                
2527            </div>
2528            
2529        </div>        <div class="game-card" onclick="launchGame('831swpcQ5EGZHYvNeyAssmFYky1iL_5y22nmJS2Qs9VW008nG4rWsqdF8CWTS5tR', 1080, 700)">
2530            <div class="game-card-img-box">
2531                <img class="js-game-image" src="https://img.viva88athenae.com/new/sbo/images/sbol_roulette.png?v=1" data-provider="sbol" alt="" loading="lazy" decoding="async">
2532                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2533                
2534                
2535            </div>
2536            
2537        </div>        <div class="game-card" onclick="launchGame('b1auoSJ0bgbRXE4OCg-zkFnJImFnTjg9hAyV2pb7N6k', 1080, 700)">
2538            <div class="game-card-img-box">
2539                <img class="js-game-image" src="https://img.viva88athenae.com/new/ptlc/images/rol.png?v=1" data-provider="ptlc" alt="" loading="lazy" decoding="async">
2540                <div class="game-img-placeholder"><i class="bi bi-controller"></i></div>
2541                
2542                
2543            </div>
2544            
2545        </div>        </div>
2546    </div>
2547    
2548        
2549        <div class="home-section">
2550        <div class="section-title">
2551            <i class="bi bi-trophy-fill me-1"></i>
2552            Sport Matches        </div>
2553        <div class="match-slider-wrap">
2554            <div id="sportMatchSplide" class="splide">
2555                <div class="splide__track">
2556                    <ul class="splide__list">
2557                                                <li class="splide__slide">
2558                            <div class="match-card-home">
2559                                <div class="league-name">ENGLISH PREMIER LEAGUE</div>
2560                                <div class="kickoff-time">October 10, 2026 — 18:30 WIB</div>
2561                                <div class="match-main-row">
2562                                    <div class="team-col">
2563                                        <img src="https://cdn.sportnanoapi.com/football/team/d6f5debc456da1119256ab66462ab510.png" class="team-logo" alt="">
2564                                        <div class="team-name">Arsenal</div>
2565                                    </div>
2566                                    <div class="score-col">
2567                                        <div class="score-value">0 : 0</div>
2568                                        <a href="javascript:void(0)" class="bet-btn" onclick="jtSboBet(145100346)">BET NOW</a>
2569                                    </div>
2570                                    <div class="team-col">
2571                                        <img src="https://cdn.sportnanoapi.com/football/team/cd46d2ed1d364308dc206c97b48ce556.png" class="team-logo" alt="">
2572                                        <div class="team-name">Leeds United</div>
2573                                    </div>
2574                                </div>
2575                                <div class="match-odds-row">
2576                                    <div class="odds-col">
2577                                        0.75                                        <small style="margin-left: 5px;">0.50</small>
2578                                    </div>
2579                                    <div class="odds-spacer"></div>
2580                                    <div class="odds-col">
2581                                        -0.75                                        <small style="margin-left: 5px;">-0.60</small>
2582                                    </div>
2583                                </div>
2584                            </div>
2585                        </li>
2586                                                <li class="splide__slide">
2587                            <div class="match-card-home">
2588                                <div class="league-name">ENGLISH PREMIER LEAGUE</div>
2589                                <div class="kickoff-time">October 10, 2026 — 21:00 WIB</div>
2590                                <div class="match-main-row">
2591                                    <div class="team-col">
2592                                        <img src="https://cdn.sportnanoapi.com/football/team/a0cf8f551e9440acb3f4ff533dcc58a4.png" class="team-logo" alt="">
2593                                        <div class="team-name">Chelsea</div>
2594                                    </div>
2595                                    <div class="score-col">
2596                                        <div class="score-value">0 : 0</div>
2597                                        <a href="javascript:void(0)" class="bet-btn" onclick="jtSboBet(145100428)">BET NOW</a>
2598                                    </div>
2599                                    <div class="team-col">
2600                                        <img src="https://cdn.sportnanoapi.com/football/team/240b30d333c97d293752ab7afd77ccd6.png" class="team-logo" alt="">
2601                                        <div class="team-name">Bournemouth AFC</div>
2602                                    </div>
2603                                </div>
2604                                <div class="match-odds-row">
2605                                    <div class="odds-col">
2606                                        0.5                                        <small style="margin-left: 5px;">0.66</small>
2607                                    </div>
2608                                    <div class="odds-spacer"></div>
2609                                    <div class="odds-col">
2610                                        -0.5                                        <small style="margin-left: 5px;">-0.76</small>
2611                                    </div>
2612                                </div>
2613                            </div>
2614                        </li>
2615                                                <li class="splide__slide">
2616                            <div class="match-card-home">
2617                                <div class="league-name">
2617SPAIN LA LIGA</div>
2618                                <div class="kickoff-time">October 10, 2026 — 23:30 WIB</div>
2619                                <div class="match-main-row">
2620                                    <div class="team-col">
2621                                        <img src="https://cdn.sportnanoapi.com/football/team/f378eb1ea04e53999b89051aa3244de6.png" class="team-logo" alt="">
2622                                        <div class="team-name">Barcelona</div>
2623                                    </div>
2624                                    <div class="score-col">
2625                                        <div class="score-value">0 : 0</div>
2626                                        <a href="javascript:void(0)" class="bet-btn" onclick="jtSboBet(147215606)">BET NOW</a>
2627                                    </div>
2628                                    <div class="team-col">
2629                                        <img src="https://cdn.sportnanoapi.com/football/team/36bf5bf0c8fdf08c1270124808f060e1.png" class="team-logo" alt="">
2630                                        <div class="team-name">Getafe</div>
2631                                    </div>
2632                                </div>
2633                                <div class="match-odds-row">
2634                                    <div class="odds-col">
2635                                        2.5                                        <small style="margin-left: 5px;">0.82</small>
2636                                    </div>
2637                                    <div class="odds-spacer"></div>
2638                                    <div class="odds-col">
2639                                        -2.5                                        <small style="margin-left: 5px;">-0.92</small>
2640                                    </div>
2641                                </div>
2642                            </div>
2643                        </li>
2644                                                <li class="splide__slide">
2645                            <div class="match-card-home">
2646                                <div class="league-name">ENGLISH PREMIER LEAGUE</div>
2647                                <div class="kickoff-time">October 10, 2026 — 21:00 WIB</div>
2648                                <div class="match-main-row">
2649                                    <div class="team-col">
2650                                        <img src="https://cdn.sportnanoapi.com/football/team/a3c32d6a906083118cac2cb796edaab3.png" class="team-logo" alt="">
2651                                        <div class="team-name">Aston Villa</div>
2652                                    </div>
2653                                    <div class="score-col">
2654                                        <div class="score-value">0 : 0</div>
2655                                        <a href="javascript:void(0)" class="bet-btn" onclick="jtSboBet(145100395)">BET NOW</a>
2656                                    </div>
2657                                    <div class="team-col">
2658                                        <img src="https://cdn.sportnanoapi.com/football/team/60f1c7788be3148a370dbf59f914abfe.png" class="team-logo" alt="">
2659                                        <div class="team-name">Brentford</div>
2660                                    </div>
2661                                </div>
2662                                <div class="match-odds-row">
2663                                    <div class="odds-col">
2664                                        0.00                                        <small style="margin-left: 5px;">-0.97</small>
2665                                    </div>
2666                                    <div class="odds-spacer"></div>
2667                                    <div class="odds-col">
2668                                        0.00                                        <small style="margin-left: 5px;">0.87</small>
2669                                    </div>
2670                                </div>
2671                            </div>
2672                        </li>
2673                                                <li class="splide__slide">
2674                            <div class="match-card-home">
2675                                <div class="league-name">ENGLISH PREMIER LEAGUE</div>
2676                                <div class="kickoff-time">October 10, 2026 — 21:00 WIB</div>
2677                                <div class="match-main-row">
2678                                    <div class="team-col">
2679                                        <img src="https://cdn.sportnanoapi.com/football/team/957bdc50c307e2a9b526b34b3792da1a.png" class="team-logo" alt="">
2680                                        <div class="team-name">Sunderland</div>
2681                                    </div>
2682                                    <div class="score-col">
2683                                        <div class="score-value">0 : 0</div>
2684                                        <a href="javascript:void(0)" class="bet-btn" onclick="jtSboBet(145100525)">BET NOW</a>
2685                                    </div>
2686                                    <div class="team-col">
2687                                        <img src="https://cdn.sportnanoapi.com/football/team/9b43a690d5a09f1e319f036821e8e1d3.png" class="team-logo" alt="">
2688                                        <div class="team-name">Brighton &amp; Hove Albion</div>
2689                                    </div>
2690                                </div>
2691                                <div class="match-odds-row">
2692                                    <div class="odds-col">
2693                                        0.00                                        <small style="margin-left: 5px;">-0.82</small>
2694                                    </div>
2695                                    <div class="odds-spacer"></div>
2696                                    <div class="odds-col">
2697                                        0.00                                        <small style="margin-left: 5px;">0.72</small>
2698                                    </div>
2699                                </div>
2700                            </div>
2701                        </li>
2702                                                <li class="splide__slide">
2703                            <div class="match-card-home">
2704                                <div class="league-name">ENGLISH PREMIER LEAGUE</div>
2705                                <div class="kickoff-time">October 10, 2026 — 23:30 WIB</div>
2706                                <div class="match-main-row">
2707                                    <div class="team-col">
2708                                        <img src="https://cdn.sportnanoapi.com/football/team/d39ce586fd7278342dde33b3090b3f75.png" class="team-logo" alt="">
2709                                        <div class="team-name">Manchester United</div>
2710                                    </div>
2711                                    <div class="score-col">
2712                                        <div class="score-value">0 : 0</div>
2713                                        <a href="javascript:void(0)" class="bet-btn" onclick="jtSboBet(145100582)">BET NOW</a>
2714                                    </div>
2715                                    <div class="team-col">
2716                                        <img src="https://cdn.sportnanoapi.com/football/team/8b22ab4041e666b996a2d96f20dea707.png" class="team-logo" alt="">
2717                                        <div class="team-name">Tottenham Hotspur</div>
2718                                    </div>
2719                                </div>
2720                                <div class="match-odds-row">
2721                                    <div class="odds-col">
2722                                        0.5                                        <small style="margin-left: 5px;">0.72</small>
2723                                    </div>
2724                                    <div class="odds-spacer"></div>
2725                                    <div class="odds-col">
2726                                        -0.5                                        <small style="margin-left: 5px;">-0.82</small>
2727                                    </div>
2728                                </div>
2729                            </div>
2730                        </li>
2731                                                <li class="splide__slide">
2732                            <div class="match-card-home">
2733                                <div class="league-name">
2733SPAIN LA LIGA</div>
2734                                <div class="kickoff-time">October 11, 2026 — 02:00 WIB</div>
2735                                <div class="match-main-row">
2736                                    <div class="team-col">
2737                                        <img src="https://cdn.sportnanoapi.com/football/team/7dacaa934fe4be00f23c1e209b5ef947.png" class="team-logo" alt="">
2738                                        <div class="team-name">Real Madrid</div>
2739                                    </div>
2740                                    <div class="score-col">
2741                                        <div class="score-value">0 : 0</div>
2742                                        <a href="javascript:void(0)" class="bet-btn" onclick="jtSboBet(147215615)">BET NOW</a>
2743                                    </div>
2744                                    <div class="team-col">
2745                                        <img src="https://cdn.sportnanoapi.com/football/team/aee62af96a956756cc29fe4831286357.png" class="team-logo" alt="">
2746                                        <div class="team-name">Villarreal</div>
2747                                    </div>
2748                                </div>
2749                                <div class="match-odds-row">
2750                                    <div class="odds-col">
2751                                        1                                        <small style="margin-left: 5px;">0.55</small>
2752                                    </div>
2753                                    <div class="odds-spacer"></div>
2754                                    <div class="odds-col">
2755                                        -1                                        <small style="margin-left: 5px;">-0.65</small>
2756                                    </div>
2757                                </div>
2758                            </div>
2759                        </li>
2760                                                <li class="splide__slide">
2761                            <div class="match-card-home">
2762                                <div class="league-name">ITALY SERIE A</div>
2763                                <div class="kickoff-time">October 10, 2026 — 22:59 WIB</div>
2764                                <div class="match-main-row">
2765                                    <div class="team-col">
2766                                        <img src="https://cdn.sportnanoapi.com/football/team/aa2245702c40f77799a5ad4b119581a8.png" class="team-logo" alt="">
2767                                        <div class="team-name">Inter Milan</div>
2768                                    </div>
2769                                    <div class="score-col">
2770                                        <div class="score-value">0 : 0</div>
2771                                        <a href="javascript:void(0)" class="bet-btn" onclick="jtSboBet(145618118)">BET NOW</a>
2772                                    </div>
2773                                    <div class="team-col">
2774                                        <img src="https://cdn.sportnanoapi.com/football/team/9fadd87d190982c8082dddf1567e0b9b.png" class="team-logo" alt="">
2775                                        <div class="team-name">Parma Calcio</div>
2776                                    </div>
2777                                </div>
2778                                <div class="match-odds-row">
2779                                    <div class="odds-col">
2780                                        2                                        <small style="margin-left: 5px;">0.65</small>
2781                                    </div>
2782                                    <div class="odds-spacer"></div>
2783                                    <div class="odds-col">
2784                                        -2                                        <small style="margin-left: 5px;">-0.75</small>
2785                                    </div>
2786                                </div>
2787                            </div>
2788                        </li>
2789                                                <li class="splide__slide">
2790                            <div class="match-card-home">
2791                                <div class="league-name">
2791SPAIN LA LIGA</div>
2792                                <div class="kickoff-time">October 10, 2026 — 19:00 WIB</div>
2793                                <div class="match-main-row">
2794                                    <div class="team-col">
2795                                        <img src="https://cdn.sportnanoapi.com/football/team/5005d8feab109ce64e40beb98073cc1f.png" class="team-logo" alt="">
2796                                        <div class="team-name">Rayo Vallecano</div>
2797                                    </div>
2798                                    <div class="score-col">
2799                                        <div class="score-value">0 : 0</div>
2800                                        <a href="javascript:void(0)" class="bet-btn" onclick="jtSboBet(147215614)">BET NOW</a>
2801                                    </div>
2802                                    <div class="team-col">
2803                                        <img src="https://cdn.sportnanoapi.com/football/team/abbb31d42c55612737713aac6567a226.png" class="team-logo" alt="">
2804                                        <div class="team-name">Athletic Bilbao</div>
2805                                    </div>
2806                                </div>
2807                                <div class="match-odds-row">
2808                                    <div class="odds-col">
2809                                        0.00                                        <small style="margin-left: 5px;">0.98</small>
2810                                    </div>
2811                                    <div class="odds-spacer"></div>
2812                                    <div class="odds-col">
2813                                        0.00                                        <small style="margin-left: 5px;">0.92</small>
2814                                    </div>
2815                                </div>
2816                            </div>
2817                        </li>
2818                                                <li class="splide__slide">
2819                            <div class="match-card-home">
2820                                <div class="league-name">ENGLISH PREMIER LEAGUE</div>
2821                                <div class="kickoff-time">October 11, 2026 — 22:30 WIB</div>
2822                                <div class="match-main-row">
2823                                    <div class="team-col">
2824                                        <img src="https://cdn.sportnanoapi.com/football/team/1cb3d08adac0e2dc1c4f10429d055bfe.png" class="team-logo" alt="">
2825                                        <div class="team-name">Liverpool</div>
2826                                    </div>
2827                                    <div class="score-col">
2828                                        <div class="score-value">0 : 0</div>
2829                                        <a href="javascript:void(0)" class="bet-btn" onclick="jtSboBet(145100751)">BET NOW</a>
2830                                    </div>
2831                                    <div class="team-col">
2832                                        <img src="https://cdn.sportnanoapi.com/football/team/c4a6528a2ee147b99c9885ef24385a4e.png" class="team-logo" alt="">
2833                                        <div class="team-name">Manchester City</div>
2834                                    </div>
2835                                </div>
2836                                <div class="match-odds-row">
2837                                    <div class="odds-col">
2838                                        0.00                                        <small style="margin-left: 5px;">-0.83</small>
2839                                    </div>
2840                                    <div class="odds-spacer"></div>
2841                                    <div class="odds-col">
2842                                        0.00                                        <small style="margin-left: 5px;">0.73</small>
2843                                    </div>
2844                                </div>
2845                            </div>
2846                        </li>
2847                                            </ul>
2848                </div>
2849            </div>
2850        </div>
2851    </div>
2852
2853    
2854        
2855            <div class="home-section">
2856        <div class="widget-kupon" style="margin-top:20px;">
2857            <iframe class="iframe-kupon" src="https://fkupon.com/widget2.php" title="Widget kupon" loading="lazy"></iframe>
2858            <div onclick="window.JT_LOGGED_IN ? content('/kupon.php','#content',null) : (sessionStorage.setItem('jt_pending_action', JSON.stringify({type:'kupon'})), scrollToLoginForm())" style="position:absolute;top:0;left:0;right:0;bottom:0;cursor:pointer;z-index:5;"></div>
2859        </div>
2860    </div>
2861    
2862    
2863</div>
2864
2865<script>
2866(function () {
2867    function mountSportSplide() {
2868        var el = document.getElementById('sportMatchSplide');
2869        if (!el || el.classList.contains('is-initialized')) return;
2870        if (typeof Splide === 'undefined') return;
2871        new Splide('#sportMatchSplide', {
2872            type       : 'loop',
2873            perPage    : 3,
2874            gap        : '8px',
2875            autoplay   : true,
2876            interval   : 4500,
2877            pauseOnHover: true,
2878            pagination : true,
2879            arrows     : true,
2880            breakpoints: {
2881                767: { perPage: 1 }
2882            }
2883        }).mount();
2884    }
2885    function bootSportSplide() {
2886        if (typeof ensureSplide === 'function') {
2887            ensureSplide().then(mountSportSplide).catch(function () {});
2888        } else {
2889            mountSportSplide();
2890        }
2891    }
2892    // SSR: defer sampai Splide ready; AJAX: mount via ensureSplide.
2893    if (document.readyState === 'loading') {
2894        document.addEventListener('DOMContentLoaded', bootSportSplide);
2895    } else {
2896        bootSportSplide();
2897    }
2898})();
2899
2900var _sboLaunchToken = null;
2901
2902function jtSboBet(matchId) {
2903    if (window.JT_LOGGED_IN && _sboLaunchToken) {
2904        var url = '/new/launch/' + _sboLaunchToken;
2905        var standalone = window.navigator.standalone === true ||
2906                         window.matchMedia('(display-mode: standalone)').matches;
2907        var isMobile = standalone || window.innerWidth < 768;
2908        var popup = isMobile ? null : window.open('about:blank', '_blank', 'width=1200,height=800,top=0,left=0,resizable=yes,scrollbars=yes');
2909        jtPost(url, { check: 1, matchId: matchId || '' }).then(function(res) {
2910            if (res.ok) {
2911                if (popup) { popup.location.href = url; } else { window.location.href = url; }
2912            } else if (popup) {
2913                popup.close();
2914            }
2915        }).catch(function() {
2916            if (popup) popup.close();
2917        });
2918    } else {
2919        if (matchId) sessionStorage.setItem('jt_pending_action', JSON.stringify({type: 'sbo', matchId: matchId}));
2920        else sessionStorage.removeItem('jt_pending_action');
2921        if (typeof scrollToLoginForm === 'function') scrollToLoginForm();
2922    }
2923}
2924
2925</script>
2925
2926
2927<div id="pasaranPopupOverlay" class="pasaran-popup-overlay">
2928    <div class="pasaran-popup themed-box">
2929        <div class="pasaran-popup-inner">
2930            <div class="pasaran-popup-header">
2931                <div class="pasaran-popup-select">
2932                    <button type="button" class="pasaran-popup-select-btn" onclick="ppToggleDropdown()" id="ppSelectBtn">
2933                        <span id="ppTitle">-</span>
2934                        <i class="bi bi-chevron-down"></i>
2935                    </button>
2936                    <div class="pasaran-popup-dropdown" id="ppDropdown"></div>
2937                </div>
2938                <button type="button" class="tx-btn-close" onclick="closePasaranPopup()" aria-label="Tutup"><i class="bi bi-x-lg"></i></button>
2939            </div>
2940            <div class="pasaran-popup-meta" id="ppMeta"></div>
2941            <div class="pasaran-popup-body">
2942                <table class="themed-table history-table" id="ppTable">
2943                    <thead>
2944                        <tr>
2945                            <th style="width:10%">No.</th>
2946                            <th>Tanggal</th>
2947                            <th>Hari</th>
2948                            <th>Periode</th>
2949                            <th>Result</th>
2950                        </tr>
2951                    </thead>
2952                    <tbody id="ppTableBody"></tbody>
2953                </table>
2954            </div>
2955            <div class="history-paging pasaran-popup-paging" id="ppPaging" style="display:none;">
2956                <ul class="h-pages" id="ppPages"></ul>
2957            </div>
2958        </div>
2959    </div>
2960</div>
2961
2962<script>
2963window.addEventListener('message', function(e) {
2964    if (e.origin !== 'https://fkupon.com') return;
2965    var iframe = document.querySelector('.iframe-kupon');
2966    if (!iframe) return;
2967    var h = null;
2968    if (e.data && typeof e.data.height === 'number') h = e.data.height;
2969    else if (typeof e.data === 'number') h = e.data;
2970    if (h !== null) {
2971        iframe.style.height = Math.max(60, h) + 'px';
2972    }
2973});
2974
2975// launchGame / copy helpers → main.js
2976
2977var _ppMarkets       = [];
2978var _ppCurrentNameid = '';
2979var PP_PER_PAGE      = 10;
2980
2981function showPasaranPopup(el) {
2982    var overlay = document.getElementById('pasaranPopupOverlay');
2983    var nameid  = el.dataset.nameid || '';
2984    if (!overlay || !nameid) return;
2985    overlay.style.display = 'flex';
2986    ppSelectPasaran(nameid);
2987}
2988
2989function ppFindMarket(nameid) {
2990    for (var i = 0; i < _ppMarkets.length; i++) {
2991        if (String(_ppMarkets[i].nameid) === String(nameid)) return _ppMarkets[i];
2992    }
2993    return null;
2994}
2995
2996function ppRenderDropdown() {
2997    var dd = document.getElementById('ppDropdown');
2998    if (!dd) return;
2999    dd.innerHTML = '';
3000    _ppMarkets.forEach(function (m) {
3001        var btn = document.createElement('button');
3002        btn.type = 'button';
3003        btn.className = 'pasaran-popup-dd-item' + (String(m.nameid) === String(_ppCurrentNameid) ? ' active' : '');
3004        btn.textContent = m.name || '';
3005        btn.dataset.nameid = m.nameid || '';
3006        btn.addEventListener('click', function () { ppSelectPasaran(btn.dataset.nameid); });
3007        dd.appendChild(btn);
3008    });
3009}
3010
3011function ppSelectPasaran(nameid) {
3012    var market = ppFindMarket(nameid);
3013    if (!market) return;
3014    _ppCurrentNameid = nameid;
3015    document.getElementById('ppTitle').textContent = market.name || '';
3016    var ppMetaRows = [
3017        ['Website', market.web],
3018        ['Hari Undi', market.hari],
3019        ['Jam Tutup', market.jam_tutup],
3020        ['Jam Result', market.jam_result]
3021    ];
3022    document.getElementById('ppMeta').innerHTML = ppMetaRows.map(function (r) {
3023        return '<div class="pasaran-popup-meta-row"><span class="pp-meta-label">' + esc(r[0]) + '</span><span class="pp-meta-value">: ' + esc(r[1] || '-') + '</span></div>';
3024    }).join('');
3025    ppRenderDropdown();
3026    ppCloseDropdown();
3027    ppLoadKeluaran(1);
3028}
3029
3030function ppToggleDropdown() {
3031    var dd   = document.getElementById('ppDropdown');
3032    var wrap = document.querySelector('.pasaran-popup-select');
3033    if (dd) dd.classList.toggle('open');
3034    if (wrap) wrap.classList.toggle('open');
3035}
3036
3037function ppCloseDropdown() {
3038    var dd   = document.getElementById('ppDropdown');
3039    var wrap = document.querySelector('.pasaran-popup-select');
3040    if (dd) dd.classList.remove('open');
3041    if (wrap) wrap.classList.remove('open');
3042}
3043
3044function ppLoadKeluaran(page) {
3045    var tbody = document.getElementById('ppTableBody');
3046    tbody.innerHTML = '<tr><td colspan="5" class="text-center pp-loading-cell"><div class="content-loader-wrap"><div class="loader"></div></div></td></tr>';
3047
3048    jtPostJson('/api/front/pasaran-keluaran', {
3049            pasaran: _ppCurrentNameid,
3050            page: page,
3051            per_page: PP_PER_PAGE
3052        })
3053        .then(function (res) {
3054            if (!res.error || res.error.code !== 200) { ppRenderError(); return; }
3055            var data = res.data || {};
3056            ppRenderRows(data.rows || [], data.pagination || {});
3057        })
3058        .catch(ppRenderError);
3059}
3060
3061function ppRenderError() {
3062    document.getElementById('ppTableBody').innerHTML = '<tr><td colspan="5" class="text-center pp-empty-cell" style="color:var(--secondary-text-color)">Gagal memuat data.</td></tr>';
3063    document.getElementById('ppPaging').style.display = 'none';
3064}
3065
3066function ppRenderRows(rows, pagination) {
3067    var tbody = document.getElementById('ppTableBody');
3068    if (!rows.length) {
3069        tbody.innerHTML = '<tr><td colspan="5" class="text-center pp-empty-cell" style="color:var(--secondary-text-color)">Tidak ada data.</td></tr>';
3070    } else {
3071        var page    = pagination.page || 1;
3072        var startNo = (page - 1) * PP_PER_PAGE;
3073        tbody.innerHTML = rows.map(function (row, i) {
3074            return '<tr>' +
3075                '<td class="text-center" style="color:var(--secondary-text-color)">' + (startNo + i + 1) + '</td>' +
3076                '<td class="pp-col-tanggal">' + esc(row.tanggal) + '</td>' +
3077                '<td class="pp-col-hari">' + esc(row.hari) + '</td>' +
3078                '<td>' + esc(row.pasaran) + '</td>' +
3079                '<td class="pp-col-result"><strong>' + esc(row.result) + '</strong></td>' +
3080                '</tr>';
3081        }).join('');
3082    }
3083    ppRenderPaging(pagination);
3084}
3085
3086function ppRenderPaging(pagination) {
3087    var paging     = document.getElementById('ppPaging');
3088    var pagesList  = document.getElementById('ppPages');
3089    var totalPages = pagination.total_pages || 0;
3090    var page       = pagination.page || 1;
3091
3092    if (totalPages <= 1) { paging.style.display = 'none'; return; }
3093    paging.style.display = '';
3094
3095    pagesList.innerHTML = '';
3096    function btn(label, targetPage, disabled, active) {
3097        var li = document.createElement('li');
3098        var b  = document.createElement('button');
3099        b.innerHTML = label;
3100        if (disabled) b.disabled = true;
3101        if (active)   b.classList.add('active');
3102        b.addEventListener('click', function () { ppLoadKeluaran(targetPage); });
3103        li.appendChild(b);
3104        pagesList.appendChild(li);
3105    }
3106    function ellipsis() {
3107        var li   = document.createElement('li');
3108        var span = document.createElement('span');
3109        span.className = 'h-ellipsis';
3110        span.textContent = '...';
3111        li.appendChild(span);
3112        pagesList.appendChild(li);
3113    }
3114
3115    btn('First', 1, page === 1, false);
3116
3117    var winStart = Math.max(1, page - 2);
3118    var winEnd   = Math.min(totalPages, page + 2);
3119    for (var p = winStart; p <= winEnd; p++) btn(p, p, false, p === page);
3120
3121    if (winEnd < totalPages) {
3122        if (winEnd < totalPages - 1) ellipsis();
3123        btn(totalPages, totalPages, false, page === totalPages);
3124    }
3125
3126    btn('Last', totalPages, page === totalPages, false);
3127}
3128
3129function closePasaranPopup() {
3130    var overlay = document.getElementById('pasaranPopupOverlay');
3131    if (overlay) overlay.style.display = 'none';
3132    ppCloseDropdown();
3133}
3134
3135document.addEventListener('click', function(e) {
3136    var overlay = document.getElementById('pasaranPopupOverlay');
3137    if (overlay && e.target === overlay) closePasaranPopup();
3138
3139    var selectWrap = document.querySelector('.pasaran-popup-select');
3140    if (selectWrap && !selectWrap.contains(e.target)) ppCloseDropdown();
3141});
3142
3143(function() {
3144    var PER_PAGE = 10;
3145
3146    function initTogelPagination() {
3147        var wrap = document.querySelector('.togel-list-guest');
3148        if (!wrap) return;
3149
3150        var rows = Array.prototype.slice.call(wrap.querySelectorAll('.togel-list-row'));
3151        var total = rows.length;
3152        if (total <= PER_PAGE) return;
3153
3154        var totalPages = Math.ceil(total / PER_PAGE);
3155        var currentPage = 1;
3156
3157        function showPage(page) {
3158            currentPage = page;
3159            rows.forEach(function(row, i) {
3160                var start = (page - 1) * PER_PAGE;
3161                row.style.display = (i >= start && i < start + PER_PAGE) ? 'flex' : 'none';
3162            });
3163            renderPager();
3164        }
3165
3166        function renderPager() {
3167            var pager = document.getElementById('togelListPager');
3168            if (!pager) return;
3169            pager.innerHTML = '';
3170
3171            for (var p = 1; p <= totalPages; p++) {
3172                (function(pg) {
3173                    var dot = document.createElement('button');
3174                    dot.className = 'tlp-dot' + (pg === currentPage ? ' active' : '');
3175                    dot.addEventListener('click', function() { showPage(pg); });
3176                    pager.appendChild(dot);
3177                })(p);
3178            }
3179        }
3180
3181        var pager = document.createElement('div');
3182        pager.id = 'togelListPager';
3183        pager.className = 'togel-list-pager';
3184        wrap.parentNode.insertBefore(pager, wrap.nextSibling);
3185
3186        var touchStartX = 0;
3187        wrap.addEventListener('touchstart', function(e) {
3188            touchStartX = e.changedTouches[0].clientX;
3189        }, { passive: true });
3190        wrap.addEventListener('touchend', function(e) {
3191            var dx = e.changedTouches[0].clientX - touchStartX;
3192            if (Math.abs(dx) < 40) return;
3193            if (dx < 0 && currentPage < totalPages) showPage(currentPage + 1);
3194            if (dx > 0 && currentPage > 1)           showPage(currentPage - 1);
3195        }, { passive: true });
3196
3197        showPage(1);
3198    }
3199
3200    initTogelPagination();
3201})();
3202
3203(function() {
3204    var btn = document.querySelector('.togel-panel-more');
3205    if (!btn) return;
3206    btn.addEventListener('click', function() {
3207        var wrap = btn.closest('.togel-panel');
3208        if (wrap) wrap.classList.toggle('togel-panel--open');
3209    });
3210})();
3211
3212function jtBootHomePartial() {
3213    var isLoggedIn = false;
3214    var bootMarkets = [{"name":"TOTO WUHAN","nameid":"TWH","periode":"924","status":1,"web":"www.totowuhan.com","hari":"Setiap Hari ( 09:00 | 12:00 | 15:00 | 18:00 | 21:00 | 00:00 )","jam_tutup":"Tiap 3 jam","jam_result":"Tiap 3 jam","result":"6536","date":"10/10/2026"},{"name":"HK SIANG","nameid":"HKD","periode":"936","status":1,"web":"www.hkpools1.com","hari":"Setiap Hari","jam_tutup":"10:30 WIB","jam_result":"11:00 WIB","result":"3738","date":"9/10/2026"},{"name":"CAMBODIA","nameid":"CMB","periode":"224","status":1,"web":"www.magnumcambodia.com","hari":"Setiap Hari","jam_tutup":"11:30 WIB","jam_result":"11:50 WIB","result":"3669","date":"9/10/2026"},{"name":"SG METRO","nameid":"SGM","periode":"967","status":1,"web":"www.sgmetro.com","hari":"Setiap Hari","jam_tutup":"12:30 WIB","jam_result":"13:00 WIB","result":"2724","date":"9/10/2026"},{"name":"SYDNEY","nameid":"SYD","periode":"936","status":1,"web":"www.sydneypools.info","hari":"Setiap Hari","jam_tutup":"13.30 WIB","jam_result":"14:00 WIB","result":"6783","date":"9/10/2026"},{"name":"SYDNEY POOL","nameid":"SYDP","periode":"106","status":1,"web":"https://www.sydneypoolstoday.com/","hari":"Setiap Hari","jam_tutup":"13:30 WIB","jam_result":"14:00 WIB","result":"6915","date":"9/10/2026"},{"name":"SINGAPORE","nameid":"SG","periode":"253","status":1,"web":"www.singaporepools.com.sg","hari":"Senin, Rabu, Kamis, Sabtu, Minggu","jam_tutup":"17:20 WIB","jam_result":"17:45 WIB","result":"2855","date":"8/10/2026"},{"name":"MALAYSIA SIANG","nameid":"MYD","periode":"935","status":1,"web":"www.malaysialottery.net","hari":"Setiap Hari","jam_tutup":"14:30 WIB","jam_result":"15:00 WIB","result":"3162","date":"9/10/2026"},{"name":"MALAYSIA","nameid":"MY","periode":"883","status":1,"web":"www.malaysialottery.net","hari":"Setiap Hari","jam_tutup":"18:30 WIB","jam_result":"19:00 WIB","result":"6034","date":"9/10/2026"},{"name":"MACAU","nameid":"MC","periode":"865","status":1,"web":"www.supersixmacau.com","hari":"Setiap Hari","jam_tutup":"19:30 WIB","jam_result":"20:00 WIB","result":"0331","date":"9/10/2026"},{"name":"QATAR","nameid":"QTR","periode":"205","status":1,"web":"www.qatarlottery.com","hari":"Setiap Hari","jam_tutup":"20:30 WIB","jam_result":"21:00 WIB","result":"8696","date":"9/10/2026"},{"name":"HONGKONG","nameid":"HK","periode":"358","status":1,"web":"www.hongkongpools.com","hari":"Setiap Hari","jam_tutup":"22:30 WIB","jam_result":"23:00 WIB","result":"6469","date":"9/10/2026"},{"name":"TOTOMACAU 0000","nameid":"TMC00","periode":"225","status":1,"web":"www.totomacaupools.club","hari":"Setiap Hari","jam_tutup":"23:45 WIB","jam_result":"00:00 WIB","result":"1594","date":"10/10/2026"},{"name":"TOTOMACAU 1300","nameid":"TMC13","periode":"224","status":1,"web":"www.totomacaupools.club","hari":"Setiap Hari","jam_tutup":"12:45 WIB","jam_result":"13:00 WIB","result":"2582","date":"9/10/2026"},{"name":"TOTOMACAU 1600","nameid":"TMC16","periode":"224","status":1,"web":"www.totomacaupools.club","hari":"Setiap Hari","jam_tutup":"15:45 WIB","jam_result":"16:00 WIB","result":"1103","date":"9/10/2026"},{"name":"TOTOMACAU 1900","nameid":"TMC19","periode":"224","status":1,"web":"www.totomacaupools.club","hari":"Setiap Hari","jam_tutup":"18:45 WIB","jam_result":"19:00 WIB","result":"8919","date":"9/10/2026"},{"name":"TOTOMACAU 2200","nameid":"TMC22","periode":"224","status":1,"web":"www.totomacaupools.club","hari":"Setiap Hari","jam_tutup":"21:45 WIB","jam_result":"22:00 WIB","result":"6078","date":"9/10/2026"}];
3215
3216    function renderTogelCards(markets) {
3217        var panel = document.getElementById('togel-panel');
3218        if (!panel) return;
3219
3220        var loading = panel.querySelector('.togel-cards-loading');
3221        if (loading) loading.remove();
3222
3223        var moreBtn = panel.querySelector('.togel-panel-more');
3224        panel.querySelectorAll('.togel-grid-row').forEach(function (el) { el.remove(); });
3225
3226        var mid  = markets.length > 10 ? Math.ceil(markets.length / 2) : Math.min(markets.length, 12);
3227        var rows = [markets.slice(0, mid), markets.slice(mid)];
3228
3229        rows.forEach(function (row) {
3230            if (!row.length) return;
3231            var rowDiv = document.createElement('div');
3232            rowDiv.className = 'togel-grid-row';
3233
3234            row.forEach(function (m) {
3235                var card = document.createElement('div');
3236                card.className = 'togel-card';
3237
3238                var inner = '<div class="market-name">'  + esc(m.name)   + '</div>' +
3239                            '<div class="market-code">
3239'  + esc(m.result) + '</div>' +
3240                            '<div class="market-info">'  + esc(m.date)   + '</div>';
3241
3242                if (isLoggedIn) {
3243                    var isMarketOnline = String(m.status) === '1';
3244                    if (isMarketOnline) {
3245                        var marketCode = (m.nameid || '') + '-' + (m.periode || '');
3246                        card.setAttribute('onclick', "content('/togel-detail.php?market=" + encodeURIComponent(marketCode) + "','#content')");
3247                    } else {
3248                        card.setAttribute('onclick', "content('/togel.php','#content')");
3249                    }
3250                } else {
3251                    card.setAttribute('onclick', 'showPasaranPopup(this)');
3252                    card.dataset.nameid    = m.nameid     || '';
3253                    card.dataset.market    = m.name       || '';
3254                    card.dataset.website   = m.web        || '';
3255                    card.dataset.hari      = m.hari       || 'Setiap Hari';
3256                    card.dataset.jamTutup  = m.jam_tutup  || '-';
3257                    card.dataset.jamResult = m.jam_result || '-';
3258
3259                    inner += '<div class="tc-guest-detail">' +
3260                        '<div class="tc-dr"><span>Web</span><span>'    + esc(m.web)       + '</span></div>' +
3261                        '<div class="tc-dr"><span>Buka</span><span>'   + esc(m.hari)      + '</span></div>' +
3262                        '<div class="tc-dr"><span>Tutup</span><span>'  + esc(m.jam_tutup) + '</span></div>' +
3263                        '<div class="tc-dr"><span>Result</span><span>' + esc(m.jam_result)+ '</span></div>' +
3264                        '</div>';
3265                }
3266
3267                card.innerHTML = inner;
3268                rowDiv.appendChild(card);
3269            });
3270
3271            panel.insertBefore(rowDiv, moreBtn || null);
3272        });
3273
3274        updateTogelMoreBtn(panel, moreBtn);
3275    }
3276
3277    function updateTogelMoreBtn(panel, moreBtn) {
3278        if (!moreBtn) return;
3279        var check = function() {
3280            var cards = panel.querySelectorAll('.togel-card');
3281            var multiRow = false;
3282            if (cards.length) {
3283                var firstTop = cards[0].offsetTop;
3284                for (var i = 1; i < cards.length; i++) {
3285                    if (cards[i].offsetTop > firstTop + 1) { multiRow = true; break; }
3286                }
3287            }
3288            moreBtn.style.display = multiRow ? '' : 'none';
3289            if (!multiRow) {
3290                panel.classList.remove('togel-panel--open');
3291                panel.style.maxHeight = panel.scrollHeight + 'px';
3292            } else if (!panel.classList.contains('togel-panel--open')) {
3293                var secondTop = null;
3294                for (var j = 0; j < cards.length; j++) {
3295                    if (cards[j].offsetTop > firstTop + 1) { secondTop = cards[j].offsetTop; break; }
3296                }
3297                var peek = cards[0].offsetHeight * 0.12;
3298                panel.style.maxHeight = secondTop !== null ? (secondTop + peek) + 'px' : '';
3299            }
3300        };
3301        check();
3302        window.addEventListener('resize', check, { passive: true });
3303        window.addEventListener('load', check);
3304    }
3305
3306    if (Array.isArray(bootMarkets) && bootMarkets.length) {
3307        _ppMarkets = bootMarkets;
3308        renderTogelCards(bootMarkets);
3309    }
3310
3311    if (typeof initHomeGameImageFallback === 'function') {
3312        initHomeGameImageFallback(document);
3313    }
3314
3315    (function() {
3316        function enableDragScroll(el) {
3317            var isDown = false, startX, scrollLeft;
3318            el.addEventListener('mousedown', function(e) {
3319                isDown = true;
3320                el.style.cursor = 'grabbing';
3321                startX = e.pageX - el.offsetLeft;
3322                scrollLeft = el.scrollLeft;
3323                e.preventDefault();
3324            });
3325            el.addEventListener('mouseleave', function() { isDown = false; el.style.cursor = ''; });
3326            el.addEventListener('mouseup',    function() { isDown = false; el.style.cursor = ''; });
3327            el.addEventListener('mousemove',  function(e) {
3328                if (!isDown) return;
3329                el.scrollLeft = scrollLeft - (e.pageX - el.offsetLeft - startX);
3330            });
3331        }
3332        document.querySelectorAll('.home-view .game-scroll-wrap, .home-view .togel-grid-wrap').forEach(enableDragScroll);
3333    })();
3334
3335    (function () {
3336        document.querySelectorAll('.home-view .game-scroll-wrap').forEach(function (wrap) {
3337            if (wrap.parentNode && wrap.parentNode.classList.contains('game-scroll-outer')) return;
3338
3339            var outer = document.createElement('div');
3340            outer.className = 'game-scroll-outer';
3341            wrap.parentNode.insertBefore(outer, wrap);
3342            outer.appendChild(wrap);
3343
3344            var btnL = document.createElement('button');
3345            var btnR = document.createElement('button');
3346            btnL.className = 'game-scroll-btn game-scroll-btn-l';
3347            btnR.className = 'game-scroll-btn game-scroll-btn-r';
3348            btnL.type = 'button';
3349            btnR.type = 'button';
3350            btnL.innerHTML = '&#8249;';
3351            btnR.innerHTML = '&#8250;';
3352            outer.appendChild(btnL);
3353            outer.appendChild(btnR);
3354
3355            function update() {
3356                var canL = wrap.scrollLeft > 0;
3357                var canR = wrap.scrollLeft < wrap.scrollWidth - wrap.clientWidth - 1;
3358                btnL.style.display = canL ? 'flex' : 'none';
3359                btnR.style.display = canR ? 'flex' : 'none';
3360            }
3361
3362            function cardWidth() {
3363                var card = wrap.querySelector('.game-card');
3364                if (!card) return 120;
3365                return card.offsetWidth + 10;
3366            }
3367            btnR.addEventListener('click', function () {
3368                wrap.scrollBy({ left: cardWidth(), behavior: 'smooth' });
3369            });
3370            btnL.addEventListener('click', function () {
3371                wrap.scrollBy({ left: -cardWidth(), behavior: 'smooth' });
3372            });
3373
3374            wrap.addEventListener('scroll', update);
3375            window.addEventListener('resize', update);
3376            update();
3377        });
3378    })();
3379}
3380
3381if (document.readyState === 'loading') {
3382    document.addEventListener('DOMContentLoaded', jtBootHomePartial);
3383} else {
3384    jtBootHomePartial();
3385}
3386</script>
3386
3387</div>
3388    
3389    
3390<!-- Transaksi Start -->
3391
3392
3393
3394<style>
3395
3396    .transaksi-group {
3397        display: grid;
3398        grid-template-columns: 458px 1fr;
3399        justify-content: space-between;
3400        grid-template-areas:
3401        "transaksi-bank transaksi-other transaksi-crypto";
3402    }
3403    
3404    .transaksi-bank {
3405        grid-area: transaksi-bank;
3406        display: grid;
3407        place-items: center
3408    }
3409    
3410    .transaksi-other {
3411        grid-area: transaksi-other;
3412        display: flex;
3413        justify-content: space-evenly;
3414        width: 100%;
3415    }
3416    
3417    .transaksi-crypto {
3418        grid-area: transaksi-crypto;
3419        display: flex;
3420        justify-content: space-evenly;
3421        width: 100%;
3422    }
3423    
3424    .icon-crypto {
3425        width: 24px;
3426        height: 24px;
3427    }
3428    
3429    .transaksi-list-bank {
3430        height: fit-content;
3431        display: grid;
3432        grid-template-columns: repeat(4, 92px);
3433        grid-template-rows: repeat(4, auto);
3434        gap: 4px;
3435    }
3436    
3437    .transaksi-list-other {
3438        height: fit-content;
3439        display: grid;
3440        grid-template-columns: repeat(3, 92px);
3441        gap: 4px;
3442    }
3443    
3444    .transaksi-list-crypto {
3445        height: fit-content;
3446        display: grid;
3447        grid-template-columns: repeat(2, 80px);
3448        gap: 10px 8px;
3449    }
3450    
3451    
3452    .transaksi-item {
3453        display: flex;
3454        flex-direction: column;
3455        /* transform: perspective(10px) rotateX(3deg); */
3456    }
3457    
3458    .transaksi-header {
3459
3460        height: 30px;
3461        border-radius: 5px;
3462        display: grid;
3463        place-items: center;
3464        font-weight: bold;
3465        border: 2px solid rgba(108,108,108,1);
3466        background: rgba(54,54,54,1);
3467        color: white;
3468    }
3469    
3470    .transaksi-status {
3471        margin-left: 3px;
3472        margin-right: 3px;
3473        height: 3px;
3474        border-radius: 0px 0px 4px 4px;
3475        background: rgb(54,54,54);
3476        background: linear-gradient(90deg, rgba(54,54,54,1) 0%, rgba(108,108,108,1) 50%, rgba(54,54,54,1) 100%);
3477    }
3478    
3479    .header-green {
3480        background: rgba(44,121,6,1);
3481        border-color: rgba(168,255,0,1);
3482    }
3483    
3484    .header-blue {
3485        background: rgba(0,80,89,1);
3486        border-color: rgba(0,255,204,1);
3487    }
3488    
3489    .status-green {
3490        background: rgb(44,121,6);
3491        background: linear-gradient(90deg, rgba(44,121,6,1) 0%, rgba(168,255,0,1) 50%, rgba(44,121,6,1) 100%);
3492    }
3493    
3494    .status-blue {
3495        background: rgb(0,80,89);
3496        background: linear-gradient(90deg, rgba(0,80,89,1) 0%, rgba(0,255,204,1) 50%, rgba(0,80,89,1) 100%);
3497    }
3498    
3499    .transaksi-name {
3500        font-size: 1.1rem; 
3501        font-weight: bold; 
3502        line-height: 1.5rem
3503    }
3504    
3505    .transaksi-wrapper {
3506        display: flex;
3507        flex-direction: column;
3508        gap: .5rem;
3509    }
3510
3511
3512    @media only screen and (max-width: 768px) {
3513        
3514        .transaksi-group {
3515            display: grid;
3516            grid-template-columns: 1fr;
3517            grid-template-areas:
3518            "transaksi-bank"
3519            "transaksi-other"
3520            "transaksi-crypto";
3521            gap: 32px;
3522            margin-bottom: 8px;
3523            
3524        }
3525        
3526        .transaksi-header {
3527            font-size: 1.1rem;
3528            height: 36px;
3529        }
3530        
3531        .transaksi-list-bank {
3532            grid-template-columns: repeat(4, 1fr);
3533        }
3534        
3535        .transaksi-list-other {
3536            grid-template-columns: repeat(4, 1fr);
3537        }
3538        
3539        .transaksi-list-crypto {
3540            width: 86%;
3541            margin: auto;
3542            grid-template-columns: repeat(4, 1fr);
3543        }
3544        
3545        .transaksi-list {
3546            display: grid;
3547            grid-template-columns: repeat(3, 1fr);
3548        }
3549        
3550        .transaksi-item {
3551            width: 100%;
3552        }
3553        
3554        .transaksi-title-group {
3555            justify-content: center;
3556            padding: 16px 0;
3557        }
3558        
3559        .transaksi-name {
3560            font-size: 1.3rem;
3561            text-align: center;    
3562            line-height: 1.8rem;
3563        }
3564
3565        .transaksi-wrapper {
3566            width: 100%;
3567            max-width: 100%!important;
3568            gap: 1rem;
3569        }
3570        
3571        .icon-crypto {
3572            width: 28px;
3573            height: 28px;
3574        }
3575
3576    }
3577</style>
3578
3579    
3580    <style>
3581        .transaksi-wrapper {
3582    display: flex;
3583    flex-direction: column;
3584    gap: .5rem;
3585    align-items: flex-start;
3586}
3587
3588.transaksi-name {
3589    font-size: 1.1rem;
3590    font-weight: bold;
3591    line-height: 1.5rem;
3592}
3593
3594.carousel-inner {
3595    position: relative;
3596    width: 100%;
3597    overflow: hidden;
3598}
3599
3600.transaksi-list-bank, .transaksi-list-other {
3601    grid-template-columns: repeat(4, minmax(110px, 1fr));
3602    gap: 8px 10px;
3603}
3604
3605
3606.transaksi-list-bank, .transaksi-list-other {
3607    height: fit-content;
3608    display: grid;
3609    grid-template-columns: repeat(4, minmax(80px, 1fr));
3610    gap: 4px 6px;
3611}
3612
3613
3614.transaksi-item {
3615    display: flex;
3616    flex-direction: column;
3617    position: relative;
3618}
3619.transaksi-header {
3620    height: 34px;
3621    border-radius: 6px;
3622    font-weight: bold;
3623    border: 2px solid rgba(108, 108, 108, 1);
3624    background: rgba(54, 54, 54, 1);
3625    color: white;
3626    min-width: 110px;
3627    padding: 0 16px 0 28px;
3628    display: flex;
3629    align-items: center;
3630    justify-content: center;
3631    text-align: center;
3632    white-space: nowrap;
3633}
3634
3635.transaksi-header {
3636    border: none;
3637    padding: 0px;
3638    padding-bottom: 4px;
3639}
3640
3641.transaksi-header.is-online::before {
3642    content: "";
3643    position: absolute;
3644    top: auto;
3645    left: 50%;
3646    transform: translateX(-50%);
3647    width: 50%;
3648    height: 4px;
3649    bottom: 0%;
3650    background-color: #00ff66;
3651    border-radius: 6px;
3652    box-shadow: 0 0 8px rgba(0, 255, 102, .85);
3653}
3654
3655.transaksi-header.is-offline {
3656    padding: 0 16px;
3657    background: #2e2e2e;
3658    border-color: #555;
3659    opacity: .35;
3660    align-items: center;
3661    justify-content: center;
3662    text-align: center;
3663}
3664    </style>
3665
3666 <div class="section desktop-only" style="min-height: 220px">
3667
3668<div class="transaksi-group">
3669    <div class="transaksi-bank">
3670
3671            <div class="transaksi-wrapper">
3672                <div class="transaksi-name">Bank Lokal</div>
3673                
3674                <div id="transaksi-bank-indicators" class="carousel slide" data-bs-ride="carousel">
3675                <div class="carousel-indicators" style="bottom: -32px; margin-bottom: 0px">
3676                    
3677                                        
3678                </div>
3679                <div class="carousel-inner" >
3680                                            <div class="carousel-item active" style="min-height: 144px">
3681                            <div class="transaksi-list-bank">
3682                            
3683                                                        
3684                                                                
3685                                <div class="transaksi-item">
3686                                    <div class="transaksi-header">BCA</div>
3687                                    <div class="transaksi-status status-green"></div>
3688                                </div>
3689                                                        
3690                                                                
3691                                <div class="transaksi-item">
3692                                    <div class="transaksi-header">Mandiri</div>
3693                                    <div class="transaksi-status "></div>
3694                                </div>
3695                                                        
3696                                                                
3697                                <div class="transaksi-item">
3698                                    <div class="transaksi-header">BNI</div>
3699                                    <div class="transaksi-status "></div>
3700                                </div>
3701                                                        
3702                                                                
3703                                <div class="transaksi-item">
3704                                    <div class="transaksi-header">BRI</div>
3705                                    <div class="transaksi-status "></div>
3706                                </div>
3707                                                        
3708                                                                
3709                                <div class="transaksi-item">
3710                                    <div class="transaksi-header">CIMB</div>
3711                                    <div class="transaksi-status status-green"></div>
3712                                </div>
3713                                                        
3714                                                                
3715                                <div class="transaksi-item">
3716                                    <div class="transaksi-header">BSI</div>
3717                                    <div class="transaksi-status status-green"></div>
3718                                </div>
3719                                                        
3720                                                                
3721                                <div class="transaksi-item">
3722                                    <div class="transaksi-header">JAGO</div>
3723                                    <div class="transaksi-status status-green"></div>
3724                                </div>
3725                                                        
3726                                                                
3727                                <div class="transaksi-item">
3728                                    <div class="transaksi-header">SeaBank</div>
3729                                    <div class="transaksi-status status-green"></div>
3730                                </div>
3731                                                        
3732                                                            
3733                            </div>
3734                        </div>
3735                    
3736                     
3737                     
3738                  </div>
3739                </div>
3740
3741        </div>
3742    </div>
3743    
3744    <div class="transaksi-other">
3745            
3746            
3747            <div class="transaksi-wrapper" style="max-width: 458px">
3748
3749                <div class="transaksi-name">E Money & Pulsa</div>
3750
3751    
3752                <div id="transaksi-other-indicators" class="carousel slide" data-bs-ride="carousel">
3753                <div class="carousel-indicators" style="bottom: -32px; margin-bottom: 0px">
3754                    
3755                                        
3756                    </div>
3757                  <div class="carousel-inner" >
3758                                            <div class="carousel-item active">
3759                            <div class="transaksi-list-other">
3760                            
3761                                                        
3762                                                                
3763                                <div class="transaksi-item">
3764                                    <div class="transaksi-header">Telkomsel</div>
3765                                    <div class="transaksi-status status-blue"></div>
3766                                </div>
3767                                                        
3768                                                                
3769                                <div class="transaksi-item">
3770                                    <div class="transaksi-header">Axiata</div>
3771                                    <div class="transaksi-status status-blue"></div>
3772                                </div>
3773                                                        
3774                                                                
3775                                <div class="transaksi-item">
3776                                    <div class="transaksi-header">DANA</div>
3777                                    <div class="transaksi-status status-blue"></div>
3778                                </div>
3779                                                        
3780                                                                
3781                                <div class="transaksi-item">
3782                                    <div class="transaksi-header">OVO</div>
3783                                    <div class="transaksi-status status-blue"></div>
3784                                </div>
3785                                                        
3786                                                                
3787                                <div class="transaksi-item">
3788                                    <div class="transaksi-header">ShopeePay</div>
3789                                    <div class="transaksi-status status-blue"></div>
3790                                </div>
3791                                                        
3792                                                                
3793                                <div class="transaksi-item">
3794                                    <div class="transaksi-header">GOPAY</div>
3795                                    <div class="transaksi-status status-blue"></div>
3796                                </div>
3797                                                        
3798                                                                
3799                                <div class="transaksi-item">
3800                                    <div class="transaksi-header">LinkAja</div>
3801                                    <div class="transaksi-status status-blue"></div>
3802                                </div>
3803                                                        
3804                                                                
3805                                <div class="transaksi-item">
3806                                    <div class="transaksi-header">Lain-lain</div>
3807                                    <div class="transaksi-status status-blue"></div>
3808                                </div>
3809                                                        
3810                                                            
3811                            </div>
3812                        </div>
3813                    
3814                     
3815                     
3816                </div>
3817            </div>
3818        </div>
3819        
3820        
3821        
3822    </div>
3823    
3824     <div class="transaksi-crypto">
3825    <div class="transaksi-wrapper" style="max-width: 284px">
3826
3827                <div class="transaksi-name mb-1">Crypto Currency</div>
3828
3829    
3830                <div id="transaksi-crypto-indicators" class="carousel slide" data-bs-ride="carousel">
3831                <div class="carousel-indicators" style="bottom: -32px; margin-bottom: 0px">
3832                    
3833                                        
3834                    </div>
3835                  <div class="carousel-inner" >
3836                                            <div class="carousel-item active">
3837                            <div class="transaksi-list-crypto">
3838                            
3839                                                        
3840                                                                
3841                                <div class="d-flex gap-2">
3842                                    <img src="https://img.viva88athenae.com/USDT.png" class="icon-crypto" alt="USDT">
3843                                    <strong class="transaksi-name">USDT</strong>
3844                                    
3845                                </div>
3846                                                        
3847                                                            
3848                            </div>
3849                        </div>
3850                    
3851                     
3852                     
3853                </div>
3854            </div>
3855        </div>
3856    </div>
3857</div>
3858
3859</div>
3860
3861
3862        
3863
3864
3865    <footer class="site-footer">
3866<div class="section">
3867
3868    <div class="footer-nav">
3869                <a href="javascript:void(0)" onclick="openCms('tentang')">TENTANG KAMI</a>
3870        <span class="footer-nav-sep">|</span>        <a href="javascript:void(0)" onclick="openCms('bantuan')">BANTUAN</a>
3871        <span class="footer-nav-sep">|</span>        <a href="javascript:void(0)" onclick="openCms('peraturan')">PERATURAN</a>
3872        <span class="footer-nav-sep">|</span>        <a href="javascript:void(0)" onclick="openCms('bank')">INFORMASI BANK</a>
3873        <span class="footer-nav-sep">|</span>        <a href="javascript:void(0)" onclick="openCms('hubungi')">HUBUNGI KAMI</a>
3874        <span class="footer-nav-sep">|</span>        <a href="javascript:void(0)" onclick="openCms('privasi')">KEBIJAKAN PRIVASI</a>
3875        <span class="footer-nav-sep">|</span>        <a href="javascript:void(0)" onclick="openCms('cookies')">PERSETUJUAN COOKIES</a>
3876            </div>
3877
3878    <div class="footer-guidelines-wrap">
3879        <img src="https://img.viva88athenae.com/new/guidelines.png?v=1790436337" alt="Guidelines" class="footer-guidelines-img" width="929" height="52">
3880    </div>
3881
3882    <div class="footer-providers">
3883        <img src="https://img.viva88athenae.com/assets/provider_w.png?v=1790436337" alt="Provider Logos" class="d-none d-md-block" style="margin:0 auto;" width="1201" height="124">
3884        <img src="/images/new/provider-mobile.png?v=1790436337" alt="Provider Logos" class="d-md-none" width="600" height="262" style="max-width:100%;height:auto;">
3885    </div>
3886
3887        <div class="footer-meta"><article class="article-content">
3888
3889<h1>BBNI4D - Link Alternatif Resmi Slot Online Mudah Masuk Depo Cepat 2026</h1>
3890
3891<p>
3892BBNI4D hadir sebagai platform yang menyediakan <strong>link alternatif resmi</strong> dengan akses cepat, sistem yang stabil, dan tampilan modern untuk memberikan pengalaman penggunaan yang lebih nyaman. Seiring meningkatnya kebutuhan akan akses website yang cepat dan responsif, BBNI4D terus melakukan pembaruan pada infrastruktur server agar pengguna dapat mengakses layanan tanpa mengalami hambatan. Melalui link alternatif resmi yang selalu diperbarui, pengguna tetap dapat masuk ke website dengan mudah ketika domain utama mengalami kendala teknis maupun proses pemeliharaan sistem.
3893</p>
3894
3895<p>
3896Kemudahan akses menjadi salah satu prioritas utama BBNI4D. Website telah dirancang menggunakan teknologi modern sehingga mampu memberikan waktu muat halaman yang lebih singkat pada berbagai perangkat. Baik melalui komputer, laptop, tablet, maupun smartphone, seluruh fitur dapat digunakan secara optimal tanpa mengurangi kenyamanan pengguna. Desain antarmuka yang sederhana juga membantu pengguna baru memahami setiap menu dengan lebih mudah sehingga proses login maupun navigasi dapat dilakukan hanya dalam bebera
3896pa langkah.
3897</p>
3898
3899
3900
3901<h2>Link Alternatif Resmi BBNI4D yang Mudah Diakses</h2>
3902
3903<p>
3904Link alternatif menjadi solusi terbaik ketika domain utama mengalami gangguan atau tidak dapat
3905diakses karena berbagai faktor. Oleh sebab itu, BBNI4D selalu menyediakan jalur akses resmi
3906yang diperbarui secara berkala agar seluruh pengguna tetap dapat login dengan mudah tanpa
3907mengalami kendala teknis.
3908</p>
3909
3910<p>
3911Seluruh link alternatif dirancang menggunakan infrastruktur server yang stabil sehingga mampu
3912memberikan pengalaman akses yang cepat dari berbagai wilayah. Dengan begitu, pengguna tidak
3913perlu mencari alamat website dari sumber yang tidak jelas karena seluruh informasi resmi selalu
3914disediakan melalui jalur yang terpercaya.
3915</p>
3916
3917</section>
3918
3919<section>
3920
3921<h2>Keunggulan Menggunakan BBNI4D</h2>
3922
3923<p>
3924BBNI4D menghadirkan berbagai keunggulan yang dirancang untuk memberikan kenyamanan kepada
3925seluruh pengguna. Mulai dari proses login yang sederhana hingga sistem transaksi yang cepat,
3926setiap layanan terus dikembangkan mengikuti kebutuhan pengguna modern.
3927</p>
3928
3929<ul>
3930<li>Link alternatif resmi yang selalu diperbarui.</li>
3931<li>Akses website cepat dan stabil.</li>
3932<li>Tampilan modern serta responsif.</li>
3933<li>Dapat diakses melalui komputer maupun smartphone.</li>
3934<li>Sistem login yang mudah digunakan.</li>
3935<li>Customer Service online 24 jam.</li>
3936<li>Proses deposit dan penarikan lebih praktis.</li>
3937<li>Performa server yang optimal.</li>
3938</ul>
3939
3940</section>
3941
3942<section>
3943
3944<h2>Pengalaman Bermain yang Lebih Nyaman</h2>
3945
3946<p>
3947Pengalaman pengguna menjadi prioritas utama BBNI4D. Seluruh tampilan website dibuat sederhana,
3948modern, dan mudah dipahami sehingga pengguna baru sekalipun dapat langsung memahami cara
3949menggunakan setiap fitur yang tersedia.
3950</p>
3951
3952<p>
3953Kecepatan loading halaman juga menjadi perhatian utama. Optimalisasi server membuat proses
3954perpindahan menu terasa lebih cepat sehingga aktivitas pengguna tidak terganggu meskipun
3955mengakses website melalui perangkat seluler.
3956</p>
3957
3958<p>
3959Selain itu, desain responsif memungkinkan tampilan website tetap optimal pada berbagai ukuran
3960layar tanpa mengurangi kualitas maupun kenyamanan penggunaan.
3961</p>
3962
3963</section>
3964
3965<section>
3966
3967<h2>Proses Deposit Cepat dan Praktis</h2>
3968
3969<p>
3970BBNI4D menghadirkan sistem transaksi yang dirancang agar lebih efisien. Pengguna dapat
3971melakukan proses deposit maupun penarikan dengan langkah yang sederhana sehingga aktivitas
3972berjalan lebih nyaman.
3973</p>
3974
3975<ul>
3976<li>Proses deposit cepat.</li>
3977<li>Berbagai metode pembayaran.</li>
3978<li>Konfirmasi transaksi lebih singkat.</li>
3979<li>Layanan transaksi 24 jam.</li>
3980<li>Riwayat transaksi mudah dipantau.</li>
3981</ul>
3982
3983<p>
3984Dengan sistem transaksi yang stabil, pengguna tidak perlu menunggu terlalu lama ketika
3985melakukan proses pembayaran maupun pencairan saldo.
3986</p>
3987
3988</section>
3989
3990<section>
3991
3992<h2>Keamanan Menjadi Prioritas Utama</h2>
3993
3994<p>
3995Keamanan data pengguna merupakan salah satu fokus utama BBNI4D. Platform ini menggunakan
3996berbagai sistem perlindungan modern untuk membantu menjaga privasi dan keamanan informasi
3997pengguna selama mengakses website.
3998</p>
3999
4000<p>
4001Selain melakukan pembaruan sistem secara berkala, tim teknis juga terus memantau performa
4002server agar seluruh layanan tetap berjalan optimal. Dengan demikian, pengguna dapat menikmati
4003pengalaman yang lebih aman serta nyaman.
4004</p>
4005
4006</section>
4007
4008<section>
4009
4010<h2>Customer Service Online 24 Jam</h2>
4011
4012<p>
4013Layanan pelanggan tersedia selama 24 jam untuk membantu berbagai kebutuhan pengguna.
4014Mulai dari pertanyaan mengenai link alternatif terbaru, bantuan login, informasi transaksi,
4015hingga kendala teknis lainnya dapat ditangani dengan cepat oleh tim customer service yang
4016berpengalaman.
4017</p>
4018
4019<p>
4020Respon yang cepat menjadi salah satu keunggulan sehingga pengguna tidak perlu menunggu lama
4021untuk mendapatkan solusi atas kendala yang dialami.
4022</p>
4023
4024</section>
4025
4026<section>
4027
4028<h2>Kompatibel di Semua Perangkat</h2>
4029
4030<p>
4031BBNI4D telah dioptimalkan agar dapat berjalan dengan baik di berbagai perangkat dan sistem
4032operasi. Website tetap ringan serta responsif sehingga dapat digunakan kapan saja dan di mana
4033saja.
4034</p>
4035
4036<ul>
4037<li>Android</li>
4038<li>iPhone (iOS)</li>
4039<li>Windows</li>
4040<li>macOS</li>
4041<li>Tablet</li>
4042</ul>
4043
4044<p>
4045Selain itu, website juga mendukung browser modern seperti Google Chrome, Mozilla Firefox,
4046Microsoft Edge, Safari, dan browser berbasis Chromium lainnya.
4047</p>
4048
4049</section>
4050
4051<section>
4052
4053<h2>Tips Menggunakan Link Alternatif dengan Aman</h2>
4054
4055<p>
4056Untuk menjaga keamanan akun, pengguna disarankan mengikuti beberapa langkah berikut:
4057</p>
4058
4059<ul>
4060<li>Gunakan link alternatif resmi.</li>
4061<li>Jangan membagikan akun kepada orang lain.</li>
4062<li>Gunakan password yang kuat.</li>
4063<li>Logout setelah selesai menggunakan akun.</li>
4064<li>Pastikan perangkat bebas dari virus maupun malware.</li>
4065</ul>
4066
4067</section>
4068
4069<section>
4070
4071<h2>Kesimpulan</h2>
4072
4073<p>
4074BBNI4D hadir sebagai platform yang menyediakan link alternatif resmi dengan akses cepat,
4075server stabil, tampilan modern, serta proses transaksi yang praktis. Dukungan customer
4076service 24 jam, kompatibilitas di berbagai perangkat, serta pembaruan link secara berkala
4077menjadikan BBNI4D sebagai pilihan bagi pengguna yang mengutamakan kenyamanan dan kemudahan
4078akses.
4079</p>
4080
4081<p>
4082Dengan terus meningkatkan kualitas layanan, BBNI4D berkomitmen menghadirkan pengalaman
4083penggunaan yang lebih baik melalui sistem yang stabil, aman, dan mudah digunakan kapan saja.
4084Selalu gunakan link resmi dan lakukan aktivitas secara bijak sesuai ketentuan yang berlaku.
4085</p>
4086
4087</section>
4088
4089</article>
4090
4091<div class="floating-menu">
4092  <button class="floating-menu-toggle" id="floatingMenuToggle" type="button">
4093    <span class="bar"></span>
4094    <span class="bar"></span>
4095    <span class="bar"></span>
4096    <span>MENU</span>
4097  </button>
4098
4099  <div class="floating-menu-items" id="floatingMenuItems">
4100    <div class="floating-item">
4101      <a href="https://t.ly/rtpbbni4d">
4102        <img src="https://bkbmindah.com/imgbanner/RTPSLOT.gif" alt="Informasi BBNI4D">
4103      </a>
4104      <div class="nav-text">INFO</div>
4105    </div>
4106
4107    <div class="floating-item">
4108      <a href="https://bonusbkbm.com/vip_point/">
4109        <img src="https://bkbmindah.com/image/point.gif" alt="Program BBNI4D">
4110      </a>
4111      <div class="nav-text">POINT</div>
4112    </div>
4113
4114    <div class="floating-item">
4115      <a href="https://t.me/bkbmgroupjp/">
4116        <img src="https://i.imgur.com/0FFROQh.gif" alt="Komunitas BBNI4D">
4117      </a>
4118      <div class="nav-text">GROUP</div>
4119    </div>
4120
4121    <div class="floating-item">
4122      <a href="https://docs.google.com/forms/d/e/1FAIpQLSdoGqUDrZ88dc7JtyltalKbt-iE4lehMTTwsBJSuMm7PQ5oEA/viewform?usp=sf_link">
4123        <img src="https://bkbmindah.com/image/saran.gif" alt="Kritik dan Saran">
4124      </a>
4125      <div class="nav-text">REPORT</div>
4126    </div>
4127  </div>
4128</div>
4129
4130<div class="wrapper-service" id="serviceBox">
4131  <div class="item-service">
4132    <h1>Akses</h1>
4133    <div class="status-wrapper">
4134      <p>Rata-Rata</p>
4135      <p><span class="count-item">1</span> Menit</p>
4136    </div>
4137  </div>
4138
4139  <div class="item-service">
4140    <h1>Respon</h1>
4141    <div class="status-wrapper">
4142      <p>Rata-Rata</p>
4143      <p><span class="count-item">3</span> Menit</p>
4144    </div>
4145  </div>
4146
4147  <div class="item-service">
4148    <h1>Pengguna Online</h1>
4149    <div class="status-wrapper-mem">
4150      <p><span class="count-item" id="memberCount">0</span> User</p>
4151    </div>
4152  </div>
4153
4154  <div class="item-service">
4155    <p style="text-align:center;">Ketik Di Google:</p>
4156    <div class="google-wrapper">
4157      <img src="https://i.postimg.cc/wvpq3xNS/googlep2.png" alt="Google">
4158      <p>
4158BBNI4D</p>
4159    </div>
4160  </div>
4161</div>
4162
4163<div id="popupOverlay" class="popup-overlay is-hidden">
4164  <div class="popup-backdrop" id="popupBackdrop"></div>
4165  <div class="popup-card" id="popupCard">
4166    <a href="https://t.me/+ZMZa8u0NNh80OTE1" target="_blank" rel="noopener">
4167      <img src="https://imagebkbmxs.com/BBNI4D/bbni4dxsayapjp.png" alt="Banner BBNI4D">
4168    </a>
4169    <button id="popupClose" type="button">CLOSE</button>
4170  </div>
4171</div>
4172
4173<a href="//www.dmca.com/Protection/Status.aspx?ID=85a59234-8a20-446a-ba1f-02bb757c2fef" title="DMCA.com Protection Status" class="dmca-badge">
4174  <img src="https://images.dmca.com/Badges/dmca_protected_sml_120i.png?ID=85a59234-8a20-446a-ba1f-02bb757c2fef" alt="DMCA.com Protection Status">
4175</a>
4176<script src="https://images.dmca.com/Badges/DMCABadgeHelper.min.js"></script>
4176
4177<style>
4178.accent {
4179  color: #ED6530;
4180}
4181
4182.accent-link {
4183  color: #ED6530;
4184  text-decoration: none;
4185}
4186
4187.bbni4d-content h2,
4188.bbni4d-content h3 {
4189  line-height: 1.4;
4190}
4191
4192.bbni4d-content p,
4193.bbni4d-content li {
4194  line-height: 1.7;
4195}
4196
4197.logoimg {
4198  animation: zoomInOut 2s infinite;
4199}
4200
4201@keyframes zoomInOut {
4202  0% { transform: scale(1); }
4203  50% { transform: scale(1.1); }
4204  100% { transform: scale(1); }
4205}
4206
4207.bbni-alert {
4208  border: 3px solid #ff0000;
4209  border-radius: 5px;
4210  margin: 17px 60px -13px;
4211  background-color: #000000;
4212  padding: 10px;
4213}
4214
4215.bbni-alert-title {
4216  animation: blinkingText 1.5s infinite;
4217  margin: auto;
4218  display: block;
4219  color: #ff0000;
4220  text-align: center;
4221  font-size: 23px;
4222  font-weight: 700;
4223}
4224
4225.bbni-alert p {
4226  color: #ffffff;
4227  text-align: center;
4228  font-size: 15px;
4229  font-weight: bold;
4230}
4231
4232.bbni-alert-marquee {
4233  text-align: center;
4234  border: #ffffff solid 1px;
4235  background: #ff0000;
4236  color: #fff;
4237  margin: auto;
4238  font-size: 14px;
4239}
4240
4241@keyframes blinkingText {
4242  0% { opacity: 1; }
4243  50% { opacity: 0.4; }
4244  100% { opacity: 1; }
4245}
4246
4247.social-float {
4248  left: 0;
4249  width: 0;
4250  position: fixed;
4251  top: 111px;
4252  z-index: 9999999999;
4253}
4254
4255.social-float ul {
4256  padding: 0;
4257  transform: translate(-130px, 0);
4258}
4259
4260.social-float ul li {
4261  display: block;
4262  margin: 22px 6px 6px 0;
4263  background: rgba(0, 0, 0, 0.86);
4264  width: 189px;
4265  text-align: right;
4266  padding: 4px;
4267  border-radius: 0 20px 20px 0;
4268  transition: all 1s;
4269  height: 53px;
4270  border: groove 2px #ffffff;
4271  color: white;
4272}
4273
4274.social-float ul li:hover {
4275  transform: translate(110px, 0);
4276  background: rgba(95, 95, 95, 0.7);
4277}
4278
4279.social-float a {
4280  display: flex;
4281  align-items: center;
4282  justify-content: space-between;
4283  gap: 10px;
4284  text-decoration: none;
4285  color: #fff;
4286  width: 100%;
4287}
4288
4289.social-float img {
4290  width: 40px;
4291  height: 40px;
4292}
4293
4294.floating-menu {
4295  width: 90px;
4296  padding: 10px 10px 5px 0;
4297  position: fixed;
4298  bottom: 79px;
4299  left: 10px;
4300  z-index: 100;
4301  font-family: "Raleway", sans-serif;
4302  color: #fff;
4303  font-size: 14px;
4304  text-align: center;
4305}
4306
4307.floating-menu-toggle {
4308  display: block;
4309  cursor: pointer;
4310  padding: 10px;
4311  border-radius: 20%;
4312  box-shadow: 0 0 8px 2px #f15a23bb;
4313  background-color: #f15a23;
4314  width: 80px;
4315  margin: 0 auto;
4316  transition: all .7s ease;
4317  border: 0;
4318  color: #fff;
4319}
4320
4321.floating-menu-toggle .bar {
4322  display: block;
4323  height: 5px;
4324  width: 40px;
4325  background: #ffffff;
4326  margin: 6px auto;
4327}
4328
4329.floating-menu-items {
4330  display: none;
4331}
4332
4333.floating-menu-items.is-open {
4334  display: block;
4335}
4336
4337.floating-item {
4338  background: #f15a23;
4339  background-size: 300%;
4340  background-position: right;
4341  border-radius: 20%;
4342  box-shadow: #f15a23;
4343  width: 80px;
4344  margin: 5px auto;
4345  text-align: center;
4346  color: #fff;
4347  cursor: pointer;
4348  transition: .5s;
4349  border: solid 3px white;
4350  display: block;
4351  white-space: nowrap;
4352  font-family: "Raleway", sans-serif;
4353  padding: 10px 5px;
4354  font-size: 10px;
4355  text-transform: uppercase;
4356}
4357
4358.floating-item img {
4359  width: 40px;
4360  margin-bottom: 5px;
4361}
4362
4363.count-item {
4364  font-size: 1.8rem;
4365  background: #f15a23;
4366  padding: 0.3rem 0.5rem;
4367  color: #fff !important;
4368  border-radius: 10px;
4369  font-weight: bold;
4370}
4371
4372.wrapper-service {
4373  display: flex;
4374  align-items: center;
4375  flex-wrap: wrap;
4376  justify-content: center;
4377  border-radius: 10px;
4378  margin-top: 1.3rem;
4379  border: var(--result-border);
4380  padding: 0.8rem;
4381  background: #1b6d79;
4382}
4383
4384.status-wrapper,
4385.status-wrapper-mem {
4386  display: flex;
4387  align-items: center;
4388  justify-content: center;
4389}
4390
4391.status-wrapper p {
4392  margin-right: 0.6rem !important;
4393}
4394
4395.item-service {
4396  margin-right: 3rem;
4397}
4398
4399.item-service:last-child {
4400  margin-right: 0;
4401}
4402
4403.item-service h1 {
4404  font-size: 2.2rem;
4405  margin-top: 7px !important;
4406  text-transform: uppercase;
4407  font-weight: bold !important;
4408}
4409
4410.item-service p {
4411  color: #fff;
4412}
4413
4414.google-wrapper {
4415  background: #fff;
4416  padding: 1.7rem;
4417  width: 18rem;
4418  height: 0.5rem;
4419  border-radius: 10px;
4420  position: relative;
4421}
4422
4423.google-wrapper img {
4424  position: absolute;
4425  width: 2rem;
4426  top: 9px;
4427  left: 10px;
4428}
4429
4430.google-wrapper p {
4431  position: absolute;
4432  left: 3.4rem;
4433  top: 0.6rem;
4434  text-transform: uppercase;
4435  font-size: 1.50rem !important;
4436  font-weight: bold !important;
4437  color: #000 !important;
4438}
4439
4440.popup-overlay {
4441  position: fixed;
4442  inset: 0;
4443  display: flex;
4444  align-items: center;
4445  justify-content: center;
4446  z-index: 999999;
4447}
4448
4449.popup-overlay.is-hidden {
4450  display: none;
4451}
4452
4453.popup-backdrop {
4454  position: fixed;
4455  inset: 0;
4456  background: rgba(0, 0, 0, 0.96);
4457  z-index: 999998;
4458}
4459
4460.popup-card {
4461  position: relative;
4462  z-index: 999999;
4463  width: 60%;
4464  min-width: 315px;
4465  max-width: 390px;
4466  border-radius: 5px;
4467  overflow: hidden;
4468  animation: swirl-in-fwd 0.6s ease-out both;
4469  background: #000;
4470}
4471
4472.popup-card img {
4473  width: 100%;
4474  display: block;
4475}
4476
4477.popup-card button {
4478  width: 100%;
4479  padding: 12px;
4480  font-size: 22px;
4481  font-weight: 700;
4482  border: 0;
4483  background: #f15a23;
4484  color: #fff;
4485  cursor: pointer;
4486}
4487
4488.popup-card.is-closing {
4489  animation: swirl-out-bck 0.6s ease-in both;
4490}
4491
4492.popup-backdrop.is-closing {
4493  animation: fade-out 0.6s ease-out both;
4494}
4495
4496@keyframes swirl-in-fwd {
4497  0% {
4498    transform: rotate(0deg) scale(0);
4499    opacity: 0;
4500  }
4501  100% {
4502    transform: rotate(0) scale(1);
4503    opacity: 1;
4504  }
4505}
4506
4507@keyframes swirl-out-bck {
4508  0% {
4509    transform: rotate(0) scale(1);
4510    opacity: 1;
4511  }
4512  100% {
4513    transform: rotate(0deg) scale(0);
4514    opacity: 0;
4515  }
4516}
4517
4518@keyframes fade-out {
4519  0% { opacity: 1; }
4520  100% { opacity: 0; }
4521}
4522
4523</style>
4524<script>
4525document.addEventListener('DOMContentLoaded', function () {
4526  const floatingMenuToggle = document.getElementById('floatingMenuToggle');
4527  const floatingMenuItems = document.getElementById('floatingMenuItems');
4528  const memberCount = document.getElementById('memberCount');
4529
4530  if (floatingMenuToggle && floatingMenuItems) {
4531    floatingMenuToggle.addEventListener('click', function () {
4532      floatingMenuItems.classList.toggle('is-open');
4533    });
4534  }
4535
4536  if (memberCount) {
4537    const min = 1254983;
4538    const max = 1846354;
4539    const randomUsers = Math.floor(Math.random() * (max - min + 1)) + min;
4540    memberCount.textContent = randomUsers;
4541  }
4542
4543  const popupOverlay = document.getElementById('popupOverlay');
4544  const popupCard = document.getElementById('popupCard');
4545  const popupBackdrop = document.getElementById('popupBackdrop');
4546  const popupClose = document.getElementById('popupClose');
4547
4548  function closePopup() {
4549    if (!popupOverlay || !popupCard || !popupBackdrop) return;
4550
4551    popupCard.classList.add('is-closing');
4552    popupBackdrop.classList.add('is-closing');
4553
4554    setTimeout(function () {
4555      popupOverlay.classList.add('is-hidden');
4556    }, 600);
4557  }
4558
4559  if (window.location.pathname === '/' && popupOverlay) {
4560    popupOverlay.classList.remove('is-hidden');
4561  }
4562
4563  if (popupClose) {
4564    popupClose.addEventListener('click', closePopup);
4565  }
4566
4567  if (popupBackdrop) {
4568    popupBackdrop.addEventListener('click', closePopup);
4569  }
4570});
4571</script>
4571
4572</div>
4573    
4574    
4575    <!-- LIVE CHAT -->
4576    
4577    
4578    <!-- LiveChat Internal -->
4579        <style id="cs-embed-custom-styles">
4580    /* Generated widget appearance — theme: light */
4581.cs-embed {
4582  --cs-primary: #008080;
4583  --cs-secondary: #b2d8d8;
4584  --cs-panel-width: 360px;
4585  --cs-panel-height: 600px;
4586  --cs-footer-bg: #fff;
4587  --cs-footer-border: #f1f5f9;
4588  --cs-input-row-bg: #f1f5f9;
4589  --cs-input-text: #111827;
4590  --cs-input-muted: #64748b;
4591  --cs-upload-bg: #fff;
4592  --cs-upload-border: #cbd5e1;
4593  --cs-upload-icon: #334155;
4594  --cs-image-preview-bg: #eff6ff;
4595  --cs-image-preview-border: #dbeafe;
4596  --cs-closed-notice: #9ca3af;
4597  --cs-scrollbar-track: #eef2f7;
4598  --cs-scrollbar-thumb: #cbd5e1;
4599  --cs-scrollbar-thumb-hover: #94a3b8;
4600  --cs-messages-bg: #f8fafc;
4601  --cs-sticky-banner-bg: #fffbeb;
4602  --cs-sticky-banner-border: #fde68a;
4603  --cs-sticky-banner-inner-bg: #fff;
4604  --cs-sticky-banner-inner-border: #fde68a;
4605  --cs-sticky-banner-text: #92400e;
4606  right: 24px; left: auto; align-items: flex-end;
4607}
4608
4609.cs-embed .cs-panel {
4610  background: #fff;
4611  color: #111827;
4612}
4613
4614.cs-embed .cs-bubble--agent {
4615  background: #fff;
4616  color: #111;
4617  border-color: #e5e7eb;
4618}
4619
4620.cs-toggle:not(.cs-toggle--banner) {
4621  background: var(--cs-primary);
4622  box-shadow: 0 4px 12px rgba(0, 128, 128, 0.4);
4623}
4624
4625.cs-header {
4626  background: linear-gradient(135deg, #008080, #b2d8d8);
4627}
4628
4629.cs-bubble--customer {
4630  background: #008080;
4631  color: #ffffff;
4632}    </style>
4633    
4633<script src="https://service.lc1001ai.com/embed.js"></script>
4633
4634    
4634<script>
4635                (function () {
4636            var chatServiceUrl = "https://service.lc1001ai.com";
4637            var channelId = "6a3dfc0e179b8ad92725e82b";
4638            var credentials = "";
4639            var showWidget = true;
4640            window.CsChatEmbed
4641            .init({
4642                chatServiceUrl: chatServiceUrl,
4643                channelId: channelId,
4644                credentials: credentials,
4645                createWidget: true,
4646                showWidget: showWidget,
4647                fetchAppearance: false,
4648            })
4649            .then(function (result) {
4650                console.log("Chat connected, sessionId:", result.sessionId);
4651            })
4652            .catch(function (err) {
4653                console.error("Chat init failed:", err);
4654            });
4655        })();
4656    </script>
4656
4657
4658    <div class="footer-group">
4659
4660        <div class="footer-copyright">
4661            <div style="white-space:nowrap">
4662                &copy; 2015 &ndash; 2026                Copyright                BBNI4D.
4663                All Rights Reserved.
4664            </div>
4665        </div>
4666
4667                <div class="footer-wap-btn" onclick='window.location.href="/wap"'>WAP</div>
4668        
4669    </div>
4670
4671</div>
4672</footer>    <nav class="navbar fixed-bottom p-0 d-md-none" style="z-index:10000">
4673  <div class="container-fluid px-0">
4674    <div style="display:grid;grid-template-columns:repeat(4,1fr);width:100%;">
4675
4676      
4677        <a href="/home" onclick="openPage('home',this); window.scrollTo({top:0,behavior:'smooth'}); return false;" class="bottom-menu text-decoration-none d-flex flex-column justify-content-around align-items-center py-2" data-nav="home">
4678          <i class="bi bi-house-fill" style="font-size:20px;"></i>
4679          <small>Home</small>
4680        </a>
4681
4682        <a href="/promosi" onclick="openPage('promosi',this); $('#content').get(0).scrollIntoView({behavior: 'smooth'}); return false;" class="bottom-menu text-decoration-none d-flex flex-column justify-content-around align-items-center py-2" data-nav="promosi">
4683          <i class="bi bi-gift-fill" style="font-size:20px;"></i>
4684          <small>Promosi</small>
4685        </a>
4686
4687        <a href="/event" onclick="openPage('event',this); $('#content').get(0).scrollIntoView({behavior: 'smooth'}); return false;" class="bottom-menu text-decoration-none d-flex flex-column justify-content-around align-items-center py-2" data-nav="event">
4688          <i class="bi bi-calendar-event-fill" style="font-size:20px;"></i>
4689          <small>Event</small>
4690        </a>
4691
4692                              <div class="chat-dial-wrap bottom-menu d-flex flex-column justify-content-around align-items-center py-2" style="position:relative;">
4693              <a href="javascript:void(0)" onclick="toggleChatDial(event)" class="text-decoration-none d-flex flex-column justify-content-around align-items-center" style="color:inherit;">
4694                <img src="https://img.viva88athenae.com/navbar/chat_w.png?v=1790436337" alt="" style="width:20px;height:20px;object-fit:contain;">
4695                <small>Chat</small>
4696              </a>
4697              <div class="chat-dial-list" id="chatDialList">
4698                                  <a href="https://t.me/OFFICIALBBNI4D" target="_blank" class="chat-dial-item" title="Telegram">
4699                    <img src="https://img.viva88athenae.com/telegram.png?v=1790436337" alt="Telegram">
4700                  </a>
4701                                                  <a href="javascript:void(0)" onclick="window.CsChatEmbed.openChat(); return false;" class="chat-dial-item chat-dial-livechat" title="Livechat">
4702                    <img src="https://img.viva88athenae.com/navbar/livechat_w.png?v=1790436337" alt="Livechat">
4703                  </a>
4704                              </div>
4705            </div>
4706                  
4707      
4708    </div>
4709  </div>
4710</nav>
4711
4712<script>
4713  function toggleChatDial(e) {
4714    e.stopPropagation();
4715    document.getElementById('chatDialList').classList.toggle('open');
4716  }
4717  document.addEventListener('click', function (e) {
4718    var list = document.getElementById('chatDialList');
4719    if (!list) return;
4720    // close when clicking outside, or after picking any dial item (livechat included)
4721    if (!e.target.closest('.chat-dial-wrap') || e.target.closest('.chat-dial-item')) {
4722      list.classList.remove('open');
4723    }
4724  });
4725</script>
4725
4726
4727    <div class="offcanvas offcanvas-end w-100" tabindex="-1" id="offcanvasExample">
4728
4729      <div class="offcanvas-body p-0">
4730
4731        <div class="d-grid gap-2 mt-2 px-3 offcanvas-user-menu">
4732          <button class="btn btn-menu p-3 text-start d-flex align-items-center" onclick="content('/menu.php?content=statement','#content',null);closeDesktopUserMenu()">
4733    <i class="bi bi-bar-chart-fill me-2 accent-text-color"></i> Statement
4734</button><button class="btn btn-menu p-3 text-start d-flex align-items-center" onclick="content('/menu.php?content=history','#content',null);closeDesktopUserMenu()">
4735    <i class="bi bi-clock-fill me-2 accent-text-color"></i> History
4736</button><button class="btn btn-menu p-3 text-start d-flex align-items-center" onclick="content('/menu.php?content=memo','#content',null);closeDesktopUserMenu()">
4737    <i class="bi bi-envelope-fill me-2 accent-text-color"></i> Memo
4738</button><button class="btn btn-menu p-3 text-start d-flex align-items-center" onclick="content('/menu.php?content=referral','#content',null);closeDesktopUserMenu()">
4739    <i class="bi bi-people-fill me-2 accent-text-color"></i> Referral
4740</button><button class="btn btn-menu p-3 text-start d-flex align-items-center" onclick="content('/menu.php?content=password','#content',null);closeDesktopUserMenu()">
4741    <i class="bi bi-lock-fill me-2 accent-text-color"></i> Ubah Password
4742</button><button class="btn btn-menu p-3 text-start d-flex align-items-center" onclick="modal('/transaksi.php?content=rekening');closeDesktopUserMenu()">
4743    <i class="bi bi-wallet-fill me-2 accent-text-color"></i> Rekening
4744</button><button class="btn btn-menu d-flex align-items-center justify-content-between p-0" onclick="window.open('/downloads/app/BNI4D.apk','_blank')">
4745    <div class="d-flex align-items-center px-3">
4746    <i class="bi bi-android2 me-2 accent-text-color"></i> Download App
4747    </div>
4748    <img src="/images/new/btn-android.png" class="btn-menu-img" alt="" width="171" height="55">
4749</button><button class="btn btn-menu d-flex align-items-center justify-content-between p-0" onclick="window.open('https://telegram.me/BBNI4D_bot','_blank')">
4750    <div class="d-flex align-items-center px-3">
4751    <i class="bi bi-send-fill me-2 accent-text-color"></i> Bet Via Telegram
4752    </div>
4753    <img src="/images/new/btn-telegram.png" class="btn-menu-img" alt="" width="171" height="55">
4754</button><button class="btn btn-menu p-3 text-start d-flex align-items-center" onclick="fetch('/api/front/logout',{method:'POST'}).then(()=>window.location.href='/index.php')">
4755    <i class="bi bi-door-open-fill me-2 accent-text-color"></i> Logout
4756</button>        </div>
4757
4758      </div>
4759    </div>
4760
4761    <div id="desktopUserDropdown" class="desktop-user-dropdown">
4762      <div class="d-grid">
4763        <button class="btn btn-menu p-3 text-start d-flex align-items-center" onclick="content('/menu.php?content=statement','#content',null);closeDesktopUserMenu()">
4764    <i class="bi bi-bar-chart-fill me-2 accent-text-color"></i> Statement
4765</button><button class="btn btn-menu p-3 text-start d-flex align-items-center" onclick="content('/menu.php?content=history','#content',null);closeDesktopUserMenu()">
4766    <i class="bi bi-clock-fill me-2 accent-text-color"></i> History
4767</button><button class="btn btn-menu p-3 text-start d-flex align-items-center" onclick="content('/menu.php?content=memo','#content',null);closeDesktopUserMenu()">
4768    <i class="bi bi-envelope-fill me-2 accent-text-color"></i> Memo
4769</button><button class="btn btn-menu p-3 text-start d-flex align-items-center" onclick="content('/menu.php?content=referral','#content',null);closeDesktopUserMenu()">
4770    <i class="bi bi-people-fill me-2 accent-text-color"></i> Referral
4771</button><button class="btn btn-menu p-3 text-start d-flex align-items-center" onclick="content('/menu.php?content=password','#content',null);closeDesktopUserMenu()">
4772    <i class="bi bi-lock-fill me-2 accent-text-color"></i> Ubah Password
4773</button><button class="btn btn-menu p-3 text-start d-flex align-items-center" onclick="modal('/transaksi.php?content=rekening');closeDesktopUserMenu()">
4774    <i class="bi bi-wallet-fill me-2 accent-text-color"></i> Rekening
4775</button><button class="btn btn-menu d-flex align-items-center justify-content-between p-0" onclick="window.open('/downloads/app/BNI4D.apk','_blank')">
4776    <div class="d-flex align-items-center px-3">
4777    <i class="bi bi-android2 me-2 accent-text-color"></i> Download App
4778    </div>
4779    <img src="/images/new/btn-android.png" class="btn-menu-img" alt="" width="171" height="55">
4780</button><button class="btn btn-menu d-flex align-items-center justify-content-between p-0" onclick="window.open('https://telegram.me/BBNI4D_bot','_blank')">
4781    <div class="d-flex align-items-center px-3">
4782    <i class="bi bi-send-fill me-2 accent-text-color"></i> Bet Via Telegram
4783    </div>
4784    <img src="/images/new/btn-telegram.png" class="btn-menu-img" alt="" width="171" height="55">
4785</button><button class="btn btn-menu p-3 text-start d-flex align-items-center" onclick="fetch('/api/front/logout',{method:'POST'}).then(()=>window.location.href='/index.php')">
4786    <i class="bi bi-door-open-fill me-2 accent-text-color"></i> Logout
4787</button>      </div>
4788    </div>
4789
4790    
4790<script src="/js/new/vendor/bootstrap.bundle.min.js?v=1790436337"></script>
4790
4791    
4791<script src="/js/new/main.js?v=1790436337"></script>
4791
4792    
4793    
4793<script>
4794        window.JT_SSR_PATH = "\/home.php";
4795                setTimeout(function() {
4796                    const mobileForm = document.querySelector('#mobilelogin form') || 
4797                                      document.querySelector('#mobilelogin .login-form') ||
4798                                      document.querySelector('.mobile-only form');
4799                    
4800                    if (!mobileForm) {
4801                        return;
4802                    }
4803                    
4804                    const username = mobileForm.querySelector('input[name="username"]');
4805                    const password = mobileForm.querySelector('input[name="password"]');
4806                    const remember = document.querySelector('#rememberMe') || 
4807                                    document.querySelector('input[type="checkbox"]');
4808                    
4809                    if (!username || !password || !remember) {
4810                        return;
4811                    }
4812                    
4813                    
4814                    
4815                    try {
4816                        localStorage.setItem('test', 'working');
4817                        if (localStorage.getItem('test') === 'working') {
4818                            localStorage.removeItem('test');
4819                        } else {
4820                            return;
4821                        }
4822                    } catch(e) {
4823                        return;
4824                    }
4825                    
4826                    initializeRememberMe();
4827                    loadSavedData();
4828                    
4829                    mobileForm.addEventListener('submit', handleSave);
4830                    mobileForm.addEventListener('click', function(e) {
4831                        if (e.target.type === 'submit' || e.target.classList.contains('submit')) {
4832                            handleSave();
4833                        }
4834                    });
4835                    remember.addEventListener('change', function() {
4836                        if (!this.checked) {
4837                            clearSavedData();
4838                            localStorage.setItem('mobile_remember_unchecked', 'true');
4839                        } else {
4840                            localStorage.removeItem('mobile_remember_unchecked');
4841                        }
4842                    });
4843    
4844                    function initializeRememberMe() {
4845                        try {
4846                            const wasUnchecked = localStorage.getItem('mobile_remember_unchecked');
4847                            const hasSuccessfulLogin = localStorage.getItem('mobile_login_success');
4848                            if (wasUnchecked === 'true' && hasSuccessfulLogin === 'true') {
4849                                remember.checked = false;
4850                            } else {
4851                                remember.checked = true;
4852                            }
4853                        } catch(e) {
4854                            remember.checked = true;
4855                        }
4856                    }
4857                    
4858                    function loadSavedData() {
4859                        try {
4860                            
4861                            const savedUsername = localStorage.getItem('mobile_username');
4862                            const savedPassword = localStorage.getItem('mobile_password');
4863                            
4864                            
4865                            
4866                            const rememberChecked = localStorage.getItem('mobile_remember');
4867                            if (rememberChecked === 'true' && savedUsername && savedPassword) {
4868                                username.value = savedUsername;
4869                                password.value = savedPassword;
4870                            }
4871                        } catch(e) {
4872                            // console.log('Error loading data:', e);
4873                        }
4874                    }
4875                    
4876                    function handleSave() {
4877                        if (remember.checked) {
4878                            const usernameVal = username.value.trim();
4879                            const passwordVal = password.value.trim();
4880                            
4881                            if (usernameVal && passwordVal) {
4882                                try {
4883                                    localStorage.setItem('mobile_username', usernameVal);
4884                                    localStorage.setItem('mobile_password', passwordVal);
4885                                    localStorage.setItem('mobile_remember', 'true');
4886                                    localStorage.setItem('mobile_login_success', 'true');
4887                                } catch(e) {
4888                                    // console.log('Error saving data:', e);
4889                                }
4890                            }
4891                        } else {
4892                            clearSavedData();
4893                            localStorage.setItem('mobile_login_success', 'true');
4894                        }
4895                    }
4896                    
4897                    function clearSavedData() {
4898                        try {
4899                            localStorage.removeItem('mobile_username');
4900                            localStorage.removeItem('mobile_password');
4901                            localStorage.removeItem('mobile_remember');
4902                        } catch(e) {
4903                            // console.log('Error clearing data:', e);
4904                        }
4905                    }
4906                }, 100); // Wait 100ms
4907    </script>
4907
4908
4909    
4909<script>
4910        var JT_GUEST_MAP = {
4911            '':            '/' + 'home' + '.php',
4912            'home':        '/' + 'home' + '.php',
4913            'togel':       '/togel.php',
4914            'kupon':       '/kupon.php',
4915            'promosi':     '/' + 'promosi' + '.php',
4916            'event':       '/' + 'event' + '.php',
4917            'register':    '/' + 'register' + '.php',
4918            'slot':        '/game.php?content=slot',
4919            'casino':      '/game.php?content=casino',
4920            'sport':       '/' + 'game' + '.php?' + 'content=sport',
4921            'sabung':      '/' + 'game' + '.php?' + 'content=sabung',
4922            'arcade':      '/game.php?content=arcade',
4923            'interactive': '/game.php?content=interactive',
4924        };
4925        
4926        if (window.matchMedia("(max-width: 768px)").matches) {
4927            JT_GUEST_MAP.register = '/' + 'mregister' + '.php';
4928        }
4929
4930        var JT_URL_PREFIX = "";
4931
4932        function jtGuestAjaxPathFromLocation() {
4933            var re = new RegExp('^' + (JT_URL_PREFIX ? JT_URL_PREFIX.replace(/\//g, '\\/') : '') + '\\/([^/?#]*)');
4934            var match = location.pathname.match(re);
4935            var slug = match ? match[1] : '';
4936            return JT_GUEST_MAP[slug] || '/home.php';
4937        }
4938
4939        function jtGuestUrlForPath(path) {
4940            var gameMatch = path.match(/^\/game\.php\?content=([a-z]+)/);
4941            if (gameMatch) return JT_URL_PREFIX + '/' + gameMatch[1];
4942            for (var slug in JT_GUEST_MAP) {
4943                if (JT_GUEST_MAP[slug] === path) {
4944                    return slug === '' ? JT_URL_PREFIX + '/' : JT_URL_PREFIX + '/' + slug;
4945                }
4946            }
4947            return null;
4948        }
4949
4950        function jtUpdateBrowserUrl(path) {
4951            var cleanUrl = jtGuestUrlForPath(path);
4952            if (cleanUrl && window.history) {
4953                history.pushState({ path: path }, '', cleanUrl);
4954            }
4955        }
4956
4957        var _initGuestPath = jtGuestAjaxPathFromLocation();
4958        history.replaceState({ path: _initGuestPath }, '', location.href);
4959
4960        function initGuestShell() {
4961            var path = jtGuestAjaxPathFromLocation();
4962            var homeMenu = path === '/home.php'
4963                ? (window.innerWidth >= 768
4964                    ? document.querySelector('.desktop-nav-link[data-nav="home"]')
4965                    : document.querySelector('#lobbyMenuWrap .lobby-menu[data-nav="home"]'))
4966                : null;
4967
4968            // Skip AJAX jika home sudah di-SSR.
4969            if (window.JT_SSR_PATH && window.JT_SSR_PATH === path) {
4970                $('.lobby-menu, .desktop-nav-link').removeClass('active');
4971                if (homeMenu) $(homeMenu).addClass('active');
4972                if (typeof waitForCss === 'function') waitForCss(ASYNC_CSS_IDS);
4973                return;
4974            }
4975
4976            content(path, '#content', homeMenu, true);
4977        }
4978
4979        window.addEventListener('popstate', function (e) {
4980            var path = e.state && e.state.path;
4981            if (path) content(path, '#content', null, true);
4982        });
4983
4984        // Heartbeat 60 detik — cek maintenance mode diaktifkan admin saat guest lagi buka web
4985        setInterval(function () {
4986            fetch('/api/front/maintenance-status')
4987                .then(function (r) { return r.json(); })
4988                .then(function (res) {
4989                    if (res.data && res.data.maintenance) {
4990                        window.location.href = '/maintenance';
4991                    }
4992                })
4993                .catch(function () {});
4994        }, 60000);
4995
4996        $('#modal').on('hidden.bs.modal', function () {
4997            $('.navbar.fixed-bottom').css('z-index', '9999');
4998        });
4999
5000        function syncOffcanvasBounds() {
5001            if (window.innerWidth >= 768) return;
5002
5003            var topNav = document.querySelector('nav.navbar.d-md-none:not(.fixed-bottom)');
5004            var bottomNav = document.querySelector('nav.navbar.fixed-bottom');
5005            var top = topNav ? Math.round(topNav.getBoundingClientRect().bottom) : 56;
5006            var bottom = bottomNav
5007                ? Math.round(window.innerHeight - bottomNav.getBoundingClientRect().top)
5008                : 58;
5009            // navbar atas bukan fixed: kalau halaman ter-scroll (mis. setelah
5010            // buka menu Statement/History/dll lewat content()), rect.bottom bisa
5011            // negatif dan bikin sisi atas offcanvas + backdrop kepotong.
5012            top = Math.max(0, top);
5013            bottom = Math.max(0, bottom);
5014
5015            document.documentElement.style.setProperty('--offcanvas-top', top + 'px');
5016            document.documentElement.style.setProperty('--offcanvas-bottom', bottom + 'px');
5017        }
5018
5019        document.addEventListener('DOMContentLoaded', syncOffcanvasBounds);
5020        window.addEventListener('resize', syncOffcanvasBounds);
5021
5022        $('#offcanvasExample').on('show.bs.offcanvas', function () {
5023            syncOffcanvasBounds();
5024            $('#providerBackdrop, #providerOverlay').remove();
5025            var modalInst = bootstrap.Modal.getInstance(document.getElementById('modal'));
5026            if (modalInst) modalInst.hide();
5027        });
5028
5029        /* ── Nav horizontal scroll (desktop) ───────────────────────────── */
5030        (function () {
5031            var navEl = document.querySelector('.desktop-mainnav .ms-auto');
5032            if (!navEl) return;
5033
5034            /* mouse-wheel → horizontal scroll */
5035            navEl.addEventListener('wheel', function (e) {
5036                if (e.deltaY !== 0) {
5037                    e.preventDefault();
5038                    navEl.scrollLeft += e.deltaY;
5039                }
5040            }, { passive: false });
5041
5042            /* scroll arrow buttons */
5043            var btnL = document.createElement('button');
5044            var btnR = document.createElement('button');
5045            [btnL, btnR].forEach(function (b) {
5046                b.style.cssText = 'position:absolute;top:50%;transform:translateY(-50%);z-index:10;background:var(--primary-background-color);border:1px solid var(--border-color);color:var(--primary-text-color);width:28px;height:40px;cursor:pointer;display:none;align-items:center;justify-content:center;padding:0;border-radius:4px;';
5047            });
5048            btnL.innerHTML = '&#8249;';
5049            btnR.innerHTML = '&#8250;';
5050            btnL.style.fontSize = btnR.style.fontSize = '20px';
5051
5052            var nav = document.querySelector('.desktop-mainnav');
5053            if (nav) {
5054                nav.style.position = 'relative';
5055                nav.appendChild(btnL);
5056                nav.appendChild(btnR);
5057            }
5058
5059            function placeArrows() {
5060                var navRect = nav ? nav.getBoundingClientRect() : null;
5061                var logoEl  = nav ? nav.querySelector('.navbar-brand') : null;
5062                var logoRight = logoEl ? logoEl.getBoundingClientRect().right : 0;
5063                btnL.style.left  = (logoRight - (navRect ? navRect.left : 0) + 4) + 'px';
5064                btnR.style.right = '4px';
5065            }
5066
5067            function updateArrows() {
5068                placeArrows();
5069                var canL = navEl.scrollLeft > 0;
5070                var canR = navEl.scrollLeft < navEl.scrollWidth - navEl.clientWidth - 1;
5071                btnL.style.display = canL ? 'flex' : 'none';
5072                btnR.style.display = canR ? 'flex' : 'none';
5073            }
5074
5075            var scrollTimer;
5076            function scrollBy(dir) {
5077                scrollTimer = setInterval(function () { navEl.scrollLeft += dir * 8; }, 16);
5078            }
5079            btnL.addEventListener('mousedown', function () { scrollBy(-1); });
5080            btnR.addEventListener('mousedown', function () { scrollBy(1);  });
5081            document.addEventListener('mouseup', function () { clearInterval(scrollTimer); });
5082
5083            navEl.addEventListener('scroll', updateArrows);
5084            window.addEventListener('resize', updateArrows);
5085            updateArrows();
5086        })();
5087
5088        function toggleDesktopUserMenu(e) {
5089            e.stopPropagation();
5090            document.getElementById('desktopUserDropdown').classList.toggle('open');
5091        }
5092        function closeDesktopUserMenu() {
5093            var d = document.getElementById('desktopUserDropdown');
5094            if (d) d.classList.remove('open');
5095        }
5096        document.addEventListener('click', function(e) {
5097            if (!e.target.closest('#desktopUserDropdown')) closeDesktopUserMenu();
5098            if (!e.target.closest('.tpl-picker-wrap')) {
5099                var dd = document.getElementById('tplPickerDd');
5100                if (dd) dd.classList.remove('open');
5101            }
5102        });
5103
5104        function toggleTplPicker(e) {
5105            e.stopPropagation();
5106            closeDesktopUserMenu();
5107            document.getElementById('tplPickerDd').classList.toggle('open');
5108        }
5109
5110
5111        (function() {
5112            var days = ['Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu'];
5113            var daysShort = ['Min','Sen','Sel','Rab','Kam','Jum','Sab'];
5114            var p = n => String(n).padStart(2,'0');
5115            function updateClock() {
5116                var now = new Date();
5117                var isMobile = window.innerWidth < 768;
5118                var dayName = isMobile ? daysShort[now.getDay()] : days[now.getDay()];
5119                var text = dayName + ' ' + p(now.getDate()) + '/' + p(now.getMonth()+1) + '/' + now.getFullYear();
5120                if (!isMobile) text += ' ' + p(now.getHours()) + ':' + p(now.getMinutes()) + ':' + p(now.getSeconds());
5121                var el = document.getElementById('datetime');
5122                if (el) el.textContent = text;
5123            }
5124            updateClock();
5125            setInterval(updateClock, 1000);
5126        })();
5127
5128        (function () {
5129            var runner = document.getElementById('marqueeRunner');
5130            var container = runner ? runner.closest('.marquee-text') : null;
5131            var resizeTimer;
5132            var SPEED = 100;
5133
5134            function initMarquee() {
5135                if (!runner || !container) return;
5136                var cW = container.offsetWidth;
5137                var tW = runner.offsetWidth;
5138                var dur = ((cW + tW) / SPEED).toFixed(2);
5139                runner.style.setProperty('--mq-start', cW + 'px');
5140                runner.style.animation = 'none';
5141                requestAnimationFrame(function () {
5142                    requestAnimationFrame(function () {
5143                        runner.style.animation = 'mq-scroll ' + dur + 's linear infinite';
5144                    });
5145                });
5146            }
5147
5148            requestAnimationFrame(function () { requestAnimationFrame(initMarquee); });
5149
5150            document.addEventListener('visibilitychange', function () {
5151                if (!document.hidden) initMarquee();
5152            });
5153
5154            window.addEventListener('resize', function () {
5155                clearTimeout(resizeTimer);
5156                resizeTimer = setTimeout(function () {
5157                    initMarquee();
5158                    positionProviderOverlay();
5159                    var isDesktop = window.innerWidth >= 768;
5160                    if (isDesktop) {
5161                        var oc = bootstrap.Offcanvas.getInstance(document.getElementById('offcanvasExample'));
5162                        if (oc) oc.hide();
5163                    } else {
5164                        closeDesktopUserMenu();
5165                    }
5166                }, 150);
5167            });
5168
5169            window.addEventListener('orientationchange', function () {
5170                setTimeout(function () { initMarquee(); positionProviderOverlay(); }, 200);
5171            });
5172        })();
5173    </script>
5173
5174    
5175    <!-- Auth -->
5176    
5177    
5177<script>
5178
5179$(document).on("click", "#desktopregister #buttonRegisterDesktop", function()
5180	{
5181	nocache = new Date().getTime().toString().slice(-3);
5182	    
5183	var ver = `<img src="capreg.php?${nocache}" width="100%" height="30" style="border:1px #999 solid;" alt="Kode verifikasi">`;
5184	var $form = $('#desktopregister #formRegister');
5185	var $status = $('#desktopregister #statusRegister');
5186	
5187	  if (typeof window.validateAllDesktop === 'function' && !window.validateAllDesktop()) {
5188        $('#desktopregister #statusRegister').removeClass().addClass('alert alert-sm alert-warning').text('Harap periksa data yang diisi').fadeIn(500);
5189        return false;
5190    }
5191	
5192	$status.removeClass().addClass('alert alert-sm alert-success').text('Validating').fadeIn(1000);
5193
5194	function submitDesktopRegister() {
5195
5196	$.ajax({
5197		url: "/api/front/register",
5198		type: "POST",
5199		data: $form.serialize(),
5200		headers: { 'X-CSRF-Token': window.JT_CSRF_TOKEN || '' },
5201		success: function(data)
5202		{
5203		    
5204		    $('.is-invalid').removeClass('is-invalid');
5205		    
5206			  if (data == 'success')
5207			  {  
5208			    
5209				toast('Registrasi Sukses!, Selamat Bergabung.', 200);
5210				$status.removeClass().addClass('alert alert-sm alert-success').text('Registrasi Sukses!, Selamat Bergabung.').fadeIn(900);
5211
5212			    window.location='/home?welcome';
5213			  }
5214			  else
5215			  if (data == 'userWrong')
5216			  {
5217				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Username 6-16 karakter standar (A~Z, a~z, 0~9) dan tanpa spasi!').fadeIn(1000);
5218				  $('#desktopregister #reg_username').addClass('is-invalid');
5219				  
5220			  }
5221			  else
5222			  if (data == 'passWrong')
5223			  {
5224				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Password harus 6 karakter atau lebih').fadeIn(1000);
5225				  $('#desktopregister #reg_pass').addClass('is-invalid');
5226			  }
5227			  else
5228			  if (data == 'passSame')
5229			  {
5230				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Password harus sama dengan konfirmasi').fadeIn(1000);
5231				  $('#desktopregister #reg_passcon').addClass('is-invalid');
5232			  }
5233			  else
5234			  if (data == 'bankEmpty')
5235			  {
5236				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Bank harus diisi').fadeIn(1000);
5237				  $('#desktopregister #reg_bank').addClass('is-invalid');
5238			  }
5239			  else
5240			  if (data == 'rekEmpty')
5241			  {
5242				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Nomor Rekening harus diisi dengan angka saja').fadeIn(1000);
5243				  $('#desktopregister #reg_rek').addClass('is-invalid');
5244			  }
5245			  else
5246			  if (data == 'namaEmpty')
5247			  {
5248				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Nama sesuai rekening harus diisi').fadeIn(1000);
5249				  $('#desktopregister #reg_nama').addClass('is-invalid');
5250			  }
5251			  else
5252			  if (data == 'dbError')
5253			  {
5254				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf ada masalah dengan registrasi').fadeIn(1000);
5255			  }
5256			  else
5257			  if (data == 'userExist')
5258			  {
5259				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf username tersebut sudah ada').fadeIn(1000);
5260				  $('#desktopregister #reg_username').addClass('is-invalid');
5261			  }
5262			  else
5263			  if (data == 'rekExist')
5264			  {
5265				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf no rekening tersebut sudah ada').fadeIn(1000);
5266				  $('#desktopregister #reg_rek').addClass('is-invalid');
5267			  }
5268			  else
5269			  if (data == 'refError')
5270			  {
5271				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf tidak ada referal tersebut, bila tidak punya referal, bisa kosongkan').fadeIn(1000);
5272				  $('#desktopregister #reg_ref').addClass('is-invalid'); $('#desktopregister #reg_ref').removeAttr('readonly').val('');
5273			  }
5274			  else
5275			  if (data == 'emailError')
5276			  {
5277				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf email tidak valid').fadeIn(1000);
5278				  $('#desktopregister #reg_email').addClass('is-invalid');
5279			  }
5280			  else
5281			  if (data == 'telponEmpty')
5282			  {
5283				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf telpon t
5283idak boleh kosong').fadeIn(1000);
5284				  $('#desktopregister #reg_telpon').addClass('is-invalid');
5285			  }
5286			  else
5287			  if (data == 'telponError')
5288			  {
5289				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf telpon tidak valid').fadeIn(1000);
5290				  $('#desktopregister #reg_telpon').addClass('is-invalid');
5291			  }
5292			  else if (data == 'namaError') {
5293			       $status.removeClass().addClass('alert alert-sm alert-warning').text('Nama hanya boleh huruf dan spasi').fadeIn(1000);
5294                    $('#desktopregister #reg_nama').addClass('is-invalid');
5295                }
5296			  else
5297			  if (data == 'dariEmpty')
5298			  {
5299				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf silakan dipilih dari mana anda tahu website kami').fadeIn(1000);
5300				  $('#desktopregister #reg_dari').addClass('is-invalid');
5301			  }
5302			  else
5303			  if (data == 'lainEmpty')
5304			  {
5305				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf mohon diisi kolom lain-lain').fadeIn(1000);
5306				  $('#desktopregister #reg_lain').addClass('is-invalid');
5307			  }
5308			  else
5309			  if (data == 'caperror')
5310			  {
5311				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf Verifikasi Salah').fadeIn(1000);
5312				  $('#desktopregister #reg_verifikasi').addClass('is-invalid');
5313				  
5314			  }
5315			  else
5316			  if (data == 'recaperror')
5317			  {
5318				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Recaptcha salah, coba lagi').fadeIn(1000);
5319			  }
5320			  else
5321			  if (data == 'iperror')
5322			  {
5323				  $status.removeClass().addClass('alert alert-sm alert-warning').text('IP Tidak Sesuai').fadeIn(1000);
5324			  }
5325			  else
5326			  if (data == 'capexp')
5327			  {
5328				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Captcha Expired').fadeIn(1000);
5329			  }
5330			  else
5331			  if (data == 'wait')
5332			  {
5333				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Silahkan dicoba beberapa saat lagi').fadeIn(1000);
5334			  }
5335			  else
5336			  if (data == 'turnnoevent')
5337			  {
5338				  window.location.reload();
5339			  }
5340			  else
5341			  if (data == 'turnblock')
5342			  {
5343				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Insecure Device').fadeIn(1000);
5344			  }
5345			  else
5346				if (data.indexOf('passNotSafe|') === 0)
5347				{
5348					var msg = data.substring('passNotSafe|'.length);
5349					if (!msg) {
5350						msg = 'Password tidak aman! Gunakan password yang lebih kuat.';
5351					}
5352
5353					$status
5354						.removeClass()
5355						.addClass('alert alert-sm alert-warning')
5356						.text(msg)
5357						.fadeIn(1000);
5358
5359					$('#desktopregister #reg_pass').addClass('is-invalid');
5360				}
5361			  
5362			  $('#desktopregister #capverifikasi').html(ver);
5363
5364		}})
5365		.fail(function() {
5366			$status.removeClass().addClass('alert alert-sm alert-warning').text('Koneksi gagal, coba lagi').fadeIn(1000);
5367			$('#desktopregister #capverifikasi').html(ver);
5368		});
5369	}
5370
5371	jtWithIframeCaptchaRegister($form, false, function () {
5372		jtWithTurnstileRegister($form, function () {
5373			jtWithRecaptchaRegisterToken($form, $status, submitDesktopRegister);
5374		});
5375	}, function (msg) {
5376		$status.removeClass().addClass('alert alert-sm alert-warning').text(msg || 'Verifikasi Kosong').fadeIn(1000);
5377	});
5378	return false;
5379});
5380    </script>
5380
5381    
5382    
5382<script>
5383    
5384    function onlyNumber(n) {
5385    	return n.replace(/\D/g, '');	
5386    }
5387    
5388    
5389        $(document).on("keyup", "#mobileregister #reg_rek, #mobileregister #reg_telpon", function()
5390		{	
5391			var rek = $(this).val();
5392			rek = onlyNumber(rek);
5393			if (isNaN(rek)) rek = '';
5394			$(this).val(rek);		
5395		});
5396
5397//
5398$(document).on("change", '#mobileregister #reg_dari', function()
5399	{
5400		inputdari = $('#mobileregister #reg_dari').val();
5401		
5402		if (inputdari == 'Lain-lain') 
5403		{
5404			$('#mobileregister #reg_lain').show();
5405		}
5406		else
5407		{
5408			$('#mobileregister #reg_lain').hide();
5409		}
5410	});
5411
5412
5413$(document).on("click", "#mobileregister #buttonRegister", function()
5414	{
5415	  
5416	  nocache = new Date().getTime().toString().slice(-3);  
5417	    
5418	var ver = `<img src=\"mcapreg.php?${nocache}\" width=\"100%\" style=\"height: 40px; width: 100%; border-radius: 5px;margin-top: -3px;\" alt=\"Kode verifikasi\">`;
5419	var $form = $('#mobileregister #formRegister');
5420	var $status = $('#mobileregister #statusRegister');
5421	$status.removeClass().addClass('alert alert-sm alert-success').text('Validating').fadeIn(1000);
5422
5423	function submitMobileRegister() {
5424	    
5425	    
5426	    
5427	$.ajax({
5428		url: "/api/front/register",
5429		type: "POST",
5430		data: $form.serialize(),
5431		headers: { 'X-CSRF-Token': window.JT_CSRF_TOKEN || '' },
5432		success: function(data)
5433		{
5434			  $('.is-invalid').removeClass('is-invalid');
5435			  
5436			  if (data == 'success')
5437			  {  
5438			 
5439				toast('Registrasi Sukses!, Selamat Bergabung.', 200);
5440				$status.removeClass().addClass('alert alert-sm alert-success').text('Registrasi Sukses!, Selamat Bergabung.').fadeIn(900);
5441				window.location='/home?welcome';
5442			  }
5443			  else
5444			  if (data == 'userWrong')
5445			  {
5446				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Username 6-16 karakter standar (A~Z, a~z, 0~9) dan tanpa spasi!').fadeIn(1000);
5447				  $('#mobileregister #reg_username').addClass('is-invalid');
5448			  }
5449			  else
5450			  if (data == 'passWrong')
5451			  {
5452				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Password harus 6 karakter atau lebih').fadeIn(1000);
5453				  $('#mobileregister #reg_pass').addClass('is-invalid');
5454			  }
5455			  else
5456			  if (data == 'passSame')
5457			  {
5458				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Password harus sama dengan konfirmasi').fadeIn(1000);
5459				  $('#mobileregister #reg_passcon').addClass('is-invalid');
5460			  }
5461			  else
5462			  if (data == 'bankEmpty')
5463			  {
5464				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Bank harus diisi').fadeIn(1000);
5465				  $('#mobileregister #reg_bank').addClass('is-invalid');
5466			  }
5467			  else
5468			  if (data == 'rekEmpty')
5469			  {
5470				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Nomor Rekening harus diisi dengan angka saja').fadeIn(1000);
5471				  $('#mobileregister #reg_rek').addClass('is-invalid');
5472			  }
5473			  else
5474			  if (data == 'namaEmpty')
5475			  {
5476				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Nama sesuai rekening harus diisi').fadeIn(1000);
5477				  $('#mobileregister #reg_nama').addClass('is-invalid');
5478			  }
5479			  else
5480			  if (data == 'dbError')
5481			  {
5482				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf ada masalah dengan registrasi').fadeIn(1000);
5483			  }
5484			  else
5485			  if (data == 'userExist')
5486			  {
5487				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf username tersebut sudah ada').fadeIn(1000);
5488				  $('#mobileregister #reg_username').addClass('is-invalid');
5489			  }
5490			  else
5491			  if (data == 'rekExist')
5492			  {
5493				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf no rekening tersebut sudah ada').fadeIn(1000);
5494				  $('#mobileregister #reg_rek').addClass('is-invalid');
5495			  }
5496			  else
5497			  if (data == 'refError')
5498			  {
5499				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf tidak ada referal tersebut').fadeIn(1000);
5500				  $('#mobileregister #reg_ref').addClass('is-invalid');
5501			  }
5502			  else
5503			  if (data == 'emailError')
5504			  {
5505				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf email tidak valid').fadeIn(1000);
5506				  $('#mobileregister #reg_email').addClass('is-invalid');
5507			  }
5508			  else
5509			  if (data == 'telponEmpty')
5510			  {
5511				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf telpon t
5511idak boleh kosong').fadeIn(1000);
5512				  $('#mobileregister #reg_telpon').addClass('is-invalid');
5513			  }
5514			  else
5515			  if (data == 'telponError')
5516			  {
5517				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf telpon tidak valid').fadeIn(1000);
5518				  $('#mobileregister #reg_telpon').addClass('is-invalid');
5519			  }
5520			  else if (data == 'namaError') {
5521			      
5522			      $status.removeClass().addClass('alert alert-sm alert-warning').text('Nama hanya boleh huruf dan spasi').fadeIn(1000);
5523				  $('#mobileregister #reg_nama').addClass('is-invalid');
5524                }
5525			  else
5526			  if (data == 'dariEmpty')
5527			  {
5528				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf silakan dipilih dari mana anda tahu website kami').fadeIn(1000);
5529				  $('#mobileregister #reg_dari').addClass('is-invalid');
5530			  }
5531			  else
5532			  if (data == 'lainEmpty')
5533			  {
5534				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf mohon diisi kolom lain-lain').fadeIn(1000);
5535				  $('#mobileregister #reg_lain').addClass('is-invalid');
5536			  }
5537			  else
5538			  if (data == 'caperror')
5539			  {
5540				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Maaf Verifikasi Salah').fadeIn(1000);
5541				  $('#mobileregister #reg_verifikasi').addClass('is-invalid');
5542				 
5543			  }
5544			  else
5545			  if (data == 'recaperror')
5546			  {
5547				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Recaptcha salah, coba lagi').fadeIn(1000);
5548			  }
5549			  else
5550			  if (data == 'iperror')
5551			  {
5552				  $status.removeClass().addClass('alert alert-sm alert-warning').text('IP Tidak Sesuai').fadeIn(1000);
5553			  }
5554			  else
5555			  if (data == 'capexp')
5556			  {
5557				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Captcha Expired').fadeIn(1000);
5558			  }
5559			  else
5560			  if (data == 'wait')
5561			  {
5562				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Silahkan dicoba beberapa saat lagi').fadeIn(1000);
5563			  }
5564			  else
5565			  if (data == 'turnnoevent')
5566			  {
5567				  window.location.reload();
5568			  }
5569			  else
5570			  if (data == 'turnblock')
5571			  {
5572				  $status.removeClass().addClass('alert alert-sm alert-warning').text('Insecure Device').fadeIn(1000);
5573			  }
5574			  else
5575				if (data.indexOf('passNotSafe|') === 0)
5576				{
5577					var msg = data.substring('passNotSafe|'.length);
5578					if (!msg) {
5579						msg = 'Password tidak aman! Gunakan password yang lebih kuat.';
5580					}
5581
5582					$status
5583						.removeClass()
5584						.addClass('alert alert-sm alert-warning')
5585						.text(msg)
5586						.fadeIn(1000);
5587
5588					$('#mobileregister #reg_pass').addClass('is-invalid');
5589				}
5590			  
5591			   $('#mobileregister #capverifikasi').html(ver);
5592			//   ke('#mobileregister #content');
5593		}})
5594		.fail(function() {
5595			$status.removeClass().addClass('alert alert-sm alert-warning').text('Koneksi gagal, coba lagi').fadeIn(1000);
5596			$('#mobileregister #capverifikasi').html(ver);
5597		});
5598	}
5599
5600	jtWithIframeCaptchaRegister($form, true, function () {
5601		jtWithTurnstileRegister($form, function () {
5602			jtWithRecaptchaRegisterToken($form, $status, submitMobileRegister);
5603		});
5604	}, function (msg) {
5605		$status.removeClass().addClass('alert alert-sm alert-warning').text(msg || 'Verifikasi Kosong').fadeIn(1000);
5606	});
5607	return false;
5608});
5609    </script>
5609
5610    
5611    
5611<script>
5612        const currentPath = window.location.pathname.replace(/\/+$/, '');
5613        const popupElement = document.getElementById('popup');
5614    
5615        if (currentPath === '/register') {
5616            document.getElementById('content')?.scrollIntoView();
5617        } else if (popupElement && typeof bootstrap !== 'undefined') {
5618            const popupModal = bootstrap.Modal.getOrCreateInstance(popupElement);
5619            popupModal.show();
5620        }
5621    </script>
5621
5622
5623  
5623<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":"1df21b2f6c344e64866a2a95f162b905","r":1,"spa":2}' crossorigin="anonymous"></script>
5623
5624</body>
5625</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.