PageSourceSearch

https://murdochfinance.com/

html murdochfinance.com collected 2026-09-28 18:42:13 UTC 582,750 bytes, 18,342 lines download raw bytes

1
2<!DOCTYPE html>
3<html lang="id">
4
5<head>
6    <meta charset="UTF-8">
7    <title>SEMUAJP: Kita Kasih Link Daftar Terbaik Situs Online Slot Gacor Gampang jackpot</title>
8    <meta name="description"
9        content="Semuajp Menyediakan link daftar terbaik situs online Terbaik dengan slot gacornya yang gampang jackpot, bagian dari game online yang mudah mencari uang dengan mudah kita kasi link daftarnya yang sudah tersedia di website.">
10    <meta name="robots" content="index, follow">
11    <link rel="canonical" href="https://murdochfinance.com/">
12    <link rel="amphtml" href="https://finance.murdochfinance.com/">
13    <link rel="alternate" href="https://finance.murdochfinance.com/" hreflang="id">
14    <link rel="alternate" href="https://finance.murdochfinance.com/" hreflang="en">
15    <link rel="alternate" href="https://finance.murdochfinance.com/" hreflang="x-default">
16    <link rel="alternate" hreflang="id-ID" href="https://finance.murdochfinance.com/" />
17    <link rel="alternate" hreflang="en-US" href="https://finance.murdochfinance.com/" />
18    <link rel="alternate" hreflang="en-SG" href="https://finance.murdochfinance.com/" />
19    <link rel="preconnect" href="https://www.googletagmanager.com" crossorigin>
vendor: 68 bytes, lines 19-20
19
20    <script async src="https://www.googletagmanager.com/gtag/js?id=
20G-0LSM1YJSPZ
vendor: 57 bytes, lines 20-22
20"
21        nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
22    
22<script
23        nonce="se3iyzEHMc9FQEB4wSyd0w==">window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments) } gtag("consent", "default", { ad_storage: "denied", ad_user_data: "denied", ad_personalization: "denied", analytics_storage: "granted", wait_for_update: 500 }); gtag("js", new Date); gtag("config", "G-0LSM1YJSPZ", { send_page_view: !0, linker: { domains: ["plazait.co.id", "www.plazait.co.id"] } }); window.ga4Ecomm = { viewItem: function (e) { if (!window.gtag) return; try { gtag("event", "view_item", { currency: e.currency || "IDR", value: e.value || 0, items: [{ item_id: e.item_id || "", item_name: e.item_name || "", item_brand: e.item_brand || "", item_category: e.item_category || "", price: e.price || 0, quantity: 1 }] }) } catch (t) { } }, addToCart: function (e) { if (!window.gtag) return; try { gtag("event", "add_to_cart", { currency: e.currency || "IDR", value: (e.price || 0) * (e.quantity || 1), items: [{ item_id: e.item_id || "", item_name: e.item_name || "", item_brand: e.item_brand || "", item_category: e.item_category || "", price: e.price || 0, quantity: e.quantity || 1 }] }) } catch (t) { } } };</script>
23
24    <meta property="og:locale" content="id_ID">
25    <meta property="og:site_name" content="Plaza IT">
26    <meta property="og:type" content="product">
27    <meta property="og:title" content="SEMUAJP: Kita Kasih Link Daftar Terbaik Situs Online Slot Gacor Gampang jackpot">
28    <meta property="og:description"
29        content="Semuajp Menyediakan link daftar terbaik situs online Terbaik dengan slot gacornya yang gampang jackpot, bagian dari game online yang mudah mencari uang dengan mudah kita kasi link daftarnya yang sudah tersedia di website.">
30    <meta property="og:url" content="https://murdochfinance.com/">
31    <meta property="og:image" content="https://finance.murdochfinance.com/brand.webp">
32    <meta property="og:image:alt"
33        content="SEMUAJP: Kita Kasih Link Daftar Terbaik Situs Online Slot Gacor Gampang jackpot">
34    <meta property="product:price:amount" content="5000">
35    <meta property="product:price:currency" content="IDR">
36    <meta property="product:availability" content="out of stock">
37    <meta name="twitter:card" content="summary_large_image">
38    <meta name="twitter:title"
39        content="SEMUAJP: Kita Kasih Link Daftar Terbaik Situs Online Slot Gacor Gampang jackpot">
40    <meta name="twitter:description"
41        content="Semuajp Menyediakan link daftar terbaik situs online Terbaik dengan slot gacornya yang gampang jackpot, bagian dari game online yang mudah mencari uang dengan mudah kita kasi link daftarnya yang sudah tersedia di website.">
42    <meta name="twitter:image" content="https://finance.murdochfinance.com/brand.webp">
43
44    <!-- Schema WebSite -->
45    <!-- Schema Product & Review -->
46    
46<script type="application/ld+json">
47{
48  "@context": "https://schema.org",
49  "@type": "Product",
50  "name": "SEMUAJP",
51  "sku": "SEMUAJP-2026",
52  "image": [
53    "https://finance.murdochfinance.com/brand.webp"
54  ],
55  "url": "https://murdochfinance.com/",
56  "description": "Semuajp Menyediakan link daftar terbaik situs online Terbaik dengan slot gacornya yang gampang jackpot, bagian dari game online yang mudah mencari uang dengan mudah kita kasi link daftarnya yang sudah tersedia di website.",
57  "category": "situs Slot Online",
58  "brand": {
59    "@type": "Brand",
60    "name": "SEMUAJP"
61  },
62  "offers": {
63    "@type": "Offer",
64    "url": "https://murdochfinance.com/",
65    "priceCurrency": "IDR",
66    "price": "5000",
67    "priceValidUntil": "2027-12-31",
68    "availability": "https://schema.org/InStock",
69    "itemCondition": "https://schema.org/NewCondition",
70    "priceSpecification": {
71      "@type": "PriceSpecification",
72      "price": "5000",
73      "priceCurrency": "IDR",
74      "valueAddedTaxIncluded": true
75    },
76    "seller": {
77      "@type": "Organization",
78      "name": "SEMUAJP",
79      "url": "https://murdochfinance.com/"
80    }
81  },
82  "aggregateRating": {
83    "@type": "AggregateRating",
84    "ratingValue": "4.9",
85    "reviewCount": "10",
86    "bestRating": "5",
87    "worstRating": "1"
88  },
89  "review": [
90    {
91      "@type": "Review",
92      "author": {
93        "@type": "Person",
94        "name": "Andi"
95      },
96      "reviewRating": {
97        "@type": "Rating",
98        "ratingValue": "5"
99      },
100      "reviewBody": "SEMUAJP benar-benar situs resmi situs slot online gacor terpercaya yang beda dari situs lain. Saya sering main di sini karena aksesnya cepat dan akurat. Slot gacor Pragmatic Play juga gampang kasih scatter dan maxwin."
101    },
102    {
103      "@type": "Review",
104      "author": {
105        "@type": "Person",
106        "name": "Uden"
107      },
108      "reviewRating": {
109        "@type": "Rating",
110        "ratingValue": "5"
111      },
112      "reviewBody": "Cari situs slot gacor terpercaya sekarang memang susah, tapi sejak kenal SEMUAJP saya jadi nyaman main slot online setiap hari. Deposit Dana dan QRIS cepat, withdraw juga selalu lancar tanpa pending."
113    },
114    {
115      "@type": "Review",
116      "author": {
117        "@type": "Person",
118        "name": "Ujang"
119      },
120      "reviewRating": {
121        "@type": "Rating",
122        "ratingValue": "5"
123      },
124      "reviewBody": "Menurut saya SEMUAJP layak disebut situs judi online terbesar karena pilihan game slot online gampang jackpot resmi tersedia setiap hari dengan server terbaik."
125    },
126    {
127      "@type": "Review",
128      "author": {
129        "@type": "Person",
130        "name": "Imam"
131      },
132      "reviewRating": {
133        "@type": "Rating",
134        "ratingValue": "5"
135      },
136      "reviewBody": "Main slot gacor di SEMUAJP terasa lebih gacor dibanding situs slot online lain. Saya sering menang di Gates of Olympus dan Sweet Bonanza dari Pragmatic Play. RTP slot tinggi dan bonus cashback harian juga besar."
137    },
138    {
139      "@type": "Review",
140      "author": {
141        "@type": "Person",
142        "name": "Fahmi"
143      },
144      "reviewRating": {
145        "@type": "Rating",
146        "ratingValue": "5"
147      },
148      "reviewBody": "SEMUAJP punya customer service paling responsif yang pernah saya coba. Saat akun login saya bermasalah langsung dibantu dalam hitungan menit. Jarang ada situs slot online terpercaya dengan pelayanan secepat ini."
149    },
150    {
151      "@type": "Review",
152      "author": {
153        "@type": "Person",
154        "name": "Intan"
155      },
156      "reviewRating": {
157        "@type": "Rating",
158        "ratingValue": "5"
159      },
160      "reviewBody": "Saya sudah coba banyak situs slot online terpercaya tapi baru di SEMUAJP kemenangan jackpot besar saya langsung dibayar full tanpa potongan. Withdraw cepat dan sistem transaksi sangat aman."
161    },
162    {
163      "@type": "Review",
164      "author": {
165        "@type": "Person",
166        "name": "Raka Firmansyah"
167      },
168      "reviewRating": {
169        "@type": "Rating",
170        "ratingValue": "5"
171      },
172      "reviewBody": "Sebagai pecinta slot online gacor saya puas banget dengan provider slot di SEMUAJP. Ada PG Soft, Microgaming, Playtech, CQ9, Joker Gaming, sampai Habanero dengan RTP tinggi dan jackpot maxwin besar."
173    },
174    {
175      "@type": "Review",
176      "author": {
177        "@type": "Person",
178        "name": "Aditia Maulana"
179      },
180      "reviewRating": {
181        "@type": "Rating",
182        "ratingValue": "5"
183      },
184      "reviewBody": "Link alternatif SEMUAJP selalu stabil dan gampang diakses lewat HP Android saya. Main judi slot online dan slot gacor jadi lebih nyaman tanpa lag atau error server."
185    },
186    {
187      "@type": "Review",
188      "author": {
189        "@type": "Person",
190        "name": "Kevin Prakoso"
191      },
192      "reviewRating": {
193        "@type": "Rating",
194        "ratingValue": "5"
195      },
196      "reviewBody": "Minimal deposit murah di SEMUAJP bikin semua pemain bisa menikmati situs slot gacor terpercaya ini. Dengan modal kecil saya sudah bisa main judi online dan slot online gacor setiap hari."
197    },
198    {
199      "@type": "Review",
200      "author": {
201        "@type": "Person",
202        "name": "Bagus Hidayat"
203      },
204      "reviewRating": {
205        "@type": "Rating",
206        "ratingValue": "5"
207      },
208      "reviewBody": "SEMUAJP memang pantas jadi situs resmi situs slot gacor terpercaya nomor satu 2026. Permainan lengkap, bonus besar, jackpot mudah masuk, dan proses login sangat cepat."
209    }
210  ]
211}
212</script>
212
213
214    
214<script type="application/ld+json">
215{
216  "@context": "https://schema.org",
217  "@type": "FAQPage",
218  "mainEntity": [
219    {
220      "@type": "Question",
221      "name": "Apa yang membuat SEMUAJP berbeda dari situs online lainnya?",
222      "acceptedAnswer": {
223        "@type": "Answer",
224        "text": "SEMUAJP adalah situs resmi situs judi online terpercaya dan situs slot gacor terbaik yang menyediakan link login resmi, slot online RTP tinggi, bonus terbesar, transaksi cepat, dan pelayanan customer service 24 jam nonstop."
225      }
226    },
227    {
228      "@type": "Question",
229      "name": "Apakah SEMUAJP cocok untuk pemain baru?",
230      "acceptedAnswer": {
231        "@type": "Answer",
232        "text": "SEMUAJP menyediakan game slot online gacor terlengkap gampang jackpot hari ini, judi online terpercaya, live casino resmi, tembak ikan dengan link alternatif yang update tercepat setiap hari."
233      }
234    },
235    {
236      "@type": "Question",
237      "name": "Bagaimana cara menemukan permainan slot gacor melalui SEMUAJP?",
238      "acceptedAnswer": {
239        "@type": "Answer",
240        "text": "Ya, SEMUAJP dikenal sebagai agen slot online terpercaya dengan server resmi gampang jackpot hari ini, rtp live update, live draw tercepat, dan sistem fair play tanpa manipulasi."
241      }
242    },
243    {
244      "@type": "Question",
245      "name": "Apa keunggulan utama SEMUAJP dibandingkan platform lain?",
246      "acceptedAnswer": {
247        "@type": "Answer",
248        "text": "Untuk login akun SEMUAJP kamu hanya perlu membuka link resmi SEMUAJP lalu memasukkan username dan password pada halaman login. Pastikan menggunakan link alternatif resmi agar akun slot online gacor tetap aman."
249      }
250    },
251    {
252      "@type": "Question",
253      "name": "Berapa minimal deposit di situs judi online SEMUAJP?",
254      "acceptedAnswer": {
255        "@type": "Answer",
256        "text": "Minimal deposit di SEMUAJP sangat murah mulai dari 10 ribu rupiah. Situs slot gacor terpercaya ini mendukung transaksi menggunakan bank lokal, Dana, OVO, QRIS, Gopay, LinkAja, dan berbagai metode pembayaran online lainnya."
257      }
258    },
259    {
260      "@type": "Question",
261      "name": "Apakah SEMUAJP menyediakan layanan bantuan pengguna?",
262      "acceptedAnswer": {
263        "@type": "Answer",
264        "text": "SEMUAJP menyediakan provider slot online terbaik seperti Pragmatic Play, PG Soft, Habanero, Playtech, Microgaming, Joker Gaming, CQ9, dan Spadegaming dengan RTP tinggi serta peluang jackpot maxwin lebih besar."
265      }
266    },
267    {
268      "@type": "Question",
269      "name": "Apa tujuan SEMUAJP menyediakan link daftar terbaik?",
270      "acceptedAnswer": {
271        "@type": "Answer",
272        "text": "Semua kemenangan main slot online gacor gampang jackpot di SEMUAJP dibayar penuh tanpa potongan. Withdraw diproses cepat menggunakan sistem transaksi otomatis selama 24 jam."
273      }
274    },
275    {
276      "@type": "Question",
277      "name": "Kenapa SEMUAJP disebut situs slot gacor terpercaya?",
278      "acceptedAnswer": {
279        "@type": "Answer",
280        "text": "SEMUAJP disebut situs slot gacor terpercaya karena memiliki RTP slot tinggi, provider resmi terbaik, server stabil, bonus melimpah, dan peluang jackpot maxwin gampang jp hari ini yang lebih besar dibanding situs slot online biasa."
281      }
282    },
283    {
284      "@type": "Question",
285      "name": "Apa yang membuat SEMUAJP menjadi pilihan favorit banyak pemain?",
286      "acceptedAnswer": {
287        "@type": "Answer",
288        "text": "Ya, customer service SEMUAJP selalu online 24 jam nonstop untuk membantu semua kendala login resmi, daftar akun, deposit, withdraw, slot online gampang jp, dan informasi bonus terbaru."
289      }
290    },
291    {
292      "@type": "Question",
293      "name": "Apa keuntungan bermain di situs resmi SEMUAJP?",
294      "acceptedAnswer": {
295        "@type": "Answer",
296        "text": "Keuntungan bermain di SEMUAJP adalah link resmi mudah akses, slot gacor RTP tinggi, bonus besar, minimal deposit murah, transaksi cepat, link alternatif stabil, dan keamanan akun terbaik gampang jackpot hari ini untuk seluruh member."
297      }
298    }
299  ]
300}
301</script>
301
302
303    
303<script type="application/ld+json">
304{
305  "@context": "https://schema.org",
306  "@type": "BreadcrumbList",
307  "itemListElement": [
308    {
309      "@type": "ListItem",
310      "position": 1,
311      "name": "SEMUAJP",
312      "item": "https://murdochfinance.com/"
313    },
314    {
315      "@type": "ListItem",
316      "position": 2,
317      "name": "Slot Online",
318      "item": "https://murdochfinance.com/"
319    },
320    {
321      "@type": "ListItem",
322      "position": 3,
323      "name": "Slot Gacor",
324      "item": "https://murdochfinance.com/"
325    },
326    {
327      "@type": "ListItem",
328      "position": 4,
329      "name": "Slot Jackpot",
330      "item": "https://murdochfinance.com/"
331    },
332    {
333      "@type": "ListItem",
334      "position": 5,
335      "name": "Slot Hari Ini",
336      "item": "https://murdochfinance.com/"
337    },
338    {
339      "@type": "ListItem",
340      "position": 6,
341      "name": "SEMUAJP Login",
342      "item": "https://murdochfinance.com/"
343    }
344  ]
345}
346</script>
346
347    <!-- User Session Data -->
348    <meta name="csrf-token" content="9ce6e4a17f7cc189893df9e47789b13e98829450d516a0cae5ca7b5f43e5dadc">
349    <meta name="user-logged-in" content="false">
350    <meta name="user-id" content="0">
351
352    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
353
354
355    <link rel="shortcut icon" href="https://project-cdn-semuajp.pages.dev/favicon.png" type="image/x-icon">
356</head>
357
358<style>
359    a,
360    p,
361    span,
362    li {
363
364        font-family: 'Orbitron', sans-serif;
365    }
366
367    @font-face {
368        font-family: 'Segoe UI';
369        src: url('/assets/fonts/segoeui.woff2') format('woff2'),
370            url('/assets/fonts/segoeui.woff') format('woff');
371        font-weight: 400;
372        font-style: normal;
373    }
374
375    :root {
376        --brand-50: #FFF5E6;
377        --brand-100: #FFE7CC;
378        --brand-500: #F28C1A;
379        --brand-600: #D97809;
380        --gray-900: #1F1F23;
381        --gray-700: #3D3F45;
382        --gray-500: #6F737B;
383        --gray-300: #C5C9CF;
384        --gray-100: #F3F5F7;
385        --border: #E4E7EB;
386        --radius: 8px;
387        --transition: .18s ease;
388        /* font-family: "Inter", system-ui, sans-serif; */
389        font-family: 'Segoe UI', sans-serif;
390    }
391
392    * {
393        box-sizing: border-box;
394    }
395
396    body {
397        margin: 0;
398        padding-bottom: 0;
399        /* Reset for desktop */
400        color: var(--gray-900);
401        background: #fff;
402    }
403
404    img {
405        max-width: 100%;
406        display: block;
407    }
408
409    .container {
410        width: 100%;
411        max-width: 1280px;
412        margin: 0 auto;
413        padding: 10px 0;
414    }
415
416    .topbar {
417        background: #009688;
418        color: #fff;
419        font-size: 13px;
420    }
421
422    .topbar-inner {
423        display: flex;
424        justify-content: space-between;
425        align-items: center;
426        min-height: 36px;
427    }
428
429    .topbar a {
430        color: #fff;
431        text-decoration: none;
432        margin-left: 12px;
433    }
434
435    /* ========== Desktop base (Glassmorphism Modern with Warm Gradient) ========== */
436    .navbar {
437        background: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(255, 245, 230, 0.85) 100%);
438        backdrop-filter: blur(12px);
439        -webkit-backdrop-filter: blur(12px);
440        border-bottom: 1px solid rgba(228, 231, 235, 0.6);
441        box-shadow: 0 2px 16px -4px rgba(0, 0, 0, 0.08);
442        position: sticky;
443        top: 0;
444        z-index: 500;
445        transition: all .3s ease;
446    }
447
448    /* Accent line gradient orange */
449    .navbar::after {
450        content: '';
451        position: absolute;
452        bottom: 0;
453        left: 0;
454        right: 0;
455        height: 2px;
456        background: linear-gradient(90deg, transparent 0%, var(--brand-500) 20%, var(--brand-600) 50%, var(--brand-500) 80%, transparent 100%);
457        opacity: 0.5;
458    }
459
460    .nav-inner {
461        display: flex;
462        align-items: center;
463        gap: 24px;
464        min-height: 70px;
465    }
466
467    .nav-inner .search .m-search-ico {
468        display: none;
469    }
470
471    /* Secara default (desktop) ikon login disembunyikan; teks muncul */
472    .login-btn .login-ico {
473        display: none;
474    }
475
476    .navbar-logo {
477        display: none;
478        background: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(255, 245, 230, 0.85) 100%);
479        backdrop-filter: blur(12px);
480        -webkit-backdrop-filter: blur(12px);
481        border-bottom: 1px solid rgba(228, 231, 235, 0.6);
482        box-shadow: 0 2px 16px -4px rgba(0, 0, 0, 0.08);
483        position: sticky;
484        top: 0;
485        z-index: 500;
486    }
487
488    /* Hide bottom navigation on desktop - only show on mobile */
489    .bottom-nav {
490        display: none;
491    }
492
493    /* ==============================================================
494   MOBILE (<=640px)
495   ============================================================== */
496    @media (max-width:640px) {
497        .container {
498            padding: 10px 16px;
499        }
500
501        .topbar {
502            display: none !important;
503        }
504
505        /* Add padding bottom for sticky bottom nav */
506        body {
507            padding-bottom: 68px;
508            /* Height of bottom nav + safe area */
509        }
510
511        /* Mobile Top Navbar - Clean & Minimal */
512        .navbar {
513            background: linear-gradient(135deg, rgba(255, 255, 255, 0.97) 0%, rgba(255, 245, 230, 0.9) 100%);
514            backdrop-filter: blur(16px);
515            -webkit-backdrop-filter: blur(16px);
516            box-shadow: 0 2px 12px -3px rgba(0, 0, 0, 0.08);
517            border: 0;
518        }
519
520        /* Simple grid layout - Logo, Search, Category */
521        .nav-inner {
522            display: grid;
523            grid-template-columns: 1fr;
524            gap: 10px;
525            padding: 12px 16px 0 12px;
526            min-height: auto;
527        }
528
529        /* Logo centered at top */
530        .nav-inner .logo {
531            justify-self: center;
532            margin: 0;
533            display: flex;
534        }
535
536        .nav-inner .logo img {
537            height: 36px;
538        }
539
540        /* Search bar - full width */
541        .nav-inner .search {
542            position: relative;
543            display: flex;
544            align-items: center;
545            gap: 0;
546            width: 100%;
547            height: 44px;
548            background: #fff;
549            border: 1.5px solid #e5e7eb;
550            border-radius: 12px;
551            padding: 0 12px;
552            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
553            transition: all .25s;
554        }
555
556        .nav-inner .search:focus-within {
557            border-color: #fb923c;
558            box-shadow: 0 0 0 3px rgba(251, 146, 60, 0.1);
559        }
560
561        .nav-inner .search-icon-btn {
562            color: #9ca3af;
563            padding: 4px;
564            margin-right: 4px;
565        }
566
567        .nav-inner .search-icon-btn svg {
568            width: 18px;
569            height: 18px;
570        }
571
572        .nav-inner .search input {
573            flex: 1;
574            min-width: 0;
575            border: none;
576            outline: none;
577            background: transparent;
578            font-size: 14px;
579            padding: 0 8px;
580            height: 100%;
581        }
582
583        .nav-inner .ai-bot-toggle {
584            padding: 6px;
585            margin-left: 0;
586        }
587
588        .nav-inner .ai-bot-toggle .bot-icon {
589            width: 20px;
590            height: 20px;
591        }
592
593        .nav-inner .search-suggest {
594            left: 0;
595            right: 0;
596            width: calc(100vw - 32px);
597            margin-top: 6px;
598            border-radius: 12px;
599            max-height: 70vh;
600        }
601
602        /* Hide desktop nav actions but keep structure for userMenu */
603        .nav-inner .nav-actions {
604            display: flex !important;
605            /* Keep flex to allow userMenu positioning */
606            visibility: hidden;
607            /* Hide visually but keep in DOM */
608            pointer-events: none;
609            /* Disable interactions with hidden elements */
610            position: absolute;
611            /* Remove from flow */
612            right: 0;
613            top: 0;
614        }
615
616        /* Re-enable userMenu for logged-in users */
617        .nav-inner .nav-actions #userMenu {
618            visibility: visible !important;
619            pointer-events: auto !important;
620        }
621
622        .nav-inner .logo {
623            display: none;
624        }
625
626        .navbar-logo {
627            display: block;
628            /* background:linear-gradient(135deg, rgba(255,255,255,0.97) 0%, rgba(255,245,230,0.9) 100%); */
629            backdrop-filter: blur(16px);
630            -webkit-backdrop-filter: blur(16px);
631            position: static;
632            /* Remove sticky on mobile */
633            box-shadow: none;
634            border-bottom: 0;
635            padding-top: .6rem;
636        }
637
638        .nav-inner .logo-mobile {
639            display: block;
640        }
641
642        /* Category menu wrapper will handle visibility */
643
644        /* ==============================================================
645     BOTTOM NAVIGATION - Styles moved to bottom-nav.css
646     ============================================================== */
647        /* All bottom-nav styles now in /assets/css/bottom-nav.css */
648
649        /* Hide desktop elements that now moved to bottom nav */
650        #wishlistBtn,
651        #notifBtn,
652        #loginBtn {
653            display: none !important;
654        }
655
656        /* Hide desktop user menu on mobile - use bottom sheet instead */
657        .navbar #userMenu {
658            display: none !important;
659        }
660
661        .nav-actions .cart-indicator,
662        .nav-actions .compare-indicator {
663            display: none !important;
664        }
665
666        /* Hide category button from bottom nav */
667        #bottomCategoryBtn {
668            display: none !important;
669        }
670
671        /* User menu button styling for mobile - scoped to navbar only */
672        .navbar #userMenu .login-btn.logged-in {
673            width: 40px;
674            height: 40px;
675            padding: 0;
676            border-radius: 50%;
677            display: flex;
678            align-items: center;
679            justify-content: center;
680            background: rgba(255, 255, 255, 0.95);
681            backdrop-filter: blur(12px);
682            -webkit-backdrop-filter: blur(12px);
683            border: 1px solid rgba(228, 231, 235, 0.6);
684            box-shadow: 0 2px 12px -3px rgba(0, 0, 0, 0.12);
685        }
686
687        .navbar #userMenu .login-btn.logged-in .login-text {
688            display: none;
689        }
690
691        .navbar #userMenu .login-btn.logged-in .login-ico {
692            display: inline;
693            font-size: 20px;
694            line-height: 1;
695        }
696
697        /* User dropdown positioning for mobile */
698        .navbar #userMenu .user-dropdown {
699            position: fixed !important;
700            top: 60px !important;
701            right: 16px !important;
702            left: auto !important;
703            min-width: 200px;
704            background: rgba(255, 255, 255, 0.98);
705            backdrop-filter: blur(20px);
706            -webkit-backdrop-filter: blur(20px);
707            border: 1px solid rgba(228, 231, 235, 0.6);
708            box-shadow: 0 8px 24px -8px rgba(0, 0, 0, 0.2);
709            z-index: 1002 !important;
710            border-radius: 12px;
711            padding: 8px 0;
712        }
713
714        /* Force visibility when not hidden attribute */
715        .navbar #userMenu .user-dropdown:not([hidden]) {
716            display: block !important;
717            visibility: visible !important;
718            opacity: 1 !important;
719        }
720
721        /* Container untuk kategori dan tombol kategori sejajar */
722        .navbar .container:last-child {
723            display: flex !important;
724            align-items: center !important;
725            padding: 4px 16px 6px !important;
726            gap: 5px;
727            overflow: visible;
728        }
729
730        /* Wrapper untuk mega-cats dengan fade gradient (mobile only) */
731        .mega-cats-wrapper {
732            position: relative;
733            flex: 1;
734            overflow: hidden;
735            min-height: 34px;
736            /* Ensure content is visible */
737            display: flex;
738            /* Ensure wrapper is flex container */
739        }
740
741        /* Fade gradient indicator di ujung kanan (mobile only) */
742        .mega-cats-fade {
743            position: absolute;
744            top: 0;
745            right: 0;
746            bottom: 0;
747            width: 80px;
748            /* Increased from 60px for better visibility */
749            background: linear-gradient(to left,
750                    rgba(255, 245, 230, 1) 0%,
751                    rgba(255, 245, 230, 0.98) 15%,
752                    rgba(255, 245, 230, 0.85) 35%,
753                    transparent 100%);
754            pointer-events: none;
755            z-index: 5;
756            /* Increased z-index */
757            transition: opacity 0.3s ease;
758        }
759
760        /* Kategori menu di mobile */
761        .mega-cats.container {
762            display: flex !important;
763            gap: 12px;
764            overflow-x: auto;
765            overflow-y: visible;
766            -webkit-overflow-scrolling: touch;
767            scrollbar-width: none;
768            flex: 1;
769            padding: 0 !important;
770            margin: 0 !important;
771            position: relative;
772            /* For z-index stacking */
773            z-index: 1;
774            /* Below fade gradient */
775        }
776
777        .mega-cats.container::-webkit-scrollbar {
778            display: none;
779        }
780
781        /* Styling untuk menu items di mobile */
782        .mega-cats a {
783            font-size: 13px;
784            padding: 6px 10px;
785            white-space: nowrap;
786            flex-shrink: 0;
787            position: relative;
788            /* Ensure proper stacking */
789        }
790
791        .mega-cats a.active {
792            background: var(--brand-600);
793            color: #fff;
794            font-weight: 600;
795            border-radius: 6px;
796        }
797
798        /* Tombol kategori di mobile */
799        .mm-wp {
800            flex-shrink: 0;
801        }
802
803        .mm2-trigger {
804            display: flex;
805            align-items: center;
806            gap: 6px;
807            padding: 6px 12px;
808            background: var(--gray-100);
809            color: var(--gray-700);
810            text-decoration: none;
811            border-radius: 6px;
812            font-size: 13px;
813            white-space: nowrap;
814        }
815
816        .mm2-trigger .label-cat {
817            display: none;
818        }
819
820        /* Tombol more kategori */
821        .mega-more-btn {
822            border: 1px solid var(--border);
823            background: #fff;
824            border-radius: 10px;
825            padding: 6px 14px;
826            font-size: 18px;
827            cursor: pointer;
828        }
829
830        .mega-cats-more.active>.mega-more-btn {
831            background: var(--brand-600);
832            color: #fff;
833            border-color: var(--brand-600);
834        }
835
836        .mega-more-dropdown {
837            top: calc(100% + 10px);
838            right: 0;
839            min-width: 85vw;
840            max-width: 90vw;
841            border-radius: 16px;
842        }
843
844        .mega-more-grid {
845            grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
846        }
847
848        /* ==============================================================
849     MOBILE USER BOTTOM SHEET
850     ============================================================== */
851        .mobile-user-sheet {
852            position: fixed;
853            top: 0;
854            left: 0;
855            right: 0;
856            bottom: 0;
857            z-index: 10000;
858            pointer-events: none;
859        }
860
861        .mobile-user-sheet.active {
862            pointer-events: auto;
863        }
864
865        .mobile-user-sheet-backdrop {
866            position: absolute;
867            top: 0;
868            left: 0;
869            right: 0;
870            bottom: 0;
871            background: rgba(0, 0, 0, 0.5);
872            opacity: 0;
873            transition: opacity .3s ease;
874        }
875
876        .mobile-user-sheet.active .mobile-user-sheet-backdrop {
877            opacity: 1;
878        }
879
880        .mobile-user-sheet-content {
881            position: absolute;
882            bottom: 0;
883            left: 0;
884            right: 0;
885            background: #fff;
886            border-radius: 20px 20px 0 0;
887            box-shadow: 0 -4px 24px rgba(0, 0, 0, 0.15);
888            transform: translateY(100%);
889            transition: transform .3s cubic-bezier(0.4, 0.0, 0.2, 1);
890            padding-bottom: calc(68px + env(safe-area-inset-bottom));
891        }
892
893        .mobile-user-sheet.active .mobile-user-sheet-content {
894            transform: translateY(0);
895        }
896
897        .mobile-user-sheet-header {
898            padding: 16px 20px 12px;
899            border-bottom: 1px solid #e5e7eb;
900        }
901
902        .mobile-user-sheet-handle {
903            width: 40px;
904            height: 4px;
905            background: #d1d5db;
906            border-radius: 2px;
907            margin: 0 auto 16px;
908        }
909
910        .mobile-user-info {
911            display: flex;
912            align-items: center;
913            gap: 12px;
914        }
915
916        .mobile-user-avatar {
917            width: 48px;
918            height: 48px;
919            border-radius: 50%;
920            background: linear-gradient(135deg, #FFE7CC, #FFD9A8);
921            display: flex;
922            align-items: center;
923            justify-content: center;
924            font-size: 24px;
925            flex-shrink: 0;
926        }
927
928        .mobile-user-details {
929            flex: 1;
930            min-width: 0;
931        }
932
933        .mobile-user-name {
934            font-size: 16px;
935            font-weight: 600;
936            color: #009688;
937            margin-bottom: 2px;
938            white-space: nowrap;
939            overflow: hidden;
940            text-overflow: ellipsis;
941        }
942
943        .mobile-user-email {
944            font-size: 13px;
945            color: #6b7280;
946            white-space: nowrap;
947            overflow: hidden;
948            text-overflow: ellipsis;
949        }
950
951        .mobile-user-sheet-body {
952            padding: 8px 0;
953        }
954
955        .mobile-user-sheet-item {
956            display: flex;
957            align-items: center;
958            gap: 16px;
959            padding: 14px 20px;
960            text-decoration: none;
961            color: #374151;
962            font-size: 15px;
963            transition: background .2s;
964            border: none;
965            background: none;
966            width: 100%;
967            text-align: left;
968            cursor: pointer;
969        }
970
971        .mobile-user-sheet-item:active {
972            background: #f3f4f6;
973        }
974
975        .mobile-user-sheet-icon {
976            font-size: 20px;
977            width: 24px;
978            text-align: center;
979            flex-shrink: 0;
980        }
981
982        .mobile-user-sheet-label {
983            flex: 1;
984            font-weight: 500;
985        }
986
987        .mobile-user-sheet-divider {
988            height: 1px;
989            background: #e5e7eb;
990            margin: 8px 0;
991        }
992    }
993
994    /* END NAVBAR */
995
996    .logo img {
997        display: block;
998    }
999
1000    .search {
1001        flex: 1;
1002        position: relative;
1003        display: flex;
1004        align-items: center;
1005        gap: 0;
1006        background: #fff;
1007        border: 1.5px solid #e5e7eb;
1008        border-radius: 12px;
1009        padding: 0 16px;
1010        height: 38px;
1011        transition: all 0.3s ease;
1012    }
1013
1014    .search:focus-within {
1015        border-color: #fb923c;
1016        box-shadow: 0 0 0 3px rgba(251, 146, 60, 0.1);
1017    }
1018
1019    .search input {
1020        flex: 1;
1021        border: none;
1022        outline: none;
1023        background: transparent;
1024        font-size: 15px;
1025        padding: 0 12px;
1026        height: 100%;
1027        color: #1f2937;
1028    }
1029
1030    .search input::placeholder {
1031        color: #9ca3af;
1032    }
1033
1034    .search-icon-btn {
1035        background: transparent;
1036        border: none;
1037        padding: 0;
1038        display: flex;
1039        align-items: center;
1040        justify-content: center;
1041        cursor: pointer;
1042        color: #6b7280;
1043        transition: color 0.2s ease;
1044        flex-shrink: 0;
1045    }
1046
1047    .search-icon-btn:hover {
1048        color: #fb923c;
1049    }
1050
1051    .search-suggest {
1052        position: absolute;
1053        left: 0;
1054        right: 0;
1055        top: 100%;
1056        background: #fff;
1057        border: 1px solid var(--border);
1058        border-radius: var(--radius);
1059        padding: 8px 0;
1060        box-shadow: 0 8px 20px rgba(0, 0, 0, .08);
1061        margin-top: 4px;
1062        font-size: 14px;
1063        max-height: 260px;
1064        overflow: auto;
1065    }
1066
1067    .search-suggest div {
1068        padding: 6px 12px;
1069        cursor: pointer;
1070    }
1071
1072    .search-suggest div:hover {
1073        background: var(--gray-100);
1074    }
1075
1076    .nav-actions {
1077        display: flex;
1078
1079        align-items: center;
1080    }
1081
1082    .icon-btn,
1083    .login-btn {
1084        padding: 8px 12px;
1085        border-radius: var(--radius);
1086        cursor: pointer;
1087        font-size: 19px;
1088        transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1089        height: 55px;
1090        position: relative;
1091        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(255, 255, 255, 0.5) inset;
1092        backdrop-filter: blur(8px);
1093        -webkit-backdrop-filter: blur(8px);
1094        margin: 0px 11px;
1095        width: 135px;
1096        background: radial-gradient(circle, rgba(0, 150, 136, 1) 0%, rgba(0, 0, 0, 0.63) 100%);
1097        border: 1px solid #009688;
1098        text-decoration: none;
1099        color: rgb(255, 255, 255);
1100        text-align: center;
1101
1102        justify-content: center
1103    }
1104
1105    .login-btn a {
1106        text-align: center;
1107        align-items: center;
1108    }
1109
1110
1111    .icon-btn:hover,
1112    .login-btn:hover {
1113        background: linear-gradient(135deg, rgba(249, 250, 251, 1), rgba(243, 244, 246, 0.95));
1114        border-color: rgba(209, 213, 219, 0.8);
1115        box-shadow:
1116            0 2px 8px rgba(0, 0, 0, 0.08),
1117            0 0 0 1px rgba(255, 255, 255, 0.6) inset;
1118        transform: translateY(-1px);
1119    }
1120
1121    .cart-indicator,
1122    .compare-indicator {
1123        position: relative;
1124    }
1125
1126    .badge {
1127        background: linear-gradient(135deg, #EF4444, #DC2626);
1128        color: #fff;
1129        font-size: 10.5px;
1130        font-weight: 600;
1131        padding: 2px 6px;
1132        border-radius: 999px;
1133        position: absolute;
1134        top: -6px;
1135        right: -6px;
1136        min-width: 18px;
1137        height: 18px;
1138        display: flex;
1139        align-items: center;
1140        justify-content: center;
1141        box-shadow:
1142            0 2px 8px rgba(239, 68, 68, 0.4),
1143            0 0 0 2px #fff,
1144            0 0 12px -2px rgba(239, 68, 68, 0.6);
1145        transition: all 0.3s ease;
1146    }
1147
1148    .icon-btn:hover .badge {
1149        transform: scale(1.08);
1150        box-shadow:
1151            0 4px 12px rgba(239, 68, 68, 0.5),
1152            0 0 0 2px #fff,
1153            0 0 16px -2px rgba(239, 68, 68, 0.7);
1154    }
1155
1156    .badge.is-empty {
1157        display: none;
1158    }
1159
1160    /* User Menu Dropdown */
1161    .user-menu {
1162        position: relative;
1163    }
1164
1165    .user-dropdown {
1166        position: absolute;
1167        top: calc(100% + 8px);
1168        right: 0;
1169        background: #fff;
1170        border: 1px solid var(--border);
1171        border-radius: 12px;
1172        box-shadow: 0 10px 40px rgba(0, 0, 0, 0.12);
1173        min-width: 200px;
1174        padding: 8px 0;
1175        z-index: 9999;
1176    }
1177
1178    /* Ensure dropdown is visible when not hidden */
1179    .user-dropdown:not([hidden]) {
1180        display: block !important;
1181        visibility: visible !important;
1182        opacity: 1 !important;
1183    }
1184
1185    /* Mobile: Force user dropdown to be visible above everything */
1186    @media (max-width:640px) {
1187        .user-dropdown:not([hidden]) {
1188            position: fixed !important;
1189            z-index: 9999 !important;
1190            top: 60px !important;
1191            right: 16px !important;
1192        }
1193    }
1194
1195    .dropdown-item {
1196        display: flex;
1197        align-items: center;
1198        gap: 12px;
1199        padding: 10px 16px;
1200        text-decoration: none;
1201        color: var(--gray-700);
1202        font-size: 14px;
1203        transition: var(--transition);
1204        border: none;
1205        background: none;
1206        width: 100%;
1207        text-align: left;
1208        cursor: pointer;
1209    }
1210
1211    .dropdown-item:hover {
1212        background: var(--gray-100);
1213        color: var(--gray-900);
1214    }
1215
1216    .dropdown-icon {
1217        font-size: 16px;
1218        opacity: 0.7;
1219    }
1220
1221    .dropdown-separator {
1222        height: 1px;
1223        background: var(--border);
1224        margin: 8px 0;
1225    }
1226
1227    .login-btn.logged-in {
1228        background: linear-gradient(135deg, rgba(255, 245, 230, 0.8), rgba(255, 231, 204, 0.6));
1229        border: 1px solid rgba(242, 140, 26, 0.2);
1230        color: var(--brand-700);
1231        max-width: 200px;
1232        /* Prevent button from getting too wide */
1233        display: inline-flex;
1234        align-items: center;
1235        gap: 10px;
1236        padding: 4px 12px 4px 4px;
1237        transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1238        position: relative;
1239        overflow: hidden;
1240        box-shadow:
1241            0 1px 3px rgba(242, 140, 26, 0.08),
1242            0 0 0 1px rgba(255, 255, 255, 0.5) inset,
1243            0 0 12px -6px rgba(242, 140, 26, 0.1);
1244        backdrop-filter: blur(8px);
1245        -webkit-backdrop-filter: blur(8px);
1246    }
1247
1248    /* Subtle background glow effect */
1249    .login-btn.logged-in::before {
1250        content: '';
1251        position: absolute;
1252        top: 50%;
1253        left: 0;
1254        width: 32px;
1255        height: 32px;
1256        background: radial-gradient(circle, rgba(242, 140, 26, 0.15), transparent 70%);
1257        transform: translateY(-50%);
1258        opacity: 0;
1259        transition: opacity 0.3s ease;
1260    }
1261
1262    .login-btn.logged-in:hover::before {
1263        opacity: 1;
1264    }
1265
1266    .login-btn.logged-in .user-avatar {
1267        width: 32px;
1268        height: 32px;
1269        border-radius: 50%;
1270        background: linear-gradient(135deg, #FFE7CC 0%, #FFD9A8 50%, #FFCC80 100%);
1271        color: #D97809;
1272        font-size: 11.5px;
1273        font-weight: 700;
1274        display: flex;
1275        align-items: center;
1276        justify-content: center;
1277        flex-shrink: 0;
1278        letter-spacing: 0.3px;
1279        position: relative;
1280        box-shadow:
1281            0 2px 8px rgba(242, 140, 26, 0.25),
1282            0 1px 3px rgba(0, 0, 0, 0.12),
1283            inset 0 1px 0 rgba(255, 255, 255, 0.5);
1284        transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1285    }
1286
1287    /* Ring gradient border */
1288    .login-btn.logged-in .user-avatar::before {
1289        content: '';
1290        position: absolute;
1291        inset: -2px;
1292        border-radius: 50%;
1293        padding: 2px;
1294        background: linear-gradient(135deg, #F28C1A, #FFD9A8, #F28C1A);
1295        -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1296        -webkit-mask-composite: xor;
1297        mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1298        mask-composite: exclude;
1299        opacity: 0;
1300        transition: opacity 0.3s ease;
1301    }
1302
1303    .login-btn.logged-in:hover .user-avatar::before {
1304        opacity: 1;
1305    }
1306
1307    .login-btn.logged-in:hover .user-avatar {
1308        transform: scale(1.08) rotate(-3deg);
1309        box-shadow:
1310            0 4px 12px rgba(242, 140, 26, 0.35),
1311            0 2px 6px rgba(0, 0, 0, 0.15),
1312            inset 0 1px 0 rgba(255, 255, 255, 0.6);
1313    }
1314
1315    .login-btn.logged-in .login-text {
1316        overflow: hidden;
1317        text-overflow: ellipsis;
1318        white-space: nowrap;
1319        flex: 1;
1320        min-width: 0;
1321        font-weight: 500;
1322        font-size: 14px;
1323        transition: color 0.2s ease;
1324    }
1325
1326    .login-btn.logged-in:hover .login-text {
1327        color: var(--brand-600);
1328    }
1329
1330    .login-btn.logged-in:hover {
1331        background: linear-gradient(135deg, rgba(255, 245, 230, 0.95), rgba(255, 231, 204, 0.85));
1332        border-color: rgba(242, 140, 26, 0.3);
1333        box-shadow:
1334            0 4px 16px -4px rgba(242, 140, 26, 0.25),
1335            0 0 0 1px rgba(242, 140, 26, 0.1) inset,
1336            0 1px 2px rgba(0, 0, 0, 0.05);
1337        transform: translateY(-1px);
1338    }
1339
1340    /* Desktop: hide wrapper elements, show menu normally */
1341    @media (min-width: 761px) {
1342        .mega-cats-wrapper {
1343            display: contents;
1344            /* Remove wrapper from layout */
1345        }
1346
1347        .mega-cats-fade {
1348            display: none !important;
1349            /* Hide fade on desktop */
1350        }
1351    }
1352
1353    .mega-cats {
1354        display: flex;
1355        gap: 5px;
1356        /* padding:6px 16px 10px; */
1357        scrollbar-width: none;
1358        position: relative;
1359        z-index: 510;
1360        overflow-x: auto;
1361        -webkit-overflow-scrolling: touch;
1362        flex: 1;
1363    }
1364
1365    .mega-cats::-webkit-scrollbar {
1366        display: none;
1367    }
1368
1369    .mega-cats a {
1370        text-decoration: none;
1371        font-size: 14px;
1372        color: var(--gray-700);
1373        padding: 6px 10px;
1374        border-radius: 6px;
1375        white-space: nowrap;
1376        transition: var(--transition);
1377    }
1378
1379    .mega-cats a:hover {
1380        background: var(--brand-100);
1381        color: var(--brand-600);
1382    }
1383
1384    /*.mega-cats::after {
1385  content:'';
1386  position:absolute;
1387  right:0;
1388  top:0;
1389  width:40px;
1390  height:100%;
1391  background:linear-gradient(to right,rgba(255,255,255,0),#fff);
1392  pointer-events:none;
1393}*/
1394
1395    /* Tambahan untuk tombol More & dropdown.
1396   Style dasar .mega-cats dan .mega-cats a tetap pakai definisi Anda. */
1397
1398    .mega-cats-more {
1399        position: relative;
1400        display: flex;
1401        align-items: center;
1402    }
1403
1404    .mega-cats-more.active>.mega-more-btn {
1405        background: var(--brand-600);
1406        color: #fff;
1407    }
1408
1409    .mega-more-btn {
1410        cursor: pointer;
1411        border: none;
1412        background: var(--gray-100, #f5f5f5);
1413        color: var(--gray-700, #333);
1414        padding: 6px 12px;
1415        font-size: 16px;
1416        line-height: 1;
1417        border-radius: 6px;
1418        display: flex;
1419        align-items: center;
1420        justify-content: center;
1421        transition: var(--transition);
1422    }
1423
1424    .mega-more-btn:hover {
1425        background: var(--brand-100);
1426        color: var(--brand-600);
1427    }
1428
1429    .mega-more-dropdown {
1430        position: absolute;
1431        top: 100%;
1432        right: 0;
1433        margin-top: 8px;
1434        background: #fff;
1435        border: 1px solid var(--gray-200, #e3e6e9);
1436        border-radius: 10px;
1437        padding: 12px 14px 14px;
1438        min-width: 400px;
1439        max-width: 520px;
1440        max-height: 420px;
1441        box-shadow: 0 12px 32px -8px rgba(25, 40, 65, .25);
1442        z-index: 3000;
1443    }
1444
1445    .mega-more-grid {
1446        display: grid;
1447        grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
1448        gap: 8px 10px;
1449        overflow-x: hidden;
1450        max-height: 380px;
1451        overscroll-behavior: contain;
1452        scrollbar-width: thin;
1453    }
1454
1455    .mega-more-grid::-webkit-scrollbar {
1456        width: 6px;
1457    }
1458
1459    .mega-more-grid::-webkit-scrollbar-thumb {
1460        background: var(--gray-300, #c7ccd1);
1461        border-radius: 3px;
1462    }
1463
1464    /* Link di dropdown mewarisi style .mega-cats a (warna, padding, radius).
1465   Kita tambahkan state active agar konsisten. */
1466    .mega-more-grid a.active {
1467        background: var(--brand-600);
1468        color: #fff;
1469        font-weight: 600;
1470    }
1471
1472    .hero {
1473        background: linear-gradient(135deg, var(--brand-50), #fff);
1474    }
1475
1476    .hero-inner {
1477        display: grid;
1478        grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
1479        gap: 48px;
1480        align-items: center;
1481    }
1482
1483    .hero-text h1 {
1484        font-size: 50px;
1485        line-height: 1.1;
1486        margin: 0;
1487        font-weight: 600;
1488        font-family: "Poppins", sans-serif;
1489
1490    }
1491
1492    .hero-text .text-brand {
1493        color: var(--brand-500);
1494    }
1495
1496    .lead {
1497        font-size: 18px;
1498        color: var(--gray-700);
1499        margin-top: 16px;
1500    }
1501
1502    .hero-cta {
1503        margin-top: 28px;
1504        display: flex;
1505        gap: 16px;
1506    }
1507
1508    .hero-bullets {
1509        margin-top: 28px;
1510        display: flex;
1511        gap: 28px;
1512        font-size: 14px;
1513        color: var(--gray-600);
1514    }
1515
1516    .hero-box {
1517        background: #fff;
1518        padding: 10px;
1519        border-radius: 16px;
1520        box-shadow: 0 4px 18px rgba(0, 0, 0, .08);
1521        /* min-height:320px; */
1522        display: flex;
1523        align-items: center;
1524        justify-content: center;
1525    }
1526
1527    .hero-box img {
1528        border-radius: 10px;
1529    }
1530
1531    @media (max-width:680px) {
1532        .hero-inner {
1533            gap: 25px;
1534        }
1535    }
1536
1537    .usp-section {
1538        position: relative;
1539        background:
1540            linear-gradient(180deg, #FFFDFB 0%, #FFFFFF 60%);
1541        border-top: 1px solid var(--border);
1542        border-bottom: 1px solid var(--border);
1543        padding: 10px 0 10px;
1544    }
1545
1546    .usp-list {
1547        list-style: none;
1548        margin: 0;
1549        padding: 0;
1550        display: grid;
1551        gap: 26px;
1552    }
1553
1554    .usp-list.variant-soft {
1555        grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
1556    }
1557
1558    .usp-item {
1559        display: flex;
1560        gap: 16px;
1561        align-items: flex-start;
1562        background: #fff;
1563        padding: 18px 18px 18px 16px;
1564        border: 1px solid rgba(226, 226, 226, 0.7);
1565        border-radius: 18px;
1566        position: relative;
1567        overflow: hidden;
1568        isolation: isolate;
1569        box-shadow: 0 2px 4px -1px rgba(0, 0, 0, .04), 0 6px 18px -6px rgba(0, 0, 0, .08);
1570        transition: .35s cubic-bezier(.16, .8, .32, 1);
1571    }
1572
1573    .usp-item::before {
1574        content: "";
1575        position: absolute;
1576        inset: 0;
1577        background: radial-gradient(circle at 18% 22%, rgba(242, 140, 26, .18), transparent 60%);
1578        opacity: .65;
1579        transition: .5s;
1580        z-index: -1;
1581    }
1582
1583    .usp-item:hover {
1584        transform: translateY(-6px);
1585        box-shadow: 0 10px 26px -8px rgba(0, 0, 0, .15), 0 3px 8px -2px rgba(0, 0, 0, .08);
1586        border-color: rgba(242, 140, 26, .35);
1587    }
1588
1589    .usp-item:hover::before {
1590        background: radial-gradient(circle at 70% 40%, rgba(242, 140, 26, .22), transparent 65%);
1591    }
1592
1593    .usp-icon {
1594        flex: 0 0 56px;
1595        width: 56px;
1596        height: 56px;
1597        border-radius: 16px;
1598        display: flex;
1599        align-items: center;
1600        justify-content: center;
1601        background:
1602            linear-gradient(135deg, #FFE7CC, #FFD9A8);
1603        position: relative;
1604        box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .6), 0 4px 10px -3px rgba(0, 0, 0, .15);
1605        transition: .45s;
1606    }
1607
1608    .usp-item:hover .usp-icon {
1609        transform: rotate(-4deg) scale(1.06);
1610        box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .8), 0 6px 14px -4px rgba(0, 0, 0, .20);
1611    }
1612
1613    .usp-icon svg {
1614        width: 28px;
1615        height: 28px;
1616        display: block;
1617        filter: drop-shadow(0 2px 2px rgba(0, 0, 0, .18));
1618    }
1619
1620    .usp-text h3 {
1621        font-size: 15px;
1622        font-weight: 600;
1623        margin: 2px 0 6px;
1624        letter-spacing: .2px;
1625    }
1626
1627    .usp-text p {
1628        font-size: 13px;
1629        line-height: 1.3;
1630        margin: 0;
1631        color: var(--gray-600);
1632    }
1633
1634    @media (max-width:680px) {
1635        .usp-section {
1636            padding: 5px 0 5px;
1637            margin-bottom: 0.75rem;
1638        }
1639
1640        .usp-item {
1641            padding: 16px 14px;
1642        }
1643
1644        .usp-icon {
1645            width: 50px;
1646            height: 50px;
1647            border-radius: 14px;
1648        }
1649
1650        .usp-text h3 {
1651            font-size: 14px;
1652            margin-bottom: 4px;
1653        }
1654
1655        .usp-text p {
1656            font-size: 12.5px;
1657        }
1658
1659        .usp-list {
1660            gap: 10px;
1661        }
1662    }
1663
1664    .flash {
1665        padding: 50px 0 30px;
1666        background: #fff;
1667    }
1668
1669    .flash-head {
1670        display: flex;
1671        align-items: center;
1672        justify-content: space-between;
1673        margin-bottom: 20px;
1674    }
1675
1676    .flash-head h2 {
1677        margin: 0;
1678        font-size: 24px;
1679        font-family: "Poppins";
1680    }
1681
1682    .flash .countdown {
1683        font-family: monospace;
1684        background: #009688;
1685        color: #fff;
1686        padding: 8px 14px;
1687        border-radius: 8px;
1688        font-size: 16px;
1689        letter-spacing: 1px;
1690    }
1691
1692    .flash-scroll {
1693        display: flex;
1694        gap: 16px;
1695        overflow-x: auto;
1696        padding-bottom: 6px;
1697        scrollbar-width: none;
1698    }
1699
1700    .flash-scroll::-webkit-scrollbar {
1701        display: none;
1702    }
1703
1704    .products {
1705        padding: 60px 0;
1706        background: #fff;
1707    }
1708
1709    .products-head {
1710        display: flex;
1711        justify-content: space-between;
1712        align-items: center;
1713        margin-bottom: 24px;
1714        flex-wrap: wrap;
1715        gap: 16px;
1716    }
1717
1718    .products-head h2 {
1719        margin: 0;
1720        font-size: 24px;
1721        font-family: "Poppins";
1722    }
1723
1724    .product-filters input {
1725        padding: 8px 12px;
1726        border: 1px solid var(--border);
1727        border-radius: 8px;
1728        font-size: 14px;
1729        width: 220px;
1730    }
1731
1732    .product-grid {
1733        display: grid;
1734        gap: 24px;
1735        grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
1736    }
1737
1738    .prod-card {
1739        background: #fff;
1740        border: 1px solid var(--border);
1741        padding: 12px;
1742        border-radius: 12px;
1743        position: relative;
1744        display: flex;
1745        flex-direction: column;
1746        transition: var(--transition);
1747    }
1748
1749    .prod-card.small {
1750        min-width: 160px;
1751    }
1752
1753    .prod-card:hover {
1754        box-shadow: 0 8px 20px rgba(0, 0, 0, .12);
1755        transform: translateY(-3px);
1756    }
1757
1758    .prod-card .img-box {
1759        background: var(--gray-100);
1760        border-radius: 10px;
1761        aspect-ratio: 1/1;
1762        display: flex;
1763        align-items: center;
1764        justify-content: center;
1765        overflow: hidden;
1766    }
1767
1768    .prod-card .img-box img {
1769        width: 100%;
1770        height: 100%;
1771        object-fit: contain;
1772        transition: var(--transition);
1773    }
1774
1775    .prod-card:hover .img-box img {
1776        transform: scale(1.04);
1777    }
1778
1779    .prod-card .name {
1780        font-size: 13.5px;
1781        font-weight: 500;
1782        margin: 10px 0 6px;
1783        min-height: 36px;
1784        line-height: 1.3;
1785    }
1786
1787    .price {
1788        display: flex;
1789        gap: 6px;
1790        align-items: center;
1791        flex-wrap: wrap;
1792    }
1793
1794    .price strong {
1795        color: var(--brand-600);
1796        font-size: 14px;
1797    }
1798
1799
1800
1801    .price .old {
1802        font-size: 11px;
1803        color: var(--gray-500);
1804        text-decoration: line-through;
1805    }
1806
1807    .tag.discount {
1808        position: absolute;
1809        top: 8px;
1810        left: 8px;
1811        background: #E54848;
1812        color: #fff;
1813        font-size: 11px;
1814        padding: 4px 6px;
1815        border-radius: 6px;
1816        font-weight: 600;
1817    }
1818
1819    .btn {
1820        border: none;
1821        cursor: pointer;
1822        font-weight: 500;
1823        font-size: 14px;
1824        padding: 12px 22px;
1825        border-radius: 10px;
1826        background: var(--gray-900);
1827        color: #fff;
1828        transition: var(--transition);
1829        text-decoration: none;
1830        text-align: center;
1831        display: inline-flex;
1832        align-items: center;
1833        justify-content: center;
1834        gap: 6px;
1835    }
1836
1837    .btn:hover {
1838        background: #000;
1839    }
1840
1841    .btn-primary {
1842        background: var(--brand-500);
1843    }
1844
1845    .btn-primary:hover {
1846        background: var(--brand-600);
1847    }
1848
1849    .btn-outline {
1850        background: #fff;
1851        color: var(--gray-900);
1852        border: 1px solid var(--border);
1853    }
1854
1855    .btn-outline:hover {
1856        background: var(--gray-100);
1857    }
1858
1859    .btn-sm {
1860        padding: 8px 14px;
1861        font-size: 13px;
1862    }
1863
1864    .btn-mini {
1865        padding: 6px 10px;
1866        font-size: 12px;
1867    }
1868
1869    .add-cart {
1870        margin-top: auto;
1871        background: var(--brand-500);
1872        color: #fff;
1873    }
1874
1875    .add-cart:hover {
1876        background: var(--brand-600);
1877    }
1878
1879    /* ==== FOOTER COMPACT FIX PATCH (final) ==== */
1880
1881    /* 1. Pastikan grid aktif */
1882
1883    .site-footer.footer-compact .ft-grid {
1884        display: grid;
1885        grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
1886        gap: 30px 40px;
1887        align-items: start;
1888    }
1889
1890    /* 2. Spacing atas bawah dipadatkan */
1891    .site-footer.footer-compact .ft-top {
1892        padding: 42px 0 26px;
1893    }
1894
1895    /* 3. Judul & teks */
1896    .site-footer.footer-compact .ft-title {
1897        margin: 0 0 14px;
1898        font-size: 14px;
1899        letter-spacing: .8px;
1900        text-transform: uppercase;
1901        font-weight: 600;
1902        color: #82b1c9;
1903    }
1904
1905    .site-footer.footer-compact .ft-desc,
1906    .site-footer.footer-compact .ft-text {
1907        margin: 0 0 16px;
1908        font-size: 13.5px;
1909        line-height: 1.45;
1910        color: #c6d6e0;
1911        max-width: 330px;
1912    }
1913
1914    .site-footer.footer-compact .ft-desc.sm-gap {
1915        margin-top: 18px;
1916    }
1917
1918    /* 4. Reset ikon SVG agar tidak membesar */
1919    .site-footer.footer-compact svg {
1920        width: 20px;
1921        height: 20px;
1922        flex: 0 0 20px;
1923        display: inline-block;
1924    }
1925
1926    .site-footer.footer-compact .ft-social svg {
1927        width: 18px;
1928        height: 18px;
1929    }
1930
1931    .site-footer.footer-compact .ft-wa-btn svg {
1932        width: 18px;
1933        height: 18px;
1934    }
1935
1936    /* Jika ada aturan global svg { width:100%; } — paksa override */
1937    svg {
1938        max-width: 100%;
1939    }
1940
1941    .site-footer.footer-compact svg {
1942        width: 20px !important;
1943        height: 20px !important;
1944    }
1945
1946    /* 5. Link list */
1947    .site-footer.footer-compact .ft-links {
1948        list-style: none;
1949        margin: 0 0 12px;
1950        padding: 0;
1951        display: flex;
1952        flex-direction: column;
1953        gap: 4px;
1954    }
1955
1956    .site-footer.footer-compact .ft-links li {
1957        margin: 0;
1958    }
1959
1960    .site-footer.footer-compact .ft-links a {
1961        display: flex;
1962        align-items: center;
1963        gap: 8px;
1964        font-size: 13.5px;
1965        padding: 5px 2px;
1966        text-decoration: none;
1967        color: #c6d6e0;
1968        border-radius: 8px;
1969        transition: .25s;
1970    }
1971
1972    .site-footer.footer-compact .ft-links a:hover {
1973        background: rgba(255, 255, 255, .06);
1974        padding-left: 6px;
1975        color: #fff;
1976    }
1977
1978    .site-footer.footer-compact .ico-s {
1979        width: 24px;
1980        height: 24px;
1981        background: #103346;
1982        color: #89b8cf;
1983        border-radius: 6px;
1984        display: flex;
1985        align-items: center;
1986        justify-content: center;
1987        flex: 0 0 24px;
1988        font-size: 12px;
1989        transition: .3s;
1990    }
1991
1992    .site-footer.footer-compact .ft-links a:hover .ico-s {
1993        background: #F28C1A;
1994        color: #fff;
1995        transform: rotate(-4deg);
1996    }
1997
1998    /* 6. WhatsApp button */
1999    .site-footer.footer-compact .ft-wa-btn {
2000        display: inline-flex;
2001        align-items: center;
2002        gap: 8px;
2003        background: #fff;
2004        color: #062437;
2005        padding: 8px 18px;
2006        font-size: 13.5px;
2007        border-radius: 22px;
2008        font-weight: 500;
2009        text-decoration: none;
2010        box-shadow: 0 3px 8px -3px rgba(0, 0, 0, .45);
2011        transition: .25s;
2012    }
2013
2014    .site-footer.footer-compact .ft-wa-btn:hover {
2015        transform: translateY(-2px);
2016        box-shadow: 0 6px 14px -6px rgba(0, 0, 0, .55);
2017    }
2018
2019    /* 7. Sosial */
2020    .site-footer.footer-compact .ft-social {
2021        display: flex;
2022        gap: 12px;
2023        margin-top: 4px;
2024    }
2025
2026    .site-footer.footer-compact .ft-social a {
2027        width: 34px;
2028        height: 34px;
2029        background: rgba(255, 255, 255, .08);
2030        display: flex;
2031        align-items: center;
2032        justify-content: center;
2033        border-radius: 10px;
2034        color: #c6d6e0;
2035        transition: .25s;
2036    }
2037
2038    .site-footer.footer-compact .ft-social a:hover {
2039        background: #F28C1A;
2040        color: #fff;
2041    }
2042
2043    /* 8. Alamat */
2044    .site-footer.footer-compact .ft-address {
2045        font-size: 12.5px;
2046        line-height: 1.44;
2047        color: #8fa4b1;
2048        max-width: 330px;
2049        margin-top: 12px;
2050    }
2051
2052    .site-footer.footer-compact .ft-address .company {
2053        margin: 0 0 4px;
2054        font-weight: 600;
2055        color: #e5f2f7;
2056        font-size: 12.8px;
2057    }
2058
2059    /* 9. Payments kecil & rapi */
2060    .site-footer.footer-compact .ft-payments {
2061        margin-top: 14px;
2062        display: flex;
2063        flex-direction: column;
2064        gap: 8px;
2065        max-width: 350px;
2066    }
2067
2068    .site-footer.footer-compact .ft-payments .pay-row {
2069        display: flex;
2070        gap: 8px;
2071        flex-wrap: wrap;
2072    }
2073
2074    .site-footer.footer-compact .ft-payments img {
2075        width: 46px;
2076        height: 32px;
2077        padding: 3px 5px;
2078        background: #fff;
2079        border-radius: 7px;
2080        object-fit: contain;
2081        box-shadow: 0 2px 6px -3px rgba(0, 0, 0, .45);
2082        transition: .25s;
2083    }
2084
2085    .site-footer.footer-compact .ft-payments img:hover {
2086        transform: translateY(-3px);
2087        box-shadow: 0 5px 12px -6px rgba(0, 0, 0, .55);
2088    }
2089
2090    /* 10. Bottom bar */
2091    .site-footer.footer-compact .ft-bottom {
2092        border-top: 1px solid rgba(255, 255, 255, .08);
2093        background: #041f31;
2094        padding: 12px 0 16px;
2095        margin-top: 4px;
2096    }
2097
2098    .site-footer.footer-compact .ft-copy {
2099        font-size: 11.5px;
2100        color: #8fa7b5;
2101        display: flex;
2102        flex-wrap: wrap;
2103        gap: 12px;
2104        justify-content: center;
2105        line-height: 1.3;
2106        margin: 0;
2107    }
2108
2109    .site-footer.footer-compact .ft-copy span {
2110        position: relative;
2111        padding: 0 10px;
2112    }
2113
2114    .site-footer.footer-compact .ft-copy span+span:before {
2115        content: "";
2116        position: absolute;
2117        left: 0;
2118        top: 50%;
2119        width: 1px;
2120        height: 12px;
2121        background: rgba(255, 255, 255, .14);
2122        transform: translateY(-50%);
2123    }
2124
2125    @media (max-width:580px) {
2126        .site-footer.footer-compact .ft-top {
2127            padding: 34px 0 18px;
2128        }
2129
2130        .site-footer.footer-compact .ft-grid {
2131            gap: 26px 20px;
2132        }
2133
2134        .site-footer.footer-compact .ft-copy span {
2135            padding: 0;
2136        }
2137
2138        .site-footer.footer-compact .ft-copy span+span:before {
2139            display: none;
2140        }
2141    }
2142
2143    .copy {
2144        margin-top: 40px;
2145        border-top: 1px solid #222;
2146        text-align: center;
2147        padding: 18px 0;
2148        font-size: 12px;
2149        color: #666;
2150    }
2151
2152    @media (max-width:760px) {
2153        .hero-text h1 {
2154            font-size: 38px;
2155        }
2156
2157        .hero {
2158            padding: 0px 0 30px;
2159        }
2160
2161        .topbar-inner {
2162            flex-direction: column;
2163            gap: 4px;
2164            padding: 6px 0;
2165        }
2166
2167        .nav-inner {
2168            flex-wrap: wrap;
2169        }
2170
2171        .mega-cats {
2172            gap: 10px;
2173        }
2174
2175        .product-grid {
2176            gap: 16px;
2177        }
2178
2179        .prod-card {
2180            padding: 10px;
2181        }
2182    }
2183
2184    /* === PLAZA IT DARK ORANGE FOOTER THEME === */
2185    .site-footer.footer-compact {
2186        --ft-bg-0: #051722;
2187        --ft-bg-1: #072534;
2188        --ft-bg-2: #0B2F40;
2189        --ft-bg-3: #103A4E;
2190        --ft-orange: #F28C1A;
2191        --ft-orange-dark: #D97809;
2192        --ft-text: #E9F2F6;
2193        --ft-text-sec: #B8CAD3;
2194        --ft-text-muted: #8FA4B1;
2195        --ft-divider: rgba(255, 255, 255, 0.08);
2196        --ft-glow: rgba(242, 140, 26, 0.18);
2197        --ft-glow-fade: rgba(242, 140, 26, 0);
2198        color: var(--ft-text);
2199    }
2200
2201    /* BASE TEXT / LINKS (override sebelumnya jika perlu) */
2202    .site-footer.footer-compact .ft-title {
2203        color: #9CC5D7;
2204    }
2205
2206    .site-footer.footer-compact .ft-links a {
2207        color: var(--ft-text-sec);
2208    }
2209
2210    .site-footer.footer-compact .ft-links a:hover {
2211        color: #fff;
2212    }
2213
2214    .site-footer.footer-compact .ft-address {
2215        color: var(--ft-text-muted);
2216    }
2217
2218    .site-footer.footer-compact .ft-copy {
2219        color: #9AB2BD;
2220    }
2221
2222    /* ICON BACKGROUND (kubu gelap) */
2223    .site-footer.footer-compact .ico-s {
2224        background: #0F3647;
2225        color: #9FC7DA;
2226    }
2227
2228    .site-footer.footer-compact .ft-links a:hover .ico-s {
2229        background: var(--ft-orange);
2230        color: #fff;
2231    }
2232
2233    /* WhatsApp button biarkan putih agar kontras */
2234    .site-footer.footer-compact .ft-wa-btn {
2235        box-shadow: 0 4px 12px -5px rgba(0, 0, 0, .6), 0 0 0 3px rgba(255, 255, 255, 0.05);
2236    }
2237
2238    .site-footer.footer-compact .ft-wa-btn:hover {
2239        box-shadow: 0 8px 20px -8px rgba(0, 0, 0, .65), 0 0 0 3px rgba(242, 140, 26, 0.25);
2240    }
2241
2242    /* Payment cards border halus */
2243    .site-footer.footer-compact .ft-payments img {
2244        box-shadow: 0 2px 6px -3px rgba(0, 0, 0, .55), 0 0 0 1px rgba(255, 255, 255, 0.05);
2245    }
2246
2247    .site-footer.footer-compact .ft-payments img:hover {
2248        box-shadow: 0 6px 14px -6px rgba(0, 0, 0, .65), 0 0 0 1px rgba(242, 140, 26, 0.4);
2249    }
2250
2251    /* ========== VARIANT A: DIAGONAL EMBER (AKTIF) ========== */
2252    .site-footer.footer-compact.variant-ember {
2253        background:
2254            radial-gradient(circle at 78% 82%, var(--ft-glow) 0%, var(--ft-glow-fade) 55%),
2255            linear-gradient(140deg, var(--ft-bg-1) 0%, var(--ft-bg-2) 55%, var(--ft-bg-0) 100%);
2256    }
2257
2258    .site-footer.footer-compact.variant-ember .ft-bottom {
2259        background: rgba(0, 0, 0, 0.25);
2260        backdrop-filter: blur(2px);
2261    }
2262
2263    /* ========== VARIANT B: TOP BAR ORANGE ========== */
2264    .site-footer.footer-compact.variant-bar {
2265        background: var(--ft-bg-1);
2266        position: relative;
2267    }
2268
2269    .site-footer.footer-compact.variant-bar::before {
2270        content: "";
2271        position: absolute;
2272        left: 0;
2273        top: 0;
2274        width: 100%;
2275        height: 3px;
2276        background: linear-gradient(90deg, var(--ft-orange-dark), var(--ft-orange));
2277        box-shadow: 0 0 12px -2px var(--ft-orange);
2278    }
2279
2280    .site-footer.footer-compact.variant-bar .ft-bottom {
2281        background: #041c28;
2282    }
2283
2284    /* ========== VARIANT C: RADIAL GLOW BAWAH ========== */
2285    .site-footer.footer-compact.variant-radial {
2286        background:
2287            radial-gradient(circle at 70% 90%, rgba(242, 140, 26, 0.22) 0%, rgba(242, 140, 26, 0.04) 38%, rgba(242, 140, 26, 0) 65%),
2288            linear-gradient(150deg, #052131 0%, #062d3f 50%, #041924 100%);
2289    }
2290
2291    .site-footer.footer-compact.variant-radial .ft-bottom {
2292        background: #041c29;
2293    }
2294
2295    /* ========== VARIANT D: LAYERED STRIPES ========== */
2296    .site-footer.footer-compact.variant-stripes {
2297        background:
2298            repeating-linear-gradient(180deg, rgba(255, 255, 255, 0.015) 0 38px, rgba(255, 255, 255, 0) 38px 76px),
2299            linear-gradient(130deg, #052636 0%, #062a3c 60%, #041d28 100%);
2300        position: relative;
2301    }
2302
2303    .site-footer.footer-compact.variant-stripes::after {
2304        content: "";
2305        position: absolute;
2306        left: 0;
2307        bottom: 0;
2308        width: 100%;
2309        height: 110px;
2310        background: linear-gradient(0deg, rgba(0, 0, 0, .35), rgba(0, 0, 0, 0));
2311        pointer-events: none;
2312    }
2313
2314    .site-footer.footer-compact.variant-stripes .ft-bottom {
2315        background: #031821;
2316    }
2317
2318    /* Garis aksen oranye tipis di atas bottom */
2319    .site-footer.footer-compact.variant-stripes .ft-bottom {
2320        position: relative;
2321    }
2322
2323    .site-footer.footer-compact.variant-stripes .ft-bottom::before {
2324        content: "";
2325        position: absolute;
2326        left: 0;
2327        top: 0;
2328        width: 100%;
2329        height: 2px;
2330        background: linear-gradient(90deg, rgba(242, 140, 26, 0), rgba(242, 140, 26, .65), rgba(242, 140, 26, 0));
2331    }
2332
2333    /* ========== VARIANT E: GLASS PANEL ========== */
2334    .site-footer.footer-compact.variant-glass {
2335        background: linear-gradient(145deg, #051c29 0%, #041620 65%, #03121b 100%);
2336    }
2337
2338    .site-footer.footer-compact.variant-glass .ft-grid {
2339        position: relative;
2340        padding: 32px clamp(10px, 2vw, 24px);
2341        border-radius: 22px;
2342        background: linear-gradient(140deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.02));
2343        border: 1px solid rgba(255, 255, 255, 0.08);
2344        box-shadow: 0 12px 28px -12px rgba(0, 0, 0, 0.45), 0 0 0 1px rgba(255, 255, 255, 0.04) inset;
2345        backdrop-filter: blur(8px);
2346        -webkit-backdrop-filter: blur(8px);
2347    }
2348
2349    .site-footer.footer-compact.variant-glass .ft-bottom {
2350        background: #02141d;
2351    }
2352
2353    /* HOVER ACCENTS */
2354    .site-footer.footer-compact a {
2355        transition: color .25s, background .25s, box-shadow .25s;
2356    }
2357
2358    .site-footer.footer-compact .ft-links a:hover {
2359        box-shadow: 0 2px 6px -3px rgba(0, 0, 0, .5),
2360            0 0 0 1px rgba(242, 140, 26, 0.55);
2361    }
2362
2363    .site-footer.footer-compact .ft-social a {
2364        background: #0E3445;
2365        color: #bcd4dd;
2366    }
2367
2368    .site-footer.footer-compact .ft-social a:hover {
2369        background: var(--ft-orange);
2370        color: #fff;
2371        box-shadow: 0 0 0 3px rgba(242, 140, 26, 0.28);
2372    }
2373
2374    /* Divider di atas footer (opsional) */
2375    .footer-divider-top {
2376        height: 1px;
2377        background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.15), transparent);
2378        width: 100%;
2379        margin: 0 0 4px;
2380    }
2381
2382    /* ==== MOBILE FOOTER COLLAPSE (Non-Homepage Only) ==== */
2383
2384    /* Desktop: wrapper tidak mengganggu grid layout */
2385    .ft-collapsible-content {
2386        display: contents;
2387    }
2388
2389    @media (max-width: 768px) {
2390
2391        /* Wrapper untuk konten yang bisa collapse */
2392        .ft-top.ft-collapsible .ft-collapsible-content {
2393            display: block;
2394            max-height: 80px;
2395            overflow: hidden;
2396            position: relative;
2397            transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
2398        }
2399
2400        /* Fade gradient overlay */
2401        .ft-top.ft-collapsible .ft-collapsible-content::after {
2402            content: '';
2403            position: absolute;
2404            bottom: 0;
2405            left: 0;
2406            right: 0;
2407            height: 70px;
2408            background: linear-gradient(to bottom, transparent 0%, rgba(6, 43, 69, 0.6) 40%, #062b45 100%);
2409            pointer-events: none;
2410            opacity: 1;
2411            transition: opacity 0.3s ease;
2412            z-index: 1;
2413        }
2414
2415        /* State: Expanded */
2416        .ft-top.ft-collapsible.expanded .ft-collapsible-content {
2417            max-height: 1500px;
2418        }
2419
2420        .ft-top.ft-collapsible.expanded .ft-collapsible-content::after {
2421            opacity: 0;
2422        }
2423
2424        /* Expand Button - Di luar collapsible, selalu visible */
2425        .ft-expand-btn {
2426            display: flex;
2427            align-items: center;
2428            justify-content: center;
2429            gap: 8px;
2430            width: 100%;
2431            margin: -8px 0 0;
2432            padding: 12px 20px;
2433            background: rgba(255, 255, 255, 0.12);
2434            border: 1px solid rgba(255, 255, 255, 0.25);
2435            border-radius: 10px;
2436            color: #e5f2f7;
2437            font-size: 13.5px;
2438            font-weight: 500;
2439            cursor: pointer;
2440            transition: all 0.3s ease;
2441            outline: none;
2442            position: relative;
2443            z-index: 10;
2444        }
2445
2446        .ft-expand-btn:hover {
2447            background: rgba(255, 255, 255, 0.18);
2448            border-color: rgba(255, 255, 255, 0.35);
2449            color: #fff;
2450            transform: translateY(-2px);
2451        }
2452
2453        .ft-expand-btn:active {
2454            transform: scale(0.98);
2455        }
2456
2457        .ft-expand-btn svg {
2458            width: 18px;
2459            height: 18px;
2460            transition: transform 0.3s ease;
2461            fill: currentColor;
2462        }
2463
2464        .ft-top.ft-collapsible.expanded .ft-expand-btn {
2465            margin-top: 15px;
2466        }
2467
2468        .ft-top.ft-collapsible.expanded .ft-expand-btn svg {
2469            transform: rotate(180deg);
2470        }
2471    }
2472
2473    /* Desktop: hide expand button */
2474    @media (min-width: 769px) {
2475        .ft-expand-btn {
2476            display: none !important;
2477        }
2478    }
2479
2480    /* RESPONSIVE (jika background panel butuh penyesuaian) */
2481    @media (max-width:640px) {
2482        .site-footer.footer-compact.variant-glass .ft-grid {
2483            padding: 26px 18px;
2484        }
2485    }
2486
2487    /* Mobile Bottom Navigation */
2488    .bottom-nav {
2489        position: fixed;
2490        bottom: 0;
2491        left: 0;
2492        right: 0;
2493        background: #ffffff;
2494        border-top: 1px solid #e5e7eb;
2495        z-index: 9998;
2496        /* Below chat widget */
2497        box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.05);
2498        display: none;
2499        /* Hidden on desktop */
2500    }
2501
2502    .bottom-nav-inner {
2503        display: flex;
2504        justify-content: space-around;
2505        align-items: center;
2506        padding: 2px 0;
2507        max-width: 640px;
2508        margin: 0 auto;
2509    }
2510
2511    .bottom-nav-item {
2512        flex: 1;
2513        display: flex;
2514        flex-direction: column;
2515        align-items: center;
2516        justify-content: center;
2517        gap: 4px;
2518        padding: 8px 8px;
2519        background: none;
2520        border: none;
2521        cursor: pointer;
2522        text-decoration: none;
2523        color: #6b7280;
2524        transition: all 0.3s ease;
2525        position: relative;
2526    }
2527
2528    .bottom-nav-item:hover {
2529        color: #F28C1A;
2530    }
2531
2532    .bottom-nav-item.active {
2533        flex-direction: row;
2534        gap: 8px;
2535        background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%);
2536        color: white;
2537        border-radius: 20px;
2538        padding: 8px 16px;
2539        box-shadow: 0 2px 8px rgba(242, 140, 26, 0.3);
2540    }
2541
2542    .bottom-nav-item-icon {
2543        width: 24px;
2544        height: 24px;
2545        position: relative;
2546    }
2547
2548    .bottom-nav-item-icon svg {
2549        width: 100%;
2550        height: 100%;
2551    }
2552
2553    /* Icon variant switching */
2554    .bottom-nav-item .icon-outlined {
2555        display: block;
2556    }
2557
2558    .bottom-nav-item .icon-filled {
2559        display: none;
2560    }
2561
2562    .bottom-nav-item.active .icon-outlined {
2563        display: none;
2564    }
2565
2566    .bottom-nav-item.active .icon-filled {
2567        display: block;
2568    }
2569
2570    .bottom-nav-item-label {
2571        font-size: 12px;
2572        font-weight: 600;
2573        line-height: 1;
2574        display: none;
2575        white-space: nowrap;
2576    }
2577
2578    .bottom-nav-item.active .bottom-nav-item-label {
2579        display: block;
2580    }
2581
2582    /* Avatar styles for bottom-nav */
2583    .bottom-nav-avatar-img,
2584    .bottom-nav-avatar-initials {
2585        width: 24px;
2586        height: 24px;
2587        border-radius: 50%;
2588        display: block;
2589    }
2590
2591    .bottom-nav-avatar-img {
2592        object-fit: cover;
2593    }
2594
2595    .bottom-nav-avatar-initials {
2596        background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%);
2597        color: white;
2598        font-size: 10px;
2599        font-weight: 700;
2600        display: flex;
2601        align-items: center;
2602        justify-content: center;
2603        line-height: 1;
2604        letter-spacing: 0.5px;
2605    }
2606
2607    /* Hide SVG when avatar is shown */
2608    .bottom-nav-item-icon:has(.bottom-nav-avatar-img) .bottom-nav-svg-icon,
2609    .bottom-nav-item-icon:has(.bottom-nav-avatar-initials) .bottom-nav-svg-icon {
2610        display: none;
2611    }
2612
2613    /* Active state adjustments for avatar */
2614    .bottom-nav-item.active .bottom-nav-avatar-initials {
2615        background: white;
2616        color: #F28C1A;
2617        border: 2px solid rgba(255, 255, 255, 0.8);
2618        box-sizing: border-box;
2619    }
2620
2621    .bottom-nav-item.active .bottom-nav-avatar-img {
2622        border: 2px solid rgba(255, 255, 255, 0.9);
2623        box-sizing: border-box;
2624    }
2625
2626    .bottom-nav-item-badge {
2627        position: absolute;
2628        top: -4px;
2629        right: -4px;
2630        background: #ef4444;
2631        color: white;
2632        border-radius: 10px;
2633        padding: 2px 5px;
2634        font-size: 10px;
2635        font-weight: 600;
2636        min-width: 18px;
2637        height: 18px;
2638        display: flex;
2639        align-items: center;
2640        justify-content: center;
2641        line-height: 1;
2642    }
2643
2644    /* Show on mobile only */
2645    @media (max-width: 640px) {
2646        .bottom-nav {
2647            display: block;
2648        }
2649
2650        /* Add bottom padding to body to prevent content being hidden */
2651        body {
2652            padding-bottom: 60px;
2653        }
2654    }
2655
2656    /* Mobile User Sheet - Bottom Sheet for Profile Menu */
2657    .mobile-user-sheet {
2658        position: fixed;
2659        bottom: 0;
2660        left: 0;
2661        right: 0;
2662        z-index: 10000;
2663        pointer-events: none;
2664    }
2665
2666    .mobile-user-sheet:not([hidden]) {
2667        pointer-events: auto;
2668    }
2669
2670    .mobile-user-sheet-backdrop {
2671        position: fixed;
2672        inset: 0;
2673        background: rgba(0, 0, 0, 0.5);
2674        opacity: 0;
2675        transition: opacity 0.2s ease-out;
2676    }
2677
2678    .mobile-user-sheet.active .mobile-user-sheet-backdrop {
2679        opacity: 1;
2680    }
2681
2682    .mobile-user-sheet-content {
2683        position: absolute;
2684        bottom: 0;
2685        left: 0;
2686        right: 0;
2687        background: white;
2688        border-radius: 16px 16px 0 0;
2689        max-height: 80vh;
2690        overflow-y: auto;
2691        transform: translateY(100%);
2692        transition: transform 0.3s ease-out;
2693    }
2694
2695    .mobile-user-sheet.active .mobile-user-sheet-content {
2696        transform: translateY(0);
2697    }
2698
2699    .mobile-user-sheet-handle {
2700        width: 40px;
2701        height: 4px;
2702        background: #d1d5db;
2703        border-radius: 2px;
2704        margin: 12px auto 16px;
2705    }
2706
2707    .mobile-user-sheet-header {
2708        padding: 0 20px 16px;
2709        border-bottom: 1px solid #e5e7eb;
2710    }
2711
2712    .mobile-user-info {
2713        display: flex;
2714        align-items: center;
2715        gap: 12px;
2716    }
2717
2718    .mobile-user-avatar {
2719        width: 48px;
2720        height: 48px;
2721        background: linear-gradient(135deg, #FFE7CC 0%, #FFD9A8 50%, #FFCC80 100%);
2722        border-radius: 50%;
2723        display: flex;
2724        align-items: center;
2725        justify-content: center;
2726        font-size: 24px;
2727        color: #D97809;
2728        font-weight: 600;
2729    }
2730
2731    .mobile-user-details {
2732        flex: 1;
2733    }
2734
2735    .mobile-user-name {
2736        font-weight: 600;
2737        font-size: 16px;
2738        color: #1f2937;
2739        margin-bottom: 4px;
2740    }
2741
2742    .mobile-user-email {
2743        font-size: 13px;
2744        color: #6b7280;
2745    }
2746
2747    .mobile-user-sheet-body {
2748        padding: 8px 0;
2749    }
2750
2751    .mobile-user-sheet-item {
2752        display: flex;
2753        align-items: center;
2754        gap: 12px;
2755        padding: 14px 20px;
2756        background: none;
2757        border: none;
2758        width: 100%;
2759        text-align: left;
2760        cursor: pointer;
2761        text-decoration: none;
2762        color: #374151;
2763        transition: background 0.2s;
2764    }
2765
2766    .mobile-user-sheet-item:hover {
2767        background: #f9fafb;
2768    }
2769
2770    .mobile-user-sheet-icon {
2771        font-size: 20px;
2772        width: 24px;
2773        text-align: center;
2774    }
2775
2776    .mobile-user-sheet-label {
2777        font-size: 15px;
2778        font-weight: 500;
2779    }
2780
2781    .mobile-user-sheet-divider {
2782        height: 1px;
2783        background: #e5e7eb;
2784        margin: 8px 0;
2785    }
2786
2787    @keyframes fadeIn {
2788        from {
2789            opacity: 0;
2790        }
2791
2792        to {
2793            opacity: 1;
2794        }
2795    }
2796
2797    @keyframes slideUp {
2798        from {
2799            transform: translateY(100%);
2800        }
2801
2802        to {
2803            transform: translateY(0);
2804        }
2805    }
2806
2807    /* Ensure chat widget works well with bottom nav */
2808    @media (max-width: 640px) {
2809        .chat-widget {
2810            bottom: 0 !important;
2811            /* Chat opens from bottom */
2812        }
2813
2814        .chat-popup {
2815            /* Chat popup should be above bottom nav */
2816            z-index: 9999;
2817        }
2818    }
2819
2820    .search {
2821        position: relative;
2822    }
2823
2824    /* AI Bot Toggle Button */
2825    .ai-bot-toggle {
2826        display: flex;
2827        align-items: center;
2828        justify-content: center;
2829        background: transparent;
2830        border: none;
2831        padding: 8px;
2832        cursor: pointer;
2833        border-radius: 8px;
2834        transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
2835        margin-left: 4px;
2836        flex-shrink: 0;
2837        display: none;
2838    }
2839
2840    .ai-bot-toggle .bot-icon {
2841        color: #9ca3af;
2842        transition: all 0.3s ease;
2843    }
2844
2845    .ai-bot-toggle:hover .bot-icon {
2846        color: #6b7280;
2847        transform: scale(1.1);
2848    }
2849
2850    .ai-bot-toggle.active .bot-icon {
2851        color: #fb923c;
2852        animation: botPulse 2s ease-in-out infinite;
2853    }
2854
2855    .ai-bot-toggle.active {
2856        background: rgba(251, 146, 60, 0.1);
2857    }
2858
2859    .ai-bot-toggle.active:hover .bot-icon {
2860        color: #f97316;
2861    }
2862
2863    @keyframes botPulse {
2864
2865        0%,
2866        100% {
2867            transform: scale(1);
2868        }
2869
2870        50% {
2871            transform: scale(1.12);
2872        }
2873    }
2874
2875    /* Search Suggest Box */
2876    .search-suggest {
2877        position: absolute;
2878        top: 100%;
2879        left: 0;
2880        right: 0;
2881        background: #fff;
2882        border: 1px solid #e1e4e8;
2883        border-top: none;
2884        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
2885        max-height: 400px;
2886        overflow-y: auto;
2887        z-index: 100;
2888        padding: 0;
2889        font-size: 14px;
2890        border-radius: 0 0 8px 8px;
2891    }
2892
2893    .suggest-item {
2894        display: flex;
2895        align-items: center;
2896        gap: 8px;
2897        padding: 10px 16px;
2898        cursor: pointer;
2899        transition: all 0.2s ease;
2900        border-bottom: 1px solid #f1f5f9;
2901    }
2902
2903    .suggest-item:last-child {
2904        border-bottom: none;
2905    }
2906
2907    .suggest-item:hover,
2908    .suggest-item.active {
2909        background: linear-gradient(90deg, #f8fafc 0%, #f1f5f9 100%);
2910        padding-left: 20px;
2911    }
2912
2913    .suggest-thumb {
2914        width: 42px;
2915        height: 42px;
2916        object-fit: cover;
2917        border: 1px solid #ddd;
2918        border-radius: 4px;
2919        background: #fafafa;
2920    }
2921
2922    .suggest-meta {
2923        flex: 1;
2924        min-width: 0;
2925    }
2926
2927    .suggest-name {
2928        font-weight: 500;
2929        color: #222;
2930        line-height: 1.2;
2931        white-space: nowrap;
2932        overflow: hidden;
2933        text-overflow: ellipsis;
2934    }
2935
2936    .suggest-price {
2937        color: #d32f2f;
2938        font-size: 12px;
2939        margin-top: 2px;
2940    }
2941
2942    /* AI Insights */
2943    .suggest-ai-insight {
2944        display: flex;
2945        align-items: center;
2946        gap: 8px;
2947        padding: 8px 12px;
2948        background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);
2949        border-bottom: 1px solid #bae6fd;
2950        color: #0369a1;
2951        font-size: 12px;
2952        font-weight: 500;
2953        line-height: 1.4;
2954    }
2955
2956    .suggest-ai-insight svg {
2957        flex-shrink: 0;
2958        opacity: 0.8;
2959    }
2960
2961    .suggest-ai-insight span {
2962        flex: 1;
2963    }
2964
2965    /* AI Progress States */
2966    .ai-progress-container {
2967        padding: 20px 16px;
2968        background: linear-gradient(135deg, #fafbff 0%, #f5f7ff 100%);
2969    }
2970
2971    .ai-progress-header {
2972        display: flex;
2973        align-items: center;
2974        gap: 10px;
2975        margin-bottom: 16px;
2976    }
2977
2978    .ai-progress-icon {
2979        width: 36px;
2980        height: 36px;
2981        display: flex;
2982        align-items: center;
2983        justify-content: center;
2984        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
2985        border-radius: 50%;
2986        color: #fff;
2987        font-size: 18px;
2988        animation: aiIconSpin 3s linear infinite;
2989    }
2990
2991    @keyframes aiIconSpin {
2992        0% {
2993            transform: rotate(0deg);
2994        }
2995
2996        100% {
2997            transform: rotate(360deg);
2998        }
2999    }
3000
3001    .ai-progress-text {
3002        flex: 1;
3003    }
3004
3005    .ai-progress-title {
3006        font-weight: 600;
3007        color: #1e293b;
3008        font-size: 14px;
3009        margin-bottom: 2px;
3010    }
3011
3012    .ai-progress-subtitle {
3013        font-size: 12px;
3014        color: #64748b;
3015    }
3016
3017    /* Progress Steps */
3018    .ai-progress-steps {
3019        display: flex;
3020        flex-direction: column;
3021        gap: 10px;
3022        margin-top: 16px;
3023    }
3024
3025    .ai-progress-step {
3026        display: flex;
3027        align-items: center;
3028        gap: 10px;
3029        padding: 8px 12px;
3030        background: #fff;
3031        border-radius: 8px;
3032        border: 1px solid #e2e8f0;
3033        transition: all 0.3s ease;
3034    }
3035
3036    .ai-progress-step.active {
3037        border-color: #667eea;
3038        background: #f8f9ff;
3039        box-shadow: 0 2px 8px rgba(102, 126, 234, 0.1);
3040    }
3041
3042    .ai-progress-step.completed {
3043        border-color: #10b981;
3044        background: #f0fdf4;
3045    }
3046
3047    .ai-step-icon {
3048        width: 20px;
3049        height: 20px;
3050        display: flex;
3051        align-items: center;
3052        justify-content: center;
3053        border-radius: 50%;
3054        font-size: 11px;
3055        flex-shrink: 0;
3056    }
3057
3058    .ai-progress-step.active .ai-step-icon {
3059        background: #667eea;
3060        color: #fff;
3061        animation: pulse 1.5s ease-in-out infinite;
3062    }
3063
3064    .ai-progress-step.completed .ai-step-icon {
3065        background: #10b981;
3066        color: #fff;
3067    }
3068
3069    .ai-progress-step.pending .ai-step-icon {
3070        background: #e2e8f0;
3071        color: #94a3b8;
3072    }
3073
3074    .ai-step-text {
3075        flex: 1;
3076        font-size: 13px;
3077        color: #475569;
3078        font-weight: 500;
3079    }
3080
3081    .ai-progress-step.completed .ai-step-text {
3082        color: #059669;
3083    }
3084
3085    /* AI Analysis Result Banner */
3086    .ai-result-banner {
3087        padding: 12px 16px;
3088        background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);
3089        border-bottom: 1px solid #86efac;
3090        display: flex;
3091        align-items: center;
3092        gap: 10px;
3093    }
3094
3095    .ai-result-icon {
3096        font-size: 20px;
3097        animation: bounceIn 0.5s ease;
3098    }
3099
3100    @keyframes bounceIn {
3101        0% {
3102            transform: scale(0);
3103            opacity: 0;
3104        }
3105
3106        50% {
3107            transform: scale(1.1);
3108        }
3109
3110        100% {
3111            transform: scale(1);
3112            opacity: 1;
3113        }
3114    }
3115
3116    .ai-result-text {
3117        flex: 1;
3118    }
3119
3120    .ai-result-title {
3121        font-weight: 600;
3122        color: #065f46;
3123        font-size: 13px;
3124        margin-bottom: 2px;
3125    }
3126
3127    .ai-result-description {
3128        font-size: 12px;
3129        color: #047857;
3130        opacity: 0.9;
3131    }
3132
3133    /* Product Items Section Header */
3134    .suggest-section-header {
3135        padding: 10px 16px;
3136        background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
3137        border-bottom: 1px solid #e2e8f0;
3138    }
3139
3140    .suggest-header-main {
3141        display: flex;
3142        align-items: center;
3143        gap: 6px;
3144        margin-bottom: 4px;
3145    }
3146
3147    .suggest-header-icon {
3148        font-size: 14px;
3149    }
3150
3151    .suggest-header-text {
3152        font-size: 12px;
3153        font-weight: 600;
3154        color: #64748b;
3155        text-transform: uppercase;
3156        letter-spacing: 0.5px;
3157    }
3158
3159    .suggest-header-hint {
3160        font-size: 11px;
3161        color: #94a3b8;
3162        font-weight: 400;
3163        text-transform: none;
3164        letter-spacing: 0;
3165        display: flex;
3166        align-items: center;
3167        gap: 4px;
3168    }
3169
3170    .suggest-header-hint kbd {
3171        display: inline-block;
3172        padding: 2px 6px;
3173        font-size: 10px;
3174        font-weight: 600;
3175        line-height: 1;
3176        color: #475569;
3177        background: #fff;
3178        border: 1px solid #cbd5e1;
3179        border-radius: 4px;
3180        box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
3181        font-family: 'Segoe UI', monospace;
3182    }
3183
3184    /* Footer Hint */
3185    .suggest-footer-hint {
3186        display: flex;
3187        align-items: center;
3188        justify-content: center;
3189        padding: 12px 16px;
3190        background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);
3191        border-top: 1px solid #fbbf24;
3192        color: #92400e;
3193        font-size: 12px;
3194        font-weight: 500;
3195        text-align: center;
3196        cursor: default;
3197    }
3198
3199    .suggest-footer-hint svg {
3200        color: #f59e0b;
3201        flex-shrink: 0;
3202    }
3203
3204    .suggest-footer-hint kbd {
3205        display: inline-block;
3206        padding: 3px 7px;
3207        margin: 0 3px;
3208        font-size: 11px;
3209        font-weight: 600;
3210        line-height: 1;
3211        color: #78350f;
3212        background: #fff;
3213        border: 1px solid #f59e0b;
3214        border-radius: 4px;
3215        box-shadow: 0 1px 3px rgba(245, 158, 11, 0.2);
3216        font-family: 'Segoe UI', monospace;
3217    }
3218
3219    .suggest-footer-link {
3220        color: #ea580c;
3221        font-weight: 600;
3222        text-decoration: underline;
3223        text-underline-offset: 2px;
3224        text-decoration-thickness: 1px;
3225        cursor: pointer;
3226        transition: all 0.2s ease;
3227    }
3228
3229    .suggest-footer-link:hover {
3230        color: #c2410c;
3231        text-decoration-thickness: 2px;
3232        text-shadow: 0 0 8px rgba(234, 88, 12, 0.3);
3233    }
3234
3235    /* Loading state */
3236    .suggest-loading {
3237        display: flex;
3238        align-items: center;
3239        justify-content: center;
3240        gap: 8px;
3241        padding: 16px 12px;
3242        color: #64748b;
3243        font-size: 13px;
3244    }
3245
3246    @keyframes pulse {
3247
3248        0%,
3249        100% {
3250            opacity: 1;
3251        }
3252
3253        50% {
3254            opacity: 0.5;
3255        }
3256    }
3257
3258    .suggest-loading {
3259        animation: pulse 1.5s ease-in-out infinite;
3260    }
3261
3262    /* Responsive Mobile Styles */
3263    @media (max-width: 768px) {
3264        .ai-bot-toggle {
3265            padding: 6px;
3266            margin-left: 0;
3267        }
3268
3269        .ai-bot-toggle .bot-icon {
3270            width: 20px;
3271            height: 20px;
3272        }
3273
3274        .search-icon-btn {
3275            margin-right: 4px;
3276        }
3277
3278        .search-icon-btn svg {
3279            width: 18px;
3280            height: 18px;
3281        }
3282
3283        .search-suggest {
3284            max-height: 350px;
3285        }
3286
3287        /* Mobile hint adjustments */
3288        .suggest-header-hint {
3289            font-size: 10px;
3290        }
3291
3292        .suggest-header-hint kbd {
3293            padding: 1px 4px;
3294            font-size: 9px;
3295        }
3296
3297        .suggest-footer-hint {
3298            padding: 10px 12px;
3299            font-size: 11px;
3300        }
3301
3302        .suggest-footer-hint svg {
3303            width: 14px;
3304            height: 14px;
3305        }
3306
3307        .suggest-footer-hint kbd {
3308            padding: 2px 5px;
3309            font-size: 10px;
3310        }
3311
3312        .ai-progress-container {
3313            padding: 16px 12px;
3314        }
3315
3316        .ai-progress-icon {
3317            width: 32px;
3318            height: 32px;
3319            font-size: 16px;
3320        }
3321
3322        .ai-progress-title {
3323            font-size: 13px;
3324        }
3325
3326        .ai-progress-subtitle {
3327            font-size: 11px;
3328        }
3329
3330        .ai-progress-step {
3331            padding: 6px 10px;
3332        }
3333
3334        .ai-step-text {
3335            font-size: 12px;
3336        }
3337
3338        .suggest-item {
3339            padding: 8px 12px;
3340        }
3341
3342        .suggest-thumb {
3343            width: 36px;
3344            height: 36px;
3345        }
3346
3347        .suggest-name {
3348            font-size: 13px;
3349        }
3350
3351        .suggest-price {
3352            font-size: 11px;
3353        }
3354    }
3355
3356    @media (max-width: 480px) {
3357        .ai-bot-toggle {
3358            padding: 4px;
3359        }
3360
3361        .ai-bot-toggle .bot-icon {
3362            width: 18px;
3363            height: 18px;
3364        }
3365
3366        .search-icon-btn svg {
3367            width: 16px;
3368            height: 16px;
3369        }
3370
3371        /* Ultra-compact hints for small screens */
3372        .suggest-header-hint {
3373            display: none;
3374            /* Hide header hint on very small screens */
3375        }
3376
3377        .suggest-footer-hint {
3378            padding: 8px 10px;
3379            font-size: 10px;
3380            flex-direction: column;
3381            gap: 4px;
3382        }
3383
3384        .suggest-footer-hint svg {
3385            display: none;
3386            /* Hide icon to save space */
3387        }
3388
3389        .suggest-footer-hint kbd {
3390            padding: 2px 4px;
3391            font-size: 9px;
3392        }
3393
3394        .ai-progress-steps {
3395            gap: 8px;
3396        }
3397
3398        .ai-step-text {
3399            font-size: 11px;
3400        }
3401    }
3402
3403    /* AI Search Prompt Box */
3404    .ai-search-prompt {
3405        padding: 24px;
3406        background: linear-gradient(135deg, #fff5f0 0%, #ffffff 100%);
3407    }
3408
3409    .ai-prompt-header {
3410        display: flex;
3411        align-items: center;
3412        gap: 12px;
3413        margin-bottom: 16px;
3414    }
3415
3416    .ai-prompt-icon {
3417        width: 48px;
3418        height: 48px;
3419        background: linear-gradient(135deg, #fb923c 0%, #f97316 100%);
3420        border-radius: 12px;
3421        display: flex;
3422        align-items: center;
3423        justify-content: center;
3424        font-size: 24px;
3425        box-shadow: 0 4px 12px rgba(251, 146, 60, 0.3);
3426    }
3427
3428    .ai-prompt-text {
3429        flex: 1;
3430    }
3431
3432    .ai-prompt-title {
3433        font-size: 16px;
3434        font-weight: 700;
3435        color: #1f2937;
3436        margin-bottom: 4px;
3437    }
3438
3439    .ai-prompt-subtitle {
3440        font-size: 13px;
3441        color: #6b7280;
3442    }
3443
3444    .ai-prompt-query {
3445        background: white;
3446        border: 2px solid #fb923c;
3447        border-radius: 8px;
3448        padding: 12px 16px;
3449        margin-bottom: 16px;
3450    }
3451
3452    .ai-query-label {
3453        font-size: 11px;
3454        font-weight: 600;
3455        color: #fb923c;
3456        text-transform: uppercase;
3457        letter-spacing: 0.5px;
3458        margin-bottom: 4px;
3459    }
3460
3461    .ai-query-text {
3462        font-size: 15px;
3463        font-weight: 600;
3464        color: #1f2937;
3465    }
3466
3467    .ai-search-trigger-btn {
3468        width: 100%;
3469        padding: 14px 20px;
3470        background: linear-gradient(135deg, #fb923c 0%, #f97316 100%);
3471        color: white;
3472        border: none;
3473        border-radius: 10px;
3474        font-size: 15px;
3475        font-weight: 700;
3476        cursor: pointer;
3477        display: flex;
3478        align-items: center;
3479        justify-content: center;
3480        gap: 8px;
3481        transition: all 0.3s ease;
3482        box-shadow: 0 4px 12px rgba(251, 146, 60, 0.4);
3483    }
3484
3485    .ai-search-trigger-btn:hover {
3486        transform: translateY(-2px);
3487        box-shadow: 0 6px 20px rgba(251, 146, 60, 0.5);
3488    }
3489
3490    .ai-search-trigger-btn:active {
3491        transform: translateY(0);
3492    }
3493
3494    .ai-btn-icon {
3495        font-size: 18px;
3496        animation: sparkle 2s ease-in-out infinite;
3497    }
3498
3499    @keyframes sparkle {
3500
3501        0%,
3502        100% {
3503            opacity: 1;
3504            transform: scale(1);
3505        }
3506
3507        50% {
3508            opacity: 0.7;
3509            transform: scale(1.2);
3510        }
3511    }
3512
3513    .ai-btn-text {
3514        font-size: 15px;
3515    }
3516
3517    .ai-prompt-footer {
3518        margin-top: 12px;
3519        text-align: center;
3520        font-size: 12px;
3521        color: #9ca3af;
3522        font-style: italic;
3523    }
3524
3525    /* ==================== TRENDING SEARCH STYLES ==================== */
3526
3527    .search-suggest.trending-mode {
3528        border-top: 3px solid #fb923c;
3529        max-width: 900px;
3530        min-width: 600px;
3531    }
3532
3533    /* Two-column container */
3534    .trending-container {
3535        display: flex;
3536        gap: 0;
3537        padding: 0 !important;
3538    }
3539
3540    .trending-column {
3541        flex: 1;
3542        min-width: 0;
3543        padding: 0 !important;
3544    }
3545
3546    .trending-column.trending-searches {
3547        border-right: 2px solid #e2e8f0;
3548        padding: 0 !important;
3549    }
3550
3551    /* Mobile: stack columns vertically */
3552    @media (max-width: 768px) {
3553        .search-suggest.trending-mode {
3554            min-width: auto;
3555            max-width: 100%;
3556        }
3557
3558        .trending-container {
3559            flex-direction: column;
3560        }
3561
3562        .trending-column.trending-searches {
3563            border-right: none;
3564            border-bottom: 2px solid #e2e8f0;
3565        }
3566    }
3567
3568    .trending-header {
3569        display: flex;
3570        align-items: center;
3571        gap: 8px;
3572        padding: 14px 16px;
3573        border-bottom: 1px solid #e2e8f0;
3574        background: linear-gradient(135deg, #fb923c 0%, #f97316 100%);
3575        color: white;
3576        position: sticky;
3577        top: 0;
3578        z-index: 10;
3579    }
3580
3581    .trending-icon {
3582        font-size: 20px;
3583        animation: trendingPulse 2s infinite;
3584    }
3585
3586    @keyframes trendingPulse {
3587
3588        0%,
3589        100% {
3590            transform: scale(1);
3591            filter: drop-shadow(0 0 0 rgba(251, 146, 60, 0));
3592        }
3593
3594        50% {
3595            transform: scale(1.15);
3596            filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.8));
3597        }
3598    }
3599
3600    .trending-title {
3601        font-weight: 700;
3602        font-size: 14px;
3603        letter-spacing: 0.3px;
3604    }
3605
3606    .trending-subtitle {
3607        font-size: 11px;
3608        opacity: 0.9;
3609        margin-left: auto;
3610        font-style: italic;
3611    }
3612
3613    /* Trending searches item */
3614    .trending-item {
3615        display: flex;
3616        align-items: center;
3617        gap: 12px;
3618        padding: 12px 16px;
3619        cursor: pointer;
3620        transition: all 0.2s ease;
3621        border-bottom: 1px solid #f1f5f9;
3622        position: relative;
3623    }
3624
3625    .trending-item:hover {
3626        background: linear-gradient(90deg, #fff7ed 0%, #ffedd5 100%);
3627        padding-left: 20px;
3628    }
3629
3630    .trending-item:hover::before {
3631        content: '';
3632        position: absolute;
3633        left: 0;
3634        top: 0;
3635        bottom: 0;
3636        width: 4px;
3637        background: linear-gradient(180deg, #fb923c 0%, #f97316 100%);
3638    }
3639
3640    .trending-item:last-child {
3641        border-bottom: none;
3642    }
3643
3644    .trending-rank {
3645        font-size: 20px;
3646        flex-shrink: 0;
3647        width: 32px;
3648        text-align: center;
3649    }
3650
3651    .trending-query {
3652        flex: 1;
3653        font-size: 14px;
3654        color: #1f2937;
3655        font-weight: 500;
3656        line-height: 1.4;
3657    }
3658
3659    .trending-category {
3660        font-size: 11px;
3661        color: #f97316;
3662        background: #fff7ed;
3663        padding: 3px 10px;
3664        border-radius: 12px;
3665        white-space: nowrap;
3666        font-weight: 500;
3667        border: 1px solid #fed7aa;
3668    }
3669
3670    /* Trending products item */
3671    .trending-product-item {
3672        display: flex;
3673        align-items: center;
3674        gap: 12px;
3675        padding: 12px 16px;
3676        cursor: pointer;
3677        transition: all 0.2s ease;
3678        border-bottom: 1px solid #f1f5f9;
3679        position: relative;
3680    }
3681
3682    .trending-product-item:hover {
3683        background: linear-gradient(90deg, #fef3c7 0%, #fde68a 100%);
3684        padding-left: 20px;
3685    }
3686
3687    .trending-product-item:hover::before {
3688        content: '';
3689        position: absolute;
3690        left: 0;
3691        top: 0;
3692        bottom: 0;
3693        width: 4px;
3694        background: linear-gradient(180deg, #fbbf24 0%, #f59e0b 100%);
3695    }
3696
3697    .trending-product-item:last-child {
3698        border-bottom: none;
3699    }
3700
3701    .trending-product-thumb {
3702        width: 48px;
3703        height: 48px;
3704        object-fit: cover;
3705        border-radius: 8px;
3706        border: 1px solid #e5e7eb;
3707        flex-shrink: 0;
3708        background: white;
3709    }
3710
3711    .trending-product-info {
3712        flex: 1;
3713        min-width: 0;
3714    }
3715
3716    .trending-product-name {
3717        font-size: 13px;
3718        font-weight: 400;
3719        color: #1f2937;
3720        line-height: 1.4;
3721        margin-bottom: 0;
3722        padding: 0 !important;
3723        overflow: hidden;
3724        text-overflow: ellipsis;
3725        display: -webkit-box;
3726        -webkit-line-clamp: 2;
3727        -webkit-box-orient: vertical;
3728    }
3729
3730    .trending-product-price {
3731        font-size: 12px;
3732        font-weight: 700;
3733        color: #f59e0b;
3734        padding: 4px 0 !important;
3735    }
3736
3737    .trending-product {
3738        padding: 0;
3739    }
3740
3741    /* ==================== END TRENDING STYLES ==================== */
3742    /* === PRODUCT DETAIL v3 (Tokopedia-like) — Full stylesheet === */
3743
3744    /* Root / Container */
3745    .product-single {
3746        --pd-gap: 2rem;
3747        --pd-border: #e2e8f0;
3748        --pd-bg: #ffffff;
3749        --pd-muted: #64748b;
3750        --pd-dark: #0f172a;
3751        --pd-accent: #0d6efd;
3752        /* tema utama situs */
3753        --pd-radius: 12px;
3754        --pd-soft: #f8fafc;
3755        --pd-soft-border: #e5e7eb;
3756        --pd-danger: #dc2626;
3757        --pd-success-bg: #dcfce7;
3758        --pd-success-text: #166534;
3759        --pd-danger-bg: #fee2e2;
3760        --pd-danger-text: #b91c1c;
3761        --pd-shadow: 0 6px 20px -10px rgba(0, 0, 0, .12);
3762        --pd-transition: .25s cubic-bezier(.4, .0, .2, 1);
3763        max-width: 1280px;
3764        margin-inline: auto;
3765    }
3766
3767    /* === Sticky Product Header Bar (muncul saat scroll) === */
3768    .pd-sticky-header {
3769        position: fixed;
3770        top: 0;
3771        left: 0;
3772        right: 0;
3773        z-index: 998;
3774        background: rgba(255, 255, 255, 0.98);
3775        backdrop-filter: blur(12px);
3776        -webkit-backdrop-filter: blur(12px);
3777        border-bottom: 1px solid rgba(226, 232, 240, 0.8);
3778        box-shadow: 0 4px 16px -4px rgba(0, 0, 0, 0.08);
3779        transform: translateY(-100%);
3780        opacity: 0;
3781        transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1),
3782            opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1);
3783        pointer-events: none;
3784    }
3785
3786    .pd-sticky-header.visible {
3787        transform: translateY(0);
3788        opacity: 1;
3789        pointer-events: auto;
3790    }
3791
3792    .pd-sticky-header-container {
3793        max-width: 1280px;
3794        margin: 0 auto;
3795        padding: 12px 20px;
3796        display: flex;
3797        align-items: center;
3798        gap: 16px;
3799    }
3800
3801    .pd-sticky-thumb {
3802        width: 48px;
3803        height: 48px;
3804        flex-shrink: 0;
3805        border-radius: 8px;
3806        border: 1px solid #e2e8f0;
3807        overflow: hidden;
3808        background: #f8fafc;
3809    }
3810
3811    .pd-sticky-thumb img {
3812        width: 100%;
3813        height: 100%;
3814        object-fit: cover;
3815        display: block;
3816    }
3817
3818    .pd-sticky-info {
3819        flex: 1;
3820        min-width: 0;
3821        display: flex;
3822        flex-direction: column;
3823        gap: 4px;
3824    }
3825
3826    .pd-sticky-title {
3827        font-size: 0.9rem;
3828        font-weight: 600;
3829        color: #0f172a;
3830        line-height: 1.3;
3831        white-space: nowrap;
3832        overflow: hidden;
3833        text-overflow: ellipsis;
3834        margin: 0;
3835    }
3836
3837    .pd-sticky-price-row {
3838        display: flex;
3839        align-items: center;
3840        gap: 8px;
3841        flex-wrap: wrap;
3842    }
3843
3844    .pd-sticky-price {
3845        font-size: 1.1rem;
3846        font-weight: 700;
3847        color: #0d6efd;
3848        line-height: 1;
3849    }
3850
3851    .pd-sticky-price-original {
3852        font-size: 0.75rem;
3853        color: #94a3b8;
3854        text-decoration: line-through;
3855        line-height: 1;
3856    }
3857
3858    .pd-sticky-discount {
3859        background: #dc2626;
3860        color: #fff;
3861        font-size: 0.65rem;
3862        font-weight: 600;
3863        padding: 2px 6px;
3864        border-radius: 4px;
3865        letter-spacing: 0.3px;
3866        line-height: 1;
3867    }
3868
3869    .pd-sticky-actions {
3870        display: flex;
3871        gap: 8px;
3872        flex-shrink: 0;
3873        align-items: center;
3874    }
3875
3876    .pd-sticky-share-btn {
3877        padding: 8px 16px;
3878        border-radius: 8px;
3879        border: 1px solid #e2e8f0;
3880        background: #fff;
3881        color: #64748b;
3882        cursor: pointer;
3883        transition: all 0.2s ease;
3884        display: inline-flex;
3885        align-items: center;
3886        justify-content: center;
3887        flex-shrink: 0;
3888    }
3889
3890    .pd-sticky-share-btn:hover {
3891        background: #f8fafc;
3892        border-color: #cbd5e1;
3893        color: #0f172a;
3894        transform: translateY(-1px);
3895    }
3896
3897    .pd-sticky-share-btn:active {
3898        transform: translateY(0);
3899    }
3900
3901    .pd-sticky-share-btn svg {
3902        display: block;
3903        width: 16px;
3904        height: 16px;
3905    }
3906
3907    .pd-sticky-btn-chat svg {
3908        width: 16px !important;
3909        height: 16px !important;
3910        max-width: none !important;
3911        margin-right: 4px;
3912        flex-shrink: 0;
3913    }
3914
3915    .pd-sticky-btn {
3916        padding: 8px 16px;
3917        border-radius: 8px;
3918        font-size: 0.85rem;
3919        font-weight: 600;
3920        cursor: pointer;
3921        transition: all 0.2s ease;
3922        border: 0;
3923        display: inline-flex;
3924        align-items: center;
3925        justify-content: center;
3926        white-space: nowrap;
3927    }
3928
3929    .pd-sticky-btn-cart {
3930        background: #fff;
3931        color: #0d6efd;
3932        border: 1px solid #0d6efd;
3933    }
3934
3935    .pd-sticky-btn-cart:hover {
3936        background: rgba(13, 110, 253, 0.06);
3937    }
3938
3939    .pd-sticky-btn-chat {
3940        background: #fff;
3941        color: #64748b;
3942        border: 1px solid #cbd5e1;
3943        flex: 0.8;
3944    }
3945
3946    .pd-sticky-btn-chat:hover {
3947        background: #f8fafc;
3948        border-color: #94a3b8;
3949        color: #475569;
3950    }
3951
3952    .pd-sticky-btn-buy {
3953        background: #0d6efd;
3954        color: #fff;
3955        border: 1px solid #0d6efd;
3956        box-shadow: 0 2px 8px -2px rgba(13, 110, 253, 0.4);
3957    }
3958
3959    .pd-sticky-btn-buy:hover {
3960        filter: brightness(0.95);
3961    }
3962
3963    .pd-sticky-btn:disabled {
3964        opacity: 0.5;
3965        cursor: not-allowed;
3966    }
3967
3968    /* Hide on mobile (use existing FAB instead) */
3969    @media (max-width: 880px) {
3970        .pd-sticky-header {
3971            display: none;
3972        }
3973    }
3974
3975    /* === PRINT STYLES (for PDF Export) === */
3976    @media print {
3977
3978        /* Reset & Base */
3979        * {
3980            -webkit-print-color-adjust: exact !important;
3981            print-color-adjust: exact !important;
3982        }
3983
3984        body {
3985            background: white !important;
3986            margin: 0;
3987            padding: 0;
3988        }
3989
3990        /* Hide all navigation, buttons, and interactive elements */
3991        nav,
3992        header,
3993        footer,
3994        nav *,
3995        header *,
3996        footer *,
3997        .navbar,
3998        .navbar *,
3999        .nav-item,
4000        .nav-link,
4001        .pd-sticky-header,
4002        .pd-sticky-header.visible,
4003        .pd-breadcrumb,
4004        .pd-sidebar,
4005        .pd-mobile-fab,
4006        .pd-share-btn,
4007        .pd-sticky-share-btn,
4008        #pd-share-btn,
4009        .share-button,
4010        [data-share-btn],
4011        button,
4012        .btn-add-cart,
4013        .btn-buy,
4014        .pd-actions,
4015        .pd-compare-section,
4016        .pd-compare-btn,
4017        .pd-compare-info,
4018        #pd-compare-btn,
4019        .compare-note,
4020        .compare-container,
4021        .compare-dropdown,
4022        .compare-panel,
4023        .compare-wrapper,
4024        [data-compare],
4025        [id*="compare"],
4026        [class*="compare"],
4027        .pd-thumb-gallery,
4028        .pd-installment-card,
4029        .pd-installment-card2,
4030        .inst-alt-banner--compact,
4031        .qoala-banner-card,
4032        .tradein-compact-card,
4033        .pwp-deals-section,
4034        #pwp-deals-section,
4035        .pwp-trigger-badge,
4036        .pd-related-full,
4037        .pd-scroll-top,
4038        .stock-info-btn,
4039        .stock-popover,
4040        .pd-countdown-modern,
4041        .pd-share-modal-overlay,
4042        [id*="promo-"],
4043        .bottom-nav,
4044        .pd-buy-form,
4045        .pd-buy-card,
4046        .pd-extra-meta,
4047        .pd-reviews-section,
4048        #reviews,
4049        hr,
4050        .divider,
4051        .separator {
4052            display: none !important;
4053            visibility: hidden !important;
4054            opacity: 0 !important;
4055            height: 0 !important;
4056            max-height: 0 !important;
4057            overflow: hidden !important;
4058            margin: 0 !important;
4059            padding: 0 !important;
4060            border: none !important;
4061        }
4062
4063        /* Extra aggressive reset for any remaining borders */
4064        .pd-info-card *,
4065        .pd-meta-inline *,
4066        .pd-variants * {
4067            border: none !important;
4068            border-top: none !important;
4069            border-bottom: none !important;
4070        }
4071
4072        /* Layout restructure */
4073        .product-single {
4074            max-width: 100% !important;
4075            margin: 0 !important;
4076            padding: 0 !important;
4077            box-shadow: none !important;
4078        }
4079
4080        /* Reset all shadows and borders for print */
4081        * {
4082            box-shadow: none !important;
4083        }
4084
4085        .pd-top-layout {
4086            display: grid !important;
4087            grid-template-columns: 280px 1fr !important;
4088            gap: 24px !important;
4089            margin: 0 0 24px 0 !important;
4090            padding: 0 !important;
4091            page-break-inside: avoid;
4092            align-items: start !important;
4093        }
4094
4095        /* Print header with logo - centered and larger */
4096        .product-single::before {
4097            content: "" !important;
4098            display: block !important;
4099            width: 150px !important;
4100            height: 50px !important;
4101            background: url('/assets/img/logo.png') no-repeat center !important;
4102            background-size: contain !important;
4103            margin: 0 auto 20px !important;
4104            visibility: visible !important;
4105            opacity: 1 !important;
4106        }
4107
4108        /* Media card - left column */
4109        .pd-media-card {
4110            border: none !important;
4111            padding: 0 !important;
4112            margin: 0 !important;
4113            text-align: center;
4114            page-break-inside: avoid;
4115        }
4116
4117        /* Hide desktop image, use mobile slider for both desktop and mobile */
4118        .pd-main-image {
4119            display: none !important;
4120        }
4121
4122        /* Mobile slider - show first image only in print */
4123        .pd-mobile-slider {
4124            display: block !important;
4125            overflow: visible !important;
4126        }
4127
4128        .pd-mslide {
4129            display: none !important;
4130        }
4131
4132        .pd-mslide:first-child {
4133            display: block !important;
4134            border: 1px solid #e2e8f0 !important;
4135            max-width: 280px !important;
4136            margin: 0 auto !important;
4137            border-radius: 8px !important;
4138        }
4139
4140        .pd-mslide:first-child img {
4141            max-height: 280px !important;
4142            width: 100% !important;
4143            height: auto !important;
4144            object-fit: contain !important;
4145        }
4146
4147        /* Info card - right column */
4148        .pd-info-card {
4149            border: none !important;
4150            border-top: none !important;
4151            border-bottom: none !important;
4152            padding: 0 !important;
4153            margin: 0 !important;
4154            background: white !important;
4155            box-shadow: none !important;
4156        }
4157
4158        /* Title */
4159        .pd-title-row {
4160            display: block !important;
4161            margin-bottom: 10px !important;
4162            border: none !important;
4163            border-top: none !important;
4164            border-bottom: none !important;
4165            padding: 0 !important;
4166            box-shadow: none !important;
4167            text-decoration: none !important;
4168        }
4169
4170        /* Hide share button in print */
4171        .pd-title-row .pd-share-btn,
4172        .pd-title-row #pd-share-btn {
4173            display: none !important;
4174        }
4175
4176        .pd-title {
4177            font-size: 13pt !important;
4178            color: #000 !important;
4179            margin: 0 0 10px 0 !important;
4180            page-break-after: avoid;
4181            font-weight: 700 !important;
4182            line-height: 1.3 !important;
4183            border: none !important;
4184            border-top: none !important;
4185            border-bottom: none !important;
4186            padding-bottom: 0 !important;
4187            box-shadow: none !important;
4188            text-decoration: none !important;
4189        }
4190
4191        /* Price and QR container - side by side */
4192        .pd-price-qr-container {
4193            display: flex !important;
4194            gap: 16px !important;
4195            align-items: flex-start !important;
4196            margin-bottom: 14px !important;
4197            box-shadow: none !important;
4198            border: none !important;
4199            text-decoration: none !important;
4200        }
4201
4202        /* Price block - left side */
4203        .pd-price-block {
4204            flex: 1 !important;
4205            margin: 0 !important;
4206            padding-bottom: 0 !important;
4207            border-bottom: none !important;
4208            box-shadow: none !important;
4209        }
4210
4211        .pd-price-row {
4212            margin-bottom: 8px !important;
4213            border: none !important;
4214            border-top: none !important;
4215            border-bottom: none !important;
4216            padding: 0 !important;
4217        }
4218
4219        /* Hide all empty or unnecessary elements in price row */
4220        .pd-price-row>span:empty,
4221        .pd-price-row>.sold-inline,
4222        #pd-sold-inline {
4223            display: none !important;
4224        }
4225
4226        .pd-price-current {
4227            font-size: 18pt !important;
4228            color: #0d6efd !important;
4229        }
4230
4231        /* Show price range for variant products in print */
4232        .pd-price-current[data-price-range]::after {
4233            content: attr(data-price-range) !important;
4234            display: block !important;
4235            font-size: 11pt !important;
4236            color: #64748b !important;
4237            margin-top: 4px !important;
4238            font-weight: normal !important;
4239        }
4240
4241        /* Hide 'Range:' prefix text */
4242        .pd-price-current[data-price-range]::after {
4243            content: attr(data-price-range) !important;
4244        }
4245
4246        .pd-price-original {
4247            font-size: 12pt !important;
4248            color: #64748b !important;
4249        }
4250
4251        .pd-discount-badge {
4252            font-size: 10pt !important;
4253            padding: 2px 6px !important;
4254        }
4255
4256        /* QR Code section - right side beside price */
4257        .pd-qr-print {
4258            display: block !important;
4259            flex: 0 0 100px !important;
4260            margin: 0 !important;
4261            padding: 8px !important;
4262            background: #f8fafc !important;
4263            border-radius: 8px !important;
4264            text-align: center !important;
4265            page-break-inside: avoid !important;
4266            border: 1px solid #cbd5e1 !important;
4267        }
4268
4269        .pd-qr-label {
4270            font-size: 6.5pt !important;
4271            color: #64748b !important;
4272            margin-bottom: 5px !important;
4273            line-height: 1.2 !important;
4274            font-weight: 600 !important;
4275        }
4276
4277        .pd-qr-image {
4278            width: 80px !important;
4279            height: 80px !important;
4280            display: block !important;
4281            margin: 0 auto !important;
4282        }
4283
4284        /* Meta info */
4285        .pd-meta-inline {
4286            display: flex !important;
4287            gap: 12px !important;
4288            margin-bottom: 0 !important;
4289            padding-bottom: 14px !important;
4290            font-size: 10pt !important;
4291            border: none !important;
4292            border-top: none !important;
4293            border-bottom: none !important;
4294            padding-top: 0 !important;
4295            box-shadow: none !important;
4296            text-decoration: none !important;
4297            background: transparent !important;
4298        }
4299
4300        /* Hide stock badge in print */
4301        .stock-badge,
4302        .stock-info-btn {
4303            display: none !important;
4304        }
4305
4306        .sku {
4307            color: #64748b !important;
4308        }
4309
4310        /* Hide sold badge if empty/zero */
4311        .sold-inline {
4312            display: none !important;
4313        }
4314
4315        /* Hide variant summary section in print */
4316        .pd-variant-combined,
4317        #pd-variant-combined,
4318        .pd-variant-summary,
4319        [data-role="sold-chip"] {
4320            display: none !important;
4321        }
4322
4323        /* Hide compare section completely in print */
4324        .pd-compare-section,
4325        .pd-compare-btn,
4326        #pd-compare-btn,
4327        .pd-compare-info,
4328        .compare-note,
4329        .compare-text,
4330        .compare-remove {
4331            display: none !important;
4332            visibility: hidden !important;
4333            height: 0 !important;
4334            margin: 0 !important;
4335            padding: 0 !important;
4336            overflow: hidden !important;
4337        }
4338
4339        /* Variants - show all options with selected highlighted */
4340        .pd-variants {
4341            margin: 0 !important;
4342            padding: 0 !important;
4343            page-break-inside: avoid !important;
4344            border: none !important;
4345            border-top: none !important;
4346            border-bottom: none !important;
4347            box-shadow: none !important;
4348            background: transparent !important;
4349        }
4350
4351        /* Add 'Variant:' label before variant groups */
4352        .pd-variants::before {
4353            content: "Variant:" !important;
4354            display: block !important;
4355            font-size: 11pt !important;
4356            font-weight: 700 !important;
4357            color: #0f172a !important;
4358            margin-bottom: 10px !important;
4359            border: none !important;
4360            padding: 0 !important;
4361            border-top: none !important;
4362            border-bottom: none !important;
4363        }
4364
4365        .v-group {
4366            display: flex !important;
4367            align-items: center !important;
4368            gap: 8px !important;
4369            margin-bottom: 8px !important;
4370            line-height: 1 !important;
4371            page-break-inside: avoid !important;
4372            border: none !important;
4373            padding: 0 !important;
4374        }
4375
4376        .v-group:last-child {
4377            margin-bottom: 0 !important;
4378        }
4379
4380        .v-label {
4381            font-weight: 700 !important;
4382            margin: 0 !important;
4383            font-size: 9pt !important;
4384            color: #475569 !important;
4385            min-width: 60px !important;
4386            flex-shrink: 0 !important;
4387            border: none !important;
4388            padding: 0 !important;
4389        }
4390
4391        .v-options {
4392            display: flex !important;
4393            gap: 6px !important;
4394            flex-wrap: wrap !important;
4395            border: none !important;
4396            padding: 0 !important;
4397            margin: 0 !important;
4398        }
4399
4400        .v-chip {
4401            border: 1px solid #cbd5e1 !important;
4402            padding: 3px 10px !important;
4403            font-size: 9pt !important;
4404            background: #f8fafc !important;
4405            border-radius: 6px !important;
4406            display: inline-flex !important;
4407            align-items: center !important;
4408            page-break-inside: avoid !important;
4409        }
4410
4411        /* Highlight selected variant with blue background */
4412        .v-chip.selected {
4413            background: #eff6ff !important;
4414            border-color: #2563eb !important;
4415            font-weight: 600 !important;
4416        }
4417
4418        /* Hide radio inputs */
4419        .v-chip input[type="radio"] {
4420            display: none !important;
4421        }
4422
4423        /* Hide "Habis" badge in print */
4424        .v-chip .chip-badge {
4425            display: none !important;
4426        }
4427
4428        /* Short description - HIDDEN in print */
4429        .pd-short-desc {
4430            display: none !important;
4431        }
4432
4433        /* QR Code section - right side beside price */
4434        .pd-qr-print {
4435            display: block !important;
4436            flex: 0 0 100px !important;
4437            margin: 0 !important;
4438            padding: 8px !important;
4439            background: #f8fafc !important;
4440            border-radius: 8px !important;
4441            text-align: center !important;
4442            page-break-inside: avoid !important;
4443            border: 1px solid #cbd5e1 !important;
4444        }
4445
4446        .pd-qr-label {
4447            font-size: 6.5pt !important;
4448            color: #64748b !important;
4449            margin-bottom: 5px !important;
4450            line-height: 1.2 !important;
4451            font-weight: 600 !important;
4452        }
4453
4454        .pd-qr-image {
4455            width: 80px !important;
4456            height: 80px !important;
4457            display: block !important;
4458            margin: 0 auto !important;
4459        }
4460
4461        /* Full description - below 2 column layout */
4462        .pd-full-description {
4463            border: none !important;
4464            padding: 0 !important;
4465            margin: 24px 0 0 0 !important;
4466            page-break-before: avoid;
4467            grid-column: 1 / -1 !important;
4468        }
4469
4470        .pd-full-desc-title {
4471            font-size: 13pt !important;
4472            font-weight: 700 !important;
4473            margin: 0 0 12px 0 !important;
4474            color: #000 !important;
4475            border-top: none !important;
4476            border-bottom: none !important;
4477            padding-top: 16px !important;
4478        }
4479
4480        .pd-full-desc-body {
4481            font-size: 10pt !important;
4482            line-height: 1.6 !important;
4483            color: #334155 !important;
4484        }
4485
4486        .pd-full-desc-body img {
4487            max-height: 200px !important;
4488            width: auto !important;
4489            page-break-inside: avoid;
4490            display: none !important;
4491            /* Hide images in print to save space */
4492        }
4493
4494        /* Also target #deskripsi img if exists */
4495        #deskripsi img {
4496            max-width: 350px !important;
4497            height: auto !important;
4498        }
4499
4500        .pd-full-desc-body table {
4501            border-collapse: collapse !important;
4502            width: 100% !important;
4503            margin: 12px 0 !important;
4504            font-size: 9pt !important;
4505        }
4506
4507        .pd-full-desc-body th,
4508        .pd-full-desc-body td {
4509            border: 1px solid #cbd5e1 !important;
4510            padding: 6px 8px !important;
4511        }
4512
4513        /* Print footer */
4514        .product-single::after {
4515            content: "Plaza IT - plazait.co.id | Printed: " attr(data-print-date);
4516            display: block;
4517            margin-top: 30px;
4518            padding-top: 16px;
4519            border-top: 1px solid #e2e8f0;
4520            font-size: 9pt;
4521            color: #64748b;
4522            text-align: center;
4523        }
4524
4525        /* Page breaks */
4526        .pd-media-card,
4527        .pd-price-block,
4528        .pd-full-desc-title {
4529            page-break-after: avoid;
4530        }
4531
4532        .pd-full-description {
4533            page-break-before: auto;
4534        }
4535    }
4536
4537    /* === Breadcrumb (truncate last item) === */
4538    .pd-breadcrumb {
4539        display: flex;
4540        flex-wrap: nowrap;
4541        align-items: center;
4542        gap: .5rem;
4543        font-size: .72rem;
4544        margin: .7rem 0 1.2rem .5rem;
4545        color: var(--pd-muted);
4546        overflow: hidden;
4547    }
4548
4549    .pd-breadcrumb a {
4550        color: var(--pd-accent);
4551        text-decoration: none
4552    }
4553
4554    .pd-breadcrumb a:hover {
4555        text-decoration: underline
4556    }
4557
4558    .pd-breadcrumb a,
4559    .pd-breadcrumb span {
4560        flex: 0 0 auto
4561    }
4562
4563    .pd-breadcrumb .current {
4564        flex: 1 1 auto;
4565        min-width: 0;
4566        white-space: nowrap;
4567        overflow: hidden;
4568        text-overflow: ellipsis;
4569        font-weight: 600;
4570        color: var(--pd-dark);
4571        padding-right: 2px;
4572    }
4573
4574    /* === Top layout === */
4575    .pd-top-layout {
4576        display: grid;
4577        gap: var(--pd-gap);
4578        grid-template-columns: minmax(260px, 340px) minmax(460px, 1fr) 300px;
4579        align-items: start;
4580        margin-bottom: 2.4rem;
4581    }
4582
4583
4584    /* === Media column === */
4585    .pd-media-card {
4586        background: #fff;
4587        border: 1px solid var(--pd-border);
4588        border-radius: var(--pd-radius);
4589        padding: 1rem 1rem 1.2rem;
4590    }
4591
4592    .pd-main-image {
4593        margin: 0 0 .8rem;
4594        border: 1px solid var(--pd-soft-border);
4595        border-radius: 10px;
4596        overflow: hidden;
4597        background: #fff;
4598        position: relative
4599    }
4600
4601    .pd-main-image img {
4602        width: 100%;
4603        display: block;
4604        object-fit: contain;
4605        aspect-ratio: 1/1
4606    }
4607
4608    /* Gallery Thumbnails */
4609    .pd-thumb-gallery {
4610        margin-top: .6rem;
4611        display: flex;
4612        flex-wrap: wrap;
4613        gap: .55rem
4614    }
4615
4616    .pd-thumb-btn {
4617        border: 1px solid var(--pd-soft-border);
4618        background: #fff;
4619        cursor: pointer;
4620        width: 64px;
4621        height: 64px;
4622        padding: 2px;
4623        display: flex;
4624        align-items: center;
4625        justify-content: center;
4626        overflow: hidden;
4627        border-radius: 8px;
4628        transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
4629        position: relative;
4630    }
4631
4632    .pd-thumb-btn img {
4633        max-width: 100%;
4634        max-height: 100%;
4635        object-fit: contain;
4636        display: block
4637    }
4638
4639    .pd-thumb-btn:hover {
4640        border-color: var(--pd-accent)
4641    }
4642
4643    .pd-thumb-btn.active {
4644        border-color: var(--pd-accent);
4645        box-shadow: 0 0 0 2px rgba(13, 110, 253, .25)
4646    }
4647
4648    .pd-thumb-btn:focus-visible {
4649        outline: 2px solid var(--pd-accent);
4650        outline-offset: 2px
4651    }
4652
4653    .pd-thumb-btn:active {
4654        transform: scale(.96)
4655    }
4656
4657    /* === Info column === */
4658    .pd-info-card {
4659        background: #fff;
4660        border: 1px solid var(--pd-border);
4661        border-radius: var(--pd-radius);
4662        padding: 1.4rem 1.6rem 2rem;
4663    }
4664
4665    .pd-title {
4666        font-size: 1.5em;
4667        line-height: 3.25;
4668        font-weight: 600;
4669        color: black;
4670        font-family: 'Orbitron', sans-serif;
4671    }
4672
4673    .pd-price-block {
4674        margin: 0 0 1rem
4675    }
4676
4677    .pd-price-row {
4678        display: flex;
4679        flex-wrap: wrap;
4680        align-items: center;
4681        gap: .75rem;
4682        margin: 0 0 .35rem
4683    }
4684
4685    .pd-price-current {
4686        font-size: 2rem;
4687        font-weight: 700;
4688        color: var(--pd-accent)
4689    }
4690
4691    .pd-price-original {
4692        font-size: .9rem;
4693        text-decoration: line-through;
4694        color: #94a3b8
4695    }
4696
4697    .pd-discount-badge {
4698        background: var(--pd-danger);
4699        color: #fff;
4700        font-size: .68rem;
4701        padding: 4px 8px 3px;
4702        font-weight: 600;
4703        border-radius: 6px;
4704        letter-spacing: .5px
4705    }
4706
4707    .pd-meta-inline {
4708        display: flex;
4709        flex-wrap: wrap;
4710        gap: .9rem;
4711        align-items: center;
4712        font-size: .63rem;
4713        letter-spacing: .6px;
4714        text-transform: uppercase;
4715        font-weight: 600
4716    }
4717
4718    .stock-badge {
4719        padding: 4px 10px;
4720        border-radius: 24px;
4721        background: var(--pd-soft);
4722        color: var(--pd-muted);
4723        display: inline-block;
4724        line-height: 1;
4725        vertical-align: middle
4726    }
4727
4728    .stock-badge.in {
4729        background: var(--pd-success-bg);
4730        color: var(--pd-success-text)
4731    }
4732
4733    .stock-badge.out {
4734        background: var(--pd-danger-bg);
4735        color: var(--pd-danger-text)
4736    }
4737
4738    .digital-badge {
4739        padding: 4px 10px;
4740        border-radius: 24px;
4741        background: linear-gradient(135deg, #FF5722 0%, #764ba2 100%);
4742        color: #fff;
4743        font-size: .63rem;
4744        font-weight: 600;
4745        letter-spacing: .6px;
4746        text-transform: uppercase;
4747        display: inline-block;
4748        line-height: 1;
4749        vertical-align: middle;
4750        border: none
4751    }
4752
4753    .sku {
4754        color: var(--pd-muted)
4755    }
4756
4757    .pd-short-desc {
4758        font-size: .85rem;
4759        line-height: 1.5;
4760        margin: 0 0 1.2rem;
4761        color: #334155;
4762        overflow-wrap: anywhere
4763    }
4764
4765    .pd-short-desc p {
4766        margin: 0 0 .75rem
4767    }
4768
4769    .pd-short-desc ul,
4770    .pd-short-desc ol {
4771        margin: .5rem 0 .9rem 1.1rem;
4772        font-size: .85rem;
4773        line-height: 1.45
4774    }
4775
4776    /* Meta row for sold and rating badges */
4777    .pd-meta-row {
4778        display: flex;
4779        align-items: center;
4780        flex-wrap: wrap;
4781        gap: 5px;
4782        margin-top: 8px;
4783        margin-bottom: 4px;
4784    }
4785
4786    /* Sales (Terjual) badge inline */
4787    .sold-inline {
4788        display: inline-block;
4789        font-size: .65rem;
4790        font-weight: 600;
4791        color: #475569;
4792        background: #f1f5f9;
4793        padding: 3px 8px 4px;
4794        border-radius: 6px;
4795        letter-spacing: .4px;
4796        margin-left: 0;
4797    }
4798
4799    /* Price row divider */
4800    .price-divider {
4801        display: inline-block;
4802        margin: 0 .4rem;
4803        color: #cbd5e1;
4804        font-weight: 400;
4805    }
4806
4807    /* Rating badge inline */
4808    .rating-inline {
4809        display: inline-flex;
4810        align-items: center;
4811        gap: 4px;
4812        padding: 3px 8px 4px;
4813        background: #fff7ed;
4814        border-radius: 6px;
4815        font-size: .65rem;
4816        font-weight: 600;
4817        color: #ea580c;
4818        text-decoration: none;
4819        transition: all .2s ease;
4820        cursor: pointer;
4821        margin-left: .5rem;
4822        white-space: nowrap;
4823    }
4824
4825    .rating-inline:hover {
4826        background: #ffedd5;
4827        transform: translateY(-1px);
4828        box-shadow: 0 2px 4px rgba(234, 88, 12, 0.1);
4829    }
4830
4831    .rating-inline .star-icon {
4832        font-size: .75rem;
4833        color: #f59e0b;
4834        line-height: 1;
4835    }
4836
4837    .rating-inline .rating-value {
4838        color: #ea580c;
4839    }
4840
4841    .rating-inline .rating-badge-count {
4842        color: #9a3412;
4843        opacity: 0.85;
4844    }
4845
4846    @media (max-width: 640px) {
4847        .rating-inline {
4848            font-size: .65rem;
4849            padding: 3px 8px 4px;
4850        }
4851
4852        .rating-inline .star-icon {
4853            font-size: .7rem;
4854        }
4855    }
4856
4857    /* Highlight animation for review section */
4858    @keyframes highlightFlash {
4859
4860        0%,
4861        100% {
4862            background-color: transparent;
4863        }
4864
4865        50% {
4866            background-color: rgba(251, 146, 60, 0.1);
4867        }
4868    }
4869
4870    .highlight-flash {
4871        animation: highlightFlash 1.5s ease;
4872    }
4873
4874    /* === Variant chips === */
4875    .pd-variants {
4876        margin-top: 14px
4877    }
4878
4879    .v-group {
4880        margin-bottom: 12px
4881    }
4882
4883    .v-label {
4884        font-weight: 600;
4885        margin-bottom: 6px
4886    }
4887
4888    .v-options {
4889        display: flex;
4890        flex-wrap: wrap;
4891        gap: 8px
4892    }
4893
4894    .v-chip {
4895        display: inline-flex;
4896        align-items: center;
4897        gap: 8px;
4898        padding: 6px 10px;
4899        border: 1px solid #d6d9de;
4900        border-radius: 999px;
4901        cursor: pointer;
4902        background: #fff;
4903        transition: .15s ease;
4904        user-select: none
4905    }
4906
4907    .v-chip:hover {
4908        border-color: #9aa3af;
4909        box-shadow: 0 1px 0 rgba(0, 0, 0, .04)
4910    }
4911
4912    .v-chip.selected {
4913        border-color: #2563eb;
4914        background: #eff6ff
4915    }
4916
4917    .v-chip.disabled {
4918        opacity: .45;
4919        cursor: not-allowed
4920    }
4921
4922    .v-chip.out {
4923        border-style: dashed
4924    }
4925
4926    .v-chip input {
4927        display: none
4928    }
4929
4930    .v-chip .dot {
4931        width: 14px;
4932        height: 14px;
4933        border-radius: 50%;
4934        background: var(--dot, #999);
4935        box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .2)
4936    }
4937
4938    .v-chip .dot--neutral {
4939        background: #9aa3af
4940    }
4941
4942    .v-chip .txt {
4943        font-size: .95rem;
4944        white-space: nowrap
4945    }
4946
4947    .v-chip .chip-badge {
4948        margin-left: 2px;
4949        font-size: .72rem;
4950        line-height: 1;
4951        padding: 3px 6px;
4952        border-radius: 6px;
4953        background: #fee2e2;
4954        color: #991b1b;
4955        border: 1px solid #fecaca
4956    }
4957
4958    .pd-variant-summary {
4959        margin-top: 8px;
4960        color: #475569;
4961        font-size: .92rem
4962    }
4963
4964    .pd-variant-summary .vs-item {
4965        display: inline-flex;
4966        gap: 4px;
4967        margin-right: 10px
4968    }
4969
4970    /* === Buy form (di sidebar kanan untuk desktop) === */
4971    .pd-buy-form {
4972        display: flex;
4973        flex-wrap: wrap;
4974        align-items: flex-end;
4975        gap: 1rem 1.4rem;
4976        margin: 0
4977    }
4978
4979    .qty-label {
4980        display: block;
4981        font-size: .6rem;
4982        font-weight: 600;
4983        letter-spacing: .7px;
4984        text-transform: uppercase;
4985        color: var(--pd-muted);
4986        margin-bottom: .35rem
4987    }
4988
4989    .pd-buy-form input[type=number] {
4990        width: 90px;
4991        padding: .55rem .6rem;
4992        border: 1px solid var(--pd-soft-border);
4993        border-radius: 6px;
4994        font-size: .85rem
4995    }
4996
4997    .pd-actions {
4998        display: flex;
4999        gap: .8rem;
5000        flex-wrap: wrap
5001    }
5002
5003    /* Tombol senada tema */
5004    .btn-add-cart,
5005    .btn-buy,
5006    .btn-chat-icon {
5007        cursor: pointer;
5008        border: 0;
5009        font-weight: 700;
5010        border-radius: 10px;
5011        font-size: .9rem;
5012        display: inline-flex;
5013        align-items: center;
5014        justify-content: center;
5015        gap: .4rem;
5016        min-height: 44px;
5017        padding: 0 1rem;
5018        transition: var(--pd-transition)
5019    }
5020
5021    .btn-add-cart {
5022        background: var(--brand-500);
5023        color: #fff;
5024        box-shadow: 0 2px 8px -2px rgba(13, 110, 253, .35)
5025    }
5026
5027    .btn-add-cart:hover {
5028        filter: brightness(.95)
5029    }
5030
5031    .btn-buy {
5032        background: #fff;
5033        color: var(--brand-500);
5034        border: 2px solid var(--brand-500)
5035    }
5036
5037    .btn-buy:hover {
5038        background: rgba(13, 110, 253, .06)
5039    }
5040
5041    .btn-chat-icon {
5042        background: #fff;
5043        color: #fb923c;
5044        border: 2px solid #fb923c;
5045        padding: 0;
5046        width: 44px;
5047        min-width: 44px
5048    }
5049
5050    .btn-chat-icon:hover {
5051        background: rgba(251, 146, 60, 0.06);
5052        border-color: #f97316
5053    }
5054
5055    .btn-chat-icon svg {
5056        width: 20px;
5057        height: 20px;
5058        flex-shrink: 0
5059    }
5060
5061    .btn-add-cart:disabled,
5062    .btn-buy:disabled,
5063    .btn-chat-icon:disabled {
5064        opacity: .5;
5065        cursor: not-allowed
5066    }
5067
5068    /* Buy with Voucher Button - Cleaner, more compact design */
5069    .btn-buy-voucher {
5070        cursor: pointer;
5071        border: 0;
5072        font-weight: 600;
5073        border-radius: 10px;
5074        display: inline-flex;
5075        align-items: center;
5076        justify-content: space-between;
5077        gap: 10px;
5078        min-height: 44px;
5079        padding: 0 14px 0 12px;
5080        transition: all 0.3s ease;
5081        background: linear-gradient(135deg, #7c3aed 0%, #9333ea 100%);
5082        color: #fff;
5083        box-shadow: 0 3px 10px rgba(124, 58, 237, 0.3);
5084        position: relative;
5085        overflow: hidden;
5086        flex: 1 1 auto
5087    }
5088
5089    .btn-buy-voucher:hover {
5090        transform: translateY(-2px);
5091        box-shadow: 0 5px 16px rgba(124, 58, 237, 0.4)
5092    }
5093
5094    .btn-buy-voucher:active {
5095        transform: translateY(0);
5096        box-shadow: 0 2px 6px rgba(124, 58, 237, 0.3)
5097    }
5098
5099    .btn-buy-voucher .bv-icon {
5100        font-size: 20px;
5101        line-height: 1;
5102        flex-shrink: 0
5103    }
5104
5105    .btn-buy-voucher .bv-text {
5106        display: flex;
5107        flex-direction: column;
5108        align-items: flex-start;
5109        gap: 2px;
5110        flex: 1;
5111        min-width: 0;
5112        font-size: 14px;
5113        line-height: 1.2
5114    }
5115
5116    .btn-buy-voucher .bv-text small {
5117        font-size: 10px;
5118        opacity: 0.85;
5119        font-weight: 500;
5120        letter-spacing: 0.3px;
5121        font-family: monospace
5122    }
5123
5124    .btn-buy-voucher .bv-save {
5125        font-size: 12px;
5126        font-weight: 700;
5127        background: rgba(255, 255, 255, 0.25);
5128        padding: 4px 8px;
5129        border-radius: 6px;
5130        white-space: nowrap;
5131        flex-shrink: 0
5132    }
5133
5134    /* Extra meta (opsional) */
5135    .pd-extra-meta {
5136        background: var(--pd-soft);
5137        border: 1px solid var(--pd-border);
5138        border-radius: 10px;
5139        padding: .85rem 1rem;
5140        display: grid;
5141        gap: .45rem;
5142        font-size: .7rem;
5143        line-height: 1.3
5144    }
5145
5146    .pd-extra-meta span {
5147        font-weight: 600;
5148        color: var(--pd-muted);
5149        margin-right: .3rem
5150    }
5151
5152    .pd-extra-meta a {
5153        color: var(--pd-accent);
5154        text-decoration: none
5155    }
5156
5157    .pd-extra-meta a:hover {
5158        text-decoration: underline
5159    }
5160
5161    /* === Sidebar === */
5162    .pd-sidebar {
5163        display: flex;
5164        flex-direction: column;
5165        gap: 1.2rem
5166    }
5167
5168    .pd-side-card {
5169        background: #fff;
5170        border: 1px solid var(--pd-border);
5171        border-radius: var(--pd-radius);
5172        padding: 1rem 1.1rem 1.2rem
5173    }
5174
5175    .pd-side-card h3 {
5176        margin: 0 0 .7rem;
5177        font-size: .8rem;
5178        font-weight: 700;
5179        letter-spacing: .6px;
5180        text-transform: uppercase;
5181        color: var(--pd-dark)
5182    }
5183
5184    .pd-side-card ul {
5185        list-style: none;
5186        margin: 0;
5187        padding: 0;
5188        display: grid;
5189        gap: .45rem;
5190        font-size: .7rem;
5191        color: #334155
5192    }
5193
5194    .pd-side-card li {
5195        position: relative;
5196        padding-left: 13px;
5197        line-height: 1.25
5198    }
5199
5200    .pd-side-card li:before {
5201        content: '';
5202        width: 6px;
5203        height: 6px;
5204        background: var(--pd-accent);
5205        border-radius: 50%;
5206        position: absolute;
5207        left: 0;
5208        top: .45rem
5209    }
5210
5211    .pay-logos {
5212        display: flex;
5213        gap: .4rem;
5214        flex-wrap: wrap;
5215        margin: .1rem 0 .4rem
5216    }
5217
5218    .pay-logos span {
5219        font-size: .55rem;
5220        background: var(--pd-soft);
5221        border: 1px solid var(--pd-soft-border);
5222        padding: .35rem .55rem;
5223        border-radius: 6px;
5224        font-weight: 600;
5225        letter-spacing: .5px
5226    }
5227
5228    /* Buy card hanya desktop (mobile pakai FAB) */
5229    .pd-buy-card {
5230        display: block
5231    }
5232
5233    @media (max-width:880px) {
5234        .pd-buy-card {
5235            display: none
5236        }
5237
5238        .pd-title-row {
5239            padding-right: 0 !important;
5240        }
5241    }
5242
5243    /* === Full Description === */
5244    .pd-full-description {
5245        background: #fff;
5246        border: 1px solid var(--pd-border);
5247        border-radius: var(--pd-radius);
5248        padding: 1.6rem 1.9rem .6rem;
5249        margin: 0 0 .8rem
5250    }
5251
5252    .pd-full-desc-title {
5253        margin: 0 0 1.1rem;
5254        font-size: 1.15rem;
5255        font-weight: 600;
5256        color: var(--pd-dark)
5257    }
5258
5259    .pd-full-desc-body {
5260        font-size: .9rem;
5261        line-height: 1.6;
5262        color: #334155;
5263        overflow-wrap: anywhere
5264    }
5265
5266    .pd-full-desc-body p {
5267        margin: 0 0 1rem
5268    }
5269
5270    .pd-full-desc-body ul,
5271    .pd-full-desc-body ol {
5272        margin: .5rem 0 1rem 1.2rem
5273    }
5274
5275    .pd-full-desc-body table {
5276        width: 100%;
5277        border-collapse: collapse;
5278        margin: 1rem 0 1.2rem
5279    }
5280
5281    .pd-full-desc-body table,
5282    .pd-full-desc-body th,
5283    .pd-full-desc-body td {
5284        border-bottom: 1px dotted #cbd5e1;
5285        vertical-align: top
5286    }
5287
5288    .pd-full-desc-body th,
5289    .pd-full-desc-body td {
5290        padding: .45rem .55rem;
5291        text-align: left
5292    }
5293
5294    .pd-full-desc-body img {
5295        max-width: 100%;
5296        height: auto;
5297        display: block;
5298    }
5299
5300    /* === Related (container) === */
5301    .pd-related-full {
5302        background: #fff;
5303        border: 1px solid var(--pd-border);
5304        border-radius: var(--pd-radius);
5305        padding: 1.4rem 1.6rem 1.9rem;
5306        margin: 0 0 2rem;
5307    }
5308
5309    .pd-related-title {
5310        margin: 0 0 1.1rem;
5311        font-size: 1.05rem;
5312        font-weight: 600;
5313        color: var(--pd-dark)
5314    }
5315
5316    /* Related Grid (dirapikan: gabung selector agar tidak duplikat) */
5317    .pd-related-grid,
5318    .pd-related-grid--full {
5319        display: grid !important;
5320        gap: 16px !important;
5321        grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)) !important;
5322        align-items: stretch;
5323    }
5324
5325    /* Fallback jika grid tidak didukung */
5326    @supports not (display:grid) {
5327
5328        .pd-related-grid,
5329        .pd-related-grid--full {
5330            display: flex !important;
5331            flex-wrap: wrap
5332        }
5333
5334        .pd-related-grid .pd-related-card,
5335        .pd-related-grid--full .pd-related-card {
5336            flex: 0 0 calc(20% - 16px);
5337            max-width: calc(20% - 16px)
5338        }
5339
5340        @media (max-width:1100px) {
5341
5342            .pd-related-grid .pd-related-card,
5343            .pd-related-grid--full .pd-related-card {
5344                flex: 0 0 calc(25% - 16px);
5345                max-width: calc(25% - 16px)
5346            }
5347        }
5348
5349        @media (max-width:820px) {
5350
5351            .pd-related-grid .pd-related-card,
5352            .pd-related-grid--full .pd-related-card {
5353                flex: 0 0 calc(33.333% - 16px);
5354                max-width: calc(33.333% - 16px)
5355            }
5356        }
5357
5358        @media (max-width:580px) {
5359
5360            .pd-related-grid .pd-related-card,
5361            .pd-related-grid--full .pd-related-card {
5362                flex: 0 0 calc(50% - 16px);
5363                max-width: calc(50% - 16px)
5364            }
5365        }
5366    }
5367
5368    /* Related Card */
5369    .pd-related-card {
5370        display: flex;
5371        flex-direction: column;
5372        border: 1px solid var(--pd-soft-border);
5373        background: #fff;
5374        border-radius: 10px;
5375        text-decoration: none;
5376        color: inherit;
5377        overflow: hidden;
5378        transition: var(--pd-transition);
5379        position: relative;
5380        min-width: 0;
5381    }
5382
5383    .pd-related-card:hover {
5384        transform: translateY(-4px);
5385        box-shadow: var(--pd-shadow)
5386    }
5387
5388    .pd-related-card .thumb {
5389        aspect-ratio: 1/1;
5390        background: #f1f5f9;
5391        overflow: hidden;
5392        position: relative
5393    }
5394
5395    .pd-related-card img {
5396        width: 100%;
5397        height: 100%;
5398        object-fit: cover;
5399        display: block
5400    }
5401
5402    .mini-disc {
5403        position: absolute;
5404        top: 6px;
5405        left: 6px;
5406        background: #dc2626;
5407        color: #fff;
5408        font-size: .55rem;
5409        padding: 3px 6px 2px;
5410        border-radius: 4px;
5411        font-weight: 600
5412    }
5413
5414    .pd-related-card .info {
5415        padding: .55rem .65rem .75rem;
5416        display: flex;
5417        flex-direction: column;
5418        gap: .25rem
5419    }
5420
5421    .pd-related-card h3 {
5422        font-size: .68rem;
5423        line-height: 1.25;
5424        margin: 0;
5425        height: 2.5em;
5426        overflow: hidden;
5427        font-weight: 600;
5428        color: #334155;
5429        display: -webkit-box;
5430        -webkit-line-clamp: 2;
5431        -webkit-box-orient: vertical
5432    }
5433
5434    .pd-related-card .price {
5435        font-size: .7rem;
5436        font-weight: 600;
5437        color: var(--pd-accent)
5438    }
5439
5440    .pd-related-card .sold {
5441        display: block;
5442        font-size: .6rem;
5443        font-weight: 600;
5444        color: #475569;
5445        margin-top: 2px;
5446        letter-spacing: .3px;
5447        background: #f1f5f9;
5448        padding: 2px 6px 3px;
5449        border-radius: 5px;
5450        width: max-content;
5451    }
5452
5453    .pd-related-card .price .final {
5454        font-size: .82rem;
5455        font-weight: 700;
5456        color: #0d6efd;
5457    }
5458
5459    .pd-related-card .price .ori {
5460        font-size: .6rem;
5461        text-decoration: line-through;
5462        color: #94a3b8;
5463        font-weight: 500;
5464    }
5465
5466    /* === Mobile slider (scroll-snap) — gambar utama tetap tampil === */
5467    .pd-mobile-slider {
5468        display: none
5469    }
5470
5471    .pd-mobile-slider img {
5472        width: 100%;
5473        display: block;
5474        object-fit: contain;
5475        aspect-ratio: 1/1
5476    }
5477
5478    /* Gallery counter badge */
5479    .pd-gallery-counter {
5480        position: absolute;
5481        bottom: 12px;
5482        left: 12px;
5483        background: rgba(255, 255, 255, 0.25);
5484        color: #9E9E9E;
5485        padding: 4px 10px;
5486        border-radius: 10px;
5487        font-size: 12px;
5488        font-weight: 600;
5489        z-index: 100;
5490        backdrop-filter: blur(6px);
5491        -webkit-backdrop-filter: blur(6px);
5492        font-variant-numeric: tabular-nums;
5493        pointer-events: none;
5494        display: none;
5495        box-shadow: 0 1px 4px rgba(0, 0, 0, .15);
5496        line-height: 1;
5497        border: 1px solid rgba(0, 0, 0, 0.08);
5498    }
5499
5500    @media (max-width:640px) {
5501        .pd-media-card {
5502            border: 0;
5503            padding: 0 1rem 0;
5504        }
5505
5506        .pd-info-card {
5507            border: 0;
5508            padding: 0 1.3rem 0;
5509        }
5510
5511        .pd-side-card {
5512            flex: 1 1 !important;
5513        }
5514
5515        .pd-top-layout {
5516            gap: 0;
5517            margin-bottom: 0;
5518        }
5519
5520        .pd-variants {
5521            margin-bottom: 1.5rem;
5522        }
5523
5524        .pd-main-image {
5525            display: none
5526        }
5527
5528        .pd-gallery-counter {
5529            display: block
5530        }
5531
5532        .pd-mobile-slider-wrapper {
5533            position: relative;
5534            margin-bottom: .6rem;
5535        }
5536
5537        .pd-mobile-slider {
5538            display: flex;
5539            gap: 8px;
5540            overflow-x: auto;
5541            scroll-snap-type: x mandatory;
5542            -webkit-overflow-scrolling: touch;
5543        }
5544
5545        .pd-mslide {
5546            min-width: 100%;
5547            flex: 0 0 100%;
5548            scroll-snap-align: center;
5549            border: 1px solid var(--pd-soft-border);
5550            border-radius: 10px;
5551            overflow: hidden;
5552            background: #fff
5553        }
5554
5555        .pd-thumb-gallery {
5556            display: none
5557        }
5558
5559        /* hide thumbnails on mobile */
5560    }
5561
5562    /* === Mobile Floating Action Bar === */
5563    .pd-mobile-fab {
5564        position: fixed;
5565        left: 0;
5566        right: 0;
5567        bottom: 42px;
5568        /* Position above bottom-nav (60px min-height + 6px padding) */
5569        display: none;
5570        align-items: center;
5571        gap: .75rem;
5572        padding: 12px 16px;
5573        background: rgba(255, 255, 255, 0.95);
5574        backdrop-filter: blur(20px);
5575        -webkit-backdrop-filter: blur(20px);
5576        border-top: 1px solid rgba(228, 231, 235, 0.6);
5577        box-shadow: 0 -4px 16px -4px rgba(0, 0, 0, 0.12);
5578        z-index: 999;
5579        /* Below bottom-nav (1000) */
5580        transition: bottom .3s cubic-bezier(0.4, 0.0, 0.2, 1);
5581    }
5582
5583    /* When bottom-nav is hidden, move FAB to bottom */
5584    body:has(.bottom-nav.hidden) .pd-mobile-fab {
5585        bottom: 0;
5586    }
5587
5588    .pd-mobile-fab .mf-actions {
5589        display: flex;
5590        gap: .5rem;
5591        width: 100%
5592    }
5593
5594    .mf-btn {
5595        border-radius: 10px;
5596        padding: .6rem 1rem;
5597        font-weight: 600;
5598        font-size: 14px;
5599        cursor: pointer;
5600        transition: all .2s;
5601        -webkit-tap-highlight-color: transparent;
5602        display: inline-flex;
5603        align-items: center;
5604        justify-content: center;
5605        gap: 4px;
5606    }
5607
5608    .mf-buy {
5609        background: #fb923c;
5610        color: #fff;
5611        border: 0;
5612        box-shadow: 0 2px 8px rgba(251, 146, 60, 0.3);
5613        flex: 1;
5614        flex-direction: column;
5615        padding: .55rem 1rem;
5616        line-height: 1;
5617        min-height: 44px;
5618        font-family: inherit;
5619    }
5620
5621    .mf-buy .mf-buy-text {
5622        font-size: 11px;
5623        font-weight: 600;
5624        opacity: 0.95;
5625        font-family: inherit;
5626    }
5627
5628    .mf-buy .mf-buy-price {
5629        font-size: 13px;
5630        font-weight: 800;
5631        letter-spacing: -0.3px;
5632        font-family: inherit;
5633        line-height: 1;
5634    }
5635
5636    .mf-buy:active {
5637        transform: scale(0.97)
5638    }
5639
5640    .mf-cart {
5641        background: #fff;
5642        color: #fb923c;
5643        border: 2px solid #fb923c;
5644        width: 44px;
5645        height: 44px;
5646        min-height: 44px;
5647        padding: 0;
5648        flex-shrink: 0;
5649        font-family: inherit;
5650    }
5651
5652    .mf-cart:active {
5653        transform: scale(0.95)
5654    }
5655
5656    .mf-chat {
5657        background: #fff;
5658        color: #fb923c;
5659        border: 2px solid #fb923c;
5660        width: 44px;
5661        height: 44px;
5662        min-height: 44px;
5663        padding: 0;
5664        flex-shrink: 0;
5665        font-family: inherit
5666    }
5667
5668    .mf-chat:active {
5669        transform: scale(0.95)
5670    }
5671
5672    .mf-chat svg {
5673        width: 20px;
5674        height: 20px;
5675        flex-shrink: 0
5676    }
5677
5678    .mf-share {
5679        background: #fff;
5680        color: #fb923c;
5681        border: 2px solid #fb923c;
5682        width: 44px;
5683        height: 44px;
5684        padding: 0;
5685        flex-shrink: 0;
5686    }
5687
5688    .mf-share:active {
5689        transform: scale(0.95)
5690    }
5691
5692    .mf-btn:disabled {
5693        opacity: .5;
5694        cursor: not-allowed
5695    }
5696
5697    @media (max-width:640px) {
5698        .pd-mobile-fab {
5699            display: flex
5700        }
5701
5702        .product-single {
5703            padding-bottom: 0;
5704        }
5705
5706        /* Space for FAB + bottom-nav */
5707    }
5708
5709    /* === Installment cards === */
5710    .pd-installment-card {
5711        border: 1px solid var(--pd-border);
5712        background: #fff;
5713        border-radius: var(--pd-radius);
5714        padding: 1rem 1.1rem 1.25rem;
5715        display: flex;
5716        flex-direction: column;
5717        gap: .85rem
5718    }
5719
5720    .pd-installment-card h3 {
5721        margin: 0 0 .2rem;
5722        font-size: .78rem;
5723        font-weight: 700;
5724        letter-spacing: .6px;
5725        text-transform: uppercase;
5726        color: var(--pd-dark)
5727    }
5728
5729    .inst-tabs {
5730        display: flex;
5731        gap: .4rem
5732    }
5733
5734    .inst-tab {
5735        flex: 1 1 0;
5736        background: var(--pd-soft);
5737        border: 1px solid var(--pd-soft-border);
5738        padding: .45rem .5rem;
5739        font-size: .63rem;
5740        font-weight: 600;
5741        border-radius: 6px;
5742        cursor: pointer;
5743        letter-spacing: .4px;
5744        transition: var(--pd-transition)
5745    }
5746
5747    .inst-tab.active,
5748    .inst-tab:hover {
5749        background: var(--pd-accent);
5750        color: #fff;
5751        border-color: var(--pd-accent)
5752    }
5753
5754    .inst-tab:focus {
5755        outline: 2px solid var(--pd-accent);
5756        outline-offset: 2px
5757    }
5758
5759    .inst-tenors {
5760        display: flex;
5761        gap: .4rem;
5762        flex-wrap: wrap
5763    }
5764
5765    .tenor-btn {
5766        flex: 1 0 auto;
5767        background: #fff;
5768        border: 1px solid var(--pd-soft-border);
5769        padding: .42rem .55rem;
5770        font-size: .6rem;
5771        font-weight: 600;
5772        border-radius: 20px;
5773        cursor: pointer;
5774        transition: .18s;
5775        min-width: 56px
5776    }
5777
5778    .tenor-btn.active,
5779    .tenor-btn:hover {
5780        background: #1d7df0;
5781        color: #fff;
5782        border-color: #1d7df0
5783    }
5784
5785    .inst-result {
5786        display: flex;
5787        flex-direction: column;
5788        gap: .45rem;
5789        font-size: .63rem
5790    }
5791
5792    .inst-line {
5793        display: flex;
5794        justify-content: space-between;
5795        align-items: center;
5796        padding: .35rem .55rem;
5797        background: var(--pd-soft);
5798        border: 1px solid var(--pd-soft-border);
5799        border-radius: 6px
5800    }
5801
5802    .inst-line.highlight {
5803        background: #1d7df0;
5804        color: #fff;
5805        border-color: #1d7df0;
5806        font-weight: 600
5807    }
5808
5809    .inst-line .lbl {
5810        opacity: .8
5811    }
5812
5813    .inst-line .val {
5814        font-weight: 600;
5815        letter-spacing: .3px
5816    }
5817
5818    .inst-footnote {
5819        font-size: .53rem;
5820        line-height: 1.25;
5821        color: #64748b;
5822        margin-top: .2rem
5823    }
5824
5825    @media (max-width: 860px) {
5826        .pd-installment-card {
5827            order: 3
5828        }
5829
5830        .inst-tabs .inst-tab,
5831        .inst-tenors .tenor-btn {
5832            font-size: .65rem
5833        }
5834
5835        /* Voucher button responsive - make it simpler */
5836        .btn-buy-voucher {
5837            padding: 0 12px;
5838            gap: 8px
5839        }
5840
5841        .btn-buy-voucher .bv-icon {
5842            font-size: 18px
5843        }
5844
5845        .btn-buy-voucher .bv-text {
5846            font-size: 13px
5847        }
5848
5849        .btn-buy-voucher .bv-text small {
5850            font-size: 9px
5851        }
5852
5853        .btn-buy-voucher .bv-save {
5854            font-size: 11px;
5855            padding: 3px 6px
5856        }
5857    }
5858
5859    /* Installment List v2 (eye-catching) */
5860    .pd-installment-card2 {
5861        background: radial-gradient(circle, rgba(0, 150, 136, 1) 0%, rgba(0, 0, 0, 0.63) 100%);
5862        border: 1px solid #009688;
5863        border-radius: var(--pd-radius);
5864        padding: 1rem 1.05rem 1.2rem;
5865        display: flex;
5866        flex-direction: column;
5867        gap: .5rem;
5868        position: relative;
5869        overflow: hidden;
5870    }
5871
5872    .pd-installment-card2:before {
5873        content: '';
5874        position: absolute;
5875        width: 140px;
5876        height: 140px;
5877        background: radial-gradient(circle at center, rgba(29, 125, 240, .18), rgba(29, 125, 240, 0));
5878        top: -40px;
5879        right: -40px;
5880        pointer-events: none
5881    }
5882
5883    .pd-installment-card2 h3 {
5884        margin: 0;
5885        font-size: .8rem;
5886        font-weight: 700;
5887        letter-spacing: .6px;
5888        text-transform: uppercase;
5889        color: #0f2f54
5890    }
5891
5892    .pd-installment-card2 .inst-head {
5893        display: flex;
5894        align-items: center;
5895        justify-content: space-between;
5896        gap: .5rem
5897    }
5898
5899    .inst-head-badge {
5900        background: #1d7df0;
5901        color: #fff;
5902        font-size: .55rem;
5903        font-weight: 600;
5904        padding: .25rem .5rem;
5905        border-radius: 20px;
5906        letter-spacing: .4px;
5907        box-shadow: 0 2px 6px -2px rgba(29, 125, 240, .6)
5908    }
5909
5910    .inst-bank-tabs {
5911        display: flex;
5912        gap: .45rem
5913    }
5914
5915    .bank-tab {
5916        flex: 1 1 0;
5917        background: #fff;
5918        border: 1px solid var(--pd-soft-border);
5919        padding: .5rem .55rem;
5920        font-size: .63rem;
5921        font-weight: 600;
5922        border-radius: 7px;
5923        cursor: pointer;
5924        transition: .18s;
5925        letter-spacing: .3px
5926    }
5927
5928    .bank-tab.active,
5929    .bank-tab:hover {
5930        background: #1d7df0;
5931        color: #fff;
5932        border-color: #1d7df0;
5933        box-shadow: 0 3px 10px -4px rgba(29, 125, 240, .6)
5934    }
5935
5936    .bank-tab:focus {
5937        outline: 2px solid #1d7df0;
5938        outline-offset: 2px
5939    }
5940
5941    .inst-month-list {
5942        list-style: none;
5943        margin: 0;
5944        padding: 0;
5945        display: flex;
5946        flex-direction: column;
5947        gap: .55rem
5948    }
5949
5950    .inst-month-item {
5951        display: flex;
5952        align-items: center;
5953        gap: .65rem;
5954        background: #fff;
5955        border: 1px solid var(--pd-soft-border);
5956        border-radius: 14px;
5957        padding: .55rem .7rem;
5958        position: relative;
5959        overflow: hidden;
5960        transition: .25s
5961    }
5962
5963    .inst-month-item:before {
5964        content: '';
5965        position: absolute;
5966        inset: 0;
5967        opacity: 0;
5968        background: linear-gradient(90deg, rgba(29, 125, 240, .08), rgba(29, 125, 240, 0));
5969        transition: .25s
5970    }
5971
5972    .inst-month-item:hover {
5973        transform: translateY(-2px);
5974        box-shadow: 0 6px 14px -6px rgba(0, 40, 120, .25)
5975    }
5976
5977    .inst-month-item:hover:before {
5978        opacity: 1
5979    }
5980
5981    .tenor-badge {
5982        background: #1d7df0;
5983        color: #fff;
5984        font-weight: 700;
5985        min-width: 42px;
5986        text-align: center;
5987        padding: .38rem .4rem;
5988        font-size: .8rem;
5989        border-radius: 10px;
5990        box-shadow: 0 3px 10px -4px rgba(29, 125, 240, .6)
5991    }
5992
5993    .amount {
5994        flex: 1;
5995        font-size: .8rem;
5996        font-weight: 600;
5997        color: #0f2f54;
5998        letter-spacing: .3px
5999    }
6000
6001    .tag {
6002        font-size: .55rem;
6003        font-weight: 600;
6004        padding: .28rem .55rem;
6005        border-radius: 30px;
6006        letter-spacing: .4px;
6007        text-transform: uppercase;
6008        white-space: nowrap
6009    }
6010
6011    .tag-zero {
6012        background: #16a34a;
6013        color: #fff;
6014        box-shadow: 0 2px 8px -3px rgba(16, 180, 90, .55)
6015    }
6016
6017    .inst-note {
6018        font-size: .6rem;
6019        font-weight: 600;
6020        color: #0f2f54;
6021        background: #e0f7ed;
6022        border: 1px solid #b2ebd2;
6023        padding: .4rem .6rem;
6024        border-radius: 8px;
6025        letter-spacing: .3px
6026    }
6027
6028    .inst-disclaimer {
6029        font-size: .52rem;
6030        line-height: 1.25;
6031        color: #64748b;
6032        margin-top: -.2rem
6033    }
6034
6035    @media (max-width:860px) {
6036        .pd-installment-card2 {
6037            order: 3
6038        }
6039
6040        .tenor-badge {
6041            min-width: 38px;
6042            font-size: .75rem
6043        }
6044
6045        .amount {
6046            font-size: .78rem
6047        }
6048    }
6049
6050    /* Alt Fintech Banner (compact) */
6051    .inst-alt-banner--compact {
6052        background: linear-gradient(142deg, #1d7df0 0%, #3c98ff 55%, #67bdff 100%);
6053        color: #fff;
6054        border: 0;
6055        padding: .95rem .95rem 1.05rem;
6056        border-radius: 16px;
6057        box-shadow: 0 6px 18px -6px rgba(0, 70, 160, .45);
6058        position: relative;
6059        overflow: hidden;
6060        min-height: auto;
6061    }
6062
6063    .inst-alt-banner--compact:before,
6064    .inst-alt-banner--compact:after {
6065        content: '';
6066        position: absolute;
6067        border-radius: 50%;
6068        background: rgba(255, 255, 255, .15);
6069        filter: blur(2px);
6070        pointer-events: none;
6071    }
6072
6073    .inst-alt-banner--compact:before {
6074        width: 130px;
6075        height: 130px;
6076        top: -50px;
6077        right: -35px
6078    }
6079
6080    .inst-alt-banner--compact:after {
6081        width: 90px;
6082        height: 90px;
6083        bottom: -40px;
6084        left: -30px
6085    }
6086
6087    .inst-alt-banner--compact .iab-top {
6088        margin: 0 0 .55rem;
6089        display: flex;
6090        flex-direction: column;
6091        gap: .25rem
6092    }
6093
6094    .inst-alt-banner--compact .iab-title {
6095        font-size: .74rem;
6096        font-weight: 700;
6097        letter-spacing: .7px;
6098        line-height: 1.15
6099    }
6100
6101    .inst-alt-banner--compact .iab-sub {
6102        font-size: .55rem;
6103        font-weight: 500;
6104        opacity: .95;
6105        letter-spacing: .4px
6106    }
6107
6108    .iab-logos-compact {
6109        display: flex;
6110        gap: .55rem;
6111        align-items: center;
6112        margin: 0 0 .6rem;
6113        flex-wrap: nowrap;
6114        justify-content: space-between
6115    }
6116
6117    .iab-logos-compact .logo-fin {
6118        width: 30%
6119    }
6120
6121    .iab-logos-compact .logo {
6122        width: 48px;
6123        height: 48px;
6124        border-radius: 14px;
6125        display: flex;
6126        align-items: center;
6127        justify-content: center;
6128        font-size: .62rem;
6129        font-weight: 700;
6130        letter-spacing: .3px;
6131        position: relative;
6132        color: #fff;
6133        box-shadow: 0 4px 10px -4px rgba(0, 0, 0, .35);
6134        background: rgba(255, 255, 255, .15);
6135        backdrop-filter: blur(4px);
6136        transition: .25s;
6137        text-shadow: 0 1px 2px rgba(0, 0, 0, .4);
6138        user-select: none;
6139    }
6140
6141    .iab-logos-compact .logo:before {
6142        content: '';
6143        position: absolute;
6144        inset: 0;
6145        border-radius: inherit;
6146        background: linear-gradient(140deg, rgba(255, 255, 255, .35), rgba(255, 255, 255, 0));
6147        mix-blend-mode: overlay;
6148        opacity: .55;
6149        pointer-events: none;
6150    }
6151
6152    .iab-logos-compact .logo:hover {
6153        transform: translateY(-3px) scale(1.05);
6154        box-shadow: 0 8px 18px -6px rgba(0, 0, 0, .45)
6155    }
6156
6157    .iab-cta--compact {
6158        display: inline-flex;
6159        padding: .45rem .85rem;
6160        font-size: .58rem;
6161        font-weight: 700;
6162        background: #fff;
6163        color: #0f3c6d;
6164        border-radius: 30px;
6165        text-decoration: none;
6166        letter-spacing: .55px;
6167        box-shadow: 0 4px 12px -5px rgba(0, 0, 0, .35);
6168        transition: .25s;
6169    }
6170
6171    .iab-cta--compact:hover {
6172        transform: translateY(-2px);
6173        box-shadow: 0 8px 18px -7px rgba(0, 0, 0, .45)
6174    }
6175
6176    .iab-footnote--compact {
6177        margin-top: .45rem;
6178        font-size: .46rem;
6179        opacity: .85;
6180        letter-spacing: .25px
6181    }
6182
6183    @media (max-width:860px) {
6184        .inst-alt-banner--compact {
6185            order: 4;
6186            margin-top: .4rem;
6187            flex: 1 1
6188        }
6189
6190        .iab-logos-compact .logo {
6191            width: 46px;
6192            height: 46px
6193        }
6194    }
6195
6196    /* === Scroll To Top (baru) === */
6197    .pd-scroll-top {
6198        position: fixed;
6199        right: 20px;
6200        bottom: 90px;
6201        width: 48px;
6202        height: 48px;
6203        border-radius: 50%;
6204        background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%);
6205        color: #0f2f54;
6206        border: 1px solid rgba(226, 232, 240, 0.8);
6207        box-shadow: 0 8px 20px -8px rgba(0, 0, 0, .3), 0 2px 6px rgba(0, 0, 0, .1);
6208        display: flex;
6209        align-items: center;
6210        justify-content: center;
6211        cursor: pointer;
6212        z-index: 1105;
6213        opacity: 0;
6214        transform: translateY(12px) scale(.92);
6215        transition: all .3s cubic-bezier(0.4, 0, 0.2, 1);
6216        backdrop-filter: blur(8px);
6217        -webkit-backdrop-filter: blur(8px);
6218    }
6219
6220    .pd-scroll-top:hover {
6221        box-shadow: 0 12px 28px -10px rgba(0, 0, 0, .4), 0 4px 12px rgba(0, 0, 0, .15);
6222        transform: translateY(0) scale(1);
6223        background: linear-gradient(135deg, #ffffff 0%, #fefefe 100%);
6224        border-color: rgba(226, 232, 240, 1);
6225    }
6226
6227    .pd-scroll-top:active {
6228        transform: translateY(0) scale(.96);
6229    }
6230
6231    .pd-scroll-top:focus-visible {
6232        outline: 2px solid var(--pd-accent);
6233        outline-offset: 2px
6234    }
6235
6236    .pd-scroll-top.visible {
6237        opacity: 1;
6238        transform: translateY(0) scale(1)
6239    }
6240
6241    @media (max-width:640px) {
6242
6243        /* Dynamic positioning via JavaScript */
6244        .pd-scroll-top {
6245            right: 14px;
6246            bottom: var(--scroll-top-bottom, calc(68px + 18px + env(safe-area-inset-bottom)));
6247        }
6248    }
6249
6250    /* === Responsive layout tweaks === */
6251    @media (max-width:1250px) {
6252        .pd-top-layout {
6253            grid-template-columns: minmax(260px, 330px) 1fr
6254        }
6255
6256        .pd-sidebar {
6257            grid-column: 1 / -1;
6258            flex-direction: row;
6259            flex-wrap: wrap;
6260            gap: 1rem
6261        }
6262
6263        .pd-side-card {
6264            flex: 1 1 250px
6265        }
6266    }
6267
6268    @media (max-width:880px) {
6269        .pd-top-layout {
6270            grid-template-columns: 1fr
6271        }
6272
6273        .pd-sidebar {
6274            flex-direction: column;
6275            padding: 0 1rem;
6276        }
6277
6278        .pd-title {
6279            font-size: 1.2rem
6280        }
6281
6282        .pd-price-current {
6283            font-size: 1.5rem
6284        }
6285    }
6286
6287    @media (max-width:640px) {
6288
6289        /* Related: 2 kolom di mobile */
6290        .pd-related-full {
6291            padding: 1.2rem;
6292            border: 0;
6293            padding-top: .6rem;
6294            margin-bottom: .6rem;
6295        }
6296
6297        .pd-related-grid,
6298        .pd-related-grid--full {
6299            grid-template-columns: repeat(2, 1fr) !important;
6300            gap: 12px !important
6301        }
6302    }
6303
6304    @media (max-width:560px) {
6305        .pd-actions {
6306            flex-direction: column
6307        }
6308
6309        .btn-add-cart,
6310        .btn-buy,
6311        .btn-buy-voucher {
6312            width: 100%
6313        }
6314
6315        .pd-full-description {
6316            padding: 1.2rem;
6317            border: 0;
6318            padding-bottom: 0;
6319        }
6320    }
6321
6322    @media (max-width:380px) {
6323        .pd-related-full {
6324            padding: .9rem .7rem 1.1rem
6325        }
6326
6327        .pd-related-grid,
6328        .pd-related-grid--full {
6329            gap: 8px !important
6330        }
6331
6332        .pd-related-card .info {
6333            padding: .4rem .48rem .55rem
6334        }
6335    }
6336
6337    /* === Modern Countdown (Product Detail) === */
6338    .pd-countdown-modern {
6339        --cd-bg1: #0ea5e9;
6340        /* sky-500 */
6341        --cd-bg2: #6366f1;
6342        /* indigo-500 */
6343        --cd-text: #0b1220;
6344        --cd-contrast: #ffffff;
6345        --cd-shadow: 0 8px 24px -10px rgba(0, 0, 0, .25);
6346        --cd-border: rgba(255, 255, 255, .25);
6347        --cd-box: rgba(255, 255, 255, .65);
6348        --cd-box-text: #0f172a;
6349        --cd-danger: #ef4444;
6350
6351        display: flex;
6352        gap: .75rem;
6353        align-items: center;
6354        background: linear-gradient(135deg, var(--cd-bg1), var(--cd-bg2));
6355        border: 1px solid var(--cd-border);
6356        color: var(--cd-contrast);
6357        border-radius: 14px;
6358        padding: .6rem .8rem;
6359        box-shadow: var(--cd-shadow);
6360        position: relative;
6361        overflow: hidden;
6362        margin-bottom: 1rem;
6363    }
6364
6365    .pd-countdown-modern .pd-cd-icon {
6366        width: 28px;
6367        height: 28px;
6368        flex: 0 0 28px;
6369        display: grid;
6370        place-items: center;
6371        background: rgba(255, 255, 255, .22);
6372        border: 1px solid var(--cd-border);
6373        border-radius: 10px;
6374        box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35);
6375    }
6376
6377    .pd-countdown-modern .pd-cd-icon svg {
6378        width: 18px;
6379        height: 18px;
6380        fill: #fff;
6381        opacity: .95
6382    }
6383
6384    .pd-countdown-modern .pd-cd-body {
6385        display: flex;
6386        flex-direction: column;
6387        gap: .35rem;
6388        min-width: 0
6389    }
6390
6391    .pd-countdown-modern .pd-cd-label {
6392        font-size: .72rem;
6393        font-weight: 700;
6394        letter-spacing: .4px;
6395        opacity: .95;
6396        line-height: 1;
6397        text-shadow: 0 1px 0 rgba(0, 0, 0, .08);
6398    }
6399
6400    .pd-countdown-modern .pd-cd-time {
6401        display: flex;
6402        align-items: end;
6403        gap: .35rem;
6404        flex-wrap: wrap;
6405        line-height: 1;
6406    }
6407
6408    .pd-countdown-modern .unit {
6409        display: flex;
6410        flex-direction: column;
6411        align-items: center;
6412        gap: .18rem;
6413        min-width: 58px;
6414    }
6415
6416    .pd-countdown-modern .num {
6417        display: inline-flex;
6418        align-items: center;
6419        justify-content: center;
6420        min-width: 58px;
6421        height: 40px;
6422        padding: 0 .4rem;
6423        background: var(--cd-box);
6424        color: var(--cd-box-text);
6425        border: 1px solid rgba(15, 23, 42, .08);
6426        border-radius: 10px;
6427        font: 800 1.05rem ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
6428        letter-spacing: .5px;
6429        box-shadow: 0 4px 14px -6px rgba(0, 0, 0, .4), inset 0 1px 0 rgba(255, 255, 255, .55);
6430    }
6431
6432    .pd-countdown-modern .unit-label {
6433        font-size: .62rem;
6434        font-weight: 700;
6435        opacity: .9;
6436        text-shadow: 0 1px 0 rgba(255, 255, 255, .15);
6437    }
6438
6439    .pd-countdown-modern .colon {
6440        font-weight: 900;
6441        font-size: 1.05rem;
6442        opacity: .95;
6443        transform: translateY(-2px);
6444        animation: cdBlink 1.2s infinite steps(2, jump-none);
6445    }
6446
6447    @keyframes cdBlink {
6448        0% {
6449            opacity: 1
6450        }
6451
6452        50% {
6453            opacity: .25
6454        }
6455
6456        100% {
6457            opacity: 1
6458        }
6459    }
6460
6461    .pd-countdown-modern .pd-cd-progress {
6462        display: none;
6463        position: relative;
6464        height: 6px;
6465        border-radius: 999px;
6466        overflow: hidden;
6467        background: rgba(255, 255, 255, .25);
6468        border: 1px solid rgba(255, 255, 255, .28);
6469    }
6470
6471    .pd-countdown-modern .pd-cd-progress .bar {
6472        height: 100%;
6473        width: 0%;
6474        background: linear-gradient(90deg, #22c55e, #a3e635);
6475        box-shadow: 0 2px 8px rgba(0, 0, 0, .25) inset;
6476        transition: width .35s ease;
6477    }
6478
6479    /* State saat hampir habis */
6480    .pd-countdown-modern.danger {
6481        --cd-bg1: #f97316;
6482        /* orange-500 */
6483        --cd-bg2: #ef4444;
6484        /* red-500   */
6485    }
6486
6487    /* Responsive */
6488    @media (max-width:640px) {
6489        .pd-countdown-modern {
6490            padding: .55rem .65rem;
6491            border-radius: 12px;
6492            gap: .6rem;
6493        }
6494
6495        .pd-countdown-modern .unit {
6496            min-width: 52px
6497        }
6498
6499        .pd-countdown-modern .num {
6500            min-width: 52px;
6501            height: 36px;
6502            font-size: .98rem
6503        }
6504    }
6505
6506    /* === Modern Countdown polish (shine + compact) === */
6507    .pd-countdown-modern {
6508        position: relative;
6509    }
6510
6511    .pd-countdown-modern::after {
6512        content: "";
6513        position: absolute;
6514        inset: -1px;
6515        background: linear-gradient(120deg, rgba(255, 255, 255, .12), rgba(255, 255, 255, 0) 35%),
6516            radial-gradient(120% 120% at 0% 0%, rgba(255, 255, 255, .08), rgba(255, 255, 255, 0) 60%);
6517        border-radius: inherit;
6518        pointer-events: none;
6519        mix-blend-mode: screen;
6520        animation: sheen 4.5s ease-in-out infinite;
6521    }
6522
6523    @keyframes sheen {
6524        0% {
6525            opacity: .35;
6526            transform: translateX(-10%)
6527        }
6528
6529        50% {
6530            opacity: .15;
6531            transform: translateX(4%)
6532        }
6533
6534        100% {
6535            opacity: .35;
6536            transform: translateX(-10%)
6537        }
6538    }
6539
6540    /* Mode compact (aktifkan dengan data-mode="compact" di elemen) */
6541    .pd-countdown-modern[data-mode="compact"] {
6542        gap: .55rem;
6543        padding: .5rem .6rem;
6544        border-radius: 12px;
6545    }
6546
6547    .pd-countdown-modern[data-mode="compact"] .unit {
6548        min-width: 46px;
6549    }
6550
6551    .pd-countdown-modern[data-mode="compact"] .num {
6552        min-width: 46px;
6553        height: 34px;
6554        font-size: .92rem;
6555    }
6556
6557    .pd-countdown-modern[data-mode="compact"] .pd-cd-label {
6558        font-size: .66rem;
6559    }
6560
6561    .pd-countdown-modern[data-mode="compact"] .pd-cd-icon {
6562        width: 24px;
6563        height: 24px;
6564        border-radius: 8px;
6565    }
6566
6567    .pd-countdown-modern[data-mode="compact"] .pd-cd-progress {
6568        height: 5px;
6569    }
6570
6571    /* Product Grid (Firebird) */
6572
6573    .product-archive {
6574        max-width: 1320px;
6575        margin-inline: auto;
6576        padding: 0 0 3rem;
6577        /*font-family: system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,sans-serif;*/
6578    }
6579
6580    .pa-toolbar {
6581        display: flex;
6582        flex-wrap: wrap;
6583        gap: 1rem;
6584        justify-content: space-between;
6585        align-items: flex-start;
6586        margin-bottom: 1.4rem;
6587    }
6588
6589    .pa-title {
6590        font-size: 1.4rem;
6591        margin: 0;
6592        font-weight: 600;
6593        line-height: 1.2;
6594        color: #0f172a;
6595    }
6596
6597    .pa-left {
6598        display: flex;
6599        flex-wrap: wrap;
6600        gap: .75rem;
6601        align-items: center;
6602    }
6603
6604    .pa-filter-badge {
6605        background: #f1f5f9;
6606        border: 1px solid #e2e8f0;
6607        padding: .45rem .6rem;
6608        border-radius: 8px;
6609        font-size: .7rem;
6610        display: flex;
6611        align-items: center;
6612        gap: .4rem;
6613        line-height: 1;
6614        color: #475569;
6615    }
6616
6617    .pa-filter-badge strong {
6618        color: #0f172a;
6619    }
6620
6621    .pa-filter-badge .clear {
6622        display: inline-block;
6623        text-decoration: none;
6624        background: #e2e8f0;
6625        color: #475569;
6626        font-weight: 600;
6627        padding: 0 .35rem .05rem;
6628        border-radius: 4px;
6629        transition: .2s;
6630        font-size: .75rem;
6631        line-height: 1;
6632    }
6633
6634    .pa-filter-badge .clear:hover {
6635        background: #cbd5e1;
6636        color: #1e293b;
6637    }
6638
6639    .pa-right {
6640        display: flex;
6641        gap: 1rem;
6642        flex-wrap: wrap;
6643        align-items: flex-start;
6644    }
6645
6646    .pa-search {
6647        display: flex;
6648        gap: .5rem;
6649        align-items: center;
6650        background: #fff;
6651        border: 1px solid #e2e8f0;
6652        padding: .4rem .5rem;
6653        border-radius: 8px;
6654    }
6655
6656    .pa-search input[type=text] {
6657        border: 0;
6658        outline: none;
6659        font-size: .8rem;
6660        padding: .35rem .4rem;
6661        min-width: 200px;
6662    }
6663
6664    .pa-search button {
6665        background: #0d6efd;
6666        border: 0;
6667        color: #fff;
6668        font-size: .7rem;
6669        padding: .45rem .75rem;
6670        border-radius: 6px;
6671        cursor: pointer;
6672        font-weight: 600;
6673        letter-spacing: .3px;
6674        transition: .25s;
6675    }
6676
6677    .pa-search button:hover {
6678        background: #0b5dc4;
6679    }
6680
6681    .pa-sort {
6682        display: flex;
6683        gap: .4rem;
6684        align-items: center;
6685        font-size: .7rem;
6686        background: #fff;
6687        border: 1px solid #e2e8f0;
6688        padding: .4rem .55rem;
6689        border-radius: 8px;
6690    }
6691
6692    .pa-sort select {
6693        font-size: .75rem;
6694        padding: .35rem .5rem;
6695        border: 1px solid #cbd5e1;
6696        border-radius: 6px;
6697        background: #fff;
6698        outline: none;
6699    }
6700
6701    .pa-empty {
6702        border: 1px dashed #cbd5e1;
6703        padding: 3rem 1rem;
6704        text-align: center;
6705        border-radius: 12px;
6706        background: #fff;
6707    }
6708
6709    .pa-empty p {
6710        margin: 0 0 1rem;
6711        font-size: .9rem;
6712        color: #475569;
6713    }
6714
6715    .btn-reset {
6716        display: inline-block;
6717        background: #0d6efd;
6718        color: #fff;
6719        font-size: .7rem;
6720        padding: .55rem 1rem;
6721        border-radius: 8px;
6722        text-decoration: none;
6723        font-weight: 600;
6724        letter-spacing: .4px;
6725        transition: .25s;
6726    }
6727
6728    .btn-reset:hover {
6729        background: #0a58c7;
6730    }
6731
6732    /* Grid */
6733    .pa-grid {
6734        display: grid;
6735        gap: 1rem;
6736        grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
6737        align-items: stretch;
6738    }
6739
6740    .pa-card {
6741        background: #fff;
6742        border: 1px solid #e2e8f0;
6743        border-radius: 12px;
6744        display: flex;
6745        flex-direction: column;
6746        text-decoration: none;
6747        color: inherit;
6748        position: relative;
6749        overflow: hidden;
6750        transition: .28s cubic-bezier(.4, 0, .2, 1);
6751        min-width: 0;
6752        padding: 0;
6753    }
6754
6755    .pa-card:hover {
6756        transform: translateY(-4px);
6757        box-shadow: 0 8px 22px -8px rgba(0, 0, 0, .15);
6758        border-color: #dce2ea;
6759    }
6760
6761    .pa-card .thumb {
6762        aspect-ratio: 1/1;
6763        background: #f1f5f9;
6764        display: flex;
6765        align-items: center;
6766        justify-content: center;
6767        overflow: hidden;
6768        position: relative;
6769    }
6770
6771    .pa-card img {
6772        width: 100%;
6773        height: 100%;
6774        object-fit: cover;
6775        display: block;
6776    }
6777
6778    .badge-disc {
6779        position: absolute;
6780        top: 8px;
6781        left: 8px;
6782        background: #dc2626;
6783        color: #fff;
6784        font-size: .6rem;
6785        padding: 4px 6px 3px;
6786        border-radius: 6px;
6787        font-weight: 700;
6788        letter-spacing: .4px;
6789    }
6790
6791    .pa-card .body {
6792        padding: .65rem .7rem .8rem;
6793        display: flex;
6794        flex-direction: column;
6795        gap: .45rem;
6796        min-height: 90px;
6797    }
6798
6799    .pa-card .title {
6800        font-size: .75rem;
6801        line-height: 1.25;
6802        margin: 0;
6803        font-weight: 600;
6804        color: #1e293b;
6805        height: 2.4em;
6806        overflow: hidden;
6807    }
6808
6809    .pa-card .prices {
6810        display: flex;
6811        flex-wrap: wrap;
6812        align-items: baseline;
6813        gap: .4rem;
6814    }
6815
6816    .pa-card .prices .final {
6817        font-size: .83rem;
6818        font-weight: 700;
6819        color: #0d6efd;
6820    }
6821
6822    .pa-card .prices .ori {
6823        font-size: .63rem;
6824        text-decoration: line-through;
6825        color: #94a3b8;
6826        font-weight: 500;
6827    }
6828
6829    .pa-card .cat {
6830        margin-top: auto;
6831        font-size: .55rem;
6832        letter-spacing: .6px;
6833        text-transform: uppercase;
6834        background: #f1f5f9;
6835        border: 1px solid #e2e8f0;
6836        padding: .28rem .45rem .25rem;
6837        border-radius: 20px;
6838        font-weight: 600;
6839        color: #475569;
6840        align-self: flex-start;
6841    }
6842
6843    .pa-card .meta-line {
6844        margin-top: 4px;
6845        font-size: .65rem;
6846        color: #475569;
6847    }
6848
6849    .pa-card .meta-line .sold {
6850        display: inline-block;
6851        background: #f1f5f9;
6852        padding: 2px 6px 3px;
6853        border-radius: 4px;
6854        font-weight: 600;
6855        letter-spacing: .3px;
6856        color: #334155;
6857    }
6858
6859    /* Pagination */
6860    .pa-pagination {
6861        margin-top: 2rem;
6862        display: flex;
6863        flex-wrap: wrap;
6864        gap: .4rem;
6865        justify-content: center;
6866        font-size: .7rem;
6867        align-items: center;
6868    }
6869
6870    .pa-pagination a,
6871    .pa-pagination span {
6872        min-width: 34px;
6873        height: 34px;
6874        display: flex;
6875        align-items: center;
6876        justify-content: center;
6877        border-radius: 8px;
6878        text-decoration: none;
6879        font-weight: 600;
6880        padding: 0 .6rem;
6881        box-sizing: border-box;
6882        border: 1px solid #e2e8f0;
6883        background: #fff;
6884        color: #334155;
6885        transition: .25s;
6886    }
6887
6888    .pa-pagination a:hover {
6889        background: #f1f5f9;
6890        color: #0f172a;
6891    }
6892
6893    .pa-pagination .current {
6894        background: #0d6efd;
6895        color: #fff;
6896        border-color: #0d6efd;
6897    }
6898
6899    .pa-pagination .gap {
6900        border: none;
6901        background: transparent;
6902        font-weight: 400;
6903        color: #94a3b8;
6904    }
6905
6906    /* =============== Mobile Filter Bar (Tokopedia-like) =============== */
6907    .pa-mobile-filterbar {
6908        display: none
6909    }
6910
6911    @media (max-width: 640px) {
6912
6913        /* sembunyikan tombol lama */
6914        .pa-btn-filter {
6915            display: none
6916        }
6917
6918        .pa-mobile-filterbar {
6919            display: block;
6920            position: sticky;
6921            top: 0;
6922            /* sesuaikan jika ada header fixed di atas */
6923            z-index: 5;
6924            background: #fff;
6925            border-bottom: 1px solid #e2e8f0;
6926            padding: .4rem .5rem;
6927            margin: -.4rem -1rem .6rem;
6928            /* full-bleed di container mobile */
6929        }
6930
6931        .pa-mobile-filterbar .mf-scroll {
6932            display: flex;
6933            align-items: center;
6934            gap: .5rem;
6935            overflow-x: auto;
6936            -webkit-overflow-scrolling: touch;
6937            scrollbar-width: none;
6938        }
6939
6940        .pa-mobile-filterbar .mf-scroll::-webkit-scrollbar {
6941            display: none
6942        }
6943
6944        .mf-chip {
6945            flex: 0 0 auto;
6946            background: #fff;
6947            color: #334155;
6948            text-decoration: none;
6949            border: 1px solid #e2e8f0;
6950            border-radius: 999px;
6951            padding: .44rem .7rem;
6952            font-size: .78rem;
6953            font-weight: 600;
6954            letter-spacing: .2px;
6955            white-space: nowrap;
6956        }
6957
6958        .mf-chip:active {
6959            transform: scale(.98)
6960        }
6961
6962        .mf-chip.active {
6963            background: #eaf2ff;
6964            border-color: #0d6efd;
6965            color: #0d6efd;
6966        }
6967
6968        .mf-filter-btn {
6969            position: relative;
6970            flex: 0 0 auto;
6971            width: 38px;
6972            height: 38px;
6973            border-radius: 50%;
6974            border: 1.5px solid #0d6efd;
6975            background: #fff;
6976            display: inline-flex;
6977            align-items: center;
6978            justify-content: center;
6979            color: #0d6efd;
6980            cursor: pointer;
6981        }
6982
6983        .mf-filter-btn:active {
6984            transform: scale(.96)
6985        }
6986
6987        .mf-filter-btn svg {
6988            width: 18px;
6989            height: 18px;
6990            display: block
6991        }
6992
6993        .mf-filter-btn .mf-badge {
6994            position: absolute;
6995            top: 0;
6996            right: -4px;
6997            min-width: 18px;
6998            height: 18px;
6999            border-radius: 9px;
7000            background: #ef4444;
7001            color: #fff;
7002            font-size: .65rem;
7003            font-weight: 700;
7004            display: flex;
7005            align-items: center;
7006            justify-content: center;
7007            padding: 0 4px;
7008            line-height: 1;
7009            box-shadow: 0 2px 6px -2px rgba(239, 68, 68, .6);
7010        }
7011    }
7012
7013    /* Responsive */
7014    @media (max-width: 640px) {
7015        .product-archive {
7016            padding: 0 1rem 3rem;
7017        }
7018
7019        .pa-grid {
7020            grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
7021        }
7022
7023        .pa-search input[type=text] {
7024            min-width: 140px;
7025        }
7026
7027        .pa-toolbar {
7028            flex-direction: column;
7029            align-items: stretch;
7030            margin-bottom: 0;
7031            display: none;
7032        }
7033
7034        .pa-right {
7035            display: none;
7036        }
7037
7038        .pa-sort {
7039            width: 100%;
7040            justify-content: center;
7041        }
7042
7043        .pa-mobile-filterbar {
7044            display: flex !important;
7045        }
7046    }
7047
7048    .pa-mobile-filterbar {
7049        display: none;
7050        align-items: center;
7051        gap: 8px;
7052        padding: 8px 0 8px 12px;
7053        background: #fff;
7054        width: 100vw;
7055    }
7056
7057    .pa-mobile-filterbar .mf-scroll {
7058        display: flex;
7059        gap: 8px;
7060        overflow-x: auto;
7061        -webkit-overflow-scrolling: touch;
7062        scrollbar-width: none;
7063        /* Firefox */
7064        flex: 1 1 auto;
7065        /* takes remaining width */
7066    }
7067
7068    .pa-mobile-filterbar .mf-scroll::-webkit-scrollbar {
7069        display: none;
7070    }
7071
7072    /* WebKit */
7073    .pa-mobile-filterbar .mf-chip {
7074        flex: 0 0 auto;
7075        /* prevent shrinking, keep width based on content */
7076        white-space: nowrap;
7077    }
7078
7079    .pa-mobile-filterbar .mf-filter-btn {
7080        flex: 0 0 auto;
7081        /* do not shrink */
7082        position: relative;
7083        /* keep in place, not inside scroller */
7084        display: inline-flex;
7085        align-items: center;
7086        gap: 6px;
7087    }
7088
7089    /* Optional: ensure on small screens the button stays visible with min width */
7090    @media (max-width: 768px) {
7091        .pa-mobile-filterbar .mf-filter-btn {
7092            padding: 6px 10px;
7093        }
7094    }
7095
7096    /* Product Specification Chips */
7097    .pa-card .spec-chips {
7098        font-size: .6rem;
7099        color: #64748b;
7100        font-weight: 500;
7101        letter-spacing: .2px;
7102        margin-top: 2px;
7103        margin-bottom: 4px;
7104        line-height: 1.2;
7105        opacity: 0.9;
7106        max-width: 100%;
7107        overflow: hidden;
7108        text-overflow: ellipsis;
7109        white-space: nowrap;
7110    }
7111
7112    .pa-card .spec-chips .spec-divider {
7113        color: #94a3b8;
7114        font-weight: 400;
7115        margin: 0 1px;
7116    }
7117
7118    /**
7119 * Site Notice Banner - Reusable Notification System
7120 * Dismissible top bar for announcements, holidays, maintenance, etc.
7121 */
7122
7123    .holiday-notice {
7124        position: fixed;
7125        top: 0;
7126        left: 0;
7127        right: 0;
7128        z-index: 9999;
7129        background: linear-gradient(135deg, #d32f2f 0%, #f57c00 100%);
7130        border-bottom: 2px solid rgba(255, 255, 255, 0.2);
7131        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
7132        animation: slideDown 0.4s cubic-bezier(0.4, 0, 0.2, 1);
7133        transform-origin: top;
7134    }
7135
7136    .holiday-notice.hidden {
7137        animation: slideUp 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;
7138    }
7139
7140    @keyframes slideDown {
7141        from {
7142            transform: translateY(-100%);
7143            opacity: 0;
7144        }
7145
7146        to {
7147            transform: translateY(0);
7148            opacity: 1;
7149        }
7150    }
7151
7152    @keyframes slideUp {
7153        from {
7154            transform: translateY(0);
7155            opacity: 1;
7156        }
7157
7158        to {
7159            transform: translateY(-100%);
7160            opacity: 0;
7161        }
7162    }
7163
7164    .holiday-notice-container {
7165        max-width: 1400px;
7166        margin: 0 auto;
7167        padding: 12px 20px;
7168        display: flex;
7169        align-items: center;
7170        justify-content: space-between;
7171        gap: 16px;
7172    }
7173
7174    .holiday-notice-content {
7175        display: flex;
7176        align-items: center;
7177        gap: 12px;
7178        flex: 1;
7179    }
7180
7181    .holiday-notice-icon {
7182        font-size: 20px;
7183        line-height: 1;
7184        flex-shrink: 0;
7185    }
7186
7187    .holiday-notice-text {
7188        color: #ffffff;
7189        font-size: 14px;
7190        font-weight: 500;
7191        line-height: 1.5;
7192        margin: 0;
7193        text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
7194    }
7195
7196    .holiday-notice-emoji {
7197        display: inline-block;
7198        animation: bounce 2s ease-in-out infinite;
7199    }
7200
7201    @keyframes bounce {
7202
7203        0%,
7204        100% {
7205            transform: translateY(0);
7206        }
7207
7208        50% {
7209            transform: translateY(-4px);
7210        }
7211    }
7212
7213    .holiday-notice-close {
7214        background: rgba(255, 255, 255, 0.2);
7215        border: 1px solid rgba(255, 255, 255, 0.3);
7216        border-radius: 6px;
7217        padding: 6px;
7218        cursor: pointer;
7219        color: #ffffff;
7220        transition: all 0.2s ease;
7221        flex-shrink: 0;
7222        display: flex;
7223        align-items: center;
7224        justify-content: center;
7225        width: 32px;
7226        height: 32px;
7227    }
7228
7229    .holiday-notice-close:hover {
7230        background: rgba(255, 255, 255, 0.3);
7231        transform: scale(1.05);
7232    }
7233
7234    .holiday-notice-close:active {
7235        transform: scale(0.95);
7236    }
7237
7238    .holiday-notice-close:focus {
7239        outline: 2px solid rgba(255, 255, 255, 0.5);
7240        outline-offset: 2px;
7241    }
7242
7243    /* Body padding adjustment when banner is visible */
7244    body.has-holiday-notice {
7245        padding-top: 52px;
7246    }
7247
7248    /* Tablet Styles */
7249    @media (max-width: 1024px) {
7250        .holiday-notice-container {
7251            padding: 10px 16px;
7252        }
7253
7254        .holiday-notice-text {
7255            font-size: 13px;
7256        }
7257
7258        .holiday-notice-icon {
7259            font-size: 18px;
7260        }
7261
7262        body.has-holiday-notice {
7263            padding-top: 48px;
7264        }
7265    }
7266
7267    /* Mobile Styles */
7268    @media (max-width: 640px) {
7269        .holiday-notice-container {
7270            padding: 10px 12px;
7271            gap: 8px;
7272        }
7273
7274        .holiday-notice-content {
7275            gap: 8px;
7276        }
7277
7278        .holiday-notice-text {
7279            font-size: 12px;
7280            line-height: 1.4;
7281        }
7282
7283        .holiday-notice-icon {
7284            font-size: 16px;
7285        }
7286
7287        .holiday-notice-close {
7288            width: 28px;
7289            height: 28px;
7290        }
7291
7292        .holiday-notice-close svg {
7293            width: 16px;
7294            height: 16px;
7295        }
7296
7297        body.has-holiday-notice {
7298            padding-top: 44px;
7299        }
7300    }
7301
7302    /* Ensure header doesn't get covered - removed z-index as it conflicts with dropdown stacking */
7303    /* .header,
7304.navbar,
7305header {
7306    position: relative;
7307    z-index: 100;
7308} */
7309
7310    /**
7311 * Benchmark Section Styles
7312 * For product detail page benchmark display
7313 */
7314
7315    .pd-benchmark-section {
7316        background: #fff;
7317        border-radius: 12px;
7318        padding: 24px;
7319        margin: 32px 0;
7320        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
7321        border: 1px solid #e5e7eb;
7322    }
7323
7324    .benchmark-header {
7325        margin-bottom: 20px;
7326    }
7327
7328    .benchmark-title {
7329        font-size: 22px;
7330        font-weight: 700;
7331        color: #1a1a1a;
7332        margin: 0 0 12px 0;
7333        display: flex;
7334        align-items: center;
7335        gap: 8px;
7336    }
7337
7338    .benchmark-hint {
7339        font-size: 14px;
7340        color: #6b7280;
7341        margin: 0;
7342    }
7343
7344    /* Preview Badges */
7345    .benchmark-preview-badges {
7346        display: flex;
7347        flex-wrap: wrap;
7348        gap: 10px;
7349        margin-top: 12px;
7350    }
7351
7352    .benchmark-badge {
7353        display: inline-flex;
7354        align-items: center;
7355        gap: 6px;
7356        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
7357        color: #fff;
7358        padding: 8px 16px;
7359        border-radius: 20px;
7360        font-size: 13px;
7361        font-weight: 500;
7362        box-shadow: 0 2px 6px rgba(102, 126, 234, 0.25);
7363        transition: all 0.2s ease;
7364    }
7365
7366    .benchmark-badge:hover {
7367        transform: translateY(-2px);
7368        box-shadow: 0 4px 12px rgba(102, 126, 234, 0.35);
7369    }
7370
7371    .benchmark-badge strong {
7372        font-weight: 600;
7373        opacity: 0.9;
7374    }
7375
7376    /* Load Button */
7377    .btn-load-benchmark {
7378        display: flex;
7379        align-items: center;
7380        justify-content: center;
7381        gap: 10px;
7382        width: 100%;
7383        max-width: 420px;
7384        padding: 14px 24px;
7385        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
7386        color: #fff;
7387        border: none;
7388        border-radius: 8px;
7389        font-size: 15px;
7390        font-weight: 600;
7391        cursor: pointer;
7392        transition: all 0.3s ease;
7393        box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);
7394        margin: 0 auto;
7395    }
7396
7397    .btn-load-benchmark:hover:not(:disabled) {
7398        transform: translateY(-2px);
7399        box-shadow: 0 6px 16px rgba(102, 126, 234, 0.4);
7400    }
7401
7402    .btn-load-benchmark:disabled {
7403        opacity: 0.6;
7404        cursor: not-allowed;
7405    }
7406
7407    .btn-load-benchmark .btn-icon {
7408        font-size: 20px;
7409    }
7410
7411    .btn-load-benchmark.loading .btn-icon {
7412        animation: spin 1s linear infinite;
7413    }
7414
7415    @keyframes spin {
7416        from {
7417            transform: rotate(0deg);
7418        }
7419
7420        to {
7421            transform: rotate(360deg);
7422        }
7423    }
7424
7425    /* Benchmark Content */
7426    .benchmark-content {
7427        margin-top: 24px;
7428        padding-top: 24px;
7429        border-top: 2px solid #f3f4f6;
7430    }
7431
7432    .benchmark-loading {
7433        text-align: center;
7434        padding: 40px 20px;
7435        color: #6b7280;
7436    }
7437
7438    .benchmark-loading-spinner {
7439        width: 48px;
7440        height: 48px;
7441        margin: 0 auto 16px;
7442        border: 4px solid #f3f4f6;
7443        border-top-color: #667eea;
7444        border-radius: 50%;
7445        animation: spin 1s linear infinite;
7446    }
7447
7448    .benchmark-error {
7449        text-align: center;
7450        padding: 32px 20px;
7451        color: #ef4444;
7452        background: #fee2e2;
7453        border-radius: 8px;
7454    }
7455
7456    /* Benchmark Data Display */
7457    .benchmark-data-grid {
7458        display: grid;
7459        grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
7460        gap: 16px;
7461        margin-bottom: 24px;
7462    }
7463
7464    .benchmark-card {
7465        background: linear-gradient(135deg, #667eea15 0%, #764ba215 100%);
7466        border: 1px solid #e5e7eb;
7467        border-radius: 10px;
7468        padding: 18px;
7469        text-align: center;
7470        transition: all 0.2s ease;
7471    }
7472
7473    .benchmark-card:hover {
7474        transform: translateY(-3px);
7475        box-shadow: 0 6px 16px rgba(102, 126, 234, 0.15);
7476    }
7477
7478    .benchmark-card-label {
7479        font-size: 13px;
7480        color: #6b7280;
7481        font-weight: 500;
7482        margin-bottom: 8px;
7483        text-transform: uppercase;
7484        letter-spacing: 0.5px;
7485    }
7486
7487    .benchmark-card-value {
7488        font-size: 24px;
7489        font-weight: 700;
7490        color: #1a1a1a;
7491        line-height: 1.2;
7492    }
7493
7494    .benchmark-card-value.large {
7495        font-size: 28px;
7496    }
7497
7498    .benchmark-card-subtitle {
7499        font-size: 12px;
7500        color: #9ca3af;
7501        margin-top: 4px;
7502    }
7503
7504    /* Spec Details */
7505    .benchmark-specs {
7506        background: #f9fafb;
7507        border-radius: 10px;
7508        padding: 20px;
7509        margin-top: 20px;
7510    }
7511
7512    .benchmark-specs-title {
7513        font-size: 16px;
7514        font-weight: 600;
7515        color: #1a1a1a;
7516        margin: 0 0 16px 0;
7517    }
7518
7519    .benchmark-spec-row {
7520        display: flex;
7521        justify-content: space-between;
7522        padding: 10px 0;
7523        border-bottom: 1px solid #e5e7eb;
7524    }
7525
7526    .benchmark-spec-row:last-child {
7527        border-bottom: none;
7528    }
7529
7530    .benchmark-spec-label {
7531        font-size: 14px;
7532        color: #6b7280;
7533        font-weight: 500;
7534    }
7535
7536    .benchmark-spec-value {
7537        font-size: 14px;
7538        color: #1a1a1a;
7539        font-weight: 600;
7540        text-align: right;
7541    }
7542
7543    /* Score Badges */
7544    .benchmark-score-badge {
7545        display: inline-block;
7546        padding: 6px 14px;
7547        border-radius: 20px;
7548        font-size: 13px;
7549        font-weight: 600;
7550        margin-top: 8px;
7551    }
7552
7553    .benchmark-score-badge.excellent {
7554        background: #10b981;
7555        color: #fff;
7556    }
7557
7558    .benchmark-score-badge.good {
7559        background: #3b82f6;
7560        color: #fff;
7561    }
7562
7563    .benchmark-score-badge.average {
7564        background: #f59e0b;
7565        color: #fff;
7566    }
7567
7568    .benchmark-score-badge.poor {
7569        background: #ef4444;
7570        color: #fff;
7571    }
7572
7573    /* Attribution */
7574    .benchmark-attribution {
7575        text-align: center;
7576        margin-top: 24px;
7577        padding-top: 20px;
7578        border-top: 1px solid #e5e7eb;
7579        font-size: 13px;
7580        color: #9ca3af;
7581    }
7582
7583    .benchmark-attribution a {
7584        color: #667eea;
7585        text-decoration: none;
7586        font-weight: 500;
7587    }
7588
7589    .benchmark-attribution a:hover {
7590        text-decoration: underline;
7591    }
7592
7593    /* Responsive */
7594    @media (max-width: 768px) {
7595        .pd-benchmark-section {
7596            padding: 16px;
7597            margin: 20px 0;
7598        }
7599
7600        .benchmark-title {
7601            font-size: 18px;
7602        }
7603
7604        .benchmark-preview-badges {
7605            flex-direction: column;
7606            gap: 8px;
7607        }
7608
7609        .benchmark-badge {
7610            justify-content: center;
7611        }
7612
7613        .btn-load-benchmark {
7614            font-size: 14px;
7615            padding: 12px 20px;
7616        }
7617
7618        .benchmark-data-grid {
7619            grid-template-columns: 1fr 1fr;
7620            gap: 12px;
7621        }
7622
7623        .benchmark-card {
7624            padding: 14px;
7625        }
7626
7627        .benchmark-card-value {
7628            font-size: 20px;
7629        }
7630
7631        .benchmark-spec-row {
7632            flex-direction: column;
7633            gap: 4px;
7634        }
7635
7636        .benchmark-spec-value {
7637            text-align: left;
7638        }
7639    }
7640
7641    @media (max-width: 480px) {
7642        .benchmark-data-grid {
7643            grid-template-columns: 1fr;
7644        }
7645    }
7646
7647    /* Tile Mega Menu — Modern E-commerce Enhanced (2025) */
7648
7649    /* Design Tokens */
7650    :root {
7651        --mm2-bg: #ffffff;
7652        --mm2-surface: #ffffff;
7653        --mm2-surface-elevated: rgba(255, 255, 255, 0.98);
7654        --mm2-muted: #f8fafc;
7655        --mm2-border: #e2e8f0;
7656        --mm2-border-strong: #cbd5e1;
7657        --mm2-accent: #6366f1;
7658        --mm2-accent-hover: #4f46e5;
7659        --mm2-accent-10: rgba(99, 102, 241, .10);
7660        --mm2-accent-20: rgba(99, 102, 241, .20);
7661        --mm2-fg: #0f172a;
7662        --mm2-fg-muted: #64748b;
7663        --mm2-fg-light: #94a3b8;
7664
7665        /* Enhanced Shadows - Multi-layer elevation */
7666        --mm2-shadow-sm: 0 2px 8px rgba(15, 23, 42, .06), 0 1px 2px rgba(15, 23, 42, .04);
7667        --mm2-shadow-md: 0 8px 24px rgba(15, 23, 42, .10), 0 2px 8px rgba(15, 23, 42, .06);
7668        --mm2-shadow-lg: 0 20px 60px rgba(15, 23, 42, .14), 0 8px 24px rgba(15, 23, 42, .08);
7669        --mm2-shadow-xl: 0 32px 80px rgba(15, 23, 42, .18), 0 12px 32px rgba(15, 23, 42, .10);
7670        --mm2-shadow-hover: 0 16px 40px rgba(15, 23, 42, .16), 0 6px 16px rgba(15, 23, 42, .08);
7671
7672        /* Border Radius */
7673        --mm2-radius-xl: 20px;
7674        --mm2-radius-lg: 16px;
7675        --mm2-radius-md: 12px;
7676        --mm2-radius-sm: 10px;
7677
7678        --mm2-z: 60;
7679
7680        /* Animation Timing */
7681        --mm2-transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
7682        --mm2-transition-base: 250ms cubic-bezier(0.4, 0, 0.2, 1);
7683        --mm2-transition-slow: 350ms cubic-bezier(0.4, 0, 0.2, 1);
7684    }
7685
7686    .navbar {
7687        position: relative;
7688        z-index: var(--mm2-z);
7689    }
7690
7691    /* Trigger Button - Enhanced */
7692    .mm2-trigger {
7693        display: inline-flex;
7694        align-items: center;
7695        gap: 8px;
7696        padding: 10px 14px;
7697        border-radius: var(--mm2-radius-md);
7698        border: 1.5px solid var(--mm2-border);
7699        background: var(--mm2-surface);
7700        color: var(--mm2-fg);
7701        cursor: pointer;
7702        user-select: none;
7703        transition: all var(--mm2-transition-fast);
7704        text-decoration: none;
7705        font-weight: 600;
7706        box-shadow: var(--mm2-shadow-sm);
7707    }
7708
7709    .mm2-trigger:hover {
7710        border-color: var(--mm2-accent);
7711        background: var(--mm2-muted);
7712        box-shadow: var(--mm2-shadow-md);
7713        transform: translateY(-1px);
7714    }
7715
7716    .mm2-trigger:active {
7717        transform: translateY(0);
7718    }
7719
7720    .mm2-trigger svg {
7721        max-width: unset !important;
7722        transition: transform var(--mm2-transition-fast);
7723    }
7724
7725    .mm2-trigger:hover svg {
7726        transform: scale(1.05);
7727    }
7728
7729    /* Backdrop - Enhanced Glassmorphism */
7730    .mm2-backdrop {
7731        position: fixed;
7732        inset: 0;
7733        top: 0;
7734        left: 0;
7735        right: 0;
7736        bottom: 0;
7737        background: rgba(15, 23, 42, .40);
7738        backdrop-filter: blur(8px) saturate(1.2);
7739        -webkit-backdrop-filter: blur(8px) saturate(1.2);
7740        opacity: 0;
7741        pointer-events: none;
7742        z-index: 499;
7743        transition: opacity var(--mm2-transition-base);
7744    }
7745
7746    .mm2-open .mm2-backdrop {
7747        opacity: 1;
7748        pointer-events: auto;
7749    }
7750
7751    /* Panel - Glassmorphism Enhanced */
7752    .mm2-panel {
7753        position: fixed;
7754        left: 50%;
7755        top: 120px;
7756        transform: translateX(-50%) translateY(-16px);
7757        width: min(1200px, 95vw);
7758        background: var(--mm2-surface-elevated);
7759        backdrop-filter: blur(20px) saturate(1.8);
7760        -webkit-backdrop-filter: blur(20px) saturate(1.8);
7761        border: 1.5px solid var(--mm2-border-strong);
7762        border-radius: var(--mm2-radius-xl);
7763        box-shadow: var(--mm2-shadow-xl);
7764        display: none;
7765        overflow: hidden;
7766        opacity: 0;
7767        z-index: 500;
7768        transition: transform var(--mm2-transition-slow), opacity var(--mm2-transition-base);
7769    }
7770
7771    .mm2-open .mm2-panel {
7772        display: block;
7773        opacity: 1;
7774        transform: translateX(-50%) translateY(0);
7775    }
7776
7777    /* View switcher */
7778    .mm2-view {
7779        display: none;
7780    }
7781
7782    .mm2-open .mm2-view.is-active {
7783        display: block;
7784    }
7785
7786    /* Top grid (level-1 tiles) - Enhanced */
7787    .mm2-top {
7788        padding: 24px;
7789        max-height: 75vh;
7790        overflow: auto;
7791    }
7792
7793    .mm2-grid {
7794        display: grid;
7795        grid-template-columns: repeat(4, minmax(0, 1fr));
7796        gap: 14px;
7797    }
7798
7799    @media (max-width: 1200px) {
7800        .mm2-grid {
7801            grid-template-columns: repeat(3, minmax(0, 1fr));
7802        }
7803    }
7804
7805    @media (max-width: 960px) {
7806        .mm2-grid {
7807            grid-template-columns: repeat(2, minmax(0, 1fr));
7808            gap: 12px;
7809        }
7810    }
7811
7812    /* Stagger animation for cards */
7813    .mm2-open .mm2-card {
7814        animation: slideInUp 0.3s cubic-bezier(0.4, 0, 0.2, 1) backwards;
7815    }
7816
7817    .mm2-open .mm2-card:nth-child(1) {
7818        animation-delay: 0.02s;
7819    }
7820
7821    .mm2-open .mm2-card:nth-child(2) {
7822        animation-delay: 0.04s;
7823    }
7824
7825    .mm2-open .mm2-card:nth-child(3) {
7826        animation-delay: 0.06s;
7827    }
7828
7829    .mm2-open .mm2-card:nth-child(4) {
7830        animation-delay: 0.08s;
7831    }
7832
7833    .mm2-open .mm2-card:nth-child(5) {
7834        animation-delay: 0.10s;
7835    }
7836
7837    .mm2-open .mm2-card:nth-child(6) {
7838        animation-delay: 0.12s;
7839    }
7840
7841    .mm2-open .mm2-card:nth-child(7) {
7842        animation-delay: 0.14s;
7843    }
7844
7845    .mm2-open .mm2-card:nth-child(8) {
7846        animation-delay: 0.16s;
7847    }
7848
7849    .mm2-open .mm2-card:nth-child(9) {
7850        animation-delay: 0.18s;
7851    }
7852
7853    .mm2-open .mm2-card:nth-child(10) {
7854        animation-delay: 0.20s;
7855    }
7856
7857    .mm2-open .mm2-card:nth-child(11) {
7858        animation-delay: 0.22s;
7859    }
7860
7861    .mm2-open .mm2-card:nth-child(12) {
7862        animation-delay: 0.24s;
7863    }
7864
7865    .mm2-open .mm2-card:nth-child(n+13) {
7866        animation-delay: 0.26s;
7867    }
7868
7869    @keyframes slideInUp {
7870        from {
7871            opacity: 0;
7872            transform: translateY(12px);
7873        }
7874
7875        to {
7876            opacity: 1;
7877            transform: translateY(0);
7878        }
7879    }
7880
7881    .mm2-card {
7882        position: relative;
7883        display: flex;
7884        gap: 14px;
7885        align-items: center;
7886        padding: 16px;
7887        border-radius: var(--mm2-radius-md);
7888        background: var(--mm2-surface);
7889        border: 1.5px solid var(--mm2-border);
7890        text-decoration: none;
7891        color: var(--mm2-fg);
7892        transition: all var(--mm2-transition-fast);
7893        min-height: 72px;
7894        box-shadow: var(--mm2-shadow-sm);
7895    }
7896
7897    .mm2-card:hover {
7898        border-color: var(--mm2-accent);
7899        background: linear-gradient(135deg, rgba(255, 255, 255, 1), rgba(248, 250, 252, 1));
7900        box-shadow: var(--mm2-shadow-hover);
7901        transform: translateY(-3px);
7902    }
7903
7904    .mm2-card:active {
7905        transform: translateY(-1px);
7906    }
7907
7908    /* Icon with category-specific gradients */
7909    .mm2-card .mm2-ico {
7910        width: 48px;
7911        height: 48px;
7912        border-radius: 12px;
7913        display: inline-flex;
7914        align-items: center;
7915        justify-content: center;
7916        background: linear-gradient(135deg, #e0e7ff, #fff);
7917        border: 1.5px solid #c7d2fe;
7918        color: #4f46e5;
7919        flex-shrink: 0;
7920        transition: all var(--mm2-transition-fast);
7921        box-shadow: 0 2px 8px rgba(99, 102, 241, 0.1);
7922    }
7923
7924    .mm2-card:hover .mm2-ico {
7925        transform: scale(1.08) rotate(2deg);
7926        box-shadow: 0 4px 16px rgba(99, 102, 241, 0.2);
7927    }
7928
7929    .mm2-card .mm2-ico svg {
7930        transition: transform var(--mm2-transition-fast);
7931    }
7932
7933    .mm2-card:hover .mm2-ico svg {
7934        transform: scale(1.1);
7935    }
7936
7937    .mm2-card .mm2-title {
7938        font-weight: 700;
7939        font-size: 15px;
7940        letter-spacing: -0.01em;
7941        line-height: 1.3;
7942    }
7943
7944    .mm2-card .mm2-sub {
7945        color: var(--mm2-fg-muted);
7946        font-size: 12.5px;
7947        margin-top: 3px;
7948        display: flex;
7949        align-items: center;
7950        gap: 4px;
7951        white-space: nowrap;
7952        overflow: hidden;
7953        text-overflow: ellipsis;
7954    }
7955
7956    .mm2-card .mm2-count {
7957        display: inline-flex;
7958        padding: 2px 8px;
7959        border-radius: 6px;
7960        background: var(--mm2-accent-10);
7961        color: var(--mm2-accent);
7962        font-weight: 600;
7963        font-size: 11px;
7964        margin-left: 4px;
7965    }
7966
7967    /* Detail view (level-2 + level-3) - Enhanced */
7968    .mm2-detail {
7969        position: relative;
7970        padding: 16px 24px 24px;
7971        max-height: 70vh;
7972        overflow: auto;
7973    }
7974
7975    .mm2-detail-header {
7976        display: flex;
7977        align-items: center;
7978        gap: 14px;
7979        padding: 10px 0 16px;
7980        border-bottom: 2px solid var(--mm2-muted);
7981        margin-bottom: 16px;
7982    }
7983
7984    .mm2-back {
7985        display: inline-flex;
7986        align-items: center;
7987        justify-content: center;
7988        width: 40px;
7989        height: 40px;
7990        border-radius: 12px;
7991        border: 1.5px solid var(--mm2-border);
7992        background: #fff;
7993        color: var(--mm2-fg);
7994        cursor: pointer;
7995        transition: all var(--mm2-transition-fast);
7996        box-shadow: var(--mm2-shadow-sm);
7997    }
7998
7999    .mm2-back:hover {
8000        border-color: var(--mm2-accent);
8001        background: var(--mm2-muted);
8002        transform: translateX(-3px);
8003        box-shadow: var(--mm2-shadow-md);
8004    }
8005
8006    .mm2-detail-title {
8007        font-weight: 800;
8008        font-size: 18px;
8009        letter-spacing: -0.02em;
8010    }
8011
8012    /* Two-pane layout (desktop) - Enhanced */
8013    .mm2-detail-layout {
8014        display: grid;
8015        grid-template-columns: 280px 1fr;
8016        gap: 20px;
8017    }
8018
8019    /* Left: subnav (level-2 list) - Enhanced */
8020    .mm2-subnav {
8021        position: sticky;
8022        top: 8px;
8023        align-self: start;
8024        max-height: calc(70vh - 56px);
8025        overflow: auto;
8026        padding-right: 6px;
8027    }
8028
8029    .mm2-subnav::-webkit-scrollbar {
8030        width: 8px;
8031        height: 8px;
8032    }
8033
8034    .mm2-subnav::-webkit-scrollbar-track {
8035        background: transparent;
8036    }
8037
8038    .mm2-subnav::-webkit-scrollbar-thumb {
8039        background: #cbd5e1;
8040        border-radius: 8px;
8041    }
8042
8043    .mm2-subnav::-webkit-scrollbar-thumb:hover {
8044        background: #94a3b8;
8045    }
8046
8047    .mm2-subitem {
8048        display: flex;
8049        align-items: center;
8050        justify-content: flex-start;
8051        gap: 10px;
8052        width: 100%;
8053        padding: 12px 14px;
8054        border-radius: 12px;
8055        border: 1.5px solid transparent;
8056        background: transparent;
8057        color: var(--mm2-fg);
8058        cursor: pointer;
8059        text-align: left;
8060        transition: all var(--mm2-transition-fast);
8061        margin-bottom: 6px;
8062        font-weight: 600;
8063        font-size: 14px;
8064        position: relative;
8065    }
8066
8067    .mm2-subitem::before {
8068        content: '';
8069        position: absolute;
8070        left: 0;
8071        top: 50%;
8072        transform: translateY(-50%);
8073        width: 3px;
8074        height: 0;
8075        background: var(--mm2-accent);
8076        border-radius: 0 2px 2px 0;
8077        transition: height var(--mm2-transition-fast);
8078    }
8079
8080    .mm2-subitem:hover {
8081        background: var(--mm2-muted);
8082        color: var(--mm2-accent-hover);
8083    }
8084
8085    .mm2-subitem.active {
8086        background: linear-gradient(135deg, rgba(99, 102, 241, 0.08), rgba(99, 102, 241, 0.04));
8087        border-color: var(--mm2-accent-20);
8088        color: var(--mm2-accent-hover);
8089        box-shadow: inset 0 0 0 1px rgba(99, 102, 241, 0.1);
8090    }
8091
8092    .mm2-subitem.active::before {
8093        height: 24px;
8094    }
8095
8096    /* Right: subcontent (level-3 grid) - Enhanced */
8097    .mm2-subcontent {
8098        min-height: 240px;
8099    }
8100
8101    .mm2-links {
8102        display: grid;
8103        gap: 12px 14px;
8104        grid-template-columns: repeat(3, minmax(0, 1fr));
8105    }
8106
8107    @media (max-width: 1200px) {
8108        .mm2-links {
8109            grid-template-columns: repeat(2, minmax(0, 1fr));
8110        }
8111    }
8112
8113    .mm2-link {
8114        display: flex;
8115        align-items: center;
8116        gap: 12px;
8117        padding: 14px;
8118        border: 1.5px solid var(--mm2-border);
8119        border-radius: var(--mm2-radius-md);
8120        background: var(--mm2-surface);
8121        color: var(--mm2-fg);
8122        text-decoration: none;
8123        min-height: 52px;
8124        font-weight: 500;
8125        font-size: 14px;
8126        transition: all var(--mm2-transition-fast);
8127        box-shadow: var(--mm2-shadow-sm);
8128        position: relative;
8129        justify-content: space-between;
8130    }
8131
8132    .mm2-link:hover {
8133        background: var(--mm2-muted);
8134        border-color: var(--mm2-accent);
8135        transform: translateX(4px);
8136        box-shadow: var(--mm2-shadow-md);
8137    }
8138
8139    .mm2-link-text {
8140        flex: 1;
8141    }
8142
8143    /* Product Thumbnails */
8144    .mm2-thumbs {
8145        display: flex;
8146        gap: 6px;
8147        align-items: center;
8148        margin-left: auto;
8149        flex-shrink: 0;
8150    }
8151
8152    .mm2-thumb {
8153        width: 36px;
8154        height: 36px;
8155        border-radius: 8px;
8156        object-fit: cover;
8157        border: 1.5px solid var(--mm2-border);
8158        box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
8159        transition: all var(--mm2-transition-fast);
8160        background: var(--mm2-muted);
8161    }
8162
8163    .mm2-link:hover .mm2-thumb {
8164        border-color: var(--mm2-accent);
8165        box-shadow: 0 4px 10px rgba(99, 102, 241, 0.15);
8166        transform: scale(1.08);
8167    }
8168
8169    /* Thumbnail Skeleton Loader */
8170    .mm2-thumb-skeleton {
8171        width: 36px;
8172        height: 36px;
8173        border-radius: 8px;
8174        background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);
8175        background-size: 200% 100%;
8176        animation: shimmer 1.5s infinite;
8177        border: 1.5px solid var(--mm2-border);
8178    }
8179
8180    .mm2-badge {
8181        font-size: 11px;
8182        padding: 3px 10px;
8183        margin-left: auto;
8184        border-radius: 12px;
8185        background: var(--mm2-accent-10);
8186        color: var(--mm2-accent);
8187        font-weight: 700;
8188        border: 1px solid var(--mm2-accent-20);
8189    }
8190
8191    /* "See all" highlight card - Enhanced */
8192    .mm2-seeall {
8193        border: 2px dashed var(--mm2-accent);
8194        background: linear-gradient(135deg, rgba(99, 102, 241, .08), rgba(99, 102, 241, .02));
8195        font-weight: 700;
8196    }
8197
8198    .mm2-seeall:hover {
8199        background: linear-gradient(135deg, rgba(99, 102, 241, .14), rgba(99, 102, 241, .06));
8200        border-style: solid;
8201        transform: translateX(6px) scale(1.02);
8202    }
8203
8204    /* Mobile panel styles - Enhanced with drag handle & better touch targets */
8205    @media (max-width: 960px) {
8206        .mm2-panel {
8207            position: fixed;
8208            left: 0;
8209            right: 0;
8210            bottom: 0;
8211            top: auto;
8212            width: 100%;
8213            max-height: 88vh;
8214            transform: translateX(0) translateY(100%);
8215            border-radius: var(--mm2-radius-xl) var(--mm2-radius-xl) 0 0;
8216            border-bottom: none;
8217        }
8218
8219        .mm2-open .mm2-panel {
8220            transform: translateX(0) translateY(0);
8221            z-index: 9999;
8222        }
8223
8224        /* Enhanced backdrop for mobile */
8225        .mm2-backdrop {
8226            backdrop-filter: blur(6px) saturate(1.2);
8227            -webkit-backdrop-filter: blur(6px) saturate(1.2);
8228        }
8229
8230        /* Mobile close button - Soft glassmorphism */
8231        .mm2-mobile-close {
8232            position: absolute;
8233            top: 4px;
8234            right: 8px;
8235            width: 28px;
8236            height: 28px;
8237            border-radius: 50%;
8238            border: 1px solid rgba(226, 232, 240, 0.6);
8239            background: rgba(255, 255, 255, 0.85);
8240            backdrop-filter: blur(12px) saturate(1.8);
8241            -webkit-backdrop-filter: blur(12px) saturate(1.8);
8242            color: var(--mm2-fg-muted);
8243            display: inline-flex;
8244            align-items: center;
8245            justify-content: center;
8246            cursor: pointer;
8247            transition: all var(--mm2-transition-fast);
8248            box-shadow: 0 2px 8px rgba(15, 23, 42, 0.08);
8249            z-index: 20;
8250        }
8251
8252        .mm2-mobile-close:hover {
8253            background: rgba(254, 242, 242, 0.95);
8254            border-color: rgba(252, 165, 165, 0.8);
8255            color: #dc2626;
8256            box-shadow: 0 4px 12px rgba(220, 38, 38, 0.15);
8257        }
8258
8259        .mm2-mobile-close:active {
8260            transform: scale(0.92);
8261        }
8262
8263        /* Drag handle indicator */
8264        .mm2-top::before,
8265        .mm2-detail::before {
8266            content: '';
8267            position: sticky;
8268            top: 0;
8269            left: 50%;
8270            transform: translateX(-50%);
8271            width: 40px;
8272            height: 4px;
8273            background: var(--mm2-border-strong);
8274            border-radius: 999px;
8275            margin: 12px auto 20px;
8276            display: block;
8277            z-index: 10;
8278            transition: background var(--mm2-transition-fast);
8279        }
8280
8281        .mm2-panel:active .mm2-top::before,
8282        .mm2-panel:active .mm2-detail::before {
8283            background: #94a3b8;
8284        }
8285
8286        .mm2-top {
8287            padding: 10px;
8288        }
8289
8290        .mm2-top,
8291        .mm2-detail {
8292            max-height: min(82vh, 720px);
8293            padding-top: 8px;
8294        }
8295
8296        /* Two-pane collapses: subnav becomes GRID (no horizontal scroll) */
8297        .mm2-detail-layout {
8298            display: block;
8299        }
8300
8301        .mm2-subnav {
8302            position: static;
8303            max-height: none;
8304            overflow: visible;
8305            display: grid;
8306            gap: 10px;
8307            padding: 10px 4px 16px;
8308            margin-bottom: 16px;
8309            grid-template-columns: repeat(2, minmax(0, 1fr));
8310            border-bottom: 2px solid var(--mm2-muted);
8311        }
8312
8313        .mm2-subitem {
8314            margin: 0;
8315            width: 100%;
8316            text-align: center;
8317            border-radius: 14px;
8318            background: #fff;
8319            border: 1.5px solid var(--mm2-border);
8320            white-space: normal;
8321            line-height: 1.3;
8322            min-height: 48px;
8323            justify-content: center;
8324            padding: 12px 10px;
8325            font-size: 13.5px;
8326            box-shadow: var(--mm2-shadow-sm);
8327        }
8328
8329        .mm2-subitem::before {
8330            display: none;
8331        }
8332
8333        .mm2-subitem:hover {
8334            transform: scale(1.02);
8335        }
8336
8337        .mm2-subitem.active {
8338            background: linear-gradient(135deg, var(--mm2-accent), var(--mm2-accent-hover));
8339            border-color: var(--mm2-accent-hover);
8340            color: white;
8341            box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3);
8342            font-weight: 700;
8343        }
8344
8345        /* Level-3 grid tetap 2 kolom dengan spacing lebih baik */
8346        .mm2-links {
8347            grid-template-columns: repeat(2, minmax(0, 1fr));
8348            gap: 10px;
8349        }
8350
8351        /* Mobile: hide thumbnails untuk save space */
8352        .mm2-thumbs {
8353            display: none;
8354        }
8355
8356        /* Larger touch targets for mobile */
8357        .mm2-card {
8358            min-height: 80px;
8359            padding: 18px 14px;
8360        }
8361
8362        .mm2-card .mm2-ico {
8363            width: 50px;
8364            height: 50px;
8365        }
8366
8367        .mm2-card .mm2-title {
8368            font-size: 14px;
8369        }
8370
8371        .mm2-card .mm2-sub {
8372            font-size: 11.5px;
8373        }
8374
8375        .mm2-link {
8376            min-height: 56px;
8377            padding: 16px;
8378        }
8379
8380        .mm2-back {
8381            width: 44px;
8382            height: 44px;
8383        }
8384
8385        /* Grid spacing */
8386        .mm2-grid {
8387            gap: 10px;
8388        }
8389    }
8390
8391    /* Product Compare Feature Styles */
8392
8393    /* Compare Button in Product Detail - Modern Chip Style */
8394    .pd-compare-section {
8395        margin: 0.5rem 0;
8396        display: flex;
8397        align-items: center;
8398        gap: 0.5rem;
8399    }
8400
8401    .pd-compare-btn {
8402        display: inline-flex;
8403        align-items: center;
8404        gap: 0.4rem;
8405        padding: 0.5rem 0.85rem;
8406        border: 1px solid #cbd5e1;
8407        border-radius: 20px;
8408        background: #fff;
8409        color: #64748b;
8410        font-weight: 600;
8411        font-size: 0.8rem;
8412        cursor: pointer;
8413        transition: all 0.2s ease;
8414        position: relative;
8415        white-space: nowrap;
8416    }
8417
8418    .pd-compare-btn:hover {
8419        border-color: #3b82f6;
8420        color: #3b82f6;
8421        background: #f0f9ff;
8422        transform: translateY(-1px);
8423        box-shadow: 0 2px 6px rgba(59, 130, 246, 0.15);
8424    }
8425
8426    .pd-compare-btn.added {
8427        border-color: #16a34a;
8428        color: #16a34a;
8429        background: #f0fdf4;
8430    }
8431
8432    .pd-compare-btn .compare-remove {
8433        display: none;
8434    }
8435
8436    .pd-compare-btn.added .compare-text {
8437        display: none;
8438    }
8439
8440    .pd-compare-btn.added .compare-remove {
8441        display: flex !important;
8442        align-items: center;
8443        gap: 0.25rem;
8444        font-weight: 600;
8445        font-size: 0.9rem;
8446        color: #dc2626 !important;
8447        opacity: 1 !important;
8448        visibility: visible !important;
8449        z-index: 1;
8450        position: relative;
8451    }
8452
8453    .pd-compare-btn.added .compare-remove[hidden] {
8454        display: flex !important;
8455    }
8456
8457    /* Force visibility for added state */
8458    .pd-compare-btn.added .compare-remove {
8459        display: flex !important;
8460    }
8461
8462    [hidden].compare-remove {
8463        display: none !important;
8464    }
8465
8466    .pd-compare-btn.added [hidden].compare-remove {
8467        display: flex !important;
8468    }
8469
8470    /* Ensure the added state text is always visible */
8471    .pd-compare-btn.added {
8472        border-color: #dc2626 !important;
8473        color: #dc2626 !important;
8474        background: #fef2f2 !important;
8475    }
8476
8477    .pd-compare-btn.added .compare-remove svg {
8478        color: #dc2626 !important;
8479    }
8480
8481    .pd-compare-btn.added:hover {
8482        border-color: #15803d;
8483        color: #15803d;
8484        background: #dcfce7;
8485        transform: translateY(-1px);
8486        box-shadow: 0 2px 6px rgba(22, 163, 74, 0.2);
8487    }
8488
8489    .pd-compare-btn .compare-icon {
8490        width: 16px;
8491        height: 16px;
8492        flex-shrink: 0;
8493    }
8494
8495    .pd-compare-info {
8496        display: inline-flex;
8497        align-items: center;
8498    }
8499
8500    .compare-note {
8501        color: #94a3b8;
8502        font-size: 0.7rem;
8503        font-weight: 500;
8504        transition: color 0.2s ease;
8505    }
8506
8507    .pd-compare-btn.added+.pd-compare-info .compare-note {
8508        color: #16a34a;
8509        font-weight: 600;
8510    }
8511
8512    /* Compare Badge in Navigation */
8513    .compare-indicator {
8514        position: relative;
8515    }
8516
8517    .compare-indicator .badge {
8518        position: absolute;
8519        top: -8px;
8520        right: -8px;
8521        min-width: 18px;
8522        height: 18px;
8523        padding: 0 5px;
8524        background: #ef4444;
8525        color: white;
8526        border-radius: 9px;
8527        font-size: 11px;
8528
8529
8530        /* Floating Compare Badge (Sticky) */
8531        .compare-floating-badge {
8532            position: fixed;
8533            right: 16px;
8534            bottom: calc(20px + 60px);
8535            /* Above scroll-to-top button */
8536            width: auto;
8537            min-width: 56px;
8538            height: 56px;
8539            padding: 0 16px;
8540            border-radius: 28px;
8541            background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
8542            color: #fff;
8543            box-shadow: 0 8px 24px -8px rgba(59, 130, 246, 0.5);
8544            cursor: pointer;
8545            z-index: 1104;
8546            opacity: 0;
8547            transform: translateY(8px) scale(0.9);
8548            transition: opacity 0.3s ease, transform 0.3s ease, box-shadow 0.2s ease;
8549            display: flex;
8550            align-items: center;
8551            justify-content: center;
8552            gap: 8px;
8553            font-weight: 600;
8554            font-size: 0.85rem;
8555            pointer-events: none;
8556        }
8557
8558        .compare-floating-badge.visible {
8559            opacity: 1;
8560            transform: translateY(0) scale(1);
8561            pointer-events: auto;
8562        }
8563
8564        .compare-floating-badge:hover {
8565            box-shadow: 0 12px 32px -10px rgba(59, 130, 246, 0.6);
8566            transform: translateY(-2px) scale(1.02);
8567        }
8568
8569        .compare-floating-badge:active {
8570            transform: translateY(0) scale(0.98);
8571        }
8572
8573        .compare-floating-badge .cfb-icon {
8574            width: 20px;
8575            height: 20px;
8576            flex-shrink: 0;
8577        }
8578
8579        .compare-floating-badge .cfb-count {
8580            font-size: 0.9rem;
8581            font-weight: 700;
8582            min-width: 20px;
8583            text-align: center;
8584            background: rgba(255, 255, 255, 0.25);
8585            padding: 2px 8px;
8586            border-radius: 12px;
8587            line-height: 1;
8588            display: flex;
8589            align-items: center;
8590            justify-content: center;
8591            height: 24px;
8592        }
8593
8594        .compare-floating-badge .cfb-text {
8595            display: none;
8596        }
8597
8598        @media (min-width: 641px) {
8599            .compare-floating-badge .cfb-text {
8600                display: block;
8601                white-space: nowrap;
8602            }
8603        }
8604
8605        @media (max-width: 640px) {
8606            .compare-floating-badge {
8607                right: 14px;
8608                bottom: calc(var(--scroll-top-bottom, calc(68px + 18px + env(safe-area-inset-bottom))) + 60px);
8609                min-width: 48px;
8610                height: 48px;
8611                padding: 0 12px;
8612                border-radius: 24px;
8613            }
8614
8615            .compare-floating-badge .cfb-icon {
8616                width: 18px;
8617                height: 18px;
8618            }
8619
8620            .compare-floating-badge .cfb-count {
8621                font-size: 0.8rem;
8622                padding: 2px 6px;
8623                height: 20px;
8624            }
8625        }
8626
8627        font-weight: 600;
8628        display: flex;
8629        align-items: center;
8630        justify-content: center;
8631        transform: scale(0);
8632        transition: transform 0.2s ease;
8633    }
8634
8635    .compare-indicator .badge.active {
8636        transform: scale(1);
8637    }
8638
8639    /* Compare Sidebar */
8640    .compare-sidebar {
8641        position: fixed;
8642        top: 0;
8643        right: -400px;
8644        width: 400px;
8645        height: 100vh;
8646        background: #ffffff;
8647        box-shadow: -4px 0 20px rgba(0, 0, 0, 0.1);
8648        z-index: 9999;
8649        display: flex;
8650        flex-direction: column;
8651        transition: right 0.3s ease;
8652    }
8653
8654    .compare-sidebar.open {
8655        right: 0;
8656    }
8657
8658    .compare-overlay {
8659        position: fixed;
8660        top: 0;
8661        left: 0;
8662        width: 100%;
8663        height: 100%;
8664        background: rgba(0, 0, 0, 0.5);
8665        z-index: 9998;
8666        opacity: 0;
8667        visibility: hidden;
8668        transition: all 0.3s ease;
8669    }
8670
8671    .compare-overlay.active {
8672        opacity: 1;
8673        visibility: visible;
8674    }
8675
8676    .compare-header {
8677        display: flex;
8678        align-items: center;
8679        justify-content: space-between;
8680        padding: 1.25rem;
8681        border-bottom: 1px solid #e2e8f0;
8682        background: #f8fafc;
8683    }
8684
8685    .compare-title {
8686        display: flex;
8687        align-items: center;
8688        gap: 0.5rem;
8689        font-size: 1rem;
8690        font-weight: 600;
8691        color: #1e293b;
8692        margin: 0;
8693    }
8694
8695    .compare-count {
8696        color: #64748b;
8697        font-weight: 400;
8698    }
8699
8700    .compare-close {
8701        display: flex;
8702        align-items: center;
8703        justify-content: center;
8704        width: 32px;
8705        height: 32px;
8706        border: none;
8707        border-radius: 6px;
8708        background: transparent;
8709        color: #64748b;
8710        cursor: pointer;
8711        transition: all 0.2s ease;
8712    }
8713
8714    .compare-close:hover {
8715        background: #e2e8f0;
8716        color: #374151;
8717    }
8718
8719    .compare-content {
8720        flex: 1;
8721        overflow-y: auto;
8722        padding: 1rem;
8723    }
8724
8725    .compare-empty {
8726        display: flex;
8727        flex-direction: column;
8728        align-items: center;
8729        justify-content: center;
8730        height: 100%;
8731        text-align: center;
8732        padding: 2rem 1rem;
8733    }
8734
8735    .compare-empty h5 {
8736        margin: 1rem 0 0.5rem;
8737        color: #374151;
8738    }
8739
8740    .compare-empty p {
8741        color: #64748b;
8742        font-size: 0.875rem;
8743        line-height: 1.5;
8744    }
8745
8746    .compare-list {
8747        display: flex;
8748        flex-direction: column;
8749        gap: 0.75rem;
8750    }
8751
8752    .compare-item {
8753        display: flex;
8754        align-items: center;
8755        gap: 0.75rem;
8756        padding: 0.75rem;
8757        border: 1px solid #e2e8f0;
8758        border-radius: 8px;
8759        background: #ffffff;
8760        transition: all 0.2s ease;
8761    }
8762
8763    .compare-item:hover {
8764        border-color: #cbd5e1;
8765        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
8766    }
8767
8768    .compare-item-image {
8769        flex-shrink: 0;
8770        width: 48px;
8771        height: 48px;
8772        border-radius: 6px;
8773        overflow: hidden;
8774        border: 1px solid #e2e8f0;
8775    }
8776
8777    .compare-item-image img {
8778        width: 100%;
8779        height: 100%;
8780        object-fit: cover;
8781    }
8782
8783    .compare-item-info {
8784        flex: 1;
8785        min-width: 0;
8786    }
8787
8788    .compare-item-name {
8789        font-weight: 500;
8790        font-size: 0.875rem;
8791        color: #1e293b;
8792        margin-bottom: 0.25rem;
8793        line-height: 1.3;
8794        display: -webkit-box;
8795        -webkit-line-clamp: 2;
8796        -webkit-box-orient: vertical;
8797        overflow: hidden;
8798    }
8799
8800    .compare-item-price {
8801        font-weight: 600;
8802        font-size: 0.8rem;
8803        color: #059669;
8804    }
8805
8806    .compare-item-remove {
8807        flex-shrink: 0;
8808        display: flex;
8809        align-items: center;
8810        justify-content: center;
8811        width: 28px;
8812        height: 28px;
8813        border: none;
8814        border-radius: 4px;
8815        background: transparent;
8816        color: #dc2626;
8817        cursor: pointer;
8818        transition: all 0.2s ease;
8819    }
8820
8821    .compare-item-remove:hover {
8822        background: #fef2f2;
8823        color: #991b1b;
8824    }
8825
8826    .compare-actions {
8827        padding: 1rem;
8828        border-top: 1px solid #e2e8f0;
8829        display: flex;
8830        gap: 0.75rem;
8831    }
8832
8833    .compare-actions .btn {
8834        flex: 1;
8835        padding: 0.75rem 1rem;
8836        border-radius: 6px;
8837        font-weight: 600;
8838        font-size: 0.875rem;
8839        display: flex;
8840        align-items: center;
8841        justify-content: center;
8842        gap: 0.5rem;
8843        cursor: pointer;
8844        transition: all 0.2s ease;
8845    }
8846
8847    .btn-outline-danger {
8848        border: 1px solid #dc2626;
8849        background: transparent;
8850        color: #dc2626;
8851    }
8852
8853    .btn-outline-danger:hover {
8854        background: #dc2626;
8855        color: white;
8856    }
8857
8858    .btn-primary {
8859        border: 1px solid #3b82f6;
8860        background: #3b82f6;
8861        color: white;
8862    }
8863
8864    .btn-primary:hover {
8865        background: #2563eb;
8866        border-color: #2563eb;
8867    }
8868
8869    .btn-primary:disabled {
8870        opacity: 0.5;
8871        cursor: not-allowed;
8872    }
8873
8874    .btn-primary:disabled:hover {
8875        background: #3b82f6;
8876        border-color: #3b82f6;
8877    }
8878
8879    /* AI Comparison Modal */
8880    .ai-compare-modal {
8881        position: fixed;
8882        top: 0;
8883        left: 0;
8884        width: 100%;
8885        height: 100%;
8886        z-index: 10000;
8887        display: none;
8888        align-items: center;
8889        justify-content: center;
8890    }
8891
8892    .ai-compare-modal.open {
8893        display: flex;
8894    }
8895
8896    .ai-compare-modal .modal-backdrop {
8897        position: absolute;
8898        top: 0;
8899        left: 0;
8900        width: 100%;
8901        height: 100%;
8902        background: rgba(0, 0, 0, 0.6);
8903        backdrop-filter: blur(4px);
8904    }
8905
8906    .modal-container {
8907        position: relative;
8908        width: 90%;
8909        max-width: 1000px;
8910        max-height: 90vh;
8911        background: #ffffff;
8912        border-radius: 12px;
8913        box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
8914        display: flex;
8915        flex-direction: column;
8916        overflow: hidden;
8917    }
8918
8919    .modal-header {
8920        display: flex;
8921        align-items: center;
8922        justify-content: space-between;
8923        padding: 1.5rem 2rem;
8924        border-bottom: 1px solid #e2e8f0;
8925        background: #f8fafc;
8926    }
8927
8928    .modal-title {
8929        display: flex;
8930        align-items: center;
8931        gap: 0.75rem;
8932        font-size: 1.25rem;
8933        font-weight: 600;
8934        color: #1e293b;
8935        margin: 0;
8936    }
8937
8938    .modal-close {
8939        display: flex;
8940        align-items: center;
8941        justify-content: center;
8942        width: 36px;
8943        height: 36px;
8944        border: none;
8945        border-radius: 8px;
8946        background: transparent;
8947        color: #64748b;
8948        cursor: pointer;
8949        transition: all 0.2s ease;
8950    }
8951
8952    .modal-close:hover {
8953        background: #e2e8f0;
8954        color: #374151;
8955    }
8956
8957    .modal-content {
8958        flex: 1;
8959        overflow-y: auto;
8960        padding: 2rem;
8961    }
8962
8963    /* AI Loading State */
8964    .ai-loading {
8965        display: flex;
8966        flex-direction: column;
8967        align-items: center;
8968        justify-content: center;
8969        padding: 3rem 2rem;
8970        text-align: center;
8971    }
8972
8973    .loading-animation {
8974        margin-bottom: 1rem;
8975    }
8976
8977    .typing-indicator {
8978        display: flex;
8979        align-items: center;
8980        justify-content: center;
8981        gap: 4px;
8982        margin-bottom: 1rem;
8983    }
8984
8985    .typing-indicator span {
8986        width: 8px;
8987        height: 8px;
8988        background: #3b82f6;
8989        border-radius: 50%;
8990        animation: typing 1.4s infinite ease-in-out;
8991    }
8992
8993    .typing-indicator span:nth-child(2) {
8994        animation-delay: 0.2s;
8995    }
8996
8997    .typing-indicator span:nth-child(3) {
8998        animation-delay: 0.4s;
8999    }
9000
9001    @keyframes typing {
9002
9003        0%,
9004        80%,
9005        100% {
9006            opacity: 0.3;
9007            transform: scale(0.8);
9008        }
9009
9010        40% {
9011            opacity: 1;
9012            transform: scale(1);
9013        }
9014    }
9015
9016    .ai-loading p {
9017        font-weight: 500;
9018        color: #1e293b;
9019        margin-bottom: 0.5rem;
9020    }
9021
9022    .ai-loading small {
9023        color: #64748b;
9024    }
9025
9026    /* AI Error State */
9027    .ai-error {
9028        display: flex;
9029        flex-direction: column;
9030        align-items: center;
9031        justify-content: center;
9032        padding: 3rem 2rem;
9033        text-align: center;
9034    }
9035
9036    .ai-error h4 {
9037        margin: 1rem 0 0.5rem;
9038        color: #dc2626;
9039    }
9040
9041    .ai-error p {
9042        color: #64748b;
9043        margin-bottom: 1.5rem;
9044    }
9045
9046    /* AI Results */
9047    .ai-results>div {
9048        margin-bottom: 2rem;
9049    }
9050
9051    .ai-summary-card,
9052    .ai-comparison-table,
9053    .ai-detailed-analysis,
9054    .ai-recommendations,
9055    .ai-tips {
9056        background: #f8fafc;
9057        border: 1px solid #e2e8f0;
9058        border-radius: 12px;
9059        padding: 1.5rem;
9060    }
9061
9062    .ai-results h4 {
9063        display: flex;
9064        align-items: center;
9065        gap: 0.5rem;
9066        font-size: 1.1rem;
9067        font-weight: 600;
9068        color: #1e293b;
9069        margin-bottom: 1rem;
9070    }
9071
9072    .summary-text {
9073        font-size: 1rem;
9074        line-height: 1.6;
9075        color: #374151;
9076        margin-bottom: 1rem;
9077    }
9078
9079    .winner-badge {
9080        padding: 1rem;
9081        background: linear-gradient(135deg, #10b981 0%, #059669 100%);
9082        color: white;
9083        border-radius: 8px;
9084    }
9085
9086    .winner-badge strong {
9087        display: block;
9088        margin-bottom: 0.25rem;
9089    }
9090
9091    .winner-badge small {
9092        opacity: 0.9;
9093        font-size: 0.875rem;
9094    }
9095
9096    /* Comparison Table */
9097    .comparison-grid {
9098        display: grid;
9099        gap: 1rem;
9100        margin-top: 1rem;
9101    }
9102
9103    .comparison-category {
9104        background: white;
9105        border: 1px solid #e2e8f0;
9106        border-radius: 8px;
9107        overflow: hidden;
9108    }
9109
9110    .category-header {
9111        background: #f1f5f9;
9112        padding: 0.75rem 1rem;
9113        font-weight: 600;
9114        color: #1e293b;
9115        border-bottom: 1px solid #e2e8f0;
9116    }
9117
9118    .category-products {
9119        display: grid;
9120        grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
9121        gap: 1px;
9122        background: #e2e8f0;
9123    }
9124
9125    .product-score {
9126        background: white;
9127        padding: 1rem;
9128        text-align: center;
9129    }
9130
9131    .score-value {
9132        display: inline-flex;
9133        align-items: center;
9134        gap: 0.25rem;
9135        margin-bottom: 0.5rem;
9136    }
9137
9138    .score-stars {
9139        color: #fbbf24;
9140    }
9141
9142    .score-note {
9143        font-size: 0.8rem;
9144        color: #64748b;
9145        line-height: 1.3;
9146    }
9147
9148    /* Product name header in comparison table */
9149    .product-name-header {
9150        margin-bottom: 0.5rem;
9151    }
9152
9153    .product-name-header strong {
9154        font-size: .8rem;
9155        /* h5 size (18px) */
9156        font-weight: 600;
9157        color: #1e293b;
9158        line-height: 1.3;
9159        display: block;
9160        word-break: break-word;
9161    }
9162
9163    .product-price {
9164        font-size: 0.8rem;
9165        font-weight: 600;
9166        color: #059669;
9167    }
9168
9169    /* Detailed Analysis */
9170    .products-analysis {
9171        display: grid;
9172        gap: 1rem;
9173        margin-top: 1rem;
9174    }
9175
9176    .product-analysis {
9177        background: white;
9178        border: 1px solid #e2e8f0;
9179        border-radius: 8px;
9180        padding: 1rem;
9181    }
9182
9183    .product-analysis h5 {
9184        color: #1e293b;
9185        margin-bottom: 0.75rem;
9186        font-weight: 600;
9187    }
9188
9189    .analysis-section {
9190        margin-bottom: 0.75rem;
9191    }
9192
9193    .analysis-section:last-child {
9194        margin-bottom: 0;
9195    }
9196
9197    .analysis-section h6 {
9198        font-size: 0.875rem;
9199        font-weight: 600;
9200        margin-bottom: 0.5rem;
9201    }
9202
9203    .analysis-section h6.strengths {
9204        color: #059669;
9205    }
9206
9207    .analysis-section h6.weaknesses {
9208        color: #dc2626;
9209    }
9210
9211    .analysis-section h6.best-for {
9212        color: #7c3aed;
9213    }
9214
9215    .analysis-section ul {
9216        list-style: none;
9217        padding: 0;
9218        margin: 0;
9219    }
9220
9221    .analysis-section li {
9222        display: flex;
9223        align-items: flex-start;
9224        gap: 0.5rem;
9225        margin-bottom: 0.25rem;
9226        font-size: 0.875rem;
9227        line-height: 1.4;
9228    }
9229
9230    .analysis-section li:before {
9231        content: "•";
9232        color: #64748b;
9233        font-weight: bold;
9234        margin-top: 0.1rem;
9235    }
9236
9237    .best-for-text {
9238        font-size: 0.875rem;
9239        color: #374151;
9240        font-style: italic;
9241    }
9242
9243    /* Recommendations */
9244    .recommendations-grid {
9245        display: grid;
9246        grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
9247        gap: 1rem;
9248        margin-top: 1rem;
9249    }
9250
9251    .recommendation-card {
9252        background: white;
9253        border: 1px solid #e2e8f0;
9254        border-radius: 8px;
9255        padding: 1rem;
9256        text-align: center;
9257    }
9258
9259    .recommendation-card h5 {
9260        font-size: 1rem;
9261        margin-bottom: 0.75rem;
9262        color: #1e293b;
9263    }
9264
9265    .recommendation-card p {
9266        font-size: 0.875rem;
9267        color: #374151;
9268        line-height: 1.5;
9269    }
9270
9271    /* Tips */
9272    .tips-list {
9273        list-style: none;
9274        padding: 0;
9275        margin: 1rem 0 0 0;
9276    }
9277
9278    .tips-list li {
9279        display: flex;
9280        align-items: flex-start;
9281        gap: 0.75rem;
9282        margin-bottom: 0.75rem;
9283        font-size: 0.9rem;
9284        line-height: 1.5;
9285        color: #374151;
9286    }
9287
9288    .tips-list li:before {
9289        content: "💡";
9290        font-size: 1rem;
9291        margin-top: 0.1rem;
9292    }
9293
9294    /* Modal Footer */
9295    .modal-footer {
9296        display: flex;
9297        justify-content: space-between;
9298        align-items: center;
9299        padding: 1.5rem 2rem;
9300        border-top: 1px solid #e2e8f0;
9301        background: #f8fafc;
9302    }
9303
9304    .btn-outline-secondary {
9305        border: 1px solid #64748b;
9306        background: transparent;
9307        color: #64748b;
9308        padding: 0.75rem 1.5rem;
9309        border-radius: 6px;
9310        font-weight: 600;
9311        display: flex;
9312        align-items: center;
9313        gap: 0.5rem;
9314        cursor: pointer;
9315        transition: all 0.2s ease;
9316    }
9317
9318    .btn-outline-secondary:hover {
9319        background: #64748b;
9320        color: white;
9321    }
9322
9323    /* Responsive for chip button */
9324    @media (max-width: 880px) {
9325        .pd-compare-section {
9326            margin: 1rem 0;
9327            display: block;
9328        }
9329
9330        .pd-compare-btn {
9331            width: 100%;
9332            font-size: 0.85rem;
9333            padding: 0.65rem 1rem;
9334            border-radius: 10px;
9335            justify-content: center;
9336            min-height: 44px;
9337        }
9338
9339        .pd-compare-btn .compare-icon {
9340            width: 16px;
9341            height: 16px;
9342        }
9343
9344        .pd-compare-info {
9345            margin-top: 0.5rem;
9346            display: block;
9347            text-align: center;
9348        }
9349
9350        .compare-note {
9351            font-size: 0.7rem;
9352            display: block;
9353        }
9354    }
9355
9356    /* Responsive Design */
9357    @media (max-width: 768px) {
9358        .compare-sidebar {
9359            width: 100%;
9360            right: -100%;
9361            /* Fix for mobile viewport height changes */
9362            height: 100vh;
9363            height: 100dvh;
9364            /* Dynamic viewport height for modern browsers */
9365        }
9366
9367        .compare-actions {
9368            /* Ensure actions are always visible */
9369            position: sticky;
9370            bottom: 0;
9371            background: white;
9372            border-top: 2px solid #e2e8f0;
9373            box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);
9374            z-index: 10;
9375        }
9376
9377        .compare-actions .btn {
9378            /* Larger touch targets for mobile */
9379            min-height: 48px;
9380            font-size: 0.9rem;
9381            font-weight: 700;
9382        }
9383
9384        .modal-container {
9385            width: 95%;
9386            max-height: 95vh;
9387            max-height: 95dvh;
9388            /* Dynamic viewport height */
9389        }
9390
9391        .modal-header,
9392        .modal-content,
9393        .modal-footer {
9394            padding: 1rem;
9395        }
9396
9397        .recommendations-grid {
9398            grid-template-columns: 1fr;
9399        }
9400
9401        .category-products {
9402            grid-template-columns: 1fr;
9403        }
9404
9405        .modal-footer {
9406            flex-direction: column;
9407            gap: 0.75rem;
9408        }
9409
9410        .modal-footer .btn {
9411            width: 100%;
9412        }
9413
9414        /* Ensure compare button is visible on mobile */
9415        .pd-compare-section {
9416            display: block !important;
9417            visibility: visible !important;
9418            opacity: 1 !important;
9419            margin: 1rem 0;
9420            padding: 0;
9421            position: relative !important;
9422            z-index: 1 !important;
9423            max-width: 100%;
9424            overflow: hidden;
9425        }
9426
9427        .pd-compare-btn {
9428            display: flex !important;
9429            visibility: visible !important;
9430            opacity: 1 !important;
9431            width: 100%;
9432            padding: 0.75rem 1rem;
9433            font-size: 0.9rem;
9434            min-height: 48px;
9435            /* Minimum touch target for mobile */
9436            border: 2px solid #e2e8f0 !important;
9437            background: #fff !important;
9438            position: relative !important;
9439            z-index: 2 !important;
9440            box-sizing: border-box;
9441            white-space: normal !important;
9442            /* Allow text wrapping on mobile */
9443            flex-wrap: wrap;
9444            gap: 0.5rem;
9445        }
9446
9447        .pd-compare-btn .compare-text {
9448            display: inline !important;
9449            visibility: visible !important;
9450            font-weight: 600;
9451            color: #475569 !important;
9452        }
9453
9454        .pd-compare-btn .compare-remove {
9455            display: none !important;
9456            /* Hidden by default */
9457        }
9458
9459        .pd-compare-btn.added .compare-remove {
9460            display: flex !important;
9461            /* Only show when added */
9462            flex-wrap: wrap;
9463            align-items: center;
9464            gap: 0.4rem;
9465            white-space: normal !important;
9466            word-break: break-word;
9467        }
9468
9469        .pd-compare-btn .compare-icon {
9470            display: inline-block !important;
9471            width: 18px;
9472            height: 18px;
9473            flex-shrink: 0;
9474        }
9475
9476        .pd-compare-info {
9477            margin-top: 0.5rem;
9478        }
9479
9480        .compare-note {
9481            font-size: 0.85rem !important;
9482            display: block !important;
9483            visibility: visible !important;
9484            color: #64748b !important;
9485        }
9486    }
9487
9488    /* iOS Safari specific fixes */
9489    @media (max-width: 480px) {
9490        #compareBtn {
9491            width: 46px;
9492            height: 46px;
9493        }
9494
9495        .pd-compare-section {
9496            -webkit-transform: translateZ(0);
9497            transform: translateZ(0);
9498        }
9499
9500        .pd-compare-btn {
9501            -webkit-appearance: none !important;
9502            appearance: none !important;
9503            -webkit-tap-highlight-color: transparent;
9504            touch-action: manipulation;
9505        }
9506
9507        /* Fix sidebar height for iOS address bar */
9508        .compare-sidebar {
9509            /* Use fixed positioning that accounts for iOS address bar */
9510            height: 100vh;
9511            height: -webkit-fill-available;
9512            /* iOS Safari compatibility */
9513            min-height: 100vh;
9514            min-height: -webkit-fill-available;
9515        }
9516
9517        /* Ensure compare actions stay at bottom */
9518        .compare-actions {
9519            position: sticky;
9520            bottom: 0;
9521            background: white;
9522            border-top: 2px solid #e2e8f0;
9523            box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.15);
9524            padding: 1.25rem 1rem;
9525            z-index: 20;
9526        }
9527
9528        .compare-actions .btn {
9529            min-height: 52px;
9530            /* Larger for easier tapping */
9531            font-size: 1rem;
9532            font-weight: 700;
9533            border-radius: 8px;
9534        }
9535
9536        /* Adjust content padding to account for sticky actions */
9537        .compare-content {
9538            padding-bottom: 6rem;
9539            /* Extra space for sticky actions */
9540        }
9541    }
9542
9543    /* High-resolution mobile devices (iPhone 12 Pro, etc.) */
9544    @media (-webkit-min-device-pixel-ratio: 2) and (max-width: 430px) {
9545        .pd-compare-section {
9546            display: block !important;
9547        }
9548
9549        .pd-compare-btn {
9550            display: flex !important;
9551            min-height: 44px;
9552            font-size: 16px;
9553            /* Prevent zoom on iOS */
9554        }
9555
9556        /* Enhanced fixes for iPhone 12 Pro and similar devices */
9557        .compare-sidebar {
9558            /* Ensure full height coverage */
9559            height: 100vh;
9560            height: 100dvh;
9561            /* Dynamic viewport height */
9562            height: -webkit-fill-available;
9563            /* iOS fallback */
9564            max-height: 100vh;
9565            max-height: 100dvh;
9566            max-height: -webkit-fill-available;
9567            overflow: hidden;
9568            /* Prevent scroll issues */
9569        }
9570
9571        .compare-content {
9572            /* Flexible content area */
9573            flex: 1;
9574            overflow-y: auto;
9575            -webkit-overflow-scrolling: touch;
9576            padding: 1rem 1rem 8rem 1rem;
9577            /* Extra bottom padding */
9578        }
9579
9580        .compare-actions {
9581            /* Force actions to stay visible */
9582            position: fixed;
9583            bottom: 0;
9584            left: 0;
9585            right: 0;
9586            width: 100%;
9587            background: white;
9588            border-top: 2px solid #e2e8f0;
9589            box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.2);
9590            padding: 1rem;
9591            z-index: 9999;
9592            display: flex !important;
9593            gap: 0.75rem;
9594        }
9595
9596        .compare-actions .btn {
9597            flex: 1;
9598            min-height: 30px;
9599            /* Extra large for high-DPI screens */
9600            font-size: .8rem;
9601            font-weight: 600;
9602            border-radius: 12px;
9603            display: flex !important;
9604            align-items: center;
9605            justify-content: center;
9606            gap: 0.5rem;
9607        }
9608
9609        /* Ensure AI analyze button is always visible and prominent */
9610        #compareAnalyze {
9611            background: #3b82f6 !important;
9612            border-color: #3b82f6 !important;
9613            color: white !important;
9614            box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
9615        }
9616
9617        #compareAnalyze:not(:disabled) {
9618            background: #2563eb !important;
9619            border-color: #2563eb !important;
9620            transform: scale(1.02);
9621        }
9622
9623        #compareAnalyze:disabled {
9624            opacity: 0.6 !important;
9625            background: #9ca3af !important;
9626            border-color: #9ca3af !important;
9627        }
9628    }
9629
9630    /* AI Disclaimer Styles */
9631    .ai-disclaimer {
9632        display: flex;
9633        align-items: flex-start;
9634        gap: 0.75rem;
9635        padding: 1rem;
9636        background: #fef3c7;
9637        border: 1px solid #fbbf24;
9638        border-radius: 8px;
9639        margin: 0;
9640    }
9641
9642    .disclaimer-icon {
9643        font-size: 1.25rem;
9644        flex-shrink: 0;
9645        margin-top: 0.125rem;
9646    }
9647
9648    .disclaimer-text {
9649        font-size: 0.85rem;
9650        line-height: 1.4;
9651        color: #92400e;
9652    }
9653
9654    .disclaimer-text strong {
9655        color: #78350f;
9656        font-weight: 600;
9657    }
9658
9659    /* Compare Disclaimer in Sidebar */
9660    .compare-disclaimer {
9661        margin-top: 1rem;
9662        padding: 1rem;
9663        background: #f0f9ff;
9664        border: 1px solid #0ea5e9;
9665        border-radius: 8px;
9666    }
9667
9668    .compare-disclaimer h6 {
9669        display: flex;
9670        align-items: center;
9671        gap: 0.5rem;
9672        font-size: 0.875rem;
9673        font-weight: 600;
9674        color: #0c4a6e;
9675        margin-bottom: 0.5rem;
9676    }
9677
9678    .compare-disclaimer p {
9679        font-size: 0.8rem;
9680        line-height: 1.4;
9681        color: #075985;
9682        margin-bottom: 0.5rem;
9683    }
9684
9685    .compare-disclaimer p:last-child {
9686        margin-bottom: 0;
9687    }
9688
9689    .compare-disclaimer ul {
9690        list-style: none;
9691        padding: 0;
9692        margin: 0.5rem 0 0 0;
9693    }
9694
9695    .compare-disclaimer li {
9696        display: flex;
9697        align-items: flex-start;
9698        gap: 0.5rem;
9699        margin-bottom: 0.25rem;
9700        font-size: 0.75rem;
9701        line-height: 1.3;
9702        color: #075985;
9703    }
9704
9705    .compare-disclaimer li:before {
9706        content: "•";
9707        color: #0ea5e9;
9708        font-weight: bold;
9709        margin-top: 0.1rem;
9710        flex-shrink: 0;
9711    }
9712
9713    /* Mobile Browser Address Bar Fixes */
9714    @supports (height: 100dvh) {
9715        /* Modern browsers with dynamic viewport support */
9716        @media (max-width: 768px) {
9717            .compare-sidebar {
9718                height: 100dvh !important;
9719                max-height: 100dvh !important;
9720            }
9721
9722            .modal-container {
9723                max-height: 95dvh !important;
9724            }
9725        }
9726    }
9727
9728    @supports (height: -webkit-fill-available) {
9729        /* iOS Safari specific support */
9730        @media (max-width: 768px) {
9731            .compare-sidebar {
9732                height: -webkit-fill-available !important;
9733                max-height: -webkit-fill-available !important;
9734            }
9735        }
9736    }
9737
9738    /* Fallback for older browsers */
9739    @media (max-width: 768px) and (orientation: portrait) {
9740        .compare-sidebar {
9741            /* Fixed height that works across different mobile browsers */
9742            min-height: 600px;
9743            height: calc(100vh - env(keyboard-inset-height, 0px));
9744            height: calc(100vh - env(safe-area-inset-bottom, 0px));
9745        }
9746
9747        /* Ensure actions are always accessible */
9748        .compare-actions {
9749            position: sticky !important;
9750            bottom: env(safe-area-inset-bottom, 0px) !important;
9751            margin-bottom: 0 !important;
9752            padding-bottom: calc(1rem + env(safe-area-inset-bottom, 0px)) !important;
9753        }
9754    }
9755
9756    /* PWA and fullscreen app support */
9757    @media (display-mode: standalone) {
9758        .compare-sidebar {
9759            height: 100vh !important;
9760            height: 100dvh !important;
9761        }
9762    }
9763
9764    /* Utilities */
9765    .btn-sm {
9766        padding: 0.5rem 0.75rem;
9767        font-size: 0.8rem;
9768    }
9769
9770    [hidden] {
9771        display: none !important;
9772    }
9773
9774    /* ===== UX ENHANCEMENTS ===== */
9775
9776    /* Compare Button Highlight Animation */
9777    .pulse-highlight {
9778        animation: pulse-glow 2s ease-in-out 3;
9779        box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.7);
9780    }
9781
9782    @keyframes pulse-glow {
9783        0% {
9784            box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.7);
9785        }
9786
9787        50% {
9788            box-shadow: 0 0 0 10px rgba(59, 130, 246, 0);
9789        }
9790
9791        100% {
9792            box-shadow: 0 0 0 0 rgba(59, 130, 246, 0);
9793        }
9794    }
9795
9796    /* Flying Product Animation */
9797    .flying-product {
9798        position: fixed;
9799        z-index: 9999;
9800        pointer-events: none;
9801    }
9802
9803    .flying-product img {
9804        border-radius: 8px;
9805        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
9806    }
9807
9808    /* Sticky Compare Bar - REMOVED (using only fly-to-navbar animation) */
9809
9810    /* Inline Compare Preview - REMOVED (keeping it simple and clean) */
9811    /**
9812 * Product Card Quick Actions - 3 Dot Menu + Bottom Sheet
9813 * Tokopedia-inspired design
9814 */
9815
9816    /* ===== 3 Dot Button on Product Card ===== */
9817    .prod-card {
9818        position: relative;
9819    }
9820
9821    .prod-card-actions-btn {
9822        position: absolute;
9823        top: 8px;
9824        right: 8px;
9825        width: 32px;
9826        height: 32px;
9827        border-radius: 50%;
9828        background: rgba(255, 255, 255, 0.95);
9829        border: 1px solid rgba(0, 0, 0, 0.08);
9830        display: inline-flex;
9831        align-items: center;
9832        justify-content: center;
9833        cursor: pointer;
9834        z-index: 3;
9835        transition: all 0.2s ease;
9836        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
9837        -webkit-tap-highlight-color: transparent;
9838    }
9839
9840    .prod-card-actions-btn:hover {
9841        background: #fff;
9842        border-color: rgba(0, 0, 0, 0.15);
9843        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
9844        transform: scale(1.05);
9845    }
9846
9847    .prod-card-actions-btn:active {
9848        transform: scale(0.95);
9849    }
9850
9851    .prod-card-actions-btn svg {
9852        width: 20px;
9853        height: 20px;
9854        color: #64748b;
9855        display: block;
9856    }
9857
9858    /* Desktop: Show on hover */
9859    @media (min-width: 641px) {
9860        .prod-card-actions-btn {
9861            opacity: 0;
9862            pointer-events: none;
9863        }
9864
9865        .prod-card:hover .prod-card-actions-btn {
9866            opacity: 1;
9867            pointer-events: auto;
9868        }
9869    }
9870
9871    /* Mobile: Always visible but smaller */
9872    @media (max-width: 640px) {
9873        .prod-card-actions-btn {
9874            width: 28px;
9875            height: 28px;
9876            top: 6px;
9877            right: 6px;
9878            opacity: 95%;
9879        }
9880
9881        .prod-card-actions-btn svg {
9882            width: 18px;
9883            height: 18px;
9884        }
9885    }
9886
9887    /* ===== Bottom Sheet Overlay ===== */
9888    .pca-overlay {
9889        position: fixed;
9890        inset: 0;
9891        background: rgba(15, 23, 42, 0.6);
9892        backdrop-filter: blur(4px);
9893        z-index: 99998;
9894        opacity: 0;
9895        visibility: hidden;
9896        transition: all 0.3s ease;
9897    }
9898
9899    .pca-overlay.active {
9900        opacity: 1;
9901        visibility: visible;
9902    }
9903
9904    /* ===== Bottom Sheet Container ===== */
9905    .pca-bottom-sheet {
9906        position: fixed;
9907        bottom: 0;
9908        left: 0;
9909        right: 0;
9910        background: #fff;
9911        border-radius: 20px 20px 0 0;
9912        box-shadow: 0 -4px 24px rgba(0, 0, 0, 0.15);
9913        z-index: 99999;
9914        max-width: 600px;
9915        margin: 0 auto;
9916        transform: translateY(100%);
9917        transition: transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
9918    }
9919
9920    .pca-bottom-sheet.active {
9921        transform: translateY(0);
9922    }
9923
9924    /* Drag Handle */
9925    .pca-sheet-handle {
9926        width: 40px;
9927        height: 4px;
9928        background: #cbd5e1;
9929        border-radius: 999px;
9930        margin: 12px auto 8px;
9931    }
9932
9933    /* Product Preview */
9934    .pca-sheet-product {
9935        display: flex;
9936        gap: 12px;
9937        padding: 12px 20px;
9938        border-bottom: 1px solid #f1f5f9;
9939    }
9940
9941    .pca-product-image {
9942        width: 60px;
9943        height: 60px;
9944        border-radius: 8px;
9945        object-fit: cover;
9946        flex-shrink: 0;
9947        border: 1px solid #e2e8f0;
9948    }
9949
9950    .pca-product-info {
9951        flex: 1;
9952        min-width: 0;
9953    }
9954
9955    .pca-product-name {
9956        font-size: 14px;
9957        font-weight: 600;
9958        color: #0f172a;
9959        margin: 0 0 4px 0;
9960        display: -webkit-box;
9961        -webkit-line-clamp: 2;
9962        -webkit-box-orient: vertical;
9963        overflow: hidden;
9964        line-height: 1.3;
9965    }
9966
9967    .pca-product-price {
9968        font-size: 15px;
9969        font-weight: 700;
9970        color: #0ea5e9;
9971        margin: 0;
9972    }
9973
9974    .pca-product-stock {
9975        font-size: 12px;
9976        color: #64748b;
9977        margin: 2px 0 0 0;
9978    }
9979
9980    .pca-product-stock.in {
9981        color: #16a34a;
9982    }
9983
9984    .pca-product-stock.low {
9985        color: #ea580c;
9986    }
9987
9988    .pca-product-stock.out {
9989        color: #dc2626;
9990    }
9991
9992    /* Action Menu */
9993    .pca-sheet-actions {
9994        padding: 8px 0 20px;
9995    }
9996
9997    .pca-action-item {
9998        display: flex;
9999        align-items: center;
10000        gap: 16px;
10001        padding: 16px 20px;
10002        background: transparent;
10003        border: 0;
10004        width: 100%;
10005        cursor: pointer;
10006        transition: background-color 0.15s ease;
10007        -webkit-tap-highlight-color: transparent;
10008    }
10009
10010    .pca-action-item:hover {
10011        background: #f8fafc;
10012    }
10013
10014    .pca-action-item:active {
10015        background: #f1f5f9;
10016    }
10017
10018    .pca-action-item:disabled {
10019        opacity: 0.4;
10020        cursor: not-allowed;
10021    }
10022
10023    .pca-action-item:disabled:hover {
10024        background: transparent;
10025    }
10026
10027    .pca-action-icon {
10028        width: 24px;
10029        height: 24px;
10030        color: #475569;
10031        flex-shrink: 0;
10032    }
10033
10034    .pca-action-content {
10035        flex: 1;
10036        text-align: left;
10037    }
10038
10039    .pca-action-label {
10040        font-size: 15px;
10041        font-weight: 600;
10042        color: #0f172a;
10043        margin: 0 0 2px 0;
10044    }
10045
10046    .pca-action-desc {
10047        font-size: 12px;
10048        color: #64748b;
10049        margin: 0;
10050    }
10051
10052    .pca-action-badge {
10053        display: inline-flex;
10054        align-items: center;
10055        justify-content: center;
10056        min-width: 20px;
10057        height: 20px;
10058        padding: 0 6px;
10059        background: #0ea5e9;
10060        color: #fff;
10061        font-size: 11px;
10062        font-weight: 700;
10063        border-radius: 999px;
10064        margin-left: auto;
10065    }
10066
10067    .pca-action-badge.compare {
10068        background: #8b5cf6;
10069    }
10070
10071    /* Action Item Colors */
10072    .pca-action-item.cart .pca-action-icon {
10073        color: #0ea5e9;
10074    }
10075
10076    .pca-action-item.compare .pca-action-icon {
10077        color: #8b5cf6;
10078    }
10079
10080    .pca-action-item.compare.active {
10081        background: rgba(139, 92, 246, 0.05);
10082    }
10083
10084    .pca-action-item.compare.active .pca-action-label {
10085        color: #8b5cf6;
10086    }
10087
10088    .pca-action-item.compare.active .pca-action-icon {
10089        color: #8b5cf6;
10090    }
10091
10092    .pca-action-item.share .pca-action-icon {
10093        color: #64748b;
10094    }
10095
10096    /* Loading State */
10097    .pca-action-item.loading {
10098        pointer-events: none;
10099    }
10100
10101    .pca-action-item.loading .pca-action-icon {
10102        animation: spin 1s linear infinite;
10103    }
10104
10105    @keyframes spin {
10106        from {
10107            transform: rotate(0deg);
10108        }
10109
10110        to {
10111            transform: rotate(360deg);
10112        }
10113    }
10114
10115    /* Success State Animation */
10116    .pca-action-item.success .pca-action-icon {
10117        animation: checkmark 0.5s ease;
10118    }
10119
10120    @keyframes checkmark {
10121        0% {
10122            transform: scale(0);
10123        }
10124
10125        50% {
10126            transform: scale(1.2);
10127        }
10128
10129        100% {
10130            transform: scale(1);
10131        }
10132    }
10133
10134    /* ===== Safe Area for Mobile Devices ===== */
10135    @supports (padding-bottom: env(safe-area-inset-bottom)) {
10136        .pca-sheet-actions {
10137            padding-bottom: calc(20px + env(safe-area-inset-bottom));
10138        }
10139    }
10140
10141    /* ===== Responsive Tweaks ===== */
10142    @media (max-width: 640px) {
10143        .pca-bottom-sheet {
10144            border-radius: 16px 16px 0 0;
10145        }
10146
10147        .pca-sheet-product {
10148            padding: 10px 16px;
10149        }
10150
10151        .pca-product-image {
10152            width: 50px;
10153            height: 50px;
10154        }
10155
10156        .pca-product-name {
10157            font-size: 13px;
10158        }
10159
10160        .pca-product-price {
10161            font-size: 14px;
10162        }
10163
10164        .pca-action-item {
10165            padding: 14px 16px;
10166            gap: 12px;
10167        }
10168
10169        .pca-action-icon {
10170            width: 22px;
10171            height: 22px;
10172        }
10173
10174        .pca-action-label {
10175            font-size: 14px;
10176        }
10177    }
10178
10179    /* ===== Animation for Flying Product ===== */
10180    .flying-product {
10181        position: fixed;
10182        pointer-events: none;
10183        z-index: 99999;
10184        animation: fadeOut 0.8s ease forwards;
10185    }
10186
10187    @keyframes fadeOut {
10188        to {
10189            opacity: 0;
10190            transform: scale(0.5);
10191        }
10192    }
10193
10194    /* ===== Desktop Dropdown (Alternative) ===== */
10195    @media (min-width: 1024px) {
10196        /* Optional: Could add desktop dropdown menu here */
10197        /* For now, using bottom sheet for consistency */
10198    }
10199
10200    /* ===== Print Styles ===== */
10201    @media print {
10202
10203        .prod-card-actions-btn,
10204        .pca-overlay,
10205        .pca-bottom-sheet {
10206            display: none !important;
10207        }
10208    }
10209
10210    /* Modern Modal Dialog for Cart Operations */
10211    .modal-overlay {
10212        position: fixed;
10213        top: 0;
10214        left: 0;
10215        right: 0;
10216        bottom: 0;
10217        background: rgba(0, 0, 0, 0.5);
10218        backdrop-filter: blur(4px);
10219        display: flex;
10220        align-items: center;
10221        justify-content: center;
10222        z-index: 9999;
10223        opacity: 0;
10224        visibility: hidden;
10225        transition: all 0.2s ease;
10226    }
10227
10228    .modal-overlay.show {
10229        opacity: 1;
10230        visibility: visible;
10231    }
10232
10233    .modal-dialog {
10234        background: white;
10235        border-radius: 16px;
10236        box-shadow: 0 25px 50px rgba(0, 0, 0, 0.15);
10237        max-width: 400px;
10238        width: 90%;
10239        max-height: 90vh;
10240        overflow-y: auto;
10241        transform: scale(0.95);
10242        transition: transform 0.2s ease;
10243    }
10244
10245    .modal-overlay.show .modal-dialog {
10246        transform: scale(1);
10247    }
10248
10249    .modal-header {
10250        padding: 24px 24px 16px;
10251        border-bottom: 1px solid #f1f5f9;
10252    }
10253
10254    .modal-title {
10255        font-size: 20px;
10256        font-weight: 700;
10257        color: #0f172a;
10258        margin: 0;
10259        display: flex;
10260        align-items: center;
10261        gap: 12px;
10262    }
10263
10264    .modal-body {
10265        padding: 16px 24px 24px;
10266    }
10267
10268    .modal-message {
10269        font-size: 16px;
10270        line-height: 1.5;
10271        color: #475569;
10272        margin: 0;
10273    }
10274
10275    .modal-actions {
10276        display: flex;
10277        gap: 12px;
10278        margin-top: 24px;
10279    }
10280
10281    .modal-btn {
10282        flex: 1;
10283        padding: 12px 16px;
10284        border: none;
10285        border-radius: 8px;
10286        font-size: 14px;
10287        font-weight: 600;
10288        cursor: pointer;
10289        transition: all 0.2s ease;
10290        text-align: center;
10291    }
10292
10293    .modal-btn-secondary {
10294        background: #f8fafc;
10295        color: #64748b;
10296        border: 1px solid #e2e8f0;
10297    }
10298
10299    .modal-btn-secondary:hover {
10300        background: #f1f5f9;
10301        border-color: #cbd5e1;
10302    }
10303
10304    .modal-btn-danger {
10305        background: #ef4444;
10306        color: white;
10307    }
10308
10309    .modal-btn-danger:hover {
10310        background: #dc2626;
10311    }
10312
10313    .modal-btn-primary {
10314        background: #3b82f6;
10315        color: white;
10316    }
10317
10318    .modal-btn-primary:hover {
10319        background: #2563eb;
10320    }
10321
10322    .modal-icon {
10323        font-size: 24px;
10324        width: 32px;
10325        height: 32px;
10326        display: flex;
10327        align-items: center;
10328        justify-content: center;
10329        border-radius: 8px;
10330    }
10331
10332    .modal-icon.danger {
10333        background: #fef2f2;
10334        color: #ef4444;
10335    }
10336
10337    .modal-icon.warning {
10338        background: #fffbeb;
10339        color: #f59e0b;
10340    }
10341
10342    .modal-icon.success {
10343        background: #f0fdf4;
10344        color: #22c55e;
10345    }
10346
10347    .modal-icon.info {
10348        background: #eff6ff;
10349        color: #3b82f6;
10350    }
10351
10352    /* Mobile responsive */
10353    @media (max-width: 640px) {
10354        .modal-dialog {
10355            margin: 16px;
10356            max-width: none;
10357            width: auto;
10358        }
10359
10360        .modal-header,
10361        .modal-body {
10362            padding-left: 20px;
10363            padding-right: 20px;
10364        }
10365
10366        .modal-actions {
10367            flex-direction: column;
10368        }
10369
10370        .modal-btn {
10371            flex: none;
10372        }
10373    }
10374
10375    /**
10376 * Reviews & Points System - Styles
10377 * Product reviews, rating display, and point redemption UI
10378 */
10379
10380    /* ===================================
10381   PRODUCT REVIEWS
10382   =================================== */
10383
10384    .product-tabs {
10385        display: flex;
10386        border-bottom: 2px solid #e5e7eb;
10387        margin: 24px 0 16px;
10388        gap: 8px;
10389    }
10390
10391    .tab-btn {
10392        padding: 12px 20px;
10393        border: none;
10394        background: none;
10395        cursor: pointer;
10396        font-size: 15px;
10397        font-weight: 500;
10398        color: #6b7280;
10399        border-bottom: 3px solid transparent;
10400        transition: all 0.2s ease;
10401        position: relative;
10402        top: 2px;
10403    }
10404
10405    .tab-btn:hover {
10406        color: #009688;
10407    }
10408
10409    .tab-btn.active {
10410        color: #2563eb;
10411        border-bottom-color: #2563eb;
10412    }
10413
10414    .tab-content {
10415        padding: 20px 0;
10416    }
10417
10418    /* Review Statistics */
10419    .review-stats {
10420        display: grid;
10421        grid-template-columns: 200px 1fr;
10422        gap: 32px;
10423        padding: 24px;
10424        background: #f9fafb;
10425        border-radius: 12px;
10426        margin-bottom: 24px;
10427    }
10428
10429    .rating-summary {
10430        text-align: center;
10431    }
10432
10433    .avg-rating {
10434        display: block;
10435        font-size: 48px;
10436        font-weight: 700;
10437        color: #009688;
10438        line-height: 1;
10439    }
10440
10441    .rating-summary .stars {
10442        font-size: 24px;
10443        color: #fbbf24;
10444        margin: 8px 0;
10445    }
10446
10447    .total-reviews {
10448        display: block;
10449        font-size: 14px;
10450        color: #6b7280;
10451        margin-top: 4px;
10452    }
10453
10454    .rating-breakdown {
10455        display: flex;
10456        flex-direction: column;
10457        gap: 8px;
10458    }
10459
10460    .rating-bar {
10461        display: flex;
10462        align-items: center;
10463        gap: 12px;
10464    }
10465
10466    .rating-label {
10467        font-size: 14px;
10468        color: #374151;
10469        width: 32px;
10470        text-align: right;
10471    }
10472
10473    .bar-container {
10474        flex: 1;
10475        height: 8px;
10476        background: #e5e7eb;
10477        border-radius: 4px;
10478        overflow: hidden;
10479    }
10480
10481    .bar-fill {
10482        height: 100%;
10483        background: linear-gradient(90deg, #fbbf24 0%, #f59e0b 100%);
10484        transition: width 0.3s ease;
10485    }
10486
10487    .rating-count {
10488        font-size: 14px;
10489        color: #6b7280;
10490        width: 40px;
10491        text-align: right;
10492    }
10493
10494    /* Review Filters */
10495    .review-filters {
10496        display: flex;
10497        justify-content: space-between;
10498        align-items: center;
10499        margin-bottom: 20px;
10500    }
10501
10502    .review-sort {
10503        padding: 8px 12px;
10504        border: 1px solid #d1d5db;
10505        border-radius: 8px;
10506        font-size: 14px;
10507        background: white;
10508    }
10509
10510    .write-review-btn {
10511        padding: 10px 20px;
10512        background: #2563eb;
10513        color: white;
10514        border: none;
10515        border-radius: 8px;
10516        font-weight: 500;
10517        cursor: pointer;
10518        transition: background 0.2s;
10519    }
10520
10521    .write-review-btn:hover {
10522        background: #1d4ed8;
10523    }
10524
10525    /* Review List */
10526    .reviews-list {
10527        display: flex;
10528        flex-direction: column;
10529        gap: 16px;
10530    }
10531
10532    .review-item {
10533        padding: 20px;
10534        background: white;
10535        border: 1px solid #e5e7eb;
10536        border-radius: 12px;
10537        transition: box-shadow 0.2s;
10538    }
10539
10540    .review-item:hover {
10541        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
10542    }
10543
10544    .review-header {
10545        display: flex;
10546        justify-content: space-between;
10547        align-items: flex-start;
10548        margin-bottom: 8px;
10549    }
10550
10551    .review-author {
10552        display: flex;
10553        align-items: center;
10554        gap: 8px;
10555    }
10556
10557    .review-author strong {
10558        font-size: 15px;
10559        color: #009688;
10560    }
10561
10562    .verified-badge {
10563        display: inline-flex;
10564        align-items: center;
10565        gap: 4px;
10566        font-size: 12px;
10567        color: #059669;
10568        background: #d1fae5;
10569        padding: 2px 8px;
10570        border-radius: 4px;
10571        font-weight: 500;
10572    }
10573
10574    .anonymous-badge {
10575        display: inline-flex;
10576        align-items: center;
10577        font-size: 12px;
10578        color: #6b7280;
10579        background: #f3f4f6;
10580        padding: 2px 6px;
10581        border-radius: 4px;
10582        margin-left: 4px;
10583        cursor: help;
10584    }
10585
10586    .review-rating .stars {
10587        font-size: 16px;
10588        color: #fbbf24;
10589    }
10590
10591    .review-date {
10592        font-size: 13px;
10593        color: #9ca3af;
10594        margin-bottom: 12px;
10595    }
10596
10597    .review-text {
10598        font-size: 15px;
10599        line-height: 1.6;
10600        color: #374151;
10601        margin-bottom: 12px;
10602    }
10603
10604    .review-images {
10605        display: flex;
10606        gap: 8px;
10607        margin-bottom: 12px;
10608        flex-wrap: wrap;
10609    }
10610
10611    .review-img {
10612        width: 80px;
10613        height: 80px;
10614        object-fit: cover;
10615        border-radius: 8px;
10616        cursor: pointer;
10617        transition: transform 0.2s;
10618    }
10619
10620    .review-img:hover {
10621        transform: scale(1.05);
10622    }
10623
10624    .review-actions {
10625        display: flex;
10626        gap: 12px;
10627        padding-top: 12px;
10628        border-top: 1px solid #f3f4f6;
10629    }
10630
10631    .btn-helpful {
10632        display: flex;
10633        align-items: center;
10634        gap: 6px;
10635        padding: 6px 12px;
10636        background: #f9fafb;
10637        border: 1px solid #e5e7eb;
10638        border-radius: 6px;
10639        font-size: 13px;
10640        color: #6b7280;
10641        cursor: pointer;
10642        transition: all 0.2s;
10643    }
10644
10645    .btn-helpful:hover {
10646        background: #f3f4f6;
10647        color: #009688;
10648        border-color: #d1d5db;
10649    }
10650
10651    .btn-helpful.voted {
10652        background: #dbeafe;
10653        color: #1d4ed8;
10654        border-color: #93c5fd;
10655    }
10656
10657    .helpful-icon {
10658        font-size: 14px;
10659    }
10660
10661    .no-reviews {
10662        text-align: center;
10663        padding: 60px 20px;
10664        color: #9ca3af;
10665        font-size: 15px;
10666    }
10667
10668    .load-more-btn {
10669        display: block;
10670        margin: 24px auto 0;
10671        padding: 12px 32px;
10672        background: white;
10673        border: 1px solid #d1d5db;
10674        border-radius: 8px;
10675        font-size: 14px;
10676        font-weight: 500;
10677        color: #374151;
10678        cursor: pointer;
10679        transition: all 0.2s;
10680    }
10681
10682    .load-more-btn:hover {
10683        background: #f9fafb;
10684        border-color: #9ca3af;
10685    }
10686
10687    /* ===================================
10688   POINT BALANCE WIDGET (LEGACY - kept for backward compatibility)
10689   =================================== */
10690
10691    .point-balance-card {
10692        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
10693        color: white;
10694        padding: 24px;
10695        border-radius: 16px;
10696        margin-bottom: 24px;
10697        box-shadow: 0 10px 25px rgba(102, 126, 234, 0.3);
10698    }
10699
10700    .point-header {
10701        display: flex;
10702        justify-content: space-between;
10703        align-items: center;
10704        margin-bottom: 12px;
10705    }
10706
10707    .point-header h3 {
10708        font-size: 18px;
10709        font-weight: 600;
10710        margin: 0;
10711        display: flex;
10712        align-items: center;
10713        gap: 8px;
10714    }
10715
10716    .point-header .balance {
10717        font-size: 32px;
10718        font-weight: 700;
10719    }
10720
10721    .point-value {
10722        font-size: 14px;
10723        opacity: 0.9;
10724        margin: 8px 0 16px;
10725    }
10726
10727    .point-stats {
10728        display: flex;
10729        gap: 20px;
10730        font-size: 13px;
10731        opacity: 0.85;
10732        margin-bottom: 16px;
10733    }
10734
10735    .btn-view-history {
10736        display: inline-block;
10737        padding: 10px 20px;
10738        background: rgba(255, 255, 255, 0.2);
10739        color: white;
10740        text-decoration: none;
10741        border-radius: 8px;
10742        font-size: 14px;
10743        font-weight: 500;
10744        transition: background 0.2s;
10745    }
10746
10747    .btn-view-history:hover {
10748        background: rgba(255, 255, 255, 0.3);
10749    }
10750
10751    /* ===================================
10752   CHECKOUT POINT REDEMPTION
10753   =================================== */
10754
10755    .checkout-points {
10756        padding: 16px;
10757        background: #fef3c7;
10758        border: 2px solid #fbbf24;
10759        border-radius: 12px;
10760        margin-bottom: 16px;
10761    }
10762
10763    .points-header {
10764        display: flex;
10765        align-items: center;
10766        gap: 10px;
10767        margin-bottom: 12px;
10768    }
10769
10770    .points-header input[type="checkbox"] {
10771        width: 18px;
10772        height: 18px;
10773        cursor: pointer;
10774    }
10775
10776    .points-header label {
10777        font-size: 15px;
10778        color: #78350f;
10779        cursor: pointer;
10780        margin: 0;
10781    }
10782
10783    #points-slider {
10784        padding: 16px;
10785        background: white;
10786        border-radius: 8px;
10787        margin-top: 12px;
10788    }
10789
10790    #points-slider label {
10791        display: block;
10792        font-size: 14px;
10793        color: #374151;
10794        margin-bottom: 8px;
10795        font-weight: 500;
10796    }
10797
10798    #points-amount {
10799        width: 100%;
10800        margin-bottom: 8px;
10801    }
10802
10803    #points-display {
10804        display: flex;
10805        justify-content: space-between;
10806        font-size: 14px;
10807        color: #009688;
10808        margin-top: 8px;
10809    }
10810
10811    #points-display .discount-amount {
10812        color: #059669;
10813        font-weight: 600;
10814    }
10815
10816    .price-row.point-discount {
10817        color: #059669;
10818        font-weight: 500;
10819    }
10820
10821    /* ===================================
10822   REVIEWABLE ORDERS
10823   =================================== */
10824
10825    .reviewable-orders {
10826        background: white;
10827        border: 1px solid #e5e7eb;
10828        border-radius: 12px;
10829        padding: 20px;
10830        margin-bottom: 24px;
10831    }
10832
10833    .reviewable-orders h3 {
10834        font-size: 18px;
10835        margin-bottom: 16px;
10836        color: #009688;
10837    }
10838
10839    .order-card {
10840        display: flex;
10841        gap: 16px;
10842        padding: 16px;
10843        background: #f9fafb;
10844        border-radius: 8px;
10845        margin-bottom: 12px;
10846    }
10847
10848    .order-card:last-child {
10849        margin-bottom: 0;
10850    }
10851
10852    .order-card img {
10853        width: 80px;
10854        height: 80px;
10855        object-fit: cover;
10856        border-radius: 8px;
10857    }
10858
10859    .order-info {
10860        flex: 1;
10861    }
10862
10863    .order-info h4 {
10864        font-size: 15px;
10865        margin: 0 0 4px;
10866        color: #009688;
10867    }
10868
10869    .order-info p {
10870        font-size: 13px;
10871        color: #6b7280;
10872        margin: 0 0 12px;
10873    }
10874
10875    .btn-review {
10876        padding: 8px 16px;
10877        background: #059669;
10878        color: white;
10879        border: none;
10880        border-radius: 6px;
10881        font-size: 14px;
10882        font-weight: 500;
10883        cursor: pointer;
10884        transition: background 0.2s;
10885    }
10886
10887    .btn-review:hover {
10888        background: #047857;
10889    }
10890
10891    /* ===================================
10892   TOAST NOTIFICATIONS
10893   =================================== */
10894
10895    .review-toast {
10896        position: fixed;
10897        bottom: 24px;
10898        right: 24px;
10899        padding: 14px 20px;
10900        background: #009688;
10901        color: white;
10902        border-radius: 8px;
10903        font-size: 14px;
10904        line-height: 1.4;
10905        box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
10906        transform: translateY(100px);
10907        opacity: 0;
10908        transition: all 0.3s ease;
10909        z-index: 10000;
10910        max-width: 400px;
10911        word-wrap: break-word;
10912    }
10913
10914    .review-toast.show {
10915        transform: translateY(0);
10916        opacity: 1;
10917    }
10918
10919    /* Mobile: Position above bottom-nav */
10920    @media (max-width: 768px) {
10921        .review-toast {
10922            bottom: 80px;
10923            /* Above bottom-nav (50px height + padding + safe margin) */
10924            right: 16px;
10925            left: 16px;
10926            max-width: calc(100% - 32px);
10927        }
10928    }
10929
10930    .review-toast.toast-success {
10931        background: #059669;
10932    }
10933
10934    .review-toast.toast-error {
10935        background: #dc2626;
10936    }
10937
10938    .review-toast.toast-info {
10939        background: #2563eb;
10940    }
10941
10942    /* ===================================
10943   RESPONSIVE
10944   =================================== */
10945
10946    @media (max-width: 768px) {
10947        .point-balance-card {
10948            border-radius: 0;
10949        }
10950
10951        .review-stats {
10952            grid-template-columns: 70px 1fr;
10953            gap: 20px;
10954            padding: 16px;
10955        }
10956
10957        .rating-summary {
10958            text-align: center;
10959        }
10960
10961        .rating-summary .avg-rating {
10962            font-size: 32px;
10963        }
10964
10965        .rating-summary .stars {
10966            font-size: 18px;
10967            margin: 4px 0;
10968        }
10969
10970        .total-reviews {
10971            font-size: 11px;
10972        }
10973
10974        /* Rating breakdown - more compact */
10975        .rating-breakdown {
10976            gap: 2px;
10977        }
10978
10979        .rating-breakdown .rating-bar {
10980            gap: 4px;
10981        }
10982
10983        .rating-breakdown .rating-label {
10984            font-size: 11px;
10985            width: 16px;
10986            min-width: 16px;
10987            text-align: left;
10988        }
10989
10990        .rating-breakdown .bar-container {
10991            height: 6px;
10992        }
10993
10994        .rating-breakdown .rating-count {
10995            font-size: 11px;
10996            width: 16px;
10997            min-width: 16px;
10998        }
10999
11000        .review-header {
11001            flex-direction: column;
11002            gap: 8px;
11003            align-items: flex-start;
11004        }
11005
11006        .review-rating {
11007            order: -1;
11008            margin-bottom: 4px;
11009        }
11010
11011        .review-rating .stars {
11012            font-size: 14px;
11013        }
11014
11015        .review-filters {
11016            flex-direction: column;
11017            gap: 12px;
11018            align-items: stretch;
11019        }
11020
11021        .review-sort {
11022            width: 100%;
11023        }
11024
11025        .point-header .balance {
11026            font-size: 24px;
11027        }
11028
11029        .point-stats {
11030            flex-direction: column;
11031            gap: 8px;
11032        }
11033
11034        .order-card {
11035            flex-direction: column;
11036        }
11037
11038        .order-card img {
11039            width: 100%;
11040            height: 200px;
11041        }
11042    }
11043
11044    /* ===================================
11045   LOADING & ERROR STATES
11046   =================================== */
11047
11048    .review-loading {
11049        text-align: center;
11050        padding: 40px;
11051        color: #9ca3af;
11052        font-size: 14px;
11053    }
11054
11055    .review-error {
11056        text-align: center;
11057        padding: 40px;
11058        color: #dc2626;
11059        font-size: 14px;
11060        background: #fee2e2;
11061        border-radius: 8px;
11062    }
11063
11064    .review-empty {
11065        text-align: center;
11066        padding: 10px;
11067        color: #6b7280;
11068        font-size: 14px;
11069    }
11070
11071    /* ===================================
11072   REVIEWABLE ORDERS LIST
11073   =================================== */
11074
11075    .reviewable-orders-list {
11076        display: flex;
11077        flex-direction: column;
11078        gap: 16px;
11079    }
11080
11081    .reviewable-order-item {
11082        display: grid;
11083        grid-template-columns: 80px 1fr auto;
11084        gap: 16px;
11085        padding: 16px;
11086        background: #fff;
11087        border: 1px solid #e5e7eb;
11088        border-radius: 12px;
11089        align-items: center;
11090        transition: box-shadow 0.2s;
11091    }
11092
11093    .reviewable-order-item:hover {
11094        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
11095    }
11096
11097    .reviewable-order-item .roi-image {
11098        width: 80px;
11099        height: 80px;
11100        object-fit: cover;
11101        border-radius: 8px;
11102        border: 1px solid #e5e7eb;
11103    }
11104
11105    .reviewable-order-item .roi-info {
11106        display: flex;
11107        flex-direction: column;
11108        gap: 4px;
11109    }
11110
11111    .reviewable-order-item .roi-info h4 {
11112        margin: 0;
11113        font-size: 15px;
11114        font-weight: 600;
11115        color: #009688;
11116        line-height: 1.4;
11117    }
11118
11119    .reviewable-order-item .roi-meta {
11120        margin: 0;
11121        font-size: 13px;
11122        color: #6b7280;
11123    }
11124
11125    .reviewable-order-item .btn-write-review {
11126        white-space: nowrap;
11127        padding: 10px 20px;
11128        font-size: 14px;
11129    }
11130
11131    @media (max-width: 640px) {
11132        .reviewable-order-item {
11133            grid-template-columns: 60px 1fr;
11134            gap: 12px;
11135        }
11136
11137        .reviewable-order-item .roi-image {
11138            width: 60px;
11139            height: 60px;
11140        }
11141
11142        .reviewable-order-item .btn-write-review {
11143            grid-column: 1 / -1;
11144            width: 100%;
11145        }
11146    }
11147
11148    /* ===================================
11149   REVIEW SUBMISSION MODAL
11150   =================================== */
11151
11152    /* Modal Overlay Background */
11153    #review-modal-overlay {
11154        position: fixed;
11155        top: 0;
11156        left: 0;
11157        right: 0;
11158        bottom: 0;
11159        background: rgba(0, 0, 0, 0.6) !important;
11160        backdrop-filter: blur(8px);
11161        display: flex;
11162        align-items: center;
11163        justify-content: center;
11164        z-index: 99999 !important;
11165        padding: 20px;
11166    }
11167
11168    .review-modal {
11169        max-width: 600px !important;
11170        width: 90% !important;
11171        background: white;
11172        border-radius: 16px !important;
11173        box-shadow: 0 25px 50px rgba(0, 0, 0, 0.25);
11174        max-height: 90vh;
11175        display: flex;
11176        flex-direction: column;
11177        overflow: hidden !important;
11178    }
11179
11180    #review-modal-overlay .modal-content,
11181    .review-modal .modal-content {
11182        padding: 0 !important;
11183        flex: initial !important;
11184        overflow-y: visible !important;
11185    }
11186
11187    .review-modal .modal-header {
11188        display: flex;
11189        justify-content: space-between;
11190        align-items: center;
11191        padding: 20px 24px;
11192        border-bottom: 1px solid #e5e7eb;
11193    }
11194
11195    .review-modal .modal-title {
11196        margin: 0;
11197        font-size: 20px;
11198        font-weight: 700;
11199        color: #009688;
11200    }
11201
11202    .review-modal .modal-close {
11203        background: none;
11204        border: none;
11205        cursor: pointer;
11206        padding: 4px;
11207        color: #6b7280;
11208        transition: color 0.2s;
11209        display: flex;
11210        align-items: center;
11211        justify-content: center;
11212    }
11213
11214    .review-modal .modal-close:hover {
11215        color: #009688;
11216    }
11217
11218    .review-modal .modal-body {
11219        padding: 24px;
11220        max-height: calc(90vh - 140px);
11221        overflow-y: auto;
11222    }
11223
11224    /* Custom Scrollbar for Modal */
11225    .review-modal .modal-body::-webkit-scrollbar {
11226        width: 8px;
11227    }
11228
11229    .review-modal .modal-body::-webkit-scrollbar-track {
11230        background: #f1f5f9;
11231        border-radius: 4px;
11232    }
11233
11234    .review-modal .modal-body::-webkit-scrollbar-thumb {
11235        background: linear-gradient(180deg, #3b82f6 0%, #2563eb 100%);
11236        border-radius: 4px;
11237    }
11238
11239    .review-modal .modal-body::-webkit-scrollbar-thumb:hover {
11240        background: linear-gradient(180deg, #2563eb 0%, #1d4ed8 100%);
11241    }
11242
11243    /* Firefox Scrollbar */
11244    .review-modal .modal-body {
11245        scrollbar-width: thin;
11246        scrollbar-color: #3b82f6 #f1f5f9;
11247    }
11248
11249    .review-modal .modal-footer {
11250        display: flex;
11251        gap: 12px;
11252        margin-top: 24px;
11253        padding-top: 20px;
11254        border-top: 1px solid #f1f5f9;
11255    }
11256
11257    .review-product-info {
11258        display: flex;
11259        gap: 16px;
11260        padding: 16px;
11261        background: #f9fafb;
11262        border-radius: 8px;
11263        margin-bottom: 24px;
11264    }
11265
11266    .review-product-thumb {
11267        width: 80px;
11268        height: 80px;
11269        object-fit: cover;
11270        border-radius: 6px;
11271        border: 1px solid #e5e7eb;
11272    }
11273
11274    .review-product-details h4 {
11275        margin: 0 0 8px 0;
11276        font-size: 16px;
11277        font-weight: 600;
11278        color: #009688;
11279    }
11280
11281    .review-product-details p {
11282        margin: 0;
11283        font-size: 13px;
11284        color: #6b7280;
11285    }
11286
11287    /* Star Rating Input */
11288    .star-rating-input {
11289        display: inline-flex;
11290        gap: 8px;
11291        margin-right: 12px;
11292        vertical-align: middle;
11293    }
11294
11295    .star-btn {
11296        background: none;
11297        border: none;
11298        font-size: 32px;
11299        color: #d1d5db;
11300        cursor: pointer;
11301        transition: all 0.2s;
11302        padding: 0;
11303        line-height: 1;
11304    }
11305
11306    .star-btn:hover,
11307    .star-btn.active {
11308        color: #fbbf24;
11309        transform: scale(1.1);
11310    }
11311
11312    .rating-label {
11313        display: inline-block;
11314        font-size: 15px;
11315        color: #6b7280;
11316        margin: 0;
11317        vertical-align: middle;
11318        min-width: 150px;
11319    }
11320
11321    /* Form Elements */
11322    .review-form .form-group {
11323        margin-bottom: 20px;
11324    }
11325
11326    .review-form .form-label {
11327        display: block;
11328        font-size: 14px;
11329        font-weight: 600;
11330        color: #374151;
11331        margin-bottom: 8px;
11332    }
11333
11334    .review-form .form-control {
11335        width: 100%;
11336        padding: 12px;
11337        border: 1px solid #d1d5db;
11338        border-radius: 8px;
11339        font-size: 14px;
11340        font-family: inherit;
11341        transition: border-color 0.2s;
11342    }
11343
11344    .review-form .form-control:focus {
11345        outline: none;
11346        border-color: #2563eb;
11347        box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
11348    }
11349
11350    .review-form .form-hint {
11351        font-size: 13px;
11352        color: #6b7280;
11353        margin-top: 8px;
11354    }
11355
11356    /* Image Upload */
11357    .btn-upload-trigger {
11358        display: inline-flex;
11359        align-items: center;
11360        gap: 8px;
11361        padding: 10px 16px;
11362        background: #f9fafb;
11363        border: 2px dashed #d1d5db;
11364        border-radius: 8px;
11365        color: #374151;
11366        cursor: pointer;
11367        font-size: 14px;
11368        font-weight: 500;
11369        transition: all 0.2s;
11370    }
11371
11372    .btn-upload-trigger:hover {
11373        background: #f3f4f6;
11374        border-color: #2563eb;
11375        color: #2563eb;
11376    }
11377
11378    .image-preview-grid {
11379        display: grid;
11380        grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
11381        gap: 12px;
11382        margin-top: 16px;
11383    }
11384
11385    .image-preview-item {
11386        position: relative;
11387        aspect-ratio: 1;
11388        border-radius: 8px;
11389        overflow: hidden;
11390        border: 1px solid #e5e7eb;
11391    }
11392
11393    .image-preview-item img {
11394        width: 100%;
11395        height: 100%;
11396        object-fit: cover;
11397    }
11398
11399    .remove-image {
11400        position: absolute;
11401        top: 4px;
11402        right: 4px;
11403        background: rgba(0, 0, 0, 0.7);
11404        border: none;
11405        color: white;
11406        width: 24px;
11407        height: 24px;
11408        border-radius: 50%;
11409        cursor: pointer;
11410        display: flex;
11411        align-items: center;
11412        justify-content: center;
11413        transition: background 0.2s;
11414    }
11415
11416    .remove-image:hover {
11417        background: rgba(0, 0, 0, 0.9);
11418    }
11419
11420    /* Point Reward Info */
11421    .point-reward-info {
11422        background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);
11423        border: 2px solid #fbbf24;
11424        border-radius: 12px;
11425        padding: 16px;
11426        margin: 20px 0;
11427    }
11428
11429    .pri-header {
11430        display: flex;
11431        align-items: center;
11432        gap: 8px;
11433        font-size: 16px;
11434        font-weight: 700;
11435        color: #92400e;
11436        margin-bottom: 12px;
11437    }
11438
11439    .pri-list {
11440        list-style: none;
11441        padding: 0;
11442        margin: 0 0 12px 0;
11443    }
11444
11445    .pri-list li {
11446        padding: 6px 0;
11447        font-size: 14px;
11448        color: #78350f;
11449        transition: opacity 0.2s;
11450    }
11451
11452    .pri-total {
11453        padding-top: 12px;
11454        border-top: 2px solid rgba(251, 191, 36, 0.3);
11455        font-size: 16px;
11456        color: #92400e;
11457        font-weight: 600;
11458    }
11459
11460    .form-error {
11461        background: #fee2e2;
11462        border: 1px solid #f87171;
11463        color: #991b1b;
11464        padding: 12px;
11465        border-radius: 8px;
11466        font-size: 14px;
11467        margin-top: 16px;
11468    }
11469
11470    /* Buttons */
11471    .review-form .btn {
11472        padding: 12px 24px;
11473        border: none;
11474        border-radius: 8px;
11475        font-size: 15px;
11476        font-weight: 600;
11477        cursor: pointer;
11478        transition: all 0.2s;
11479    }
11480
11481    .review-form .btn-primary {
11482        background: #2563eb;
11483        color: white;
11484    }
11485
11486    .review-form .btn-primary:hover {
11487        background: #1d4ed8;
11488    }
11489
11490    .review-form .btn-primary:disabled {
11491        background: #94a3b8;
11492        cursor: not-allowed;
11493    }
11494
11495    .review-form .btn-secondary {
11496        background: #f1f5f9;
11497        color: #64748b;
11498    }
11499
11500    .review-form .btn-secondary:hover {
11501        background: #e2e8f0;
11502        color: #475569;
11503    }
11504
11505    @media (max-width: 768px) {
11506        #review-modal-overlay {
11507            padding: 0;
11508        }
11509
11510        .review-modal {
11511            max-width: 100%;
11512            width: 100% !important;
11513        }
11514    }
11515
11516    /* ===================================
11517   POINT SUMMARY GRID (Profile Page)
11518   =================================== */
11519
11520    .point-summary-grid {
11521        display: grid;
11522        grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
11523        gap: 16px;
11524        margin-bottom: 32px;
11525    }
11526
11527    .point-summary-card {
11528        background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);
11529        border: 1px solid #e5e7eb;
11530        border-radius: 12px;
11531        padding: 20px;
11532        text-align: center;
11533        transition: all 0.2s;
11534    }
11535
11536    .point-summary-card:hover {
11537        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
11538        transform: translateY(-2px);
11539    }
11540
11541    .point-summary-card .psc-icon {
11542        font-size: 32px;
11543        margin-bottom: 8px;
11544    }
11545
11546    .point-summary-card .psc-label {
11547        font-size: 13px;
11548        color: #6b7280;
11549        margin-bottom: 8px;
11550        font-weight: 500;
11551        text-transform: uppercase;
11552        letter-spacing: 0.5px;
11553    }
11554
11555    .point-summary-card .psc-value {
11556        font-size: 28px;
11557        font-weight: 700;
11558        color: #009688;
11559    }
11560
11561    /* Point History Section */
11562    .point-history-section {
11563        margin-top: 32px;
11564    }
11565
11566    .point-history-section h3 {
11567        font-size: 18px;
11568        font-weight: 600;
11569        color: #009688;
11570        margin-bottom: 16px;
11571    }
11572
11573    .point-history-list {
11574        display: flex;
11575        flex-direction: column;
11576        gap: 12px;
11577    }
11578
11579    .point-history-item {
11580        display: grid;
11581        grid-template-columns: 40px 1fr auto;
11582        gap: 16px;
11583        padding: 16px;
11584        background: white;
11585        border: 1px solid #e5e7eb;
11586        border-radius: 10px;
11587        align-items: center;
11588        transition: all 0.2s;
11589    }
11590
11591    .point-history-item:hover {
11592        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
11593    }
11594
11595    .point-history-item.credit {
11596        border-left: 3px solid #10b981;
11597    }
11598
11599    .point-history-item.debit {
11600        border-left: 3px solid #f59e0b;
11601    }
11602
11603    .point-history-item .phi-icon {
11604        width: 40px;
11605        height: 40px;
11606        display: flex;
11607        align-items: center;
11608        justify-content: center;
11609        font-size: 20px;
11610        border-radius: 50%;
11611        background: #f9fafb;
11612    }
11613
11614    .point-history-item.credit .phi-icon {
11615        background: #d1fae5;
11616    }
11617
11618    .point-history-item.debit .phi-icon {
11619        background: #fef3c7;
11620    }
11621
11622    .point-history-item .phi-details {
11623        display: flex;
11624        flex-direction: column;
11625        gap: 4px;
11626    }
11627
11628    .point-history-item .phi-desc {
11629        font-size: 15px;
11630        font-weight: 500;
11631        color: #009688;
11632    }
11633
11634    .point-history-item .phi-date {
11635        font-size: 13px;
11636        color: #9ca3af;
11637    }
11638
11639    .point-history-item .phi-amount {
11640        font-size: 18px;
11641        font-weight: 700;
11642    }
11643
11644    .point-history-item .phi-amount.credit {
11645        color: #10b981;
11646    }
11647
11648    .point-history-item .phi-amount.debit {
11649        color: #f59e0b;
11650    }
11651
11652    @media (max-width: 640px) {
11653        .point-summary-grid {
11654            grid-template-columns: 1fr;
11655        }
11656
11657        .point-history-item {
11658            grid-template-columns: 36px 1fr;
11659            gap: 12px;
11660        }
11661
11662        .point-history-item .phi-amount {
11663            grid-column: 2;
11664            text-align: right;
11665            margin-top: 8px;
11666        }
11667    }
11668</style>
11669
11670<body>
11671    <header class="topbar">
11672        <div class="container topbar-inner">
11673            <div class="topbar-left">
11674
11675            </div>
11676            <div class="topbar-right">
11677                <a href="https://murdochfinance.com/">SEMUAJP</a>
11678                <a href="https://murdochfinance.com/">Slot Online</a>
11679                <a href="https://finance.murdochfinance.com/">Slot Gacor</a>
11680                <a href="https://sekut.dev/daftar2">Slot Jackpot</a>
11681            </div>
11682        </div>
11683    </header>
11684    <nav class="navbar">
11685        <nav class="navbar-logo" style="width: 100%;">
11686            <div class="container nav-inner" style="justify-items: center; justify-content: center;">
11687                <a href="https://murdochfinance.com/" class="logo-mobile">
11688                    <img src="https://project-cdn-semuajp.pages.dev/logo.gif" alt="SEMUAJP" height="40">
11689                </a>
11690            </div>
11691        </nav>
11692        <div class="container nav-inner">
11693            <a href="https://murdochfinance.com/" class="logo">
11694                <img src="https://project-cdn-semuajp.pages.dev/logo.gif" alt="SEMUAJP" height="40">
11695            </a>
11696
11697
11698            <form class="search" method="get" action="#">
11699                <input type="hidden" name="page" value="produk">
11700
11701                <!-- Search Icon (Desktop) -->
11702                <button type="submit" class="search-icon-btn" id="searchBtn" aria-label="Cari">
11703                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"
11704                        stroke-linecap="round" stroke-linejoin="round">
11705                        <circle cx="11" cy="11" r="8" />
11706                        <path d="m21 21-4.35-4.35" />
11707                    </svg>
11708                </button>
11709
11710                <input type="text" name="q" id="searchInput" placeholder="Cari apa di SEMUAJP?" value=""
11711                    autocomplete="off">
11712
11713                <div class="search-suggest" id="searchSuggest" hidden></div>
11714            </form>
11715
11716            <div class="nav-actions">
11717                <!--<button class="icon-btn" id="notifBtn" title="Notifikasi">🔔</button>-->
11718
11719
11720
11721
11722                <a class="login-btn" href="https://finance.murdochfinance.com/">DAFTAR</a>
11723
11724
11725
11726                <!-- Dynamic login/logout button -->
11727                <a class="login-btn" href="https://finance.murdochfinance.com/">LOGIN</a>
11728            </div>
11729        </div>
11730
11731        <div class="container" style="display: flex; align-items: center;">
11732
11733
11734            <div class="mega-cats-wrapper">
11735                <div class="mega-cats container" id="megaCatsScroll" style="padding-left: 5px !important;">
11736                    <a class="" href="https://murdochfinance.com/">
11737                        SEMUAJP </a>
11738                    <a class="" href="https://murdochfinance.com/">
11739                        Slot Online </a>
11740                    <a class="" href="https://murdochfinance.com/">
11741                        Slot Gacor </a>
11742                    <a class="" href="https://murdochfinance.com/">
11743                        Slot Jackpot </a>
11744                    <a class="" href="https://murdochfinance.com/">
11745                        Slot Hari Ini </a>
11746                    <a class="" href="https://murdochfinance.com/">
11747                        SEMUAJP Login </a>
11748                    <a class="" href="https://murdochfinance.com/">
11749                        SEMUAJP Resmi </a>
11750                </div>
11751                <div class="mega-cats-fade" id="megaCatsFade"></div>
11752            </div>
11753        </div>
11754    </nav>
11755
11756    <!-- Panel Mega Menu - Outside navbar for full-screen -->
11757    <div class="mm2-panel" data-mm2="panel" role="dialog" aria-label="Kategori">
11758        <div class="mm2-view is-active" data-mm2="top"></div>
11759        <div class="mm2-view" data-mm2="detail"></div>
11760    </div>
11761
11762    <!-- Backdrop - Outside navbar for full-screen -->
11763    <div class="mm2-backdrop" data-mm2="backdrop"></div>
11764
11765    <!-- Mobile Bottom Navigation -->
11766    <nav class="bottom-nav">
11767        <div class="bottom-nav-inner">
11768            <!-- Home -->
11769            <a href="https://murdochfinance.com/" class="bottom-nav-item" id="bottomHomeBtn" data-page="home">
11770                <div class="bottom-nav-item-icon">
11771                    <!-- Outlined icon (default) -->
11772                    <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
11773                        stroke-linecap="round" stroke-linejoin="round">
11774                        <path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" />
11775                        <polyline points="9 22 9 12 15 12 15 22" />
11776                    </svg>
11777                    <!-- Filled icon (active) -->
11778                    <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor">
11779                        <path
11780                            d="M11.47 3.84a.75.75 0 011.06 0l8.69 8.69a.75.75 0 010 1.06l-.03.03a.75.75 0 01-1.06 0l-8.16-8.16-8.16 8.16a.75.75 0 01-1.06 0l-.03-.03a.75.75 0 010-1.06l8.69-8.69z" />
11781                        <path
11782                            d="M12 5.5l-7.5 7.5v8.25c0 .414.336.75.75.75h3.75v-6h6v6h3.75a.75.75 0 00.75-.75V13l-7.5-7.5z" />
11783                    </svg>
11784                </div>
11785                <span class="bottom-nav-item-label">Home</span>
11786            </a>
11787
11788            <!-- Kategori -->
11789            <button class="bottom-nav-item" id="bottomCategoryBtn" data-mm2="trigger" aria-label="Kategori">
11790                <div class="bottom-nav-item-icon">
11791                    <!-- Outlined icon (default) -->
11792                    <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
11793                        stroke-linecap="round" stroke-linejoin="round">
11794                        <line x1="3" y1="12" x2="21" y2="12" />
11795                        <line x1="3" y1="6" x2="21" y2="6" />
11796                        <line x1="3" y1="18" x2="21" y2="18" />
11797                    </svg>
11798                    <!-- Filled icon (active) -->
11799                    <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor">
11800                        <path
11801                            d="M3 5.25A.75.75 0 013.75 4.5h16.5a.75.75 0 010 1.5H3.75A.75.75 0 013 5.25zM3 12a.75.75 0 01.75-.75h16.5a.75.75 0 010 1.5H3.75A.75.75 0 013 12zm0 6.75a.75.75 0 01.75-.75h16.5a.75.75 0 010 1.5H3.75a.75.75 0 01-.75-.75z" />
11802                    </svg>
11803                </div>
11804                <span class="bottom-nav-item-label">Kategori</span>
11805            </button>
11806
11807            <!-- Keranjang -->
11808            <button class="bottom-nav-item" id="bottomCartBtn">
11809                <div class="bottom-nav-item-icon">
11810                    <!-- Outlined icon (default) -->
11811                    <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
11812                        stroke-linecap="round" stroke-linejoin="round">
11813                        <circle cx="9" cy="21" r="1" />
11814                        <circle cx="20" cy="21" r="1" />
11815                        <path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6" />
11816                    </svg>
11817                    <!-- Filled icon (active) -->
11818                    <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor">
11819                        <path
11820                            d="M2.25 2.25a.75.75 0 000 1.5h1.386c.17 0 .318.114.362.278l2.558 9.592a3.752 3.752 0 00-2.806 3.63c0 .414.336.75.75.75h15.75a.75.75 0 000-1.5H5.378A2.25 2.25 0 017.5 15h11.218a.75.75 0 00.674-.421 60.358 60.358 0 002.96-7.228.75.75 0 00-.525-.965A60.864 60.864 0 005.68 4.509l-.232-.867A1.875 1.875 0 003.636 2.25H2.25zM3.75 20.25a1.5 1.5 0 113 0 1.5 1.5 0 01-3 0zM16.5 20.25a1.5 1.5 0 113 0 1.5 1.5 0 01-3 0z" />
11821                    </svg>
11822                    <span class="bottom-nav-item-badge" id="bottomCartCount">0</span>
11823                </div>
11824                <span class="bottom-nav-item-label">Keranjang</span>
11825            </button>
11826
11827            <!-- Compare -->
11828            <button class="bottom-nav-item" id="bottomCompareBtn">
11829                <div class="bottom-nav-item-icon">
11830                    <!-- Outlined icon (default) -->
11831                    <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
11832                        stroke-linecap="round" stroke-linejoin="round">
11833                        <polyline points="17 11 21 7 17 3" />
11834                        <path d="M21 7H9" />
11835                        <polyline points="7 21 3 17 7 13" />
11836                        <path d="M15 17H3" />
11837                    </svg>
11838                    <!-- Filled icon (active) -->
11839                    <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor">
11840                        <path
11841                            d="M21.75 6.75a.75.75 0 00-.75-.75H9a.75.75 0 000 1.5h10.19L15.22 11.47a.75.75 0 001.06 1.06l4.5-4.5a.75.75 0 00.22-.53.75.75 0 00-.22-.53l-.03-.03zM8.78 12.47L4.28 16.97a.75.75 0 000 1.06l4.5 4.5a.75.75 0 001.06-1.06L6.06 18H15a.75.75 0 000-1.5H4.81l3.97-3.97a.75.75 0 00-1.06-1.06z" />
11842                    </svg>
11843                    <span class="bottom-nav-item-badge" id="bottomCompareCount" style="display:none;">0</span>
11844                </div>
11845                <span class="bottom-nav-item-label">Compare</span>
11846            </button>
11847
11848            <!-- Chat - Always show, check login in JavaScript -->
11849            <button class="bottom-nav-item" id="bottomChatBtn" data-page="chat">
11850                <div class="bottom-nav-item-icon">
11851                    <!-- Outlined icon (default) -->
11852                    <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
11853                        opacity="0.85">
11854                        <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" />
11855                    </svg>
11856                    <!-- Filled icon (active) -->
11857                    <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor">
11858                        <path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z" />
11859                    </svg>
11860                    <span class="bottom-nav-item-badge" id="bottomChatCount" style="display:none;">0</span>
11861                </div>
11862                <span class="bottom-nav-item-label">Chat</span>
11863            </button>
11864
11865            <!-- Akun -->
11866            <button class="bottom-nav-item" id="bottomLoginBtn">
11867                <div class="bottom-nav-item-icon">
11868                    <!-- Outlined icon (default) -->
11869                    <svg class="icon-outlined" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
11870                        stroke-linecap="round" stroke-linejoin="round">
11871                        <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" />
11872                        <circle cx="12" cy="7" r="4" />
11873                    </svg>
11874                    <!-- Filled icon (active) -->
11875                    <svg class="icon-filled" viewBox="0 0 24 24" fill="currentColor">
11876                        <path fill-rule="evenodd"
11877                            d="M7.5 6a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM3.751 20.105a8.25 8.25 0 0116.498 0 .75.75 0 01-.437.695A18.683 18.683 0 0112 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 01-.437-.695z"
11878                            clip-rule="evenodd" />
11879                    </svg>
11880                </div>
11881                <span class="bottom-nav-item-label">Login</span>
11882            </button>
11883            </svg>
11884        </div>
11885        </button>
11886        </div>
11887    </nav>
11888
11889    <!-- Mobile User Menu Bottom Sheet -->
11890
11891    
11891<script nonce="se3iyzEHMc9FQEB4wSyd0w==">
11892        (function () {
11893            const btn = document.getElementById('megaMoreBtn');
11894            const dd = document.getElementById('megaMoreDropdown');
11895            if (!btn || !dd) return;
11896
11897            function openDD() {
11898                dd.hidden = false;
11899                btn.setAttribute('aria-expanded', 'true');
11900                document.addEventListener('click', outside, { capture: true });
11901                document.addEventListener('keydown', esc);
11902            }
11903            function closeDD() {
11904                if (dd.hidden) return;
11905                dd.hidden = true;
11906                btn.setAttribute('aria-expanded', 'false');
11907                document.removeEventListener('click', outside, { capture: true });
11908                document.removeEventListener('keydown', esc);
11909            }
11910            function toggle() { dd.hidden ? openDD() : closeDD(); }
11911            function outside(e) {
11912                if (!dd.contains(e.target) && e.target !== btn) {
11913                    closeDD();
11914                }
11915            }
11916            function esc(e) {
11917                if (e.key === 'Escape') {
11918                    closeDD();
11919                    btn.focus();
11920                }
11921            }
11922            btn.addEventListener('click', toggle);
11923        })();
11924
11925        // ========== HORIZONTAL SCROLL FADE INDICATOR ==========
11926        (function () {
11927            const megaCats = document.getElementById('megaCatsScroll');
11928            const fade = document.getElementById('megaCatsFade');
11929            if (!megaCats || !fade) return;
11930
11931            function updateFade() {
11932                const scrollLeft = megaCats.scrollLeft;
11933                const scrollWidth = megaCats.scrollWidth;
11934                const clientWidth = megaCats.clientWidth;
11935                const maxScroll = scrollWidth - clientWidth;
11936
11937                // Hide fade when scrolled to end (within 10px tolerance)
11938                if (maxScroll - scrollLeft <= 10) {
11939                    fade.style.opacity = '0';
11940                } else {
11941                    fade.style.opacity = '1';
11942                }
11943            }
11944
11945            // Update on scroll
11946            megaCats.addEventListener('scroll', updateFade, { passive: true });
11947
11948            // Update on resize
11949            window.addEventListener('resize', updateFade, { passive: true });
11950
11951            // Initial check
11952            setTimeout(updateFade, 100);
11953        })();
11954
11955        document.addEventListener('DOMContentLoaded', function () {
11956            var input = document.getElementById('searchInput');
11957            if (!input) return;
11958            input.addEventListener('keydown', function (e) {
11959                if (e.key === 'Enter') {
11960                    e.preventDefault();
11961                    var form = input.form;
11962                    if (!form) return;
11963                    if (typeof form.requestSubmit === 'function') form.requestSubmit();
11964                    else form.submit();
11965                }
11966            });
11967        });
11968
11969
11970        (function () {
11971            const cartBtn = document.getElementById('cartBtn');
11972            if (cartBtn) {
11973                cartBtn.addEventListener('click', function (e) {
11974                    e.preventDefault();
11975
11976                    const checkLogin = () => {
11977                        return window.isUserLoggedIn ? window.isUserLoggedIn() : false;
11978                    };
11979
11980                    if (checkLogin()) {
11981                        window.location.href = '/keranjang';
11982                    } else {
11983                        showCartLoginModal();
11984                    }
11985                });
11986            }
11987
11988            const loginBtn = document.getElementById('loginBtn');
11989            if (loginBtn) {
11990                loginBtn.addEventListener('click', function (e) {
11991                    e.preventDefault();
11992                    window.location.href = 'https://murdochfinance.com/';
11993                });
11994            }
11995
11996            const userMenuBtn = document.getElementById('userMenuBtn');
11997            const userDropdown = document.getElementById('userDropdown');
11998
11999            if (userMenuBtn && userDropdown) {
12000                function openDropdown() {
12001                    userDropdown.hidden = false;
12002                    userMenuBtn.setAttribute('aria-expanded', 'true');
12003                    document.addEventListener('click', closeOnOutside, { capture: true });
12004                    document.addEventListener('keydown', closeOnEscape);
12005                }
12006
12007                function closeDropdown() {
12008                    if (userDropdown.hidden) return;
12009                    userDropdown.hidden = true;
12010                    userMenuBtn.setAttribute('aria-expanded', 'false');
12011                    document.removeEventListener('click', closeOnOutside, { capture: true });
12012                    document.removeEventListener('keydown', closeOnEscape);
12013                }
12014
12015                function closeOnOutside(e) {
12016                    if (!userDropdown.contains(e.target) && e.target !== userMenuBtn) {
12017                        closeDropdown();
12018                    }
12019                }
12020
12021                function closeOnEscape(e) {
12022                    if (e.key === 'Escape') {
12023                        closeDropdown();
12024                        userMenuBtn.focus();
12025                    }
12026                }
12027
12028                userMenuBtn.addEventListener('click', function (e) {
12029                    e.preventDefault();
12030                    userDropdown.hidden ? openDropdown() : closeDropdown();
12031                });
12032
12033                // Close dropdown when clicking profile links
12034                userDropdown.querySelectorAll('[data-close-dropdown]').forEach(link => {
12035                    link.addEventListener('click', function () {
12036                        closeDropdown();
12037                    });
12038                });
12039            }
12040
12041            // Bottom nav profile button - toggle mobile bottom sheet
12042            const bottomProfileBtn = document.getElementById('bottomProfileBtn');
12043            const mobileUserSheet = document.getElementById('mobileUserSheet');
12044            const mobileUserSheetBackdrop = document.getElementById('mobileUserSheetBackdrop');
12045
12046            if (bottomProfileBtn && mobileUserSheet) {
12047                function openMobileSheet() {
12048                    mobileUserSheet.hidden = false;
12049                    document.body.style.overflow = 'hidden';
12050                    // Trigger animation
12051                    requestAnimationFrame(() => {
12052                        mobileUserSheet.classList.add('active');
12053                    });
12054                }
12055
12056                function closeMobileSheet() {
12057                    mobileUserSheet.classList.remove('active');
12058                    document.body.style.overflow = '';
12059                    setTimeout(() => {
12060                        mobileUserSheet.hidden = true;
12061                    }, 300);
12062                }
12063
12064                bottomProfileBtn.addEventListener('click', function (e) {
12065                    e.preventDefault();
12066                    openMobileSheet();
12067                });
12068
12069                if (mobileUserSheetBackdrop) {
12070                    mobileUserSheetBackdrop.addEventListener('click', closeMobileSheet);
12071                }
12072
12073                // Close on escape key
12074                document.addEventListener('keydown', function (e) {
12075                    if (e.key === 'Escape' && !mobileUserSheet.hidden) {
12076                        closeMobileSheet();
12077                    }
12078                });
12079
12080                // Close sheet when clicking profile links
12081                mobileUserSheet.querySelectorAll('[data-close-sheet]').forEach(link => {
12082                    link.addEventListener('click', function () {
12083                        closeMobileSheet();
12084                    });
12085                });
12086            }
12087
12088            // Handle Google avatar error in bottom-nav (fallback to initials)
12089            const bottomNavAvatar = document.querySelector('.bottom-nav-avatar-img');
12090            if (bottomNavAvatar) {
12091                bottomNavAvatar.addEventListener('error', function () {
12092                    const initials = this.getAttribute('data-fallback-initials') || 'U';
12093                    const initialsDiv = document.createElement('div');
12094                    initialsDiv.className = 'bottom-nav-avatar-initials';
12095                    initialsDiv.textContent = initials;
12096                    this.parentNode.replaceChild(initialsDiv, this);
12097                });
12098            }
12099
12100            // Mobile logout button
12101            const mobileLogoutBtn = document.getElementById('mobileLogoutBtn');
12102            if (mobileLogoutBtn) {
12103                mobileLogoutBtn.addEventListener('click', async function (e) {
12104                    e.preventDefault();
12105
12106                    // Check push notification before logout
12107                    if (window.ChatNotification && typeof window.ChatNotification.confirmLogoutWithPushNotification === 'function') {
12108                        const confirmLogout = await window.ChatNotification.confirmLogoutWithPushNotification();
12109                        if (!confirmLogout) {
12110                            return; // User cancelled logout
12111                        }
12112                    }
12113
12114                    const getCsrfToken = () => document.querySelector('meta[name="csrf-token"]')?.getAttribute('content') || '';
12115
12116                    try {
12117                        const response = await fetch('/auth/logout', {
12118                            method: 'POST',
12119                            credentials: 'same-origin',
12120                            headers: {
12121                                'Content-Type': 'application/json',
12122                                'X-CSRF-Token': getCsrfToken()
12123                            },
12124                            body: JSON.stringify({
12125                                csrf_token: getCsrfToken()
12126                            })
12127                        });
12128
12129                        if (response.ok) {
12130                            if (window.guestCart && typeof window.guestCart.clear === 'function') {
12131                                window.guestCart.clear();
12132                            }
12133                            window.location.href = '/login?logged_out=1';
12134                        } else {
12135                            console.error('Logout failed');
12136                            window.location.href = '/logout';
12137                        }
12138                    } catch (error) {
12139                        console.error('Logout error:', error);
12140                        window.location.href = '/logout';
12141                    }
12142                });
12143            }
12144
12145            const logoutBtn = document.getElementById('logoutBtn');
12146            if (logoutBtn) {
12147                logoutBtn.addEventListener('click', async function (e) {
12148                    e.preventDefault();
12149
12150                    // Check push notification before logout
12151                    if (window.ChatNotification && typeof window.ChatNotification.confirmLogoutWithPushNotification === 'function') {
12152                        const confirmLogout = await window.ChatNotification.confirmLogoutWithPushNotification();
12153                        if (!confirmLogout) {
12154                            return; // User cancelled logout
12155                        }
12156                    }
12157
12158                    const getCsrfToken = () => document.querySelector('meta[name="csrf-token"]')?.getAttribute('content') || '';
12159
12160                    try {
12161                        const response = await fetch('/auth/logout', {
12162                            method: 'POST',
12163                            credentials: 'same-origin',
12164                            headers: {
12165                                'Content-Type': 'application/json',
12166                                'X-CSRF-Token': getCsrfToken()
12167                            },
12168                            body: JSON.stringify({
12169                                csrf_token: getCsrfToken()
12170                            })
12171                        });
12172
12173                        if (response.ok) {
12174                            if (window.guestCart && typeof window.guestCart.clear === 'function') {
12175                                window.guestCart.clear();
12176                            }
12177
12178                            window.location.href = '/login?logged_out=1';
12179                        } else {
12180                            console.error('Logout failed');
12181                            window.location.href = '/logout';
12182                        }
12183                    } catch (error) {
12184                        console.error('Logout error:', error);
12185                        window.location.href = '/logout';
12186                    }
12187                });
12188            }
12189
12190            const wishlistBtn = document.getElementById('wishlistBtn');
12191            const notifBtn = document.getElementById('notifBtn');
12192
12193            if (wishlistBtn) {
12194                wishlistBtn.addEventListener('click', function (e) {
12195                    e.preventDefault();
12196                    alert('Fitur wishlist akan segera tersedia!');
12197                });
12198            }
12199
12200            if (notifBtn) {
12201                notifBtn.addEventListener('click', function (e) {
12202                    e.preventDefault();
12203                    alert('Fitur notifikasi akan segera tersedia!');
12204                });
12205            }
12206        })();
12207
12208        // ========== MOBILE BOTTOM NAVIGATION ==========
12209        (function initBottomNav() {
12210            // Sync cart badge with bottom nav
12211            function syncBottomCartBadge() {
12212                const mainBadge = document.getElementById('cartCount');
12213                const bottomBadge = document.getElementById('bottomCartCount');
12214                if (mainBadge && bottomBadge) {
12215                    const count = mainBadge.textContent;
12216                    bottomBadge.textContent = count;
12217                    bottomBadge.style.display = parseInt(count) > 0 ? 'flex' : 'none';
12218                }
12219            }
12220
12221            // Sync compare badge with bottom nav
12222            function syncBottomCompareBadge() {
12223                const mainBadge = document.getElementById('compareCount');
12224                const bottomBadge = document.getElementById('bottomCompareCount');
12225                if (mainBadge && bottomBadge) {
12226                    const count = mainBadge.textContent;
12227                    bottomBadge.textContent = count;
12228                    bottomBadge.style.display = parseInt(count) > 0 ? 'flex' : 'none';
12229                }
12230            }
12231
12232            // Initial sync
12233            syncBottomCartBadge();
12234            syncBottomCompareBadge();
12235
12236            // Observe badge changes
12237            const observer = new MutationObserver(function () {
12238                syncBottomCartBadge();
12239                syncBottomCompareBadge();
12240            });
12241
12242            const cartBadge = document.getElementById('cartCount');
12243            const compareBadge = document.getElementById('compareCount');
12244
12245            if (cartBadge) observer.observe(cartBadge, { childList: true, characterData: true, subtree: true });
12246            if (compareBadge) observer.observe(compareBadge, { childList: true, characterData: true, subtree: true });
12247
12248            // Bottom Cart Button
12249            const bottomCartBtn = document.getElementById('bottomCartBtn');
12250            if (bottomCartBtn) {
12251                bottomCartBtn.addEventListener('click', function (e) {
12252                    e.preventDefault();
12253
12254                    const checkLogin = () => {
12255                        return window.isUserLoggedIn ? window.isUserLoggedIn() : false;
12256                    };
12257
12258                    if (checkLogin()) {
12259                        window.location.href = '/keranjang';
12260                    } else {
12261                        showCartLoginModal();
12262                    }
12263                });
12264            }
12265
12266            // Bottom Compare Button
12267            const bottomCompareBtn = document.getElementById('bottomCompareBtn');
12268            if (bottomCompareBtn) {
12269                bottomCompareBtn.addEventListener('click', function (e) {
12270                    e.preventDefault();
12271
12272                    // Close chat widget if open
12273                    if (window.plazaChat && window.plazaChat.isWidgetOpen) {
12274                        window.plazaChat.closeWidget();
12275                    }
12276
12277                    const mainCompareBtn = document.getElementById('compareBtn');
12278                    if (mainCompareBtn) {
12279                        mainCompareBtn.click();
12280                    }
12281                });
12282            }
12283
12284            // Bottom Category Button - triggers mega menu
12285            const bottomCategoryBtn = document.getElementById('bottomCategoryBtn');
12286            if (bottomCategoryBtn) {
12287                bottomCategoryBtn.addEventListener('click', function (e) {
12288                    e.preventDefault();
12289                    // Trigger desktop mega menu
12290                    const desktopTrigger = document.querySelector('.mm2-trigger:not(#bottomCategoryBtn)');
12291                    if (desktopTrigger) {
12292                        desktopTrigger.click();
12293                    }
12294                });
12295            }
12296
12297            // Bottom Login Button
12298            const bottomLoginBtn = document.getElementById('bottomLoginBtn');
12299            if (bottomLoginBtn) {
12300                bottomLoginBtn.addEventListener('click', function (e) {
12301                    e.preventDefault();
12302                    window.location.href = '/login';
12303                });
12304            }
12305
12306            // Bottom Chat Button
12307            const bottomChatBtn = document.getElementById('bottomChatBtn');
12308            if (bottomChatBtn) {
12309                bottomChatBtn.addEventListener('click', function (e) {
12310                    e.preventDefault();
12311
12312                    // Trigger chat widget (try multiple times if needed)
12313                    const triggerChat = () => {
12314                        const chatToggle = document.getElementById('chat-toggle-btn');
12315                        if (chatToggle) {
12316                            chatToggle.click();
12317                            return true;
12318                        }
12319                        return false;
12320                    };
12321
12322                    // Immediate attempt
12323                    if (!triggerChat()) {
12324                        // Retry after 100ms if not found
12325                        setTimeout(() => {
12326                            if (!triggerChat()) {
12327                                // Last resort: manually show popup
12328                                const popup = document.getElementById('chat-popup');
12329                                if (popup) {
12330                                    popup.style.display = 'block';
12331                                }
12332                            }
12333                        }, 100);
12334                    }
12335                });
12336            }
12337
12338            // Sync chat unread badge
12339            function syncBottomChatBadge() {
12340                const chatBadge = document.getElementById('chat-unread-badge');
12341                const bottomChatBadge = document.getElementById('bottomChatCount');
12342                if (chatBadge && bottomChatBadge) {
12343                    const count = chatBadge.textContent;
12344                    bottomChatBadge.textContent = count;
12345                    bottomChatBadge.style.display = chatBadge.style.display;
12346                }
12347            }
12348
12349            // Observe chat badge changes
12350            const chatBadge = document.getElementById('chat-unread-badge');
12351            if (chatBadge) {
12352                observer.observe(chatBadge, { attributes: true, childList: true, characterData: true, subtree: true });
12353                syncBottomChatBadge();
12354            }
12355
12356            // Active state management based on current page
12357            function updateActiveState() {
12358                const currentPath = window.location.pathname;
12359                const bottomNavItems = document.querySelectorAll('.bottom-nav-item');
12360
12361                bottomNavItems.forEach(item => {
12362                    item.classList.remove('active');
12363
12364                    const itemId = item.id;
12365                    const page = item.getAttribute('data-page');
12366                    const href = item.getAttribute('href');
12367
12368                    // Check by ID for specific pages
12369                    if (itemId === 'bottomHomeBtn' && currentPath === '/') {
12370                        item.classList.add('active');
12371                    } else if (itemId === 'bottomCartBtn' && (currentPath === '/keranjang' || currentPath === '/cart')) {
12372                        item.classList.add('active');
12373                    } else if (itemId === 'bottomProfileBtn' && currentPath.startsWith('/profile')) {
12374                        item.classList.add('active');
12375                    } else if (itemId === 'bottomCategoryBtn' && currentPath.startsWith('/kategori')) {
12376                        item.classList.add('active');
12377                    } else if (itemId === 'bottomCompareBtn' && currentPath === '/compare') {
12378                        item.classList.add('active');
12379                    } else if (itemId === 'bottomChatBtn' && currentPath === '/chat') {
12380                        item.classList.add('active');
12381                    }
12382                    // Fallback: check by data-page attribute
12383                    else if (page === 'home' && currentPath === '/') {
12384                        item.classList.add('active');
12385                    } else if (page === 'profile' && currentPath.startsWith('/profile')) {
12386                        item.classList.add('active');
12387                    }
12388                    // Fallback: check by href
12389                    else if (href && currentPath === href) {
12390                        item.classList.add('active');
12391                    }
12392                });
12393            }
12394
12395            // Update active state on load
12396            updateActiveState();
12397
12398            // Bottom nav always visible - auto-hide disabled for better UX
12399            // const bottomNav = document.querySelector('.bottom-nav');
12400            // if (bottomNav && window.innerWidth <= 640) {
12401            //   // Auto-hide feature disabled
12402            // }
12403        })();
12404        // Cart Login Modal Handler (Global scope)
12405        function showCartLoginModal() {
12406            const modal = document.getElementById('cartLoginModal');
12407            if (!modal) return;
12408
12409            modal.classList.add('show');
12410
12411            const confirmBtn = document.getElementById('cartLoginConfirm');
12412            const registerBtn = document.getElementById('cartRegisterBtn');
12413            const cancelBtn = document.getElementById('cartLoginCancel');
12414
12415            const handleLogin = () => {
12416                window.location.href = '/login?return=' + encodeURIComponent('/keranjang');
12417            };
12418
12419            const handleRegister = () => {
12420                window.location.href = '/register?return=' + encodeURIComponent('/keranjang');
12421            };
12422
12423            const handleCancel = () => {
12424                modal.classList.remove('show');
12425                confirmBtn.removeEventListener('click', handleLogin);
12426                registerBtn.removeEventListener('click', handleRegister);
12427                cancelBtn.removeEventListener('click', handleCancel);
12428            };
12429
12430            confirmBtn.removeEventListener('click', handleLogin);
12431            registerBtn.removeEventListener('click', handleRegister);
12432            cancelBtn.removeEventListener('click', handleCancel);
12433
12434            confirmBtn.addEventListener('click', handleLogin);
12435            registerBtn.addEventListener('click', handleRegister);
12436            cancelBtn.addEventListener('click', handleCancel);
12437
12438            modal.addEventListener('click', (e) => {
12439                if (e.target === modal) {
12440                    handleCancel();
12441                }
12442            });
12443        }
12444    </script>
12444
12445    
12445<script src="https://plazaitdotid.pages.dev/assets/js/cart-badge.js" defer
12446        nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
12446
12447
12448    <!-- Product Compare Sidebar -->
12449    <div class="compare-sidebar" id="compareSidebar">
12450        <div class="compare-header">
12451            <h4 class="compare-title">
12452                <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
12453                    <path
12454                        d="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z" />
12455                </svg>
12456                Bandingkan Produk
12457                <span class="compare-count" id="compareCountSidebar">(0)</span>
12458            </h4>
12459            <button class="compare-close" id="compareClose" aria-label="Tutup">
12460                <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor">
12461                    <path
12462                        d="M18.3 5.7a1 1 0 0 0-1.4 0L12 10.6 7.1 5.7a1 1 0 1 0-1.4 1.4L10.6 12l-4.9 4.9a1 1 0 0 0 1.4 1.4L12 13.4l4.9 4.9a1 1 0 0 0 1.4-1.4L13.4 12l4.9-4.9a1 1 0 0 0 0-1.4z" />
12463                </svg>
12464            </button>
12465        </div>
12466
12467        <div class="compare-content">
12468            <div class="compare-empty" id="compareEmpty">
12469                <div class="empty-icon">
12470                    <svg width="48" height="48" viewBox="0 0 24 24" fill="currentColor" opacity="0.3">
12471                        <path
12472                            d="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z" />
12473                    </svg>
12474                </div>
12475                <h5>Belum ada produk dipilih</h5>
12476                <p>Pilih produk yang ingin dibandingkan dengan klik tombol "Bandingkan Produk" di halaman produk.</p>
12477            </div>
12478
12479            <div class="compare-list" id="compareList">
12480                <!-- Products will be populated here -->
12481            </div>
12482        </div>
12483
12484        <div class="compare-actions" id="compareActions">
12485            <button class="btn btn-outline-danger btn-sm" id="compareClearAll">
12486                <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
12487                    <path
12488                        d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z" />
12489                </svg>
12490                Hapus Semua
12491            </button>
12492            <button class="btn btn-primary btn-sm" id="compareAnalyze" disabled>
12493                <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
12494                    <path
12495                        d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M11,16.5L18,9.5L16.59,8.09L11,13.67L7.91,10.59L6.5,12L11,16.5Z" />
12496                </svg>
12497                Analisis AI
12498            </button>
12499        </div>
12500
12501        <!-- AI Disclaimer in Sidebar -->
12502        <div class="compare-disclaimer">
12503            <div class="ai-disclaimer">
12504                <div class="disclaimer-text">
12505                    <strong>💡 Catatan:</strong> Analisis ini dihasilkan secara otomatis dan dapat memiliki
12506                    keterbatasan.
12507                    Gunakan sebagai referensi tambahan dengan tetap mempertimbangkan kebutuhan Anda.
12508                    Untuk informasi lebih lanjut, silakan hubungi tim SEMUAJP.
12509                </div>
12510            </div>
12511        </div>
12512    </div>
12513
12514    <style>
12515        .paylater-promo {
12516            display: inline-flex;
12517            align-items: center;
12518            gap: 8px;
12519            background: radial-gradient(circle, rgba(0, 150, 136, 1) 0%, rgba(0, 0, 0, 0.63) 100%);
12520            border: 1px solid #009688;
12521            border-radius: 8px;
12522            padding: 8px 12px;
12523            font-size: 13px;
12524            line-height: 1.4;
12525            margin: 8px 0
12526        }
12527
12528        .paylater-promo-sm {
12529            padding: 6px 10px;
12530            font-size: 11px;
12531            gap: 6px
12532        }
12533
12534        .paylater-promo-md {
12535            padding: 8px 12px;
12536            font-size: 13px;
12537            gap: 8px
12538        }
12539
12540        .paylater-promo-lg {
12541            padding: 10px 16px;
12542            font-size: 14px;
12543            gap: 10px
12544        }
12545
12546        .paylater-icon {
12547            font-size: 1.2em;
12548            flex-shrink: 0
12549        }
12550
12551        .paylater-text {
12552            display: flex;
12553            flex-direction: column;
12554            gap: 2px
12555        }
12556
12557        .paylater-text strong {
12558            color: #000000;
12559            font-weight: 600
12560        }
12561
12562        .paylater-text small {
12563            color: #000000;
12564            font-size: .85em;
12565            opacity: .9
12566        }
12567
12568        .paylater-desktop-only {
12569            display: none
12570        }
12571
12572        .paylater-mobile-only {
12573            display: flex
12574        }
12575
12576        @media (min-width:641px) {
12577            .paylater-desktop-only {
12578                display: flex
12579            }
12580
12581            .paylater-mobile-only {
12582                display: none
12583            }
12584        }
12585
12586        @media (max-width:640px) {
12587            .paylater-promo {
12588                font-size: 12px;
12589                padding: 7px 10px
12590            }
12591
12592            .paylater-promo-lg {
12593                font-size: 13px;
12594                padding: 8px 12px
12595            }
12596        }
12597
12598        @media print {
12599            .paylater-promo {
12600                display: none !important
12601            }
12602        }
12603
12604        .paylater-compact {
12605            display: inline-block;
12606            font-size: 11px;
12607            font-weight: 600;
12608            color: #059669;
12609            background: #d1fae5;
12610            padding: 3px 8px;
12611            border-radius: 4px;
12612            margin: 6px 0 4px;
12613            line-height: 1.3
12614        }
12615
12616        @media (max-width:640px) {
12617            .paylater-compact {
12618                font-size: 10px;
12619                padding: 2px 6px;
12620                margin: 5px 0 3px
12621            }
12622        }
12623
12624        @media print {
12625            .paylater-compact {
12626                display: none !important
12627            }
12628        }
12629    </style>
12630    <style nonce="se3iyzEHMc9FQEB4wSyd0w==">
12631        .pd-voucher-minimal {
12632            margin: 10px 0;
12633            display: flex;
12634            flex-direction: column;
12635            gap: 6px
12636        }
12637
12638        .pdv-min-item {
12639            display: flex;
12640            align-items: center;
12641            gap: 8px;
12642            padding: 0;
12643            height: 32px;
12644            transition: all .2s ease
12645        }
12646
12647        .pdv-min-hidden {
12648            display: none
12649        }
12650
12651        .pdv-min-disabled {
12652            opacity: .5
12653        }
12654
12655        .pdv-badge-btn {
12656            display: inline-flex;
12657            align-items: center;
12658            gap: 8px;
12659            background: linear-gradient(135deg, #667eea 0, #764ba2 100%);
12660            border: none;
12661            border-radius: 8px;
12662            padding: 3px;
12663            cursor: pointer;
12664            transition: all .2s ease;
12665            width: auto
12666        }
12667
12668        .pdv-badge-btn:hover:not(:disabled) {
12669            transform: translateY(-1px);
12670            box-shadow: 0 4px 12px rgba(102, 126, 234, .3)
12671        }
12672
12673        .pdv-badge-btn:disabled {
12674            opacity: .6;
12675            cursor: not-allowed
12676        }
12677
12678        .pdv-badge-icon {
12679            color: #fff;
12680            flex-shrink: 0
12681        }
12682
12683        .pdv-badge-text {
12684            font-size: 14px;
12685            font-weight: 700;
12686            color: #fff;
12687            white-space: nowrap
12688        }
12689
12690        .pdv-badge-code {
12691            font-family: 'Courier New', monospace;
12692            font-size: 13px;
12693            font-weight: 700;
12694            color: #fff;
12695            background: rgba(255, 255, 255, .2);
12696            padding: 4px 8px;
12697            border-radius: 4px;
12698            border: none;
12699            white-space: nowrap
12700        }
12701
12702        .pdv-min-copy,
12703        .pdv-min-more {
12704            padding: 4px 12px;
12705            font-size: 12px;
12706            font-weight: 600;
12707            border-radius: 5px;
12708            border: 1px solid #e2e8f0;
12709            background: #fff;
12710            color: #667eea;
12711            cursor: pointer;
12712            transition: all .2s ease;
12713            white-space: nowrap
12714        }
12715
12716        .pdv-min-copy:hover:not(:disabled),
12717        .pdv-min-more:hover {
12718            background: #667eea;
12719            color: #fff;
12720            border-color: #667eea
12721        }
12722
12723        .pdv-min-copy:disabled {
12724            opacity: .4;
12725            cursor: not-allowed
12726        }
12727
12728        .pdv-min-copy.copied {
12729            background: #22c55e;
12730            color: #fff;
12731            border-color: #22c55e
12732        }
12733
12734        .pdv-min-more {
12735            margin-left: auto
12736        }
12737
12738        .modal-close {
12739            position: absolute;
12740            top: 20px;
12741            right: 20px;
12742            background: none;
12743            border: none;
12744            cursor: pointer;
12745            color: #64748b;
12746            padding: 4px;
12747            transition: color .2s ease
12748        }
12749
12750        .modal-close:hover {
12751            color: #1e293b
12752        }
12753
12754        .modal-body {
12755            margin-bottom: 8px
12756        }
12757
12758        .voucher-modal-content {
12759            text-align: center
12760        }
12761
12762        .voucher-modal-badge {
12763            display: inline-flex;
12764            flex-direction: row;
12765            align-items: center;
12766            gap: 6px;
12767            background: linear-gradient(135deg, #667eea 0, #764ba2 100%);
12768            border-radius: 10px;
12769            padding: 8px 16px;
12770            margin-bottom: 12px
12771        }
12772
12773        .vmb-value {
12774            font-size: 18px;
12775            font-weight: 700;
12776            color: #fff;
12777            line-height: 1
12778        }
12779
12780        .vmb-label {
12781            font-size: 18px;
12782            font-weight: 700;
12783            color: #fff;
12784            text-transform: uppercase;
12785            letter-spacing: .5px
12786        }
12787
12788        .voucher-modal-code {
12789            font-family: 'Courier New', monospace;
12790            font-size: 14px;
12791            font-weight: 700;
12792            color: #667eea;
12793            background: rgba(102, 126, 234, .1);
12794            padding: 6px 12px;
12795            border-radius: 6px;
12796            border: 2px dashed rgba(102, 126, 234, .3);
12797            display: inline-block;
12798            margin-bottom: 10px
12799        }
12800
12801        .voucher-modal-name {
12802            font-size: 14px;
12803            font-weight: 600;
12804            color: #1e293b;
12805            margin-bottom: 16px
12806        }
12807
12808        .voucher-modal-details {
12809            text-align: left;
12810            background: #f8fafc;
12811            border-radius: 8px;
12812            padding: 12px;
12813            margin-bottom: 16px
12814        }
12815
12816        .vmd-item {
12817            display: flex;
12818            align-items: flex-start;
12819            gap: 8px;
12820            padding: 6px 0;
12821            font-size: 13px;
12822            color: #64748b;
12823            border-bottom: 1px solid #e2e8f0
12824        }
12825
12826        .vmd-item:last-child {
12827            border-bottom: none
12828        }
12829
12830        .vmd-item svg {
12831            color: #667eea;
12832            flex-shrink: 0;
12833            margin-top: 2px
12834        }
12835
12836        .vmd-item strong {
12837            color: #1e293b
12838        }
12839
12840        .modal-actions {
12841            padding: 20px
12842        }
12843
12844        .modal-btn-primary {
12845            background: linear-gradient(135deg, #667eea 0, #764ba2 100%);
12846            color: #fff
12847        }
12848
12849        .modal-btn-primary:hover {
12850            opacity: .9;
12851            transform: translateY(-1px)
12852        }
12853
12854        @media (max-width:640px) {
12855            .pdv-min-item {
12856                gap: 6px
12857            }
12858
12859            .pdv-badge-btn {
12860                padding: 3px;
12861                gap: 6px
12862            }
12863
12864            .pdv-badge-text {
12865                font-size: 13px
12866            }
12867
12868            .pdv-badge-code {
12869                font-size: 12px;
12870                padding: 3px 6px
12871            }
12872
12873            .pdv-min-copy,
12874            .pdv-min-more {
12875                padding: 3px 10px;
12876                font-size: 11px
12877            }
12878
12879            .modal-dialog {
12880                max-width: 95%;
12881                margin: 20px
12882            }
12883
12884            .vmb-value {
12885                font-size: 16px
12886            }
12887
12888            .vmb-label {
12889                font-size: 16px
12890            }
12891
12892            .voucher-modal-code {
12893                font-size: 13px;
12894                padding: 5px 10px
12895            }
12896        }
12897    </style>
12898    <style nonce="se3iyzEHMc9FQEB4wSyd0w==">
12899        .promo-endyear-mini-banner {
12900            display: flex;
12901            align-items: center;
12902            gap: 12px;
12903            padding: 12px 16px;
12904            background: rgba(255, 255, 255, .8);
12905            backdrop-filter: blur(10px);
12906            -webkit-backdrop-filter: blur(10px);
12907            border: 2px solid rgba(242, 140, 26, .2);
12908            border-radius: 12px;
12909            margin: 16px 0;
12910            box-shadow: 0 4px 16px rgba(0, 0, 0, .08);
12911            transition: all .3s ease
12912        }
12913
12914        .promo-endyear-mini-banner:hover {
12915            transform: translateY(-2px);
12916            box-shadow: 0 6px 20px rgba(0, 0, 0, .12);
12917            border-color: rgba(242, 140, 26, .4)
12918        }
12919
12920        .pey-icon {
12921            font-size: 32px;
12922            line-height: 1;
12923            flex-shrink: 0
12924        }
12925
12926        .pey-content {
12927            flex: 1;
12928            min-width: 0
12929        }
12930
12931        .pey-content strong {
12932            display: block;
12933            font-size: 14px;
12934            font-weight: 700;
12935            color: #F28C1A;
12936            margin-bottom: 2px
12937        }
12938
12939        .pey-content span {
12940            display: block;
12941            font-size: 13px;
12942            color: #64748b;
12943            line-height: 1.4
12944        }
12945
12946        .pey-link {
12947            flex-shrink: 0;
12948            padding: 8px 16px;
12949            background: linear-gradient(135deg, #F28C1A, #FFB84D);
12950            color: #fff;
12951            text-decoration: none;
12952            font-size: 13px;
12953            font-weight: 700;
12954            border-radius: 8px;
12955            white-space: nowrap;
12956            transition: all .2s ease;
12957            box-shadow: 0 2px 8px rgba(242, 140, 26, .25)
12958        }
12959
12960        .pey-link:hover {
12961            transform: translateX(2px);
12962            box-shadow: 0 4px 12px rgba(242, 140, 26, .35)
12963        }
12964
12965        @media(max-width:640px) {
12966            .promo-endyear-mini-banner {
12967                flex-wrap: wrap;
12968                gap: 8px;
12969                padding: 10px 12px
12970            }
12971
12972            .pey-icon {
12973                font-size: 28px;
12974                align-self: flex-start
12975            }
12976
12977            .pey-content {
12978                flex: 1;
12979                min-width: 0
12980            }
12981
12982            .pey-content strong {
12983                font-size: 12px
12984            }
12985
12986            .pey-content span {
12987                font-size: 11px;
12988                line-height: 1.3
12989            }
12990
12991            .pey-link {
12992                width: 100%;
12993                flex-basis: 100%;
12994                font-size: 11px;
12995                padding: 6px 12px;
12996                text-align: center
12997            }
12998        }
12999
13000        @media print {
13001            .promo-endyear-mini-banner {
13002                display: none !important
13003            }
13004        }
13005    </style>
13006    <style nonce="se3iyzEHMc9FQEB4wSyd0w==">
13007        .pd-title-row {
13008            position: relative;
13009            margin-bottom: 12px;
13010            padding-right: 52px
13011        }
13012
13013        .pd-title {
13014            margin: 0 !important
13015        }
13016
13017        .pd-share-btn {
13018            position: absolute;
13019            top: 0;
13020            right: 0;
13021            width: 40px;
13022            height: 40px;
13023            display: inline-flex;
13024            align-items: center;
13025            justify-content: center;
13026            border-radius: 10px;
13027            border: 1px solid #e2e8f0;
13028            background: #fff;
13029            color: #64748b;
13030            cursor: pointer;
13031            transition: all .2s ease;
13032            -webkit-tap-highlight-color: transparent
13033        }
13034
13035        .pd-share-btn:hover {
13036            background: #f8fafc;
13037            border-color: #cbd5e1;
13038            color: #0f172a;
13039            transform: translateY(-1px)
13040        }
13041
13042        .pd-share-btn:active {
13043            transform: translateY(0)
13044        }
13045
13046        .pd-share-btn svg {
13047            display: block
13048        }
13049
13050        .pd-share-modal-overlay {
13051            position: fixed;
13052            inset: 0;
13053            background: rgba(15, 23, 42, .75);
13054            backdrop-filter: blur(4px);
13055            z-index: 99999;
13056            display: none;
13057            align-items: center;
13058            justify-content: center;
13059            padding: 0;
13060            animation: fadeIn .2s ease
13061        }
13062
13063        .pd-share-modal-overlay.show {
13064            display: flex
13065        }
13066
13067        .pd-share-modal {
13068            background: #fff;
13069            border-radius: 20px;
13070            box-shadow: 0 25px 50px -12px rgba(0, 0, 0, .25);
13071            max-width: 480px;
13072            width: 100%;
13073            max-height: 90vh;
13074            overflow: hidden;
13075            display: flex;
13076            flex-direction: column;
13077            animation: slideUp .3s cubic-bezier(.16, 1, .3, 1)
13078        }
13079
13080        @keyframes fadeIn {
13081            from {
13082                opacity: 0
13083            }
13084
13085            to {
13086                opacity: 1
13087            }
13088        }
13089
13090        @keyframes slideUp {
13091            from {
13092                opacity: 0;
13093                transform: translateY(20px) scale(.95)
13094            }
13095
13096            to {
13097                opacity: 1;
13098                transform: translateY(0) scale(1)
13099            }
13100        }
13101
13102        .pd-share-header {
13103            display: flex;
13104            align-items: center;
13105            justify-content: space-between;
13106            padding: 20px 24px;
13107            border-bottom: 1px solid #f1f5f9
13108        }
13109
13110        .pd-share-title {
13111            font-size: 18px;
13112            font-weight: 700;
13113            color: #0f172a;
13114            margin: 0
13115        }
13116
13117        .pd-share-close {
13118            width: 32px;
13119            height: 32px;
13120            border-radius: 8px;
13121            border: 0;
13122            background: transparent;
13123            color: #64748b;
13124            display: inline-flex;
13125            align-items: center;
13126            justify-content: center;
13127            cursor: pointer;
13128            transition: all .15s ease
13129        }
13130
13131        .pd-share-close:hover {
13132            background: #f1f5f9;
13133            color: #0f172a
13134        }
13135
13136        .pd-share-body {
13137            padding: 24px;
13138            overflow-y: auto
13139        }
13140
13141        .pd-share-preview {
13142            display: flex;
13143            gap: 12px;
13144            padding: 16px;
13145            background: #f8fafc;
13146            border-radius: 12px;
13147            margin-bottom: 24px
13148        }
13149
13150        .pd-share-preview-img {
13151            width: 64px;
13152            height: 64px;
13153            border-radius: 8px;
13154            object-fit: cover;
13155            flex-shrink: 0;
13156            border: 1px solid #e2e8f0
13157        }
13158
13159        .pd-share-preview-info {
13160            flex: 1;
13161            min-width: 0
13162        }
13163
13164        .pd-share-preview-name {
13165            font-size: 14px;
13166            font-weight: 600;
13167            color: #0f172a;
13168            margin: 0 0 4px 0;
13169            display: -webkit-box;
13170            -webkit-line-clamp: 2;
13171            -webkit-box-orient: vertical;
13172            overflow: hidden
13173        }
13174
13175        .pd-share-preview-price {
13176            font-size: 16px;
13177            font-weight: 700;
13178            color: #0ea5e9;
13179            margin: 0
13180        }
13181
13182        .pd-share-label {
13183            font-size: 13px;
13184            font-weight: 600;
13185            color: #475569;
13186            margin: 0 0 12px 0;
13187            text-transform: uppercase;
13188            letter-spacing: .5px
13189        }
13190
13191        .pd-share-grid {
13192            display: grid;
13193            grid-template-columns: repeat(4, 1fr);
13194            gap: 12px;
13195            margin-bottom: 24px
13196        }
13197
13198        .pd-share-option {
13199            display: flex;
13200            flex-direction: column;
13201            align-items: center;
13202            gap: 8px;
13203            padding: 16px 8px;
13204            border: 1.5px solid #e2e8f0;
13205            border-radius: 12px;
13206            background: #fff;
13207            cursor: pointer;
13208            transition: all .2s ease;
13209            text-decoration: none;
13210            color: inherit
13211        }
13212
13213        .pd-share-option:hover {
13214            border-color: #94a3b8;
13215            background: #f8fafc;
13216            transform: translateY(-2px)
13217        }
13218
13219        .pd-share-option:active {
13220            transform: translateY(0)
13221        }
13222
13223        .pd-share-icon {
13224            width: 40px;
13225            height: 40px;
13226            border-radius: 10px;
13227            display: inline-flex;
13228            align-items: center;
13229            justify-content: center;
13230            position: relative
13231        }
13232
13233        .pd-share-icon svg {
13234            width: 24px;
13235            height: 24px;
13236            display: block
13237        }
13238
13239        .pd-share-icon-whatsapp {
13240            background: linear-gradient(135deg, #25D366 0%, #128C7E 100%);
13241            color: #fff
13242        }
13243
13244        .pd-share-icon-facebook {
13245            background: linear-gradient(135deg, #1877F2 0%, #0c63d4 100%);
13246            color: #fff
13247        }
13248
13249        .pd-share-icon-twitter {
13250            background: linear-gradient(135deg, #1DA1F2 0%, #0d8bd9 100%);
13251            color: #fff
13252        }
13253
13254        .pd-share-icon-telegram {
13255            background: linear-gradient(135deg, #0088cc 0%, #0077b3 100%);
13256            color: #fff
13257        }
13258
13259        .pd-share-icon-email {
13260            background: linear-gradient(135deg, #EA4335 0%, #c5331f 100%);
13261            color: #fff
13262        }
13263
13264        .pd-share-icon-copy {
13265            background: linear-gradient(135deg, #f1db63 0%, #e5d146 100%);
13266            color: #fff
13267        }
13268
13269        .pd-share-icon-pdf {
13270            background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
13271            color: #fff
13272        }
13273
13274        .pd-share-name {
13275            font-size: 12px;
13276            font-weight: 600;
13277            color: #475569;
13278            text-align: center
13279        }
13280
13281        .pd-share-copy-section {
13282            background: #f8fafc;
13283            padding: 16px;
13284            border-radius: 12px
13285        }
13286
13287        .pd-share-copy-input-wrap {
13288            display: flex;
13289            gap: 8px
13290        }
13291
13292        .pd-share-copy-input {
13293            flex: 1;
13294            padding: 12px 14px;
13295            border: 1px solid #e2e8f0;
13296            border-radius: 10px;
13297            font-size: 14px;
13298            color: #0f172a;
13299            background: #fff;
13300            font-family: 'Segoe UI', system-ui, sans-serif
13301        }
13302
13303        .pd-share-copy-input:focus {
13304            outline: 0;
13305            border-color: #0ea5e9;
13306            box-shadow: 0 0 0 3px rgba(14, 165, 233, .1)
13307        }
13308
13309        .pd-share-copy-btn {
13310            padding: 12px 20px;
13311            border: 0;
13312            border-radius: 10px;
13313            background: linear-gradient(135deg, #0ea5e9 0%, #0284c7 100%);
13314            color: #fff;
13315            font-size: 14px;
13316            font-weight: 600;
13317            cursor: pointer;
13318            transition: all .2s ease;
13319            white-space: nowrap;
13320            display: inline-flex;
13321            align-items: center;
13322            gap: 6px
13323        }
13324
13325        .pd-share-copy-btn:hover {
13326            background: linear-gradient(135deg, #0284c7 0%, #0369a1 100%);
13327            transform: translateY(-1px);
13328            box-shadow: 0 4px 12px rgba(14, 165, 233, .3)
13329        }
13330
13331        .pd-share-copy-btn:active {
13332            transform: translateY(0)
13333        }
13334
13335        .pd-share-copy-btn svg {
13336            width: 16px;
13337            height: 16px
13338        }
13339
13340        .pd-share-copy-btn.copied {
13341            background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%);
13342            pointer-events: none
13343        }
13344
13345        @media(max-width:640px) {
13346            .pd-share-modal {
13347                border-radius: 20px 20px 0 0;
13348                margin-top: auto;
13349                max-height: 85vh
13350            }
13351
13352            .pd-share-grid {
13353                grid-template-columns: repeat(3, 1fr)
13354            }
13355
13356            .pd-share-header {
13357                padding: 16px 20px
13358            }
13359
13360            .pd-share-body {
13361                padding: 20px
13362            }
13363
13364            .pd-share-btn {
13365                width: 36px;
13366                height: 36px
13367            }
13368
13369            .pd-share-btn svg {
13370                width: 18px;
13371                height: 18px
13372            }
13373        }
13374
13375        @media(max-width:480px) {
13376            .pd-share-grid {
13377                grid-template-columns: repeat(3, 1fr);
13378                gap: 10px
13379            }
13380
13381            .pd-share-option {
13382                padding: 12px 6px
13383            }
13384
13385            .pd-share-icon {
13386                width: 36px;
13387                height: 36px
13388            }
13389
13390            .pd-share-icon svg {
13391                width: 20px;
13392                height: 20px
13393            }
13394
13395            .pd-share-name {
13396                font-size: 11px
13397            }
13398        }
13399
13400        .mf-share {
13401            background: #fff;
13402            color: #fb923c;
13403            border: 2px solid #fb923c;
13404            display: inline-flex;
13405            align-items: center;
13406            justify-content: center
13407        }
13408
13409        .mf-share:active {
13410            transform: scale(.95)
13411        }
13412
13413        .mf-share svg {
13414            display: block
13415        }
13416
13417        @media(max-width:640px) {
13418            .pd-share-btn {
13419                display: none !important
13420            }
13421        }
13422
13423        .stock-badge.in {
13424            background: #e6f9ec;
13425            color: #15803d;
13426            border-radius: 999px;
13427            padding: 4px 10px;
13428            font-weight: 700
13429        }
13430
13431        .stock-badge.out {
13432            background: #fee2e2;
13433            color: #b91c1c;
13434            border-radius: 999px;
13435            padding: 4px 10px;
13436            font-weight: 700
13437        }
13438
13439        .stock-info-btn {
13440            --c: #0ea5e9;
13441            --b: #bae6fd;
13442            --bg: #f0f9ff;
13443            --bg-h: #e0f2fe;
13444            --b-h: #0ea5e9;
13445            margin-left: 0;
13446            display: inline-flex;
13447            align-items: center;
13448            justify-content: center;
13449            gap: 0.5rem;
13450            padding: 4px 10px;
13451            border-radius: 999px;
13452            border: 1.5px solid var(--b);
13453            background: var(--bg);
13454            color: var(--c);
13455            cursor: pointer;
13456            font-size: 12px;
13457            font-weight: 600;
13458            transition: all .2s ease;
13459            -webkit-tap-highlight-color: transparent
13460        }
13461
13462        .stock-info-btn:hover {
13463            background: var(--bg-h);
13464            border-color: var(--b-h);
13465            color: #0284c7;
13466            transform: translateY(-1px);
13467            box-shadow: 0 2px 8px rgba(14, 165, 233, .15)
13468        }
13469
13470        .stock-info-btn:active {
13471            transform: translateY(0)
13472        }
13473
13474        .stock-info-btn:focus-visible {
13475            outline: 0;
13476            box-shadow: 0 0 0 3px rgba(14, 165, 233, .2)
13477        }
13478
13479        .stock-info-btn svg {
13480            width: 14px;
13481            height: 14px;
13482            flex-shrink: 0
13483        }
13484
13485        .stock-info-btn .btn-text {
13486            white-space: nowrap
13487        }
13488
13489        .stock-popover {
13490            position: absolute;
13491            z-index: 9999;
13492            min-width: 280px;
13493            max-width: 92vw;
13494            background: #0b1220;
13495            color: #eef3ff;
13496            border: 1px solid rgba(255, 255, 255, .08);
13497            border-radius: 14px;
13498            box-shadow: 0 20px 40px rgba(12, 12, 20, .45);
13499            padding: 12px 12px 8px;
13500            display: none
13501        }
13502
13503        .stock-popover.show {
13504            display: block
13505        }
13506
13507        .stock-popover::before {
13508            content: "";
13509            position: absolute;
13510            top: -8px;
13511            left: 24px;
13512            width: 14px;
13513            height: 14px;
13514            background: #0b1220;
13515            border-left: 1px solid rgba(255, 255, 255, .08);
13516            border-top: 1px solid rgba(255, 255, 255, .08);
13517            transform: rotate(45deg)
13518        }
13519
13520        .sp-head {
13521            display: flex;
13522            align-items: center;
13523            justify-content: space-between;
13524            margin-bottom: 8px
13525        }
13526
13527        .sp-title {
13528            font-weight: 800;
13529            font-size: 14px
13530        }
13531
13532        .sp-close {
13533            background: transparent;
13534            border: 0;
13535            color: #98a2b3;
13536            cursor: pointer
13537        }
13538
13539        .sp-list {
13540            list-style: none;
13541            margin: 0;
13542            padding: 0;
13543            display: flex;
13544            flex-direction: column;
13545            gap: 8px
13546        }
13547
13548        .sp-item {
13549            display: grid;
13550            grid-template-columns: 1fr auto 32px;
13551            column-gap: 12px;
13552            align-items: center;
13553            padding: 10px 10px;
13554            min-height: 44px;
13555            border-radius: 10px;
13556            background: rgba(255, 255, 255, .03)
13557        }
13558
13559        .sp-left {
13560            display: flex;
13561            align-items: center;
13562            gap: 10px
13563        }
13564
13565        .sp-dot {
13566            width: 10px;
13567            height: 10px;
13568            border-radius: 999px;
13569            background: var(--dot, #60a5fa);
13570            display: inline-block
13571        }
13572
13573        .sp-label {
13574            font-weight: 600;
13575            font-size: 13px
13576        }
13577
13578
13579        .sp-qty {
13580            grid-column: 2;
13581            justify-self: end;
13582            min-width: 40px;
13583            text-align: right;
13584            font-weight: 800;
13585            font-size: 13px;
13586            color: #cfe4ff;
13587            font-variant-numeric: tabular-nums
13588        }
13589
13590        .sp-wa {
13591            grid-column: 3;
13592            justify-self: end;
13593            width: 32px;
13594            height: 32px;
13595            min-width: 32px;
13596            min-height: 32px;
13597            box-sizing: border-box;
13598            padding: 0;
13599            line-height: 0;
13600            text-decoration: none;
13601            outline: 0;
13602            display: inline-flex;
13603            align-items: center;
13604            justify-content: center;
13605            border-radius: 999px;
13606            border: 1px solid rgba(37, 211, 102, .60);
13607            /* 1px untuk hasil “crisp” */
13608            background: rgba(37, 211, 102, .08);
13609            color: #25D366;
13610            transition: background-color .15s ease, border-color .15s ease, transform .05s ease;
13611            -webkit-tap-highlight-color: transparent;
13612        }
13613
13614        .sp-wa:hover {
13615            background: rgba(37, 211, 102, .16);
13616            border-color: rgba(37, 211, 102, .75)
13617        }
13618
13619        .sp-wa:active {
13620            transform: translateY(.5px) scale(.98)
13621        }
13622
13623        .sp-wa svg {
13624            width: 18px;
13625            height: 18px;
13626            display: block;
13627            vertical-align: middle
13628        }
13629
13630        .stock-popover a {
13631            text-decoration: none
13632        }
13633
13634        #deskripsi img {
13635            max-width: 450px !important;
13636            height: unset !important
13637        }
13638
13639        @media(max-width:640px) {
13640            .stock-popover {
13641                position: fixed;
13642                left: 0;
13643                right: 0;
13644                bottom: max(12px, env(safe-area-inset-bottom, 12px));
13645                margin: 0 10px;
13646                padding: 14px 12px 10px;
13647                border-radius: 16px
13648            }
13649
13650            .stock-popover::before {
13651                display: none
13652            }
13653
13654            .stock-info-btn {
13655                padding: 4px 8px;
13656                gap: 4px;
13657                border: 0;
13658                background: transparent
13659            }
13660
13661            .stock-info-btn:hover {
13662                background: transparent;
13663                box-shadow: none;
13664                transform: none
13665            }
13666
13667            .stock-info-btn .btn-text {
13668                display: none
13669            }
13670
13671            .stock-info-btn svg {
13672                width: 16px;
13673                height: 16px
13674            }
13675
13676            .sp-item {
13677                grid-template-columns: 1fr auto 36px
13678            }
13679
13680            .sp-wa {
13681                width: 36px;
13682                height: 36px;
13683                min-width: 36px;
13684                min-height: 36px
13685            }
13686
13687            .sp-wa svg {
13688                width: 19px;
13689                height: 19px
13690            }
13691        }
13692
13693        .stock-dot {
13694            position: absolute;
13695            bottom: 8px;
13696            right: 8px;
13697            width: 8px;
13698            height: 8px;
13699            border-radius: 50%;
13700            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
13701            z-index: 2;
13702            cursor: help
13703        }
13704
13705        .stock-dot.ready {
13706            background: #10b981
13707        }
13708
13709        .stock-dot.low {
13710            background: #f59e0b
13711        }
13712
13713        .stock-dot.out {
13714            background: #ef4444
13715        }
13716
13717        .stock-dot:hover {
13718            transform: scale(1.2);
13719            transition: transform 0.2s ease
13720        }
13721
13722        @media(max-width:640px) {
13723            .stock-dot {
13724                width: 7px;
13725                height: 7px;
13726                bottom: 6px;
13727                right: 6px
13728            }
13729        }
13730
13731        .pd-related-card .spec-chips {
13732            font-size: 11px;
13733            color: #64748b;
13734            margin: 4px 0 6px 0;
13735            line-height: 1.3;
13736            font-weight: 500
13737        }
13738
13739        .pd-related-card .spec-chips .spec-divider {
13740            margin: 0 4px;
13741            opacity: 0.6
13742        }
13743
13744        @media(max-width:640px) {
13745            .pd-related-card .spec-chips {
13746                font-size: 10px;
13747                margin: 3px 0 5px 0
13748            }
13749
13750            #deskripsi img {
13751                max-width: 300px !important;
13752                height: unset !important;
13753                justify-self: center !important
13754            }
13755        }
13756
13757        .pwp-trigger-badge {
13758            display: inline-flex;
13759            align-items: center;
13760            gap: 4px;
13761            padding: 3px 8px 4px;
13762            background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%);
13763            color: #78350f;
13764            border-radius: 6px;
13765            font-size: .65rem;
13766            font-weight: 600;
13767            border: 0
13768        }
13769
13770        .pwp-trigger-badge svg {
13771            flex-shrink: 0;
13772            width: 12px;
13773            height: 12px
13774        }
13775
13776        .pwp-deals-section {
13777            margin: 0;
13778            padding: 12px;
13779            background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);
13780            border-radius: 12px;
13781            border: 2px solid #fbbf24
13782        }
13783
13784        .pwp-deals-header {
13785            display: flex;
13786            gap: 10px;
13787            margin-bottom: 10px
13788        }
13789
13790        .pwp-icon {
13791            flex-shrink: 0;
13792            color: #f59e0b;
13793            width: 18px;
13794            height: 18px
13795        }
13796
13797        .pwp-text .pwp-title {
13798            margin: 0 0 2px 0;
13799            font-size: 14px;
13800            font-weight: 700;
13801            color: #78350f
13802        }
13803
13804        .pwp-text .pwp-subtitle {
13805            margin: 0;
13806            font-size: 11px;
13807            color: #92400e;
13808            opacity: 0.9
13809        }
13810
13811        .pwp-deals-loading {
13812            text-align: center;
13813            padding: 40px 0;
13814            color: #92400e
13815        }
13816
13817        .pwp-spinner {
13818            width: 40px;
13819            height: 40px;
13820            border: 3px solid #fbbf24;
13821            border-top-color: #f59e0b;
13822            border-radius: 50%;
13823            animation: spin 0.8s linear infinite;
13824            margin: 0 auto 12px
13825        }
13826
13827        @keyframes spin {
13828            to {
13829                transform: rotate(360deg)
13830            }
13831        }
13832
13833        .pwp-deals-grid {
13834            display: flex;
13835            flex-direction: column;
13836            gap: 6px
13837        }
13838
13839        .pwp-deal-card {
13840            background: #fff;
13841            border-radius: 6px;
13842            overflow: hidden;
13843            border: 1px solid #fbbf24;
13844            display: flex;
13845            align-items: center;
13846            padding: 8px;
13847            gap: 10px
13848        }
13849
13850        .pwp-deal-card:hover {
13851            background: #fef3c7
13852        }
13853
13854        .pwp-deal-thumb {
13855            flex-shrink: 0;
13856            width: 50px;
13857            height: 50px;
13858            background: #f8fafc;
13859            overflow: hidden;
13860            border-radius: 4px
13861        }
13862
13863        .pwp-deal-thumb img {
13864            width: 100%;
13865            height: 100%;
13866            object-fit: cover
13867        }
13868
13869        .pwp-deal-badge {
13870            background: #dc2626;
13871            color: #fff;
13872            padding: 2px 5px;
13873            border-radius: 3px;
13874            font-size: 9px;
13875            font-weight: 700;
13876            margin-left: auto
13877        }
13878
13879        .pwp-deal-info {
13880            flex: 1;
13881            display: flex;
13882            flex-direction: column;
13883            gap: 4px
13884        }
13885
13886        .pwp-deal-name {
13887            font-size: 12px;
13888            font-weight: 600;
13889            color: #0f172a;
13890            margin: 0;
13891            line-height: 1.2
13892        }
13893
13894        .pwp-deal-prices {
13895            display: flex;
13896            align-items: center;
13897            gap: 6px;
13898            flex-wrap: wrap
13899        }
13900
13901        .pwp-deal-price {
13902            font-size: 14px;
13903            font-weight: 800;
13904            color: #dc2626;
13905            white-space: nowrap
13906        }
13907
13908        .pwp-deal-original {
13909            font-size: 11px;
13910            color: #64748b;
13911            text-decoration: line-through;
13912            white-space: nowrap
13913        }
13914
13915        .pwp-cart-note {
13916            margin-top: 8px;
13917            padding: 6px 10px;
13918            background: #e0f2fe;
13919            border-left: 2px solid#0ea5e9;
13920            font-size: 11px;
13921            color: #0c4a6e;
13922            border-radius: 4px
13923        }
13924
13925        @media(max-width:640px) {
13926            .pwp-deals-section {
13927                margin: 12px 0;
13928                padding: 10px;
13929                border-radius: 10px
13930            }
13931
13932            .pwp-deals-header {
13933                gap: 8px
13934            }
13935
13936            .pwp-text .pwp-title {
13937                font-size: 13px
13938            }
13939
13940            .pwp-text .pwp-subtitle {
13941                font-size: 10px
13942            }
13943
13944            .pwp-deal-card {
13945                padding: 6px;
13946                gap: 8px
13947            }
13948
13949            .pwp-deal-thumb {
13950                width: 45px;
13951                height: 45px
13952            }
13953
13954            .pwp-deal-name {
13955                font-size: 11px
13956            }
13957
13958            .pwp-deal-price {
13959                font-size: 13px
13960            }
13961
13962            .pwp-deal-original {
13963                font-size: 10px
13964            }
13965        }
13966
13967        .preorder-badge {
13968            display: inline-flex;
13969            align-items: center;
13970            gap: 5px;
13971            padding: 6px 12px;
13972            background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%);
13973            color: #fff;
13974            border-radius: 8px;
13975            font-size: 13px;
13976            font-weight: 700;
13977            border: 0;
13978            box-shadow: 0 2px 8px rgba(139, 92, 246, .25)
13979        }
13980
13981        .preorder-badge svg {
13982            width: 16px;
13983            height: 16px;
13984            flex-shrink: 0
13985        }
13986
13987        .preorder-info {
13988            margin: 12px 0;
13989            padding: 14px;
13990            background: linear-gradient(135deg, #f5f3ff 0%, #ede9fe 100%);
13991            border: 1.5px solid #c4b5fd;
13992            border-radius: 12px
13993        }
13994
13995        .preorder-info-header {
13996            display: flex;
13997            align-items: center;
13998            gap: 8px;
13999            margin-bottom: 10px
14000        }
14001
14002        .preorder-info-icon {
14003            width: 20px;
14004            height: 20px;
14005            color: #7c3aed;
14006            flex-shrink: 0
14007        }
14008
14009        .preorder-info-title {
14010            font-size: 14px;
14011            font-weight: 700;
14012            color: #5b21b6;
14013            margin: 0
14014        }
14015
14016        .preorder-info-items {
14017            display: flex;
14018            flex-direction: column;
14019            gap: 8px
14020        }
14021
14022        .preorder-info-row {
14023            display: flex;
14024            align-items: center;
14025            justify-content: space-between;
14026            font-size: 13px
14027        }
14028
14029        .preorder-info-label {
14030            color: #6b21a8;
14031            font-weight: 600
14032        }
14033
14034        .preorder-info-value {
14035            color: #5b21b6;
14036            font-weight: 700
14037        }
14038
14039        .preorder-info-value.highlight {
14040            color: #dc2626;
14041            font-size: 14px
14042        }
14043
14044        .preorder-info-note {
14045            margin-top: 10px;
14046            padding: 8px 10px;
14047            background: #fef3c7;
14048            border-left: 2px solid #f59e0b;
14049            font-size: 12px;
14050            color: #78350f;
14051            border-radius: 6px;
14052            line-height: 1.4
14053        }
14054
14055        @media(max-width:640px) {
14056            .preorder-badge {
14057                font-size: 12px;
14058                padding: 5px 10px
14059            }
14060
14061            .preorder-info {
14062                margin: 10px 0;
14063                padding: 12px
14064            }
14065
14066            .preorder-info-title {
14067                font-size: 13px
14068            }
14069
14070            .preorder-info-row {
14071                font-size: 12px
14072            }
14073
14074            .preorder-info-note {
14075                font-size: 11px;
14076                padding: 6px 8px
14077            }
14078        }
14079    </style>
14080
14081    <div class="pd-sticky-header" id="pd-sticky-header">
14082        <div class="pd-sticky-header-container">
14083            <div class="pd-sticky-thumb"><img src="https://finance.murdochfinance.com/brand.webp"
14084                    alt="SEMUAJP" id="pd-sticky-thumb-img"></div>
14085            <div class="pd-sticky-info">
14086                <h2 class="pd-sticky-title" id="pd-sticky-title">SEMUAJP: Kita Kasih Link Daftar Terbaik Situs Online Slot Gacor Gampang jackpot </h2>
14087                <div class="pd-sticky-price-row"><span class="pd-sticky-price" id="pd-sticky-price">Rp
14088                        5.000,-</span><span class="pd-sticky-price-original" id="pd-sticky-price-original">Rp
14089                        1.000.000</span><span class="pd-sticky-discount" id="pd-sticky-discount">-99.5%</span></div>
14090            </div>
14091            <div class="pd-sticky-actions"><button type="button" class="pd-sticky-share-btn" id="pd-sticky-share-btn"
14092                    aria-label="Bagikan produk" title="Bagikan"><svg viewBox="0 0 24 24" width="16" height="16"
14093                        aria-hidden="true">
14094                        <path fill="currentColor"
14095                            d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92-1.31-2.92-2.92-2.92z" />
14096                    </svg></button><button type="button" class="pd-sticky-btn pd-sticky-btn-chat"
14097                    id="pd-sticky-chat"><svg viewBox="0 0 640 640" fill="currentColor" aria-hidden="true">
14098                        <path
14099                            d="M320 128C241 128 175.3 185.3 162.3 260.7C171.6 257.7 181.6 256 192 256L208 256C234.5 256 256 277.5 256 304L256 400C256 426.5 234.5 448 208 448L192 448C139 448 96 405 96 352L96 288C96 164.3 196.3 64 320 64C443.7 64 544 164.3 544 288L544 456.1C544 522.4 490.2 576.1 423.9 576.1L336 576L304 576C277.5 576 256 554.5 256 528C256 501.5 277.5 480 304 480L336 480C362.5 480 384 501.5 384 528L384 528L424 528C463.8 528 496 495.8 496 456L496 435.1C481.9 443.3 465.5 447.9 448 447.9L432 447.9C405.5 447.9 384 426.4 384 399.9L384 303.9C384 277.4 405.5 255.9 432 255.9L448 255.9C458.4 255.9 468.3 257.5 477.7 260.6C464.7 185.3 399.1 127.9 320 127.9z" />
14100                    </svg>Tanya</button><button type="button" class="pd-sticky-btn pd-sticky-btn-cart"
14101                    id="pd-sticky-add-cart" disabled>+ Keranjang</button><button type="button"
14102                    class="pd-sticky-btn pd-sticky-btn-buy" id="pd-sticky-buy" disabled>Beli Sekarang</button></div>
14103        </div>
14104    </div>
14105
14106    <main class="product-single product-single--v3">
14107        <nav class="pd-breadcrumb" aria-label="breadcrumb"><a
14108                href="https://murdochfinance.com/">Semuajp</a><span>/</span><a
14109                href="https://murdochfinance.com/">Slot Online</a><span>/</span><a
14110                href="https://murdochfinance.com/">Slot Gacor</a><span>/</span><a
14111                href="https://murdochfinance.com/">Slot Jackpot</a><span>/</span><a
14112                href="https://murdochfinance.com/">Slot Hari Ini</a><span>/</span><span class="current">
14113                SEMUAJP Login
14114
14115            </span></nav>
14116
14117        <div class="pd-top-layout">
14118            <section class="pd-media-card">
14119                <figure class="pd-main-image" id="pd-main-figure"><img id="pd-main-img"
14120                        src="https://finance.murdochfinance.com/brand.webp" alt="SEMUAJP" data-slug=""
14121                        loading="eager">
14122                </figure>
14123
14124                <div class="pd-mobile-slider-wrapper">
14125                    <div class="pd-mobile-slider" id="pd-mobile-slider" aria-label="Galeri gambar (geser)">
14126                        <div class="pd-mslide"><img src="https://finance.murdochfinance.com/brand.webp"
14127                                alt="SEMUAJP" loading="eager"></div>
14128                        <div class="pd-mslide"><img src="https://finance.murdochfinance.com/brand.webp"
14129                                alt="SEMUAJP" loading="lazy"></div>
14130                        <div class="pd-mslide"><img src="https://finance.murdochfinance.com/brand.webp"
14131                                alt="SEMUAJP" loading="lazy"></div>
14132                        <div class="pd-mslide"><img src="https://finance.murdochfinance.com/brand.webp"
14133                                alt="SEMUAJP" loading="lazy"></div>
14134                        <div class="pd-mslide"><img src="https://finance.murdochfinance.com/brand.webp"
14135                                alt="SEMUAJP" loading="lazy"></div>
14136                        <div class="pd-mslide"><img src="https://finance.murdochfinance.com/brand.webp"
14137                                alt="SEMUAJP" loading="lazy"></div>
14138                    </div>
14139                    <div class="pd-gallery-counter" id="pd-gallery-counter">1/6</div>
14140                </div>
14141                <div class="pd-thumb-gallery" id="pd-thumb-gallery" aria-label="Galeri gambar produk"><button
14142                        type="button" class="pd-thumb-btn active"
14143                        data-full="https://finance.murdochfinance.com/brand.webp" data-alt
14143="SEMUAJP"
14144                        data-slug="" aria-label="Gambar 1"><img
14145                            src="https://finance.murdochfinance.com/brand.webp" alt="SEMUAJP"
14146                            loading="lazy"></button><button type="button" class="pd-thumb-btn "
14147                        data-full="https://finance.murdochfinance.com/brand.webp" data-alt="SEMUAJP"
14148                        data-slug="https://finance.murdochfinance.com/brand.webp" aria-label="Gambar 2"><img
14149                            src="https://finance.murdochfinance.com/brand.webp" alt="SEMUAJP"
14150                            loading="lazy"></button><button type="button" class="pd-thumb-btn "
14151                        data-full="https://finance.murdochfinance.com/brand.webp" data-alt="SEMUAJP"
14152                        data-slug="lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-223.webp"
14153                        aria-label="Gambar 3"><img src="https://finance.murdochfinance.com/brand.webp"
14154                            alt="SEMUAJP" loading="lazy"></button><button type="button" class="pd-thumb-btn "
14155                        data-full="https://finance.murdochfinance.com/brand.webp" data-alt="SEMUAJP"
14156                        data-slug="lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-776.webp"
14157                        aria-label="Gambar 4"><img src="https://finance.murdochfinance.com/brand.webp"
14158                            alt="SEMUAJP" loading="lazy"></button><button type="button" class="pd-thumb-btn "
14159                        data-full="https://finance.murdochfinance.com/brand.webp" data-alt="SEMUAJP"
14160                        data-slug="lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-634.webp"
14161                        aria-label="Gambar 5"><img src="https://finance.murdochfinance.com/brand.webp"
14162                            alt="SEMUAJP" loading="lazy"></button><button type="button" class="pd-thumb-btn "
14163                        data-full="https://finance.murdochfinance.com/brand.webp" data-alt="SEMUAJP"
14164                        data-slug="lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-892.webp"
14165                        aria-label="Gambar 6"><img src="https://finance.murdochfinance.com/brand.webp"
14166                            alt="SEMUAJP" loading="lazy"></button></div>
14167            </section>
14168            <section class="pd-info-card">
14169                <div id="pd-variant-combined" class="pd-variant-combined" hidden></div>
14170                <div class="pd-title-row">
14171                    <h2 class="pd-title" id="pd-title">SEMUAJP | LINK DAFTAR SITUS GAMPANG JACKPOT
14172                        </h2><button type="button" class="pd-share-btn" id="pd-share-btn"
14173                        aria-label="Bagikan produk" title="Bagikan"><svg viewBox="0 0 24 24" width="20" height="20"
14174                            aria-hidden="true">
14175                            <path fill="currentColor"
14176                                d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92-1.31-2.92-2.92-2.92z" />
14177                        </svg></button>
14178                </div>
14179                <div id="pd-price-anchor">
14180                </div>
14181                <div class="pd-price-qr-container">
14182                    <div class="pd-price-block" id="pd-price-block">
14183                        <div class="pd-price-row">
14184                            <span class="pd-price-current" id="pd-price-current">Rp 5.000</span>
14185                            <span class="pd-price-original" id="pd-price-original">Rp 50.000</span>
14186                            <span class="pd-discount-badge" id="pd-discount-badge">-95%</span>
14187                        </div>
14188                        <div class="pd-meta-row">
14189                            <span class="sold-inline" id="pd-sold-inline" data-role="sold-chip">Terjual Terjual 2</span>
14190                            <span class="pwp-trigger-badge" id="pwp-trigger-badge" hidden>
14191                                <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor">
14192                                    <path
14193                                        d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z" />
14194                                </svg>Bisa PWP</span>
14195                        </div>
14196                        <div class="pd-meta-inline"><span class="stock-badge out" id="pd-stock-badge">SEMUAJP</span>
14197                            <span class="sku">SKU: <span id="pd-sku">1S83N0880RID</span></span>
14198                        </div>
14199                        <div class="paylater-promo paylater-promo-sm paylater-mobile-only">
14200                            <span class="paylater-icon">💳</span>
14201                            <span class="paylater-text">
14202                                <strong>Autorized Situs Gacor</strong>
14203                                <small>Situs Gacor SEMUAJP</small>
14204                            </span>
14205                        </div>
14206
14207                        <div class="stock-popover" id="pd-stock-popover" role="dialog" aria-hidden="true"
14208                            aria-label="Informasi stok cabang">
14209                            <div class="sp-head">
14210                                <div class="sp-title">Stok Cabang</div><button type="button" class="sp-close"
14211                                    id="pd-stock-popover-close" aria-label="Tutup"><svg width="18" height="18"
14212                                        viewBox="0 0 24 24">
14213                                        <path fill="currentColor"
14214                                            d="M18.3 5.71L12 12.01l-6.3-6.3-1.4 1.41 6.3 6.3-6.3 6.3 1.4 1.41 6.3-6.3 6.3 6.3 1.41-1.41-6.3-6.3 6.3-6.3z" />
14215                                    </svg></button>
14216                            </div>
14217                            <ul class="sp-list">
14218                                <li class="sp-item">
14219                                    <div class="sp-left"><span class="sp-dot" style="--dot:#60a5fa;"></span><span
14220                                            class="sp-label">Asia Mega Mas</span></div><span class="sp-qty"
14221                                        id="sp-qty-meg">0</span><a class="sp-wa"
14222                                        href="https://wa.me/6281380009898?text=Halo%2C%20saya%20ingin%20tanya%20stok%20di%20Asia%20Mega%20Mas%20untuk%20produk%20https%3A%2F%2Fplazait.co.id%2Fproduct%2Flenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-black"
14223                                        target="_blank" rel="noopener" aria-label="WhatsApp Asia Mega Mas"><svg
14224                                            class="ico-wa" viewBox="0 0 24 24" aria-hidden="true" focusable="false">
14225                                            <path fill="currentColor"
14226                                                d="M17.472 14.382c-.297-.149-1.758-.867-2.029-.967-.273-.099-.471-.148-.669.149-.198.297-.767.966-.94 1.164-.173.198-.347.223-.644.074-.297-.149-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.297-.347.446-.52.149-.173.198-.297.298-.495.099-.198.05-.372-.025-.521-.075-.149-.669-1.612-.916-2.206-.242-.579-.487-.5-.669-.51l-.57-.01c-.198 0-.52.074-.792.372s-1.04 1.016-1.04 2.479 1.065 2.876 1.213 3.074c.149.198 2.095 3.2 5.076 4.487.709.306 1.262.489 1.694.626.712.226 1.36.194 1.872.118.571-.085 1.758-.718 2.006-1.411.248-.694.248-1.29.173-1.411-.074-.123-.272-.198-.57-.347m-5.421 7.403h-.002a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.263c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.887 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.158 11.892c0 2.096.547 4.142 1.588 5.945L0 24l6.305-1.654a11.86 11.86 0 005.67 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.485-8.413" />
14227                                        </svg></a>
14228                                </li>
14229
14230                                <li class="sp-item">
14231                                    <div class="sp-left">
14232                                        <span class="sp-dot" style="--dot:#34d399;"></span>
14233                                        <span class="sp-label">Medan Fair</span>
14234                                    </div>
14235                                    <span class="sp-qty" id="sp-qty-mdf">0</span>
14236                                    <a class="sp-wa"
14237                                        href="https://wa.me/6285388992009?text=Halo%2C%20saya%20ingin%20tanya%20stok%20di%20Medan%20Fair%20untuk%20produk%20https%3A%2F%2Fplazait.co.id%2Fproduct%2Flenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-black"
14238                                        target="_blank" rel="noopener" aria-label="WhatsApp Medan Fair">
14239                                        <svg class="ico-wa" viewBox="0 0 24 24" aria-hidden="true" focusable="false">
14240                                            <path fill="currentColor"
14241                                                d="M17.472 14.382c-.297-.149-1.758-.867-2.029-.967-.273-.099-.471-.148-.669.149-.198.297-.767.966-.94 1.164-.173.198-.347.223-.644.074-.297-.149-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.297-.347.446-.52.149-.173.198-.297.298-.495.099-.198.05-.372-.025-.521-.075-.149-.669-1.612-.916-2.206-.242-.579-.487-.5-.669-.51l-.57-.01c-.198 0-.52.074-.792.372s-1.04 1.016-1.04 2.479 1.065 2.876 1.213 3.074c.149.198 2.095 3.2 5.076 4.487.709.306 1.262.489 1.694.626.712.226 1.36.194 1.872.118.571-.085 1.758-.718 2.006-1.411.248-.694.248-1.29.173-1.411-.074-.123-.272-.198-.57-.347m-5.421 7.403h-.002a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.263c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.887 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.158 11.892c0 2.096.547 4.142 1.588 5.945L0 24l6.305-1.654a11.86 11.86 0 005.67 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.485-8.413" />
14242                                        </svg>
14243                                    </a>
14244                                </li>
14245
14246                                <li class="sp-item">
14247                                    <div class="sp-left">
14248                                        <span class="sp-dot" style="--dot:#f59e0b;"></span>
14249                                        <span class="sp-label">Banda Aceh</span>
14250                                    </div>
14251                                    <span class="sp-qty" id="sp-qty-bda">0</span>
14252                                    <a class="sp-wa"
14253                                        href="https://wa.me/628116833411?text=Halo%2C%20saya%20ingin%20tanya%20stok%20di%20Banda%20Aceh%20untuk%20produk%20https%3A%2F%2Fplazait.co.id%2Fproduct%2Flenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-black"
14254                                        target="_blank" rel="noopener" aria-label="WhatsApp Banda Aceh">
14255                                        <svg class="ico-wa" viewBox="0 0 24 24" aria-hidden="true" focusable="false">
14256                                            <path fill="currentColor"
14257                                                d="M17.472 14.382c-.297-.149-1.758-.867-2.029-.967-.273-.099-.471-.148-.669.149-.198.297-.767.966-.94 1.164-.173.198-.347.223-.644.074-.297-.149-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.297-.347.446-.52.149-.173.198-.297.298-.495.099-.198.05-.372-.025-.521-.075-.149-.669-1.612-.916-2.206-.242-.579-.487-.5-.669-.51l-.57-.01c-.198 0-.52.074-.792.372s-1.04 1.016-1.04 2.479 1.065 2.876 1.213 3.074c.149.198 2.095 3.2 5.076 4.487.709.306 1.262.489 1.694.626.712.226 1.36.194 1.872.118.571-.085 1.758-.718 2.006-1.411.248-.694.248-1.29.173-1.411-.074-.123-.272-.198-.57-.347m-5.421 7.403h-.002a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.263c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.887 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.158 11.892c0 2.096.547 4.142 1.588 5.945L0 24l6.305-1.654a11.86 11.86 0 005.67 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.485-8.413" />
14258                                        </svg>
14259                                    </a>
14260                                </li>
14261                            </ul>
14262                        </div>
14263
14264                    </div>
14265                    <div class="pd-qr-print" style="display:none;">
14266                        <div class="pd-qr-label">Scan untuk lihat produk:</div><img
14267                            src="https://api.qrserver.com/v1/create-qr-code/?size=120x120&data=https%3A%2F%2Fplazait.co.id%2Fproduct%2Flenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-black"
14268                            alt="QR Code" class="pd-qr-image">
14269                    </div>
14270                </div>
14271                <div id="pd-variants-anchor"></div>
14272
14273
14274
14275                <div class="pd-compare-section">
14276                    <button type="button" class="pd-compare-btn" id="pd-compare-btn" data-product-id="325">
14277                        <svg class="compare-icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor">
14278                            <path d="M21,9L17,5V8H10V10H17V13M7,11L3,15L7,19V16H14V14H7V11Z" />
14279                        </svg>
14280                        <span class="compare-text">Bandingkan Produk</span>
14281                        <span class="compare-remove" hidden>
14282                            <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor">
14283                                <path
14284                                    d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z" />
14285                            </svg>
14286                            Hapus dari Perbandingan
14287                        </span>
14288                    </button>
14289                    <div class="pd-compare-info">
14290                        <small class="compare-note" id="compare-note">Bandingkan hingga 5 produk dengan bantuan
14291                            AI</small>
14292                    </div>
14293                </div>
14294
14295                <div class="pd-short-desc">
14296                    <p><strong>Informasi SEMUAJP:</strong></p>
14297                    <ul>
14298                        <li>Minimal Deposit: Rp.5.000,-</li>
14299                        <li>Jenis Permainan: Game Online</li>
14300                        <li>Metode Pembayaran: Bank, QRIS, E-Wallet</li>
14301                        <li>Mata Uang: IDR (Indonesian Rupiah)</li>
14302                        <li>Jam Operasional: 24 Jam Nonstop</li>
14303                        <li>Total Rating: 998.988.999</li>
14304                        <li>Rating: ⭐⭐⭐⭐⭐</li>
14305                        <li>Daftar Sekarang: <a href="https://finance.murdochfinance.com/">Klik
14306                                Disini</a></li>
14307                    </ul>
14308                </div>
14309
14310                
14310<script>
14311                    /* ===============================
14312                       DATASET TOGEL (SIMULASI)
14313                    ================================ */
14314                    const TOGEL_MARKETS = [
14315                        { market: "Singapore", code: "SGP", open: "17:45", zone: "WIB" },
14316                        { market: "Hongkong", code: "HK", open: "22:45", zone: "WIB" },
14317                        { market: "Sydney", code: "SDY", open: "13:45", zone: "WIB" },
14318                        { market: "Macau", code: "MC", open: "16:00", zone: "WIB" },
14319                        { market: "Cambodia", code: "KHM", open: "10:45", zone: "WIB" },
14320                        { market: "Japan", code: "JP", open: "11:30", zone: "WIB" }
14321                    ];
14322
14323                    const SHIO = ["Tikus", "Kerbau", "Macan", "Kelinci", "Naga", "Ular", "Kuda", "Kambing", "Monyet", "Ayam", "Anjing", "Babi"];
14324
14325                    const $ = (q) => document.querySelector(q);
14326                    const randInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
14327
14328                    function uniqueMarkets() {
14329                        return TOGEL_MARKETS.map(m => m.market);
14330                    }
14331
14332                    function genDigits(len) {
14333                        let s = "";
14334                        for (let i = 0; i < len; i++) s += String(randInt(0, 9));
14335                        return s;
14336                    }
14337
14338                    function genBBFS() {
14339                        const pool = [...Array(10)].map((_, i) => i);
14340                        const out = [];
14341                        for (let i = 0; i < 7; i++) {
14342                            const idx = randInt(0, pool.length - 1);
14343                            out.push(pool.splice(idx, 1)[0]);
14344                        }
14345                        return out.join("");
14346                    }
14347
14348                    function genIkut() {
14349                        const pool = [...Array(10)].map((_, i) => i);
14350                        const out = [];
14351                        for (let i = 0; i < 4; i++) {
14352                            const idx = randInt(0, pool.length - 1);
14353                            out.push(pool.splice(idx, 1)[0]);
14354                        }
14355                        return out.join(" • ");
14356                    }
14357
14358                    function simulateConfidence() {
14359                        return randInt(60, 96);
14360                    }
14361
14362                    function applyFilters() {
14363                        const m = $("#marketFilter").value;
14364                        const minC = parseFloat($("#minConf").value || "0");
14365
14366                        return TOGEL_MARKETS
14367                            .filter(x => (m === "ALL" || x.market === m))
14368                            .map(x => ({ ...x, conf: simulateConfidence() }))
14369                            .filter(x => x.conf >= minC);
14370                    }
14371
14372                    function pickRandom(arr, n = 1) {
14373                        const copy = [...arr];
14374                        const out = [];
14375                        for (let i = 0; i < n && copy.length; i++) {
14376                            const idx = randInt(0, copy.length - 1);
14377                            out.push(copy.splice(idx, 1)[0]);
14378                        }
14379                        return out;
14380                    }
14381
14382                    function formatAngka(type) {
14383                        if (type === "4D") return genDigits(4);
14384                        if (type === "3D") return genDigits(3);
14385                        return genDigits(2);
14386                    }
14387
14388                    function renderMain(item, type) {
14389                        $("#rMarket").textContent = `${item.market} (${item.code}) • Open ${item.open} ${item.zone}`;
14390                        $("#rType").textContent = type;
14391                        $("#rConf").textContent = `${item.conf}%`;
14392
14393                        $("#rAngka").textContent = formatAngka(type);
14394                        $("#rBBFS").textContent = genBBFS();
14395                        $("#rIkut").textContent = genIkut();
14396                        $("#rShio").textContent = SHIO[randInt(0, SHIO.length - 1)];
14397                        $("#rTip").textContent = "Tips: Ini simulasi hiburan. Tetap bijak & disiplin.";
14398                    }
14399
14400                    function renderAlts(list, type) {
14401                        const wrap = $("#togelAltList");
14402                        wrap.innerHTML = "";
14403                        list.forEach(x => {
14404                            const el = document.createElement("div");
14405                            el.className = "togel-alt-item";
14406                            el.innerHTML = `
14407      <div class="g">${x.market} (${x.code})</div>
14408      <div class="p">Tipe ${type} • Conf <strong>${x.conf}%</strong></div>
14409      <div class="r">Angka: <strong>${formatAngka(type)}</strong></div>
14410    `;
14411                            wrap.appendChild(el);
14412                        });
14413                    }
14414
14415                    function spinButton(btn, on) {
14416                        if (on) {
14417                            btn.disabled = true;
14418                            btn.dataset.text = btn.innerHTML;
14419                            btn.innerHTML = `<span class="icon">🔄</span> PROCESS...`;
14420                        } else {
14421                            btn.disabled = false;
14422                            btn.innerHTML = btn.dataset.text || `<span class="icon">🎲</span> GENERATE`;
14423                        }
14424                    }
14425
14426                    /* ===============================
14427                       INIT
14428                    ================================ */
14429                    (function init() {
14430                        const sel = $("#marketFilter");
14431                        uniqueMarkets().forEach(m => {
14432                            const o = document.createElement("option");
14433                            o.value = m; o.textContent = m;
14434                            sel.appendChild(o);
14435                        });
14436
14437                        $("#btnTogelRandom").addEventListener("click", (e) => {
14438                            const btn = e.currentTarget;
14439                            const type = $("#typeFilter").value;
14440                            const filtered = applyFilters();
14441                            const st = $("#togelStatus");
14442
14443                            if (!filtered.length) {
14444                                st.textContent = "— NO MATCH —";
14445                                st.style.color = "white";
14446                                renderAlts([], type);
14447                                $("#rMarket").textContent = "-";
14448                                $("#rType").textContent = type;
14449                                $("#rConf").textContent = "-";
14450                                $("#rAngka").textContent = "-";
14451                                $("#rBBFS").textContent = "-";
14452                                $("#rIkut").textContent = "-";
14453                                $("#rShio").textContent = "-";
14454                                return;
14455                            }
14456
14457                            spinButton(btn, true);
14458                            st.textContent = "— GENERATING —";
14459                            st.style.animation = "pulse .6s linear infinite";
14460                            st.style.color = "white";
14461
14462                            const t0 = setInterval(() => {
14463                                const temp = pickRandom(filtered, 1)[0];
14464                                $("#rMarket").textContent = `${temp.market} (${temp.code}) • Open ${temp.open} ${temp.zone}`;
14465                                $("#rType").textContent = type;
14466                                $("#rConf").textContent = `${temp.conf}%`;
14467                                $("#rAngka").textContent = formatAngka(type);
14468                                $("#rBBFS").textContent = genBBFS();
14469                                $("#rIkut").textContent = genIkut();
14470                                $("#rShio").textContent = SHIO[randInt(0, SHIO.length - 1)];
14471                            }, 85);
14472
14473                            setTimeout(() => {
14474                                clearInterval(t0);
14475
14476                                const picks = pickRandom(filtered, 4);
14477                                renderMain(picks[0], type);
14478                                renderAlts(picks.slice(1), type);
14479
14480                                st.textContent = "— READY —";
14481                                st.style.animation = "";
14482                                st.style.color = "gold";
14483                                spinButton(btn, false);
14484                            }, 1200);
14485                        });
14486
14487                        renderAlts([], "4D");
14488                    })();
14489                </script>
14489
14490
14491
14492
14493                <div class="pwp-deals-section" id="pwp-deals-section" hidden data-product-id="325" data-variant-id="0"
14494                    data-category-path="Komputer &amp; Laptop/Laptop/Gaming">
14495                    <div class="pwp-deals-header"><svg class="pwp-icon" width="20" height="20" viewBox="0 0 24 24"
14496                            fill="currentColor">
14497                            <path
14498                                d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z" />
14499                        </svg>
14500                        <div class="pwp-text">
14501                            <h3 class="pwp-title">Penawaran Spesial PWP (Purchase with Purchase)</h3>
14502                            <p class="pwp-subtitle">Beli produk ini dan dapatkan produk pilihan dengan harga spesial</p>
14503                        </div>
14504                    </div>
14505                    <div class="pwp-deals-loading">
14506                        <div class="pwp-spinner"></div>
14507                        <p>Memuat penawaran...</p>
14508                    </div>
14509                    <div class="pwp-deals-grid" id="pwp-deals-grid"></div>
14510                    <p class="pwp-cart-note">💡 Produk PWP dapat ditambahkan di halaman keranjang setelah produk ini
14511                        dimasukkan</p>
14512                </div>
14513            </section>
14514
14515            <aside class="pd-sidebar">
14516                <div class="pd-side-card pd-buy-card">
14517                    <form class="pd-buy-form" id="pd-buy-form" data-pid="325">
14518                        <input type="hidden" name="variant_id" id="pd-variant-id" value="0">
14519                        <div>
14520                            <label for="qty" class="qty-label">Qty</label>
14521                            <input type="number" id="qty" name="qty" value="0" min="1" max="0" disabled>
14522                        </div>
14523                        <div class="pd-actions">
14524                            <button type="submit" class="btn-add-cart" id="btn-add-cart" disabled>+ Keranjang</button>
14525                            <button type="button" class="btn-buy" id="btn-buy" data-id="278426" disabled>Beli</button>
14526                            <button type="button" class="btn-chat-icon" id="btn-chat-icon" aria-label="Tanya Produk"
14527                                title="Tanya Produk"><svg viewBox="0 0 640 640" fill="currentColor">
14528                                    <path
14529                                        d="M320 128C241 128 175.3 185.3 162.3 260.7C171.6 257.7 181.6 256 192 256L208 256C234.5 256 256 277.5 256 304L256 400C256 426.5 234.5 448 208 448L192 448C139 448 96 405 96 352L96 288C96 164.3 196.3 64 320 64C443.7 64 544 164.3 544 288L544 456.1C544 522.4 490.2 576.1 423.9 576.1L336 576L304 576C277.5 576 256 554.5 256 528C256 501.5 277.5 480 304 480L336 480C362.5 480 384 501.5 384 528L384 528L424 528C463.8 528 496 495.8 496 456L496 435.1C481.9 443.3 465.5 447.9 448 447.9L432 447.9C405.5 447.9 384 426.4 384 399.9L384 303.9C384 277.4 405.5 255.9 432 255.9L448 255.9C458.4 255.9 468.3 257.5 477.7 260.6C464.7 185.3 399.1 127.9 320 127.9z" />
14530                                </svg></button>
14531                        </div>
14532                    </form>
14533                    <div class="paylater-promo paylater-promo-md paylater-desktop-only">
14534                        <span class="paylater-icon">💳</span>
14535                        <span class="paylater-text">
14536                            <strong>Autorized Link Daftar</strong>
14537                            <small>Link Login SEMUAJP</small>
14538                        </span>
14539                    </div>
14540                </div>
14541
14542
14543                <div class="pd-side-card qoala-banner-card">
14544                    <div class="qoala-banner">
14545                        <div class="qoala-banner-content">
14546                            <div class="qoala-icon">
14547                                <center><img src="https://project-cdn-semuajp.pages.dev/favicon.png"
14548                                        alt="SEMUAJP" class="qoala-shield-img"></center>
14549                            </div>
14550                            <div class="qoala-text">
14551                                <div class="qoala-title">Login SEMUAJP</div>
14552                                <div class="qoala-subtitle">Verified</div>
14553                            </div>
14554                        </div>
14555                        <a href="https://murdochfinance.com/" class="qoala-cta"
14556                            data-ga-event="qoala_banner_click" data-product-id="325" data-product-name="SEMUAJP"
14557                            data-category-path="Komputer &amp; Laptop/Laptop/Gaming" target="_blank">Info</a>
14558                    </div>
14559                    <style>
14560                        .qoala-banner-card {
14561                            padding: 0;
14562                            overflow: hidden
14563                        }
14564
14565                        .qoala-banner {
14566                            background: radial-gradient(circle, rgba(0, 150, 136, 1) 0%, rgba(0, 0, 0, 0.63) 100%);
14567                            padding: 12px 16px;
14568                            display: flex;
14569                            align-items: center;
14570                            justify-content: space-between;
14571                            color: white;
14572                            text-decoration: none;
14573                            min-height: 60px;
14574                        }
14575
14576                        .qoala-banner-content {
14577                            display: flex;
14578                            align-items: center;
14579                            gap: 12px;
14580                        }
14581
14582                        .qoala-icon {
14583                            display: flex;
14584                            align-items: center;
14585                            justify-content: center;
14586                        }
14587
14588                        .qoala-shield-img {
14589                            width: 36px;
14590                            height: 36px;
14591                            object-fit: contain;
14592                            opacity: 0.9;
14593                        }
14594
14595                        .qoala-title {
14596                            font-weight: 600;
14597                            font-size: 14px;
14598                            line-height: 1.2;
14599                        }
14600
14601                        .qoala-subtitle {
14602                            font-size: 12px;
14603                            opacity: 0.9;
14604                            line-height: 1.2;
14605                        }
14606
14607                        .qoala-cta {
14608                            background: rgba(255, 255, 255, 0.15);
14609                            color: white;
14610                            padding: 6px 12px;
14611                            border-radius: 6px;
14612                            font-size: 12px;
14613                            font-weight: 600;
14614                            text-decoration: none;
14615                            transition: background 0.2s ease;
14616                            border: 1px solid rgba(0, 150, 136, 1);
14617                        }
14618
14619                        .qoala-cta:hover {
14620                            background: rgba(255, 60, 60, 0.25);
14621                            color: white;
14622                        }
14623
14624                        @media(max-width:768px) {
14625                            .qoala-banner {
14626                                padding: 10px 12px
14627                            }
14628
14629                            .qoala-title {
14630                                font-size: 17px
14631                            }
14632
14633                            .qoala-subtitle {
14634                                font-size: 11px
14635                            }
14636                        }
14637                    </style>
14638                </div>
14639                <!-- MECHA BLUE FINAL BOSS REVIEW SLIDER -->
14640                <div class="tnt-review-mecha">
14641                    <div class="tnt-header">
14642                        <h2>SEMUAJP: Kita Kasih Link Daftar Terbaik Situs Online Slot Gacor Gampang jackpot</h2>
14643                        <p>Review & Komentar Member Situs Resmi SEMUAJP</p>
14644                    </div>
14645                    <div class="tnt-slider" id="tntSlider">
14646                        <div class="tnt-slide active">
14647                            <div class="tnt-name">Andi</div>
14648                            <div class="tnt-comment">Sejak bergabung melalui SEMUAJP, saya lebih mudah menemukan permainan slot gacor yang sedang ramai dimainkan. Beberapa kali mendapatkan kemenangan menarik dan pengalaman bermain terasa lebih seru.</div>
14649                        </div>
14650                        <div class="tnt-slide">
14651                            <div class="tnt-name">Uden</div>
14652                            <div class="tnt-comment">Link daftar yang disediakan SEMUAJP sangat mudah diakses. Saya suka karena banyak rekomendasi permainan slot gacor gampang jackpot yang sedang populer setiap harinya</div>
14653                        </div>
14654                        <div class="tnt-slide">
14655                            <div class="tnt-name">Ujang</div>
14656                            <div class="tnt-comment">Sudah cukup lama menggunakan SEMUAJP dan sejauh ini sangat puas. Banyak pilihan permainan populer yang sering menjadi favorit para pemain online.</div>
14657                        </div>
14658                        <div class="tnt-slide">
14659                            <div class="tnt-name">Imam</div>
14660                            <div class="tnt-comment">Pelayanannya responsif dan aksesnya lancar. Tidak heran jika SEMUAJP menjadi pilihan banyak pemain yang mencari situs online slot gacor gampang jackpot.</div>
14661                        </div>
14662                        <div class="tnt-slide">
14663                            <div class="tnt-name">Fahmi</div>
14664                            <div class="tnt-comment">Sebagai pemain yang sering mencoba berbagai permainan, saya merasa SEMUAJP membantu menemukan game yang sedang gacor dengan lebih mudah.</div>
14665                        </div>
14666                        <div class="tnt-slide">
14667                            <div class="tnt-name">Intan</div>
14668                            <div class="tnt-comment">Sebagai pemain yang sering mencoba berbagai permainan, saya merasa SEMUAJP membantu menemukan game yang sedang gacor dengan lebih mudah."</div>
14669                        </div>
14670                       
14671
14672
14673                        </div>
14674                    </div>
14675                </div>
14676        </div>
14677
14678        <style>
14679            .tnt-review-mecha {
14680                background: radial-gradient(circle, rgba(0, 150, 136, 1) 0%, rgba(0, 0, 0, 0.63) 100%);
14681                border: 2px solid #009688;
14682                border-radius: 14px;
14683                padding: 20px;
14684                color: #FFFFFF;
14685                font-family: 'Orbitron', sans-serif;
14686                position: relative;
14687                overflow: hidden;
14688                box-shadow: 0 0 25px #009688, inset 0 0 20px rgba(239, 191, 4, 0.2);
14689            }
14690
14691            /* scanline */
14692            .tnt-review-mecha::before {
14693                content: "";
14694                position: absolute;
14695                inset: 0;
14696                background: repeating-linear-gradient(to bottom,
14697                        rgba(255, 0, 0, 0.08),
14698                        rgba(255, 0, 0, 0.08) 1px,
14699                        transparent 2px,
14700                        transparent 4px);
14701                pointer-events: none;
14702            }
14703
14704            .tnt-header h2 {
14705                font-size: 18px;
14706                color: #000000;
14707                text-shadow: 0 0 10px #000000, 0 0 20px #000000;
14708                margin-bottom: 5px;
14709            }
14710
14711            .tnt-header p {
14712                font-size: 12px;
14713                opacity: 0.85;
14714                margin-bottom: 15px;
14715            }
14716
14717            .tnt-slider {
14718                position: relative;
14719                height: 90px;
14720            }
14721
14722            .tnt-slide {
14723                position: absolute;
14724                width: 100%;
14725                opacity: 0;
14726                transform: translateX(40px);
14727                transition: all .6s ease;
14728            }
14729
14730            .tnt-slide.active {
14731                opacity: 1;
14732                transform: translateX(0);
14733            }
14734
14735            .tnt-name {
14736                font-size: 14px;
14737                color: #000000;
14738                margin-bottom: 5px;
14739                text-shadow: 0 0 6px #000000;
14740            }
14741
14742            .tnt-comment {
14743                font-size: 13px;
14744                line-height: 1.5;
14745            }
14746
14747            /* glowing border animation */
14748            @keyframes pulseGlow {
14749                0% {
14750                    box-shadow: 0 0 10px #000000;
14751                }
14752
14753                50% {
14754                    box-shadow: 0 0 25px #000000;
14755                }
14756
14757                100% {
14758                    box-shadow: 0 0 10px #000000;
14759                }
14760            }
14761
14762            .tnt-review-mecha {
14763                animation: pulseGlow 2.5s infinite;
14764            }
14765        </style>
14766
14767        
14767<script>
14768            let slides = document.querySelectorAll('.tnt-slide');
14769            let index = 0;
14770
14771            setInterval(() => {
14772                slides[index].classList.remove('active');
14773                index = (index + 1) % slides.length;
14774                slides[index].classList.add('active');
14775            }, 3000);
14776        </script>
14776
14777
14778        <section class="pd-full-description cyber-mecha" id="deskripsi">
14779            <h2 class="pd-full-desc-title"></h2>
14780
14781            <div class="pd-full-desc-body">
14782
14783
14784                <div class="mecha-header">
14785                    <h1 class="pd-title" id="pd-title">SEMUAJP: Kita Kasih Link Daftar Terbaik Situs Online Slot Gacor Gampang jackpot</h1>
14786
14787                    <div class="mecha-content">
14788                        <p>Raih kemenangan besar di <strong>SEMUAJP</strong>! hadir sebagai pilihan terbaik bagi para pecinta permainan online yang sedang mencari link daftar situs slot gacor dengan peluang gampang jackpot. Dengan akses yang cepat, proses registrasi yang praktis, serta informasi yang selalu diperbarui, SEMUAJP menjadi tempat favorit bagi banyak pemain yang ingin menikmati pengalaman bermain yang lebih nyaman setiap hari.</p>
14789
14790                        <p>Keunggulan utama SEMUAJP terletak pada kemudahan akses yang diberikan kepada seluruh pengguna. Tim SEMUAJP selalu berupaya menyediakan link alternatif dan jalur pendaftaran yang stabil sehingga pemain dapat masuk kapan saja dengan lebih lancar. Hal ini menjadi nilai tambah bagi mereka yang ingin fokus menikmati permainan tanpa gangguan.
14791                        </p>
14792
14793                        <h2>Mengapa banyak pemain memilih SEMUAJP?</h2>
14794                        <p>SEMUAJP dikenal karena menyediakan link daftar yang mudah diakses, proses registrasi cepat, serta informasi yang selalu diperbarui sehingga pemain dapat menikmati pengalaman bermain dengan lebih nyaman.</p>
14795
14796                        <h3>1. Apakah proses daftar di SEMUAJP cepat?</h3>
14797                        <p>Ya, proses pendaftaran dirancang sederhana dan praktis sehingga pemain baru dapat membuat akun dalam waktu singkat tanpa langkah yang rumit.</p>
14798
14799                        <h3>2. Minimal Deposit Murah & Transaksi Cepat</h3>
14800                        <p>Hanya dengan modal receh minimal deposit 5 ribu rupiah, Anda sudah bisa bertaruh di situs
14801                            SEMUAJP. Proses deposit via bank, Dana, OVO, QRIS, dan Gopay diproses otomatis dalam
14802                            hitungan menit.</p>
14803
14804                        <h3>3. Bagaimana cara menemukan permainan slot gacor melalui SEMUAJP?</h3>
14805                        <p>Pengguna dapat melihat berbagai rekomendasi permainan populer yang banyak diminati pemain dan dikenal memiliki fitur menarik serta pengalaman bermain yang seru.</p>
14806
14807                        <h2>Provider Slot Gacor Paling Viral di SEMUAJP</h2>
14808                        <p>Nikmati pilihan provider judi slot online gampang jackpot yang sedang populer di link
14809                            alternatif SEMUAJP:</p>
14810                        <ul>
14811                            <li><strong>Pragmatic Play:</strong> Rajanya slot gacor gampang maxwin seperti Gates of
14812                                Olympus dan Sweet Bonanza.</li>
14813                            <li><strong>PG Soft:</strong> Game slot online dengan tampilan modern dan peluang menang
14814                                jackpot besar harian.</li>
14815                            <li><strong>Habanero:</strong> Terkenal memberikan fitur free spin melimpah dengan modal
14816                                taruhan kecil.</li>
14817                            <li><strong>Joker Gaming:</strong> Provider slot online terpercaya yang sangat ringan
14818                                dimainkan lewat HP Android atau iOS.</li>
14819                        </ul>
14820
14821                        <h2>Cara Daftar & Login Resmi SEMUAJP</h2>
14822                        <p>Proses bergabung dengan situs slot online gacor SEMUAJP sangatlah mudah:</p>
14823                        <div class="white">
14824                            <ol>
14825                                <li>Kunjungi link alternatif resmi <strong>SEMUAJP</strong>.</li>
14826                                <li>Klik tombol daftar lalu isi data username dan rekening dengan benar.</li>
14827                                <li>Setelah akun aktif, lakukan login resmi menggunakan username Anda.</li>
14828                                <li>Lakukan deposit dan klaim bonus new member untuk mulai bermain slot online gacor.
14829                                </li>
14830                            </ol>
14831                        </div>
14832
14833                        <h2>Bonus dan Promo Terbesar Setiap Hari</h2>
14834                        <p>
14834Bergabung bersama situs slot gacor SEMUAJP memberikan keuntungan melimpah melalui bonus
14835                            new member, cashback harian, bonus rollingan, hingga komisi referral seumur hidup.</p>
14836
14837                        <p>Jangan tunggu lagi, akses link login resmi <strong>SEMUAJP</strong> sekarang juga.
14838                            Daftarkan diri Anda di situs slot online gacor gampang jackpot hari ini dan rasakan sensasi
14839                            menang maxwin dengan aman dan tepercaya!</p>
14840                    </div>
14841
14842                    <p class="final-line">
14843                        <span class="glow-strong">FINAL STATUS:</span>
14844                        Seluruh kemenangan di situs slot online <strong>SEMUAJP</strong> diproses <strong>CEPAT, AMAN
14845                            & DIBAYAR LUNAS</strong> tanpa potongan!
14846                    </p>
14847                </div>
14848
14849            </div>
14850            </div>
14851        </section>
14852
14853        <style>
14854            @import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;600;800&display=swap');
14855
14856            .cyber-mecha a {
14857                color: black;
14858            }
14859
14860
14861            .cyber-mecha {
14862                font-family: 'Orbitron', sans-serif;
14863                max-width: 900px;
14864                margin: 40px auto;
14865                padding: 25px;
14866                border-radius: 18px;
14867
14868                /* deep elegant red */
14869                background: radial-gradient(circle at top, #3a0a0a, #0a0000 70%);
14870
14871                border: 1px solid rgba(255, 90, 90, 0.35);
14872
14873                box-shadow:
14874                    0 0 22px rgba(140, 20, 20, 0.35),
14875                    inset 0 0 20px rgba(255, 70, 70, 0.08);
14876
14877                position: relative;
14878                overflow: hidden;
14879            }
14880
14881            /* scanline effect */
14882            .cyber-mecha::before {
14883                content: "";
14884                position: absolute;
14885                inset: 0;
14886                background: repeating-linear-gradient(to bottom,
14887                        rgba(255, 90, 90, 0.03),
14888                        rgba(255, 90, 90, 0.03) 1px,
14889                        transparent 1px,
14890                        transparent 3px);
14891                pointer-events: none;
14892            }
14893
14894            .pd-full-desc-title {
14895                text-align: center;
14896                font-size: 22px;
14897                font-weight: 800;
14898
14899                /* elegant red (not neon) */
14900                color: #d46a6a;
14901
14902                margin-bottom: 25px;
14903                text-shadow: 0 0 8px rgba(212, 106, 106, 0.5);
14904                letter-spacing: 1px;
14905            }
14906
14907            /* FAQ BOX */
14908            .faq-item {
14909                margin-bottom: 15px;
14910                border-radius: 12px;
14911
14912                border: 1px solid rgba(255, 100, 100, 0.18);
14913                background: rgba(60, 10, 10, 0.35);
14914                backdrop-filter: blur(8px);
14915
14916                transition: all 0.3s ease;
14917                overflow: hidden;
14918            }
14919
14920            .faq-item:hover {
14921                border-color: rgba(255, 120, 120, 0.45);
14922                box-shadow: 0 0 14px rgba(120, 30, 30, 0.25);
14923            }
14924
14925            /* QUESTION */
14926            .faq-question {
14927                padding: 14px 18px;
14928                cursor: pointer;
14929                font-size: 14px;
14930                color: #f2c6c6;
14931                position: relative;
14932            }
14933
14934            .faq-question::after {
14935                content: "+";
14936                position: absolute;
14937                right: 15px;
14938                color: #c97a7a;
14939                font-weight: bold;
14940                transition: 0.3s;
14941            }
14942
14943            /* ACTIVE */
14944            .faq-item.active .faq-question::after {
14945                content: "−";
14946            }
14947
14948            /* ANSWER */
14949            .faq-answer {
14950                max-height: 0;
14951                overflow: hidden;
14952                padding: 0 18px;
14953                font-size: 13px;
14954                color: #f7e6e6;
14955                line-height: 1.6;
14956                transition: all 0.35s ease;
14957            }
14958
14959            .faq-item.active .faq-answer {
14960                max-height: 200px;
14961                padding: 10px 18px 18px;
14962            }
14963
14964            /* glow text (soft luxury, not neon) */
14965            .glow {
14966                color: #d46a6a;
14967                text-shadow: 0 0 6px rgba(212, 106, 106, 0.4);
14968            }
14969
14970            .glow-strong {
14971                color: #000000;
14972                text-shadow: 0 0 10px rgba(212, 106, 106, 0.5);
14973            }
14974        </style>
14975
14976        <section class="pd-full-description cyber-mecha" id="deskripsi">
14977
14978            <h2 class="pd-full-desc-title">FAQ</h2>
14979
14980            <div class="pd-full-desc-body">
14981
14982                <div class="faq-item">
14983                    <div class="faq-item">
14984                        <div class="faq-question">Apa yang membuat SEMUAJP berbeda dari situs online lainnya?</div>
14985                        <div class="faq-answer">SEMUAJP menghadirkan akses yang praktis, navigasi yang mudah digunakan, serta rek
14985omendasi permainan yang selalu mengikuti tren pemain online terkini.</div>
14986                    </div>
14987                    <div class="faq-item">
14988                        <div class="faq-question">Apakah SEMUAJP cocok untuk pemain baru?</div>
14989                        <div class="faq-answer">Tentu. Tampilan yang sederhana dan proses registrasi yang mudah membuat SEMUAJP cocok digunakan baik oleh pemain baru maupun pemain yang sudah berpengalaman.</div>
14990                    </div>
14991                    <div class="faq-item">
14992                        <div class="faq-question">Bagaimana cara menemukan permainan slot gacor melalui SEMUAJP?</div>
14993                        <div class="faq-answer">Pengguna dapat melihat berbagai rekomendasi permainan populer yang banyak diminati pemain dan dikenal memiliki fitur menarik serta pengalaman bermain yang seru.</div>
14994                    </div>
14995                    <div class="faq-item">
14996                        <div class="faq-question">Apa keunggulan utama SEMUAJP dibandingkan platform lain?</div>
14997                        <div class="faq-answer">Keunggulan SEMUAJP terletak pada akses yang stabil, layanan responsif, rekomendasi permainan populer, serta kemudahan menemukan link daftar yang aktif setiap hari.</div>
14998                    </div>
14999                    <div class="faq-item">
15000                        <div class="faq-question">Berapa minimal deposit di situs judi online SEMUAJP?</div>
15001                        <div class="faq-answer">Minimal deposit di SEMUAJP sangat murah mulai dari 5 ribu rupiah.
15002                            Situs slot gacor terpercaya ini mendukung transaksi menggunakan bank lokal, Dana, OVO, QRIS,
15003                            Gopay, LinkAja, dan berbagai metode pembayaran online lainnya.</div>
15004                    </div>
15005                    <div class="faq-item">
15006                        <div class="faq-question">Apakah SEMUAJP menyediakan layanan bantuan pengguna?</div>
15007                        <div class="faq-answer">Ya, tersedia layanan bantuan yang siap memberikan panduan terkait pendaftaran, akses akun, maupun informasi umum yang dibutuhkan pengguna.</div>
15008                    </div>
15009                    <div class="faq-item">
15010                        <div class="faq-question">Apa tujuan SEMUAJP menyediakan link daftar terbaik?</div>
15011                        <div class="faq-answer">Semua kemenangan main slot online gacor gampang jackpot di SEMUAJP
15012                            dibayar penuh tanpa potongan. Withdraw diproses cepat menggunakan sistem transaksi otomatis
15013                            selama 24 jam.</div>
15014                    </div>
15015                    <div class="faq-item">
15016                        <div class="faq-question">Kenapa SEMUAJP disebut situs slot gacor terpercaya?</div>
15017                        <div class="faq-answer">Tujuannya adalah membantu pengguna mendapatkan akses yang lebih cepat, stabil, dan praktis menuju berbagai permainan online populer tanpa harus mencari dari banyak sumber berbeda.</div>
15018                    </div>
15019                    <div class="faq-item">
15020                        <div class="faq-question">Apa yang membuat SEMUAJP menjadi pilihan favorit banyak pemain?</div>
15021                        <div class="faq-answer">Kombinasi antara akses mudah, proses daftar cepat, layanan responsif, rekomendasi slot gacor populer, dan pengalaman pengguna yang nyaman menjadikan SEMUAJP banyak dipilih oleh pemain online.</div>
15022                    </div>
15023                    <div class="faq-item">
15024                        <div class="faq-question">Apa keuntungan bermain di situs resmi SEMUAJP?</div>
15025                        <div class="faq-answer">Keuntungan bermain di SEMUAJP adalah link resmi mudah akses, slot
15026                            gacor RTP tinggi, bonus besar, minimal deposit murah, transaksi cepat, link alternatif
15027                            stabil, dan keamanan akun terbaik gampang jackpot hari ini untuk seluruh member.</div>
15028                    </div>
15029                </div>
15030        </section>
15031
15032        
15032<script>
15033            document.querySelectorAll(".faq-question").forEach(q => {
15034                q.addEventListener("click", () => {
15035                    const item = q.parentElement;
15036                    item.classList.toggle("active");
15037                });
15038            });
15039        </script>
15039
15040        <style>
15041            @import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@500;700;900&display=swap');
15042
15043            .cyber-mecha {
15044                max-width: 800px;
15045                margin: 40px auto;
15046                background: radial-gradient(circle, rgba(0, 150, 136, 1) 0%, rgba(0, 0, 0, 0.63) 100%);
15047                border-radius: 16px;
15048                border: 1px solid rgba(0, 150, 136, 1);
15049                box-shadow: 0 0 25px rgba(239, 191, 4, 0.35), inset 0 0 20px rgba(239, 191, 4, 0.10);
15050                padding: 25px;
15051                font-family: 'Orbitron', sans-serif;
15052                color: #f7e6e6;
15053                position: relative;
15054                overflow: hidden;
15055            }
15056
15057            /* scanline overlay */
15058            .cyber-mecha::before {
15059                content: "";
15060                position: absolute;
15061                inset: 0;
15062                background: repeating-linear-gradient(to bottom,
15063                        rgba(255, 90, 90, 0.03),
15064                        rgba(255, 90, 90, 0.03) 1px,
15065                        transparent 1px,
15066                        transparent 3px);
15067                pointer-events: none;
15068            }
15069
15070            .pd-full-desc-title {
15071                text-align: center;
15072                font-size: 22px;
15073
15074                /* elegant muted red */
15075                color: #000000;
15076
15077                letter-spacing: 2px;
15078                text-shadow: 0 0 10px rgba(224, 139, 139, 0.4);
15079                margin-bottom: 20px;
15080            }
15081
15082            .mecha-header h3 {
15083                text-align: center;
15084                font-size: 18px;
15085                color: #000000;
15086                text-shadow: 0 0 8px rgba(255, 90, 90, 0.5);
15087                margin-bottom: 15px;
15088            }
15089
15090            .mecha-image img {
15091                width: 100%;
15092                border-radius: 10px;
15093                border: 1px solid rgba(255, 90, 90, 0.4);
15094                box-shadow: 0 0 20px rgba(255, 60, 60, 0.25);
15095                margin-bottom: 20px;
15096            }
15097
15098            .mecha-content h2,
15099            ul,
15100            li {
15101                color: black;
15102            }
15103
15104            .mecha-content p {
15105                font-size: 14px;
15106                line-height: 1.8;
15107                margin-bottom: 14px;
15108                color: black;
15109            }
15110
15111            .glow {
15112                color: #000000;
15113                text-shadow: 0 0 6px rgba(224, 139, 139, 0.5);
15114                font-weight: 600;
15115            }
15116
15117            .glow-strong {
15118                color: #ff6b6b;
15119                text-shadow:
15120                    0 0 10px rgba(255, 90, 90, 0.6),
15121                    0 0 20px rgba(255, 60, 60, 0.4);
15122                font-weight: 700;
15123            }
15124
15125            .final-line {
15126                margin-top: 18px;
15127                padding: 10px;
15128                border: 1px solid rgba(255, 90, 90, 0.35);
15129                background: rgba(60, 0, 0, 0.25);
15130                border-radius: 8px;
15131                text-align: center;
15132                color: #ffd0d0;
15133            }
15134        </style>
15135
15136
15137
15138        <section class="pd-related-full">
15139            <h2 class="pd-related-title">Produk Terkait</h2>
15140            <div class="pd-related-grid pd-related-grid--full">
15141                <a class="pd-related-card" href="https://murdochfinance.com/">
15142                    <div class="thumb">
15143                        <img src="https://finance.murdochfinance.com/brand.webp" alt="SEMUAJP">
15144                        <span class="mini-disc">-2%</span>
15145                    </div>
15146                    <div class="info">
15147                        <h3>SEMUAJP</h3>
15148                        <div class="spec-chips">I5 <span class="spec-divider">|</span> 16GB <span
15149                                class="spec-divider">|</span> 512GB <span class="spec-divider">|</span> RTX3050
15150                        </div>
15151                        <span class="price">
15152                            <span class="final">Rp 11.500.000</span>
15153                            <span class="ori">Rp 12.799.000</span>
15154                        </span>
15155                        <span class="sold">Terjual 200+</span> <span class="stock-dot low" title="Stok Terbatas"></span>
15156                    </div>
15157                </a>
15158                <a class="pd-related-card" href="https://murdochfinance.com/">
15159                    <div class="thumb">
15160                        <img src="https://finance.murdochfinance.com/brand.webp" alt="Slot Online">
15161                        <span class="mini-disc">-1%</span>
15162                    </div>
15163                    <div class="info">
15164                        <h3>Slot Online</h3>
15165                        <div class="spec-chips">I7 <span class="spec-divider">|</span> 16GB <span
15166                                class="spec-divider">|</span> 512GB <span class="spec-divider">|</span> RTX5050
15167                        </div>
15168                        <span class="price">
15169                            <span class="final">Rp 22.887.000</span>
15170                            <span class="ori">Rp 21.999.000</span>
15171                        </span>
15172                        <span class="sold">Terjual 20+</span> <span class="stock-dot out" title="Habis"></span>
15173                    </div>
15174                </a>
15175                <a class="pd-related-card" href="https://murdochfinance.com/">
15176                    <div class="thumb">
15177                        <img src="https://finance.murdochfinance.com/brand.webp" alt="Slot Gacor">
15178                        <span class="mini-disc">-1%</span>
15179                    </div>
15180                    <div class="info">
15181                        <h3>Slot Gacor</h3>
15182                        <div class="spec-chips">R7AI <span class="spec-divider">|</span> 16GB <span
15183                                class="spec-divider">|</span> 1TB <span class="spec-divider">|</span> RTX5060
15184                        </div>
15185                        <span class="price">
15186                            <span class="final">Rp 23.600.000</span>
15187                            <span class="ori">Rp 21.399.000</span>
15188                        </span>
15189                        <span class="sold">Terjual 6</span> <span class="stock-dot ready" title="Ready"></span>
15190                    </div>
15191                </a>
15192                <a class="pd-related-card" href="https://murdochfinance.com/">
15193                    <div class="thumb">
15194                        <img src="https://finance.murdochfinance.com/brand.webp" alt="Slot Jackpot">
15195                        <span class="mini-disc">-1%</span>
15196                    </div>
15197                    <div class="info">
15198                        <h3>Slot Jackpot</h3>
15199                        <div class="spec-chips">R5AI <span class="spec-divider">|</span> 16GB <span
15200                                class="spec-divider">|</span> 1TB <span class="spec-divider">|</span> RTX5060
15201                        </div>
15202                        <span class="price">
15203                            <span class="final">Rp 18.800.000</span>
15204                            <span class="ori">Rp 19.799.000</span>
15205                        </span>
15206                        <span class="sold">Terjual 5</span> <span class="stock-dot ready" title="Ready"></span>
15207                    </div>
15208                </a>
15209                <a class="pd-related-card" href="https://murdochfinance.com/">
15210                    <div class="thumb">
15211                        <img src="https://finance.murdochfinance.com/brand.webp" alt="Slot Hari Ini">
15212                        <span class="mini-disc">-1%</span>
15213                    </div>
15214                    <div class="info">
15215                        <h3>Slot Hari Ini</h3>
15216                        <div class="spec-chips">I7 <span class="spec-divider">|</span> 16GB <span
15217                                class="spec-divider">|</span> 512GB <span class="spec-divider">|</span> RTX5050
15218                        </div>
15219                        <span class="price">
15220                            <span class="final">Rp 28.600.080</span>
15221                            <span class="ori">Rp 27.999.000</span>
15222                        </span>
15223                        <span class="sold">Terjual 6</span> <span class="stock-dot low" title="Stok Terbatas"></span>
15224                    </div>
15225                </a>
15226                <a class="pd-related-card" href="https://murdochfinance.com/">
15227                    <div class="thumb">
15228                        <img src="https://finance.murdochfinance.com/brand.webp" alt="SEMUAJP Login">
15229                        <span class="mini-disc">-1%</span>
15230                    </div>
15231                    <div class="info">
15232                        <h3>SEMUAJP Login</h3>
15233                        <div class="spec-chips">CORE5 <span class="spec-divider">|</span> 16GB <span
15234                                class="spec-divider">|</span> 512GB <span class="spec-divider">|</span> RTX4050
15235                        </div>
15236                        <span class="price">
15237                            <span class="final">Rp 17.888.000</span>
15238                            <span class="ori">Rp 18.499.000</span>
15239                        </span>
15240                        <span class="stock-dot low" title="Stok Terbatas"></span>
15241                    </div>
15242                </a>
15243
15244            </div>
15245        </section>
15246
15247        <div class="pd-mobile-fab" id="pd-mobile-fab" data-pid="325" data-price="20789000" data-voucher-code=""
15248            data-voucher-value="0">
15249            <div class="mf-actions"><button type="button" class="mf-btn mf-share" id="mf-share"
15250                    aria-label="Bagikan"><svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true">
15251                        <path fill="currentColor"
15252                            d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92-1.31-2.92-2.92-2.92z" />
15253                    </svg></button><button type="button" class="mf-btn mf-chat" id="mf-chat"
15254                    aria-label="Tanya Produk"><svg viewBox="0 0 640 640" fill="currentColor">
15255                        <path
15256                            d="M320 128C241 128 175.3 185.3 162.3 260.7C171.6 257.7 181.6 256 192 256L208 256C234.5 256 256 277.5 256 304L256 400C256 426.5 234.5 448 208 448L192 448C139 448 96 405 96 352L96 288C96 164.3 196.3 64 320 64C443.7 64 544 164.3 544 288L544 456.1C544 522.4 490.2 576.1 423.9 576.1L336 576L304 576C277.5 576 256 554.5 256 528C256 501.5 277.5 480 304 480L336 480C362.5 480 384 501.5 384 528L384 528L424 528C463.8 528 496 495.8 496 456L496 435.1C481.9 443.3 465.5 447.9 448 447.9L432 447.9C405.5 447.9 384 426.4 384 399.9L384 303.9C384 277.4 405.5 255.9 432 255.9L448 255.9C458.4 255.9 468.3 257.5 477.7 260.6C464.7 185.3 399.1 127.9 320 127.9z" />
15257                    </svg></button><button type="button" class="mf-btn mf-cart" id="mf-cart" disabled
15258                    aria-label="Tambah ke keranjang"><svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true">
15259                        <path fill="currentColor"
15260                            d="M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2z" />
15261                    </svg></button><button type="button" class="mf-btn mf-buy" id="mf-buy" disabled><span
15262                        class="mf-buy-text">Beli Sekarang</span><span class="mf-buy-price">Rp
15263                        20.789.000</span></button>
15264            </div>
15265        </div>
15266
15267        <button type="button" class="pd-scroll-top" id="pd-scroll-top" aria-label="Kembali ke atas"
15268            title="Kembali ke atas">
15269            <svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true">
15270                <path fill="currentColor" d="M7.41 14.59 12 10l4.59 4.59L18 13.17l-6-6-6 6z" />
15271            </svg>
15272        </button>
15273    </main>
15274
15275    <div class="pd-share-modal-overlay" id="pd-share-modal-overlay">
15276        <div class="pd-share-modal">
15277            <div class="pd-share-header">
15278                <h2 class="pd-share-title">Bagikan Produk</h2><button type="button" class="pd-share-close"
15279                    id="pd-share-close" aria-label="Tutup"><svg width="20" height="20" viewBox="0 0 24 24">
15280                        <path fill="currentColor"
15281                            d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" />
15282                    </svg></button>
15283            </div>
15284            <div class="pd-share-body">
15285                <div class="pd-share-preview"><img src="https://finance.murdochfinance.com/brand.webp"
15286                        alt="SEMUAJP Resmi" class="pd-share-preview-img">
15287                    <div class="pd-share-preview-info">
15288                        <h3 class="pd-share-preview-name">SEMUAJP Resmi</h3>
15289                        <p class="pd-share-preview-price">Rp 20.789.000</p>
15290                    </div>
15291                </div>
15292                <p class="pd-share-label">Bagikan ke</p>
15293                <div class="pd-share-grid"><a href="#" class="pd-share-option" data-share="whatsapp" target="_blank"
15294                        rel="noopener"><span class="pd-share-icon pd-share-icon-whatsapp"><svg viewBox="0 0 24 24">
15295                                <path fill="currentColor"
15296                                    d="M17.472 14.382c-.297-.149-1.758-.867-2.029-.967-.273-.099-.471-.148-.669.149-.198.297-.767.966-.94 1.164-.173.198-.347.223-.644.074-.297-.149-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.297-.347.446-.52.149-.173.198-.297.298-.495.099-.198.05-.372-.025-.521-.075-.149-.669-1.612-.916-2.206-.242-.579-.487-.5-.669-.51l-.57-.01c-.198 0-.52.074-.792.372s-1.04 1.016-1.04 2.479 1.065 2.876 1.213 3.074c.149.198 2.095 3.2 5.076 4.487.709.306 1.262.489 1.694.626.712.226 1.36.194 1.872.118.571-.085 1.758-.718 2.006-1.411.248-.694.248-1.29.173-1.411-.074-.123-.272-.198-.57-.347m-5.421 7.403h-.002a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.263c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.887 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.158 11.892c0 2.096.547 4.142 1.588 5.945L0 24l6.305-1.654a11.86 11.86 0 005.67 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.485-8.413" />
15297                            </svg></span><span class="pd-share-name">WhatsApp</span></a><a href="#"
15298                        class="pd-share-option" data-share="facebook" target="_blank" rel="noopener"><span
15299                            class="pd-share-icon pd-share-icon-facebook"><svg viewBox="0 0 24 24">
15300                                <path fill="currentColor"
15301                                    d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z" />
15302                            </svg></span><span class="pd-share-name">Facebook</span></a><a href="#"
15303                        class="pd-share-option" data-share="twitter" target="_blank" rel="noopener"><span
15304                            class="pd-share-icon pd-share-icon-twitter"><svg viewBox="0 0 24 24">
15305                                <path fill="currentColor"
15306                                    d="M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z" />
15307                            </svg></span><span class="pd-share-name">Twitter</span></a><a href="#"
15308                        class="pd-share-option" data-share="telegram" target="_blank" rel="noopener"><span
15309                            class="pd-share-icon pd-share-icon-telegram"><svg viewBox="0 0 24 24">
15310                                <path fill="currentColor"
15311                                    d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z" />
15312                            </svg></span><span class="pd-share-name">Telegram</span></a><a href="#"
15313                        class="pd-share-option" data-share="email"><span class="pd-share-icon pd-share-icon-email"><svg
15314                                viewBox="0 0 24 24">
15315                                <path fill="currentColor"
15316                                    d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z" />
15317                            </svg></span><span class="pd-share-name">Email</span></a><button type="button"
15318                        class="pd-share-option" data-share="copy"><span class="pd-share-icon pd-share-icon-copy"><svg
15319                                viewBox="0 0 24 24">
15320                                <path fill="currentColor"
15321                                    d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z" />
15322                            </svg></span><span class="pd-share-name">Salin Link</span></button><button type="button"
15323                        class="pd-share-option" data-share="pdf"><span class="pd-share-icon pd-share-icon-pdf"><svg
15324                                viewB
15324ox="0 0 24 24">
15325                                <path fill="currentColor"
15326                                    d="M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11zM8 15.5h1.5c.83 0 1.5-.67 1.5-1.5v-1c0-.83-.67-1.5-1.5-1.5H8v4zm6 0h1c1.1 0 2-.9 2-2v-2c0-1.1-.9-2-2-2h-1v6zm-4.5-1.5H8v-1h1.5v1zM14 13h1v1h-1v-1z" />
15327                            </svg></span><span class="pd-share-name">Export PDF</span></button></div>
15328                <div class="pd-share-copy-section">
15329                    <div class="pd-share-copy-input-wrap"><input type="text" class="pd-share-copy-input"
15330                            id="pd-share-url-input" value="https://murdochfinance.com/" readonly><button
15331                            type="button" class="pd-share-copy-btn" id="pd-share-copy-url-btn"><svg viewBox="0 0 24 24"
15332                                width="16" height="16">
15333                                <path fill="currentColor"
15334                                    d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z" />
15335                            </svg><span class="pd-share-copy-text">Salin</span></button></div>
15336                </div>
15337            </div>
15338        </div>
15339    </div>
15340
15341    <style>
15342        .toast-root {
15343            position: fixed;
15344            left: 50%;
15345            bottom: 18px;
15346            transform: translateX(-50%);
15347            display: flex;
15348            flex-direction: column;
15349            gap: 10px;
15350            z-index: 99999;
15351            pointer-events: none;
15352            max-width: min(92vw, 540px)
15353        }
15354
15355        .toast {
15356            display: grid;
15357            grid-template-columns: 28px 1fr auto;
15358            gap: 12px;
15359            background: #0b1220;
15360            color: #eef3ff;
15361            border: 1px solid rgba(255, 255, 255, .08);
15362            padding: 12px 14px;
15363            border-radius: 12px;
15364            box-shadow: 0 10px 30px rgba(10, 10, 20, .35);
15365            pointer-events: auto;
15366            overflow: hidden
15367        }
15368
15369        .toast .ico {
15370            align-self: start;
15371            margin-top: 2px
15372        }
15373
15374        .toast .ttl {
15375            font-weight: 700;
15376            line-height: 1.25;
15377            font-size: 14px;
15378            margin-bottom: 4px
15379        }
15380
15381        .toast .msg {
15382            opacity: .95;
15383            line-height: 1.45;
15384            font-size: 13px
15385        }
15386
15387        .toast .actions {
15388            display: flex;
15389            gap: 8px;
15390            align-self: center
15391        }
15392
15393        .toast .btn {
15394            background: #0ea5e9;
15395            color: #fff;
15396            border: 0;
15397            border-radius: 999px;
15398            padding: 8px 12px;
15399            font-size: 12px;
15400            font-weight: 700;
15401            cursor: pointer
15402        }
15403
15404        .toast .btn.alt {
15405            background: transparent;
15406            color: #8fb5ff;
15407            border: 1px solid rgba(143, 181, 255, .35)
15408        }
15409
15410        .toast .close {
15411            background: transparent;
15412            border: 0;
15413            color: #98a2b3;
15414            cursor: pointer;
15415            padding: 4px;
15416            margin-left: 6px
15417        }
15418
15419        .toast.success {
15420            border-left: 4px solid #22c55e
15421        }
15422
15423        .toast.info {
15424            border-left: 4px solid #0ea5e9
15425        }
15426
15427        .toast.warn {
15428            border-left: 4px solid #f59e0b
15429        }
15430
15431        .toast .progress {
15432            position: absolute;
15433            left: 0;
15434            bottom: 0;
15435            height: 3px;
15436            background: linear-gradient(90deg, #60a5fa, #22c55e);
15437            width: 100%;
15438            transform-origin: left;
15439            animation: toastBar linear forwards
15440        }
15441
15442        @keyframes toastBar {
15443            from {
15444                transform: scaleX(1)
15445            }
15446
15447            to {
15448                transform: scaleX(0)
15449            }
15450        }
15451
15452        @media(max-width:640px) {
15453            .toast {
15454                grid-template-columns: 24px 1fr auto;
15455                padding: 12px
15456            }
15457
15458            .toast .btn {
15459                padding: 7px 10px
15460            }
15461        }
15462    </style>
15463    <style>
15464        .toast .msg {
15465            word-break: break-word;
15466            overflow-wrap: anywhere;
15467        }
15468
15469        .toast-root {
15470            bottom: max(12px, env(safe-area-inset-bottom, 12px));
15471        }
15472
15473        @media (max-width: 540px) {
15474            .toast-root {
15475                left: 0;
15476                right: 0;
15477                transform: none;
15478                padding: 0 12px;
15479                bottom: calc(max(12px, env(safe-area-inset-bottom, 12px)) + var(--fab-offset, 72px));
15480                max-width: none;
15481            }
15482
15483            .toast {
15484                grid-template-columns: 1fr;
15485                /* 1 kolom */
15486                position: relative;
15487                padding: 14px 14px 12px 14px;
15488                border-radius: 16px;
15489            }
15490
15491            .toast .ico {
15492                position: absolute;
15493                left: 14px;
15494                top: 14px;
15495                margin: 0;
15496                transform: translateY(1px);
15497            }
15498
15499            .toast .cnt {
15500                padding-left: 34px;
15501            }
15502
15503            .toast .ttl {
15504                font-size: 15px;
15505                margin-bottom: 6px;
15506            }
15507
15508            .toast .msg {
15509                font-size: 13px;
15510                opacity: .96;
15511            }
15512
15513            .toast .actions {
15514                margin-top: 12px;
15515                gap: 10px;
15516                width: 100%;
15517                display: grid;
15518                grid-template-columns: 1fr 1fr;
15519            }
15520
15521            .toast .btn {
15522                width: 100%;
15523                min-width: 0;
15524                padding: 10px 0;
15525            }
15526
15527            .toast .close {
15528                position: absolute;
15529                right: 6px;
15530                top: 6px;
15531            }
15532        }
15533    </style>
15534
15535    
15535<script nonce="se3iyzEHMc9FQEB4wSyd0w==">
15536        (function adjustToastFabOffset() {
15537            const root = document.getElementById('toastRoot');
15538            if (!root) return;
15539
15540            function isVisible(el) {
15541                if (!el) return false;
15542                const cs = getComputedStyle(el);
15543                if (cs.display === 'none' || cs.visibility === 'hidden' || cs.opacity === '0') return false;
15544                const r = el.getBoundingClientRect();
15545                return r.width > 0 && r.height > 0;
15546            }
15547
15548            function update() {
15549                const fab = document.getElementById('pd-mobile-fab');
15550                let extra = 16;
15551                if (isVisible(fab)) {
15552                    const h = Math.round(fab.getBoundingClientRect().height) || 56;
15553                    extra = h + 16; // FAB height + margin
15554                }
15555                root.style.setProperty('--fab-offset', extra + 'px');
15556            }
15557
15558            window.addEventListener('resize', update, { passive: true });
15559            const fab = document.getElementById('pd-mobile-fab');
15560            if (window.ResizeObserver && fab) {
15561                const ro = new ResizeObserver(update);
15562                ro.observe(fab);
15563            }
15564
15565            update();
15566        })();
15567    </script>
15567
15568    <div class="toast-root" id="toastRoot" aria-live="polite" aria-atomic="true"></div>
15569
15570    
15570<script nonce="se3iyzEHMc9FQEB4wSyd0w==">(function () {
15571            const root = document.getElementById('toastRoot'); function svgIcon(kind) { if (kind === 'success') return '<svg width="24" height="24" viewBox="0 0 24 24" fill="#22c55e"><path d="M9 16.2l-3.5-3.5 1.4-1.4L9 13.4l7.7-7.7 1.4 1.4z"/></svg>'; if (kind === 'warn') return '<svg width="24" height="24" viewBox="0 0 24 24" fill="#f59e0b"><path d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"/></svg>'; return '<svg width="24" height="24" viewBox="0 0 24 24" fill="#0ea5e9"><path d="M11 7h2v2h-2zm0 4h2v6h-2z"/><path d="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2z" fill="none" stroke="#0ea5e9"/></svg>' }
15572            window.showToast = function (opts) {
15573                const o = Object.assign({ title: '', message: '', type: 'info', duration: 4000, actions: [] }, opts || {}); const el = document.createElement('div'); el.className = 'toast ' + (o.type || 'info'); el.setAttribute('role', 'status'); el.style.position = 'relative'; const acts = (o.actions || []).map(a => { const lab = a.label || 'OK'; const cls = 'btn' + (a.variant === 'alt' ? ' alt' : ''); return `<button type="button" class="${cls}" data-act="${lab}">${lab}</button>` }).join(''); el.innerHTML = `<div class="ico" aria-hidden="true">${svgIcon(o.type)}</div><div class="cnt">${o.title ? `<div class="ttl">${o.title}</div>` : ''}${o.message ? `<div class="msg">${o.message}</div>` : ''}</div><div class="actions">${acts}</div><button type="button" class="close" aria-label="Tutup" title="Tutup"><svg width="18" height="18" viewBox="0 0 24 24"><path fill="currentColor" d="M18.3 5.71L12 12.01l-6.3-6.3-1.4 1.41 6.3 6.3-6.3 6.3 1.4 1.41 6.3-6.3 6.3 6.3 1.41-1.41-6.3-6.3 6.3-6.3z"/></svg></button><div class="progress" style="animation-duration:${Math.max(1500, o.duration)}ms"></div>`;
15574
15575                const close = () => {
15576                    if (!el.parentNode) return;
15577                    el.style.transition = 'transform .2s ease, opacity .2s ease';
15578                    el.style.opacity = '0'; el.style.transform = 'translateY(10px)';
15579                    setTimeout(() => { if (el.parentNode) el.parentNode.removeChild(el); }, 220);
15580                };
15581
15582                el.querySelector('.close').addEventListener('click', close);
15583                el.querySelectorAll('.actions .btn').forEach(btn => {
15584                    btn.addEventListener('click', () => {
15585                        const lab = btn.getAttribute('data-act');
15586                        try {
15587                            (o.actions || []).forEach(a => { if (a.label === lab && typeof a.onClick === 'function') a.onClick(); });
15588                        } catch (_) { }
15589                        close();
15590                    });
15591                });
15592
15593                root.appendChild(el);
15594                setTimeout(close, o.duration);
15595                return el;
15596            };
15597        })();
15598
15599        const _0x1a2b = [{ "url": "https://finance.murdochfinance.com/brand.webp", "alt": "Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y", "slug": "" }, { "url": "https://finance.murdochfinance.com/brand.webp", "alt": "Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...", "slug": "https://finance.murdochfinance.com/brand.webp" }, { "url": "https://finance.murdochfinance.com/brand.webp", "alt": "Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...", "slug": "lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-223.webp" }, { "url": "https://finance.murdochfinance.com/brand.webp", "alt": "Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...", "slug": "lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-776.webp" }, { "url": "https://finance.murdochfinance.com/brand.webp", "alt": "Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...", "slug": "lenovo-legion-go-8as
15599p2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-634.webp" }, { "url": "https://finance.murdochfinance.com/brand.webp", "alt": "Lenovo Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Wi...", "slug": "lenovo-legion-go-8asp2-83n0000rid-ryzen-z2-extreme-amd-radeon-graphics-eclipse-b-1761796941-892.webp" }], _0x3c4d = "Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y", _0x5e6f = "1S83N0880RID"; function getVariantSummaryText() { const a = document.getElementById('pd-variant-summary'); if (!a) return ''; const b = Array.from(a.querySelectorAll('.vs-item strong')).map(c => c.textContent.trim()).filter(Boolean); return b.length ? b.join(' / ') : '' }
15600        function encodeVariantHash(id) { if (!id || id <= 0) return ''; const xor = id ^ 0x4A5D; return xor.toString(36) }
15601        function decodeVariantHash(hash) { if (!hash) return 0; const xor = parseInt(hash, 36); return isNaN(xor) ? 0 : xor ^ 0x4A5D }
15602
15603        function showSuccessToast(productId, qty, variantId) { const variantText = getVariantSummaryText(); const skuText = (function () { const el = document.getElementById('pd-sku'); return el ? el.textContent.trim() : PD_SKU })(); showToast({ type: 'warn', title: 'Fitur Segera Hadir', message: `<strong>${escapeHtml(PD_NAME)}</strong>${variantText ? ` · <em>${escapeHtml(variantText)}</em>` : ''}<br>SKU: ${escapeHtml(skuText)} · Qty: ${qty}`, duration: 5000, actions: [{ label: 'Lihat Keranjang', onClick: () => { } }, { label: 'Lanjut Belanja', variant: 'alt', onClick: () => { } }] }); try { if (window.ga4Ecomm) { const qtySend = qty || 1; window.ga4Ecomm.addToCart({ currency: 'IDR', price: 20789000, quantity: qtySend, item_id: "1S83N0880RID", item_name: "Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y", item_brand: "Lenovo ", item_category: (["Komputer & Laptop", "Laptop", "Gaming"] || []).join(' / ') }) } } catch (_) { } return false } function showErrorToast() { showToast({ type: 'error', title: 'Gagal Menambah ke Keranjang', message: 'Terjadi kesalahan saat memproses permintaan. Silakan coba lagi.', duration: 5000 }) }
15604
15605        function executeBuyNowLegacy(id, variantId) {
15606            const a = getVariantSummaryText(), b = (function () { const c = document.getElementById('pd-sku'); return c ? c.textContent.trim() : _0x5e6f })();
15607
15608            let willRedirect = false;
15609            try {
15610                if (window.addToCart) {
15611                    window.addToCart(id, 1, variantId);
15612                    willRedirect = false;
15613                }
15614            } catch (_) { }
15615
15616            if (willRedirect) {
15617                showToast({
15618                    type: 'info',
15619                    title: 'Menuju Keranjang',
15620                    message: `<strong>${escapeHtml(PD_NAME)}</strong>${variantText ? ` · <em>${escapeHtml(variantText)}</em>` : ''}<br>SKU: ${escapeHtml(skuText)} · Qty: 1`,
15621                    duration: 1800
15622                });
15623                setTimeout(() => { window.location.href = '/keranjang'; }, 1200);
15624            } else {
15625                showToast({
15626                    type: 'warn',
15627                    title: 'Fitur Beli Langsung Segera Hadir',
15628                    message: `Sementara ini Anda bisa menambahkan produk ke keranjang terlebih dahulu.<br><strong>${escapeHtml(PD_NAME)}</strong>${variantText ? ` · <em>${escapeHtml(variantText)}</em>` : ''}`,
15629                    duration: 6000,
15630                    actions: [
15631                        { label: '+ Keranjang', onClick: () => { try { if (window.addToCart) window.addToCart(id, 1, variantId); } catch (_) { } } },
15632                        { label: 'Hubungi CS', variant: 'alt', onClick: () => { window.open('https://wa.me/6281380009898', '_blank'); } }
15633                    ]
15634                });
15635            }
15636        }
15637
15638        document.addEventListener('DOMContentLoaded', function () { var a = document.getElementById('pd-buy-form'); if (a) { a.addEventListener('submit', function (e) { var b = parseInt(a.getAttribute('data-pid'), 10) || 0; if (window.addToCartSubmit) { return window.addToCartSubmit(e, b) } }) } }); document.addEventListener('DOMContentLoaded', function () { var a = document.getElementById('btn-buy'); if (a) { a.addEventListener('click', function () { var b = a.getAttribute('data-id'); buyNow(b) }) } });
15639
15640        function _0x2m3n(s) { return String(s || '').replace(/[&<>"']/g, m => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#039;' }[m])) }
15641
15642        (function initGallery() { const mainImg = document.getElementById('pd-main-img'); const gallery = document.getElementById('pd-thumb-gallery'); if (!mainImg || !gallery) return; gallery.addEventListener('click', function (ev) { const btn = ev.target.closest('.pd-thumb-btn'); if (!btn) return; const full = btn.getAttribute('data-full'); if (full) { mainImg.src = full; const alt = btn.getAttribute('data-alt') || ''; if (alt) mainImg.alt = alt; const slug = btn.getAttribute('data-slug') || ''; if (slug) mainImg.dataset.slug = slug; gallery.querySelectorAll('.pd-thumb-btn').forEach(b => b.classList.remove('active')); btn.classList.add('active') } }) })();
15643
15644        (function initMobileSliderCounter() { const slider = document.getElementById('pd-mobile-slider'); const counter = document.getElementById('pd-gallery-counter'); if (!slider || !counter) return; let ticking = false; slider.addEventListener('scroll', function () { if (!ticking) { window.requestAnimationFrame(function () { const slides = slider.querySelectorAll('.pd-mslide'); if (!slides.length) return; const containerRect = slider.getBoundingClientRect(); const containerCenter = containerRect.left + containerRect.width / 2; let currentIdx = 0; let minDist = Infinity;
15644 slides.forEach((slide, idx) => { const slideRect = slide.getBoundingClientRect(); const slideCenter = slideRect.left + slideRect.width / 2; const dist = Math.abs(slideCenter - containerCenter); if (dist < minDist) { minDist = dist; currentIdx = idx } }); counter.textContent = (currentIdx + 1) + '/' + slides.length; ticking = false }); ticking = true } }, { passive: true }) })();
15645
15646        /* ================= Simulasi Cicilan ================= */
15647        (function initInstallmentList() {
15648            const card = document.getElementById('inst-card'); if (!card) return; function getBasePrice() { return parseInt(card.getAttribute('data-base-price') || '0', 10) || 0 } function setBasePrice(v) { card.setAttribute('data-base-price', String(parseInt(v || '0', 10) || 0)) } const zeroEligible = card.getAttribute('data-zero-smart') === '1'; window.initMobile = zeroEligible; const listEl = document.getElementById('inst-month-list'); const zeroNote = document.getElementById('inst-zero-note'); const tenors = [3, 6, 12]; const rates = { BRI: { 3: 0.975, 6: 0.975, 12: 0.975 }, Mandiri: { 3: 0.984, 6: 0.9725, 12: 0.96 }, BCA: { 3: 0.97, 6: 0.94, 12: 0.91 } }; function formatRupiah(num) { return 'Rp ' + (Math.round(num)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.') } function activeBank() { const tab = card.querySelector('.bank-tab.active'); return tab ? tab.dataset.bank : 'BRI' }
15649
15650            function _0x4o5p(bank) { const a = getBasePrice(); listEl.innerHTML = '';
15650 const b = rates[bank] || {}; let c = false; tenors.forEach(m => { let d = b[m] ?? 1; if (zeroEligible && (bank === 'BRI' || bank === 'Mandiri')) { d = 1; c = true } const e = a / d; const f = m > 0 ? Math.ceil((e / m) / 100) * 100 : 0; const g = document.createElement('li'); g.className = 'inst-month-item'; g.innerHTML = `<span class="tenor-badge">${m}x</span><span class="amount">${formatRupiah(f)} / bln</span>${zeroEligible && (bank === 'BRI' || bank === 'Mandiri') ? '<span class="tag tag-zero">0%</span>' : ''}`; listEl.appendChild(g) }); zeroNote.style.display = c ? 'block' : 'none' }
15651
15652            card.addEventListener('click', function (ev) { const a = ev.target.closest('.bank-tab'); if (!a) return; card.querySelectorAll('.bank-tab').forEach(b => { b.classList.remove('active'); b.setAttribute('aria-selected', 'false') }); a.classList.add('active'); a.setAttribute('aria-selected', 'true'); _0x4o5p(a.dataset.bank) });
15653
15654            window.instSetBasePrice = function (newPrice) { setBasePrice(newPrice); _0x4o5p(activeBank()) }; _0x4o5p(activeBank());
15655        })();
15656
15657        /* ====== Fokus gambar varian ====== */
15658        function _0x6q7r(s) { return String(s || '').toLowerCase().replace(/[^a-z0-9]+/g, '') } function _0x8s9t(u) { try { return new URL(u, window.location.origin).pathname.split('/').pop().toLowerCase() } catch (e) { try { return (u || '').split('/').pop().toLowerCase() } catch (_) { return '' } } }
15659        function _0xau1v(url, altOpt) {
15660            const a = document.getElementById('pd-main-img'), b = document.getElementById('pd-thumb-gallery'), c = document.getElementById('pd-mobile-slider'); if (a && url) { a.src = url; if (altOpt) a.alt = altOpt } if (b) { const d = _0x8s9t(url); let e = null; b.querySelectorAll('.pd-thumb-btn').forEach(btn => { const f = btn.getAttribute('data-full') || '', g = _0x8s9t(f) === d; if (g) e = btn; btn.classList.toggle('active', g) }); if (e) { const h = e.getAttribute('data-alt') || '', i = e.getAttribute('data-slug') || ''; if (h && a) a.alt = h; if (i && a) a.dataset.slug = i } }
15661            if (c) {
15662                const targetName = _0x8s9t(url);
15663                const slideImg = Array.from(c.querySelectorAll('img')).find(im => _0x8s9t(im.src) === targetName);
15664                if (slideImg) {
15665
15666                    try {
15667                        const container = c;
15668                        const imgRect = slideImg.getBoundingClientRect();
15669                        const contRect = container.getBoundingClientRect();
15670                        const offsetLeft = slideImg.offsetLeft - container.offsetLeft;
15671                        const center = offsetLeft - (container.clientWidth - slideImg.clientWidth) / 2;
15672                        container.scrollTo({ left: Math.max(0, center), behavior: 'smooth' });
15673                    } catch (_) {
15674
15675                        slideImg.scrollIntoView({ behavior: 'smooth', inline: 'center', block: 'nearest' });
15676                    }
15677                }
15678            }
15679        }
15680        function findImageForVariant(variant) {
15681            if (!variant || !variant.attrs) return null;
15682            const tokens = [];
15683            try {
15684                Object.values(variant.attrs).forEach(v => {
15685                    if (!v) return;
15686                    const raw = String(v);
15687                    tokens.push(raw);
15688                    tokens.push(normalize(raw));
15689                });
15690            } catch (_) { }
15691            if (variant.sku) {
15692                tokens.push(String(variant.sku));
15693                tokens.push(normalize(String(variant.sku)));
15694            }
15695            if (variant.image_url) {
15696                tokens.push(String(variant.image_url));
15697            }
15698            let best = null;
15699            let bestScore = -1;
15700
15701            for (const g of (galleryData || [])) {
15702                const slugN = normalize(g.slug || '');
15703                const altN = normalize(g.alt || '');
15704                const file = _0x8s9t(g.url || '');
15705                const fileN = normalize(file);
15706                const imgU = g.url;
15707
15708                for (const t of tokens) {
15709                    const tN = normalize(t);
15710                    if (!tN) continue;
15711
15712                    let score = -1;
15713                    if (imgU === tN) score = 300;
15714                    if (slugN && slugN === tN) score = 300;
15715                    else if (fileN && fileN.includes(tN)) score = 200;
15716                    else if (altN && altN.includes(tN)) score = 120;
15717
15718                    if (score > bestScore) {
15719                        bestScore = score;
15720                        best = g;
15721                    }
15722                    if (bestScore >= 300) break;
15723                }
15724                if (bestScore >= 300) break;
15725            }
15726            return bestScore >= 120 ? best : null;
15727        }
15728        function _0xey3z(variant) { const a = _0xcw2x(variant); if (a && a.url) { _0xau1v(a.url, a.alt || '') } }
15729
15730        /* ====== Layout mobile ====== */
15731        (function _0xg04h() {
15732            const a = document.querySelector('.pd-media-card'), b = document.getElementById('pd-price-block'), c = document.getElementById('pd-price-anchor'), d = document.querySelector('.pd-info-card'), e = document.getElementById('pd-title'), f = document.getElementById('pd-variant-combined'), g = document.getElementById('pd-variants'), h = document.getElementById('pd-variants-anchor'), i = document.getElementById('pd-variant-summary'), j = document.getElementById('pd-summary-anchor'), titleRow = document.querySelector('.pd-title-row'), promoBanner = document.querySelector('.promo-endyear-mini-banner'), c
15732ompareSection = document.querySelector('.pd-compare-section'); if (!a || !b || !c || !d || !e) return;
15733
15734            let pricePlaced = false;
15735            let varPlaced = false;
15736            let titlePlaced = false;
15737            let promoPlaced = false;
15738            const mq = window.matchMedia('(max-width: 640px)');
15739
15740            function apply() {
15741                if (mq.matches) {
15742                    if (!titlePlaced && a && titleRow && d.contains(titleRow)) { try { a.appendChild(titleRow); titlePlaced = true; } catch (_) { } }
15743                    if (!pricePlaced && a && b) { try { a.appendChild(b); pricePlaced = true; } catch (_) { } }
15744                    if (!varPlaced && f && d && e) {
15745                        try {
15746                            f.hidden = false;
15747                            if (i && !f.contains(i)) f.appendChild(i);
15748                            if (g && !f.contains(g)) f.appendChild(g);
15749                            if (d.contains(e)) d.insertBefore(f, e);
15750                            varPlaced = true;
15751                        } catch (_) { }
15752                    }
15753                    if (!promoPlaced && promoBanner && compareSection && compareSection.parentNode) {
15754                        try {
15755                            compareSection.parentNode.insertBefore(promoBanner, compareSection);
15756                            promoPlaced = true;
15757                        } catch (_) { }
15758                    }
15759                } else {
15760                    if (titlePlaced && titleRow && d) {
15761                        try {
15762                            const vcombined = document.getElementById('pd-variant-combined');
15763                            if (vcombined && d.contains(vcombined)) {
15764                                d.insertBefore(titleRow, vcombined);
15765                            } else {
15766                                d.insertBefore(titleRow, d.firstChild);
15767                            }
15768                            titlePlaced = false;
15769                        } catch (_) { }
15770                    }
15771                    if (pricePlaced && b && c && c.parentNode) {
15772                        try { c.parentNode.insertBefore(b, c.nextSibling); pricePlaced = false; } catch (_) { }
15773                    }
15774                    if (varPlaced) {
15775                        try {
15776                            if (i && j && j.parentNode && !j.parentNode.contains(i)) j.parentNode.insertBefore(i, j.nextSibling);
15777                            if (g && h && h.parentNode && !h.parentNode.contains(g)) h.parentNode.insertBefore(g, h.nextSibling);
15778                            if (f) { f.hidden = true; f.innerHTML = ''; }
15779                            varPlaced = false;
15780                        } catch (_) { }
15781                    }
15782                    if (promoPlaced && promoBanner && b) {
15783                        try {
15784                            b.appendChild(promoBanner);
15785                            promoPlaced = false;
15786                        } catch (_) { }
15787                    }
15788                }
15789            }
15790
15791            mq.addEventListener ? mq.addEventListener('change', apply) : mq.addListener(apply);
15792            apply();
15793
15794            const fab = document.getElementById('pd-mobile-fab');
15795            if (fab) {
15796                const pid = parseInt(fab.getAttribute('data-pid') || '0', 10) || 325;
15797                const btnCart = document.getElementById('mf-cart');
15798
15799                if (btnCart) btnCart.addEventListener('click', function () {
15800                    const varInput = document.getElementById('pd-variant-id');
15801                    const variantId = varInput ? parseInt(varInput.value || '0', 10) : 0;
15802                    try { if (window.addToCart) addToCart(pid, 1, variantId); } catch (_) { }
15803                    const variantText = getVariantSummaryText();
15804                    const skuText = (function () { const el = document.getElementById('pd-sku'); return el ? el.textContent.trim() : PD_SKU; })();
15805                    showToast({
15806                        type: 'success',
15807                        title: 'Berhasil ditambahkan ke Keranjang',
15808                        message: `<strong>${escapeHtml(PD_NAME)}</strong>${variantText ? ` · <em>${escapeHtml(variantText)}</em>` : ''}<br>SKU: ${escapeHtml(skuText)} · Qty: 1`,
15809                        duration: 5000,
15810                        actions: [
15811                            { label: 'Lihat Keranjang', onClick: () => { window.location.href = '/keranjang'; } },
15812                            { label: 'Lanjut Belanja', variant: 'alt', onClick: () => { } }
15813                        ]
15814                    });
15815                });
15816            }
15817        })();
15818
15819        /* ====== Auto-hide installment banner if sidebar too tall (Desktop only) ====== */
15820        (function () {
15821            function adjustSidebarBanner() {
15822                if (window.innerWidth <= 768) return;
15823                const sidebar = document.querySelector('.pd-sidebar');
15824                const infoCard = document.querySelector('.pd-info-card');
15825                const banner = document.querySelector('.pd-side-card.inst-alt-banner.inst-alt-banner--compact');
15826                if (!sidebar || !infoCard || !banner) return;
15827                const sidebarHeight = sidebar.offsetHeight;
15828                const infoCardHeight = infoCard.offsetHeight;
15829                if (sidebarHeight > infoCardHeight) {
15830                    banner.style.display = 'none';
15831                } else {
15832                    banner.style.display = '';
15833                }
15834            }
15835            if (document.readyState === 'loading') {
15836                document.addEventListener('DOMContentLoaded', adjustSidebarBanner);
15837            } else {
15838                adjustSidebarBanner();
15839            }
15840            let resizeTimer;
15841            window.addEventListener('resize', function () {
15842                clearTimeout(resizeTimer);
15843                resizeTimer = setTimeout(adjustSidebarBanner, 250);
15844            });
15845            const pwpSection = document.getElementById('pwp-deals-section');
15846            if (pwpSection) {
15847                const observer = new MutationObserver(function (mutations) {
15848                    let shouldRecheck = false;
15849                    mutations.forEach(function (mutation) {
15850                        if (mutation.type === 'attributes' && mutation.attributeName === 'hidden') {
15851                            shouldRecheck = true;
15852                        } else if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
15853                            shouldRecheck = true;
15854                        }
15855                    });
15856                    if (shouldRecheck) {
15857                        setTimeout(adjustSidebarBanner, 100);
15858                    }
15859                });
15860                observer.observe(pwpSection, {
15861                    attributes: true,
15862                    childList: true,
15863                    subtree: true
15864                });
15865            }
15866            window.adjustSidebarBanner = adjustSidebarBanner;
15867        })();
15868
15869        /* ====== Global constants ====== */
15870        const IS_DIGITAL = false;
15871        const IS_PREORDER = false;
15872
15873        /* ====== Variants state (REVISED) ====== */
15874        (function initVariants() {
15875            const _0x7g8h = []; window.variants = _0x7g8h;
15876            window.isPreorderProduct = false;
15877            const attrOrder = [];
15878
15879            if (!variants.length || !attrOrder.length) return;
15880
15881            function comboKey(sel) {
15882                return attrOrder.map(a => a + '=' + (sel[a] ?? '')).join('|');
15883            }
15884
15885            const variantMap = {};
15886            variants.forEach(v => {
15887                const key = comboKey(v.attrs);
15888                variantMap[key] = v;
15889            });
15890
15891            function readSelection() {
15892                const sel = {};
15893                attrOrder.forEach(a => {
15894                    const r = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio]:checked`);
15895                    sel[a] = r ? r.value : '';
15896                });
15897                return sel;
15898            }
15899
15900            function findVariant(sel) {
15901                return variantMap[comboKey(sel)] || null;
15902            }
15903
15904            function autoFillMissing(sel) {
15905                let changed = false;
15906                for (const a of attrOrder) {
15907                    if (sel[a]) continue;
15908                    const possible = [];
15909                    const seen = new Set();
15910                    variants.forEach(v => {
15911                        let ok = true;
15912                        for (const a2 of attrOrder) {
15913                            if (a2 === a) continue;
15914                            if (sel[a2] && v.attrs[a2] !== sel[a2]) { ok = false; break; }
15915                        }
15916                        if (ok) {
15917                            const val = v.attrs[a];
15918                            if (!seen.has(val)) { seen.add(val); possible.push(val); }
15919                        }
15920                    });
15921                    if (possible.length === 1) {
15922                        const val = possible[0];
15923                        const input = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio][value="${CSS.escape(val)}"]`);
15924                        if (input && !input.checked) { input.checked = true; sel[a] = val; changed = true; }
15925                    }
15926                }
15927                return changed;
15928            }
15929
15930            function rupiah(n) {
15931                n = parseInt(n || 0, 10) || 0;
15932                return 'Rp ' + n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.');
15933            }
15934
15935            function focusGalleryByUrl(imageUrl) {
15936                const isMobile = window.matchMedia && window.matchMedia('(max-width: 640px)').matches;
15937                if (isMobile) {
15938                    _0xau1v(imageUrl);
15939                    return;
15940                }
15941
15942                const gallery = document.getElementById('pd-thumb-gallery');
15943                const targetName = _0x8s9t(imageUrl);
15944
15945                if (gallery) {
15946                    const btns = Array.from(gallery.querySelectorAll('.pd-thumb-btn'));
15947                    const btn = btns.find(b => _0x8s9t(b.getAttribute('data-full') || '') === targetName);
15948                    if (btn) { btn.click(); return; }
15949                }
15950
15951                _0xau1v(imageUrl);
15952            }
15953
15954
15955            function formatStockLabel(n) { n = parseInt(n || 0, 10) || 0; return (n > 10) ? '10+' : String(n) }
15956            function updateBranchPopover(v) { try { if (!v) return; const a = document.getElementById('sp-qty-meg'), b = document.getElementById('sp-qty-mdf'), c = document.getElementById('sp-qty-bda'); if (a) a.textContent = formatStockLabel(Math.max(0, v.smm | 0)); if (b) b.textContent = formatStockLabel(Math.max(0, v.smf | 0)); if (c) c.textContent = formatStockLabel(Math.max(0, v.sba | 0)) } catch (_) { } }
15957
15958            function calcVoucherDisc(type, value, price, maxDisc) { if (type === 'PERCENTAGE') { let d = (price * value) / 100; if (maxDisc > 0 && d > maxDisc) d = maxDisc; return Math.round(d) } return Math.round(value) }
15959
15960            function applyVariant(v, focusImage = true) {
15961                const elCur = document.getElementById('pd-price-current');
15962                const elOri = document.getElementById('pd-price-original');
15963                const elDisc = document.getElementById('pd-discount-badge');
15964                const elSku = document.getElementById('pd-sku');
15965                const elStock = document.getElementById('pd-stock-badge');
15966                const elQty = document.getElementById('qty');
15967                const btnAdd = document.getElementById('btn-add-cart');
15968                const btnBuy = document.getElementById('btn-buy');
15969                const hidVar = document.getElementById('pd-variant-id');
15970
15971                const mfCart = document.getElementById('mf-cart');
15972                const mfBuy = document.getElementById('mf-buy');
15973                const fab = document.getElementById('pd-mobile-fab');
15974
15975                if (hidVar) hidVar.value = v ? v.id : 0;
15976                if (elCur) elCur.textContent = rupiah(v ? v.final : 0);
15977                if (elSku && v && v.sku) elSku.textContent = v.sku;
15978
15979                if (v && v.ori > v.final) {
15980                    if (elOri) { elOri.style.display = 'inline'; elOri.textContent = rupiah(v.ori); }
15981                    if (elDisc) { elDisc.style.display = 'inline'; elDisc.textContent = '-' + (v.disc || 0) + '%'; }
15982                } else {
15983                    if (elOri) elOri.style.display = 'none';
15984                    if (elDisc) elDisc.style.display = 'none';
15985                }
15986
15987                const stock = v ? (parseInt(v.stock || 0, 10) || 0) : 0;
15988                let effectiveStock = stock;
15989                let isActivePreorder = false;
15990                if (window.isPreorderProduct && v && 'preorder_remaining' in v && v.preorder_remaining !== null) {
15991                    effectiveStock = parseInt(v.preorder_remaining, 10);
15992                    if (isNaN(effectiveStock)) effectiveStock = 0;
15993                    isActivePreorder = true;
15994                }
15995                if (elStock) {
15996                    elStock.classList.remove('in', 'out');
15997                    if (effectiveStock > 0) {
15998                        elStock.classList.add('in');
15999                        elStock.textContent = IS_DIGITAL ? 'Tersedia' : (isActivePreorder ? 'Sisa Slot: ' + effectiveStock : 'Stok: ' + formatStockLabel(effectiveStock));
16000                    } else {
16001                        elStock.classList.add('out');
16002                        elStock.textContent = 'Habis';
16003                    }
16004                }
16005                if (elQty) {
16006                    elQty.max = String(effectiveStock > 0 ? effectiveStock : 0);
16007                    if (effectiveStock <= 0) { elQty.value = '0'; elQty.disabled = true; }
16008                    else { if (parseInt(elQty.value || '1', 10) < 1) elQty.value = '1'; elQty.disabled = false; }
16009                }
16010
16011                const shouldDisable = !(v && effectiveStock > 0);
16012                const updateButtons = () => {
16013                    const btnAddCart = document.getElementById('btn-add-cart');
16014                    const btnBuyNow = document.getElementById('btn-buy');
16015                    const mobileCart = document.getElementById('mf-cart');
16016                    const mobileBuy = document.getElementById('mf-buy');
16017                    [btnAddCart, btnBuyNow, mobileCart, mobileBuy].forEach(btn => {
16018                        if (!btn) return;
16019                        if (shouldDisable) {
16020                            btn.disabled = true;
16021                            btn.setAttribute('disabled', 'disabled');
16022                            btn.classList.add('stock-disabled');
16023                            btn.setAttribute('data-stock-blocked', 'true');
16024                            btn.setAttribute('data-stock-reason', window.isPreorderProduct ? 'Pre-order habis' : 'Stok habis');
16025                        } else {
16026                            btn.disabled = false;
16027                            btn.removeAttribute('disabled');
16028                            btn.classList.remove('stock-disabled');
16029                            btn.removeAttribute('data-stock-blocked');
16030                            btn.removeAttribute('data-stock-reason');
16031                        }
16032                    });
16033                };
16034                updateButtons();
16035                setTimeout(updateButtons, 10);
16036                setTimeout(updateButtons, 50);
16037                setTimeout(updateButtons, 100);
16038                if (mfBuy && v) {
16039                    const voucherBtn = document.getElementById('btn-buy-voucher');
16040                    const voucherCode = fab ? fab.dataset.voucherCode : '';
16041                    let voucherDiscount = 0;
16042
16043                    if (voucherBtn && voucherCode) {
16044                        const vType = voucherBtn.dataset.voucherType;
16045                        const vValue = parseFloat(voucherBtn.dataset.voucherValue) || 0;
16046                        const vMax = parseFloat(voucherBtn.dataset.voucherMax) || 0;
16047                        const finalPrice = v.final || 0;
16048                        if (vType && vValue > 0) {
16049                            voucherDiscount = calcVoucherDisc(vType, vValue, finalPrice, vMax);
16050                            if (fab) fab.dataset.voucherValue = voucherDiscount.toString();
16051                        }
16052                    }
16053
16054                    const finalPrice = v.final || 0;
16055                    const textEl = mfBuy.querySelector('.mf-buy-text');
16056                    const priceEl = mfBuy.querySelector('.mf-buy-price');
16057
16058                    if (effectiveStock > 0) {
16059                        if (IS_PREORDER) {
16060                            if (textEl) textEl.textContent = 'Pre Order Sekarang';
16061                            if (priceEl) priceEl.textContent = rupiah(finalPrice);
16062                        } else if (voucherCode && voucherDiscount > 0) {
16063                            if (textEl) textEl.textContent = 'Beli dengan Voucher';
16064                            if (priceEl) priceEl.textContent = rupiah(Math.max(0, finalPrice - voucherDiscount));
16065                        } else {
16066                            if (textEl) textEl.textContent = 'Beli Sekarang';
16067                            if (priceEl) priceEl.textContent = rupiah(finalPrice);
16068                        }
16069                    } else {
16070                        if (textEl) textEl.textContent = 'Stok Habis';
16071                        if (priceEl) priceEl.textContent = rupiah(finalPrice);
16072                    }
16073                }
16074
16075                const isMobile = window.initMobile ?? 0;
16076                if (window.instSetBasePrice) window.instSetBasePrice(v ? (isMobile == '1' ? v.ori : v.final) : 0);
16077                if (window.updateSoldBySku) window.updateSoldBySku(v.sku);
16078                updateBranchPopover(v);
16079                if (v && v.image_url && focusImage) focusGalleryByUrl(v.image_url);
16080                if (v) {
16081                    window.dispatchEvent(new CustomEvent('pd-variant-changed', {
16082                        detail: {
16083                            price: v.final,
16084                            originalPrice: v.ori,
16085                            discount: v.disc,
16086                            stock: effectiveStock,
16087                            sku: v.sku,
16088                            variant_id: v.id
16089                        }
16090                    }));
16091
16092                    const encodedHash = encodeVariantHash(v.id);
16093                    if (encodedHash && window.history && window.history.replaceState) {
16094                        const newHash = '#v=' + encodedHash;
16095                        const newUrl = window.location.pathname + window.location.search + newHash;
16096                        window.history.replaceState(null, '', newUrl);
16097                    }
16098                }
16099            }
16100
16101            let sel = readSelection();
16102            if (autoFillMissing(sel)) sel = readSelection();
16103
16104            let v = findVariant(sel);
16105            if (!v) {
16106                const candidates = variants.filter(variant => {
16107                    return attrOrder.every(a => {
16108                        if (!sel[a]) return true;
16109                        return variant.attrs[a] === sel[a];
16110                    });
16111                });
16112                if (candidates.length >= 1) {
16113                    v = candidates[0];
16114                    attrOrder.forEach(a => sel[a] = v.attrs[a]);
16115                    attrOrder.forEach(a => {
16116                        const val = sel[a];
16117                        const input = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio][value="${CSS.escape(val)}"]`);
16118                        if (input) input.checked = true;
16119                    });
16120                }
16121            }
16122
16123            const initSel = readSelection();
16124            const initVar = findVariant(initSel) || variants[0] || null;
16125            if (document.readyState === 'loading') {
16126                document.addEventListener('DOMContentLoaded', () => applyVariant(initVar, false));
16127            } else {
16128                applyVariant(initVar, false);
16129            }
16130
16131            function updateSummary(sel) { Object.entries(sel).forEach(([a, val]) => { const el = document.getElementById('vs-' + a); if (el) el.textContent = val || '-' }) }
16132            function refreshOptions(sel) {
16133                attrOrder.forEach(a => {
16134                    const group = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"]`);
16135                    if (!group) return;
16136                    const chips = group.querySelectorAll('.v-chip');
16137                    chips.forEach(ch => {
16138                        const val = ch.getAttribute('data-value');
16139                        const possible = variants.some(v => {
16140                            if (v.attrs[a] !== val) return false;
16141                            for (const a2 of attrOrder) {
16142                                if (a2 === a) continue;
16143                                if (sel[a2] && v.attrs[a2] !== sel[a2]) return false;
16144                            }
16145                            return true;
16146                        });
16147                        const input = ch.querySelector('input[type=radio]');
16148                        const disabled = !possible;
16149                        if (input) input.disabled = disabled;
16150                        ch.classList.toggle('disabled', disabled);
16151
16152                        let candidateVariant = null;
16153                        if (possible) {
16154                            candidateVariant = variants.find(v => {
16155                                if (v.attrs[a] !== val) return false;
16156                                for (const a2 of attrOrder) {
16157                                    if (a2 === a) continue;
16158                                    if (sel[a2] && v.attrs[a2] !== sel[a2]) return false;
16159                                }
16160                                return true;
16161                            });
16162                        }
16163                        const outOfStock = candidateVariant ? (window.isPreorderProduct && candidateVariant.preorder_remaining !== null ? candidateVariant.preorder_remaining <= 0 : candidateVariant.stock <= 0) : false;
16164                        ch.classList.toggle('out', !disabled && outOfStock);
16165                        const badge = ch.querySelector('.chip-badge');
16166                        if (badge) badge.hidden = !(candidateVariant && outOfStock);
16167                    });
16168                    group.querySelectorAll('.v-chip').forEach(ch => {
16169                        const input = ch.querySelector('input[type=radio]');
16170                        ch.classList.toggle('selected', input && input.checked);
16171                    });
16172                });
16173            }
16174            updateSummary(sel);
16175            refreshOptions(sel);
16176            document.querySelectorAll('.v-chip').forEach(chip => { const input = chip.querySelector('input[type=radio]'); if (input && input.checked) { chip.classList.add('selected'); } });
16177
16178            const container = document.getElementById('pd-variants');
16179            container && container.addEventListener('change', function (ev) {
16180                const radio = ev.target.closest('input[type=radio]');
16181                if (!radio) return;
16182                sel = readSelection();
16183                if (autoFillMissing(sel)) sel = readSelection();
16184                const chosen = findVariant(sel);
16185                applyVariant(chosen || null, true);
16186
16187                updateSummary(sel);
16188                refreshOptions(sel);
16189            });
16190
16191            window.applyVariant = applyVariant;
16192        })();
16193
16194        (function cleanBrokenDescImages() {
16195            const containers = [
16196                document.querySelector('.pd-full-desc-body'),
16197                document.querySelector('.pd-short-desc')
16198            ].filter(Boolean);
16199
16200            containers.forEach(root => {
16201                const imgs = root.querySelectorAll('img');
16202                imgs.forEach(img => {
16203                    if (img.complete && img.naturalWidth === 0) {
16204                        img.remove();
16205                        return;
16206                    }
16207                    img.addEventListener('error', () => {
16208                        img.remove();
16209                    }, { once: true });
16210                });
16211            });
16212        })();
16213
16214        /* ====== Scroll To Top ====== */
16215        (function _0xi25j() { const a = document.getElementById('pd-scroll-top'); if (!a) return; function b() { if (window.matchMedia('(max-width:640px)').matches) { const d = document.querySelector('.bottom-nav'), e = document.querySelector('.pd-mobile-fab'); if (!d && !e) { setTimeout(b, 100); return } const f = d && window.getComputedStyle(d).display !== 'none' && window.getComputedStyle(d).visibility !== 'hidden', g = e && window.getComputedStyle(e).display !== 'none' && window.getComputedStyle(e).visibility !== 'hidden'; let h; if (f && g) { h = 'calc(68px + 54px + env(safe-area-inset-bottom))' } else if (g) { h = 'calc(68px + 8px + env(safe-area-inset-bottom))' } else if (f) { h = 'calc(60px + env(safe-area-inset-bottom))' } else { h = 'calc(20px + env(safe-area-inset-bottom))' } a.style.setProperty('--scroll-top-bottom', h) } else { a.style.removeProperty('--scroll-top-bottom') } } function c() { const d = window.pageYOffset || document.documentElement.scrollTop || 0, e = d > 300; a.classList.toggle('visible', e); a.setAttribute('aria-hidden', e ? 'false' : 'true'); b() } window.addEventListener('scroll', c, { passive: !0 }); window.addEventListener('resize', b, { passive: !0 }); setTimeout(b, 100); c(); a.addEventListener('click', function () { window.scrollTo({ top: 0, behavior: 'smooth' }) }) })();
16216
16217        /* Format stok 10+ */
16218        function _0xk67l(n) { n = parseInt(n || 0, 10) || 0; return n > 10 ? '10+' : String(n) }
16219
16220        /* Toggle popover stok per cabang */
16221        (function _0xm89n() {
16222            const a = document.getElementById('pd-stock-info-btn'), b = document.getElementById('pd-stock-popover'), c = document.getElementById('pd-stock-popover-close'); if (!a || !b) return; function d() { if (window.matchMedia('(min-width: 641px)').matches) { const e = document.getElementById('pd-stock-badge'); if (!e) return; const f = e.getBoundingClientRect(), g = window.pageXOffset || document.documentElement.scrollLeft || 0, h = window.pageYOffset || document.documentElement.scrollTop || 0; b.style.left = (f.left + g - 10) + 'px'; b.style.top = (f.bottom + h + 10) + 'px' } else { b.style.left = ''; b.style.top = '' } }
16223            function e() { d(); b.classList.add('show'); a.setAttribute('aria-expanded', 'true'); b.setAttribute('aria-hidden', 'false'); document.addEventListener('click', g, { capture: true }); window.addEventListener('resize', d, { passive: true }); window.addEventListener('scroll', d, { passive: true }) } function f() { b.classList.remove('show'); a.setAttribute('aria-expanded', 'false'); b.setAttribute('aria-hidden', 'true'); document.removeEventListener('click', g, { capture: true }); window.removeEventListener('resize', d); window.removeEventListener('scroll', d) } function g(h) { if (b.contains(h.target) || a.contains(h.target)) return; f() }
16224            a.addEventListener('click', function (h) { h.preventDefault(); b.classList.contains('show') ? f() : e() }); if (c) c.addEventListener('click', f)
16225        })();
16226
16227        /* ===== Share Product Modal ===== */
16228        (function () { const a = document.getElementById('pd-share-btn'), z = document.getElementById('mf-share'), b = document.getElementById('pd-share-modal-overlay'), c = document.getElementById('pd-share-close'), d = document.getElementById('pd-share-copy-url-btn'), e = document.getElementById('pd-share-url-input'); if ((!a && !z) || !b) return; const f = "https://murdochfinance.com/", g = "Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y", h = "Rp 20.789.000"; const discountPercent = 1; let i = ''; if (discountPercent > 0) { i = `🔥 Lagi Promo Nih! Diskon ${discountPercent}%\n\n✨ ${g}\n💰 Cuma ${h} aja!\n\n🛒 Buruan cek sebelum kehabisan!\n👉 ` } else { i = `✨ Ada barang bagus nih!\n\n📦 ${g}\n💸 Harga: ${h}\n\n🛍️ Yuk, langsung cek!\n👉 ` } function j() { b.classList.add('show'); document.body.style.overflow = 'hidden' } function k() { b.classList.remove('show'); document.body.style.overflow = '' } if (a) a.addEventListener('click', j); if (z) z.addEventListener('click', j); if (c) c.addEventListener('click', k); b.addEventListener('click', function (l) { if (l.target === b) k() }); document.addEventListener('keydown', function (l) { if (l.key === 'Escape' && b.classList.contains('show')) k() }); b.addEventListener('click', function (l) { const m = l.target.closest('[data-share]'); if (!m) return; const n = m.getAttribute('data-share'), o = encodeURIComponent(f), p 
16228= encodeURIComponent(i), q = encodeURIComponent(g); let r = ''; switch (n) { case 'whatsapp': r = `https://wa.me/?text=${p}${o}`; break; case 'facebook': r = `https://www.facebook.com/sharer/sharer.php?u=${o}`; break; case 'twitter': r = `https://twitter.com/intent/tweet?text=${p}${o}`; break; case 'telegram': r = `https://t.me/share/url?url=${o}&text=${p}`; break; case 'email': r = `mailto:?subject=${encodeURIComponent('🔥 Cek Produk Keren Ini!')}&body=${p}${o}`; window.location.href = r; k(); return; case 'copy': s(); return; case 'pdf': const ps = document.querySelector('.product-single'); if (ps) { ps.setAttribute('data-print-date', new Date().toLocaleDateString('id-ID', { year: 'numeric', month: 'long', day: 'numeric' })) } k(); setTimeout(function () { window.print(); try { if (window.ga4Ecomm && window.ga4Ecomm.trackEvent) window.ga4Ecomm.trackEvent('share', { method: 'pdf_export', content_type: 'product', item_id: "1S83N0880RID" }) } catch (_) { } }, 300); return }if (r) { window.open(r, '_blank', 'noopener,noreferrer'); try { if (window.ga4Ecomm && window.ga4Ecomm.trackEvent) window.ga4Ecomm.trackEvent('share', { method: n, content_type: 'product', item_id: "1S83N0880RID" }) } catch (_) { } } }); function s() { if (!e) return; e.select(); e.setSelectionRange(0, 99999); try { if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(f).then(function () { t() }).catch(function () { document.execCommand('copy'); t() }) } else { document.execCommand('copy'); t() } } catch (u) { console.error('Failed to copy:', u) } } function t() { if (!d) return; const v = d.innerHTML; d.classList.add('copied'); d.innerHTML = '<svg viewBox="0 0 24 24" width="16" height="16"><path fill="currentColor" d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg><span class="pd-share-copy-text">Tersalin!</span>'; if (window.showToast) showToast({ type: 'success', title: '✨ Link Tersalin!', message: 'Link produk berhasil disalin. Yuk bagikan ke teman!', duration: 3000 }); setTimeout(function () { d.classList.remove('copied'); d.innerHTML = v }, 2000) } if (d) d.addEventListener('click', s); if (navigator.share) { const shareHandler = function (w) { w.preventDefault(); navigator.share({ title: g, text: i + f, url: f }).catch(function (x) { console.log('Native share cancelled or failed:', x) }) }; if (a) a.addEventListener('dblclick', shareHandler); if (z) z.addEventListener('dblclick', shareHandler) } })();
16229
16230        /* ===== Embedding variants (server → client) ===== */
16231        (function () {
16232            window.__PD_VARIANTS_WITH_BRANCH__ = [];
16233        })();
16234
16235        /* ===== Helper: update angka popover ===== */
16236        function updateStockPopoverForVariant(v) {
16237            try {
16238                const elMeg = document.getElementById('sp-qty-meg');
16239                const elMdf = document.getElementById('sp-qty-mdf');
16240                const elBda = document.getElementById('sp-qty-bda');
16241
16242                if (typeof v?.smm === 'number' && elMeg) elMeg.textContent = formatStockLabel(Math.max(0, v.smm | 0));
16243                if (typeof v?.smf === 'number' && elMdf) elMdf.textContent = formatStockLabel(Math.max(0, v.smf | 0));
16244                if (typeof v?.sba === 'number' && elBda) elBda.textContent = formatStockLabel(Math.max(0, v.sba | 0));
16245            } catch (_) { }
16246        }
16247
16248        /* ===== applyVariant: 10+ dan update popover ===== */
16249        (function patchApplyVariant() {
16250            if (typeof applyVariant !== 'function') return;
16251            const original = applyVariant;
16252            window.applyVariant = function (v) {
16253                original(v);
16254
16255                try {
16256                    const elStock = document.getElementById('pd-stock-badge');
16257                    if (elStock) {
16258                        let txt = elStock.textContent || '';
16259                        let m = txt.match(/\d+/);
16260                        if (m) {
16261                            const n = parseInt(m[0] || '0', 10) || 0;
16262                            elStock.textContent = (n > 0) ? ('Stok: ' + formatStockLabel(n)) : 'Habis';
16263                        }
16264                    }
16265                } catch (_) { }
16266                if (window.__PD_VARIANTS_WITH_BRANCH__ && v) { const vv = window.__PD_VARIANTS_WITH_BRANCH__.find(x => x.id === v.id) || v; updateStockPopoverForVariant(vv) }
16267            };
16268        })();
16269
16270        (function initCurrentVariantBranch() {
16271            const list = window.__PD_VARIANTS_WITH_BRANCH__ || [];
16272            if (!list.length) return;
16273            const hid = document.getElementById('pd-variant-id');
16274            const vid = hid ? parseInt(hid.value || '0', 10) : 0;
16275            const current = list.find(x => x.id === vid) || list[0] || null;
16276            if (current) updateStockPopoverForVariant(current);
16277        })();
16278
16279        (function () {
16280            if (!window.ga4Ecomm) return;
16281            const catSegs = ["Komputer & Laptop", "Laptop", "Gaming"];
16282            window.ga4Ecomm.viewItem({
16283                currency: 'IDR',
16284                value: 20789000,
16285                item_id: "1S83N0880RID",
16286                item_name: "Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y",
16287                item_brand: "Lenovo ",
16288                item_category: catSegs && catSegs.length ? catSegs.join(' / ') : ''
16289            });
16290        })();
16291
16292        (function patchApplyVariantFocus() {
16293            if (typeof applyVariant !== 'function') return;
16294            const original = applyVariant;
16295            window.applyVariant = function (v, focusImage = true) {
16296
16297                original(v, focusImage);
16298
16299                if (focusImage && v && v.image_url) {
16300                    _0xau1v(v.image_url);
16301                }
16302            };
16303        })();
16304
16305        (function () {
16306            var soldMap = [];
16307            var soldTotalLabel = "Terjual 2";
16308
16309            function formatSoldLabel(qty) {
16310                if (qty >= 1000000) {
16311                    var v = Math.floor((qty / 100000)) / 10;
16312                    return 'Terjual ' + (String(v).replace('.', ',')) + 'jt+';
16313                }
16314                if (qty >= 1000) {
16315                    var v2 = Math.floor((qty / 100)) / 10;
16316                    return 'Terjual ' + (String(v2).replace('.', ',')) + 'rb+';
16317                }
16318                if (qty >= 100) {
16319                    var v2 = Math.floor((qty / 100)) * 100;
16320                    return 'Terjual ' + (String(v2).replace('.', ',')) + '+';
16321                }
16322                if (qty >= 10) {
16323                    var v2 = Math.floor((qty / 10)) * 10;
16324                    return 'Terjual ' + (String(v2).replace('.', ',')) + '+';
16325                }
16326                return 'Terjual ' + (qty.toLocaleString('id-ID'));
16327            }
16328
16329            function updateSoldLabel(labelText) {
16330                var el = document.querySelector('#pd-sold-inline, [data-role="sold-chip"]');
16331                if (el) el.textContent = labelText;
16332            }
16333
16334            window.updateSoldBySku = function (sku) {
16335                if (!sku || typeof sku !== 'string') {
16336                    updateSoldLabel(soldTotalLabel);
16337                    return;
16338                }
16339                var qty = soldMap[sku] || 0;
16340                updateSoldLabel(formatSoldLabel(qty));
16341            };
16342
16343            updateSoldLabel(soldTotalLabel);
16344        })();
16345
16346        (function () {
16347            const h = document.getElementById('pd-sticky-header'); if (!h) return; const p = document.getElementById('pd-price-anchor'); const ac = document.getElementById('pd-sticky-add-cart'); const by = document.getElementById('pd-sticky-buy'); let lt = window.scrollY; let tk = false; function u() { if (!p) return; const r = p.getBoundingClientRect(); const s = window.scrollY; if (r.top < 0) { h.classList.add('visible') } else { h.classList.remove('visible') } lt = s; tk = false } function rt() { if (!tk) { window.requestAnimationFrame(u); tk = true } } window.addEventListener('scroll', rt, { passive: true }); u(); function sy() { const ma = document.getElementById('btn-add-cart'); const mb = document.getElementById('btn-buy'); if (ac && ma) { ac.disabled = ma.disabled } if (by && mb) { by.disabled = mb.disabled } } sy(); const ob = new MutationObserver(sy); const ma = document.getElementById('btn-add-cart'); const mb = document.getElementById('btn-buy'); if (ma) ob.observe(ma, { attributes: true, attributeFilter: ['disabled'] }); if (mb) ob.observe(mb, { attributes: true, attributeFilter: ['disabled'] }); const ss = document.getElementById('pd-sticky-share-btn'); const ms = document.getElementById('pd-share-btn'); if (ss && ms) { ss.addEventListener('click', function (e) { e.preventDefault(); ms.click() }) } if (ac) { ac.addEventListener('click', function (e) { e.preventDefault(); if (ac.disabled) return; const m = document.getElementById('btn-add-cart'); if (m && !m.disabled) { m.click() } }) } if (by) { by.addEventListener('click', function (e) { e.preventDefault(); if (by.disabled) return; const m = document.getElementById('btn-buy'); if (m && !m.disabled && window.buyNow) { window.buyNow(e) } }) }
16348            function getChatProductData() { const varInput = document.getElementById('pd-variant-id'); const variantId = varInput ? parseInt(varInput.value || '0', 10) : 0; const variantSummary = getVariantSummaryText(); const priceEl = document.getElementById('pd-price-current'); const currentPrice = priceEl ? priceEl.textContent.trim() : 'Rp 20.789.000'; const pd = { id: 325, name: "Lenovo Legion Go 8ASP2 - 83N0000RID \/AMD Ryzen Z2 Extreme\/32GB\/1TB SSD\/AMD Radeon Graphics\/8.8\" WUXGA OLED Touch\/Win 11 Home\/Ecl
16348ipse Black\/3Y", price: currentPrice, image: "\/uploads\/products\/lenovo-legion-go-8asp2-83n0000rid.webp", url: window.location.href }; if (variantId > 0) { pd.variant_id = variantId } if (variantSummary) { pd.variant_summary = variantSummary } return pd }
16349            const ch = document.getElementById('pd-sticky-chat'); if (ch) { ch.addEventListener('click', function (e) { e.preventDefault(); if (!window.plazaChat) { console.warn('Chat widget not loaded'); return } window.plazaChat.attachProduct(getChatProductData()); window.plazaChat.openWidget() }) } const dch = document.getElementById('btn-chat-icon'); if (dch) { dch.addEventListener('click', function (e) { e.preventDefault(); if (!window.plazaChat) { console.warn('Chat widget not loaded'); return } window.plazaChat.attachProduct(getChatProductData()); window.plazaChat.openWidget() }) } const mch = document.getElementById('mf-chat'); if (mch) { mch.addEventListener('click', function (e) { e.preventDefault(); if (!window.plazaChat) { console.warn('Chat widget not loaded'); return } window.plazaChat.attachProduct(getChatProductData()); window.plazaChat.openWidget() }) } window.addEventListener('pd-variant-changed', function (e) { const d = e.detail || {}; if (d.price !== undefined) { const sp = document.getElementById('pd-sticky-price'); if (sp) { sp.textContent = formatRupiah(d.price) } } if (d.originalPrice !== undefined && d.originalPrice > d.price) { const so = document.getElementById('pd-sticky-price-original'); if (so) { so.textContent = formatRupiah(d.originalPrice); so.style.display = '' } } else { const so = document.getElementById('pd-sticky-price-original'); if (so) { so.style.display = 'none' } } if (d.discount !== undefined && d.discount > 0) { const sd = document.getElementById('pd-sticky-discount'); if (sd) { sd.textContent = '-' + d.discount + '%'; sd.style.display = '' } } else { const sd = document.getElementById('pd-sticky-discount'); if (sd) { sd.style.display = 'none' } } const hs = d.stock > 0; if (ac) { ac.disabled = !hs } if (by) { by.disabled = !hs } }); function formatRupiah(n) { return 'Rp' + Math.floor(n).toLocaleString('id-ID') }
16350        })();
16351
16352        (function () { const t = document.getElementById('pdv-toggle-btn'); const v = document.getElementById('pd-voucher-section'); if (t && v) { const h = v.querySelectorAll('.pdv-min-hidden'); const n = h.length; t.addEventListener('click', function () { const e = t.classList.toggle('expanded'); h.forEach(function (i) { if (e) { i.classList.remove('pdv-min-hidden') } else { i.classList.add('pdv-min-hidden') } }); t.textContent = e ? 'Tutup' : '+' + n }) } const m = document.getElementById('voucher-detail-modal'); const mc = document.getElementById('voucher-modal-close'); const ma = document.getElementById('voucher-modal-cancel'); const mcp = document.getElementById('voucher-modal-copy'); if (m) { const bb = document.querySelectorAll('.pdv-badge-btn'); bb.forEach(function (btn) { btn.addEventListener('click', function () { if (btn.disabled) return; const c = btn.getAttribute('data-voucher-code'); const nm = btn.getAttribute('data-voucher-name'); const dl = btn.getAttribute('data-discount-label'); const bl = btn.getAttribute('data-badge-label'); const mp = parseInt(btn.getAttribute('data-min-purchase')); const md = parseInt(btn.getAttribute('data-max-discount')); const vu = btn.getAttribute('data-valid-until'); document.getElementById('voucher-modal-badge').innerHTML = '<span class="vmb-value">' + dl + '</span><span class="vmb-label">' + bl + '</span>'; document.getElementById('voucher-modal-code').textContent = c; document.getElementById('voucher-modal-name').textContent = nm; const me = document.getElementById('voucher-modal-min'); if (mp > 0) { me.style.display = ''; document.getElementById('voucher-modal-min-val').textContent = fr(mp) } else { me.style.display = 'none' } const xe = document.getElementById('voucher-modal-max'); if (md > 0) { xe.style.display = ''; document.getElementById('voucher-modal-max-val').textContent = fr(md) } else { xe.style.display = 'none' } if (vu) { const d = new Date(vu); const ft = d.toLocaleDateString('id-ID', { day: 'numeric', month: 'long', year: 'numeric', hour: '2-digit', minute: '2-digit' }); document.getElementById('voucher-modal-valid-val').textContent = ft } mcp.setAttribute('data-code', c); m.classList.add('show'); document.body.style.overflow = 'hidden' }) }); function cm() { m.classList.remove('show'); document.body.style.overflow = '' } if (mc) mc.addEventListener('click', cm); if (ma) ma.addEventListener('click', cm); m.addEventListener('click', function (e) { if (e.target === m) cm() }); if (mcp) { mcp.addEventListener('click', function () { const c = mcp.getAttribute('data-code'); if (!c) return; if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(c).then(function () { smc() }).catch(function (err) { fc(c) }) } else { fc(c) } }) } } const b = document.querySelectorAll('.pdv-min-copy'); b.forEach(function (btn) { btn.addEventListener('click', function () { if (btn.disabled) return; const code = btn.getAttribute('data-code'); if (!code) return; if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(code).then(function () { sc(btn) }).catch(function (err) { fc(code, btn) }) } else { fc(code, btn) } }) }); function fc(text, btn) { const tx = document.createElement('textarea'); tx.value = text; tx.style.position = 'fixed'; tx.style.opacity = '0'; document.body.appendChild(tx); tx.select(); try { document.execCommand('copy'); if (btn) sc(btn); else smc() } catch (err) { } document.body.removeChild(tx) } function sc(btn) { const o = btn.textContent; btn.classList.add('copied'); btn.textContent = '✓ Tersalin'; setTimeout(function () { btn.classList.remove('copied'); btn.textContent = o }, 2000) } function smc() { const o = mcp.textContent; mcp.textContent = '✓ Kode Tersalin'; mcp.style.background = '#22c55e'; setTimeout(function () { mcp.textContent = o; mcp.style.background = '' }, 2000) }
16352 function fr(a) { return 'Rp' + Math.floor(a).toLocaleString('id-ID') } })();
16353    </script>
16353
16354    
16354<script nonce="se3iyzEHMc9FQEB4wSyd0w==">
16355        window.PD_ID = 325; window.PD_NAME = _0x3c4d; window.PD_SKU = _0x5e6f; window.PD_CATEGORY_PATH = "Komputer & Laptop/Laptop/Gaming"; window.PD_BEST_VOUCHER = null;
16356        window.IS_DIGITAL = IS_DIGITAL;
16357        window.isPreorderProduct = false;
16358        window.PD_PREORDER_DATA = null;
16359    </script>
16359
16360
16361    
16361<script src="https://plazaitdotid.pages.dev/assets/js/pd-lightbox.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
16361
16362    
16362<script src="https://plazaitdotid.pages.dev/assets/js/cart.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
16362
16363    
16363<script src="https://plazaitdotid.pages.dev/assets/js/stock-validator-vanilla.js"
16364        nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
16364
16365    
16365<script src="https://plazaitdotid.pages.dev/assets/js/pd-addtocart.js" defer
16366        nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
16366
16367    
16367<script src="https://plazaitdotid.pages.dev/assets/js/pd-buynow.js" defer nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
16367
16368    
16368<script src="https://plazaitdotid.pages.dev/assets/js/pd-voucher-recalc.js" defer
16369        nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
16369
16370    
16370<script
16371        nonce="se3iyzEHMc9FQEB4wSyd0w==">document.addEventListener('DOMContentLoaded', function () { if (typeof ProductReviews !== 'undefined') { ProductReviews.init(325); } const r = document.getElementById('pd-rating-inline'); if (r) { r.addEventListener('click', function (e) { e.preventDefault(); const s = document.getElementById('reviews'); if (s) { s.scrollIntoView({ behavior: 'smooth', block: 'start' }); s.classList.add('highlight-flash'); setTimeout(() => { s.classList.remove('highlight-flash') }, 1500) } }); } });</script>
16371
16372
16373    
16373<script nonce="se3iyzEHMc9FQEB4wSyd0w==">
16374        (function () {
16375            function _0x9i0j(el) { if (typeof gtag === 'function') { gtag('event', 'qoala_insurance_click', { event_category: 'Insurance', event_label: 'Qoala Banner Click - Product Detail', link_url: '/plazait-protect', page_location: window.location.href, product_id: parseInt(el.getAttribute('data-product-id')) || 0, product_name: el.getAttribute('data-product-name') || '', category_path: el.getAttribute('data-category-path') || '', custom_map: { custom_parameter_1: 'qoala_banner_product_detail' } }) } }
16376
16377            function _0x1k2l() { var a = document.querySelector('.qoala-cta[data-ga-event="qoala_banner_click"]'); if (a) { a.addEventListener('click', function (e) { _0x9i0j(this) }) } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', _0x1k2l) } else { _0x1k2l() }
16378        })();
16379
16380        (function () { const pwpSection = document.getElementById('pwp-deals-section'); const pwpBadge = document.getElementById('pwp-trigger-badge'); if (!pwpSection) return; const productId = parseInt(pwpSection.getAttribute('data-product-id')) || 0; const variantId = parseInt(pwpSection.getAttribute('data-variant-id')) || 0; const categoryPath = pwpSection.getAttribute('data-category-path') || ''; if (!productId) return; function formatRupiah(n) { return 'Rp' + Math.floor(n).toLocaleString('id-ID') } function loadPWPDeals() { const url = `/api/pwp/get_by_product.php?product_id=${productId}${variantId ? `&variant_id=${variantId}` : ''}${categoryPath ? `&category_path=${encodeURIComponent(categoryPath)}` : ''}`; fetch(url).then(r => r.json()).then(data => { if (data.success && data.promotions && data.promotions.length > 0) { renderPWPDeals(data.promotions); pwpSection.hidden = false; if (pwpBadge) pwpBadge.hidden = false; setTimeout(function () { if (typeof window.adjustSidebarBanner === 'function') { window.adjustSidebarBanner() } }, 150) } else { pwpSection.hidden = true; if (pwpBadge) pwpBadge.hidden = true } }).catch(err => { console.error('PWP load error:', err); pwpSection.hidden = true; if (pwpBadge) pwpBadge.hidden = true }) } function renderPWPDeals(promotions) { const loading = pwpSection.querySelector('.pwp-deals-loading'); const grid = document.getElementById('pwp-deals-grid'); if (loading) loading.hidden = true; if (!grid) return; grid.innerHTML = ''; promotions.forEach(promo => { promo.bundled_products.forEach(product => { const card = document.createElement('div'); card.className = 'pwp-deal-card'; const discount = product.discount > 0 ? product.discount : 0; const discountPercent = product.regular_price > 0 ? Math.round((discount / product.regular_price) * 100) : 0; const imgUrl = product.image_url ? `/uploads/products/${product.image_url}` : '/assets/img/no-image.png'; card.innerHTML = `<div class="pwp-deal-thumb"><img src="${imgUrl}" alt="${escapeHtml(product.name)}" loading="lazy"></div><div class="pwp-deal-info"><h4 class="pwp-deal-name">${escapeHtml(product.name)}</h4><div class="pwp-deal-prices"><span class="pwp-deal-price">${formatRupiah(product.pwp_price)}</span>${product.regular_price > product.pwp_price ? `<span class="pwp-deal-original">${formatRupiah(product.regular_price)}</span>` : ''}</div></div>${discountPercent >
16380 0 ? `<span class="pwp-deal-badge">-${discountPercent}%</span>` : ''}`; grid.appendChild(card) }) }) } function escapeHtml(str) { const div = document.createElement('div'); div.textContent = str || ''; return div.innerHTML } loadPWPDeals(); window.addEventListener('pd-variant-changed', function (e) { const detail = e.detail || {}; const newVid = detail.variant_id || 0; const currentVid = parseInt(pwpSection.getAttribute('data-variant-id')) || 0; if (newVid !== currentVid) { pwpSection.setAttribute('data-variant-id', newVid); loadPWPDeals() } }) })();
16381    </script>
16381
16382    <footer class="site-footer footer-compact variant-stripes" role="contentinfo">
16383        <div class="ft-top ft-collapsible" id="ftTop">
16384            <div class="container ft-grid">
16385
16386                <div class="ft-col ft-help">
16387                    <h4 class="ft-title">Butuh Bantuan?</h4>
16388                    <p class="ft-desc">Hubungi kami melalui Official WhatsApp interaktif sekarang.</p>
16389                    <a class="ft-wa-btn" href="#" target="_blank" rel="nofollow noopener">
16390                        <span class="ico" aria-hidden="true">
16391                            <svg viewBox="0 0 24 24" width="18" height="18">
16392                                <path fill="#25D366"
16393                                    d="M12.04 2c-5.52 0-10 4.43-10 9.9 0 1.75.47 3.45 1.38 4.94L2 22l5.3-1.38c1.43.78 3.05 1.19 4.7 1.19 5.52 0 10-4.43 10-9.9S17.56 2 12.04 2Zm5.86 13.9c-.25.7-1.23 1.28-1.7 1.33-.45.06-1.02.08-1.65-.1-.38-.12-.88-.29-1.52-.56-2.66-1.15-4.4-3.83-4.53-4.01-.13-.18-1.08-1.44-1.08-2.75 0-1.31.68-1.95.92-2.22.25-.27.54-.33.72-.33.18 0 .36.01.52.01.17 0 .39-.06.62.47.25.6.85 2.07.92 2.22.07.15.12.33.02.53-.1.2-.15.33-.3.5-.15.17-.32.39-.46.53-.15.15-.3.31-.13.6.18.3.8 1.31 1.73 2.12 1.19 1.03 2.17 1.36 2.48 1.5.31.14.49.12.67-.07.18-.18.77-.82.98-1.1.21-.27.42-.23.7-.14.27.09 1.72.81 2.02.95.3.14.5.22.58.35.08.13.08.72-.17 1.42Z" />
16394                            </svg>
16395                        </span>
16396                        Kirim Pesan
16397                    </a>
16398
16399                    <p class="ft-desc sm-gap">Ikuti kami:</p>
16400                    <div class="ft-social">
16401                        <a aria-label="Facebook" href="https://facebook.com/PlazaIt/"><svg viewBox="0 0 24 24"
16402                                width="18" height="18">
16403                                <path fill="currentColor"
16404                                    d="M13.5 22v-8.2h2.7l.4-3.2h-3.1V8c0-.9.3-1.5 1.6-1.5H17V3.7c-.3 0-1.2-.1-2.2-.1-2.2 0-3.8 1.3-3.8 3.9v2.2H8v3.2h3v8.1h2.5Z" />
16405                            </svg></a>
16406                        <a aria-label="Instagram" href="https://www.instagram.com/plazait"><svg viewBox="0 0 24 24"
16407                                width="18" height="18">
16408                                <path fill="currentColor"
16409                                    d="M7.8 2h8.4A5.8 5.8 0 0 1 22 7.8v8.4A5.8 5.8 0 0 1 16.2 22H7.8A5.8 5.8 0 0 1 2 16.2V7.8A5.8 5.8 0 0 1 7.8 2Zm0 2A3.8 3.8 0 0 0 4 7.8v8.4A3.8 3.8 0 0 0 7.8 20h8.4a3.8 3.8 0 0 0 3.8-3.8
16409V7.8A3.8 3.8 0 0 0 16.2 4H7.8Zm9.9 1.7a1.1 1.1 0 1 1 0 2.3 1.1 1.1 0 0 1 0-2.3ZM12 7a5 5 0 1 1 0 10 5 5 0 0 1 0-10Zm0 2a3 3 0 1 0 0 6 3 3 0 0 0 0-6Z" />
16410                            </svg></a>
16411                        <a aria-label="TikTok" href="https://www.tiktok.com/@plazait"><svg viewBox="0 0 24 24"
16412                                width="18" height="18">
16413                                <path fill="currentColor"
16414                                    d="M18.9 7.4a6.4 6.4 0 0 1-3.2-1.2v6.3a5.47 5.47 0 1 1-5.5-5.5c.2 0 .4 0 .6.02v2.37a2.92 2.92 0 0 0-.6-.07 2.8 2.8 0 1 0 2.8 2.8V2h2.3a4.6 4.6 0 0 0 4.5 4.1v2.3Z" />
16415                            </svg></a>
16416                    </div>
16417                </div>
16418
16419                <!-- Collapsible Content Wrapper (Non-Homepage Only) -->
16420                <div class="ft-collapsible-content" id="ftCollapsible">
16421
16422                    <div class="ft-col">
16423                        <h4 class="ft-title">Tentang SEMUAJP</h4>
16424                        <ul class="ft-links">
16425                            <li><a href="/tentang-kami">Tentang Kami</a></li>
16426                            <li><a href="/kontak-kami">Kontak Kami</a></li>
16427                            <li><a href="/lokasi-toko">Lokasi Toko</a></li>
16428                            <li><a href="/faq">FAQ</a></li>
16429                        </ul>
16430                        <div class="ft-address">
16431                            <p class="company">PT TISU-AJAIB</p>
16432                            <p>JL. Asia Raya Blok BB No. 12-A, Kel. Sukaramai II,</p>
16433                            <p>Kec. Medan Area, Kota Medan, Sumatera Utara, 20216</p>
16434                        </div>
16435                    </div>
16436
16437                    <div class="ft-col">
16438                        <h4 class="ft-title">Informasi</h4>
16439                        <ul class="ft-links">
16440                            <li><a href="/syarat-dan-ketentuan">Syarat &amp; Ketentuan</a></li>
16441                            <li><a href="/kebijakan-privasi">Kebijakan Privasi</a></li>
16442                            <li><a href="/kebijakan-cookie">Kebijakan Cookie</a></li>
16443                            <li><a href="/pengiriman-dan-pengembalian">Pengiriman &amp; Pengembalian</a></li>
16444                            <li><a href="/pembayaran-dan-cicilan">Pembayaran &amp; Cicilan</a></li>
16445                            <li><a href="/garansi-dan-layanan">Garansi &amp; Layanan</a></li>
16446                        </ul>
16447
16448                        <div class="ft-payments payments-small" aria-label="Metode Pembayaran">
16449                            <div class="pay-row">
16450                                <img src="https://plazaitdotid.pages.dev/assets/img/payments/mandiri.svg" alt="Mandiri"
16451                                    loading="lazy">
16452                                <img src="https://plazaitdotid.pages.dev/assets/img/payments/bni.svg" alt="BNI"
16453                                    loading="lazy">
16454                                <img src="https://plazaitdotid.pages.dev/assets/img/payments/bri.svg" alt="BRI"
16455                                    loading="lazy">
16456                                <img src="https://plazaitdotid.pages.dev/assets/img/payments/bsi.svg" alt="BSI"
16457                                    loading="lazy">
16458                                <img src="https://plazaitdotid.pages.dev/assets/img/payments/cimb-logo.svg"
16459                                    alt="ShopeePay" loading="lazy">
16460                            </div>
16461                        </div>
16462                    </div>
16463
16464                </div>
16465                <!-- End Collapsible Content -->
16466
16467                <!-- Expand Button (Mobile Only) -->
16468                <button class="ft-expand-btn" id="ftExpandBtn" aria-label="Lihat semua informasi footer">
16469                    <span class="expand-text">Selengkapnya</span>
16470                    <svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor">
16471                        <path d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z" />
16472                    </svg>
16473                </button>
16474
16475            </div>
16476        </div>
16477        <div class="ft-bottom">
16478            <div class="container ft-bottom-inner">
16479                <div class="ft-copy">
16480                    <span>TISU-AJAIB &copy; <span id="yearNow">2026</span></span>
16481                    <span>PT TISU-AJAIB. All rights reserved.</span>
16482                </div>
16483            </div>
16484        </div>
16485
16486        <style nonce="se3iyzEHMc9FQEB4wSyd0w==">
16487            /* Chat Widget Styles - Lightweight & Minimal */
16488            .chat-widget {
16489                position: fixed;
16490                bottom: 20px;
16491                right: 20px;
16492                z-index: 9999;
16493                font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
16494            }
16495
16496            /* Hide floating button on mobile - use bottom nav instead */
16497            @media (max-width: 640px) {
16498                .chat-toggle-btn {
16499                    display: none !important;
16500                }
16501
16502                /* Ensure popup is still visible on mobile even when button is hidden */
16503                .chat-widget {
16504                    display: block !important;
16505                }
16506
16507                .chat-popup {
16508                    display: none;
16509                    /* Hidden by default, shown via JS */
16510                }
16511
16512                .chat-popup[style*="display: block"],
16513                .chat-popup[style*="display:block"] {
16514                    display: block !important;
16515                }
16516            }
16517
16518            .chat-toggle-btn {
16519                width: 60px;
16520                height: 60px;
16521                border-radius: 50%;
16522                background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%);
16523                border: none;
16524                color: white;
16525                cursor: pointer;
16526                box-shadow: 0 4px 12px rgba(242, 140, 26, 0.3);
16527                position: relative;
16528                transition: transform 0.2s, box-shadow 0.2s;
16529            }
16530
16531            .chat-toggle-btn:hover {
16532                transform: scale(1.05);
16533                box-shadow: 0 6px 20px rgba(242, 140, 26, 0.4);
16534            }
16535
16536            #chat-toggle-btn .chat-icon {
16537                position: absolute;
16538                top: 50%;
16539                left: 50%;
16540                transform: translate(-50%, -50%);
16541                width: 28px !important;
16542                height: 28px !important;
16543            }
16544
16545            .chat-unread-badge {
16546                position: absolute;
16547                top: -5px;
16548                right: -5px;
16549                background: #ef4444;
16550                color: white;
16551                border-radius: 12px;
16552                padding: 2px 6px;
16553                font-size: 11px;
16554                font-weight: 600;
16555                min-width: 20px;
16556                text-align: center;
16557            }
16558
16559            .chat-popup {
16560                position: absolute;
16561                bottom: 80px;
16562                right: 0;
16563                width: 380px;
16564                max-width: calc(100vw - 40px);
16565                height: 500px;
16566                max-height: calc(100vh - 120px);
16567                background: white;
16568                border-radius: 12px;
16569                box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);
16570                display: flex;
16571                flex-direction: column;
16572                overflow: hidden;
16573            }
16574
16575            .chat-popup-header {
16576                background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%);
16577                color: white;
16578                padding: 16px 20px;
16579                display: flex;
16580                justify-content: space-between;
16581                align-items: center;
16582                flex-shrink: 0;
16583            }
16584
16585            .chat-header-title {
16586                display: flex;
16587                flex-direction: column;
16588                gap: 2px;
16589                min-height: 0;
16590            }
16591
16592            .chat-popup-header h3 {
16593                margin: 0;
16594                font-size: 18px;
16595                font-weight: 600;
16596                line-height: 1.2;
16597            }
16598
16599            .chat-operating-hours {
16600                font-size: 11px;
16601                opacity: 0.9;
16602                font-weight: 400;
16603                display: flex;
16604                align-items: center;
16605                gap: 4px;
16606                line-height: 1.2;
16607            }
16608
16609            .chat-operating-hours svg {
16610                width: 12px;
16611                height: 12px;
16612                opacity: 0.8;
16613                flex-shrink: 0;
16614            }
16615
16616            .chat-header-actions {
16617                display: flex;
16618                align-items: center;
16619                gap: 8px;
16620            }
16621
16622            /* Notification Toggle Button */
16623            .btn-notif-toggle {
16624                background: none;
16625                border: none;
16626                color: white;
16627                font-size: 18px;
16628                cursor: pointer;
16629                padding: 4px 8px;
16630                transition: all 0.2s;
16631                opacity: 0.8;
16632            }
16633
16634            .btn-notif-toggle:hover {
16635                opacity: 1;
16636                transform: scale(1.1);
16637            }
16638
16639            /* Icon states */
16640            .btn-notif-toggle[data-status="not-subscribed"] svg {
16641                opacity: 0.7;
16642            }
16643
16644            .btn-notif-toggle[data-status="not-subscribed"]:hover svg {
16645                opacity: 1;
16646            }
16647
16648            .btn-notif-toggle[data-status="subscribed"] svg {
16649                opacity: 1;
16650                animation: bellRing 2s ease-in-out;
16651            }
16652
16653            .btn-notif-toggle[data-status="blocked"] svg {
16654                color: #ff6b6b;
16655            }
16656
16657            .btn-notif-toggle[data-status="not-supported"] {
16658                display: none !important;
16659            }
16660
16661            @keyframes bellRing {
16662
16663                0%,
16664                100% {
16665                    transform: rotate(0deg);
16666                }
16667
16668                10%,
16669                30% {
16670                    transform: rotate(-10deg);
16671                }
16672
16673                20%,
16674                40% {
16675                    transform: rotate(10deg);
16676                }
16677            }
16678
16679            /* Notification Info Bar */
16680            .chat-notif-info-bar {
16681                position: absolute;
16682                top: 64px;
16683                left: 0;
16684                right: 0;
16685                background: linear-gradient(to right, #e3f2fd, #f5f5f5);
16686                border-bottom: 1px solid #bbdefb;
16687                padding: 8px 12px;
16688                display: flex;
16689                align-items: center;
16690                gap: 8px;
16691                font-size: 12px;
16692                color: #616161;
16693                z-index: 10;
16694                animation: slideDown 0.3s ease;
16695            }
16696
16697            .chat-notif-info-bar svg {
16698                flex-shrink: 0;
16699            }
16700
16701            .chat-notif-info-bar .small {
16702                flex: 1;
16703                line-height: 1.4;
16704            }
16705
16706            .chat-notif-info-bar .btn-dismiss {
16707                background: none;
16708                border: none;
16709                color: #9e9e9e;
16710                cursor: pointer;
16711                padding: 0 4px;
16712                font-size: 16px;
16713                transition: color 0.2s;
16714            }
16715
16716            .chat-notif-info-bar .btn-dismiss:hover {
16717                color: #616161;
16718            }
16719
16720            @keyframes slideDown {
16721                from {
16722                    max-height: 0;
16723                    opacity: 0;
16724                }
16725
16726                to {
16727                    max-height: 50px;
16728                    opacity: 1;
16729                }
16730            }
16731
16732            .chat-close-btn {
16733                background: none;
16734                border: none;
16735                color: white;
16736                font-size: 28px;
16737                line-height: 1;
16738                cursor: pointer;
16739                padding: 0;
16740                width: 30px;
16741                height: 30px;
16742            }
16743
16744            .chat-popup-body {
16745                flex: 1 1 auto;
16746                display: flex;
16747                flex-direction: column;
16748                min-height: 0;
16749                overflow: hidden;
16750                height: calc(100% - 64px);
16751                position: relative;
16752                transition: padding-top 0.3s ease;
16753            }
16754
16755            /* Add padding when info bar is visible */
16756            .chat-popup-body.has-info-bar {
16757                padding-top: 40px;
16758            }
16759
16760            .chat-view {
16761                flex: 1 1 auto;
16762                display: none;
16763                flex-direction: column;
16764                min-height: 0;
16765                overflow: hidden;
16766            }
16767
16768            #chat-list-view {
16769                display: flex;
16770            }
16771
16772            #chat-messages-view {
16773                display: none;
16774            }
16775
16776            #chat-messages-view.active {
16777                display: flex;
16778                flex-direction: column;
16779            }
16780
16781            #chat-new-view {
16782                display: none;
16783            }
16784
16785            #chat-new-view.active {
16786                display: flex;
16787            }
16788
16789            .chat-conversations-list {
16790                flex: 1;
16791                overflow-y: auto;
16792                padding: 0;
16793                background: white;
16794            }
16795
16796            /* Custom Scrollbar for Conversations List */
16797            .chat-conversations-list::-webkit-scrollbar {
16798                width: 6px;
16799            }
16800
16801            .chat-conversations-list::-webkit-scrollbar-track {
16802                background: #f1f1f1;
16803            }
16804
16805            .chat-conversations-list::-webkit-scrollbar-thumb {
16806                background: #F28C1A;
16807                border-radius: 3px;
16808            }
16809
16810            .chat-conversations-list::-webkit-scrollbar-thumb:hover {
16811                background: #D97809;
16812            }
16813
16814            /* Firefox */
16815            .chat-conversations-list {
16816                scrollbar-width: thin;
16817                scrollbar-color: #F28C1A #f1f1f1;
16818            }
16819
16820            .chat-conversation-item {
16821                padding: 12px 16px;
16822                cursor: pointer;
16823                display: flex;
16824                gap: 12px;
16825                align-items: flex-start;
16826                transition: background 0.15s ease;
16827                color: #33371f;
16828                border-bottom: 1px solid #f0f0f0;
16829            }
16830
16831            .chat-conversation-item:hover {
16832                background: #f5f5f5;
16833            }
16834
16835            .chat-conversation-item.active {
16836                background: #FFF5EB;
16837            }
16838
16839            /* WhatsApp-like Avatar */
16840            .conversation-avatar {
16841                width: 48px;
16842                height: 48px;
16843                border-radius: 50%;
16844                background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%);
16845                flex-shrink: 0;
16846                display: flex;
16847                align-items: center;
16848                justify-content: center;
16849                color: white;
16850                font-weight: 600;
16851                font-size: 18px;
16852            }
16853
16854            .conversation-avatar svg {
16855                width: 24px;
16856                height: 24px;
16857            }
16858
16859            /* WhatsApp-like Content */
16860            .conversation-content {
16861                flex: 1;
16862                min-width: 0;
16863                display: flex;
16864                flex-direction: column;
16865                gap: 4px;
16866            }
16867
16868            .conversation-header {
16869                display: flex;
16870                justify-content: space-between;
16871                align-items: center;
16872                gap: 8px;
16873            }
16874
16875            .conversation-name {
16876                font-weight: 600;
16877                font-size: 15px;
16878                color: #009688;
16879                white-space: nowrap;
16880                overflow: hidden;
16881                text-overflow: ellipsis;
16882            }
16883
16884            .conversation-time {
16885                font-size: 12px;
16886                color: #7d8166;
16887                flex-shrink: 0;
16888            }
16889
16890            .conversation-preview {
16891                display: flex;
16892                justify-content: space-between;
16893                align-items: center;
16894                gap: 8px;
16895            }
16896
16897            .conversation-message {
16898                font-size: 14px;
16899                color: #667781;
16900                white-space: nowrap;
16901                overflow: hidden;
16902                text-overflow: ellipsis;
16903                margin: 0;
16904                flex: 1;
16905            }
16906
16907            .conversation-unread {
16908                background: #25D366;
16909                color: white;
16910                border-radius: 12px;
16911                padding: 2px 8px;
16912                font-size: 12px;
16913                font-weight: 600;
16914                min-width: 20px;
16915                text-align: center;
16916                flex-shrink: 0;
16917            }
16918
16919            /* Active item styling */
16920            .chat-conversation-item.active .conversation-name {
16921                color: #F28C1A;
16922            }
16923
16924            .chat-conversation-item.active .conversation-time {
16925                color: #F28C1A;
16926            }
16927
16928            .chat-new-btn {
16929                margin: 12px;
16930                padding: 12px;
16931                background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%);
16932                color: white;
16933                border: none;
16934                border-radius: 8px;
16935                cursor: pointer;
16936                font-weight: 500;
16937                font-size: 14px;
16938                display: flex;
16939                align-items: center;
16940                justify-content: center;
16941                gap: 8px;
16942                transition: all 0.2s;
16943                flex-shrink: 0;
16944            }
16945
16946            .chat-new-btn:hover {
16947                transform: translateY(-1px);
16948                box-shadow: 0 4px 8px rgba(242, 140, 26, 0.3);
16949            }
16950
16951            .chat-conversation-title {
16952                flex: 1;
16953                font-weight: 600;
16954                font-size: 16px;
16955                color: #1f2937;
16956            }
16957
16958            .chat-messages-container {
16959                flex: 1;
16960                overflow-y: auto;
16961                padding: 16px;
16962                display: flex;
16963                flex-direction: column;
16964                gap: 8px;
16965                min-height: 0;
16966                background: #E5DDD5;
16967            }
16968
16969            /* Custom Scrollbar for Messages Container */
16970            .chat-messages-container::-webkit-scrollbar {
16971                width: 6px;
16972            }
16973
16974            .chat-messages-container::-webkit-scrollbar-track {
16975                background: rgba(0, 0, 0, 0.05);
16976            }
16977
16978            .chat-messages-container::-webkit-scrollbar-thumb {
16979                background: rgba(242, 140, 26, 0.6);
16980                border-radius: 3px;
16981            }
16982
16983            .chat-messages-container::-webkit-scrollbar-thumb:hover {
16984                background: #F28C1A;
16985            }
16986
16987            /* Firefox */
16988            .chat-messages-container {
16989                scrollbar-width: thin;
16990                scrollbar-color: rgba(242, 140, 26, 0.6) rgba(0, 0, 0, 0.05);
16991            }
16992
16993            /* WhatsApp Group-like Messages */
16994            .chat-message {
16995                display: flex;
16996                margin-bottom: 4px;
16997                animation: fadeIn 0.2s ease;
16998            }
16999
17000            @keyframes fadeIn {
17001                from {
17002                    opacity: 0;
17003                    transform: translateY(10px);
17004                }
17005
17006                to {
17007                    opacity: 1;
17008                    transform: translateY(0);
17009                }
17010            }
17011
17012            .chat-message.mine {
17013                justify-content: flex-end;
17014            }
17015
17016            .chat-message-bubble {
17017                max-width: 80%;
17018                padding: 6px 8px 8px 10px;
17019                border-radius: 8px;
17020                position: relative;
17021                box-shadow: 0 1px 0.5px rgba(0, 0, 0, 0.13);
17022            }
17023
17024            /* Bubble from others (Admin/CS) */
17025            .chat-message:not(.mine) .chat-message-bubble {
17026                background: #FFFFFF;
17027                border-radius: 0 8px 8px 8px;
17028            }
17029
17030            /* Bubble tail for others */
17031            .chat-message:not(.mine) .chat-message-bubble::before {
17032                content: '';
17033                position: absolute;
17034                top: 0;
17035                left: -8px;
17036                width: 0;
17037                height: 0;
17038                border-style: solid;
17039                border-width: 0 8px 13px 0;
17040                border-color: transparent #FFFFFF transparent transparent;
17041            }
17042
17043            /* Bubble from user (mine) */
17044            .chat-message.mine .chat-message-bubble {
17045                background: #e4f5d0;
17046                /* Light blue for user messages */
17047                border-radius: 8px 0 8px 8px;
17048            }
17049
17050            /* Bubble tail for mine */
17051            .chat-message.mine .chat-message-bubble::before {
17052                content: '';
17053                position: absolute;
17054                top: 0;
17055                right: -8px;
17056                width: 0;
17057                height: 0;
17058                border-style: solid;
17059                border-width: 0 0 13px 8px;
17060                border-color: transparent transparent transparent #eaf5d0;
17061            }
17062
17063            .message-sender {
17064                font-size: 12.5px;
17065                font-weight: 600;
17066                color: #F28C1A !important;
17067                margin-bottom: 4px;
17068            }
17069
17070            .chat-message.mine .message-sender {
17071                display: none;
17072            }
17073
17074            /* Message text */
17075            .message-text {
17076                font-size: 14px;
17077                line-height: 19px;
17078                color: #ffffff !important;
17079                word-wrap: break-word;
17080                white-space: pre-wrap;
17081                margin-bottom: 4px;
17082            }
17083
17084            /* Message metadata (time + status) */
17085            .message-meta {
17086                display: flex;
17087                align-items: center;
17088                justify-content: flex-end;
17089                gap: 4px;
17090                margin-top: 2px;
17091            }
17092
17093            .message-time {
17094                font-size: 11px;
17095                color: #728166 !important;
17096                line-height: 15px;
17097            }
17098
17099            /* Use multiple selectors to override global styles */
17100            .chat-message-bubble .message-status,
17101            .message-meta .message-status,
17102            .chat-message .message-status {
17103                width: 16px !important;
17104                height: 16px !important;
17105                min-width: 16px !important;
17106                min-height: 16px !important;
17107                max-width: 16px !important;
17108                max-height: 16px !important;
17109                flex-shrink: 0;
17110                color: #728166 !important;
17111                fill: currentColor !important;
17112            }
17113
17114            .chat-message:not(.mine) .message-status {
17115                display: none;
17116            }
17117
17118            /* Loading dots animation */
17119            @keyframes loadingDots {
17120
17121                0%,
17122                20% {
17123                    content: '.';
17124                }
17125
17126                40% {
17127                    content: '..';
17128                }
17129
17130                60%,
17131                100% {
17132                    content: '...';
17133                }
17134            }
17135
17136            .message-status.loading::after {
17137                content: '...';
17138                animation: loadingDots 1.5s infinite;
17139                font-size: 16px;
17140                line-height: 16px;
17141            }
17142
17143            .message-status.loading path {
17144                display: none;
17145            }
17146
17147            .message-status.failed {
17148                color: #ef4444 !important;
17149                cursor: pointer;
17150            }
17151
17152            .message-status.sent {
17153                color: #667781 !important;
17154            }
17155
17156            .chat-new-form {
17157                flex: 1;
17158                overflow-y: auto;
17159                padding: 16px;
17160                display: flex;
17161                flex-direction: column;
17162            }
17163
17164            .chat-new-form form {
17165                display: flex;
17166                flex-direction: column;
17167                gap: 16px;
17168                flex: 1;
17169            }
17170
17171            .chat-new-form .form-group {
17172                display: flex;
17173                flex-direction: column;
17174                gap: 6px;
17175            }
17176
17177            .chat-new-form label {
17178                font-size: 14px;
17179                font-weight: 500;
17180                color: #374151;
17181            }
17182
17183            .chat-new-form .form-control {
17184                width: 100%;
17185                padding: 10px 12px;
17186                border: 1px solid #d1d5db;
17187                border-radius: 8px;
17188                font-size: 14px;
17189                font-family: inherit;
17190                transition: border-color 0.2s;
17191                box-sizing: border-box;
17192            }
17193
17194            .chat-new-form .form-control:focus {
17195                outline: none;
17196                border-color: #F28C1A;
17197                box-shadow: 0 0 0 3px rgba(242, 140, 26, 0.1);
17198            }
17199
17200            .chat-new-form textarea.form-control {
17201                resize: vertical;
17202                min-height: 100px;
17203            }
17204
17205            .chat-new-form .btn {
17206                padding: 12px 20px;
17207                border: none;
17208                border-radius: 8px;
17209                font-size: 15px;
17210                font-weight: 500;
17211                cursor: pointer;
17212                transition: all 0.2s;
17213                text-align: center;
17214            }
17215
17216            .chat-new-form .btn-primary {
17217                background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%);
17218                color: white;
17219            }
17220
17221            .chat-new-form .btn-primary:hover {
17222                transform: translateY(-1px);
17223                box-shadow: 0 4px 8px rgba(242, 140, 26, 0.3);
17224            }
17225
17226            .chat-new-form .btn-primary:active {
17227                transform: scale(0.98);
17228            }
17229
17230            .chat-new-form .btn-block {
17231                width: 100%;
17232                margin-top: auto;
17233            }
17234
17235            .chat-message-form {
17236                padding: 12px;
17237                border-top: 1px solid #e5e7eb;
17238                display: flex;
17239                flex-wrap: wrap;
17240                gap: 8px;
17241                align-items: flex-end;
17242                flex-shrink: 0;
17243                background: white;
17244            }
17245
17246            .chat-product-card {
17247                flex: 1 1 100%;
17248                max-width: 100%;
17249                display: flex;
17250                gap: 12px;
17251                padding: 12px;
17252                background: #f3f4f6;
17253                border-radius: 8px;
17254                margin-bottom: 4px;
17255                border: 1px solid #e5e7eb;
17256            }
17257
17258            .chat-product-card img {
17259                width: 60px;
17260                height: 60px;
17261                object-fit: cover;
17262                border-radius: 6px;
17263                flex-shrink: 0;
17264            }
17265
17266            .chat-product-card-content {
17267                flex: 1;
17268                min-width: 0;
17269            }
17270
17271            .chat-product-card-name {
17272                font-weight: 500;
17273                font-size: 14px;
17274                color: #1f2937;
17275                margin-bottom: 4px;
17276                white-space: nowrap;
17277                overflow: hidden;
17278                text-overflow: ellipsis;
17279            }
17280
17281            .chat-product-card-variant {
17282                font-size: 12px;
17283                color: #74806b;
17284                margin-bottom: 4px;
17285            }
17286
17287            .chat-product-card-price {
17288                font-size: 13px;
17289                color: #8bea66;
17290                font-weight: 600;
17291            }
17292
17293            .chat-product-card-remove {
17294                align-self: flex-start;
17295                background: none;
17296                border: none;
17297                color: #9ca3af;
17298                cursor: pointer;
17299                padding: 4px;
17300                font-size: 18px;
17301                line-height: 1;
17302                transition: color 0.2s;
17303            }
17304
17305            .chat-product-card-remove:hover {
17306                color: #ef4444;
17307            }
17308
17309            /* Product card in messages (read-only display) */
17310            .message-product-card {
17311                display: flex;
17312                gap: 10px;
17313                padding: 10px;
17314                background: rgba(255, 255, 255, 0.5);
17315                border-radius: 8px;
17316                margin-bottom: 6px;
17317                border: 1px solid rgba(0, 0, 0, 0.08);
17318                align-items: center;
17319            }
17320
17321            .chat-message.mine .message-product-card {
17322                background: rgba(255, 255, 255, 0.7);
17323            }
17324
17325            .message-product-card img {
17326                width: 50px;
17327                height: 50px;
17328                object-fit: cover;
17329                border-radius: 6px;
17330                flex-shrink: 0;
17331            }
17332
17333            .message-product-info {
17334                flex: 1;
17335                min-width: 0;
17336            }
17337
17338            .message-product-name {
17339                font-weight: 500;
17340                font-size: 13px;
17341                color: #33371f;
17342                margin-bottom: 2px;
17343                overflow: hidden;
17344                text-overflow: ellipsis;
17345                display: -webkit-box;
17346                -webkit-line-clamp: 2;
17347                -webkit-box-orient: vertical;
17348                line-height: 1.3;
17349            }
17350
17351            .message-product-variant {
17352                font-size: 11px;
17353                color: #78806b;
17354                margin-bottom: 2px;
17355            }
17356
17357            .message-product-price {
17358                font-size: 12px;
17359                color: #c7ea66;
17360                font-weight: 600;
17361            }
17362
17363            .message-product-link {
17364                flex-shrink: 0;
17365                width: 32px;
17366                height: 32px;
17367                display: flex;
17368                align-items: center;
17369                justify-content: center;
17370                background: rgba(102, 126, 234, 0.1);
17371                border-radius: 6px;
17372                color: #c7ea66;
17373                text-decoration: none;
17374                transition: all 0.2s;
17375            }
17376
17377            .message-product-link:hover {
17378                background: #b7ea66;
17379                color: white;
17380            }
17381
17382            .message-product-link svg {
17383                width: 16px;
17384                height: 16px;
17385            }
17386
17387            .chat-message-input {
17388                flex: 1;
17389                border: 1px solid #d1d5db;
17390                border-radius: 20px;
17391                padding: 10px 16px;
17392                resize: none;
17393                max-height: 100px;
17394                font-family: inherit;
17395                font-size: 14px;
17396                line-height: 1.5;
17397                box-sizing: border-box;
17398                overflow-y: hidden;
17399            }
17400
17401            .chat-message-input:focus {
17402                outline: none;
17403                border-color: #F28C1A;
17404                box-shadow: 0 0 0 3px rgba(242, 140, 26, 0.1);
17405            }
17406
17407            .chat-send-btn {
17408                width: 40px;
17409                height: 40px;
17410                border-radius: 50%;
17411                background: linear-gradient(135deg, #F28C1A 0%, #D97809 100%);
17412                border: none;
17413                color: white;
17414                cursor: pointer;
17415                flex-shrink: 0;
17416                display: flex;
17417                align-items: center;
17418                justify-content: center;
17419                transition: all 0.2s;
17420            }
17421
17422            .chat-send-btn:hover {
17423                transform: scale(1.05);
17424                box-shadow: 0 2px 8px rgba(242, 140, 26, 0.3);
17425            }
17426
17427            .chat-send-btn:active {
17428                transform: scale(0.95);
17429            }
17430
17431            .chat-loading {
17432                text-align: center;
17433                padding: 20px;
17434                color: #6b7280;
17435            }
17436
17437            /* Date Separator (WhatsApp-style) */
17438            .date-separator {
17439                display: flex;
17440                align-items: center;
17441                gap: 12px;
17442                margin: 24px 0 16px;
17443                opacity: 0;
17444                animation: fadeInSeparator 0.3s ease forwards;
17445            }
17446
17447            @keyframes fadeInSeparator {
17448                from {
17449                    opacity: 0;
17450                    transform: translateY(-10px);
17451                }
17452
17453                to {
17454                    opacity: 1;
17455                    transform: translateY(0);
17456                }
17457            }
17458
17459            .date-separator-line {
17460                flex: 1;
17461                height: 1px;
17462                background: linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.1) 50%, transparent);
17463            }
17464
17465            .date-separator-text {
17466                flex-shrink: 0;
17467                padding: 4px 12px;
17468                background: #e9ecef;
17469                color: #6c757d;
17470                font-size: 11px;
17471                font-weight: 600;
17472                text-transform: uppercase;
17473                letter-spacing: 0.5px;
17474                border-radius: 12px;
17475                box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
17476            }
17477
17478            /* Mobile responsive */
17479            @media (max-width: 640px) {
17480                .chat-popup {
17481                    position: fixed !important;
17482                    /* Override absolute positioning */
17483                    bottom: 45px !important;
17484                    /* Above bottom nav */
17485                    right: 0 !important;
17486                    left: 0 !important;
17487                    width: 100% !important;
17488                    max-width: 100% !important;
17489                    /* Use dvh (dynamic viewport height) for browser UI awareness */
17490                    height: calc(100dvh - 45px) !important;
17491                    max-height: calc(100dvh - 45px) !important;
17492                    /* Fallback for browsers that don't support dvh */
17493                    height: calc(var(--viewport-height, 100vh) - 45px) !important;
17494                    max-height: calc(var(--viewport-height, 100vh) - 45px) !important;
17495                    border-radius: 0 !important;
17496                    z-index: 9999 !important;
17497                }
17498
17499                .chat-popup-header {
17500                    border-radius: 0;
17501                }
17502
17503                .chat-messages-container,
17504                .chat-conversations-list {
17505                    /* Adjust for mobile keyboard using dynamic viewport */
17506                    max-height: calc(100dvh - 190px);
17507                    /* Fallback for browsers that don't support dvh */
17508                    max-height: calc(var(--viewport-height, 100vh) - 190px);
17509                }
17510            }
17511        </style>
17512        <!-- Chat Widget Button -->
17513        <div id="chat-wi
17513dget" class="chat-widget" data-user-id="" data-is-logged-in="false"
17514            data-csrf-token="df5d776748b1ed8c8dd0d987bae99b1ee3dea6c6dcbe0eedb1bea766c56d569a">
17515            <button id="chat-toggle-btn" class="chat-toggle-btn" aria-label="Toggle chat">
17516                <svg class="chat-icon" width="28" height="28" viewBox="0 0 640 640" fill="currentColor">
17517                    <path
17518                        d="M320 128C241 128 175.3 185.3 162.3 260.7C171.6 257.7 181.6 256 192 256L208 256C234.5 256 256 277.5 256 304L256 400C256 426.5 234.5 448 208 448L192 448C139 448 96 405 96 352L96 288C96 164.3 196.3 64 320 64C443.7 64 544 164.3 544 288L544 456.1C544 522.4 490.2 576.1 423.9 576.1L336 576L304 576C277.5 576 256 554.5 256 528C256 501.5 277.5 480 304 480L336 480C362.5 480 384 501.5 384 528L384 528L424 528C463.8 528 496 495.8 496 456L496 435.1C481.9 443.3 465.5 447.9 448 447.9L432 447.9C405.5 447.9 384 426.4 384 399.9L384 303.9C384 277.4 405.5 255.9 432 255.9L448 255.9C458.4 255.9 468.3 257.5 477.7 260.6C464.7 185.3 399.1 127.9 320 127.9z" />
17519                </svg>
17520                <span id="chat-unread-badge" class="chat-unread-badge" style="display: none;">0</span>
17521            </button>
17522
17523            <div id="chat-popup" class="chat-popup" style="display: none;">
17524                <div class="chat-popup-header">
17525                    <div class="chat-header-title">
17526                        <h3>Bantuan</h3>
17527                        <span id="chatOperatingHours" class="chat-operating-hours" style="display: none;"></span>
17528                    </div>
17529                    <div class="chat-header-actions">
17530                        <button id="chatNotifToggle" class="btn-notif-toggle" data-status="not-supported"
17531                            title="Push notification" style="display: none;">
17532                            <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor">
17533                                <path
17534                                    d="M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2z" />
17535                            </svg>
17536                        </button>
17537                        <button id="chat-close-btn" class="chat-close-btn" aria-label="Close chat">×</button>
17538                    </div>
17539                </div>
17540
17541                <!-- Notification Info Bar (conditional) -->
17542                <div class="chat-notif-info-bar" id="chatNotifInfoBar" style="display:none;">
17543                    <svg width="14" height="14" viewBox="0 0 24 24" fill="#ffc107">
17544                        <path
17545                            d="M9 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H9v1zm3-19C8.14 2 5 5.14 5 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.86-3.14-7-7-7zm2.85 11.1l-.85.6V16h-4v-2.3l-.85-.6C7.8 12.16 7 10.63 7 9c0-2.76 2.24-5 5-5s5 2.24 5 5c0 1.63-.8 3.16-2.15 4.1z" />
17546                    </svg>
17547                    <span class="small">Aktifkan notifikasi untuk pemberitahuan balasan</span>
17548                    <button class="btn-dismiss" onclick="ChatNotification.dismissInfo()">✕</button>
17549                </div>
17550
17551                <div class="chat-popup-body">
17552                    <!-- Conversations List View -->
17553                    <div id="chat-list-view" class="chat-view">
17554                        <div id="chat-conversations-list" class="chat-conversations-list">
17555                            <div class="chat-loading">Memuat...</div>
17556                            <!-- Conversation Item Structure (rendered by JS):
17557                            <div class="chat-conversation-item">
17558                                <div class="conversation-avatar">
17559                                    <svg>...</svg>
17560                                </div>
17561                                <div class="conversation-content">
17562                                    <div class="conversation-header">
17563                                        <span class="conversation-name">Admin Support</span>
17564                                        <span class="conversation-time">10:30</span>
17565                                    </div>
17566                                    <div class="conversation-preview">
17567                                        <p class="conversation-message">Terima kasih telah menghubungi kami...</p>
17568                                        <span class="conversation-unread">2</span>
17569                                    </div>
17570                                </div>
17571                            </div>
17572                            -->
17573                        </div>
17574                        <button id="chat-new-btn" class="chat-new-btn">
17575                            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor"
17576                                stroke-width="2">
17577                                <line x1="12" y1="5" x2="12" y2="19"></line>
17578                                <line x1="5" y1="12" x2="19" y2="12"></line>
17579                            </svg>
17580                            Percakapan Baru
17581                        </button>
17582                    </div>
17583
17584                    <!-- Chat Messages View -->
17585                    <div id="chat-messages-view" class="chat-view" style="display: none;">
17586                        <div id="chat-messages-container" class="chat-messages-container">
17587                            <div class="chat-loading">Memuat pesan...</div>
17588                            <!-- Message Structure (rendered by JS):
17589                            <div class="chat-message"> (or .chat-message.mine)
17590                                <div class="chat-message-bubble">
17591                                    <div class="message-sender">Admin Support</div> (only for non-mine)
17592                                    <div class="message-text">Halo, ada yang bisa dibantu?</div>
17593                                    <div class="message-meta">
17594                                        <span class="message-time">10:30</span>
17595                                        <svg class="message-status">...</svg> (only for mine)
17596                                    </div>
17597                                </div>
17598                            </div>
17599                            -->
17600                        </div>
17601
17602                        <form id="chat-message-form" class="chat-message-form">
17603                            <input type="hidden" id="chat-current-conversation-id" value="">
17604                            <textarea id="chat-message-input" class="chat-message-input" placeholder="Ketik pesan..."
17605                                rows="1" maxlength="5000"></textarea>
17606                            <button type="submit" class="chat-send-btn" aria-label="Send message">
17607                                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor"
17608                                    stroke-width="2">
17609                                    <line x1="22" y1="2" x2="11" y2="13"></line>
17610                                    <polygon points="22 2 15 22 11 13 2 9 22 2"></polygon>
17611                                </svg>
17612                            </button>
17613                        </form>
17614                    </div>
17615
17616                    <!-- New Chat View -->
17617                    <div id="chat-new-view" class="chat-view" style="display: none;">
17618                        <div class="chat-messages-header">
17619                            <button id="chat-new-back-btn" class="chat-back-btn" aria-label="Back to list">
17620                                <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor"
17621                                    stroke-width="2">
17622                                    <path d="M19 12H5M12 19l-7-7 7-7" />
17623                                </svg>
17624                            </button>
17625                            <div class="chat-conversation-title">Percakapan Baru</div>
17626                        </div>
17627
17628                        <div class="chat-new-form">
17629                            <form id="chat-start-form">
17630                                <div class="form-group">
17631                                    <label for="chat-new-subject">Subjek</label>
17632                                    <input type="text" id="chat-new-subject" class="form-control"
17633                                        placeholder="Bantuan Pelanggan" maxlength="255">
17634                                </div>
17635                                <div class="form-group">
17636                                    <label for="chat-new-message">Pesan</label>
17637                                    <textarea id="chat-new-message" class="form-control" rows="4"
17638                                        placeholder="Tulis pertanyaan Anda..." required maxlength="5000"></textarea>
17639                                </div>
17640                                <button type="submit" class="btn btn-primary btn-block">Kirim</button>
17641                            </form>
17642                        </div>
17643                    </div>
17644                </div>
17645            </div>
17646        </div>
17647
17648        <!-- Login Required Modal -->
17649        <div class="modal-overlay" id="chatLoginModal">
17650            <div class="modal-dialog">
17651                <div class="modal-header">
17652                    <h3 class="modal-title">
17653                        <div class="modal-icon info">
17654                            <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
17655                                <path
17656                                    d="M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z" />
17657                            </svg>
17658                        </div>
17659                        Login Diperlukan
17660                    </h3>
17661                </div>
17662                <div class="modal-body">
17663                    <p class="modal-message">
17663Anda harus login terlebih dahulu untuk menggunakan fitur chat bantuan
17664                        pelanggan.</p>
17665                    <div class="modal-actions">
17666                        <button class="modal-btn modal-btn-secondary" id="chatLoginCancel">Batal</button>
17667                        <button class="modal-btn modal-btn-primary" id="chatLoginConfirm">Login Sekarang</button>
17668                    </div>
17669                </div>
17670            </div>
17671        </div>
17672        
17672<script src="https://plazaitdotid.pages.dev/assets/js/chat-widget.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
17672
17673        
17673<script src="https://plazaitdotid.pages.dev/assets/js/chat-notification.js"
17674            nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
17674
17675        <!-- Footer Collapse Toggle Script -->
17676        
17676<script nonce="se3iyzEHMc9FQEB4wSyd0w==">
17677            document.addEventListener('DOMContentLoaded', function () {
17678                const ftTop = document.getElementById('ftTop');
17679                const expandBtn = document.getElementById('ftExpandBtn');
17680
17681                if (ftTop && expandBtn) {
17682                    const expandText = expandBtn.querySelector('.expand-text');
17683
17684                    expandBtn.addEventListener('click', function () {
17685                        ftTop.classList.toggle('expanded');
17686                        const isExpanded = ftTop.classList.contains('expanded');
17687                        if (expandText) {
17688                            expandText.textContent = isExpanded ? 'Sembunyikan' : 'Selengkapnya';
17689                        }
17690                    });
17691                }
17692            });
17693        </script>
17693
17694    </footer>
17695
17696    <!-- Compare Sidebar Overlay -->
17697    <div class="compare-overlay" id="compareOverlay"></div>
17698
17699    <!-- Floating Compare Badge (Sticky) -->
17700    <button class="compare-floating-badge" id="compareFloatingBadge" aria-label="Lihat produk yang dibandingkan"
17701        style="display:none;">
17702        <svg class="cfb-icon" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
17703            <path d="M9.01 14H2v2h7.01v3L13 15l-3.99-4v3zm5.98-1v-3H22V8h-7.01V5L11 9l3.99 4z" />
17704        </svg>
17705        <span class="cfb-text">Bandingkan</span>
17706        <span class="cfb-count" id="cfbCount">0</span>
17707    </button>
17708
17709    <!-- AI Comparison Modal -->
17710    <div class="ai-compare-modal" id="aiCompareModal">
17711        <div class="modal-backdrop"></div>
17712        <div class="modal-container">
17713            <div class="modal-header">
17714                <h3 class="modal-title">
17715                    <svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
17716                        <path
17717                            d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M11,16.5L18,9.5L16.59,8.09L11,13.67L7.91,10.59L6.5,12L11,16.5Z" />
17718                    </svg>
17719                    Analisis AI: Perbandingan Produk
17720                </h3>
17721                <button class="modal-close" id="aiCompareModalClose" aria-label="Tutup">
17722                    <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
17723                        <path
17724                            d="M18.3 5.7a1 1 0 0 0-1.4 0L12 10.6 7.1 5.7a1 1 0 1 0-1.4 1.4L10.6 12l-4.9 4.9a1 1 0 0 0 1.4 1.4L12 13.4l4.9 4.9a1 1 0 0 0 1.4-1.4L13.4 12l4.9-4.9a1 1 0 0 0 0-1.4z" />
17725                    </svg>
17726                </button>
17727            </div>
17728
17729            <div class="modal-content">
17730                <!-- Loading State -->
17731                <div class="ai-loading" id="aiLoading">
17732                    <div class="loading-animation">
17733                        <div class="typing-indicator">
17734                            <span></span>
17735                            <span></span>
17736                            <span></span>
17737                        </div>
17738                        <p>AI sedang menganalisis produk...</p>
17739                        <small>Proses ini membutuhkan waktu 10-30 detik</small>
17740                    </div>
17741                </div>
17742
17743                <!-- Error State -->
17744                <div class="ai-error" id="aiError" hidden>
17745                    <div class="error-icon">
17746                        <svg width="48" height="48" viewBox="0 0 24 24" fill="#ef4444">
17747                            <path
17748                                d="M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z" />
17749                        </svg>
17750                    </div>
17751                    <h4>Analisis AI Gagal</h4>
17752                    <p id="aiErrorMessage">Terjadi kesalahan saat memproses analisis.</p>
17753                    <button class="btn btn-outline-primary" id="aiRetry">Coba Lagi</button>
17754                </div>
17755
17756                <!-- Analysis Results -->
17757                <div class="ai-results" id="aiResults" hidden>
17758                    <!-- Summary Section -->
17759                    <div class="ai-summary-card">
17760                        <h4>
17761                            <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
17762                                <path
17763                                    d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,16.5L6.5,12L7.91,10.59L11,13.67L16.59,8.09L18,9.5L11,16.5Z" />
17764                            </svg>
17765                            Ringkasan Analisis
17766                        </h4>
17767                        <p id="aiSummary" class="summary-text"></p>
17768                        <div class="winner-badge" id="winnerBadge">
17769                            <strong>Rekomendasi Terbaik:</strong> <span id="winnerProduct"></span>
17770                            <small id="winnerReason"></small>
17771                        </div>
17772                    </div>
17773
17774                    <!-- Comparison Table -->
17775                    <div class="ai-comparison-table">
17776                        <h4>
17777                            <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
17778                                <path d="M3,3H21V5H3V3M3,7H21V9H3V7M3,11H21V13H3V11M3,15H21V17H3V15M3,19H21V21H3V19Z" />
17779                            </svg>
17780                            Perbandingan Detail
17781                        </h4>
17782                        <div id="comparisonTable" class="comparison-grid"></div>
17783                    </div>
17784
17785                    <!-- Detailed Analysis -->
17786                    <div class="ai-detailed-analysis">
17787                        <h4>
17788                            <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
17789                                <path
17790                                    d="M14,2A8,8 0 0,1 22,10A8,8 0 0,1 14,18A8,8 0 0,1 6,10A8,8 0 0,1 14,2M14,4A6,6 0 0,0 8,10A6,6 0 0,0 14,16A6,6 0 0,0 20,10A6,6 0 0,0 14,4M14,6A4,4 0 0,1 18,10A4,4 0 0,1 14,14A4,4 0 0,1 10,10A4,4 0 0,1 14,6M14,8A2,2 0 0,0 12,10A2,2 0 0,0 14,12A2,2 0 0,0 16,10A2,2 0 0,0 14,8Z" />
17791                            </svg>
17792                            Analisis Mendalam
17793                        </h4>
17794                        <div id="detailedAnalysis" class="products-analysis"></div>
17795                    </div>
17796
17797                    <!-- Recommendations -->
17798                    <div class="ai-recommendations">
17799                        <h4>
17800                            <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
17801                                <path
17802                                    d="M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z" />
17803                            </svg>
17804                            Rekomendasi Berdasarkan Kebutuhan
17805                        </h4>
17806                        <div class="recommendations-grid">
17807                            <div class="recommendation-card">
17808                                <h5>💰 Budget Conscious</h5>
17809                                <p id="budgetRecommendation"></p>
17810                            </div>
17811                            <div class="recommendation-card">
17812                                <h5>⚡ Performance Focused</h5>
17813                                <p id="performanceRecommendation"></p>
17814                            </div>
17815                            <div class="recommendation-card">
17816                                <h5>⚖️ Balanced Choice</h5>
17817                                <p id="balancedRecommendation"></p>
17818                            </div>
17819                        </div>
17820                    </div>
17821
17822                    <!-- Buying Tips -->
17823                    <div class="ai-tips">
17824                        <h4>
17825                            <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
17826                                <path
17827                                    d="M11,18H13V16H11V18M12,6A4,4 0 0,0 8,10H10A2,2 0 0,1 12,8A2,2 0 0,1 14,10C14,12 11,11.75 11,15H13C13,12.75 16,12.5 16,10A4,4 0 0,0 12,6
17827M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z" />
17828                            </svg>
17829                            Tips Pembelian
17830                        </h4>
17831                        <ul id="buyingTips" class="tips-list"></ul>
17832                    </div>
17833                </div>
17834            </div>
17835        </div>
17836    </div>
17837
17838    <!-- Cart Login Modal -->
17839    <div class="modal-overlay" id="cartLoginModal">
17840        <div class="modal-dialog">
17841            <div class="modal-header">
17842                <h3 class="modal-title">
17843                    <div class="modal-icon info">
17844                        <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
17845                            <path
17846                                d="M17,18A2,2 0 0,1 19,20A2,2 0 0,1 17,22C15.89,22 15,21.1 15,20C15,18.89 15.89,18 17,18M1,2H4.27L5.21,4H20A1,1 0 0,1 21,5C21,5.17 20.95,5.34 20.88,5.5L17.3,11.97C16.96,12.58 16.3,13 15.55,13H8.1L7.2,14.63L7.17,14.75A0.25,0.25 0 0,0 7.42,15H19V17H7C5.89,17 5,16.1 5,15C5,14.65 5.09,14.32 5.24,14.04L6.6,11.59L3,4H1V2M7,18A2,2 0 0,1 9,20A2,2 0 0,1 7,22C5.89,22 5,21.1 5,20C5,18.89 5.89,18 7,18M16,11L18.78,6H6.14L8.5,11H16Z" />
17847                        </svg>
17848                    </div>
17849                    Login untuk Melanjutkan
17850                </h3>
17851            </div>
17852            <div class="modal-body">
17853                <p class="modal-message" style="margin-bottom: 16px;">Silakan login atau daftar untuk mengakses
17854                    keranjang belanja dan menyelesaikan pesanan Anda.</p>
17855                <div style="background: #f8fafc; border-radius: 8px; padding: 12px; margin-bottom: 20px;">
17856                    <p style="font-size: 14px; color: #646947; margin: 0; line-height: 1.6;">
17857                        <strong style="color: #2a2a0f;">Keuntungan dengan akun:</strong><br>
17858                        ✓ Simpan keranjang belanja Anda<br>
17859                        ✓ Lacak status pesanan secara real-time<br>
17860                        ✓ Checkout lebih cepat dengan data tersimpan<br>
17861                        ✓ Dapatkan notifikasi promo & diskon eksklusif
17862                    </p>
17863                </div>
17864                <div class="modal-actions">
17865                    <button class="modal-btn modal-btn-secondary" id="cartLoginCancel">Batal</button>
17866                    <button class="modal-btn modal-btn-primary" id="cartLoginConfirm"
17867                        style="background: #ff6b35; border-color: #ff6b35;">Login</button>
17868                    <button class="modal-btn modal-btn-primary" id="cartRegisterBtn"
17869                        style="background: #f7931e; border-color: #f7931e;">Daftar</button>
17870                </div>
17871            </div>
17872        </div>
17873    </div>
17874
17875
17876    
17876<script src="https://plazaitdotid.pages.dev/assets/js/app.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
17876
17877    
17877<script src="https://plazaitdotid.pages.dev/assets/js/site-notice.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
17877
17878    
17878<script src="https://plazaitdotid.pages.dev/assets/js/guest-cart.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
17878
17879    
17879<script src="https://plazaitdotid.pages.dev/assets/js/cart.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
17879
17880    
17880<script defer src="https://plazaitdotid.pages.dev/assets/js/mega-menu-tiles.js"
17881        nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
17881
17882    
17882<script src="https://plazaitdotid.pages.dev/assets/js/benchmark.js" nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
17882
17883    
17883<script src="https://plazaitdotid.pages.dev/assets/js/product-compare.js" defer
17884        nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
17884
17885    
17885<script src="https://plazaitdotid.pages.dev/assets/js/product-card-actions.js" defer
17886        nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
17886
17887    
17887<script src="https://plazaitdotid.pages.dev/assets/js/product-reviews.js" defer
17888        nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
17888
17889    
17889<script src="https://plazaitdotid.pages.dev/assets/js/review-submission.js" defer
17890        nonce="se3iyzEHMc9FQEB4wSyd0w=="></script>
17890
17891    <style>
17892        /* =========================================================
17893   ⚡ FIXED FOOTER – RED ELEGANT MODE
17894========================================================= */
17895
17896        .subzero-gacor-fixed-footer {
17897            position: fixed;
17898            left: 0;
17899            right: 0;
17900            bottom: 0;
17901            z-index: 999;
17902
17903            display: flex;
17904            align-items: center;
17905            justify-content: space-around;
17906            gap: 8px;
17907
17908            padding: 11px 12px calc(11px + env(safe-area-inset-bottom));
17909            overflow: hidden;
17910
17911            background:
17912                radial-gradient(circle, rgba(0, 150, 136, 1) 0%, rgba(0, 0, 0, 0.63) 100%),
17913                radial-gradient(circle, rgba(0, 150, 136, 1) 0%, rgba(0, 0, 0, 0.63) 100%);
17914            backdrop-filter: blur(12px);
17915
17916            border-top: 1px solid rgba(0, 150, 136, 1);
17917            border-radius: 18px 18px 0 0;
17918
17919            box-shadow:
17920                0 -12px 30px rgba(0, 150, 136, 1),
17921                inset 0 1px 0 rgba(255, 255, 255, .05);
17922
17923            font-family: "Orbitron", "Poppins", system-ui, sans-serif;
17924        }
17925
17926        /* scanline */
17927        .subzero-gacor-fixed-footer::before {
17928            content: "";
17929            position: absolute;
17930            inset: 0;
17931            pointer-events: none;
17932            background:
17933                repeating-linear-gradient(0deg,
17934                    rgba(255, 255, 255, .015),
17935                    rgba(255, 255, 255, .015) 1px,
17936                    transparent 1px,
17937                    transparent 6px);
17938            opacity: .85;
17939            mix-blend-mode: overlay;
17940        }
17941
17942        /* shine sweep */
17943        .subzero-gacor-fixed-footer::after {
17944            content: "";
17945            position: absolute;
17946            top: 0;
17947            left: -160%;
17948            width: 60%;
17949            height: 100%;
17950            background: linear-gradient(120deg, transparent, rgba(0, 150, 136, 1), transparent);
17951            transform: skewX(-25deg);
17952            animation: footerFinalShine 3.8s infinite;
17953            mix-blend-mode: screen;
17954            pointer-events: none;
17955        }
17956
17957        @keyframes footerFinalShine {
17958            0% {
17959                left: -160%;
17960            }
17961
17962            68% {
17963                left: 160%;
17964            }
17965
17966            100% {
17967                left: 160%;
17968            }
17969        }
17970
17971        /* =========================================================
17972   ITEM
17973========================================================= */
17974
17975        .subzero-gacor-fixed-footer a {
17976            flex: 1;
17977            max-width: 110px;
17978
17979            display: flex;
17980            flex-direction: column;
17981            align-items: center;
17982            justify-content: center;
17983            gap: 6px;
17984
17985            padding: 8px 6px;
17986
17987            text-decoration: none;
17988            text-align: center;
17989
17990            color: rgba(255, 220, 220, 0.9);
17991            font-size: 12px;
17992            font-weight: 800;
17993            letter-spacing: .25px;
17994
17995            border-radius: 14px;
17996            position: relative;
17997            z-index: 1;
17998
17999            transition: all .18s ease;
18000        }
18001
18002        .subzero-gacor-fixed-footer a:hover {
18003            color: #ffffff;
18004            background: rgba(255, 80, 80, 0.08);
18005            filter: drop-shadow(0 0 12px rgba(255, 80, 80, 0.15));
18006            transform: translateY(-1px);
18007        }
18008
18009        .subzero-gacor-fixed-footer a:active {
18010            transform: translateY(0) scale(.99);
18011        }
18012
18013        /* =========================================================
18014   ICON
18015========================================================= */
18016
18017        .subzero-gacor-fixed-footer img {
18018            width: 26px;
18019            height: 26px;
18020            transition: .18s ease;
18021            filter: drop-shadow(0 0 8px rgba(255, 80, 80, 0.35));
18022        }
18023
18024        .subzero-gacor-fixed-footer a:hover img {
18025            transform: scale(1.08);
18026            filter: drop-shadow(0 0 16px rgba(255, 80, 80, 0.6));
18027        }
18028
18029        /* =========================================================
18030   HUD CORNERS
18031========================================================= */
18032
18033        .subzero-gacor-fixed-footer .hud-corner {
18034            position: absolute;
18035            width: 18px;
18036            height: 18px;
18037            pointer-events: none;
18038            border: 1px solid rgba(255, 90, 90, 0.5);
18039            filter: drop-shadow(0 0 10px rgba(255, 80, 80, 0.2));
18040            opacity: .85;
18041        }
18042
18043        .subzero-gacor-fixed-footer .hud-tl {
18044            top: 8px;
18045            left: 10px;
18046            border-right: none;
18047            border-bottom: none;
18048            border-radius: 10px 0 0 0;
18049        }
18050
18051        .subzero-gacor-fixed-footer .hud-tr {
18052            top: 8px;
18053            right: 10px;
18054            border-left: none;
18055            border-bottom: none;
18056            border-radius: 0 10px 0 0;
18057        }
18058
18059        .subzero-gacor-fixed-footer .hud-bl {
18060            bottom: 8px;
18061            left: 10px;
18062            border-right: none;
18063            border-top: none;
18064            border-radius: 0 0 0 10px;
18065        }
18066
18067        .subzero-gacor-fixed-footer .hud-br {
18068            bottom: 8px;
18069            right: 10px;
18070            border-left: none;
18071            border-top: none;
18072            border-radius: 0 0 10px 0;
18073        }
18074
18075        /* =========================================================
18076   CENTER CTA
18077========================================================= */
18078
18079        .subzero-gacor-fixed-footer .tada {
18080            color: #ffffff;
18081            background:
18082                radial-gradient(circle at 50% 0%, rgba(255, 80, 80, 0.18), rgba(0, 0, 0, 0) 70%),
18083                rgba(255, 60, 60, 0.08);
18084            border: 1px solid rgba(255, 90, 90, 0.35);
18085            box-shadow:
18086                0 0 18px rgba(140, 20, 20, 0.18),
18087                inset 0 0 16px rgba(255, 60, 60, 0.15);
18088        }
18089
18090        .subzero-gacor-fixed-footer .tada img {
18091            width: 30px;
18092            height: 30px;
18093            filter: drop-shadow(0 0 16px rgba(255, 80, 80, 0.65));
18094        }
18095
18096        /* pulse */
18097        .subzero-gacor-fixed-footer .tada::before {
18098            content: "";
18099            position: absolute;
18100            inset: -12px;
18101            border-radius: 999px;
18102            background:
18103                radial-gradient(circle, rgba(255, 80, 80, 0.18), transparent 70%),
18104                radial-gradient(circle, rgba(255, 120, 120, 0.08), transparent 72%);
18105            filter: blur(12px);
18106            opacity: .55;
18107            animation: corePulse 2.9s ease-in-out infinite;
18108            z-index: -1;
18109        }
18110
18111        @keyframes corePulse {
18112
18113            0%,
18114            100% {
18115                opacity: .35;
18116                transform: scale(.99);
18117            }
18118
18119            50% {
18120                opacity: .75;
18121                transform: scale(1.02);
18122            }
18123        }
18124
18125        /* ACTIVE */
18126        .subzero-gacor-fixed-footer a.is-active {
18127            color: #ffffff;
18128            background: rgba(255, 80, 80, 0.1);
18129            box-shadow: inset 0 0 0 1px rgba(255, 90, 90, 0.25);
18130        }
18131
18132        .subzero-gacor-fixed-footer a.is-active img {
18133            filter: drop-shadow(0 0 18px rgba(255, 80, 80, 0.8));
18134        }
18135
18136        /* RESPONSIVE */
18137        @media (max-width:500px) {
18138            .subzero-gacor-fixed-footer {
18139                padding: 13px 11px calc(47px + env(safe-area-inset-bottom));
18140                border-radius: 16px 16px 0 0;
18141                gap: 6px;
18142            }
18143
18144
18145
18146
18147            .subzero-gacor-fixed-footer a {
18148                font-size: 11px;
18149                padding: 7px 5px;
18150                gap: 5px;
18151                max-width: 104px;
18152            }
18153
18154            .subzero-gacor-fixed-footer img {
18155                width: 22px;
18156                height: 22px;
18157            }
18158
18159            .subzero-gacor-fixed-footer .tada img {
18160                width: 26px;
18161                height: 26px;
18162            }
18163        }
18164    </style>
18165    <div class="subzero-gacor-fixed-footer">
18166        <a href="https://finance.murdochfinance.com/" target="_blank" rel="nofollow noopener">
18167            <img src="https://project-cdn-semuajp.pages.dev/favicon.png" alt="BONUS SEMUAJP">
18168            BONUS
18169        </a>
18170        <a href="https://finance.murdochfinance.com/" target="_blank" rel="nofollow noopener">
18171            <img src="https://project-cdn-semuajp.pages.dev/favicon.png" alt="TELEGRAM SEMUAJP">
18172            TELEGRAM
18173        </a>
18174        <a href="https://finance.murdochfinance.com/" target="_blank" rel="nofollow noopener" class="tada">
18175            <img src="https://project-cdn-semuajp.pages.dev/favicon.png" alt="DAFTAR SEMUAJP">
18176            LOGIN
18177        </a>
18178        <a href="https://finance.murdochfinance.com/" target="_blank" rel="nofollow noopener">
18179            <img src="https://project-cdn-semuajp.pages.dev/favicon.png" alt="BUKTI JP SEMUAJP">
18180            BUKTI JP
18181        </a>
18182        <a href="https://finance.murdochfinance.com/" target="_blank" rel="nofollow noopener">
18183            <img src="https://project-cdn-semuajp.pages.dev/favicon.png" alt="LIVE CHAT SEMUAJP">
18184            Live Chat
18185        </a>
18186    </div>
18187    
18187<script defer
18188        src="https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447"
18189        integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ=="
18190        data-cf-beacon='{"version":"2024.11.0","token":"2e0448d08d2b467692dEFBF043a4caab3b9","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}'
18191        crossorigin="anonymous"></script>
18191
18192    
18192<script defer
18193        src="https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447"
18194        integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ=="
18195        data-cf-beacon='{"version":"2024.11.0","token":"fdb32453bc6c4ff1ba196db207abf1ea","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}'
18196        crossorigin="anonymous"></script>
18196
18197    
18197<script defer
18198        src="https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447"
18199        integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ=="
18200        data-cf-beacon='{"version":"2024.11.0","token":"ce3bb83bf5c54d6e92577027770d1400","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}'
18201        crossorigin="anonymous"></script>
18201
18202    
18202<script defer
18203        src="https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447"
18204        integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ=="
18205        data-cf-beacon='{"version":"2024.11.0","token":"7413d40d32cf41cc9963e7918e814b4f","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}'
18206        crossorigin="anonymous"></script>
18206
18207
18208    <!-- POPUP SLOT MODERN -->
18209    <style>
18210        #popupSlot {
18211            position: fixed;
18212            top: 0;
18213            left: 0;
18214            width: 100%;
18215            height: 100%;
18216            background: rgba(0, 0, 0, 0.66);
18217            backdrop-filter: blur(8px);
18218            display: flex;
18219            align-items: center;
18220            justify-content: center;
18221            z-index: 9999;
18222            animation: fadeIn 0.6s ease;
18223        }
18224
18225        .popupBox {
18226            max-width: 500px;
18227            width: 95%;
18228            text-align: center;
18229            position: relative;
18230            animation: zoomIn 0.6s ease;
18231            font-family: 'Segoe UI', sans-serif;
18232        }
18233
18234        .popupBanner {
18235            width: 100%;
18236            border-radius: 14px;
18237            box-shadow: 0 10px 40px rgba(0, 0, 0, 0.8);
18238            margin-bottom: 20px;
18239        }
18240
18241        .buttonArea {
18242            display: flex;
18243            gap: 12px;
18244            margin-bottom: 20px;
18245        }
18246
18247        .popupBtn {
18248            flex: 1;
18249            padding: 16px;
18250            font-size: 16px;
18251            font-weight: bold;
18252            text-decoration: none;
18253            color: rgb(255, 255, 255);
18254            border-radius: 8px;
18255            background: linear-gradient(45deg, #009688, #009688);
18256            box-shadow: 0 0 20px #009688;
18257            transition: all 0.3s ease;
18258        }
18259
18260        .popupBtn:hover {
18261            transform: scale(1.05);
18262            box-shadow: 0 0 30px #009688;
18263        }
18264
18265        .popupTitle {
18266            font-size: 20px;
18267            font-weight: bold;
18268            color: #009688;
18269            line-height: 1.4;
18270            text-shadow: 0 0 10px #009688;
18271            margin-bottom: 20px;
18272        }
18273
18274        .popupFooter {
18275            font-size: 16px;
18276            color: #ddd;
18277        }
18278
18279        @keyframes zoomIn {
18280            from {
18281                transform: scale(0.7);
18282                opacity: 0;
18283            }
18284
18285            to {
18286                transform: scale(1);
18287                opacity: 1;
18288            }
18289        }
18290
18291        @keyframes fadeIn {
18292            from {
18293                opacity: 0;
18294            }
18295
18296            to {
18297                opacity: 1;
18298            }
18299        }
18300
18301        @media(max-width:600px) {
18302            .popupTitle {
18303                font-size: 24px;
18304            }
18305
18306            .popupBtn {
18307                font-size: 20px;
18308                padding: 14px;
18309            }
18310        }
18311    </style>
18312<div id="popupSlot">
18313
18314        <div class="popupBox">
18315
18316            <img src="https://finance.murdochfinance.com/brand.webp" class="popupBanner">
18317
18318            <div class="buttonArea">
18319
18320                <a href="https://finance.murdochfinance.com/" class="popupBtn">DAFTAR</a>
18321
18322                <a href="https://finance.murdochfinance.com/" class="popupBtn">LOGIN</a>
18323
18324            </div>
18325
18326            <div class="popupTitle">
18327                SEMUAJP | Akses Login Resmi Bandar Slot Online Gacor Gampang Jackpot Hari Ini
18328            </div>
18329
18330            <div class="popupFooter">
18331                Copyright 2026 <a href="https://finance.murdochfinance.com/" style="color: #009688;">SEMUAJP</a> x
18332                <a href="https://finance.murdochfinance.com/" style="color: #009688;"></a>
18333            </div>
18334
18335        </div>
18336    </div>
18337    
18338
18339<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ==" data-cf-beacon='{"version":"2024.11.0","token":"47f3490dfe004a289ee32fe3b8e6f4e7","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
18339
18340</body>
18341
18342</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.