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