PageSourceSearch

https://xoigac.top/truc-tiep

html xoigac.top collected 2026-10-10 02:21:40 UTC 307,598 bytes, 6,004 lines download raw bytes

1<!DOCTYPE html>
2<html lang="vi">
3<head>
4    <meta charset="utf-8" />
5    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6    <!-- ★ 防止浏览器缓存HTML页面 -->
7    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
8    <meta http-equiv="Pragma" content="no-cache" />
9    <meta http-equiv="Expires" content="0" />
10    <meta name="google-site-verification" content="1iqVdpLZF462X9pySkl_MEWQfvSqA1h7-TSK6gFJaGQ" />
11    
12    <!-- Favicon (统一品牌图标) -->
13    <link rel="apple-touch-icon" sizes="180x180" href="/images/pwa/apple-touch-icon.png?v=1791598900" />
14    <link rel="apple-touch-icon" sizes="120x120" href="/images/pwa/apple-touch-icon-120x120.png?v=1791598900" />
15    <link rel="apple-touch-icon" sizes="152x152" href="/images/pwa/apple-touch-icon-152x152.png?v=1791598900" />
16    <link rel="apple-touch-icon" sizes="167x167" href="/images/pwa/apple-touch-icon-167x167.png?v=1791598900" />
17    <link rel="apple-touch-icon" sizes="180x180" href="/images/pwa/apple-touch-icon-180x180.png?v=1791598900" />
18    <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon/favicon-32x32.png?v=1791598900" />
19    <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon/favicon-16x16.png?v=1791598900" />
20    
21    <!-- PWA Manifest - 固定使用越南语 -->
22    <link rel="manifest" href="/images/favicon/site-vi.webmanifest" />
23    
24    <!-- 主要ICO格式 - 包含多尺寸 -->
25    <link rel="icon" type="image/x-icon" href="/images/favicon/favicon.ico?v=1791598900" />
26    <link rel="shortcut icon" href="/images/favicon/favicon.ico?v=1791598900" />
27    
28    <!-- PWA Meta Tags -->
29    <meta name="application-name" content="XOIGAC.TV" />
30    <meta name="apple-mobile-web-app-title" content="XOIGAC.TV" />
31    <meta name="apple-mobile-web-app-capable" content="yes" />
32    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
33    <meta name="mobile-web-app-capable" content="yes" />
34    <meta name="theme-color" content="#309e58" />
35    <meta name="msapplication-TileColor" content="#309e58" />
36    <meta name="msapplication-config" content="/browserconfig.xml" />
37    
38    <!-- SEO: 标题 -->
39    <title>Tr&#x1EF1;c ti&#x1EBF;p b&#xF3;ng &#x111;&#xE1; h&#xF4;m nay - Xem b&#xF3;ng &#x111;&#xE1; tr&#x1EF1;c tuy&#x1EBF;n HD | Xoigac TV</title>
40    
41    <!-- SEO: 基本元标签 -->
42        <meta name="description" content="Xem tr&#x1EF1;c ti&#x1EBF;p b&#xF3;ng &#x111;&#xE1; h&#xF4;m nay mi&#x1EC5;n ph&#xED; t&#x1EA1;i Xoigac TV. Ph&#xE1;t s&#xF3;ng tr&#x1EF1;c ti&#x1EBF;p t&#x1EA5;t c&#x1EA3; c&#xE1;c tr&#x1EAD;n &#x111;&#x1EA5;u Ngo&#x1EA1;i h&#x1EA1;ng Anh, La Liga, Champions League, V-League v&#x1EDB;i ch&#x1EA5;t l&#x1B0;&#x1EE3;ng HD, kh&#xF4;ng gi&#x1EAD;t lag, c&#xF3; b&#xEC;nh lu&#x1EAD;n ti&#x1EBF;ng Vi&#x1EC7;t." />
43        <meta name="keywords" content="tr&#x1EF1;c ti&#x1EBF;p b&#xF3;ng &#x111;&#xE1;, xem b&#xF3;ng &#x111;&#xE1; tr&#x1EF1;c tuy&#x1EBF;n, b&#xF3;ng &#x111;&#xE1; live" />
44    
45    <!-- SEO: Robots -->
46    <meta name="robots" content="index, follow" />
47    
48    <!-- SEO: Canonical URL -->
49    <link rel="canonical" href="https://xoigac.top/truc-tiep" id="canonicalUrl" />
50    
51    <!-- SEO: Open Graph -->
52    <meta property="og:type" content="website" />
53    <meta property="og:title" content="Tr&#x1EF1;c ti&#x1EBF;p b&#xF3;ng &#x111;&#xE1; h&#xF4;m nay - Xem b&#xF3;ng &#x111;&#xE1; tr&#x1EF1;c tuy&#x1EBF;n HD | Xoigac TV" />
54    <meta property="og:description" content="Xem tr&#x1EF1;c ti&#x1EBF;p b&#xF3;ng &#x111;&#xE1; h&#xF4;m nay mi&#x1EC5;n ph&#xED; t&#x1EA1;i Xoigac TV. Ph&#xE1;t s&#xF3;ng tr&#x1EF1;c ti&#x1EBF;p t&#x1EA5;t c&#x1EA3; c&#xE1;c tr&#x1EAD;n &#x111;&#x1EA5;u Ngo&#x1EA1;i h&#x1EA1;ng Anh, La Liga, Champions League, V-League v&#x1EDB;i ch&#x1EA5;t l&#x1B0;&#x1EE3;ng HD, kh&#xF4;ng gi&#x1EAD;t lag, c&#xF3; b&#xEC;nh lu&#x1EAD;n ti&#x1EBF;ng Vi&#x1EC7;t." />
55    <meta property="og:url" content="https://xoigac.top/truc-tiep" id="ogUrl" />
56    <meta property="og:image" content="https://xoigac.top/images/og-default.jpg" id="ogImage" />
57    <meta property="og:site_name" content="XOIGAC" />
58    <meta property="og:locale" content="vi_VN" />
59    
60    <!-- SEO: Twitter Card -->
61    <meta name="twitter:card" content="summary_large_image" />
62    <meta name="twitter:title" content="Tr&#x1EF1;c ti&#x1EBF;p b&#xF3;ng &#x111;&#xE1; h&#xF4;m nay - Xem b&#xF3;ng &#x111;&#xE1; tr&#x1EF1;c tuy&#x1EBF;n HD | Xoigac TV" />
63    <meta name="twitter:description" content="Xem tr&#x1EF1;c ti&#x1EBF;p b&#xF3;ng &#x111;&#xE1; h&#xF4;m nay mi&#x1EC5;n ph&#xED; t&#x1EA1;i Xoigac TV. Ph&#xE1;t s&#xF3;ng tr&#x1EF1;c ti&#x1EBF;p t&#x1EA5;t c&#x1EA3; c&#xE1;c tr&#x1EAD;n &#x111;&#x1EA5;u Ngo&#x1EA1;i h&#x1EA1;ng Anh, La Liga, Champions League, V-League v&#x1EDB;i ch&#x1EA5;t l&#x1B0;&#x1EE3;ng HD, kh&#xF4;ng gi&#x1EAD;t lag, c&#xF3; b&#xEC;nh lu&#x1EAD;n ti&#x1EBF;ng Vi&#x1EC7;t." />
64    <meta name="twitter:image" content="https://xoigac.top/images/og-default.jpg" id="twitterImage" />
65    
66    <!-- SEO: 越南语页面标注 -->
67    <link rel="alternate" hreflang="vi" href="https://xoigac.top/truc-tiep" id="hreflangVi" />
68    
69    <!-- SEO: 结构化数据 (JSON-LD) -->
70        
70<script type="application/ld+json" id="structuredData">
71        {
72            "@context": "https://schema.org",
73            "@type": "WebSite",
74            "name": "XOIGAC",
75            "url": "https://xoigac.top"
76        }
77        </script>
77
78    
79    <!-- 预加载关键资源 -->
80    <!-- ★ 添加 crossorigin 属性以支持第三方Cookie的SameSite策略 -->
81    <link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin>
82    <link rel="preconnect" href="https://fonts.googleapis.com" crossorigin>
83    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
84    <link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin>
85    <link rel="preconnect" href="https://player.live-video.net" crossorigin>
86    <link rel="dns-prefetch" href="https://media.api-sports.io">
87    <link rel="dns-prefetch" href="https://player.live-video.net">
88    
89    <!-- 预加载关键 CSS -->
90    <!-- ★ 所有第三方资源都添加 crossorigin 属性 -->
91    <!-- 预加载关键字体文件 - 本地字体 -->
92    <link rel="preload" href="/fonts/fa-solid-900.woff2" as="font" type="font/woff2" crossorigin>
93    <link rel="preload" href="/fonts/fa-regular-400.woff2" as="font" type="font/woff2" crossorigin>
94    <link rel="preload" href="/fonts/fa-brands-400.woff2" as="font" type="font/woff2" crossorigin>
95    
96    <!-- CSS 文件 - 直接加载关键CSS,避免preload延迟 -->
97    <link id="bootstrap-css" href="/lib/bootstrap/5.3.2/bootstrap.min.css?v=MBffSnbbXwHCuZtgPYiwMQbfE7z-GOZ7fBPCNB06Z98" rel="stylesheet" onerror="this.onerror=null;this.href='https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css';">
98    
99        <!-- 生产环境:使用打包文件(4个CSS合并为1个)-->
100        <link href="/dist/css/critical.bundle.css?v=XWbFOGVWnVX6Tnz6ky1zKDOPGpmCQnhsl55yeMheUfs" rel="stylesheet">
101    
102    <!-- Google Fonts - 优化加载:只加载2个字重,异步加载 -->
103    <link rel="preconnect" href="https://fonts.googleapis.com" crossorigin>
104    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
105    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap" rel="stylesheet" media="print" onload="this.media='all'" crossorigin>
106    <noscript><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap" rel="stylesheet" crossorigin></noscript>
107    
108    <!-- 验证码脚本 - 仅未登录用户加载 -->
109        <meta name="captcha-enabled" content="false" />
110    
111    <!-- 非关键 CSS 使用异步加载 -->
112        <!-- 生产环境:使用打包文件(3个CSS合并为1个)-->
113        <link rel="preload" href="/dist/css/secondary.bundle.css?v=vkHyf3YjhiKhZnM2tUU5WSPJxcjBs_0wPPkWhNiZK0I" as="style" onload="this.onload=null;this.rel='stylesheet'">
114        <noscript><link href="/dist/css/secondary.bundle.css?v=vkHyf3YjhiKhZnM2tUU5WSPJxcjBs_0wPPkWhNiZK0I" rel="stylesheet" /></noscript>
115    <link href="/dist/css/streamer-follow.css?v=ZAQYBpWCFr8V9ttpEYE9xOwd8DhRemjzaB03PbKbm2M" rel="stylesheet">
116    <link href="/css/match-list.css?v=GeEuEA-6-18coW8mGwJWMXhZZwWa-z0T70LLP7DN2B8" rel="stylesheet">
117    <link href="/css/custom-select.css?v=zLL0ZkTEHUXx7DsnfbR23K816oiaK7d-ktskvIXEY8w" rel="stylesheet">
118    <!-- 保存当前语言和环境供 JS 使用 -->
119    
119<script>
120        window.__currentLang = 'vi';
121        window.__isDevelopment = 'false';
122        window.__matchRoutePrefix = '/truc-tiep';
123        window.__leagueRoutePrefix = '/giai-dau';
124        window.__teamRoutePrefix = '/doi-bong';
125        window.currentUserName = null;
126        (function () {
127            function isDirectoryCenterPath(pathname) {
128                var path = (pathname || '').replace(/\/+$/, '') || '/';
129                var known = ['/giai-dau', '/doi-bong', '/leagues', '/teams', window.__leagueRoutePrefix, window.__teamRoutePrefix];
130                for (var i = 0; i < known.length; i++) {
131                    var item = (known[i] || '').replace(/\/+$/, '');
132                    if (item && path === item) return true;
133                }
134                return false;
135            }
136            function isMatchDetailPath(pathname) {
137                return /-id\d+(?:\/|$)/i.test(pathname)
138                    || pathname.indexOf('/live/beauty/') === 0
139                    || pathname.indexOf('/live/football/') === 0
140                    || pathname.indexOf('/Match/Details') === 0
141                    || isDirectoryCenterPath(pathname);
142            }
143            function resetMatchDetailScroll() {
144                if (!isMatchDetailPath(location.pathname)) return;
145                window.scrollTo(0, 0);
146            }
147            resetMatchDetailScroll();
148            window.addEventListener('pageshow', resetMatchDetailScroll);
149        })();
150    </script>
150
151    
151<script src="/dist/js/share-utils.js?v=seUNJSOqxgP-1Bne1jM_9IfNGt5lEbiqu6Fc4jHd96s"></script>
151
152    
153    <!-- 内联关键CSS以避免渲染阻塞 -->
154    <style>
155    /* 页面加载遮罩层 - 防止抖动 */
156    .page-loader {
157        position: fixed;
158     style>
159    /   t加载遮罩层 - 防止抖动 */op: 0;
160        left: 0;
161        width: 100%;
162        height: 100%;
163        background: #060a10;
164        z-index: 99999;
165        display: flex;
166        align-items: center;
167        justify-content: center;
168        flex-direction: column;
169        gap: 1.5rem;
170        transition: opacity 0.3s ease, visibility 0.3s ease;
171    }
172    .page-loader.fade-out {
173        opacity: 0;
174        visibility: hidden;
175        pointer-events: none;
176    }
177    .page-loader.hidden {
178        display: none !important;
179        visibility: hidden !important;
180        pointer-events: none !important;
181        opacity: 0 !important;
182    }
183    
184    /* 聊天遮罩层:仅在隐藏时禁用点击,显示时允许点击以关闭弹窗 */
185    .chat-modal-overlay.d-none {
186        display: none !important;
187        visibility: hidden !important;
188        pointer-events: none !important;
189    }
190    /* 确保 Bootstrap 模态框不被任何自定义遮罩层阻挡 */
191    .modal.show {
192        z-index: 11000 !important;
193    }
194    .modal-backdrop.show {
195        z-index: 10990 !important;
196    }
197    .page-loader-spinner {
198        position: relative;
199        width: 60px;
200        height: 60px;
201    }
202    .page-loader-spinner::before,
203    .page-loader-spinner::after {
204        content: '';
205        position: absolute;
206        border-radius: 50%;
207    }
208    .page-loader-spinner::before {
209        width: 100%;
210        height: 100%;
211        background: conic-gradient(from 0deg, transparent, #309e58, transparent 70%);
212        animation: loader-spin 1s linear infinite;
213    }
214    .page-loader-spinner::after {
215        top: 6px;
216        left: 6px;
217        right: 6px;
218        bottom: 6px;
219        background: #060a10;
220    }
221    .page-loader-icon {
222        position: absolute;
223        top: 50%;
224        left: 50%;
225        transform: translate(-50%, -50%);
226        z-index: 1;
227        font-size: 1.25rem;
228        color: #309e58;
229        animation: loader-pulse 1.5s ease-in-out infinite;
230    }
231    .page-loader-text {
232        color: #64748b;
233        font-size: 0.875rem;
234        font-weight: 500;
235        letter-spacing: 0.5px;
236    }
237    @keyframes loader-spin {
238        to { transform: rotate(360deg); }
239    }
240    @keyframes loader-pulse {
241        0%, 100% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
242        50% { opacity: 0.6; transform: translate(-50%, -50%) scale(0.9); }
243    }
244    
245    /* 基础布局样式 - 防止布局抖动 */
246    body { 
247        margin: 0; 
248        padding: 0; 
249        background: #060a10; 
250        color: #fff; 
251        font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
252    }
253    </style>
254    
255    <!-- CSS加载完成检测和fallback -->
256    
256<script>
257    (function() {
258        // 确保CSS加载完成
259        function loadCSS(href, onload) {
260           var link = document.createElement('link');
261            link.rel = 'stylesheet';
262            link.href = href;
263            if (onload) link.onload = onload;
264            document.head.appendChild(link);
265        }
266        
267        // 检测preload是否成功,如果失败则fallback
268        setTimeout(function() {
269            var preloadLinks = document.querySelectorAll('link[rel="preload"][as="style"]');
270            preloadLinks.forEach(function(link) {
271                if (!link.sheet || link.sheet.cssRules.length === 0) {
272                    // preload失败,直接加载CSS
273                    loadCSS(link.href);
274                }
275            });
276        }, 1000);
277    })();
278    </script>
278
279    
280
281    
282    
283    
284</head>
285<body class="dark-theme  " data-enable-console-log="false" data-retry-text="Th&#x1EED; l&#x1EA1;i" data-report-text="B&#xE1;o l&#x1ED7;i" data-playback-failed-text="L&#x1ED7;i ph&#xE1;t" data-unsupported-text="Tr&#xEC;nh duy&#x1EC7;t c&#x1EE7;a b&#x1EA1;n kh&#xF4;ng h&#x1ED7; tr&#x1EE3; tr&#xEC;nh ph&#xE1;t n&#xE0;y" data-loading-text="&#x110;ang t&#x1EA3;i t&#xE0;i nguy&#xEA;n, vui l&#xF2;ng &#x111;&#x1EE3;i v&#xE0;i gi&#xE2;y..." data-loading-hint-text="N&#x1EBF;u video kh&#xF4;ng ph&#xE1;t &#x111;&#x1B0;&#x1EE3;c ho&#x1EB7;c b&#x1ECB; gi&#x1EAD;t, h&#xE3;y th&#x1EED; t&#x1EA3;i l&#x1EA1;i" data-stream-starting-text="&#x110;ang kh&#x1EDF;i &#x111;&#x1ED9;ng tr&#x1EF1;c ti&#x1EBF;p, vui l&#xF2;ng &#x111;&#x1EE3;i" data-connecting-stream-text="&#x110;ang k&#x1EBF;t n&#x1ED1;i ngu&#x1ED3;n tr&#x1EF1;c ti&#x1EBF;p..." data-stream-timeout-text="Ch&#x1B0;a b&#x1EAF;t &#x111;&#x1EA7;u tr&#x1EF1;c ti&#x1EBF;p" data-not-live-text="Ch&#x1B0;a b&#x1EAF;t &#x111;&#x1EA7;u tr&#x1EF1;c ti&#x1EBF;p" data-wait-text="">
286    
287    <!-- 页面内容立即可见 - 移除CSS等待逻辑 -->
288    
288<script>
289    // 页面内容立即可见,不等待任何资源
290    document.body.style.visibility = 'visible';
291    document.body.classList.add('css-loaded');
292    </script>
292
293    <!-- 控制台日志配置 - 同步执行,必须早于 core.bundle.js,否则打包脚本的启动日志已经打出 -->
294    
294<script src="/dist/js/console-config.js"></script>
294
295    
296    <!-- 页面加载动画 -->
297    <div class="page-loader" id="pageLoader" style="display: none;">
298        <div class="page-loader-spinner">
299            <i class="fas fa-futbol page-loader-icon"></i>
300        </div>
301        <div class="page-loader-text">XOIGAC.TV</div>
302    </div>
303    
304    <!-- 顶部导航栏 -->
305    <nav class="navbar navbar-expand-lg navbar-dark fixed-top" id="siteNavbar">
306        <!-- 移动端 PWA 安装横幅 (navbar内部顶部) -->
307        <div id="pwa-top-banner" class="pwa-top-banner d-none">
308            <button class="pwa-top-banner-close" onclick="closePwaTopBanner()" aria-label="关闭">
309                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
310            </button>
311            <img src="/images/pwa/apple-touch-icon.png?v=20260923" alt="App" class="pwa-top-banner-icon">
312            <div class="pwa-top-banner-text">
313                <strong>&#x1EE8;ng D&#x1EE5;ng Xoigac.tv</strong>
314                <span>Xem b&#xF3;ng &#x111;&#xE1; tr&#x1EF1;c ti&#x1EBF;p m&#x1ECD;i l&#xFA;c, m&#x1ECD;i n&#x1A1;i.</span>
315            </div>
316            <button class="pwa-top-banner-install" onclick="installPwaFromBanner()">C&#xE0;i &#x110;&#x1EB7;t Ngay</button>
317        </div>
318
319        <div class="navbar-container search-collapsed">
320            <!-- 左侧:Logo -->
321            <a class="navbar-brand d-flex align-items-center" href="/">
322                <img src="/images/logo-full.webp" alt="XOIGAC" class="brand-logo-full" width="889" height="240" onerror="if(!this.dataset.fallback){this.src='/images/logo-full.png';this.dataset.fallback='true';}">
323            </a>
324            
325            <!-- H5: 用户操作区放到菜单图标左侧 -->
326            <div class="mobile-user-actions d-lg-none">
327                <!-- Push 通知按钮 (移动端) -->
328                <button class="btn btn-icon" id="mobile-push-subscribe-btn" data-i18n-title="push.enableNotifications" title="B&#x1EAD;t th&#xF4;ng b&#xE1;o &#x111;&#x1EA9;y" aria-label="B&#x1EAD;t th&#xF4;ng b&#xE1;o &#x111;&#x1EA9;y" style="display: none;">
329                    <i class="fas fa-bell"></i>
330                </button>
331                <button class="btn btn-icon" data-i18n-title="common.favorites" title="Y&#xEA;u th&#xED;ch" aria-label="Y&#xEA;u th&#xED;ch" data-auth="false" onclick="handleNavbarFavoriteClick(this)">
332                    <i class="fas fa-star"></i>
333                </button>
334                
335                <!-- 移动端语言切换按钮 (收藏右侧,只显示图标) -->
336                <div class="dropdown">
337                    <button class="btn btn-icon dropdown-toggle" type="button" data-bs-toggle="dropdown" data-i18n-title="common.changeLanguage" title="&#x110;&#x1ED5;i ng&#xF4;n ng&#x1EEF;" aria-label="&#x110;&#x1ED5;i ng&#xF4;n ng&#x1EEF;">
338                        <i class="fas fa-globe"></i>
339                    </button>
340                    <ul class="dropdown-menu dropdown-menu-end">
341                        <li><a class="dropdown-item" href="/set-lang?lang=vi&amp;returnUrl=%2Ftruc-tiep" rel="nofollow" onclick="event.preventDefault(); changeLanguage('vi')"><span class="me-2">🇻🇳</span>Tiếng Việt (VI)</a></li>
342                        <li><a class="dropdown-item" href="/set-lang?lang=en&amp;returnUrl=%2Ftruc-tiep" rel="nofollow" onclick="event.preventDefault(); changeLanguage('en')"><span class="me-2">🇺🇸</span>English (EN)</a></li>
343                        <li><a class="dropdown-item" href="/set-lang?lang=zh&amp;returnUrl=%2Ftruc-tiep" rel="nofollow" onclick="event.preventDefault(); changeLanguage('zh')"><span class="me-2">🇨🇳</span>中文 (ZH)</a></li>
344                    </ul>
345                </div>
346                
347                    <a href="javascript:void(0)" onclick="window.AuthModal?.open('login')" class="btn btn-icon" title="登录" aria-label="登录">
348                        <i class="fas fa-user"></i>
349                    </a>
350            </div>
351
352            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Menu">
353                <span class="navbar-toggler-icon"></span>
354            </button>
355
356            <div class="collapse navbar-collapse" id="navbarNav">
357                <!-- 移动端搜索框 -->
358                <div class="mobile-search-box d-lg-none mb-3 mt-2">
359                    <input type="text" 
360                           id="mobileSearchInput"
361                           name="mobileSearchInput"
362                           class="mobile-search-input" 
363                           placeholder="T&#xEC;m ki&#x1EBF;m &#x111;&#x1ED9;i b&#xF3;ng, gi&#x1EA3;i &#x111;&#x1EA5;u..."
364                           autocomplete="off" />
365                    <button type="button" class="btn btn-search-icon" id="mobileSearchButton" title="T&#xEC;m ki&#x1EBF;m &#x111;&#x1ED9;i b&#xF3;ng, gi&#x1EA3;i &#x111;&#x1EA5;u..." aria-label="T&#xEC;m ki&#x1EBF;m &#x111;&#x1ED9;i b&#xF3;ng, gi&#x1EA3;i &#x111;&#x1EA5;u...">
366                        <i class="fas fa-search"></i>
367                    </button>
368                </div>
369                <ul class="navbar-nav me-auto">
370                    <li class="nav-item">
371                        <a class="nav-link nav-link-icon " href="/">
372                            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
373                            <span>Trang ch&#x1EE7;</span>
374                        </a>
375                    </li>
376                    <li class="nav-item">
377                        <a class="nav-link nav-link-icon " href="/truc-tiep">
378                            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="2"></circle><path d="M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14"></path></svg>
379                            <span>Tr&#x1EF1;c ti&#x1EBF;p</span>
380                        </a>
381                    </li>
382                    <li class="nav-item">
383                        <a class="nav-link nav-link-icon " href="/hom-nay">
384                            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg>
385                            <span>H&#xF4;m nay</span>
386                        </a>
387                    </li>
388                    <li class="nav-item">
389                        <a class="nav-link nav-link-icon " href="/lich-thi-dau">
390                            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
391                            <span>L&#x1ECB;ch thi &#x111;&#x1EA5;u</span>
392                        </a>
393                    </li>
394                    <li class="nav-item">
395                        <a class="nav-link nav-link-icon " href="/tin-tuc-bong-da">
396                            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 22h16a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v16a2 2 0 0 1-2 2Zm0 0a2 2 0 0 1-2-2v-9c0-1.1.9-2 2-2h2"></path><path d="M18 14h-8"></path><path d="M15 18h-5"></path><path d="M10 6h8v4h-8V6Z"></path></svg>
397                            <span>Tin T&#x1EE9;c</span>
398                        </a>
399                    </li>
400                    <li class="nav-item">
401                        <a class="nav-link nav-link-icon " href="/nhan-dinh-bong-da">
402                            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"></line><line x1="12" y1="20" x2="12" y2="4"></line><line x1="6" y1="20" x2="6" y2="14"></line></svg>
403                            <span>Nh&#x1EAD;n &#x110;&#x1ECB;nh</span>
404                        </a>
405                    </li>
406                </ul>
407                
408                <!-- PC端搜索框(居右,在主内容容器内) -->
409                <div class="search-box d-none d-lg-flex" id="desktopSearchBox">
410                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"></circle><path d="m21 21-4.35-4.35"></path></svg>
411                    <input type="text" placeholder="T&#xEC;m ki&#x1EBF;m &#x111;&#x1ED9;i b&#xF3;ng, gi&#x1EA3;i &#x111;&#x1EA5;u..." />
412                </div>
413                
414                <!-- 搜索弹出框 -->
415                <div class="search-popup" id="searchPopup">
416                    <div class="search-popup-content">
417                        <div class="search-input-wrapper">
418                            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"></circle><path d="m21 21-4.35-4.35"></path></svg>
419                            <input type="text" placeholder="T&#xEC;m ki&#x1EBF;m &#x111;&#x1ED9;i b&#xF3;ng, gi&#x1EA3;i &#x111;&#x1EA5;u..." id="popupSearchInput" />
420                            <button class="btn btn-icon search-close-btn" id="searchCloseBtn" aria-label="&#x110;&#xF3;ng">
421                                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
422                            </button>
423                        </div>
424                    </div>
425                </div>
426                
427                <!-- PC端:用户操作区(移入导航栏容器内部) -->
428                <div class="user-actions d-none d-lg-flex ms-auto">
429                    <!-- Push 通知按钮 (桌面端) -->
430                    <button class="btn btn-icon" id="push-subscribe-btn" data-i18n-title="push.enableNotifications" title="B&#x1EAD;t th&#xF4;ng b&#xE1;o &#x111;&#x1EA9;y" aria-label="B&#x1EAD;t th&#xF4;ng b&#xE1;o &#x111;&#x1EA9;y" style="display: none;">
431                        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"></path><path d="M13.73 21a2 2 0 0 1-3.46 0"></path></svg>
432                    </button>
433                    <button class="btn btn-icon" data-i18n-title="common.favorites" title="Y&#xEA;u th&#xED;ch" aria-label="Y&#xEA;u th&#xED;ch" data-auth="false" onclick="handleNavbarFavoriteClick(this)">
434                        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg>
435                    </button>
436
437                    <!-- PC端搜索图标按钮 -->
438                    <button class="btn btn-icon search-icon-btn" id="searchIconBtn" type="button" title="T&#xEC;m ki&#x1EBF;m &#x111;&#x1ED9;i b&#xF3;ng, gi&#x1EA3;i &#x111;&#x1EA5;u..." aria-label="T&#xEC;m ki&#x1EBF;m &#x111;&#x1ED9;i b&#xF3;ng, gi&#x1EA3;i &#x111;&#x1EA5;u...">
439                        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"></circle><path d="m21 21-4.35-4.35"></path></svg>
440                    </button>
441                    
442                    <!-- PC端语言切换按钮 -->
443                    <div class="dropdown">
444                        <button class="btn btn-icon lang-switch-btn" type="button" data-bs-toggle="dropdown" data-i18n-title="common.changeLanguage" title="&#x110;&#x1ED5;i ng&#xF4;n ng&#x1EEF;" aria-label="&#x110;&#x1ED5;i ng&#xF4;n ng&#x1EEF;">
445                            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="me-1"><circle cx="12" cy="12" r="10"></circle><line x1="2" y1="12" x2="22" y2="12"></line><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"></path></svg>
446                            <span>VI</span>
447                        </button>
448                        <ul class="dropdown-menu dropdown-menu-end">
449                            <li><a class="dropdown-item" href="/set-lang?lang=vi&amp;returnUrl=%2Ftruc-tiep" rel="nofollow" onclick="event.preventDefault(); changeLanguage('vi')"><span class="me-2">🇻🇳</span>Tiếng Việt (VI)</a></li>
450                            <li><a class="dropdown-item" href="/set-lang?lang=en&amp;returnUrl=%2Ftruc-tiep" rel="nofollow" onclick="event.preventDefault(); changeLanguage('en')"><span class="me-2">🇺🇸</span>English (EN)</a></li>
451                            <li><a class="dropdown-item" href="/set-lang?lang=zh&amp;returnUrl=%2Ftruc-tiep" rel="nofollow" onclick="event.preventDefault(); changeLanguage('zh')"><span class="me-2">🇨🇳</span>中文 (ZH)</a></li>
452                        </ul>
453                    </div>
454                    
455                        <a href="javascript:void(0)" onclick="window.AuthModal?.open('login')" class="btn btn-primary btn-sm ms-2">
456                            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="me-1"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg>
457                            <span>&#x110;&#x103;ng nh&#x1EAD;p</span>
458                        </a>
459                </div>
460
461                </div>
462            </div>
463    </nav>
464    <div class="mobile-menu-overlay" id="mobileMenuOverlay" aria-hidden="true"></div>
465    
466    <!-- 主内容区 -->
467    <input name="__RequestVerificationToken" type="hidden" value="CfDJ8IwpNTNw2w9OptYg9zhENLSarm6ZM2U9J24KjyTq2TyYScz-Y3gaBfvKiKwMM_qBOj1CEl5coY873_Wo2b1oeZaDibozXqHysnsq5F2M6t1sq-oNSg6urR3gFCMVCiaXmFDteyt1QWB6sXa33SWwTno" />
468    <div id="articleGridSkeletonTemplate" hidden>
469        <div class="ags" aria-hidden="true">
470    <div class="ags-banners">
471        <div class="ags-banner ags-shimmer"></div>
472        <div class="ags-banner ags-shimmer"></div>
473        <div class="ags-banner ags-shimmer"></div>
474    </div>
475
476    <div class="ags-body">
477    <div class="ags-page-title ags-shimmer"></div>
478
479    <section class="ags-hero">
480        <div class="ags-hero-media ags-shimmer"></div>
481        <div class="ags-hero-body">
482            <div class="ags-line ags-line-title ags-shimmer"></div>
483            <div class="ags-line ags-line-title ags-line-short ags-shimmer"></div>
484            <div class="ags-line ags-shimmer"></div>
485            <div class="ags-line ags-line-mid ags-shimmer"></div>
486            <div class="ags-actions">
487                <div class="ags-btn ags-shimmer"></div>
488                <div class="ags-btn ags-shimmer"></div>
489            </div>
490        </div>
491    </section>
492
493    <div class="ags-latest">
494        <div class="ags-line ags-line-heading ags-shimmer"></div>
495        <div class="ags-search ags-shimmer"></div>
496    </div>
497
498    <div class="ags-grid">
499            <div class="ags-card">
500                <div class="ags-card-image ags-shimmer"></div>
501                <div class="ags-card-body">
502                    <div class="ags-line ags-shimmer"></div>
503                    <div class="ags-line ags-line-mid ags-shimmer"></div>
504                    <div class="ags-card-footer">
505                        <div class="ags-author">
506                            <div class="ags-avatar ags-shimmer"></div>
507                            <div class="ags-line ags-line-meta ags-shimmer"></div>
508                        </div>
509                        <div class="ags-line ags-line-date ags-shimmer"></div>
510                    </div>
511                </div>
512            </div>
513            <div class="ags-card">
514                <div class="ags-card-image ags-shimmer"></div>
515                <div class="ags-card-body">
516                    <div class="ags-line ags-shimmer"></div>
517                    <div class="ags-line ags-line-mid ags-shimmer"></div>
518                    <div class="ags-card-footer">
519                        <div class="ags-author">
520                            <div class="ags-avatar ags-shimmer"></div>
521                            <div class="ags-line ags-line-meta ags-shimmer"></div>
522                        </div>
523                        <div class="ags-line ags-line-date ags-shimmer"></div>
524                    </div>
525                </div>
526            </div>
527            <div class="ags-card">
528                <div class="ags-card-image ags-shimmer"></div>
529                <div class="ags-card-body">
530                    <div class="ags-line ags-shimmer"></div>
531                    <div class="ags-line ags-line-mid ags-shimmer"></div>
532                    <div class="ags-card-footer">
533                        <div class="ags-author">
534                            <div class="ags-avatar ags-shimmer"></div>
535                            <div class="ags-line ags-line-meta ags-shimmer"></div>
536                        </div>
537                        <div class="ags-line ags-line-date ags-shimmer"></div>
538                    </div>
539                </div>
540            </div>
541            <div class="ags-card">
542                <div class="ags-card-image ags-shimmer"></div>
543                <div class="ags-card-body">
544                    <div class="ags-line ags-shimmer"></div>
545                    <div class="ags-line ags-line-mid ags-shimmer"></div>
546                    <div class="ags-card-footer">
547                        <div class="ags-author">
548                            <div class="ags-avatar ags-shimmer"></div>
549                            <div class="ags-line ags-line-meta ags-shimmer"></div>
550                        </div>
551                        <div class="ags-line ags-line-date ags-shimmer"></div>
552                    </div>
553                </div>
554            </div>
555            <div class="ags-card">
556                <div class="ags-card-image ags-shimmer"></div>
557                <div class="ags-card-body">
558                    <div class="ags-line ags-shimmer"></div>
559                    <div class="ags-line ags-line-mid ags-shimmer"></div>
560                    <div class="ags-card-footer">
561                        <div class="ags-author">
562                            <div class="ags-avatar ags-shimmer"></div>
563                            <div class="ags-line ags-line-meta ags-shimmer"></div>
564                        </div>
565                        <div class="ags-line ags-line-date ags-shimmer"></div>
566                    </div>
567                </div>
568            </div>
569            <div class="ags-card">
570                <div class="ags-card-image ags-shimmer"></div>
571                <div class="ags-card-body">
572                    <div class="ags-line ags-shimmer"></div>
573                    <div class="ags-line ags-line-mid ags-shimmer"></div>
574                    <div class="ags-card-footer">
575                        <div class="ags-author">
576                            <div class="ags-avatar ags-shimmer"></div>
577                            <div class="ags-line ags-line-meta ags-shimmer"></div>
578                        </div>
579                        <div class="ags-line ags-line-date ags-shimmer"></div>
580                    </div>
581                </div>
582            </div>
583            <div class="ags-card">
584                <div class="ags-card-image ags-shimmer"></div>
585                <div class="ags-card-body">
586                    <div class="ags-line ags-shimmer"></div>
587                    <div class="ags-line ags-line-mid ags-shimmer"></div>
588                    <div class="ags-card-footer">
589                        <div class="ags-author">
590                            <div class="ags-avatar ags-shimmer"></div>
591                            <div class="ags-line ags-line-meta ags-shimmer"></div>
592                        </div>
593                        <div class="ags-line ags-line-date ags-shimmer"></div>
594                    </div>
595                </div>
596            </div>
597            <div class="ags-card">
598                <div class="ags-card-image ags-shimmer"></div>
599                <div class="ags-card-body">
600                    <div class="ags-line ags-shimmer"></div>
601                    <div class="ags-line ags-line-mid ags-shimmer"></div>
602                    <div class="ags-card-footer">
603                        <div class="ags-author">
604                            <div class="ags-avatar ags-shimmer"></div>
605                            <div class="ags-line ags-line-meta ags-shimmer"></div>
606                        </div>
607                        <div class="ags-line ags-line-date ags-shimmer"></div>
608                    </div>
609                </div>
610            </div>
611            <div class="ags-card">
612                <div class="ags-card-image ags-shimmer"></div>
613                <div class="ags-card-body">
614                    <div class="ags-line ags-shimmer"></div>
615                    <div class="ags-line ags-line-mid ags-shimmer"></div>
616                    <div class="ags-card-footer">
617                        <div class="ags-author">
618                            <div class="ags-avatar ags-shimmer"></div>
619                            <div class="ags-line ags-line-meta ags-shimmer"></div>
620                        </div>
621                        <div class="ags-line ags-line-date ags-shimmer"></div>
622                    </div>
623                </div>
624            </div>
625            <div class="ags-card">
626                <div class="ags-card-image ags-shimmer"></div>
627                <div class="ags-card-body">
628                    <div class="ags-line ags-shimmer"></div>
629                    <div class="ags-line ags-line-mid ags-shimmer"></div>
630                    <div class="ags-card-footer">
631                        <div class="ags-author">
632                            <div class="ags-avatar ags-shimmer"></div>
633                            <div class="ags-line ags-line-meta ags-shimmer"></div>
634                        </div>
635                        <div class="ags-line ags-line-date ags-shimmer"></div>
636                    </div>
637                </div>
638            </div>
639            <div class="ags-card">
640                <div class="ags-card-image ags-shimmer"></div>
641                <div class="ags-card-body">
642                    <div class="ags-line ags-shimmer"></div>
643                    <div class="ags-line ags-line-mid ags-shimmer"></div>
644                    <div class="ags-card-footer">
645                        <div class="ags-author">
646                            <div class="ags-avatar ags-shimmer"></div>
647                            <div class="ags-line ags-line-meta ags-shimmer"></div>
648                        </div>
649                        <div class="ags-line ags-line-date ags-shimmer"></div>
650                    </div>
651                </div>
652            </div>
653            <div class="ags-card">
654                <div class="ags-card-image ags-shimmer"></div>
655                <div class="ags-card-body">
656                    <div class="ags-line ags-shimmer"></div>
657                    <div class="ags-line ags-line-mid ags-shimmer"></div>
658                    <div class="ags-card-footer">
659                        <div class="ags-author">
660                            <div class="ags-avatar ags-shimmer"></div>
661                            <div class="ags-line ags-line-meta ags-shimmer"></div>
662                        </div>
663                        <div class="ags-line ags-line-date ags-shimmer"></div>
664                    </div>
665                </div>
666            </div>
667            <div class="ags-card">
668                <div class="ags-card-image ags-shimmer"></div>
669                <div class="ags-card-body">
670                    <div class="ags-line ags-shimmer"></div>
671                    <div class="ags-line ags-line-mid ags-shimmer"></div>
672                    <div class="ags-card-footer">
673                        <div class="ags-author">
674                            <div class="ags-avatar ags-shimmer"></div>
675                            <div class="ags-line ags-line-meta ags-shimmer"></div>
676                        </div>
677                        <div class="ags-line ags-line-date ags-shimmer"></div>
678                    </div>
679                </div>
680            </div>
681            <div class="ags-card">
682                <div class="ags-card-image ags-shimmer"></div>
683                <div class="ags-card-body">
684                    <div class="ags-line ags-shimmer"></div>
685                    <div class="ags-line ags-line-mid ags-shimmer"></div>
686                    <div class="ags-card-footer">
687                        <div class="ags-author">
688                            <div class="ags-avatar ags-shimmer"></div>
689                            <div class="ags-line ags-line-meta ags-shimmer"></div>
690                        </div>
691                        <div class="ags-line ags-line-date ags-shimmer"></div>
692                    </div>
693                </div>
694            </div>
695            <div class="ags-card">
696                <div class="ags-card-image ags-shimmer"></div>
697                <div class="ags-card-body">
698                    <div class="ags-line ags-shimmer"></div>
699                    <div class="ags-line ags-line-mid ags-shimmer"></div>
700                    <div class="ags-card-footer">
701                        <div class="ags-author">
702                            <div class="ags-avatar ags-shimmer"></div>
703                            <div class="ags-line ags-line-meta ags-shimmer"></div>
704                        </div>
705                        <div class="ags-line ags-line-date ags-shimmer"></div>
706                    </div>
707                </div>
708            </div>
709            <div class="ags-card">
710                <div class="ags-card-image ags-shimmer"></div>
711                <div class="ags-card-body">
712                    <div class="ags-line ags-shimmer"></div>
713                    <div class="ags-line ags-line-mid ags-shimmer"></div>
714                    <div class="ags-card-footer">
715                        <div class="ags-author">
716                            <div class="ags-avatar ags-shimmer"></div>
717                            <div class="ags-line ags-line-meta ags-shimmer"></div>
718                        </div>
719                        <div class="ags-line ags-line-date ags-shimmer"></div>
720                    </div>
721                </div>
722            </div>
723            <div class="ags-card">
724                <div class="ags-card-image ags-shimmer"></div>
725                <div class="ags-card-body">
726                    <div class="ags-line ags-shimmer"></div>
727                    <div class="ags-line ags-line-mid ags-shimmer"></div>
728                    <div class="ags-card-footer">
729                        <div class="ags-author">
730                            <div class="ags-avatar ags-shimmer"></div>
731                            <div class="ags-line ags-line-meta ags-shimmer"></div>
732                        </div>
733                        <div class="ags-line ags-line-date ags-shimmer"></div>
734                    </div>
735                </div>
736            </div>
737            <div class="ags-card">
738                <div class="ags-card-image ags-shimmer"></div>
739                <div class="ags-card-body">
740                    <div class="ags-line ags-shimmer"></div>
741                    <div class="ags-line ags-line-mid ags-shimmer"></div>
742                    <div class="ags-card-footer">
743                        <div class="ags-author">
744                            <div class="ags-avatar ags-shimmer"></div>
745                            <div class="ags-line ags-line-meta ags-shimmer"></div>
746                        </div>
747                        <div class="ags-line ags-line-date ags-shimmer"></div>
748                    </div>
749                </div>
750            </div>
751            <div class="ags-card">
752                <div class="ags-card-image ags-shimmer"></div>
753                <div class="ags-card-body">
754                    <div class="ags-line ags-shimmer"></div>
755         
755           <div class="ags-line ags-line-mid ags-shimmer"></div>
756                    <div class="ags-card-footer">
757                        <div class="ags-author">
758                            <div class="ags-avatar ags-shimmer"></div>
759                            <div class="ags-line ags-line-meta ags-shimmer"></div>
760                        </div>
761                        <div class="ags-line ags-line-date ags-shimmer"></div>
762                    </div>
763                </div>
764            </div>
765            <div class="ags-card">
766                <div class="ags-card-image ags-shimmer"></div>
767                <div class="ags-card-body">
768                    <div class="ags-line ags-shimmer"></div>
769                    <div class="ags-line ags-line-mid ags-shimmer"></div>
770                    <div class="ags-card-footer">
771                        <div class="ags-author">
772                            <div class="ags-avatar ags-shimmer"></div>
773                            <div class="ags-line ags-line-meta ags-shimmer"></div>
774                        </div>
775                        <div class="ags-line ags-line-date ags-shimmer"></div>
776                    </div>
777                </div>
778            </div>
779    </div>
780    </div>
781</div>
782
783<style>
784    .ags-shimmer {
785        position: relative;
786        overflow: hidden;
787        background: rgba(30, 41, 59, 0.6);
788        border-radius: 12px;
789    }
790
791    .ags-shimmer::after {
792        content: "";
793        position: absolute;
794        inset: 0;
795        background: linear-gradient(90deg, transparent, rgba(148, 163, 184, 0.22), transparent);
796        transform: translateX(-100%);
797        animation: ags-pulse 1.4s ease-in-out infinite;
798    }
799
800    .ags-banners {
801        display: flex;
802        flex-direction: column;
803        gap: 10px;
804        margin: 16px auto;
805        padding: 0 2px;
806    }
807
808    .ags-banner {
809        width: 100%;
810        aspect-ratio: 2872 / 180;
811        border-radius: 12px;
812    }
813
814    .ags-body {
815        max-width: 1500px;
816        margin: 0 auto;
817        padding: 1rem 2rem 0;
818    }
819
820    .ags-page-title {
821        width: min(420px, 55%);
822        height: 2.1rem;
823        margin-bottom: 1.5rem;
824    }
825
826    .ags-hero {
827        display: grid;
828        grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
829        height: 370px;
830        margin-bottom: 32px;
831        border-radius: 16px;
832        overflow: hidden;
833        background: #0c1929;
834    }
835
836    .ags-hero-media {
837        height: 100%;
838        border-radius: 0;
839    }
840
841    .ags-hero-body {
842        display: flex;
843        flex-direction: column;
844        justify-content: center;
845        gap: 12px;
846        padding: 32px;
847    }
848
849    .ags-line {
850        height: 14px;
851        width: 100%;
852    }
853
854    .ags-line-title {
855        height: 22px;
856    }
857
858    .ags-line-short {
859        width: 72%;
860    }
861
862    .ags-line-mid {
863        width: 84%;
864    }
865
866    .ags-line-heading {
867        width: 180px;
868        height: 22px;
869    }
870
871    .ags-actions {
872        display: flex;
873        gap: 12px;
874        margin-top: 8px;
875    }
876
877    .ags-btn {
878        width: 128px;
879        height: 40px;
880        border-radius: 999px;
881    }
882
883    .ags-latest {
884        display: flex;
885        align-items: center;
886        justify-content: space-between;
887        gap: 16px;
888        height: 42px;
889        margin-bottom: 20px;
890    }
891
892    .ags-search {
893        width: 240px;
894        height: 40px;
895        border-radius: 10px;
896    }
897
898    .ags-grid {
899        display: grid;
900        grid-template-columns: repeat(4, minmax(0, 1fr));
901        gap: 1.5rem;
902    }
903
904    .ags-card {
905        border-radius: 20px;
906        overflow: hidden;
907        background: #0c1929;
908        border: 1px solid rgba(14, 165, 233, 0.08);
909        display: flex;
910        flex-direction: column;
911    }
912
913    .ags-card-image {
914        height: 220px;
915        border-radius: 0;
916        flex-shrink: 0;
917    }
918
919    .ags-card-body {
920        display: flex;
921        flex-direction: column;
922        padding: 1.25rem 1.5rem 1.5rem;
923    }
924
925    .ags-card-body > .ags-line:first-child {
926        height: calc(1.1rem * 1.5 * 2);
927        margin-bottom: 0.75rem;
928    }
929
930    .ags-card-body > .ags-line:nth-child(2) {
931        height: calc(0.9rem * 1.6 * 2);
932        margin-bottom: 1rem;
933    }
934
935    .ags-card-footer {
936        display: flex;
937        align-items: center;
938        justify-content: space-between;
939        margin-top: 6px;
940        padding-top: 12px;
941    }
942
943    .ags-author {
944        display: flex;
945        align-items: center;
946        gap: 8px;
947    }
948
949    .ags-avatar {
950        width: 28px;
951        height: 28px;
952        border-radius: 50%;
953        flex-shrink: 0;
954    }
955
956    .ags-line-meta {
957        width: 72px;
958        height: 12px;
959    }
960
961    .ags-line-date {
962        width: 52px;
963        height: 12px;
964    }
965
966    @media (min-width: 1920px) {
967        .ags-body { padding-left: 4rem; padding-right: 4rem; }
968    }
969
970    @media (min-width: 2560px) {
971        .ags-body { padding-left: 6rem; padding-right: 6rem; }
972    }
973
974    @media (max-width: 1400px) {
975        .ags-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
976    }
977
978    @media (max-width: 1200px) {
979        .ags-hero { height: 335px; }
980    }
981
982    @media (max-width: 992px) {
983        .ags-hero { height: 290px; }
984        .ags-body { padding-left: 0.5rem; padding-right: 0.5rem; }
985    }
986
987    @media (max-width: 768px) {
988        .ags-banners {
989            gap: 4px;
990            margin: 10px 0 0;
991            padding: 0;
992        }
993        .ags-banner {
994            aspect-ratio: 440 / 50;
995            border-radius: 10px;
996        }
997        .ags-hero { display: none; }
998        .ags-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
999        .ags-card-image { height: 180px; }
1000        .ags-latest { flex-wrap: wrap; align-items: stretch; height: 86px; row-gap: 12px; }
1001        .ags-search { width: 100%; height: 38px; }
1002    }
1003
1004    @media (max-width: 576px) {
1005        .ags-grid { grid-template-columns: 1fr; }
1006    }
1007
1008    @keyframes ags-pulse {
1009        0% { transform: translateX(-100%); }
1010        100% { transform: translateX(100%); }
1011    }
1012
1013    @media (prefers-reduced-motion: reduce) {
1014        .ags-shimmer::after { animation: none; }
1015    }
1016</style>
1017
1018    </div>
1019    <main id="main-content" class="main-content">
1020        
1021<style>
1022    .match-list-page.container-fluid {
1023        font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Inter', 'Roboto', sans-serif;
1024        -webkit-font-smoothing: antialiased;
1025        max-width: 1200px;
1026        margin: 0 auto;
1027    }
1028
1029    /* ===== SVG 图标基础 ===== */
1030    .icon {
1031        width: 1em; height: 1em;
1032        display: inline-block;
1033        vertical-align: -0.125em;
1034        fill: currentColor;
1035        stroke: currentColor;
1036        flex-shrink: 0;
1037    }
1038    .icon-empty {
1039        width: 2.5rem; height: 2.5rem;
1040    }
1041
1042    /* ===== 筛选栏 ===== */
1043    .filter-bar {
1044        padding: 12px 16px;
1045        position: sticky;
1046        top: 0;
1047        z-index: 100;
1048        background: var(--bg-body, #0d1117);
1049    }
1050    .filter-bar-row {
1051        display: flex;
1052        align-items: center;
1053        justify-content: space-between;
1054        gap: 12px;
1055    }
1056    .filter-tabs-row {
1057        display: flex;
1058        gap: 8px;
1059        overflow-x: auto;
1060        scrollbar-width: none;
1061        flex: 1;
1062        min-width: 0;
1063    }
1064    .filter-tabs-row::-webkit-scrollbar { display: none; }
1065    .filter-pill {
1066        display: inline-flex;
1067        align-items: center;
1068        gap: 6px;
1069        padding: 7px 16px;
1070        border-radius: 20px;
1071        font-size: 0.8125rem;
1072        font-weight: 600;
1073        text-decoration: none;
1074        white-space: nowrap;
1075        transition: all 0.2s;
1076        background: rgba(255,255,255,0.06);
1077        color: rgba(255,255,255,0.7);
1078        border: 1px solid rgba(255,255,255,0.08);
1079    }
1080    .filter-pill:hover {
1081        background: rgba(255,255,255,0.1);
1082        color: #fff;
1083    }
1084    .filter-pill.active {
1085        background: #22c55e;
1086        color: #fff;
1087        border-color: #22c55e;
1088    }
1089    .filter-pill .live-indicator-dot {
1090        width: 10px; height: 10px;
1091        background: #22c55e;
1092        border-radius: 50%;
1093        animation: livePulse 1.5s infinite;
1094        box-shadow: 0 0 6px rgba(34, 197, 94, 0.6);
1095    }
1096    .filter-pill.active .live-indicator-dot {
1097        background: #fff;
1098        box-shadow: 0 0 6px rgba(255, 255, 255, 0.6);
1099    }
1100    .pill-count {
1101        background: rgba(255,255,255,0.2);
1102        padding: 1px 7px;
1103        border-radius: 10px;
1104        font-size: 0.6875rem;
1105    }
1106
1107    /* ===== 联赛区块 ===== */
1108    .lg-section {
1109        border-bottom: 1px solid rgba(255,255,255,0.06);
1110    }
1111    .lg-header {
1112        display: flex;
1113        align-items: center;
1114        justify-content: space-between;
1115        padding: 10px 16px;
1116        background: rgba(255,255,255,0.03);
1117        border-bottom: 1px solid rgba(255,255,255,0.06);
1118    }
1119    .lg-header-left {
1120        display: flex;
1121        align-items: center;
1122        gap: 8px;
1123        min-width: 0;
1124    }
1125    .lg-fav-btn {
1126        background: none;
1127        border: none;
1128        color: rgba(255,255,255,0.3);
1129        padding: 4px;
1130        cursor: pointer;
1131        flex-shrink: 0;
1132    }
1133    .lg-fav-btn .icon { width: 14px; height: 14px; }
1134    .lg-fav-btn:hover { color: #fbbf24; }
1135    .lg-country-name {
1136        font-size: 0.8125rem;
1137        font-weight: 600;
1138        color: rgba(255,255,255,0.9);
1139        text-transform: uppercase;
1140        letter-spacing: 0.02em;
1141        white-space: nowrap;
1142    }
1143    .lg-logo {
1144        width: 20px; height: 20px;
1145        object-fit: contain;
1146        flex-shrink: 0;
1147    }
1148    .lg-name {
1149        font-size: 0.8125rem;
1150        font-weight: 600;
1151        color: rgba(255,255,255,0.9);
1152        white-space: nowrap;
1153        overflow: hidden;
1154        text-overflow: ellipsis;
1155    }
1156    .lg-header-right {
1157        display: flex;
1158        align-items: center;
1159        gap: 12px;
1160        flex-shrink: 0;
1161    }
1162    .lg-collapse-btn {
1163        background: none;
1164        border: none;
1165        color: rgba(255,255,255,0.4);
1166        padding: 4px 6px;
1167        cursor: pointer;
1168        transition: transform 0.2s;
1169    }
1170    .lg-collapse-btn .icon { width: 14px; height: 14px; }
1171    .lg-collapse-btn:hover { color: rgba(255,255,255,0.7); }
1172
1173    /* ===== 比赛行(双行布局) ===== */
1174    .mx-row {
1175        display: flex;
1176        align-items: center;
1177        padding: 8px 16px;
1178        border-bottom: 1px solid rgba(255,255,255,0.04);
1179        gap: 12px;
1180        transition: background 0.15s;
1181    }
1182    .mx-row:last-child { border-bottom: none; }
1183    .mx-row:hover { background: rgba(255,255,255,0.03); }
1184    .mx-row.is-live {
1185        background: rgba(34, 197, 94, 0.04);
1186    }
1187    .mx-row.is-live:hover {
1188        background: rgba(34, 197, 94, 0.07);
1189    }
1190    .mx-row.is-finished { opacity: 0.65; }
1191    .mx-row.is-finished:hover { opacity: 1; }
1192
1193    /* 左侧:收藏+状态 */
1194    .mx-left {
1195        display: flex;
1196        align-items: center;
1197        gap: 8px;
1198        flex-shrink: 0;
1199        width: 100px;
1200    }
1201    .mx-fav-btn {
1202        background: none;
1203        border: none;
1204        color: rgba(255,255,255,0.25);
1205        padding: 4px;
1206        cursor: pointer;
1207        flex-shrink: 0;
1208    }
1209    .mx-fav-btn .icon { width: 16px; height: 16px; }
1210    .mx-fav-btn:hover, .mx-fav-btn.active { color: #fbbf24; }
1211    .mx-status {
1212        display: flex;
1213        flex-direction: column;
1214        align-items: center;
1215        gap: 2px;
1216        min-width: 50px;
1217    }
1218    .mx-status-badge {
1219        font-size: 0.6875rem;
1220        font-weight: 700;
1221        padding: 2px 6px;
1222        border-radius: 4px;
1223        text-transform: uppercase;
1224        letter-spacing: 0.03em;
1225    }
1226    .mx-status-badge.live {
1227        background: rgba(239, 68, 68, 0.15);
1228        color: #ef4444;
1229        animation: liveGlow 2s infinite;
1230    }
1231    .mx-status-badge.finished { background: rgba(107,114,128,0.15); color: #9ca3af; }
1232    .mx-status-badge.ht { background: rgba(251,191,36,0.15); color: #f59e0b; }
1233    .mx-status-badge.postponed, .mx-status-badge.suspended, .mx-status-badge.interrupted {
1234        background: rgba(239,68,68,0.1); color: #ef4444;
1235    }
1236    .mx-status-badge.aet, .mx-status-badge.pen {
1237        background: rgba(139,92,246,0.15); color: #8b5cf6;
1238    }
1239    .mx-minute {
1240        color: #ef4444;
1241        font-size: 0.8125rem;
1242        font-weight: 700;
1243        font-variant-numeric: tabular-nums;
1244    }
1245    .mx-minute .minute-tick {
1246        display: inline-block;
1247        animation: minuteTickJitter 1s infinite;
1248    }
1249    .mx-time {
1250        font-size: 0.8125rem;
1251        font-weight: 600;
1252        color: rgba(255,255,255,0.85);
1253        font-variant-numeric: tabular-nums;
1254    }
1255    .mx-date {
1256        font-size: 0.6875rem;
1257        color: rgba(255,255,255,0.45);
1258    }
1259
1260    /* 中间:球队双行 */
1261    .mx-center {
1262        flex: 1;
1263        min-width: 0;
1264        display: flex;
1265        flex-direction: column;
1266        gap: 4px;
1267        color: inherit;
1268    }
1269    .mx-teams-link {
1270        display: flex;
1271        flex-direction: column;
1272        gap: 4px;
1273        text-decoration: none;
1274        color: inherit;
1275    }
1276    .mx-teams-link:hover { color: inherit; }
1277    .mx-team-row {
1278        display: flex;
1279        align-items: center;
1280        gap: 10px;
1281    }
1282    .mx-team-logo {
1283        width: 22px; height: 22px;
1284        object-fit: contain;
1285        flex-shrink: 0;
1286        border-radius: 2px;
1287    }
1288    .mx-team-name {
1289        flex: 1;
1290        font-size: 0.8125rem;
1291        font-weight: 500;
1292        color: rgba(255,255,255,0.9);
1293        white-space: nowrap;
1294        overflow: hidden;
1295        text-overflow: ellipsis;
1296    }
1297    .mx-score {
1298        font-size: 0.9375rem;
1299        font-weight: 700;
1300        min-width: 22px;
1301        text-align: center;
1302        color: rgba(255,255,255,0.9);
1303        font-variant-numeric: tabular-nums;
1304    }
1305    .mx-score.live {
1306        color: #ef4444;
1307    }
1308
1309    /* 右侧:主播标签 + 功能按钮 */
1310    .mx-right {
1311        display: flex;
1312        align-items: center;
1313        justify-content: flex-end;
1314        gap: 8px;
1315        flex-shrink: 0;
1316        max-width: 48%;
1317    }
1318    .mx-streamers {
1319        display: flex;
1320        flex-wrap: wrap;
1321        justify-content: flex-end;
1322        align-items: center;
1323        gap: 4px;
1324        max-width: 220px;
1325    }
1326    .mx-action-btn {
1327        display: inline-flex;
1328        align-items: center;
1329        gap: 4px;
1330        padding: 4px 10px;
1331        border-radius: 4px;
1332        font-size: 0.6875rem;
1333        font-weight: 600;
1334        text-decoration: none;
1335        text-transform: uppercase;
1336        letter-spacing: 0.03em;
1337        transition: all 0.15s;
1338        white-space: nowrap;
1339    }
1340    .preview-btn {
1341        background: rgba(255,255,255,0.08);
1342        color: rgba(255,255,255,0.7);
1343        border: 1px solid rgba(255,255,255,0.12);
1344    }
1345    .preview-btn:hover {
1346        background: rgba(255,255,255,0.14);
1347        color: #fff;
1348    }
1349    .live-btn {
1350        background: rgba(34, 197, 94, 0.15);
1351        color: #22c55e;
1352        border: 1px solid rgba(34, 197, 94, 0.3);
1353    }
1354    .live-btn .icon { width: 12px; height: 12px; }
1355    .live-btn:hover {
1356        background: rgba(34, 197, 94, 0.25);
1357        color: #4ade80;
1358    }
1359
1360    .schedule-sport-section {
1361        margin-top: 8px;
1362    }
1363    .schedule-category-dropdown {
1364        flex-shrink: 0;
1365    }
1366    .schedule-category-select {
1367        appearance: none;
1368        -webkit-appearance: none;
1369        min-width: 132px;
1370        max-width: 168px;
1371        padding: 7px 32px 7px 14px;
1372        border-radius: 20px;
1373        border: 1px solid rgba(255,255,255,0.12);
1374        background: rgba(255,255,255,0.08) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 12px center;
1375        color: rgba(255,255,255,0.92);
1376        font-size: 0.8125rem;
1377        font-weight: 600;
1378        cursor: pointer;
1379        transition: background 0.15s ease, border-color 0.15s ease;
1380    }
1381    button.schedule-category-select {
1382        display: inline-flex;
1383        align-items: center;
1384        font-family: inherit;
1385        line-height: 1.2;
1386        text-align: left;
1387    }
1388    .schedule-category-select:hover,
1389    .schedule-category-select:focus,
1390    .schedule-category-select:focus-visible {
1391        background-color: rgba(255,255,255,0.12);
1392        border-color: rgba(34, 197, 94, 0.45);
1393        outline: none;
1394    }
1395    .visually-hidden {
1396        position: absolute;
1397        width: 1px;
1398        height: 1px;
1399        padding: 0;
1400        margin: -1px;
1401        overflow: hidden;
1402        clip: rect(0, 0, 0, 0);
1403        white-space: nowrap;
1404        border: 0;
1405    }
1406    .schedule-sport-title-inline {
1407        padding-top: 0;
1408    }
1409    .beauty-schedule-list {
1410        display: flex;
1411        flex-direction: column;
1412        gap: 0;
1413        border-top: 1px solid rgba(255,255,255,0.06);
1414    }
1415    .beauty-schedule-row {
1416        display: flex;
1417        align-items: center;
1418        gap: 12px;
1419        padding: 10px 16px;
1420        border-bottom: 1px solid rgba(255,255,255,0.04);
1421    }
1422    .beauty-schedule-row.is-live {
1423        background: rgba(34, 197, 94, 0.04);
1424    }
1425    .beauty-schedule-main {
1426        flex: 1;
1427        min-width: 0;
1428        display: flex;
1429        align-items: center;
1430        gap: 12px;
1431        text-decoration: none;
1432        color: inherit;
1433    }
1434    .beauty-schedule-avatar-wrap { flex-shrink: 0; }
1435    .beauty-schedule-avatar {
1436        width: 40px;
1437        height: 40px;
1438        border-radius: 50%;
1439        object-fit: cover;
1440    }
1441    .beauty-schedule-avatar-fallback {
1442        display: flex;
1443        align-items: center;
1444        justify-content: center;
1445        background: rgba(34, 197, 94, 0.2);
1446        color: #86efac;
1447        font-weight: 700;
1448    }
1449    .beauty-schedule-title {
1450        font-size: 0.875rem;
1451        font-weight: 600;
1452        color: rgba(255,255,255,0.92);
1453    }
1454    .beauty-schedule-streamer {
1455        font-size: 0.75rem;
1456        color: #86efac;
1457        margin-top: 2px;
1458    }
1459    .beauty-schedule-category {
1460        font-size: 0.6875rem;
1461        color: rgba(255,255,255,0.45);
1462        margin-top: 2px;
1463    }
1464    .beauty-schedule-meta {
1465        display: flex;
1466        flex-direction: column;
1467        align-items: flex-end;
1468        gap: 4px;
1469        flex-shrink: 0;
1470    }
1471    .beauty-schedule-time {
1472        font-size: 0.75rem;
1473        color: rgba(255,255,255,0.65);
1474    }
1475    .beauty-schedule-live-badge {
1476        font-size: 0.625rem;
1477        font-weight: 700;
1478        color: #ef4444;
1479    }
1480    .beauty-schedule-actions {
1481        display: flex;
1482        gap: 6px;
1483        flex-shrink: 0;
1484    }
1485    .schedule-sport-title {
1486        font-size: 1rem;
1487        font-weight: 700;
1488        color: rgba(255,255,255,0.92);
1489        padding: 12px 16px 8px;
1490        margin: 0;
1491        border-bottom: 1px solid rgba(255,255,255,0.06);
1492    }
1493    .schedule-sport-empty {
1494        padding: 24px 16px;
1495        color: rgba(255,255,255,0.55);
1496        font-size: 0.875rem;
1497        text-align: center;
1498    }
1499    .mx-streamer-badge {
1500        display: inline-flex;
1501        align-items: center;
1502        padding: 2px 8px;
1503        border-radius: 999px;
1504        font-size: 0.625rem;
1505        font-weight: 700;
1506        letter-spacing: 0.02em;
1507        color: #86efac;
1508        background: rgba(34, 197, 94, 0.12);
1509        border: 1px solid rgba(34, 197, 94, 0.22);
1510        white-space: nowrap;
1511        text-decoration: none;
1512        transition: background 0.15s, border-color 0.15s, color 0.15s;
1513    }
1514    a.mx-streamer-badge:hover {
1515        color: #bbf7d0;
1516        background: rgba(34, 197, 94, 0.22);
1517        border-color: rgba(34, 197, 94, 0.45);
1518    }
1519    .mx-streamer-badge-static {
1520        cursor: default;
1521    }
1522    .mx-streamer-badge.mx-streamer-badge-live {
1523        color: #A78BFA;
1524        background: linear-gradient(135deg, rgba(167, 139, 250, 0.18) 0%, rgba(139, 92, 246, 0.12) 100%);
1525        border-color: rgba(167, 139, 250, 0.45);
1526    }
1527    a.mx-streamer-badge.mx-streamer-badge-live:hover {
1528        color: #C4B5FD;
1529        background: linear-gradient(135deg, rgba(167, 139, 250, 0.18) 0%, rgba(139, 92, 246, 0.12) 100%);
1530        border-color: rgba(167, 139, 250, 0.45);
1531    }
1532
1533    /* Live page only: stacked 100px action column */
1534    .mx-right.action-column {
1535        display: flex;
1536        flex-direction: column;
1537        align-items: flex-end;
1538        justify-content: center;
1539        gap: 4px;
1540        width: 100px;
1541        max-width: 100px;
1542        flex-shrink: 0;
1543    }
1544    .mx-right.action-column .live-btn,
1545    .mx-right.action-column .preview-btn,
1546    .mx-right.action-column .mx-streamer-pill,
1547    .mx-right.action-column .mx-streamer-toggle {
1548        width: 100%;
1549        max-width: 100px;
1550        justify-content: center;
1551        box-sizing: border-box;
1552    }
1553    .mx-right.action-column .mx-streamer-pill {
1554        gap: 4px;
1555        min-width: 0;
1556        padding: 3px 6px 6px;
1557    }
1558    .mx-right.action-column .mx-streamer-name {
1559        overflow: hidden;
1560        text-overflow: ellipsis;
1561        white-space: nowrap;
1562        min-width: 0;
1563        max-width: 100%;
1564    }
1565    .mx-right.action-column .icon-mic,
1566    .mx-right.action-column .icon-caret {
1567        width: 11px;
1568        height: 11px;
1569        flex-shrink: 0;
1570        position: relative;
1571        top: 1px;
1572    }
1573    .mx-streamer-dropdown {
1574        position: relative;
1575        width: 100%;
1576        z-index: 2;
1577    }
1578    .mx-streamer-toggle {
1579        display: inline-flex;
1580        align-items: center;
1581        justify-content: center;
1582        gap: 4px;
1583        padding: 3px 8px 6px;
1584        border-radius: 999px;
1585        border: 1px solid rgba(34, 197, 94, 0.22);
1586        background: rgba(15, 23, 42, 0.55);
1587        color: #86efac;
1588        cursor: pointer;
1589        line-height: 1;
1590    }
1591    .mx-streamer-toggle:hover,
1592    .mx-streamer-toggle[aria-expanded="true"] {
1593        background: rgba(34, 197, 94, 0.18);
1594        border-color: rgba(34, 197, 94, 0.45);
1595        color: #bbf7d0;
1596    }
1597    .mx-streamer-toggle.mx-streamer-toggle-live {
1598        background: linear-gradient(135deg, rgba(167, 139, 250, 0.18) 0%, rgba(139, 92, 246, 0.12) 100%);
1599        border: 1px solid rgba(167, 139, 250, 0.45);
1600        color: #A78BFA;
1601        animation: streamBadgePulse 2s ease-in-out infinite;
1602    }
1603    .mx-streamer-toggle.mx-streamer-toggle-live:hover,
1604    .mx-streamer-toggle.mx-streamer-toggle-live[aria-expanded="true"] {
1605        background: linear-gradient(135deg, rgba(167, 139, 250, 0.18) 0%, rgba(139, 92, 246, 0.12) 100%);
1606        border-color: rgba(167, 139, 250, 0.45);
1607        color: #C4B5FD;
1608    }
1609    .mx-streamer-menu {
1610        min-width: 168px;
1611        max-height: 192px;
1612        overflow-y: auto;
1613        padding: 6px 0;
1614        background: #0f172a;
1615        border: 1px solid rgba(255,255,255,0.12);
1616        z-index: 20;
1617    }
1618    .mx-streamer-menu-item {
1619        display: flex;
1620        align-items: center;
1621        gap: 6px;
1622        font-size: 0.75rem;
1623        color: #86efac;
1624        white-space: nowrap;
1625    }
1626    .mx-streamer-menu-item:hover,
1627    .mx-streamer-menu-item:focus {
1628        background: rgba(34, 197, 94, 0.12);
1629        color: #bbf7d0;
1630    }
1631    .mx-streamer-menu-item .icon-mic {
1632        width: 12px;
1633        height: 12px;
1634        flex-shrink: 0;
1635    }
1636    .mx-row:has(.mx-streamer-dropdown .dropdown-menu.show) {
1637        z-index: 6;
1638        position: relative;
1639    }
1640    .mx-streamer-menu.mx-streamer-menu-live .mx-streamer-menu-item
1641    {
1642        color: #A78BFA;
1643    }
1644    .mx-streamer-menu.mx-streamer-menu-live .mx-streamer-menu-item:hover,
1645    .mx-streamer-menu.mx-streamer-menu-live .mx-streamer-menu-item:focus {
1646        background: rgba(167, 139, 250, 0.12);
1647        color: #C4B5FD;
1648    }
1649
1650    /* ===== 分页 ===== */
1651    .pagination { gap: 4px; }
1652    .pagination .page-link {
1653        border-radius: 8px;
1654        padding: 8px 14px;
1655        font-weight: 500;
1656        font-size: 0.875rem;
1657    }
1658    .pagination .page-link .icon { width: 14px; height: 14px; }
1659    .pagination .page-item.active .page-link {
1660        background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%);
1661        border-color: transparent;
1662    }
1663
1664    /* ===== 动画 ===== */
1665    @keyframes livePulse {
1666        0%, 100% { opacity: 1; }
1667        50% { opacity: 0.4; }
1668    }
1669    @keyframes liveGlow {
1670        0%, 100% { box-shadow: 0 0 0 rgba(239,68,68,0); }
1671        50% { box-shadow: 0 0 8px rgba(239,68,68,0.3); }
1672    }
1673    @keyframes minuteTickJitter {
1674        0% { transform: translate(0,0) rotate(0deg); }
1675        8% { transform: translate(0.5px,-0.5px) rotate(-10deg); }
1676        16% { transform: translate(-0.5px,0.5px) rotate(10deg); }
1677        24% { transform: translate(0,0) rotate(0deg); }
1678        100% { transform: translate(0,0) rotate(0deg); }
1679    }
1680
1681    .filter-bar-tools {
1682        display: flex;
1683        align-items: center;
1684        justify-content: flex-end;
1685        gap: 8px;
1686        flex-shrink: 0;
1687        margin-left: auto;
1688    }
1689    .match-list-search {
1690        position: relative;
1691        display: flex;
1692        align-items: center;
1693        width: 220px;
1694        height: 36px;
1695        padding: 0 10px 0 34px;
1696        border-radius: 20px;
1697        border: 1px solid rgba(255,255,255,0.12);
1698        background: rgba(255,255,255,0.06);
1699        transition: border-color 0.15s ease, background 0.15s ease;
1700    }
1701    .match-list-search:focus-within {
1702        border-color: rgba(34, 197, 94, 0.45);
1703        background: rgba(255,255,255,0.1);
1704    }
1705    .match-list-search-icon {
1706        position: absolute;
1707        left: 12px;
1708        width: 14px;
1709        height: 14px;
1710        color: rgba(255,255,255,0.45);
1711        pointer-events: none;
1712    }
1713    .match-list-search-input {
1714        width: 100%;
1715        min-width: 0;
1716        border: 0;
1717        outline: none;
1718        background: transparent;
1719        color: rgba(255,255,255,0.92);
1720        font-size: 0.8125rem;
1721        font-weight: 500;
1722        padding: 0;
1723    }
1724    .match-list-search-input::placeholder {
1725        color: rgba(255,255,255,0.4);
1726        font-weight: 500;
1727    }
1728    .match-list-search-input::-webkit-search-cancel-button {
1729        display: none;
1730    }
1731    .match-list-search-clear {
1732        flex-shrink: 0;
1733        width: 18px;
1734        height: 18px;
1735        margin-left: 6px;
1736        border: 0;
1737        border-radius: 50%;
1738        background: rgba(255,255,255,0.12);
1739        color: rgba(255,255,255,0.75);
1740        font-size: 14px;
1741        line-height: 1;
1742        cursor: pointer;
1743        padding: 0;
1744    }
1745    .match-list-search-clear:hover {
1746        background: rgba(255,255,255,0.22);
1747        color: #fff;
1748    }
1749    .is-search-hidden {
1750        display: none !important;
1751    }
1752    .lg-section.is-search-open .lg-matches {
1753        display: block !important;
1754    }
1755
1756    /* ===== 响应式 ===== */
1757    @media (max-width: 768px) {
1758        .filter-bar-row {
1759            flex-wrap: wrap;
1760            gap: 10px;
1761        }
1762        .filter-bar-tools {
1763            width: 100%;
1764            margin-left: 0;
1765        }
1766        .match-list-search {
1767            flex: 1;
1768            width: auto;
1769            min-width: 0;
1770        }
1771        .filter-bar-tools .schedule-category-dropdown {
1772            width: auto;
1773            flex: 0 0 auto;
1774        }
1775        .filter-bar-tools .schedule-category-select,
1776        .filter-bar-tools .custom-select {
1777            width: auto;
1778            max-width: 148px;
1779        }
1780        .mx-left { width: 80px; gap: 6px; }
1781        .mx-team-name { font-size: 0.75rem; }
1782        .mx-team-logo { width: 18px; height: 18px; }
1783        .mx-score { font-size: 0.8125rem; min-width: 18px; }
1784        .mx-right { gap: 4px; max-width: 55%; }
1785        .mx-right.action-column {
1786            width: 100px;
1787            max-width: 100px;
1788        }
1789        .mx-streamers { max-width: 140px; }
1790        .mx-action-btn { padding: 3px 8px; font-size: 0.625rem; }
1791        .lg-header { padding: 8px 12px; }
1792        .mx-row { padding: 7px 12px; gap: 8px; }
1793    }
1794    @media (max-width: 480px) {
1795        .mx-left { width: 65px; }
1796        .mx-fav-btn { display: none; }
1797        .mx-right.action-column {
1798            width: 70px !important;
1799            max-width: 70px !important;
1800        }
1801        .mx-right .preview-btn { display: none; }
1802        .mx-team-name { font-size: 0.75rem; }
1803        .mx-action-btn { padding: 3px 6px; font-size: 0.5625rem; }
1804        .filter-pill { padding: 6px 12px; font-size: 0.75rem; }
1805    }
1806</style>
1807
1808<!-- SVG 图标集 -->
1809<svg xmlns="http://www.w3.org/2000/svg" style="display:none">
1810    
1811    <!-- 星星(空心) -->
1812    <symbol id="icon-star" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
1813        <polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/>
1814    </symbol>
1815    
1816    <!-- 星星(实心) -->
1817    <symbol id="icon-star-filled" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="1">
1818        <polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/>
1819    </symbol>
1820    
1821    <!-- 向上箭头 -->
1822    <symbol id="icon-chevron-up" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
1823        <polyline points="18 15 12 9 6 15"/>
1824    </symbol>
1825    
1826    <!-- 向下箭头 -->
1827    <symbol id="icon-chevron-down" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
1828        <polyline points="6 9 12 15 18 9"/>
1829    </symbol>
1830    
1831    <!-- 直播/信号塔 -->
1832    <symbol id="icon-live" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
1833        <path d="M4.9 19.1C1 15.2 1 8.8 4.9 4.9"/>
1834        <path d="M7.8 16.2c-2.3-2.3-2.3-6.1 0-8.4"/>
1835        <path d="M16.2 7.8c2.3 2.3 2.3 6.1 0 8.4"/>
1836        <path d="M19.1 4.9C23 8.8 23 15.1 19.1 19"/>
1837        <circle cx="12" cy="12" r="2" fill="currentColor"/>
1838    </symbol>
1839    
1840    <!-- 左箭头 -->
1841    <symbol id="icon-chevron-left" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
1842        <polyline points="15 18 9 12 15 6"/>
1843    </symbol>
1844    
1845    <!-- 右箭头 -->
1846    <symbol id="icon-chevron-right" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
1847        <polyline points="9 6 15 12 9 18"/>
1848    </symbol>
1849    
1850    <!-- 双左箭头 -->
1851    <symbol id="icon-chevrons-left" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
1852        <polyline points="11 17 6 12 11 7"/>
1853        <polyline points="18 17 13 12 18 7"/>
1854    </symbol>
1855    
1856    <!-- 双右箭头 -->
1857    <symbol id="icon-chevrons-right" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
1858        <polyline points="13 7 18 12 13 17"/>
1859        <polyline points="6 7 11 12 6 17"/>
1860    </symbol>
1861    
1862    <!-- 日历 -->
1863    <symbol id="icon-calendar" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
1864        <rect x="3" y="4" width="18" height="18" rx="2" ry="2"/>
1865        <line x1="16" y1="2" x2="16" y2="6"/>
1866        <line x1="8" y1="2" x2="8" y2="6"/>
1867        <line x1="3" y1="10" x2="21" y2="10"/>
1868    </symbol>
1869    
1870    <!-- 旗帜(已结束) -->
1871    <symbol id="icon-flag" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
1872        <path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z"/>
1873        <line x1="4" y1="22" x2="4" y2="15"/>
1874    </symbol>
1875    
1876    <!-- 麦克风(主播) -->
1877    <symbol id="icon-mic" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
1878        <path d="M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z"/>
1879        <path d="M19 10v2a7 7 0 0 1-14 0v-2"/>
1880        <line x1="12" y1="19" x2="12" y2="22"/>
1881    </symbol>
1882
1883    <!-- 足球 -->
1884    <symbol id="icon-football" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
1885        <circle cx="12" cy="12" r="10"/>
1886        <path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/>
1887        <path d="M2 12h20"/>
1888    </symbol>
1889
1890</svg>
1891
1892
1893<!-- 加载全局导航数据 -->
1894
1895
1896<!-- 广告横幅 -->
1897<link href="/dist/css/focus-player.css?v=8kMhyq8KMJMyrfcinjq5xdhp9uBDP4aFyjUEaXMk8UQ" rel="stylesheet" />
1898<div class="focus-ad-banner-wrapper">
1899    
1900        <div class="ad-banner-device ad-banner-device-pc">
1901                <div class="ad-carousel" id="adCarouselPc">
1902                    <div class="ad-carousel-track">
1903                            <a href="https://bit.ly/3TPFQxj" class="ad-carousel-slide active" target="_blank" rel="noopener nofollow noreferrer">
1904                                <img src="/uploads/ads/2026-08/8778dac6e7a7434291d7eb1b52965a8d.png" class="ad-banner-img-custom" alt="B&#x1EA3;o hi&#x1EC3;m th&#x1EBF; thao" loading="eager" style="display:block;width:100%;height:150px;object-fit:contain;object-position:center;" />
1905                            </a>
1906                            <a href="https://bit.ly/3TPFQxj" class="ad-carousel-slide" target="_blank" rel="noopener nofollow noreferrer">
1907                                <img src="/uploads/ads/2026-08/0afad7c6bb37449f8d568b59db387452.png" class="ad-banner-img-custom" alt="N&#x1EA1;p &#x111;&#x1EA7;u th&#x1EC3; thao" loading="lazy" style="display:block;width:100%;height:150px;object-fit:contain;object-position:center;" />
1908                            </a>
1909                    </div>
1910                        <div class="ad-carousel-dots">
1911                                <span class="ad-carousel-dot active" data-index="0"></span>
1912                                <span class="ad-carousel-dot" data-index="1"></span>
1913                        </div>
1914                </div>
1915        </div>
1916        <div class="ad-banner-device ad-banner-device-mobile">
1917                <div class="ad-list">
1918                        <a href="https://bit.ly/3TPFQxj" target="_blank" rel="noopener nofollow noreferrer">
1919                            <img src="/uploads/ads/2026-08/3015ed4fbcff4ccaa05224f7c6a97710.png" class="" alt="B&#x1EA3;o hi&#x1EC3;m th&#x1EBF; thao" loading="lazy" style="display:block;width:100%;height:auto;margin:0 auto;" />
1920                        </a>
1921                        <a href="https://bit.ly/3TPFQxj" target="_blank" rel="noopener nofollow noreferrer">
1922                            <img src="/uploads/ads/2026-08/fda23f718c5946fabb7c778e856a86df.png" class="" alt="N&#x1EA1;p &#x111;&#x1EA7;u th&#x1EC3; thao" loading="lazy" style="display:block;width:100%;height:auto;margin:0 auto;" />
1923                        </a>
1924                </div>
1925        </div>
1926
1927</div>
1928    
1928<script src="/dist/js/ad-carousel.js?v=UooZGezoZ-VJM9pPGfC1kQ5RVhrkGqFeEJUDb3-SKcc" defer></script>
1928
1929
1930
1931<div class="container-fluid match-list-page">
1932    <h1 class="seo-page-h1 seo-page-h1--list">Ph&#xE1;t tr&#x1EF1;c ti&#x1EBF;p</h1>
1933    <!-- 筛选标签栏 -->
1934    <div class="filter-bar">
1935        <div class="filter-bar-row">
1936            <div class="filter-tabs-row">
1937                <a href="/truc-tiep" class="filter-pill active">
1938                    <span class="live-indicator-dot"></span>
1939                    &#x110;ang di&#x1EC5;n ra
1940                </a>
1941                <a href="/hom-nay" class="filter-pill ">
1942                    Tr&#x1EAD;n h&#xF4;m nay
1943                </a>
1944                <a href="/lich-thi-dau" class="filter-pill ">
1945                    S&#x1EAF;p di&#x1EC5;n ra
1946                </a>
1947            </div>
1948            <div class="filter-bar-tools">
1949                <div class="match-list-search">
1950                    <label class="visually-hidden" for="matchListSearch">T&#xEC;m ki&#x1EBF;m</label>
1951                    <svg class="match-list-search-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
1952                        <circle cx="11" cy="11" r="7"></circle>
1953                        <path d="m20 20-3.5-3.5"></path>
1954                    </svg>
1955                    <input id="matchListSearch" class="match-list-search-input" type="search" placeholder="T&#xEC;m ki&#x1EBF;m &#x111;&#x1ED9;i b&#xF3;ng ho&#x1EB7;c gi&#x1EA3;i &#x111;&#x1EA5;u..." autocomplete="off" enterkeyhint="search">
1956                    <button type="button" class="match-list-search-clear" id="matchListSearchClear" hidden aria-label="X&#xF3;a">&times;</button>
1957                </div>
1958                <div class="schedule-category-dropdown">
1959                    <label class="visually-hidden" for="liveSportSelect">T&#x1EA5;t c&#x1EA3; tr&#x1EF1;c ti&#x1EBF;p</label>
1960                    <select id="liveSportSelect" class="schedule-category-select js-custom-select" data-menu-align="end" onchange="window.location.href=this.value">
1961                        <option value="/truc-tiep" selected="selected">T&#x1EA5;t c&#x1EA3; tr&#x1EF1;c ti&#x1EBF;p</option>
1962                        <option value="/truc-tiep?category=football">B&#xF3;ng &#x110;&#xE1;</option>
1963                        <option value="/truc-tiep?category=basketball">B&#xF3;ng R&#x1ED5;</option>
1964                        <option value="/truc-tiep?category=beauty">Ph&#xE1;t s&#xF3;ng gi&#x1EA3;i tr&#xED;</option>
1965                    </select>
1966                </div>
1967            </div>
1968        </div>
1969    </div>
1970
1971    <div id="matchListSearchEmpty" class="schedule-sport-empty" hidden>Kh&#xF4;ng t&#xEC;m th&#x1EA5;y k&#x1EBF;t qu&#x1EA3;</div>
1972
1973
1974
1975        <div class="lg-section" data-search="B League Japan">
1976            <div class="lg-header">
1977                <div class="lg-header-left">
1978                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
1979                        <svg class="icon"><use href="#icon-star"/></svg>
1980                    </button>
1981                        <span class="lg-country-name">Japan:</span>
1982                    <img src="/images/basketball/leagues/56.webp"
1983                         alt="B League" class="lg-logo" loading="lazy"
1984                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
1985                    <span class="lg-name">B League</span>
1986                </div>
1987                <div class="lg-header-right">
1988                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
1989                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
1990                    </button>
1991                </div>
1992            </div>
1993
1994            <div class="lg-matches">
1995                    <div class="mx-row is-live " data-search="B League Japan Alvark Ryukyu">
1996                        <div class="mx-left">
1997                            <button type="button" class="mx-fav-btn favorite-btn"
1998                                    data-match-id="327880"
1999                                    data-auth="false"
2000                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(327880, this);"
2001                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2002                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2003                            </button>
2004                            <div class="mx-status">
2005                                    <span class="mx-status-badge live">LIVE</span>
2006                            </div>
2007                        </div>
2008
2009                        <div class="mx-center">
2010                            <a href="/alvark-vs-ryukyu-id327880" class="mx-teams-link">
2011                                <div class="mx-team-row">
2012                                    <img src="/images/basketball/teams/749.webp"
2013                                         alt="Alvark" class="mx-team-logo" loading="lazy"
2014                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2015                                    <span class="mx-team-name">Alvark</span>
2016                                    <span class="mx-score live">
201750                                    </span>
2018                                </div>
2019                                <div class="mx-team-row">
2020                                    <img src="/images/basketball/teams/758.webp"
2021                                         alt="Ryukyu" class="mx-team-logo" loading="lazy"
2022                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2023                                    <span class="mx-team-name">Ryukyu</span>
2024                                    <span class="mx-score live">
202551                                    </span>
2026                                </div>
2027                            </a>
2028                        </div>
2029
2030                        <div class="mx-right action-column streamer-col">
2031                                <a href="/alvark-vs-ryukyu-id327880" class="mx-action-btn live-btn">
2032                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2033                                </a>
2034                        </div>
2035                    </div>
2036                    <div class="mx-row is-live " data-search="B League Japan Alvark Ryukyu">
2037                        <div class="mx-left">
2038                            <button type="button" class="mx-fav-btn favorite-btn"
2039                                    data-match-id="328141"
2040                                    data-auth="false"
2041                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(328141, this);"
2042                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2043                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2044                            </button>
2045                            <div class="mx-status">
2046                                    <span class="mx-status-badge live">LIVE</span>
2047                            </div>
2048                        </div>
2049
2050                        <div class="mx-center">
2051                            <a href="/alvark-vs-ryukyu-id328141" class="mx-teams-link">
2052                                <div class="mx-team-row">
2053                                    <img src="/images/basketball/teams/749.webp"
2054                                         alt="Alvark" class="mx-team-logo" loading="lazy"
2055                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2056                                    <span class="mx-team-name">Alvark</span>
2057                                    <span class="mx-score live">
205841                                    </span>
2059                                </div>
2060                                <div class="mx-team-row">
2061                                    <img src="/images/basketball/teams/758.webp"
2062                                         alt="Ryukyu" class="mx-team-logo" loading="lazy"
2063                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2064                                    <span class="mx-team-name">Ryukyu</span>
2065                                    <span class="mx-score live">
206651                                    </span>
2067                                </div>
2068                            </a>
2069                        </div>
2070
2071                        <div class="mx-right action-column streamer-col">
2072                                <a href="/alvark-vs-ryukyu-id328141" class="mx-action-btn live-btn">
2073                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2074                                </a>
2075                        </div>
2076                    </div>
2077                    <div class="mx-row is-live " data-search="B League Japan Shinshu Toyama">
2078                        <div class="mx-left">
2079                            <button type="button" class="mx-fav-btn favorite-btn"
2080                                    data-match-id="328921"
2081                                    data-auth="false"
2082                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(328921, this);"
2083                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2084                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2085                            </button>
2086                            <div class="mx-status">
2087                                    <span class="mx-status-badge live">LIVE</span>
2088                            </div>
2089                        </div>
2090
2091                        <div class="mx-center">
2092                            <a href="/shinshu-vs-toyama-id328921" class="mx-teams-link">
2093                                <div class="mx-team-row">
2094                                    <img src="/images/basketball/teams/2259.webp"
2095                                         alt="Shinshu" class="mx-team-logo" loading="lazy"
2096                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2097                                    <span class="mx-team-name">Shinshu</span>
2098                                    <span class="mx-score live">
209958                                    </span>
2100                                </div>
2101                                <div class="mx-team-row">
2102                                    <img src="/images/basketball/teams/763.webp"
2103                                         alt="Toyama" class="mx-team-logo" loading="lazy"
2104                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2105                                    <span class="mx-team-name">Toyama</span>
2106                                    <span class="mx-score live">
210771                                    </span>
2108                                </div>
2109                            </a>
2110                        </div>
2111
2112                        <div class="mx-right action-column streamer-col">
2113                                <a href="/shinshu-vs-toyama-id328921" class="mx-action-btn live-btn">
2114                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2115                                </a>
2116                        </div>
2117                    </div>
2118                    <div class="mx-row is-live " data-search="B League Japan Kobe Osaka">
2119                        <div class="mx-left">
2120                            <button type="button" class="mx-fav-btn favorite-btn"
2121                                    data-match-id="328923"
2122                                    data-auth="false"
2123                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(328923, this);"
2124                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2125                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2126                            </button>
2127                            <div class="mx-status">
2128                                    <span class="mx-status-badge live">LIVE</span>
2129                            </div>
2130                        </div>
2131
2132                        <div class="mx-center">
2133                            <a href="/kobe-vs-osaka-id328923" class="mx-teams-link">
2134                                <div class="mx-team-row">
2135                                    <img src="/images/basketball/teams/1584.webp"
2136                                         alt="Kobe" class="mx-team-logo" loading="lazy"
2137                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2138                                    <span class="mx-team-name">Kobe</span>
2139                                    <span class="mx-score live">
214039                                    </span>
2141                                </div>
2142                                <div class="mx-team-row">
2143                                    <img src="/images/basketball/teams/757.webp"
2144                                         alt="Osaka" class="mx-team-logo" loading="lazy"
2145                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2146                                    <span class="mx-team-name">Osaka</span>
2147                                    <span class="mx-score live">
214845                                    </span>
2149                                </div>
2150                            </a>
2151                        </div>
2152
2153                        <div class="mx-right action-column streamer-col">
2154                                <a href="/kobe-vs-osaka-id328923" class="mx-action-btn live-btn">
2155                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2156                                </a>
2157                        </div>
2158                    </div>
2159                    <div class="mx-row is-live " data-search="B League Japan Levanga Hokkaido SeaHorses Mikawa">
2160                        <div class="mx-left">
2161                            <button type="button" class="mx-fav-btn favorite-btn"
2162                                    data-match-id="328924"
2163                                    data-auth="false"
2164                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(328924, this);"
2165                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2166                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2167                            </button>
2168                            <div class="mx-status">
2169                                    <span class="mx-status-badge live">LIVE</span>
2170                            </div>
2171                        </div>
2172
2173                        <div class="mx-center">
2174                            <a href="/levanga-hokkaido-vs-seahorses-mikawa-id328924" class="mx-teams-link">
2175                                <div class="mx-team-row">
2176                                    <img src="https://media.api-sports.io/basketball/teams/7905.png"
2177                                         alt="Levanga Hokkaido" class="mx-team-logo" loading="lazy"
2178                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2179                                    <span class="mx-team-name">Levanga Hokkaido</span>
2180                                    <span class="mx-score live">
218157                                    </span>
2182                                </div>
2183                                <div class="mx-team-row">
2184                                    <img src="/images/basketball/teams/759.webp"
2185                                         alt="SeaHorses Mikawa" class="mx-team-logo" loading="lazy"
2186                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2187                                    <span class="mx-team-name">SeaHorses Mikawa</span>
2188                                    <span class="mx-score live">
218942                                    </span>
2190                                </div>
2191                            </a>
2192                        </div>
2193
2194                        <div class="mx-right action-column streamer-col">
2195                                <a href="/levanga-hokkaido-vs-seahorses-mikawa-id328924" class="mx-action-btn live-btn">
2196                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2197                                </a>
2198                        </div>
2199                    </div>
2200                    <div class="mx-row is-live " data-search="B League Japan Sendai Akita">
2201                        <div class="mx-left">
2202                            <button type="button" class="mx-fav-btn favorite-btn"
2203                                    data-match-id="328925"
2204                                    data-auth="false"
2205                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(328925, this);"
2206                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2207                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2208                            </button>
2209                            <div class="mx-status">
2210                                    <span class="mx-status-badge live">LIVE</span>
2211                            </div>
2212                        </div>
2213
2214                        <div class="mx-center">
2215                            <a href="/sendai-vs-akita-id328925" class="mx-teams-link">
2216                                <div class="mx-team-row">
2217                                    <img src="/images/basketball/teams/1586.webp"
2218                                         alt="Sendai" class="mx-team-logo" loading="lazy"
2219                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2220                                    <span class="mx-team-name">Sendai</span>
2221                                    <span class="mx-score live">
222242                                    </span>
2223                                </div>
2224                                <div class="mx-team-row">
2225                                    <img src="/images/basketball/teams/748.webp"
2226                                         alt="Akita" class="mx-team-logo" loading="lazy"
2227                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2228                                    <span class="mx-team-name">Akita</span>
2229                                    <span class="mx-score live">
223029                                    </span>
2231                                </div>
2232                            </a>
2233                        </div>
2234
2235                        <div class="mx-right action-column streamer-col">
2236                                <a href="/sendai-vs-akita-id328925" class="mx-action-btn live-btn">
2237                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2238                                </a>
2239                        </div>
2240                    </div>
2241                    <div class="mx-row is-live " data-search="B League Japan Ibaraki Robots NeoPhoenix">
2242                        <div class="mx-left">
2243                            <button type="button" class="mx-fav-btn favorite-btn"
2244                                    data-match-id="330262"
2245                                    data-auth="false"
2246                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(330262, this);"
2247                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2248                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2249                            </button>
2250                            <div class="mx-status">
2251                                    <span class="mx-status-badge live">LIVE</span>
2252                            </div>
2253                        </div>
2254
2255                        <div class="mx-center">
2256                            <a href="/ibaraki-robots-vs-neophoenix-id330262" class="mx-teams-link">
2257                                <div class="mx-team-row">
2258                                    <img src="/images/basketball/teams/3061.webp"
2259                                         alt="Ibaraki Robots" class="mx-team-logo" loading="lazy"
2260                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2261                                    <span class="mx-team-name">Ibaraki Robots</span>
2262                                    <span class="mx-score live">
226365                                    </span>
2264                                </div>
2265                                <div class="mx-team-row">
2266                                    <img src="/images/basketball/teams/755.webp"
2267                                         alt="NeoPhoenix" class="mx-team-logo" loading="lazy"
2268                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2269                                    <span class="mx-team-name">NeoPhoenix</span>
2270                                    <span class="mx-score live">
227169                                    </span>
2272                                </div>
2273                            </a>
2274                        </div>
2275
2276                        <div class="mx-right action-column streamer-col">
2277                                <a href="/ibaraki-robots-vs-neophoenix-id330262" class="mx-action-btn live-btn">
2278                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2279                                </a>
2280                        </div>
2281                    </div>
2282                    <div class="mx-row is-live " data-search="B League Japan Kobe Osaka">
2283                        <div class="mx-left">
2284                            <button type="button" class="mx-fav-btn favorite-btn"
2285                                    data-match-id="330264"
2286                                    data-auth="false"
2287                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(330264, this);"
2288                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2289                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2290                            </button>
2291                            <div class="mx-status">
2292                                    <span class="mx-status-badge live">LIVE</span>
2293                            </div>
2294                        </div>
2295
2296                        <div class="mx-center">
2297                            <a href="/kobe-vs-osaka-id330264" class="mx-teams-link">
2298                                <div class="mx-team-row">
2299                                    <img src="/images/basketball/teams/1584.webp"
2300                                         alt="Kobe" class="mx-team-logo" loading="lazy"
2301                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2302                                    <span class="mx-team-name">Kobe</span>
2303                                    <span class="mx-score live">
230477                                    </span>
2305                                </div>
2306                                <div class="mx-team-row">
2307                                    <img src="/images/basketball/teams/757.webp"
2308                                         alt="Osaka" class="mx-team-logo" loading="lazy"
2309                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2310                                    <span class="mx-team-name">Osaka</span>
2311                                    <span class="mx-score live">
231274                                    </span>
2313                                </div>
2314                            </a>
2315                        </div>
2316
2317                        <div class="mx-right action-column streamer-col">
2318                                <a href="/kobe-vs-osaka-id330264" class="mx-action-btn live-btn">
2319                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2320                                </a>
2321                        </div>
2322                    </div>
2323                    <div class="mx-row is-live " data-search="B League Japan Levanga Hokkaido SeaHorses Mikawa">
2324                        <div class="mx-left">
2325                            <button type="button" class="mx-fav-btn favorite-btn"
2326                                    data-match-id="330265"
2327                                    data-auth="false"
2328                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(330265, this);"
2329                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2330                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2331                            </button>
2332                            <div class="mx-status">
2333                                    <span class="mx-status-badge live">LIVE</span>
2334                            </div>
2335                        </div>
2336
2337                        <div class="mx-center">
2338                            <a href="/levanga-hokkaido-vs-seahorses-mikawa-id330265" class="mx-teams-link">
2339                                <div class="mx-team-row">
2340                                    <img src="https://media.api-sports.io/basketball/teams/7905.png"
2341                                         alt="Levanga Hokkaido" class="mx-team-logo" loading="lazy"
2342                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2343                                    <span class="mx-team-name">Levanga Hokkaido</span>
2344                                    <span class="mx-score live">
234572                                    </span>
2346                                </div>
2347                                <div class="mx-team-row">
2348                                    <img src="/images/basketball/teams/759.webp"
2349                                         alt="SeaHorses Mikawa" class="mx-team-logo" loading="lazy"
2350                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2351                                    <span class="mx-team-name">SeaHorses Mikawa</span>
2352                                    <span class="mx-score live">
235374                                    </span>
2354                                </div>
2355                            </a>
2356                        </div>
2357
2358                        <div class="mx-right action-column streamer-col">
2359                                <a href="/levanga-hokkaido-vs-seahorses-mikawa-id330265" class="mx-action-btn live-btn">
2360                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2361                                </a>
2362                        </div>
2363                    </div>
2364                    <div class="mx-row is-live " data-search="B League Japan Saga Hiroshima D.">
2365                        <div class="mx-left">
2366                            <button type="button" class="mx-fav-btn favorite-btn"
2367                                    data-match-id="330268"
2368                                    data-auth="false"
2369                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(330268, this);"
2370                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2371                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2372                            </button>
2373                            <div class="mx-status">
2374                                    <span class="mx-status-badge live">LIVE</span>
2375                            </div>
2376                        </div>
2377
2378                        <div class="mx-center">
2379                            <a href="/saga-vs-hiroshima-d-id330268" class="mx-teams-link">
2380                                <div class="mx-team-row">
2381                                    <img src="/images/basketball/teams/6035.webp"
2382                                         alt="Saga" class="mx-team-logo" loading="lazy"
2383                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2384                                    <span class="mx-team-name">Saga</span>
2385                                    <span class="mx-score live">
238634                                    </span>
2387                                </div>
2388                                <div class="mx-team-row">
2389                                    <img src="/images/basketball/teams/1585.webp"
2390                                         alt="Hiroshima D." class="mx-team-logo" loading="lazy"
2391                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2392                                    <span class="mx-team-name">Hiroshima D.</span>
2393                                    <span class="mx-score live">
239442                                    </span>
2395                                </div>
2396                            </a>
2397                        </div>
2398
2399                        <div class="mx-right action-column streamer-col">
2400                                <a href="/saga-vs-hiroshima-d-id330268" class="mx-action-btn live-btn">
2401                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2402                                </a>
2403                        </div>
2404                    </div>
2405                    <div class="mx-row is-live " data-search="B League Japan Shinshu Toyama">
2406                        <div class="mx-left">
2407                            <button type="button" class="mx-fav-btn favorite-btn"
2408                                    data-match-id="330269"
2409                                    data-auth="false"
2410                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(330269, this);"
2411                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2412                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2413                            </button>
2414                            <div class="mx-status">
2415                                    <span class="mx-status-badge live">LIVE</span>
2416                            </div>
2417                        </div>
2418
2419                        <div class="mx-center">
2420                            <a href="/shinshu-vs-toyama-id330269" class="mx-teams-link">
2421                                <div class="mx-team-row">
2422                                    <img src="/images/basketball/teams/2259.webp"
2423                                         alt="Shinshu" class="mx-team-logo" loading="lazy"
2424                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2425                                    <span class="mx-team-name">Shinshu</span>
2426                                    <span class="mx-score live">
242742                                    </span>
2428                                </div>
2429                                <div class="mx-team-row">
2430                                    <img src="/images/basketball/teams/763.webp"
2431                                         alt="Toyama" class="mx-team-logo" loading="lazy"
2432                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2433                                    <span class="mx-team-name">Toyama</span>
2434                                    <span class="mx-score live">
243531                                    </span>
2436                                </div>
2437                            </a>
2438                        </div>
2439
2440                        <div class="mx-right action-column streamer-col">
2441                                <a href="/shinshu-vs-toyama-id330269" class="mx-action-btn live-btn">
2442                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2443                                </a>
2444                        </div>
2445                    </div>
2446                    <div class="mx-row is-live " data-search="B League Japan Kyoto Shiga">
2447                        <div class="mx-left">
2448                            <button type="button" class="mx-fav-btn favorite-btn"
2449                                    data-match-id="330270"
2450                                    data-auth="false"
2451                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(330270, this);"
2452                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2453                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2454                            </button>
2455                            <div class="mx-status">
2456                                    <span class="mx-status-badge live">LIVE</span>
2457                            </div>
2458                        </div>
2459
2460                        <div class="mx-center">
2461                            <a href="/kyoto-vs-shiga-id330270" class="mx-teams-link">
2462                                <div class="mx-team-row">
2463                                    <img src="/images/basketball/teams/754.webp"
2464                                         alt="Kyoto" class="mx-team-logo" loading="lazy"
2465                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2466                                    <span class="mx-team-name">Kyoto</span>
2467                                    <span class="mx-score live">
246817                                    </span>
2469                                </div>
2470                                <div class="mx-team-row">
2471                                    <img src="/images/basketball/teams/760.webp"
2472                                         alt="Shiga" class="mx-team-logo" loading="lazy"
2473                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2474                                    <span class="mx-team-name">Shiga</span>
2475                                    <span class="mx-score live">
247619                                    </span>
2477                                </div>
2478                            </a>
2479                        </div>
2480
2481                        <div class="mx-right action-column streamer-col">
2482                                <a href="/kyoto-vs-shiga-id330270" class="mx-action-btn live-btn">
2483                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2484                                </a>
2485                        </div>
2486                    </div>
2487                    <div class="mx-row is-live " data-search="B League Japan Shimane Diamond Dolphins">
2488                        <div class="mx-left">
2489                            <button type="button" class="mx-fav-btn favorite-btn"
2490                                    data-match-id="332294"
2491                                    data-auth="false"
2492                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(332294, this);"
2493                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2494                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2495                            </button>
2496                            <div class="mx-status">
2497                                    <span class="mx-status-badge live">LIVE</span>
2498                            </div>
2499                        </div>
2500
2501                        <div class="mx-center">
2502                            <a href="/shimane-vs-diamond-dolphins-id332294" class="mx-teams-link">
2503                                <div class="mx-team-row">
2504                                    <img src="/images/basketball/teams/761.webp"
2505                                         alt="Shimane" class="mx-team-logo" loading="lazy"
2506                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2507                                    <span class="mx-team-name">Shimane</span>
2508                                    <span class="mx-score live">
250943                                    </span>
2510                                </div>
2511                                <div class="mx-team-row">
2512                                    <img src="/images/basketball/teams/752.webp"
2513                                         alt="Diamond Dolphins" class="mx-team-logo" loading="lazy"
2514                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2515                                    <span class="mx-team-name">Diamond Dolphins</span>
2516                                    <span class="mx-score live">
251753                                    </span>
2518                                </div>
2519                            </a>
2520                        </div>
2521
2522                        <div class="mx-right action-column streamer-col">
2523                                <a href="/shimane-vs-diamond-dolphins-id332294" class="mx-action-btn live-btn">
2524                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2525                                </a>
2526                        </div>
2527                    </div>
2528                    <div class="mx-row is-live " data-search="B League Japan Altiri Chiba Brave Thunders">
2529                        <div class="mx-left">
2530                            <button type="button" class="mx-fav-btn favorite-btn"
2531                                    data-match-id="332297"
2532                                    data-auth="false"
2533                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(332297, this);"
2534                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2535                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2536                            </button>
2537                            <div class="mx-status">
2538                                    <span class="mx-status-badge live">LIVE</span>
2539                            </div>
2540                        </div>
2541
2542                        <div class="mx-center">
2543                            <a href="/altiri-chiba-vs-brave-thunders-id332297" class="mx-teams-link">
2544                                <div class="mx-team-row">
2545                                    <img src="/images/basketball/teams/6349.webp"
2546                                         alt="Altiri Chiba" class="mx-team-logo" loading="lazy"
2547                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2548                                    <span class="mx-team-name">Altiri Chiba</span>
2549                                    <span class="mx-score live">
255043                                    </span>
2551                                </div>
2552                                <div class="mx-team-row">
2553                                    <img src="/images/basketball/teams/750.webp"
2554                                         alt="Brave Thunders" class="mx-team-logo" loading="lazy"
2555                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2556                                    <span class="mx-team-name">Brave Thunders</span>
2557                                    <span class="mx-score live">
255852                                    </span>
2559                                </div>
2560                            </a>
2561                        </div>
2562
2563                        <div class="mx-right action-column streamer-col">
2564                                <a href="/altiri-chiba-vs-brave-thunders-id332297" class="mx-action-btn live-btn">
2565                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2566                                </a>
2567                        </div>
2568                    </div>
2569                    <div class="mx-row is-live " data-search="B League Japan Levanga Hokkaido Sendai">
2570                        <div class="mx-left">
2571                            <button type="button" class="mx-fav-btn favorite-btn"
2572                                    data-match-id="332298"
2573                                    data-auth="false"
2574                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(332298, this);"
2575                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2576                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2577                            </button>
2578                            <div class="mx-status">
2579                                    <span class="mx-status-badge live">LIVE</span>
2580                            </div>
2581                        </div>
2582
2583                        <div class="mx-center">
2584                            <a href="/levanga-hokkaido-vs-sendai-id332298" class="mx-teams-link">
2585                                <div class="mx-team-row">
2586                                    <img src="https://media.api-sports.io/basketball/teams/7905.png"
2587                                         alt="Levanga Hokkaido" class="mx-team-logo" loading="lazy"
2588                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2589                                    <span class="mx-team-name">Levanga Hokkaido</span>
2590                                    <span class="mx-score live">
259151                                    </span>
2592                                </div>
2593                                <div class="mx-team-row">
2594                                    <img src="/images/basketball/teams/1586.webp"
2595                                         alt="Sendai" class="mx-team-logo" loading="lazy"
2596                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2597                                    <span class="mx-team-name">Sendai</span>
2598                                    <span class="mx-score live">
259945                                    </span>
2600                                </div>
2601                            </a>
2602                        </div>
2603
2604                        <div class="mx-right action-column streamer-col">
2605                                <a href="/levanga-hokkaido-vs-sendai-id332298" class="mx-action-btn live-btn">
2606                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2607                                </a>
2608                        </div>
2609                    </div>
2610                    <div class="mx-row is-live " data-search="B League Japan Osaka SeaHorses Mikawa">
2611                        <div class="mx-left">
2612                            <button type="button" class="mx-fav-btn favorite-btn"
2613                                    data-match-id="332299"
2614                                    data-auth="false"
2615                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(332299, this);"
2616                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2617                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2618                            </button>
2619                            <div class="mx-status">
2620                                    <span class="mx-status-badge live">LIVE</span>
2621                            </div>
2622                        </div>
2623
2624                        <div class="mx-center">
2625                            <a href="/osaka-vs-seahorses-mikawa-id332299" class="mx-teams-link">
2626                                <div class="mx-team-row">
2627                                    <img src="/images/basketball/teams/757.webp"
2628                                         alt="Osaka" class="mx-team-logo" loading="lazy"
2629                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2630                                    <span class="mx-team-name">Osaka</span>
2631                                    <span class="mx-score live">
263238                                    </span>
2633                                </div>
2634                                <div class="mx-team-row">
2635                                    <img src="/images/basketball/teams/759.webp"
2636                                         alt="SeaHorses Mikawa" class="mx-team-logo" loading="lazy"
2637                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2638                                    <span class="mx-team-name">SeaHorses Mikawa</span>
2639                                    <span class="mx-score live">
264039                                    </span>
2641                                </div>
2642                            </a>
2643                        </div>
2644
2645                        <div class="mx-right action-column streamer-col">
2646                                <a href="/osaka-vs-seahorses-mikawa-id332299" class="mx-action-btn live-btn">
2647                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2648                                </a>
2649                        </div>
2650                    </div>
2651                    <div class="mx-row is-live " data-search="B League Japan Saga NeoPhoenix">
2652                        <div class="mx-left">
2653                            <button type="button" class="mx-fav-btn favorite-btn"
2654                                    data-match-id="332300"
2655                                    data-auth="false"
2656                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(332300, this);"
2657                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2658                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2659                            </button>
2660                            <div class="mx-status">
2661                                    <span class="mx-status-badge live">LIVE</span>
2662                            </div>
2663                        </div>
2664
2665                        <div class="mx-center">
2666                            <a href="/saga-vs-neophoenix-id332300" class="mx-teams-link">
2667                                <div class="mx-team-row">
2668                                    <img src="/images/basketball/teams/6035.webp"
2669                                         alt="Saga" class="mx-team-logo" loading="lazy"
2670                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2671                                    <span class="mx-team-name">Saga</span>
2672                                    <span class="mx-score live">
267336                                    </span>
2674                                </div>
2675                                <div class="mx-team-row">
2676                                    <img src="/images/basketball/teams/755.webp"
2677                                         alt="NeoPhoenix" class="mx-team-logo" loading="lazy"
2678                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2679                                    <span class="mx-team-name">NeoPhoenix</span>
2680                                    <span class="mx-score live">
268150                                    </span>
2682                                </div>
2683                            </a>
2684                        </div>
2685
2686                        <div class="mx-right action-column streamer-col">
2687                                <a href="/saga-vs-neophoenix-id332300" class="mx-action-btn live-btn">
2688                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2689                                </a>
2690                        </div>
2691                    </div>
2692                    <div class="mx-row is-live " data-search="B League Japan Shiga Ryukyu">
2693                        <div class="mx-left">
2694                            <button type="button" class="mx-fav-btn favorite-btn"
2695                                    data-match-id="332301"
2696                                    data-auth="false"
2697                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(332301, this);"
2698                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2699                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2700                            </button>
2701                            <div class="mx-status">
2702                                    <span class="mx-status-badge live">LIVE</span>
2703                            </div>
2704                        </div>
2705
2706                        <div class="mx-center">
2707                            <a href="/shiga-vs-ryukyu-id332301" class="mx-teams-link">
2708                                <div class="mx-team-row">
2709                                    <img src="/images/basketball/teams/760.webp"
2710                                         alt="Shiga" class="mx-team-logo" loading="lazy"
2711                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2712                                    <span class="mx-team-name">Shiga</span>
2713                                    <span class="mx-score live">
271439                                    </span>
2715                                </div>
2716                                <div class="mx-team-row">
2717                                    <img src="/images/basketball/teams/758.webp"
2718                                         alt="Ryukyu" class="mx-team-logo" loading="lazy"
2719                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2720                                    <span class="mx-team-name">Ryukyu</span>
2721                                    <span class="mx-score live">
272245                                    </span>
2723                                </div>
2724                            </a>
2725                        </div>
2726
2727                        <div class="mx-right action-column streamer-col">
2728                                <a href="/shiga-vs-ryukyu-id332301" class="mx-action-btn live-btn">
2729                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2730                                </a>
2731                        </div>
2732                    </div>
2733                    <div class="mx-row is-live " data-search="B League Japan Tokyo Sunrockers Akita">
2734                        <div class="mx-left">
2735                            <button type="button" class="mx-fav-btn favorite-btn"
2736                                    data-match-id="332302"
2737                                    data-auth="false"
2738                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(332302, this);"
2739                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2740                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2741                            </button>
2742                            <div class="mx-status">
2743                                    <span class="mx-status-badge live">LIVE</span>
2744                            </div>
2745                        </div>
2746
2747                        <div class="mx-center">
2748                            <a href="/tokyo-sunrockers-vs-akita-id332302" class="mx-teams-link">
2749                                <div class="mx-team-row">
2750                                    <img src="https://media.api-sports.io/basketball/teams/7906.png"
2751                                         alt="Tokyo Sunrockers" class="mx-team-logo" loading="lazy"
2752                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2753                                    <span class="mx-team-name">Tokyo Sunrockers</span>
2754                                    <span class="mx-score live">
275535                                    </span>
2756                                </div>
2757                                <div class="mx-team-row">
2758                                    <img src="/images/basketball/teams/748.webp"
2759                                         alt="Akita" class="mx-team-logo" loading="lazy"
2760                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2761                                    <span class="mx-team-name">Akita</span>
2762                                    <span class="mx-score live">
276325                                    </span>
2764                                </div>
2765                            </a>
2766                        </div>
2767
2768                        <div class="mx-right action-column streamer-col">
2769                                <a href="/tokyo-sunrockers-vs-akita-id332302" class="mx-action-btn live-btn">
2770                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2771                                </a>
2772                        </div>
2773                    </div>
2774                    <div class="mx-row is-live " data-search="B League Japan Toyama Utsunomiya Brex">
2775                        <div class="mx-left">
2776                            <button type="button" class="mx-fav-btn favorite-btn"
2777                                    data-match-id="332303"
2778                                    data-auth="false"
2779                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(332303, this);"
2780                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2781                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2782                            </button>
2783                            <div class="mx-status">
2784                                    <span class="mx-status-badge live">LIVE</span>
2785                            </div>
2786                        </div>
2787
2788                        <div class="mx-center">
2789                            <a href="/toyama-vs-utsunomiya-brex-id332303" class="mx-teams-link">
2790                                <div class="mx-team-row">
2791                                    <img src="/images/basketball/teams/763.webp"
2792                                         alt="Toyama" class="mx-team-logo" loading="lazy"
2793                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2794                                    <span class="mx-team-name">Toyama</span>
2795                                    <span class="mx-score live">
279639                                    </span>
2797                                </div>
2798                                <div class="mx-team-row">
2799                                    <img src="/images/basketball/teams/764.webp"
2800                                         alt="Utsunomiya Brex" class="mx-team-logo" loading="lazy"
2801                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2802                                    <span class="mx-team-name">Utsunomiya Brex</span>
2803                                    <span class="mx-score live">
280442                                    </span>
2805                                </div>
2806                            </a>
2807                        </div>
2808
2809                        <div class="mx-right action-column streamer-col">
2810                                <a href="/toyama-vs-utsunomiya-brex-id332303" class="mx-action-btn live-btn">
2811                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2812                                </a>
2813                        </div>
2814                    </div>
2815                    <div class="mx-row is-live " data-search="B League Japan Kyoto Nagasaki">
2816                        <div class="mx-left">
2817                            <button type="button" class="mx-fav-btn favorite-btn"
2818                                    data-match-id="332304"
2819                                    data-auth="false"
2820                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(332304, this);"
2821                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2822                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2823                            </button>
2824                            <div class="mx-status">
2825                                    <span class="mx-status-badge live">LIVE</span>
2826                            </div>
2827                        </div>
2828
2829                        <div class="mx-center">
2830                            <a href="/kyoto-vs-nagasaki-id332304" class="mx-teams-link">
2831                                <div class="mx-team-row">
2832                                    <img src="/images/basketball/teams/754.webp"
2833                                         alt="Kyoto" class="mx-team-logo" loading="lazy"
2834                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2835                                    <span class="mx-team-name">Kyoto</span>
2836                                    <span class="mx-score live">
283710                                    </span>
2838                                </div>
2839                                <div class="mx-team-row">
2840                                    <img src="/images/basketball/teams/6034.webp"
2841                                         alt="Nagasaki" class="mx-team-logo" loading="lazy"
2842                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2843                                    <span class="mx-team-name">Nagasaki</span>
2844                                    <span class="mx-score live">
284521                                    </span>
2846                                </div>
2847                            </a>
2848                        </div>
2849
2850                        <div class="mx-right action-column streamer-col">
2851                                <a href="/kyoto-vs-nagasaki-id332304" class="mx-action-btn live-btn">
2852                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2853                                </a>
2854                        </div>
2855                    </div>
2856            </div>
2857        </div>
2858        <div class="lg-section" data-search="KBL Cup South Korea">
2859            <div class="lg-header">
2860                <div class="lg-header-left">
2861                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
2862                        <svg class="icon"><use href="#icon-star"/></svg>
2863                    </button>
2864                        <span class="lg-country-name">South Korea:</span>
2865                    <img src="https://media.api-sports.io/basketball/leagues/266.png"
2866                         alt="KBL Cup" class="lg-logo" loading="lazy"
2867                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
2868                    <span class="lg-name">KBL Cup</span>
2869                </div>
2870                <div class="lg-header-right">
2871                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
2872                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
2873                    </button>
2874                </div>
2875            </div>
2876
2877            <div class="lg-matches">
2878                    <div class="mx-row is-live " data-search="KBL Cup South Korea KoGas Mobis Phoebus">
2879                        <div class="mx-left">
2880                            <button type="button" class="mx-fav-btn favorite-btn"
2881                                    data-match-id="328399"
2882                                    data-auth="false"
2883                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(328399, this);"
2884                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2885                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2886                            </button>
2887                            <div class="mx-status">
2888                                    <span class="mx-status-badge live">LIVE</span>
2889                            </div>
2890                        </div>
2891
2892                        <div class="mx-center">
2893                            <a href="/kogas-vs-mobis-phoebus-id328399" class="mx-teams-link">
2894                                <div class="mx-team-row">
2895                                    <img src="/images/basketball/teams/3081.webp"
2896                                         alt="KoGas" class="mx-team-logo" loading="lazy"
2897                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2898                                    <span class="mx-team-name">KoGas</span>
2899                                    <span class="mx-score live">
290045                                    </span>
2901                                </div>
2902                                <div class="mx-team-row">
2903                                    <img src="/images/basketball/teams/1107.webp"
2904                                         alt="Mobis Phoebus" class="mx-team-logo" loading="lazy"
2905                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2906                                    <span class="mx-team-name">Mobis Phoebus</span>
2907                                    <span class="mx-score live">
290838                                    </span>
2909                                </div>
2910                            </a>
2911                        </div>
2912
2913                        <div class="mx-right action-column streamer-col">
2914                                <a href="/kogas-vs-mobis-phoebus-id328399" class="mx-action-btn live-btn">
2915                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2916                                </a>
2917                        </div>
2918                    </div>
2919                    <div class="mx-row is-live " data-search="KBL Cup South Korea Wonju DB Seoul Thunders">
2920                        <div class="mx-left">
2921                            <button type="button" class="mx-fav-btn favorite-btn"
2922                                    data-match-id="328400"
2923                                    data-auth="false"
2924                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(328400, this);"
2925                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2926                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2927                            </button>
2928                            <div class="mx-status">
2929                                    <span class="mx-status-badge live">LIVE</span>
2930                            </div>
2931                        </div>
2932
2933                        <div class="mx-center">
2934                            <a href="/wonju-db-vs-seoul-thunders-id328400" class="mx-teams-link">
2935                                <div class="mx-team-row">
2936                                    <img src="/images/basketball/teams/1111.webp"
2937                                         alt="Wonju DB" class="mx-team-logo" loading="lazy"
2938                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2939                                    <span class="mx-team-name">Wonju DB</span>
2940                                    <span class="mx-score live">
294145                                    </span>
2942                                </div>
2943                                <div class="mx-team-row">
2944                                    <img src="/images/basketball/teams/1109.webp"
2945                                         alt="Seoul Thunders" class="mx-team-logo" loading="lazy"
2946                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2947                                    <span class="mx-team-name">Seoul Thunders</span>
2948                                    <span class="mx-score live">
294941                                    </span>
2950                                </div>
2951                            </a>
2952                        </div>
2953
2954                        <div class="mx-right action-column streamer-col">
2955                                <a href="/wonju-db-vs-seoul-thunders-id328400" class="mx-action-btn live-btn">
2956                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2957                                </a>
2958                        </div>
2959                    </div>
2960                    <div class="mx-row is-live " data-search="KBL Cup South Korea KCC Egis LG Sakers">
2961                        <div class="mx-left">
2962                            <button type="button" class="mx-fav-btn favorite-btn"
2963                                    data-match-id="328605"
2964                                    data-auth="false"
2965                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(328605, this);"
2966                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2967                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2968                            </button>
2969                            <div class="mx-status">
2970                                    <span class="mx-status-badge live">LIVE</span>
2971                            </div>
2972                        </div>
2973
2974                        <div class="mx-center">
2975                            <a href="/kcc-egis-vs-lg-sakers-id328605" class="mx-teams-link">
2976                                <div class="mx-team-row">
2977                                    <img src="/images/basketball/teams/1105.webp"
2978                                         alt="KCC Egis" class="mx-team-logo" loading="lazy"
2979                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2980                                    <span class="mx-team-name">KCC Egis</span>
2981                                    <span class="mx-score live">
298243                                    </span>
2983                                </div>
2984                                <div class="mx-team-row">
2985                                    <img src="/images/basketball/teams/1106.webp"
2986                                         alt="LG Sakers" class="mx-team-logo" loading="lazy"
2987                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2988                                    <span class="mx-team-name">LG Sakers</span>
2989                                    <span class="mx-score live">
299056                                    </span>
2991                                </div>
2992                            </a>
2993                        </div>
2994
2995                        <div class="mx-right action-column streamer-col">
2996                                <a href="/kcc-egis-vs-lg-sakers-id328605" class="mx-action-btn live-btn">
2997                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2998                                </a>
2999                        </div>
3000                    </div>
3001                    <div class="mx-row is-live " data-search="KBL Cup South Korea Seoul Knights Wonju DB">
3002                        <div class="mx-left">
3003                            <button type="button" class="mx-fav-btn favorite-btn"
3004                                    data-match-id="328922"
3005                                    data-auth="false"
3006                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(328922, this);"
3007                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3008                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3009                            </button>
3010                            <div class="mx-status">
3011                                    <span class="mx-status-badge live">LIVE</span>
3012                            </div>
3013                        </div>
3014
3015                        <div class="mx-center">
3016                            <a href="/seoul-knights-vs-wonju-db-id328922" class="mx-teams-link">
3017                                <div class="mx-team-row">
3018                                    <img src="/images/basketball/teams/1108.webp"
3019                                         alt="Seoul Knights" class="mx-team-logo" loading="lazy"
3020                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3021                                    <span class="mx-team-name">Seoul Knights</span>
3022                                    <span class="mx-score live">
302333                                    </span>
3024                                </div>
3025                                <div class="mx-team-row">
3026                                    <img src="/images/basketball/teams/1111.webp"
3027                                         alt="Wonju DB" class="mx-team-logo" loading="lazy"
3028                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3029                                    <span class="mx-team-name">Wonju DB</span>
3030                                    <span class="mx-score live">
303160                                    </span>
3032                                </div>
3033                            </a>
3034                        </div>
3035
3036                        <div class="mx-right action-column streamer-col">
3037                                <a href="/seoul-knights-vs-wonju-db-id328922" class="mx-action-btn live-btn">
3038                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3039                                </a>
3040                        </div>
3041                    </div>
3042                    <div class="mx-row is-live " data-search="KBL Cup S
3042outh Korea Seoul Thunders Anyang JungKwanJang">
3043                        <div class="mx-left">
3044                            <button type="button" class="mx-fav-btn favorite-btn"
3045                                    data-match-id="330266"
3046                                    data-auth="false"
3047                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(330266, this);"
3048                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3049                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3050                            </button>
3051                            <div class="mx-status">
3052                                    <span class="mx-status-badge live">LIVE</span>
3053                            </div>
3054                        </div>
3055
3056                        <div class="mx-center">
3057                            <a href="/seoul-thunders-vs-anyang-jungkwanjang-id330266" class="mx-teams-link">
3058                                <div class="mx-team-row">
3059                                    <img src="/images/basketball/teams/1109.webp"
3060                                         alt="Seoul Thunders" class="mx-team-logo" loading="lazy"
3061                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3062                                    <span class="mx-team-name">Seoul Thunders</span>
3063                                    <span class="mx-score live">
306435                                    </span>
3065                                </div>
3066                                <div class="mx-team-row">
3067                                    <img src="/images/basketball/teams/1102.webp"
3068                                         alt="Anyang JungKwanJang" class="mx-team-logo" loading="lazy"
3069                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3070                                    <span class="mx-team-name">Anyang JungKwanJang</span>
3071                                    <span class="mx-score live">
307238                                    </span>
3073                                </div>
3074                            </a>
3075                        </div>
3076
3077                        <div class="mx-right action-column streamer-col">
3078                                <a href="/seoul-thunders-vs-anyang-jungkwanjang-id330266" class="mx-action-btn live-btn">
3079                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3080                                </a>
3081                        </div>
3082                    </div>
3083                    <div class="mx-row is-live " data-search="KBL Cup South Korea Suwon KT Goyang Sono">
3084                        <div class="mx-left">
3085                            <button type="button" class="mx-fav-btn favorite-btn"
3086                                    data-match-id="330267"
3087                                    data-auth="false"
3088                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(330267, this);"
3089                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3090                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3091                            </button>
3092                            <div class="mx-status">
3093                                    <span class="mx-status-badge live">LIVE</span>
3094                            </div>
3095                        </div>
3096
3097                        <div class="mx-center">
3098                            <a href="/suwon-kt-vs-goyang-sono-id330267" class="mx-teams-link">
3099                                <div class="mx-team-row">
3100                                    <img src="/images/basketball/teams/3173.webp"
3101                                         alt="Suwon KT" class="mx-team-logo" loading="lazy"
3102                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3103                                    <span class="mx-team-name">Suwon KT</span>
3104                                    <span class="mx-score live">
310561                                    </span>
3106                                </div>
3107                                <div class="mx-team-row">
3108                                    <img src="/images/basketball/teams/1103.webp"
3109                                         alt="Goyang Sono" class="mx-team-logo" loading="lazy"
3110                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3111                                    <span class="mx-team-name">Goyang Sono</span>
3112                                    <span class="mx-score live">
311356                                    </span>
3114                                </div>
3115                            </a>
3116                        </div>
3117
3118                        <div class="mx-right action-column streamer-col">
3119                                <a href="/suwon-kt-vs-goyang-sono-id330267" class="mx-action-btn live-btn">
3120                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3121                                </a>
3122                        </div>
3123                    </div>
3124            </div>
3125        </div>
3126        <div class="lg-section" data-search="NBL1 East Australia">
3127            <div class="lg-header">
3128                <div class="lg-header-left">
3129                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3130                        <svg class="icon"><use href="#icon-star"/></svg>
3131                    </button>
3132                        <span class="lg-country-name">Australia:</span>
3133                    <img src="/images/basketball/leagues/215.webp"
3134                         alt="NBL1 East" class="lg-logo" loading="lazy"
3135                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3136                    <span class="lg-name">NBL1 East</span>
3137                </div>
3138                <div class="lg-header-right">
3139                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3140                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3141                    </button>
3142                </div>
3143            </div>
3144
3145            <div class="lg-matches">
3146                    <div class="mx-row is-live " data-search="NBL1 
3146East Australia Central Coast Crusaders Bankstown Bruins">
3147                        <div class="mx-left">
3148                            <button type="button" class="mx-fav-btn favorite-btn"
3149                                    data-match-id="284825"
3150                                    data-auth="false"
3151                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(284825, this);"
3152                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3153                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3154                            </button>
3155                            <div class="mx-status">
3156                                    <span class="mx-status-badge live">LIVE</span>
3157                            </div>
3158                        </div>
3159
3160                        <div class="mx-center">
3161                            <a href="/central-coast-crusaders-vs-bankstown-bruins-id284825" class="mx-teams-link">
3162                                <div class="mx-team-row">
3163                                    <img src="/images/basketball/teams/3534.webp"
3164                                         alt="Central Coast Crusaders" class="mx-team-logo" loading="lazy"
3165                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3166                                    <span class="mx-team-name">Central Coast Crusaders</span>
3167                                    <span class="mx-score live">
316869                                    </span>
3169                                </div>
3170                                <div class="mx-team-row">
3171                                    <img src="/images/basketball/teams/3533.webp"
3172                                         alt="Bankstown Bruins" class="mx-team-logo" loading="lazy"
3173                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3174                                    <span class="mx-team-name">Bankstown Bruins</span>
3175                                    <span class="mx-score live">
317659                                    </span>
3177                                </div>
3178                            </a>
3179                        </div>
3180
3181                        <div class="mx-right action-column streamer-col">
3182                                <a href="/central-coast-crusaders-vs-bankstown-bruins-id284825" class="mx-action-btn live-btn">
3183                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3184                                </a>
3185                        </div>
3186                    </div>
3187                    <div class="mx-row is-live " data-search="NBL1 
3187East Australia Manly W. Central Coast Crusaders">
3188                        <div class="mx-left">
3189                            <button type="button" class="mx-fav-btn favorite-btn"
3190                                    data-match-id="304617"
3191                                    data-auth="false"
3192                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(304617, this);"
3193                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3194                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3195                            </button>
3196                            <div class="mx-status">
3197                                    <span class="mx-status-badge live">LIVE</span>
3198                            </div>
3199                        </div>
3200
3201                        <div class="mx-center">
3202                            <a href="/manly-w-vs-central-coast-crusaders-id304617" class="mx-teams-link">
3203                                <div class="mx-team-row">
3204                                    <img src="/images/basketball/teams/3538.webp"
3205                                         alt="Manly W." class="mx-team-logo" loading="lazy"
3206                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3207                                    <span class="mx-team-name">Manly W.</span>
3208                                    <span class="mx-score live">
320940                                    </span>
3210                                </div>
3211                                <div class="mx-team-row">
3212                                    <img src="/images/basketball/teams/3534.webp"
3213                                         alt="Central Coast Crusaders" class="mx-team-logo" loading="lazy"
3214                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3215                                    <span class="mx-team-name">Central Coast Crusaders</span>
3216                                    <span class="mx-score live">
321732                                    </span>
3218                                </div>
3219                            </a>
3220                        </div>
3221
3222                        <div class="mx-right action-column streamer-col">
3223                                <a href="/manly-w-vs-central-coast-crusaders-id304617" class="mx-action-btn live-btn">
3224                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3225                                </a>
3226                        </div>
3227                    </div>
3228                    <div class="mx-row is-live " data-search="NBL1 
3228East Australia Sutherland Sharks Norths Bears">
3229                        <div class="mx-left">
3230                            <button type="button" class="mx-fav-btn favorite-btn"
3231                                    data-match-id="310978"
3232                                    data-auth="false"
3233                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(310978, this);"
3234                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3235                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3236                            </button>
3237                            <div class="mx-status">
3238                                    <span class="mx-status-badge live">LIVE</span>
3239                            </div>
3240                        </div>
3241
3242                        <div class="mx-center">
3243                            <a href="/sutherland-sharks-vs-norths-bears-id310978" class="mx-teams-link">
3244                                <div class="mx-team-row">
3245                                    <img src="/images/basketball/teams/3541.webp"
3246                                         alt="Sutherland Sharks" class="mx-team-logo" loading="lazy"
3247                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3248                                    <span class="mx-team-name">Sutherland Sharks</span>
3249                                    <span class="mx-score live">
325029                                    </span>
3251                                </div>
3252                                <div class="mx-team-row">
3253                                    <img src="/images/basketball/teams/3540.webp"
3254                                         alt="Norths Bears" class="mx-team-logo" loading="lazy"
3255                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3256                                    <span class="mx-team-name">Norths Bears</span>
3257                                    <span class="mx-score live">
325827                                    </span>
3259                                </div>
3260                            </a>
3261                        </div>
3262
3263                        <div class="mx-right action-column streamer-col">
3264                                <a href="/sutherland-sharks-vs-norths-bears-id310978" class="mx-action-btn live-btn">
3265                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3266                                </a>
3267                        </div>
3268                    </div>
3269            </div>
3270        </div>
3271        <div class="lg-section" data-search="Liga MX Mexico">
3272            <div class="lg-header">
3273                <div class="lg-header-left">
3274                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3275                        <svg class="icon"><use href="#icon-star"/></svg>
3276                    </button>
3277                        <span class="lg-country-name">Mexico:</span>
3278                    <img src="/images/football/leagues/262.webp"
3279                         alt="Liga MX" class="lg-logo" loading="lazy"
3280                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3281                    <span class="lg-name">Liga MX</span>
3282                </div>
3283                <div class="lg-header-right">
3284                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3285                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3286                    </button>
3287                </div>
3288            </div>
3289
3290            <div class="lg-matches">
3291                    <div class="mx-row is-live " data-search="Liga MX Mexico Puebla Leon Phan Pepsi">
3292                        <div class="mx-left">
3293                            <button type="button" class="mx-fav-btn favorite-btn"
3294                                    data-match-id="336719"
3295                                    data-auth="false"
3296                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(336719, this);"
3297                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3298                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3299                            </button>
3300                            <div class="mx-status">
3301                                    <span class="mx-status-badge live">2H</span>
3302                                        <span class="mx-minute">64<span class="minute-tick">'</span></span>
3303                            </div>
3304                        </div>
3305
3306                        <div class="mx-center">
3307                            <a href="/puebla-vs-leon-id336719/phan-pepsi" class="mx-teams-link">
3308                                <div class="mx-team-row">
3309                                    <img src="/images/football/teams/2291.webp"
3310                                         alt="Puebla" class="mx-team-logo" loading="lazy"
3311                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3312                                    <span class="mx-team-name">Puebla</span>
3313                                    <span class="mx-score live">
33140                                    </span>
3315                                </div>
3316                                <div class="mx-team-row">
3317                                    <img src="/images/football/teams/2289.webp"
3318                                         alt="Leon" class="mx-team-logo" loading="lazy"
3319                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3320                                    <span class="mx-team-name">Leon</span>
3321                                    <span class="mx-score live">
33221                                    </span>
3323                                </div>
3324                            </a>
3325                        </div>
3326
3327                        <div class="mx-right action-column streamer-col">
3328                                <a href="/puebla-vs-leon-id336719/phan-pepsi" class="mx-action-btn live-btn">
3329                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3330                                </a>
3331                                    <a href="/streamer/12/phan-pepsi"
3332                                       class="mx-streamer-badge mx-streamer-badge-live mx-streamer-pill"
3333                                       title="BLV PHAN PEPSI">
3334                                        <svg class="icon icon-mic"><use href="#icon-mic"/></svg>
3335                                        <span class="mx-streamer-name">BLV PHAN PEPSI</span>
3336                                    </a>
3337                        </div>
3338                    </div>
3339                    <div class="mx-row is-live " data-search="Liga MX Mexico Puebla Leon Hawkeye">
3340                        <div class="mx-left">
3341                            <button type="button" class="mx-fav-btn favorite-btn"
3342                                    data-match-id="336719"
3343                                    data-auth="false"
3344                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(336719, this);"
3345                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3346                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3347                            </button>
3348                            <div class="mx-status">
3349                                    <span class="mx-status-badge live">2H</span>
3350                                        <span class="mx-minute">64<span class="minute-tick">'</span></span>
3351                            </div>
3352                        </div>
3353
3354                        <div class="mx-center">
3355                            <a href="/puebla-vs-leon-id336719/hawkeye" class="mx-teams-link">
3356                                <div class="mx-team-row">
3357                                    <img src="/images/football/teams/2291.webp"
3358                                         alt="Puebla" class="mx-team-logo" loading="lazy"
3359                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3360                                    <span class="mx-team-name">Puebla</span>
3361                                    <span class="mx-score live">
33620                                    </span>
3363                                </div>
3364                                <div class="mx-team-row">
3365                                    <img src="/images/football/teams/2289.webp"
3366                                         alt="Leon" class="mx-team-logo" loading="lazy"
3367                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3368                                    <span class="mx-team-name">Leon</span>
3369                                    <span class="mx-score live">
33701                                    </span>
3371                                </div>
3372                            </a>
3373                        </div>
3374
3375                        <div class="mx-right action-column streamer-col">
3376                                <a href="/puebla-vs-leon-id336719/hawkeye" class="mx-action-btn live-btn">
3377                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3378                                </a>
3379                                    <a href="/streamer/79/hawkeye"
3380                                       class="mx-streamer-badge mx-streamer-badge-live mx-streamer-pill"
3381                                       title="BLV HAWKEYE">
3382                                        <svg class="icon icon-mic"><use href="#icon-mic"/></svg>
3383                                        <span class="mx-streamer-name">BLV HAWKEYE</span>
3384                                    </a>
3385                        </div>
3386                    </div>
3387            </div>
3388        </div>
3389        <div class="lg-section" data-search="World Cup World">
3390            <div class="lg-header">
3391                <div class="lg-header-left">
3392                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3393                        <svg class="icon"><use href="#icon-star"/></svg>
3394                    </button>
3395                        <span class="lg-country-name">World:</span>
3396                    <img src="/images/basketball/leagues/281.webp"
3397                         alt="World Cup" class="lg-logo" loading="lazy"
3398                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3399                    <span class="lg-name">World Cup</span>
3400                </div>
3401                <div class="lg-header-right">
3402                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3403                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3404                    </button>
3405                </div>
3406            </div>
3407
3408            <div class="lg-matches">
3409                    <div class="mx-row is-live " data-search="World Cup World Iran New Zealand">
3410                        <div class="mx-left">
3411                            <button type="button" class="mx-fav-btn favorite-btn"
3412                                    data-match-id="311617"
3413                                    data-auth="false"
3414                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(311617, this);"
3415                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3416                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3417                            </button>
3418                            <div class="mx-status">
3419                                    <span class="mx-status-badge live">LIVE</span>
3420                            </div>
3421                        </div>
3422
3423                        <div class="mx-center">
3424                            <a href="/iran-vs-new-zealand-id311617" class="mx-teams-link">
3425                                <div class="mx-team-row">
3426                                    <img src="/images/basketball/teams/3055.webp"
3427                                         alt="Iran" class="mx-team-logo" loading="lazy"
3428                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3429                                    <span class="mx-team-name">Iran</span>
3430                                    <span class="mx-score live">
34312                                    </span>
3432                                </div>
3433                                <div class="mx-team-row">
3434                                    <img src="/images/basketball/teams/4085.webp"
3435                                         alt="New Zealand" class="mx-team-logo" loading="lazy"
3436                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3437                                    <span class="mx-team-name">New Zealand</span>
3438                                    <span class="mx-score live">
34392                                    </span>
3440                                </div>
3441                            </a>
3442                        </div>
3443
3444                        <div class="mx-right action-column streamer-col">
3445                                <a href="/iran-vs-new-zealand-id311617" class="mx-action-btn live-btn">
3446                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3447                                </a>
3448                        </div>
3449                    </div>
3450                    <div class="mx-row is-live " data-search="World Cup World New Zealand Syria">
3451                        <div class="mx-left">
3452                            <button type="button" class="mx-fav-btn favorite-btn"
3453                                    data-match-id="313561"
3454                                    data-auth="false"
3455                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(313561, this);"
3456                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3457                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3458                            </button>
3459                            <div class="mx-status">
3460                                    <span class="mx-status-badge live">LIVE</span>
3461                            </div>
3462                        </div>
3463
3464                        <div class="mx-center">
3465                            <a href="/new-zealand-vs-syria-id313561" class="mx-teams-link">
3466                                <div class="mx-team-row">
3467                                    <img src="/images/basketball/teams/4085.webp"
3468                                         alt="New Zealand" class="mx-team-logo" loading="lazy"
3469                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3470                                    <span class="mx-team-name">New Zealand</span>
3471                                    <span class="mx-score live">
34724                                    </span>
3473                                </div>
3474                                <div class="mx-team-row">
3475                                    <img src="/images/basketball/teams/4090.webp"
3476                                         alt="Syria" class="mx-team-logo" loading="lazy"
3477                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3478                                    <span class="mx-team-name">Syria</span>
3479                                    <span class="mx-score live">
34800                                    </span>
3481                                </div>
3482                            </a>
3483                        </div>
3484
3485                        <div class="mx-right action-column streamer-col">
3486                                <a href="/new-zealand-vs-syria-id313561" class="mx-action-btn live-btn">
3487                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3488                                </a>
3489                        </div>
3490                    </div>
3491            </div>
3492        </div>
3493        <div class="lg-section" data-search="Russian Cup W Russia">
3494            <div class="lg-header">
3495                <div class="lg-header-left">
3496                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3497                        <svg class="icon"><use href="#icon-star"/></svg>
3498                    </button>
3499                        <span class="lg-country-name">Russia:</span>
3500                    <img src="https://media.api-sports.io/basketball/leagues/80.png"
3501                         alt="Russian Cup W" class="lg-logo" loading="lazy"
3502                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3503                    <span class="lg-name">Russian Cup W</span>
3504                </div>
3505                <div class="lg-header-right">
3506                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3507                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3508                    </button>
3509                </div>
3510            </div>
3511
3512            <div class="lg-matches">
3513                    <div class="mx-row is-live " data-search="Russian Cup W Russia Metallurg Magnitogorsk W Enisey Krasnoyarsk 2 W">
3514                        <div class="mx-left">
3515                            <button type="button" class="mx-fav-btn favorite-btn"
3516                                    data-match-id="323123"
3517                                    data-auth="false"
3518                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(323123, this);"
3519                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3520                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3521                            </button>
3522                            <div class="mx-status">
3523                                    <span class="mx-status-badge live">LIVE</span>
3524                            </div>
3525                        </div>
3526
3527                        <div class="mx-center">
3528                            <a href="/metallurg-magnitogorsk-w-vs-enisey-krasnoyarsk-2-w-id323123" class="mx-teams-link">
3529                                <div class="mx-team-row">
3530                                    <img src="https://media.api-sports.io/basketball/teams/7937.png"
3531                                         alt="Metallurg Magnitogorsk W" class="mx-team-logo" loading="lazy"
3532                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3533                                    <span class="mx-team-name">Metallurg Magnitogorsk W</span>
3534                                    <span class="mx-score live">
35350                                    </span>
3536                                </div>
3537                                <div class="mx-team-row">
3538                                    <img src="https://media.api-sports.io/basketball/teams/5424.png"
3539                                         alt="Enisey Krasnoyarsk 2 W" class="mx-team-logo" loading="lazy"
3540                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3541                                    <span class="mx-team-name">Enisey Krasnoyarsk 2 W</span>
3542                                    <span class="mx-score live">
35430                                    </span>
3544                                </div>
3545                            </a>
3546                        </div>
3547
3548                        <div class="mx-right action-column streamer-col">
3549                                <a href="/metallurg-magnitogorsk-w-vs-enisey-krasnoyarsk-2-w-id323123" class="mx-action-btn live-btn">
3550                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3551                                </a>
3552                        </div>
3553                    </div>
3554                    <div class="mx-row is-live " data-search="Russian Cup W Russia Metallurg Magnitogorsk W Chelyabinsk W">
3555                        <div class="mx-left">
3556                            <button type="button" class="mx-fav-btn favorite-btn"
3557                                    data-match-id="323124"
3558                                    data-auth="false"
3559                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(323124, this);"
3560                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3561                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3562                            </button>
3563                            <div class="mx-status">
3564                                    <span class="mx-status-badge live">LIVE</span>
3565                            </div>
3566                        </div>
3567
3568                        <div class="mx-center">
3569                            <a href="/metallurg-magnitogorsk-w-vs-chelyabinsk-w-id323124" class="mx-teams-link">
3570                                <div class="mx-team-row">
3571                                    <img src="https://media.api-sports.io/basketball/teams/7937.png"
3572                                         alt="Metallurg Magnitogorsk W" class="mx-team-logo" loading="lazy"
3573                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3574                                    <span class="mx-team-name">Metallurg Magnitogorsk W</span>
3575                                    <span class="mx-score live">
35763                                    </span>
3577                                </div>
3578                                <div class="mx-team-row">
3579                                    <img src="https://media.api-sports.io/basketball/teams/5606.png"
3580                                         alt="Chelyabinsk W" class="mx-team-logo" loading="lazy"
3581                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3582                                    <span class="mx-team-name">Chelyabinsk W</span>
3583                                    <span class="mx-score live">
35842                                    </span>
3585                                </div>
3586                            </a>
3587                        </div>
3588
3589                        <div class="mx-right action-column streamer-col">
3590                                <a href="/metallurg-magnitogorsk-w-vs-chelyabinsk-w-id323124" class="mx-action-btn live-btn">
3591                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3592                                </a>
3593                        </div>
3594                    </div>
3595            </div>
3596        </div>
3597        <div class="lg-section" data-search="Asian Games Women Asia">
3598            <div class="lg-header">
3599                <div class="lg-header-left">
3600                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3601                        <svg class="icon"><use href="#icon-star"/></svg>
3602                    </button>
3603                        <span class="lg-country-name">Asia:</span>
3604                    <img src="https://media.api-sports.io/basketball/leagues/302.png"
3605                         alt="Asian Games Women" class="lg-logo" loading="lazy"
3606                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3607                    <span class="lg-name">Asian Games Women</span>
3608                </div>
3609                <div class="lg-header-right">
3610                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3611                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3612                    </button>
3613                </div>
3614            </div>
3615
3616            <div class="lg-matches">
3617                    <div class="mx-row is-live " data-search="Asian Games Women Asia Indonesia W Thailand W">
3618                        <div class="mx-left">
3619                            <button type="button" class="mx-fav-btn favorite-btn"
3620                                    data-match-id="324198"
3621                                    data-auth="false"
3622                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(324198, this);"
3623                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3624                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3625                            </button>
3626                            <div class="mx-status">
3627                                    <span class="mx-status-badge live">LIVE</span>
3628                            </div>
3629                        </div>
3630
3631                        <div class="mx-center">
3632                            <a href="/indonesia-w-vs-thailand-w-id324198" class="mx-teams-link">
3633                                <div class="mx-team-row">
3634                                    <img src="https://media.api-sports.io/basketball/teams/4350.png"
3635                                         alt="Indonesia W" class="mx-team-logo" loading="lazy"
3636                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3637                                    <span class="mx-team-name">Indonesia W</span>
3638                                    <span class="mx-score live">
363957                                    </span>
3640                                </div>
3641                                <div class="mx-team-row">
3642                                    <img src="https://media.api-sports.io/basketball/teams/4354.png"
3643                                         alt="Thailand W" class="mx-team-logo" loading="lazy"
3644                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3645                                    <span class="mx-team-name">Thailand W</span>
3646                                    <span class="mx-score live">
364748                                    </span>
3648                                </div>
3649                            </a>
3650                        </div>
3651
3652                        <div class="mx-right action-column streamer-col">
3653                                <a href="/indonesia-w-vs-thailand-w-id324198" class="mx-action-btn live-btn">
3654                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3655                                </a>
3656                        </div>
3657                    </div>
3658                    <div class="mx-row is-live " data-search="Asian Games Women Asia Kazakhstan W Japan W">
3659                        <div class="mx-left">
3660                            <button type="button" class="mx-fav-btn favorite-btn"
3661                                    data-match-id="326544"
3662                                    data-auth="false"
3663                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(326544, this);"
3664                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3665                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3666                            </button>
3667                            <div class="mx-status">
3668                                    <span class="mx-status-badge live">LIVE</span>
3669                            </div>
3670                        </div>
3671
3672                        <div class="mx-center">
3673                            <a href="/kazakhstan-w-vs-japan-w-id326544" class="mx-teams-link">
3674                                <div class="mx-team-row">
3675                                    <img src="https://media.api-sports.io/basketball/teams/4351.png"
3676                                         alt="Kazakhstan W" class="mx-team-logo" loading="lazy"
3677                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3678                                    <span class="mx-team-name">Kazakhstan W</span>
3679                                    <span class="mx-score live">
368020                                    </span>
3681                                </div>
3682                                <div class="mx-team-row">
3683                                    <img src="https://media.api-sports.io/basketball/teams/3042.png"
3684                                         alt="Japan W" class="mx-team-logo" loading="lazy"
3685                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3686                                    <span class="mx-team-name">Japan W</span>
3687                                    <span class="mx-score live">
368863                                    </span>
3689                                </div>
3690                            </a>
3691                        </div>
3692
3693                        <div class="mx-right action-column streamer-col">
3694                                <a href="/kazakhstan-w-vs-japan-w-id326544" class="mx-action-btn live-btn">
3695                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3696                                </a>
3697                        </div>
3698                    </div>
3699            </div>
3700        </div>
3701        <div class="lg-section" data-search="KBL South Korea">
3702            <div class="lg-header">
3703                <div class="lg-header-left">
3704                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3705                        <svg class="icon"><use href="#icon-star"/></svg>
3706                    </button>
3707                        <span class="lg-country-name">South Korea:</span>
3708                    <img src="/images/basketball/leagues/91.webp"
3709                         alt="KBL" class="lg-logo" loading="lazy"
3710                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3711                    <span class="lg-name">KBL</span>
3712                </div>
3713                <div class="lg-header-right">
3714                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3715                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3716                    </button>
3717                </div>
3718            </div>
3719
3720            <div class="lg-matches">
3721                    <div class="mx-row is-live " data-search="KBL South Korea Goyang Sono KoGas">
3722                        <div class="mx-left">
3723                            <button type="button" class="mx-fav-btn favorite-btn"
3724                                    data-match-id="332295"
3725                                    data-auth="false"
3726                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(332295, this);"
3727                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3728                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3729                            </button>
3730                            <div class="mx-status">
3731                                    <span class="mx-status-badge live">LIVE</span>
3732                            </div>
3733                        </div>
3734
3735                        <div class="mx-center">
3736                            <a href="/goyang-sono-vs-kogas-id332295" class="mx-teams-link">
3737                                <div class="mx-team-row">
3738                                    <img src="/images/basketball/teams/1103.webp"
3739                                         alt="Goyang Sono" class="mx-team-logo" loading="lazy"
3740                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3741                                    <span class="mx-team-name">Goyang Sono</span>
3742                                    <span class="mx-score live">
374347                                    </span>
3744                                </div>
3745                                <div class="mx-team-row">
3746                                    <img src="/images/basketball/teams/3081.webp"
3747                                         alt="KoGas" class="mx-team-logo" loading="lazy"
3748                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3749                                    <span class="mx-team-name">KoGas</span>
3750                                    <span class="mx-score live">
375143                                    </span>
3752                                </div>
3753                            </a>
3754                        </div>
3755
3756                        <div class="mx-right action-column streamer-col">
3757                                <a href="/goyang-sono-vs-kogas-id332295" class="mx-action-btn live-btn">
3758                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3759                                </a>
3760                        </div>
3761                    </div>
3762                    <div class="mx-row is-live " data-search="KBL South Korea KCC Egis LG Sakers">
3763                        <div class="mx-left">
3764                            <button type="button" class="mx-fav-btn favorite-btn"
3765                                    data-match-id="332296"
3766                                    data-auth="false"
3767                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(332296, this);"
3768                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3769                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3770                            </button>
3771                            <div class="mx-status">
3772                                    <span class="mx-status-badge live">LIVE</span>
3773                            </div>
3774                        </div>
3775
3776                        <div class="mx-center">
3777                            <a href="/kcc-egis-vs-lg-sakers-id332296" class="mx-teams-link">
3778                                <div class="mx-team-row">
3779                                    <img src="/images/basketball/teams/1105.webp"
3780                                         alt="KCC Egis" class="mx-team-logo" loading="lazy"
3781                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3782                                    <span class="mx-team-name">KCC Egis</span>
3783                                    <span class="mx-score live">
378430                                    </span>
3785                                </div>
3786                                <div class="mx-team-row">
3787                                    <img src="/images/basketball/teams/1106.webp"
3788                                         alt="LG Sakers" class="mx-team-logo" loading="lazy"
3789                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3790                                    <span class="mx-team-name">LG Sakers</span>
3791                                    <span class="mx-score live">
379253                                    </span>
3793                                </div>
3794                            </a>
3795                        </div>
3796
3797                        <div class="mx-right action-column streamer-col">
3798                                <a href="/kcc-egis-vs-lg-sakers-id332296" class="mx-action-btn live-btn">
3799                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3800                                </a>
3801                        </div>
3802                    </div>
3803            </div>
3804        </div>
3805        <div class="lg-section" data-search="Liga Profesional Argentina Argentina">
3806            <div class="lg-header">
3807                <div class="lg-header-left">
3808                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3809                        <svg class="icon"><use href="#icon-star"/></svg>
3810                    </button>
3811                        <span class="lg-country-name">Argentina:</span>
3812                    <img src="/images/football/leagues/128.webp"
3813                         alt="Liga Profesional Argentina" class="lg-logo" loading="lazy"
3814                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3815                    <span class="lg-name">Liga Profesional Argentina</span>
3816                </div>
3817                <div class="lg-header-right">
3818                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3819                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3820                    </button>
3821                </div>
3822            </div>
3823
3824            <div class="lg-matches">
3825                    <div class="mx-row is-live " data-search="Liga Profesional Argentina Argentina Union Santa Fe Defensa Y Justicia Groot">
3826                        <div class="mx-left">
3827                            <button type="button" class="mx-fav-btn favorite-btn"
3828                                    data-match-id="339522"
3829                                    data-auth="false"
3830                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(339522, this);"
3831                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3832                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3833                            </button>
3834                            <div class="mx-status">
3835                                    <span class="mx-status-badge live">2H</span>
3836                                        <span class="mx-minute">77<span class="minute-tick">'</span></span>
3837                            </div>
3838                        </div>
3839
3840                        <div class="mx-center">
3841                            <a href="/union-santa-fe-vs-defensa-y-justicia-id339522/groot" class="mx-teams-link">
3842                                <div class="mx-team-row">
3843                                    <img src="/images/football/teams/441.webp"
3844                                         alt="Union Santa Fe" class="mx-team-logo" loading="lazy"
3845                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3846                                    <span class="mx-team-name">Union Santa Fe</span>
3847                                    <span class="mx-score live">
38480                                    </span>
3849                                </div>
3850                                <div class="mx-team-row">
3851                                    <img src="/images/football/teams/442.webp"
3852                                         alt="Defensa Y Justicia" class="mx-team-logo" loading="lazy"
3853                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3854                                    <span class="mx-team-name">Defensa Y Justicia</span>
3855                                    <span class="mx-score live">
38562                                    </span>
3857                                </div>
3858                            </a>
3859                        </div>
3860
3861                        <div class="mx-right action-column streamer-col">
3862                                <a href="/union-santa-fe-vs-defensa-y-justicia-id339522/groot" class="mx-action-btn live-btn">
3863                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3864                                </a>
3865                                    <a href="/streamer/94/groot"
3866                                       class="mx-streamer-badge mx-streamer-badge-live mx-streamer-pill"
3867                                       title="BLV GROOT">
3868                                        <svg class="icon icon-mic"><use href="#icon-mic"/></svg>
3869                                        <span class="mx-streamer-name">BLV GROOT</span>
3870                                    </a>
3871                        </div>
3872                    </div>
3873            </div>
3874        </div>
3875        <div class="lg-section" data-search="NBA W USA">
3876            <div class="lg-header">
3877                <div class="lg-header-left">
3878                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3879                        <svg class="icon"><use href="#icon-star"/></svg>
3880                    </button>
3881                        <span class="lg-country-name">USA:</span>
3882                    <img src="/images/basketball/leagues/13.webp"
3883                         alt="NBA W" class="lg-logo" loading="lazy"
3884                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3885                    <span class="lg-name">NBA W</span>
3886                </div>
3887                <div class="lg-header-right">
3888                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3889                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3890                    </button>
3891                </div>
3892            </div>
3893
3894            <div class="lg-matches">
3895                    <div class="mx-row is-live " data-search="NBA W USA Las Vegas Aces W Golden State Valkyries W The Flash">
3896                        <div class="mx-left">
3897                            <button type="button" class="mx-fav-btn favorite-btn"
3898                                    data-match-id="345322"
3899                                    data-auth="false"
3900                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(345322, this);"
3901                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3902                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3903                            </button>
3904                            <div class="mx-status">
3905                                    <span class="mx-status-badge live">LIVE</span>
3906                            </div>
3907                        </div>
3908
3909                        <div class="mx-center">
3910                            <a href="/las-vegas-aces-w-vs-golden-state-valkyries-w-id345322/the-flash" class="mx-teams-link">
3911                                <div class="mx-team-row">
3912                                    <img src="/images/basketball/teams/167.webp"
3913                                         alt="Las Vegas Aces W" class="mx-team-logo" loading="lazy"
3914                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3915                                    <span class="mx-team-name">Las Vegas Aces W</span>
3916                                    <span class="mx-score live">
39170                                    </span>
3918                                </div>
3919                                <div class="mx-team-row">
3920                                    <img src="/images/basketball/teams/7326.webp"
3921                                         alt="Golden State Valkyries W" class="mx-team-logo" loading="lazy"
3922                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3923                                    <span class="mx-team-name">Golden State Valkyries W</span>
3924                                    <span class="mx-score live">
39250                                    </span>
3926                                </div>
3927                            </a>
3928                        </div>
3929
3930                        <div class="mx-right action-column streamer-col">
3931                                <a href="/las-vegas-aces-w-vs-golden-state-valkyries-w-id345322/the-flash" class="mx-action-btn live-btn">
3932                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3933                                </a>
3934                                    <a href="/streamer/80/the-flash"
3935                                       class="mx-streamer-badge mx-streamer-badge-live mx-streamer-pill"
3936                                       title="BLV THE FLASH">
3937                                        <svg class="icon icon-mic"><use href="#icon-mic"/></svg>
3938                                        <span class="mx-streamer-name">BLV THE FLASH</span>
3939                                    </a>
3940                        </div>
3941                    </div>
3942            </div>
3943        </div>
3944        <div class="lg-section" data-search="NBL1 Central Australia">
3945            <div class="lg-header">
3946                <div class="lg-header-left">
3947                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3948                        <svg class="icon"><use href="#icon-star"/></svg>
3949                    </button>
3950                        <span class="lg-country-name">Australia:</span>
3951                    <img src="/images/basketball/leagues/212.webp"
3952                         alt="NBL1 Central" class="lg-logo" loading="lazy"
3953                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3954                    <span class="lg-name">NBL1 Central</span>
3955                </div>
3956                <div class="lg-header-right">
3957                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3958                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3959                    </button>
3960                </div>
3961            </div>
3962
3963            <div class="lg-matches">
3964                    <div class="mx-row is-live " data-search="NBL1 Central Australia Eastern Mavericks North Adelaide Rockets">
3965                        <div class="mx-left">
3966                            <button type="button" class="mx-fav-btn favorite-btn"
3967                                    data-match-id="284823"
3968                                    data-auth="false"
3969                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(284823, this);"
3970                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3971                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3972                            </button>
3973                            <div class="mx-status">
3974                                    <span class="mx-status-badge live">LIVE</span>
3975                            </div>
3976                        </div>
3977
3978                        <div class="mx-center">
3979                            <a href="/eastern-mavericks-vs-north-adelaide-rockets-id284823" class="mx-teams-link">
3980                                <div class="mx-team-row">
3981                                    <img src="/images/basketball/teams/3496.webp"
3982                                         alt="Eastern Mavericks" class="mx-team-logo" loading="lazy"
3983                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3984                                    <span class="mx-team-name">Eastern Mavericks</span>
3985                                    <span class="mx-score live">
398682                                    </span>
3987                                </div>
3988                                <div class="mx-team-row">
3989                                    <img src="/images/basketball/teams/3498.webp"
3990                                         alt="North Adelaide Rockets" class="mx-team-logo" loading="lazy"
3991                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3992                                    <span class="mx-team-name">North Adelaide Rockets</span>
3993                                    <span class="mx-score live">
399473                                    </span>
3995                                </div>
3996                            </a>
3997                        </div>
3998
3999                        <div class="mx-right action-column streamer-col">
4000                                <a href="/eastern-mavericks-vs-north-adelaide-rockets-id284823" class="mx-action-btn live-btn">
4001                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
4002                                </a>
4003                        </div>
4004                    </div>
4005            </div>
4006        </div>
4007        <div class="lg-section" data-search="NBL1 North Australia">
4008            <div class="lg-header">
4009                <div class="lg-header-left">
4010                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
4011                        <svg class="icon"><use href="#icon-star"/></svg>
4012                    </button>
4013                        <span class="lg-country-name">Australia:</span>
4014                    <img src="/images/basketball/leagues/207.webp"
4015                         alt="NBL1 North" class="lg-logo" loading="lazy"
4016                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
4017                    <span class="lg-name">NBL1 North</span>
4018                </div>
4019                <div class="lg-header-right">
4020                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
4021                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
4022                    </button>
4023                </div>
4024            </div>
4025
4026            <div class="lg-matches">
4027                    <div class="mx-row is-live " data-search="NBL1 North Australia Southern District Sunshine Coast Phoenix">
4028                        <div class="mx-left">
4029                            <button type="button" class="mx-fav-btn favorite-btn"
4030                                    data-match-id="284824"
4031                                    data-auth="false"
4032                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(284824, this);"
4033                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
4034                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
4035                            </button>
4036                            <div class="mx-status">
4037                                    <span class="mx-status-badge live">LIVE</span>
4038                            </div>
4039                        </div>
4040
4041                        <div class="mx-center">
4042                            <a href="/southern-district-vs-sunshine-coast-phoenix-id284824" class="mx-teams-link">
4043                                <div class="mx-team-row">
4044                                    <img src="/images/basketball/teams/3455.webp"
4045                                         alt="Southern District" class="mx-team-logo" loading="lazy"
4046                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4047                                    <span class="mx-team-name">Southern District</span>
4048                                    <span class="mx-score live">
404946                                    </span>
4050                                </div>
4051                                <div class="mx-team-row">
4052                                    <img src="/images/basketball/teams/5932.webp"
4053                                         alt="Sunshine Coast Phoenix" class="mx-team-logo" loading="lazy"
4054                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4055                                    <span class="mx-team-name">Sunshine Coast Phoenix</span>
4056                                    <span class="mx-score live">
405772                                    </span>
4058                                </div>
4059                            </a>
4060                        </div>
4061
4062                        <div class="mx-right action-column streamer-col">
4063                                <a href="/southern-district-vs-sunshine-coast-phoenix-id284824" class="mx-action-btn live-btn">
4064                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
4065                                </a>
4066                        </div>
4067                    </div>
4068            </div>
4069        </div>
4070        <div class="lg-section" data-search="NBL1 East Women Australia">
4071            <div class="lg-header">
4072                <div class="lg-header-left">
4073                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
4074                        <svg class="icon"><use href="#icon-star"/></svg>
4075                    </button>
4076                        <span class="lg-country-name">Australia:</span>
4077                    <img src="/images/basketball/leagues/216.webp"
4078                         alt="NBL1 East Women" class="lg-logo" loading="lazy"
4079                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
4080                    <span class="lg-name">NBL1 East Women</span>
4081                </div>
4082                <div class="lg-header-right">
4083                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
4084                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
4085                    </button>
4086                </div>
4087            </div>
4088
4089            <div class="lg-matches">
4090                    <div class="mx-row is-live " data-search="NBL1 
4090East Women Australia BA CoE W Albury W">
4091                        <div class="mx-left">
4092                            <button type="button" class="mx-fav-btn favorite-btn"
4093                                    data-match-id="304595"
4094                                    data-auth="false"
4095                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(304595, this);"
4096                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
4097                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
4098                            </button>
4099                            <div class="mx-status">
4100                                    <span class="mx-status-badge live">LIVE</span>
4101                            </div>
4102                        </div>
4103
4104                        <div class="mx-center">
4105                            <a href="/ba-coe-w-vs-albury-w-id304595" class="mx-teams-link">
4106                                <div class="mx-team-row">
4107                                    <img src="/images/basketball/teams/54.webp"
4108                                         alt="BA CoE W" class="mx-team-logo" loading="lazy"
4109                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4110                                    <span class="mx-team-name">BA CoE W</span>
4111                                    <span class="mx-score live">
41122                                    </span>
4113                                </div>
4114                                <div class="mx-team-row">
4115                                    <img src="/images/basketball/teams/68.webp"
4116                                         alt="Albury W" class="mx-team-logo" loading="lazy"
4117                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4118                                    <span class="mx-team-name">Albury W</span>
4119                                    <span class="mx-score live">
41202                                    </span>
4121                                </div>
4122                            </a>
4123                        </div>
4124
4125                        <div class="mx-right action-column streamer-col">
4126                                <a href="/ba-coe-w-vs-albury-w-id304595" class="mx-action-btn live-btn">
4127                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
4128                                </a>
4129                        </div>
4130                    </div>
4131            </div>
4132        </div>
4133        <div class="lg-section" data-search="NBL1 South Women Australia">
4134            <div class="lg-header">
4135                <div class="lg-header-left">
4136                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
4137                        <svg class="icon"><use href="#icon-star"/></svg>
4138                    </button>
4139                        <span class="lg-country-name">Australia:</span>
4140                    <img src="/images/basketball/leagues/210.webp"
4141                         alt="NBL1 South Women" class="lg-logo" loading="lazy"
4142                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
4143                    <span class="lg-name">NBL1 South Women</span>
4144                </div>
4145                <div class="lg-header-right">
4146                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
4147                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
4148                    </button>
4149                </div>
4150            </div>
4151
4152            <div class="lg-matches">
4153                    <div class="mx-row is-live " data-search="NBL1 South Women Australia Knox W Waverley W">
4154                        <div class="mx-left">
4155                            <button type="button" class="mx-fav-btn favorite-btn"
4156                                    data-match-id="311177"
4157                                    data-auth="false"
4158                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(311177, this);"
4159                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
4160                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
4161                            </button>
4162                            <div class="mx-status">
4163                                    <span class="mx-status-badge live">LIVE</span>
4164                            </div>
4165                        </div>
4166
4167                        <div class="mx-center">
4168                            <a href="/knox-w-vs-waverley-w-id311177" class="mx-teams-link">
4169                                <div class="mx-team-row">
4170                                    <img src="/images/basketball/teams/65.webp"
4171                                         alt="Knox W" class="mx-team-logo" loading="lazy"
4172                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4173                                    <span class="mx-team-name">Knox W</span>
4174                                    <span class="mx-score live">
41750                                    </span>
4176                                </div>
4177                                <div class="mx-team-row">
4178                                    <img src="/images/basketball/teams/61.webp"
4179                                         alt="Waverley W" class="mx-team-logo" loading="lazy"
4180                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4181                                    <span class="mx-team-name">Waverley W</span>
4182                                    <span class="mx-score live">
41830                                    </span>
4184                                </div>
4185                            </a>
4186                        </div>
4187
4188                        <div class="mx-right action-column streamer-col">
4189                                <a href="/knox-w-vs-waverley-w-id311177" class="mx-action-btn live-btn">
4190                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
4191                                </a>
4192                        </div>
4193                    </div>
4194            </div>
4195        </div>
4196        <div class="lg-section" data-search="NBL 1 W Australia">
4197            <div class="lg-header">
4198                <div class="lg-header-left">
4199                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
4200                        <svg class="icon"><use href="#icon-star"/></svg>
4201                    </button>
4202                        <span class="lg-country-name">Australia:</span>
4203                    <img src="https://media.api-sports.io/basketball/leagues/5.png"
4204                         alt="NBL 1 W" class="lg-logo" loading="lazy"
4205                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
4206                    <span class="lg-name">NBL 1 W</span>
4207                </div>
4208                <div class="lg-header-right">
4209                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
4210                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
4211                    </button>
4212                </div>
4213            </div>
4214
4215            <div class="lg-matches">
4216                    <div class="mx-row is-live " data-search="NBL 1 W Australia Knox W Mackay Meteorettes W">
4217                        <div class="mx-left">
4218                            <button type="button" class="mx-fav-btn favorite-btn"
4219                                    data-match-id="318783"
4220                                    data-auth="false"
4221                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(318783, this);"
4222                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
4223                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
4224                            </button>
4225                            <div class="mx-status">
4226                                    <span class="mx-status-badge live">LIVE</span>
4227                            </div>
4228                        </div>
4229
4230                        <div class="mx-center">
4231                            <a href="/knox-w-vs-mackay-meteorettes-w-id318783" class="mx-teams-link">
4232                                <div class="mx-team-row">
4233                                    <img src="/images/basketball/teams/65.webp"
4234                                         alt="Knox W" class="mx-team-logo" loading="lazy"
4235                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4236                                    <span class="mx-team-name">Knox W</span>
4237                                    <span class="mx-score live">
423863                                    </span>
4239                                </div>
4240                                <div class="mx-team-row">
4241                                    <img src="/images/basketball/teams/3465.webp"
4242                                         alt="Mackay Meteorettes W" class="mx-team-logo" loading="lazy"
4243                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4244                                    <span class="mx-team-name">Mackay Meteorettes W</span>
4245                                    <span class="mx-score live">
424654                                    </span>
4247                                </div>
4248                            </a>
4249                        </div>
4250
4251                        <div class="mx-right action-column streamer-col">
4252                                <a href="/knox-w-vs-mackay-meteorettes-w-id318783" class="mx-action-btn live-btn">
4253                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
4254                                </a>
4255                        </div>
4256                    </div>
4257            </div>
4258        </div>
4259        <div class="lg-section" data-search="Asia Cup Asia">
4260            <div class="lg-header">
4261                <div class="lg-header-left">
4262                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
4263                        <svg class="icon"><use href="#icon-star"/></svg>
4264                    </button>
4265                        <span class="lg-country-name">Asia:</span>
4266                    <img src="https://media.api-sports.io/basketball/leagues/301.png"
4267                         alt="Asia Cup" class="lg-logo" loading="lazy"
4268                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
4269                    <span class="lg-name">Asia Cup</span>
4270                </div>
4271                <div class="lg-header-right">
4272                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
4273                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
4274                    </button>
4275                </div>
4276            </div>
4277
4278            <div class="lg-matches">
4279                    <div class="mx-row is-live " data-search="Asia Cup Asia Vietnam Thailand">
4280                        <div class="mx-left">
4281                            <button type="button" class="mx-fav-btn favorite-btn"
4282                                    data-match-id="313557"
4283                                    data-auth="false"
4284                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(313557, this);"
4285                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
4286                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
4287                            </button>
4288                            <div class="mx-status">
4289                                    <span class="mx-status-badge live">LIVE</span>
4290                            </div>
4291                        </div>
4292
4293                        <div class="mx-center">
4294                            <a href="/vietnam-vs-thailand-id313557" class="mx-teams-link">
4295                                <div class="mx-team-row">
4296                                    <img src="https://media.api-sports.io/basketball/teams/3998.png"
4297                                         alt="Vietnam" class="mx-team-logo" loading="lazy"
4298                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4299                                    <span class="mx-team-name">Vietnam</span>
4300                                    <span class="mx-score live">
43017                                    </span>
4302                                </div>
4303                                <div class="mx-team-row">
4304                                    <img src="https://media.api-sports.io/basketball/teams/4345.png"
4305                                         alt="Thailand" class="mx-team-logo" loading="lazy"
4306                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4307                                    <span class="mx-team-name">Thailand</span>
4308                                    <span class="mx-score live">
43097                                    </span>
4310                                </div>
4311                            </a>
4312                        </div>
4313
4314                        <div class="mx-right action-column streamer-col">
4315                                <a href="/vietnam-vs-thailand-id313557" class="mx-action-btn live-btn">
4316                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
4317                                </a>
4318                        </div>
4319                    </div>
4320            </div>
4321        </div>
4322        <div class="lg-section" data-search="Asian Games Asia">
4323            <div class="lg-header">
4324                <div class="lg-header-left">
4325                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
4326                        <svg class="icon"><use href="#icon-star"/></svg>
4327                    </button>
4328                        <span class="lg-country-name">Asia:</span>
4329                    <img src="https://media.api-sports.io/basketball/leagues/303.png"
4330                         alt="Asian Games" class="lg-logo" loading="lazy"
4331                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
4332                    <span class="lg-name">Asian Games</span>
4333                </div>
4334                <div class="lg-header-right">
4335                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
4336                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
4337                    </button>
4338                </div>
4339            </div>
4340
4341            <div class="lg-matches">
4342                    <div class="mx-row is-live " data-search="Asian Games Asia Jordan Chinese Taipei">
4343                        <div class="mx-left">
4344                            <button type="button" class="mx-fav-btn favorite-btn"
4345                                    data-match-id="321720"
4346                                    data-auth="false"
4347                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(321720, this);"
4348                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
4349                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
4350                            </button>
4351                            <div class="mx-status">
4352                                    <span class="mx-status-badge live">LIVE</span>
4353                            </div>
4354                        </div>
4355
4356                        <div class="mx-center">
4357                            <a href="/jordan-vs-chinese-taipei-id321720" class="mx-teams-link">
4358                                <div class="mx-team-row">
4359                                    <img src="/images/basketball/teams/3158.webp"
4360                                         alt="Jordan" class="mx-team-logo" loading="lazy"
4361                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4362                                    <span class="mx-team-name">Jordan</span>
4363                                    <span class="mx-score live">
436473                                    </span>
4365                                </div>
4366                                <div class="mx-team-row">
4367                                    <img src="/images/basketball/teams/4073.webp"
4368                                         alt="Chinese Taipei" class="mx-team-logo" loading="lazy"
4369                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4370                                    <span class="mx-team-name">Chinese Taipei</span>
4371                                    <span class="mx-score live">
437283                                    </span>
4373                                </div>
4374                            </a>
4375                        </div>
4376
4377                        <div class="mx-right action-column streamer-col">
4378                                <a href="/jordan-vs-chinese-taipei-id321720" class="mx-action-btn live-btn">
4379                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
4380                                </a>
4381                        </div>
4382                    </div>
4383            </div>
4384        </div>
4385        <div class="lg-section" data-search="NBL Australia">
4386            <div class="lg-header">
4387                <div class="lg-header-left">
4388                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
4389                        <svg class="icon"><use href="#icon-star"/></svg>
4390                    </button>
4391                        <span class="lg-country-name">Australia:</span>
4392                    <img src="/images/basketball/leagues/1.webp"
4393                         alt="NBL" class="lg-logo" loading="lazy"
4394                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
4395                    <span class="lg-name">NBL</span>
4396                </div>
4397                <div class="lg-header-right">
4398                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
4399                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
4400                    </button>
4401                </div>
4402            </div>
4403
4404            <div class="lg-matches">
4405                    <div class="mx-row is-live " data-search="NBL Australia New Zealand Breakers Illawarra Hawks">
4406                        <div class="mx-left">
4407                            <button type="button" class="mx-fav-btn favorite-btn"
4408                                    data-match-id="326545"
4409                                    data-auth="false"
4410                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(326545, this);"
4411                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
4412                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
4413                            </button>
4414                            <div class="mx-status">
4415                                    <span class="mx-status-badge live">LIVE</span>
4416                            </div>
4417                        </div>
4418
4419                        <div class="mx-center">
4420                            <a href="/new-zealand-breakers-vs-illawarra-hawks-id326545" class="mx-teams-link">
4421                                <div class="mx-team-row">
4422                                    <img src="/images/basketball/teams/9.webp"
4423                                         alt="New Zealand Breakers" class="mx-team-logo" loading="lazy"
4424                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4425                                    <span class="mx-team-name">New Zealand Breakers</span>
4426                                    <span class="mx-score live">
442754                                    </span>
4428                                </div>
4429                                <div class="mx-team-row">
4430                                    <img src="/images/basketball/teams/6.webp"
4431                                         alt="Illawarra Hawks" class="mx-team-logo" loading="lazy"
4432                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4433                                    <span class="mx-team-name">Illawarra Hawks</span>
4434                                    <span class="mx-score live">
443547                                    </span>
4436                                </div>
4437                            </a>
4438                        </div>
4439
4440                        <div class="mx-right action-column streamer-col">
4441                                <a href="/new-zealand-breakers-vs-illawarra-hawks-id326545" class="mx-action-btn live-btn">
4442                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
4443                                </a>
4444                        </div>
4445                    </div>
4446            </div>
4447        </div>
4448                <nav aria-label="&#x110;i&#x1EC1;u h&#x1B0;&#x1EDB;ng trang" class="mt-4 px-3 match-list-paging">
4449                    <ul class="pagination justify-content-center flex-wrap">
4450                        <li class="page-item disabled">
4451                            <a class="page-link" href="/truc-tiep"><svg class="icon"><use href="#icon-chevrons-left"/></svg></a>
4452                        </li>
4453                        <li class="page-item disabled">
4454                            <a class="page-link" href="/truc-tiep"><svg class="icon"><use href="#icon-chevron-left"/></svg></a>
4455                        </li>
4456                            <li class="page-item active">
4457                                <a class="page-link" href="/truc-tiep">1</a>
4458                            </li>
4459                            <li class="page-item ">
4460                                <a class="page-link" href="/truc-tiep?page=2">2</a>
4461                            </li>
4462                        <li class="page-item ">
4463                            <a class="page-link" href="/truc-tiep?page=2"><svg class="icon"><use href="#icon-chevron-right"/></svg></a>
4464                        </li>
4465                        <li class="page-item ">
4466                            <a class="page-link" href="/truc-tiep?page=2"><svg class="icon"><use href="#icon-chevrons-right"/></svg></a>
4467                        </li>
4468                    </ul>
4469                </nav>
4470                <div class="text-center text-muted mt-2 pb-3 match-list-paging">
4471                    <small>Trang 1 / 2 · T&#x1ED5;ng 75 tr&#x1EAD;n &#x111;&#x1EA5;u</small>
4472                </div>
4473    
4474    <!-- 页面SEO内容 -->
4475    
4476</div>
4477
4478
4479
4480    </main>
4481    
4482    <!-- SPA 加载进度条 -->
4483    <div class="spa-loading-bar" id="spaLoadingBar"></div>
4484
4485    <!-- 底部 -->
4486    <footer class="footer">
4487        <div class="container">
4488            <div class="row">
4489                <div class="col-lg-4 mb-4 mb-lg-0">
4490                    <div class="footer-brand mb-3">
4491                        <img src="/images/logo-full-footer.webp" alt="XOIGAC" class="footer-logo-full" width="593" height="160" onerror="if(!this.dataset.fallback){this.src='/images/logo-full-footer.png';this.dataset.fallback='true';}" loading="lazy">
4492                    </div>
4493                    <p class="text-muted small">N&#x1EC1;n t&#x1EA3;ng xem b&#xF3;ng &#x111;&#xE1; tr&#x1EF1;c ti&#x1EBF;p chuy&#xEA;n nghi&#x1EC7;p, cung c&#x1EA5;p t&#x1EF7; s&#x1ED1;, ph&#xE1;t s&#xF3;ng v&#xE0; tin t&#x1EE9;c m&#x1EDB;i nh&#x1EA5;t t&#x1EEB; c&#xE1;c gi&#x1EA3;i &#x111;&#x1EA5;u h&#xE0;ng &#x111;&#x1EA7;u th&#x1EBF; gi&#x1EDB;i.</p>
4494                    <div class="social-links">
4495                        <a href="https://weibo.com" target="_blank" rel="nofollow noopener" aria-label="Weibo"><i class="fab fa-weibo" aria-hidden="true"></i></a>
4496                        <a href="https://weixin.qq.com" target="_blank" rel="nofollow noopener" aria-label="WeChat"><i class="fab fa-weixin" aria-hidden="true"></i></a>
4497                        <a href="https://twitter.com" target="_blank" rel="nofollow noopener" aria-label="Twitter"><i class="fab fa-twitter" aria-hidden="true"></i></a>
4498                        <a href="https://youtube.com" target="_blank" rel="nofollow noopener" aria-label="YouTube"><i class="fab fa-youtube" aria-hidden="true"></i></a>
4499                    </div>
4500                </div>
4501                <div class="col-6 col-lg-2">
4502                    <h2 class="footer-title">Li&#xEA;n k&#x1EBF;t nhanh</h2>
4503                    <ul class="footer-links">
4504                        <li><a href="/truc-tiep">Tr&#x1EF1;c ti&#x1EBF;p</a></li>
4505                        <li><a href="/hom-nay">H&#xF4;m nay</a></li>
4506                        <li><a href="/lich-thi-dau">L&#x1ECB;ch thi &#x111;&#x1EA5;u</a></li>
4507                        <li><a href="/tin-tuc-bong-da">Tin T&#x1EE9;c</a></li>
4508                        <li><a href="/nhan-dinh-bong-da">Nh&#x1EAD;n &#x110;&#x1ECB;nh</a></li>
4509                        <li><a href="/giai-dau">Trung t&#xE2;m gi&#x1EA3;i &#x111;&#x1EA5;u</a></li>
4510                        <li><a href="/doi-bong">Trung t&#xE2;m c&#xE2;u l&#x1EA1;c b&#x1ED9;</a></li>
4511                            <li><a href="/leaderboard">BXH Streamer</a></li>
4512                    </ul>
4513                </div>
4514                <div class="col-lg-4">
4515                    <h2 class="footer-title">T&#x1EA3;i &#x1EE9;ng d&#x1EE5;ng</h2>
4516                    <p class="text-muted small mb-3">Xem tr&#x1EF1;c ti&#x1EBF;p m&#x1ECD;i l&#xFA;c m&#x1ECD;i n&#x1A1;i. Kh&#xF4;ng b&#x1ECF; l&#x1EE1; b&#x1EA5;t k&#x1EF3; kho&#x1EA3;nh kh&#x1EAF;c n&#xE0;o.</p>
4517                    <div class="app-buttons">
4518                        <a href="https://www.apple.com/app-store/" target="_blank" rel="nofollow noopener" class="app-btn" aria-label="App Store">
4519                            <i class="fab fa-apple" aria-hidden="true"></i>
4520                            <span>App Store</span>
4521                        </a>
4522                        <a href="https://play.google.com/store" target="_blank" rel="nofollow noopener" class="app-btn" aria-label="Google Play">
4523                            <i class="fab fa-android" aria-hidden="true"></i>
4524                            <span>Android</span>
4525                        </a>
4526                    </div>
4527                </div>
4528            </div>
4529            <hr class="border-secondary my-4">
4530            <div class="row align-items-center">
4531                <div class="col-md-6 text-center text-md-start mb-3 mb-md-0">
4532                    <p class="small text-muted mb-2">&copy; 2026 XOIGAC.TV. All rights reserved.</p>
4533                    <!-- DMCA Protection Badge -->
4534                    <div class="dmca-badge">
4535                        <a href="//www.dmca.com/Protection/Status.aspx?ID=d272f162-1a32-4933-9646-fdcb8a1c4dc7&refurl=https%3A%2F%2Fxoigac.top%2F" title="DMCA.com Protection Status" class="dmca-badge-link">
4536                            <img src="/images/dmca_protected_sml_120n.png" alt="DMCA.com Protection Status" width="121" height="24" / loading="lazy">
4537                        </a>
4538                        <!-- Using self-hosted DMCA image to eliminate third-party cookies -->
4539                    </div>
4540                </div>
4541                <div class="col-md-6 text-center text-md-end">
4542                    <ul class="footer-bottom-links">
4543                        <li>
4544                        <a href="/sitemap.xml"
4545                            target="_blank">
4546                            S&#x1A1; &#x111;&#x1ED3; trang
4547                        </a>
4548                        </li>
4549                        <li><a href="/chinh-sach-bao-mat">Ch&#xED;nh s&#xE1;ch b&#x1EA3;o m&#x1EAD;t</a></li>
4550                        <li><a href="/dieu-khoan-su-dung">&#x110;i&#x1EC1;u kho&#x1EA3;n d&#x1ECB;ch v&#x1EE5;</a></li>
4551                        <li><a href="/lien-he">Li&#xEA;n h&#x1EC7;</a></li>
4552                        <li><a href="/gioi-thieu">V&#x1EC1; ch&#xFA;ng t&#xF4;i</a></li>
4553                        <li><a href="/dmca" rel="nofollow">DMCA</a></li>
4554                    </ul>
4555                </div>
4556            </div>
4557        </div>
4558    </footer>
4559
4560    <!-- 聊天室弹窗遮罩 -->
4561    <div class="chat-modal-overlay d-none" id="chatModalOverlay" style="display: none !important;"></div>
4562    
4563    <!-- 聊天室弹窗 -->
4564    <div class="chat-modal d-none" id="chatModal">
4565        <div class="chat-modal-header">
4566            <span class="chat-modal-title"></span>
4567            <div class="chat-modal-actions">
4568                <button class="chat-modal-btn" id="chatModalFullscreen" data-i18n-title="common.fullscreen" title="To&#xE0;n m&#xE0;n h&#xEC;nh">
4569                    <i class="fas fa-expand"></i>
4570                </button>
4571                <button class="chat-modal-btn chat-modal-close-btn" id="chatModalClose" data-i18n-title="common.collapse" title="Thu g&#x1ECD;n">
4572                    <i class="fas fa-chevron-down"></i>
4573                </button>
4574            </div>
4575        </div>
4576        <div class="chat-modal-body" id="chatModalBody">
4577            <!-- 移动端视频播放器区域 -->
4578            <div class="mobile-video-section d-none" id="mobileVideoSection">
4579                <div class="mobile-video-wrapper">
4580                    <video id="mobileVideo" playsinline muted controls crossorigin>
4581                        <!-- 视频源会通过JavaScript动态设置 -->
4582                    </video>
4583                    <!-- 关闭按钮直接放在视频右上角 -->
4584                    <button class="mobile-video-close" id="mobileVideoClose" data-i18n-title="common.closeVideo" title="&#x110;&#xF3;ng video">
4585                        <i class="fas fa-times"></i>
4586                    </button>
4587                </div>
4588            </div>
4589            <!-- 聊天室内容会被复制到这里 -->
4590        </div>
4591    </div>
4592    
4593    <!-- 全局浮动按钮组 -->
4594    <div class="global-fab-container" id="globalFabContainer">
4595        <!-- 推送通知订阅 -->
4596        <button class="global-fab-btn push-fab" id="push-subscribe-btn" data-i18n-title="push.enableNotifications" title="开启推送通知" style="display: none;">
4597            <i class="fas fa-bell"></i>
4598        </button>
4599        <!-- 强制刷新 -->
4600        <button class="global-fab-btn refresh-fab" id="fabRefresh" data-i18n-title="common.refresh" title="L&#xE0;m m&#x1EDB;i">
4601            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 4 23 10 17 10"></polyline><polyline points="1 20 1 14 7 14"></polyline><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"></path></svg>
4602        </button>
4603        <!-- 回到顶部 -->
4604        <button class="global-fab-btn back-to-top-fab" id="fabBackToTop" data-i18n-title="common.backToTop" title="V&#x1EC1; &#x111;&#x1EA7;u trang">
4605            <i class="fas fa-chevron-up"></i>
4606        </button>
4607        <!-- 打开聊天室:只在有聊天室时显示(已暂时禁用) -->
4608    </div>
4609
4610    <!-- 优化的JavaScript加载 - 使用defer和async -->
4611    <!-- 关键的第三方库 - 使用defer -->
4612    <!-- ★ 添加 crossorigin 属性以支持第三方Cookie -->
4613    
4613<script src="/lib/bootstrap/5.3.2/bootstrap.bundle.min.js?v=gvZPYrsDwbwYJLD5yeBfcNujPhRoGOY831wwbIzz3t0" defer onerror="this.onerror=null;this.src='https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js';"></script>
4613
4614    
4614<script src="https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/8.0.0/signalr.min.js" defer crossorigin></script>
4614
4615    
4615<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/hls.min.js" defer crossorigin></script>
4615
4616    
4617    <!-- 应用程序JavaScript - IVS 播放器相关脚本必须按顺序同步加载 -->
4618        <!-- 生产环境:使用打包文件 -->
4619        <!-- 验证码管理器 - 必须在 app.bundle.js 之前加载(app.bundle 包含 auth-modal.js) -->
4620        
4620<script src="/dist/js/captcha-manager.js?v=6Cj5aPMUUHrOwMbOlykc3RZYjobhKsvkLc5aNPDmZi0"></script>
4620
4621        <!-- 核心功能包(3个JS合并)- 同步加载 -->
4622        
4622<script src="/dist/js/core.bundle.js?v=icHE5APGMG30g9fEySb-7hZ5vZ3iHbgJVhyUPH3v4Q8"></script>
4622
4623        <!-- 播放器功能包(8个JS合并)- 延迟加载 -->
4624        
4624<script src="/dist/js/player.bundle.js?v=8u5CWjOuanIR8_RT1hwbFVrUcYrqqHSdSl_i6iFuPEQ" defer></script>
4624
4625        <!-- 应用功能包(含 streamer-follow.js / auth-modal.js)- 延迟加载 -->
4626        
4626<script src="/dist/js/app.bundle.js?v=mOWIwnGUFcWjsPNJLvW6NpHaA0wGjgZ4WYEv8xFjIMQ" defer></script>
4626
4627        
4627<script src="/dist/js/streamer-follow.js?v=p3zJpid1v8N4DkO4wwc04njd4zAS2j99EHmdb_HUbMY" defer></script>
4627
4628    
4628<script src="/js/custom-select.js?v=unrE77TQiy-qc-Fun5fVdZBrEj9yh0GaRL5AHtdIOO8" defer></script>
4628
4629    
4630    <!-- 内联配置脚本 - 必须在其他脚本之前执行 -->
4631    
4631<script>
4632    // 禁用 i18n.js 的自动语言切换 UI 创建(使用服务端渲染的按钮)
4633    window.__disableI18nUI = true;
4634    window.streamerFollowI18n = {
4635        follow: 'Theo dõi',
4636        unfollow: 'Bỏ theo dõi',
4637        followed: 'Đã theo dõi',
4638        unfollowed: 'Đã bỏ theo dõi'
4639    };
4640    window.showFollowerCount = true;
4641    </script>
4641
4642    
4643    <!-- 全局浮动按钮逻辑 -->
4644    
4644<script>
4645    (function() {
4646        const fabBackToTop = document.getElementById('fabBackToTop');
4647        const fabRefresh = document.getElementById('fabRefresh');
4648        const fabOpenChat = document.getElementById('fabOpenChat');
4649        const chatRoom = document.querySelector('.chat-room-container');
4650        const fabChatAvatar = document.getElementById('fabChatAvatar');
4651        const chatModal = document.getElementById('chatModal');
4652        const chatModalOverlay = document.getElementById('chatModalOverlay');
4653        const chatModalBody = document.getElementById('chatModalBody');
4654        const chatModalClose = document.getElementById('chatModalClose');
4655        const chatModalFullscreen = document.getElementById('chatModalFullscreen');
4656        const mobileVideoSection = document.getElementById('mobileVideoSection');
4657        const mobileVideo = document.getElementById('mobileVideo');
4658        const mobileVideoClose = document.getElementById('mobileVideoClose');
4659
4660        let isFullscreen = false;
4661        let originalChatParent = null;
4662        let originalChatNextSibling = null;
4663        let isVideoPlaying = false;
4664        let wasVideoCollapsedBeforeModal = true; // 记录打开弹窗前视频是否收起
4665
4666        // 如果有聊天室且有联赛图标,则把联赛图标同步到右下角 FAB
4667        if (chatRoom && fabChatAvatar) {
4668            const leagueImg = chatRoom.querySelector('.chat-icon-wrapper img');
4669            if (leagueImg && leagueImg.src) {
4670                fabChatAvatar.src = leagueImg.src;
4671            }
4672        }
4673
4674        // 回到顶部和刷新按钮:PC 滚动>300px 常显;移动端滑动后显示,5 秒无垂直滚动自动隐藏
4675        let scrollThrottle = null;
4676        const FAB_IDLE_HIDE_MS = 5000;
4677        const FAB_SCROLL_DELTA = 8;
4678        let fabLastScrollTop = 0;
4679        let fabLastScrollActivityAt = 0;
4680        const globalFabContainer = document.getElementById('globalFabContainer');
4681
4682        function isMobileFabViewport() {
4683            return window.matchMedia('(max-width: 768px)').matches;
4684        }
4685
4686        function getScrollTop() {
4687            return window.scrollY || document.documentElement.scrollTop || document.body.scrollTop || 0;
4688        }
4689
4690        function isFabScrollEligible() {
4691            return getScrollTop() > 300;
4692        }
4693
4694        function hideFabScrollButtons() {
4695            if (fabBackToTop) fabBackToTop.classList.remove('visible');
4696            if (fabRefresh) fabRefresh.classList.remove('visible');
4697            if (globalFabContainer) globalFabContainer.classList.add('fab-auto-hidden');
4698            window.updateFabContainerVisibility();
4699        }
4700
4701        function showFabScrollButtons() {
4702            if (fabBackToTop) fabBackToTop.classList.add('visible');
4703            if (fabRefresh) fabRefresh.classList.add('visible');
4704            if (globalFabContainer) globalFabContainer.classList.remove('fab-auto-hidden');
4705            window.updateFabContainerVisibility();
4706        }
4707
4708        function markFabScrollActivity() {
4709            fabLastScrollActivityAt = Date.now();
4710        }
4711
4712        function updateDesktopFabVisibility() {
4713            if (isFabScrollEligible()) {
4714                showFabScrollButtons();
4715            } else {
4716                hideFabScrollButtons();
4717            }
4718        }
4719
4720        function handleFabScroll() {
4721            const scrollTop = getScrollTop();
4722            const delta = Math.abs(scrollTop - fabLastScrollTop);
4723
4724            if (isMobileFabViewport()) {
4725                if (scrollTop <= 300) {
4726                    fabLastScrollTop = scrollTop;
4727                    hideFabScrollButtons();
4728                    return;
4729                }
4730                if (delta >= FAB_SCROLL_DELTA) {
4731                    fabLastScrollTop = scrollTop;
4732                    markFabScrollActivity();
4733                    showFabScrollButtons();
4734                }
4735                return;
4736            }
4737
4738            fabLastScrollTop = scrollTop;
4739            updateDesktopFabVisibility();
4740        }
4741
4742        // Function to update FAB container visibility
4743        window.updateFabContainerVisibility = function() {
4744            const container = document.getElementById('globalFabContainer');
4745            const fabPushBtn = container ? container.querySelector('#push-subscribe-btn') : null;
4746            const hasVisibleButtons = (fabBackToTop && fabBackToTop.classList.contains('visible')) ||
4747                                       (fabRefresh && fabRefresh.classList.contains('visible')) ||
4748                                       (fabPushBtn && fabPushBtn.style.display !== 'none' && fabPushBtn.classList.contains('visible'));
4749            
4750            if (container) {
4751                if (hasVisibleButtons && !container.classList.contains('fab-auto-hidden')) {
4752                    container.style.display = 'flex';
4753                } else {
4754                    container.style.display = 'none';
4755                }
4756            }
4757        };
4758        
4759        window.addEventListener('scroll', function() {
4760            if (scrollThrottle) return;
4761            scrollThrottle = setTimeout(function() {
4762                handleFabScroll();
4763                scrollThrottle = null;
4764            }, 80);
4765        }, { passive: true });
4766
4767        window.addEventListener('resize', function() {
4768            fabLastScrollTop = getScrollTop();
4769            if (isMobileFabViewport()) {
4770                if (!isFabScrollEligible()) {
4771                    hideFabScrollButtons();
4772                }
4773            } else {
4774                if (globalFabContainer) globalFabContainer.classList.remove('fab-auto-hidden');
4775                updateDesktopFabVisibility();
4776            }
4777        }, { passive: true });
4778
4779        // 移动端:定时强制检查,避免 scroll/touch 漏判导致不消失
4780        setInterval(function() {
4781            if (!isMobileFabViewport()) return;
4782            if (!isFabScrollEligible()) {
4783                if (fabBackToTop && fabBackToTop.classList.contains('visible')) {
4784                    hideFabScrollButtons();
4785                }
4786                return;
4787            }
4788            const isVisible = fabBackToTop && fabBackToTop.classList.contains('visible');
4789            if (!isVisible) return;
4790            const idleMs = Date.now() - fabLastScrollActivityAt;
4791            if (idleMs >= FAB_IDLE_HIDE_MS) {
4792                hideFabScrollButtons();
4793            }
4794        }, 400);
4795        
4796        // Initial check
4797        fabLastScrollTop = getScrollTop();
4798        if (isMobileFabViewport()) {
4799            if (isFabScrollEligible()) {
4800                showFabScrollButtons();
4801                markFabScrollActivity();
4802            } else {
4803                hideFabScrollButtons();
4804            }
4805        } else {
4806            updateDesktopFabVisibility();
4807        }
4808
4809        // 回到顶部点击事件(兼容移动端,避免需要点两次的问题)
4810        function scrollToTop(e) {
4811            e.preventDefault();
4812            e.stopPropagation();
4813            window.scrollTo({ top: 0, behavior: 'smooth' });
4814        }
4815
4816        if (fabBackToTop) {
4817            fabBackToTop.addEventListener('click', scrollToTop);
4818            fabBackToTop.addEventListener('touchend', function(e) {
4819                e.preventDefault();
4820                scrollToTop(e);
4821            });
4822        }
4823        
4824        // 强制刷新点击事件
4825        function forceRefresh(e) {
4826            e.preventDefault();
4827            e.stopPropagation();
4828            // 强制刷新:忽略缓存
4829            location.reload(true);
4830        }
4831        
4832        if (fabRefresh) {
4833            fabRefresh.addEventListener('click', forceRefresh);
4834            fabRefresh.addEventListener('touchend', function(e) {
4835                e.preventDefault();
4836                forceRefresh(e);
4837            });
4838        }
4839
4840        // 获取原始视频播放器元素
4841        function getOriginalVideo() {
4842            return document.getElementById('livePlayer');
4843        }
4844
4845        // 设置移动端视频播放器
4846        function setupMobileVideo() {
4847            const isMobile = window.innerWidth <= 767;
4848            if (!isMobile) return;
4849
4850            const originalVideo = getOriginalVideo();
4851            if (!originalVideo || !mobileVideo) return;
4852
4853            // 复制视频源
4854            if (originalVideo.src) {
4855                mobileVideo.src = originalVideo.src;
4856            } else {
4857                const sources = originalVideo.querySelectorAll('source');
4858                mobileVideo.innerHTML = '';
4859                sources.forEach(source => {
4860                    const newSource = source.cloneNode(true);
4861                    mobileVideo.appendChild(newSource);
4862                });
4863            }
4864
4865            // 同步播放状态
4866            if (!originalVideo.paused) {
4867                mobileVideo.currentTime = originalVideo.currentTime;
4868                setTimeout(() => {
4869                    mobileVideo.play().catch(console.error);
4870                }, 100);
4871            }
4872
4873            // 显示移动端视频区域
4874            mobileVideoSection.classList.remove('d-none');
4875            isVideoPlaying = true;
4876
4877            // 禁用移动端视频的全屏功能
4878            mobileVideo.setAttribute('disablePictureInPicture', 'true');
4879            mobileVideo.setAttribute('controlsList', 'nofullscreen');
4880
4881            // 监听全屏事件并阻止
4882            mobileVideo.addEventListener('webkitfullscreenchange', function() {
4883                if (document.webkitFullscreenElement === mobileVideo) {
4884                    document.webkitExitFullscreen();
4885                }
4886            });
4887
4888            mobileVideo.addEventListener('fullscreenchange', function() {
4889                if (document.fullscreenElement === mobileVideo) {
4890                    document.exitFullscreen();
4891                }
4892            });
4893
4894            // 暂停原视频
4895            originalVideo.pause();
4896        }
4897
4898        // 关闭移动端视频播放器
4899        function closeMobileVideo() {
4900            if (!mobileVideo || !mobileVideoSection) return;
4901
4902            // 隐藏视频区域
4903            mobileVideoSection.classList.add('d-none');
4904            mobileVideo.pause();
4905            isVideoPlaying = false;
4906        }
4907
4908        // 显示聊天室不可用提示
4909        function showChatUnavailableHint(message) {
4910            // 创建提示元素
4911            const hint = document.createElement('div');
4912            hint.className = 'chat-unavailable-hint';
4913            hint.innerHTML = `
4914                <div class="chat-hint-content">
4915                    <i class="fas fa-comments-slash"></i>
4916                    <span>${message}</span>
4917                </div>
4918            `;
4919            hint.style.cssText = `
4920                position: fixed; bottom: 100px; right: 24px; z-index: 1000;
4921                background: linear-gradient(135deg, #1e293b 0%, #334155 100%);
4922                color: white; padding: 16px 20px; border-radius: 12px;
4923                box-shadow: 0 8px 32px rgba(0,0,0,0.3);
4924                border: 1px solid rgba(59, 130, 246, 0.3);
4925                font-size: 14px; max-width: 280px;
4926                animation: slideInUp 0.3s ease;
4927                backdrop-filter: blur(10px);
4928            `;
4929            
4930            // 添加CSS动画
4931            if (!document.querySelector('#chatHintStyles')) {
4932                const style = document.createElement('style');
4933                style.id = 'chatHintStyles';
4934                style.textContent = `
4935                    @keyframes slideInUp {
4936                        from { opacity: 0; transform: translateY(20px); }
4937                        to { opacity: 1; transform: translateY(0); }
4938                    }
4939                    .chat-hint-content {
4940                        display: flex; align-items: center; gap: 12px;
4941                    }
4942                    .chat-hint-content i {
4943                        color: #fbbf24; font-size: 18px;
4944                    }
4945                `;
4946                document.head.appendChild(style);
4947            }
4948            
4949            document.body.appendChild(hint);
4950            
4951            // 3秒后自动消失
4952            setTimeout(() => {
4953                hint.style.animation = 'slideOutDown 0.3s ease forwards';
4954                setTimeout(() => hint.remove(), 300);
4955            }, 3000);
4956        }
4957
4958        // 打开聊天室弹窗
4959        function openChatModal(e) {
4960            if (e) {
4961                e.preventDefault();
4962            }
4963            if (!chatRoom) {
4964                alert(window.L?.T ? window.L.T('common.noChatRoom') : '当前页面没有聊天室');
4965                return;
4966            }
4967
4968            const isMobile = window.innerWidth <= 767;
4969
4970            // 记录原始位置
4971            originalChatParent = chatRoom.parentElement;
4972            originalChatNextSibling = chatRoom.nextElementSibling;
4973
4974            // 移动端:始终显示视频播放器+聊天室(不管视频是否正在播放)
4975            if (isMobile) {
4976                const originalVideo = getOriginalVideo();
4977                const livePlayerSection = document.getElementById('livePlayerSection');
4978                if (originalVideo && livePlayerSection) {
4979                    // 记录打开弹窗前视频是否收起
4980                    wasVideoCollapsedBeforeModal = livePlayerSection.classList.contains('collapsed');
4981                    
4982                    // 如果视频还没展开,先展开它
4983                    if (wasVideoCollapsedBeforeModal) {
4984                        livePlayerSection.classList.remove('collapsed');
4985                        // 更新观看直播按钮文字
4986                        const watchBtn = document.querySelector('.btn-live-watch');
4987                        if (watchBtn) {
4988                            watchBtn.innerHTML = '<i class="fas fa-times"></i>收起直播';
4989                        }
4990                    }
4991                    // 准备移动端视频区域
4992                    setupMobileVideo();
4993
4994                    // 从快捷聊天室打开时,自动开始播放移动端视频
4995                    if (mobileVideo) {
4996                        setTimeout(function () {
4997                            mobileVideo.play().catch(function (err) {
4998                                console.warn('自动播放移动端视频失败:', err);
4999                            });
5000                        }, 150);
5001                    }
5002                }
5003            }
5004
5005            // 移动聊天室到弹窗
5006            chatModalBody.appendChild(chatRoom);
5007            chatRoom.classList.add('in-modal');
5008
5009            // 打开弹窗时,默认让消息区域显示在底部,使用平滑滚动更自然
5010            const chatMessages = chatRoom.querySelector('#chatMessages');
5011            if (chatMessages) {
5012                requestAnimationFrame(() => {
5013                    if (typeof chatMessages.scrollTo === 'function') {
5014                        chatMessages.scrollTo({
5015                            top: chatMessages.scrollHeight,
5016                            behavior: 'smooth'
5017                        });
5018                    } else {
5019                        chatMessages.scrollTop = chatMessages.scrollHeight;
5020                    }
5021                });
5022            }
5023
5024            // 显示弹窗
5025            chatModal.classList.remove('d-none');
5026            chatModalOverlay.classList.remove('d-none');
5027            document.body.style.overflow = 'hidden';
5028
5029            // 聚焦输入框
5030            setTimeout(function() {
5031                const input = chatRoom.querySelector('#chatInput');
5032                if (input && !input.readOnly) input.focus();
5033            }, 300);
5034        }
5035
5036        // 关闭聊天室弹窗
5037        function closeChatModal(e) {
5038            if (e) {
5039                e.preventDefault();
5040            }
5041            if (!chatRoom) return;
5042
5043            const isMobile = window.innerWidth <= 767;
5044
5045            // 关闭移动端视频播放器(无论当前是否在播放,都统一收起视频区域)
5046            closeMobileVideo();
5047            
5048            // 移动端:恢复视频播放器原来的状态
5049            if (isMobile && wasVideoCollapsedBeforeModal) {
5050                const livePlayerSection = document.getElementById('livePlayerSection');
5051                const watchBtn = document.querySelector('.btn-live-watch');
5052                if (livePlayerSection) {
5053                    livePlayerSection.classList.add('collapsed');
5054                }
5055                if (watchBtn) {
5056                    watchBtn.innerHTML = '<i class="fas fa-play"></i>观看直播';
5057                }
5058            }
5059
5060            // 恢复聊天室到原位置
5061            if (originalChatParent) {
5062                if (originalChatNextSibling) {
5063                    originalChatParent.insertBefore(chatRoom, originalChatNextSibling);
5064                } else {
5065                    originalChatParent.appendChild(chatRoom);
5066                }
5067            }
5068            chatRoom.classList.remove('in-modal');
5069
5070            // 隐藏弹窗
5071            chatModal.classList.add('d-none');
5072            chatModalOverlay.classList.add('d-none');
5073            chatModal.classList.remove('fullscreen');
5074            document.body.style.overflow = '';
5075            isFullscreen = false;
5076
5077            // 更新全屏按钮图标
5078            chatModalFullscreen.innerHTML = '<i class="fas fa-expand"></i>';
5079            chatModalFullscreen.title = window.L?.T ? window.L.T('common.fullscreen') : '全屏';
5080        }
5081
5082        // 切换全屏
5083        function toggleFullscreen(e) {
5084            if (e) {
5085                e.preventDefault();
5086            }
5087            isFullscreen = !isFullscreen;
5088            if (isFullscreen) {
5089                chatModal.classList.add('fullscreen');
5090                chatModalFullscreen.innerHTML = '<i class="fas fa-compress"></i>';
5091                chatModalFullscreen.title = window.L?.T ? window.L.T('common.exitFullscreen') : '退出全屏';
5092            } else {
5093                chatModal.classList.remove('fullscreen');
5094                chatModalFullscreen.innerHTML = '<i class="fas fa-expand"></i>';
5095                chatModalFullscreen.title = window.L?.T ? window.L.T('common.fullscreen') : '全屏';
5096            }
5097        }
5098
5099        // 检测是否是移动端
5100        const isMobile = window.innerWidth <= 767;
5101
5102        // 绑定事件:只有存在聊天室时才处理 FAB / 弹窗(Beauty 独立观看页使用内嵌聊天,不走弹窗)
5103        const isBeautyWatchPage = document.body.classList.contains('beauty-watch-layout');
5104        if (chatRoom && !isBeautyWatchPage) {
5105            // 桌面端:只要有聊天室就直接显示FAB(仅当元素存在时)
5106            if (!isMobile && fabOpenChat) {
5107                fabOpenChat.classList.add('visible');
5108            }
5109
5110            // 聊天室弹窗事件(兼容移动端触摸)
5111            if (fabOpenChat) {
5112                fabOpenChat.addEventListener('click', openChatModal);
5113                fabOpenChat.addEventListener('touchend', function(e) {
5114                    e.preventDefault();
5115                    openChatModal(e);
5116                });
5117            }
5118
5119            if (chatModalClose) {
5120                chatModalClose.addEventListener('click', closeChatModal);
5121                chatModalClose.addEventListener('touchend', function(e) {
5122                    e.preventDefault();
5123                    closeChatModal(e);
5124                });
5125            }
5126
5127            if (chatModalOverlay) {
5128                chatModalOverlay.addEventListener('click', closeChatModal);
5129            }
5130
5131            if (chatModalFullscreen) {
5132                chatModalFullscreen.addEventListener('click', toggleFullscreen);
5133            }
5134
5135            // 移动端视频关闭按钮:直接关闭整个弹窗,避免出现“只有聊天”的弹窗
5136            if (mobileVideoClose) {
5137                mobileVideoClose.addEventListener('click', function(e) {
5138                    closeChatModal(e);
5139                });
5140            }
5141
5142            // ESC 关闭
5143            document.addEventListener('keydown', function(e) {
5144                if (e.key === 'Escape' && !chatModal.classList.contains('d-none')) {
5145                    closeChatModal();
5146                }
5147            });
5148
5149            // 移动端:只要聊天室连接成功,就显示 FAB
5150            if (isMobile) {
5151                window.addEventListener('chatConnected', function() {
5152                    if (fabOpenChat) {
5153                        fabOpenChat.classList.add('visible');
5154                    }
5155                });
5156            }
5157
5158            // 同步 FAB 的未读气泡(监听页面内的 unread badge)
5159            const pageUnreadBadge = document.getElementById('unreadBadge');
5160            const fabBadge = document.getElementById('fabChatBadge');
5161            if (pageUnreadBadge && fabBadge) {
5162                const observer = new MutationObserver(function() {
5163                    const count = pageUnreadBadge.textContent || '0';
5164                    const isHidden = pageUnreadBadge.classList.contains('d-none');
5165                    if (isHidden || count === '0') {
5166                        fabBadge.classList.add('d-none');
5167                    } else {
5168                        fabBadge.textContent = count;
5169                        fabBadge.classList.remove('d-none');
5170                    }
5171                });
5172                observer.observe(pageUnreadBadge, { attributes: true, childList: true, subtree: true, characterData: true });
5173            }
5174        } else if (chatRoom && isBeautyWatchPage) {
5175            chatRoom.classList.remove('in-modal');
5176        } else {
5177            // 没有聊天室时隐藏 FAB
5178            if (fabOpenChat) {
5179                fabOpenChat.classList.remove('visible');
5180            }
5181        }
5182    })();
5183    </script>
5183
5184    
5185    <!-- 页面加载完成后隐藏 loader -->
5186    
5186<script>
5187    (function() {
5188        var loader = document.getElementById('pageLoader');
5189        if (!loader) return;
5190        
5191        // 页面加载完成后立即隐藏(服务端已渲染正确语言,无需等待 JS 翻译)
5192        function hideLoader() {
5193            // 立即隐藏,不再延迟
5194            loader.style.display = 'none';
5195            loader.classList.add('fade-out', 'hidden');
5196            // 动画结束后移除元素
5197            setTimeout(function() {
5198                if (loader.parentNode) {
5199                    loader.parentNode.removeChild(loader);
5200                }
5201            }, 200);
5202        }
5203        
5204        // DOM 加载完成后立即隐藏
5205        if (document.readyState === 'complete') {
5206            hideLoader();
5207        } else {
5208            window.addEventListener('load', hideLoader);
5209        }
5210        
5211        // 额外保险:确保在 3 秒后一定隐藏加载器
5212        setTimeout(function() {
5213            if (loader && loader.parentNode) {
5214                loader.style.display = 'none';
5215                loader.classList.add('fade-out', 'hidden');
5216                if (loader.parentNode) {
5217                    loader.parentNode.removeChild(loader);
5218                }
5219            }
5220        }, 3000);
5221        
5222        // 确保聊天遮罩层在页面加载时被隐藏
5223        var chatOverlay = document.getElementById('chatModalOverlay');
5224        if (chatOverlay) {
5225            chatOverlay.style.display = 'none';
5226            chatOverlay.classList.add('d-none');
5227        }
5228        
5229        // 确保聊天弹窗在页面加载时被隐藏
5230        var chatModal = document.getElementById('chatModal');
5231        if (chatModal) {
5232            chatModal.style.display = 'none';
5233            chatModal.classList.add('d-none');
5234        }
5235    })();
5236    </script>
5236
5237    
5238    <!-- 语言切换函数 -->
5239    
5239<script>
5240    function changeLanguage(lang) {
5241        // 防止重复点击
5242        if (window.__changingLanguage) return;
5243        window.__changingLanguage = true;
5244        
5245        // 保存语言偏好到 cookie 和 localStorage
5246        document.cookie = 'livescore_lang=' + lang + '; path=/; max-age=31536000';
5247        localStorage.setItem('livescore_lang', lang);
5248
5249        var returnUrl = window.location.pathname + window.location.search + window.location.hash;
5250        window.location.href = '/set-lang?lang=' + encodeURIComponent(lang) + '&returnUrl=' + encodeURIComponent(returnUrl);
5251    }
5252    </script>
5252
5253    
5254    <!-- SPA 路由 - 暂时禁用以优化LCP -->
5255    
5255<script src="/js/spa-router.js?v=dwhRvRTKNW3gDRjkITc68k3snHSqhN2jwIL1Le2mwmw" defer></script>
5255
5256    
5257    <!-- 简单的预约提醒功能 -->
5258    
5258<script>
5259    window.toggleMatchReminder = async (event, btn) => {
5260        try {
5261            // 检查 Service Worker 支持
5262            if (!('serviceWorker' in navigator)) {
5263                showNotification(window.L?.T ? window.L.T('push.notSupported') : '您的浏览器不支持推送通知', 'warning');
5264                return;
5265            }
5266            
5267            // 等待 Service Worker 就绪(增加超时处理)
5268            let registration, subscription;
5269            try {
5270                registration = await Promise.race([
5271                    navigator.serviceWorker.ready,
5272                    new Promise((_, reject) => setTimeout(() => reject(new Error('SW timeout')), 5000))
5273                ]);
5274                subscription = await registration.pushManager.getSubscription();
5275            } catch (swError) {
5276                console.error('[预约提醒] Service Worker 未就绪:', swError);
5277                showNotification(window.L?.T ? window.L.T('push.notReady') : '推送服务未就绪,请稍后重试', 'warning');
5278                return;
5279            }
5280            
5281            if (!subscription) {
5282                const subscribeBtn = document.getElementById('push-subscribe-btn') || document.getElementById('mobile-push-subscribe-btn');
5283                if (subscribeBtn) {
5284                    subscribeBtn.click();
5285                } else {
5286                    showNotification(window.L?.T ? window.L.T('push.pleaseSubscribe') : '请先订阅推送通知', 'warning');
5287                }
5288                return;
5289            }
5290            
5291            const endpoint = subscription.endpoint;
5292        
5293            const res = await fetch(`/api/push/check-subscription?endpoint=${encodeURIComponent(endpoint)}`);
5294            const data = await res.json();
5295            
5296            if (!data.subscribed) {
5297                const subscribeBtn = document.getElementById('push-subscribe-btn') || document.getElementById('mobile-push-subscribe-btn');
5298                if (subscribeBtn) {
5299                    subscribeBtn.click();
5300                } else {
5301                    showNotification(window.L?.T ? window.L.T('push.pleaseSubscribe') : '请先订阅推送通知', 'warning');
5302                }
5303                return;
5304            }
5305            
5306            // 检查按钮当前状态,判断是订阅还是取消
5307            const matchId = btn.dataset.matchId;
5308            const isActive = btn.classList.contains('active');
5309
5310            const isIconOnly = btn.classList.contains('focus-reminder-btn');
5311
5312            btn.disabled = true;
5313            const originalHtml = btn.innerHTML;
5314            const processingText = window.L?.T ? window.L.T('common.processing') : '处理中...';
5315            btn.innerHTML = isIconOnly
5316                ? `<i class="fas fa-spinner fa-spin"></i>`
5317                : `<i class="fas fa-spinner fa-spin"></i> <span>${processingText}</span>`;
5318            
5319            let reminderRes, reminderData;
5320            
5321            if (isActive) {
5322                // 当前是激活状态,执行取消操作
5323                reminderRes = await fetch('/api/match-reminders/unsubscribe', {
5324                    method: 'POST',
5325                    headers: { 
5326                        'Content-Type': 'application/json',
5327                        'Accept-Language': window.__currentLang || 'vi'
5328                    },
5329                    body: JSON.stringify({
5330                        fixtureId: parseInt(matchId),
5331                        pushEndpoint: endpoint
5332                    })
5333                });
5334                
5335                reminderData = await reminderRes.json();
5336                
5337                if (reminderData.success) {
5338                    btn.classList.remove('active');
5339                    btn.innerHTML = isIconOnly
5340                        ? `<i class="fas fa-bell"></i>`
5341                        : `<i class="fas fa-bell"></i> <span>${btn.dataset.textSet || (window.L?.T ? window.L.T('home.setReminder') : '预约提醒')}</span>`;
5342                    showNotification(reminderData.message || (window.L?.T ? window.L.T('home.reminderCanceled') : '已取消预约'), 'success');
5343                } else {
5344                    btn.innerHTML = originalHtml;
5345                    showNotification(reminderData.message || (window.L?.T ? window.L.T('home.cancelFailed') : '取消失败'), 'danger');
5346                }
5347            } else {
5348                // 当前是未激活状态,执行订阅操作
5349                reminderRes = await fetch('/api/match-reminders/sub
5349scribe', {
5350                    method: 'POST',
5351                    headers: { 
5352                        'Content-Type': 'application/json',
5353                        'Accept-Language': window.__currentLang || 'vi'
5354                    },
5355                    body: JSON.stringify({
5356                        fixtureId: parseInt(matchId),
5357                        pushEndpoint: endpoint
5358                    })
5359                });
5360                
5361                reminderData = await reminderRes.json();
5362                
5363                if (reminderData.success) {
5364                    btn.classList.add('active');
5365                    btn.innerHTML = isIconOnly
5366                        ? `<i class="fas fa-bell-slash"></i>`
5367                        : `<i class="fas fa-bell-slash"></i> <span>${btn.dataset.textCancel || (window.L?.T ? window.L.T('home.cancelReminder') : '取消预约')}</span>`;
5368                    showNotification(reminderData.message || (window.L?.T ? window.L.T('home.reminderSet') : '预约成功'), 'success');
5369                } else {
5370                    btn.innerHTML = originalHtml;
5371                    showNotification(reminderData.message || (window.L?.T ? window.L.T('home.reminderFailed') : '预约失败'), 'danger');
5372                }
5373            }
5374            
5375            btn.disabled = false;
5376            
5377        } catch (error) {
5378            console.error('[预约提醒] 操作失败:', error);
5379            // 根据错误类型显示不同的多语言提示
5380            if (error.message && error.message.includes('Notification permission denied')) {
5381                showNotification(window.L?.T ? window.L.T('push.notificationDenied') : '通知权限已被拒绝,请在浏览器设置中允许通知', 'warning');
5382            } else {
5383                showNotification(window.L?.T ? window.L.T('common.operationFailed') : '操作失败,请稍后重试', 'danger');
5384            }
5385        }
5386    };
5387    
5388    
5389    // 初始化预约提醒按钮状态
5390    window.initReminderButtons = async () => {
5391        // console.log('[预约提醒] 开始初始化按钮状态...');
5392        
5393        try {
5394            // 只获取可见的预约提醒按钮
5395            const buttons = document.querySelectorAll('.reminder-btn:not([style*="display: none"]):not([style*="display:none"]), .focus-reminder-btn');
5396            if (buttons.length === 0) {
5397                // console.log('[预约提醒] 没有找到可见的预约提醒按钮');
5398                return;
5399            }
5400            
5401            // 检查推送订阅状态
5402            const registration = await navigator.serviceWorker.ready;
5403            const subscription = await registration.pushManager.getSubscription();
5404            
5405            if (!subscription) {
5406                // console.log('[预约提醒] 用户未订阅推送,设置默认状态');
5407                buttons.forEach(btn => {
5408                    const isIconOnly = btn.classList.contains('focus-reminder-btn');
5409                    btn.classList.remove('active');
5410                    btn.innerHTML = isIconOnly ? `<i class="fas fa-bell"></i>` : `<i class="fas fa-bell"></i> <span>${btn.dataset.textSet || '预约提醒'}</span>`;
5411                });
5412                return;
5413            }
5414            
5415            // 检查后端订阅状态
5416            const endpoint = subscription.endpoint;
5417            const res = await fetch(`/api/push/check-subscription?endpoint=${encodeURIComponent(endpoint)}`);
5418            const data = await res.json();
5419            
5420            if (!data.subscribed) {
5421                // console.log('[预约提醒] 后端未订阅,设置默认状态');
5422                buttons.forEach(btn => {
5423                    const isIconOnly = btn.classList.contains('focus-reminder-btn');
5424                    btn.classList.remove('active');
5425                    btn.innerHTML = isIconOnly ? `<i class="fas fa-bell"></i>` : `<i class="fas fa-bell"></i> <span>${btn.dataset.textSet || '预约提醒'}</span>`;
5426                });
5427                return;
5428            }
5429            
5430            // 获取已预约的比赛列表
5431            // console.log('[预约提醒] 获取已预约列表...');
5432            const listRes = await fetch(`/api/match-reminders/list?pushEndpoint=${encodeURIComponent(endpoint)}`);
5433            const listData = await listRes.json();
5434            
5435            if (listData.success && listData.reminders) {
5436                const subscribedIds = new Set(listData.reminders.map(r => r.fixtureId.toString()));
5437                // console.log('[预约提醒] 已预约比赛ID:', Array.from(subscribedIds));
5438                
5439                buttons.forEach(btn => {
5440                    const matchId = btn.dataset.matchId;
5441                    const isIconOnly = btn.classList.contains('focus-reminder-btn');
5442                    if (subscribedIds.has(matchId)) {
5443                        btn.classList.add('active');
5444                        btn.innerHTML = isIconOnly ? `<i class="fas fa-bell-slash"></i>` : `<i class="fas fa-bell-slash"></i> <span>${btn.dataset.textCancel || '取消预约'}</span>`;
5445                    } else {
5446                        btn.classList.remove('active');
5447                        btn.innerHTML = isIconOnly ? `<i class="fas fa-bell"></i>` : `<i class="fas fa-bell"></i> <span>${btn.dataset.textSet || '预约提醒'}</span>`;
5448                    }
5449                });
5450            }
5451            
5452            // console.log('[预约提醒] 按钮状态初始化完成');
5453            
5454        } catch (error) {
5455            console.error('[预约提醒] 初始化失败:', error);
5456        }
5457    };
5458    
5459    // 防抖函数,避免频繁触发
5460    let initTimeout = null;
5461    const debouncedInit = () => {
5462        if (initTimeout) {
5463            clearTimeout(initTimeout);
5464        }
5465        initTimeout = setTimeout(initReminderButtons, 300);
5466    };
5467    
5468    // 页面加载完成后初始化
5469    if (document.readyState === 'loading') {
5470        document.addEventListener('DOMContentLoaded', debouncedInit);
5471    } else {
5472        debouncedInit();
5473    }
5474    
5475    // 监听语言切换
5476    window.addEventListener('langChange', debouncedInit);
5477    
5478    // 监听 DOM 变化(只监听比赛列表容器)
5479    const matchContainer = document.querySelector('.matches-container') || 
5480                          document.querySelector('.match-list') || 
5481                          document.querySelector('.fixtures-container') ||
5482                          document.querySelector('.today-matches');
5483    
5484    if (matchContainer) {
5485        const observer = new MutationObserver((mutations) => {
5486            // 检查是否有预约提醒按钮被添加或修改
5487            let hasReminderButtons = false;
5488            mutations.forEach(mutation => {
5489                if (mutation.addedNodes) {
5490                    mutation.addedNodes.forEach(node => {
5491                        if (node.nodeType === 1) {
5492                            if (node.classList?.contains('reminder-btn') || 
5493                                node.querySelector?.('.reminder-btn')) {
5494                                hasReminderButtons = true;
5495                            }
5496                        }
5497                    });
5498                }
5499            });
5500            
5501            if (hasReminderButtons) {
5502                debouncedInit();
5503            }
5504        });
5505        
5506        observer.observe(matchContainer, { childList: true, subtree: true });
5507    }
5508    </script>
5508
5509    
5510    <!-- Visitor Tracking Script -->
5511    
5511<script src="/js/tracker.js" defer></script>
5511
5512    
5512<script src="/js/chat-visitor-id.js" defer></script>
5512
5513    
5514    <!-- 时区检测:自动存储浏览器时区到 cookie,供后端使用 -->
5515    
5515<script>
5516    (function() {
5517        const TZ_COOKIE = 'tzOffset';
5518        const tzOffset = -420;
5519        
5520        // 检查 cookie 是否已存在且值相同
5521        const existingCookie = document.cookie.split('; ').find(c => c.startsWith(TZ_COOKIE + '='));
5522        const existingValue = existingCookie ? parseInt(existingCookie.split('=')[1]) : null;
5523        
5524        if (existingValue !== tzOffset) {
5525            // 设置 cookie,有效期 30 天,全站可用
5526            const expires = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toUTCString();
5527            document.cookie = `${TZ_COOKIE}=${tzOffset}; expires=${expires}; path=/; SameSite=Lax`;
5528            
5529            // 如果是首次设置时区且当前页面是"今日"相关页面,刷新以应用正确时区
5530            const isFirstVisit = existingValue === null;
5531            const isTodayPage = window.location.pathname.includes('/football/today') 
5532                             || window.location.pathname.includes('/matches/today')
5533                             || (window.location.pathname === '/' && !window.location.search.includes('tzOffset'));
5534            
5535            if (isFirstVisit && isTodayPage) {
5536                // 首次访问今日页面,刷新以应用时区
5537                window.location.reload();
5538            }
5539        }
5540    })();
5541    </script>
5541
5542    
5543    <!-- PWA Service Worker Registration & Installation Prompt -->
5544    
5544<script>
5545    (function() {
5546        'use strict';
5547        
5548        let deferredPrompt;
5549        
5550        // Service Worker 注册 - 由 sw-auto-update.js 统一管理,这里只处理开发模式
5551        // 生产环境的 SW 注册和更新由 sw-auto-update.js 处理,自动静默更新无需用户确认
5552        if ('serviceWorker' in navigator && window.__isDevelopment === 'true') {
5553            console.log('[PWA] Development mode: Service Worker enabled with caching disabled.');
5554            
5555            // 开发模式下仍然注册 Service Worker(用于推送通知),但禁用缓存
5556            navigator.serviceWorker.register('/sw.js').then(function(registration) {
5557                console.log('[PWA] Service Worker registered in Development mode (no-cache version)');
5558                
5559                // 清除所有现有缓存
5560                if ('caches' in window) {
5561                    caches.keys().then(function(cacheNames) {
5562                        return Promise.all(
5563                            cacheNames.map(function(cacheName) {
5564                                return caches.delete(cacheName);
5565                            })
5566                        );
5567                    }).then(function() {
5568                        console.log('[PWA] All caches cleared in Development mode');
5569                    });
5570                }
5571            }).catch(function(error) {
5572                console.error('[PWA] Service Worker registration failed in Development mode:', error);
5573            });
5574        }
5575        
5576        // PWA 安装提示事件:仅缓存 deferredPrompt 供顶部横幅使用,不再弹出旧版底部安装条
5577        window.addEventListener('beforeinstallprompt', (e) => {
5578            console.log('[PWA] Install prompt captured for top banner');
5579            e.preventDefault();
5580            deferredPrompt = e;
5581        });
5582        
5583        // 更新通知已移除 - 由 sw-auto-update.js 统一处理静默更新
5584        // 无需用户交互,版本变化时自动刷新页面
5585        window.addEventListener('appinstalled', () => {
5586            console.log('[PWA] App installed successfully');
5587            localStorage.setItem('pwa-installed', 'true');
5588            if (typeof closePwaTopBanner === 'function') closePwaTopBanner();
5589        });
5590        
5591        // ==================== 防止浏览器bfcache(往返缓存)====================
5592        // 防止页面进入bfcache,确保用户关闭标签页再打开时会重新加载
5593        // 注意:不在pageshow时强制刷新,避免中断正在进行的直播
5594        
5595        // 方法1:使用 pagehide 事件(现代替代方案,替代已弃用的 unload)
5596        // pagehide 事件在页面隐藏时触发,可以阻止 bfcache
5597        window.addEventListener('pagehide', function(event) {
5598            // 如果页面被放入 bfcache,event.persisted 为 true
5599            // 通过执行一些操作(如发送 beacon)可以阻止 bfcache
5600            if (event.persisted) {
5601                console.log('[Cache] Page entering bfcache');
5602            }
5603        });
5604        
5605        // 方法2:使用Cache-Control头(已在meta标签中设置)
5606        // 方法3:检测bfcache恢复,记录日志但不刷新
5607        window.addEventListener('pageshow', function(event) {
5608            if (event.persisted) {
5609                console.log('[Cache] Page restored from bfcache');
5610                // 不刷新页面,避免中断直播
5611                // 如果确实从bfcache恢复,页面状态应该是完整的
5612                // 可以在这里重新初始化需要的连接(如 SignalR)
5613            }
5614        });
5615        
5616        // 网络状态监控
5617        window.addEventListener('online', () => {
5618            console.log('[PWA] Back online');
5619            // 可以添加重新连接逻辑
5620        });
5621        
5622        window.addEventListener('offline', () => {
5623            console.log('[PWA] Gone offline');
5624            // 可以显示离线提示
5625        });
5626        
5627        // ==================== PWA 顶部安装横幅 (移动端) ====================
5628        function showPwaTopBanner() {
5629            const banner = document.getElementById('pwa-top-banner');
5630            if (!banner) return;
5631            
5632            // 真正已安装(standalone模式)→ 永久不显示
5633            if (window.matchMedia('(display-mode: standalone)').matches || window.navigator.standalone === true) return;
5634            // 已通过安装事件确认安装 → 永久不显示
5635            if (localStorage.getItem('pwa-installed') === 'true') return;
5636            // 非移动端 → 不显示
5637            if (window.innerWidth > 768) return;
5638            
5639            banner.classList.remove('d-none');
5640        }
5641        
5642        window.closePwaTopBanner = function() {
5643            const banner = document.getElementById('pwa-top-banner');
5644            if (banner) {
5645                banner.classList.add('d-none');
5646            }
5647            // 仅本次页面关闭,刷新后重新显示
5648        };
5649        
5650        window.installPwaFromBanner = async function() {
5651            if (deferredPrompt) {
5652                deferredPrompt.prompt();
5653                const { outcome } = await deferredPrompt.userChoice;
5654                if (outcome === 'accepted') {
5655                    localStorage.setItem('pwa-installed', 'true');
5656                }
5657                deferredPrompt = null;
5658                closePwaTopBanner();
5659            } else {
5660                // iOS / browsers without beforeinstallprompt
5661                // Site default Vietnamese; use i18n when ready
5662                const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent);
5663                const iosFallback = 'Vui lòng nhấn nút Chia sẻ ở trình duyệt ⬆️, rồi chọn «Thêm vào Màn hình chính»';
5664                const androidFallback = 'Vui lòng mở menu trình duyệt, chọn «Thêm vào Màn hình chính» hoặc «Cài đặt ứng dụng»';
5665                const key = isIOS ? 'seo.pwa.installGuideIos' : 'seo.pwa.installGuideAndroid';
5666                const fallback = isIOS ? iosFallback : androidFallback;
5667                let msg = fallback;
5668                if (window.L?.T && window.i18n?.isReady?.()) {
5669                    const translated = window.L.T(key);
5670                    if (translated && translated !== key) msg = translated;
5671                }
5672                alert(msg);
5673            }
5674        };
5675        
5676        // 页面加载后显示横幅
5677        if (document.readyState === 'loading') {
5678            document.addEventListener('DOMContentLoaded', showPwaTopBanner);
5679        } else {
5680            showPwaTopBanner();
5681        }
5682        
5683    })();
5684    
5685    // ==================== PWA 下拉刷新功能 ====================
5686    // Android 原生支持下拉刷新,iOS PWA 需要自定义实现
5687    // 已禁用 - 如需启用请取消注释
5688    /*
5689    (function() {
5690        'use strict';
5691        
5692        // 检测是否为 iOS PWA 模式
5693        const isIOSPWA = (window.navigator.standalone === true) || 
5694                         (window.matchMedia('(display-mode: standalone)').matches && /iPad|iPhone|iPod/.test(navigator.userAgent));
5695        
5696        // 检测是否为移动设备
5697        const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
5698        
5699        // 只在移动设备上启用下拉刷新
5700        if (!isMobile) return;
5701        
5702        let startY = 0;
5703        let currentY = 0;
5704        let pulling = false;
5705        let refreshThreshold = 120; // 触发刷新的阈值(像素)
5706        let maxPull = 160; // 最大下拉距离
5707        let refreshIndicator = null;
5708        
5709        // 创建刷新指示器
5710        function createRefreshIndicator() {
5711            if (refreshIndicator) return;
5712            
5713            refreshIndicator = document.createElement('div');
5714            refreshIndicator.id = 'pwa-refresh-indicator';
5715            const pullText = window.L?.T ? window.L.T('common.pullToRefresh') : '下拉刷新';
5716            refreshIndicator.innerHTML = `
5717                <div class="refresh-spinner">
5718                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 4 23 10 17 10"></polyline><polyline points="1 20 1 14 7 14"></polyline><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"></path></svg>
5719                </div>
5720                <span class="refresh-text">${window.L?.T ? window.L.T('common.releaseToRefresh') : '松开刷新'}</span>
5721            `;
5722            refreshIndicator.style.cssText = `
5723                position: fixed;
5724                top: 0;
5725                left: 50%;
5726                transform: translateX(-50%) translateY(-100%);
5727                background: transparent;
5728                color: #333;
5729                padding: 12px 24px;
5730                border-radius: 0 0 16px 16px;
5731                display: flex;
5732                align-items: center;
5733                gap: 10px;
5734                font-size: 14px;
5735                font-weight: 500;
5736                z-index: 10002;
5737                transition: transform 0.2s ease;
5738                box-shadow: none;
5739            `;
5740            
5741            // 添加样式
5742            const style = document.createElement('style');
5743            style.textContent = `
5744                #pwa-refresh-indicator .refresh-spinner {
5745                    display: flex;
5746                    align-items: center;
5747                    justify-content: center;
5748                }
5749                #pwa-refresh-indicator .refresh-spinner svg {
5750                    width: 16px;
5751                    height: 16px;
5752                    transition: transform 0.3s ease;
5753                }
5754                #pwa-refresh-indicator .refresh-text {
5755                    color: white !important;
5756                    font-size: 14px;
5757                    font-weight: 500;
5758                }
5759                #pwa-refresh-indicator.refreshing .refresh-spinner svg {
5760                    animation: spin 1s linear infinite;
5761                }
5762                #pwa-refresh-indicator.ready .refresh-spinner svg {
5763                    transform: rotate(180deg);
5764                }
5765                @keyframes spin {
5766                    from { transform: rotate(0deg); }
5767                    to { transform: rotate(360deg); }
5768                }
5769            `;
5770            document.head.appendChild(style);
5771            document.body.appendChild(refreshIndicator);
5772        }
5773        
5774        // 更新指示器位置和状态
5775        function updateIndicator(pullDistance, isReady) {
5776            if (!refreshIndicator) return;
5777            
5778            const progress = Math.min(pullDistance / refreshThreshold, 1);
5779            const translateY = Math.min(pullDistance, maxPull) - 60;
5780            
5781            refreshIndicator.style.transform = `translateX(-50%) translateY(${translateY}px)`;
5782            
5783            if (isReady) {
5784                refreshIndicator.classList.add('ready');
5785                refreshIndicator.classList.remove('refreshing');
5786            } else {
5787                refreshIndicator.classList.remove('ready', 'refreshing');
5788            }
5789        }
5790        
5791        // 开始刷新动画
5792        function startRefresh() {
5793            if (!refreshIndicator) return;
5794            
5795            refreshIndicator.classList.add('refreshing');
5796            refreshIndicator.classList.remove('ready');
5797            refreshIndicator.style.transform = 'translateX(-50%) translateY(10px)';
5798            
5799            // 延迟后刷新页面
5800            setTimeout(() => {
5801                window.location.reload();
5802            }, 500);
5803        }
5804        
5805        // 重置指示器
5806        function resetIndicator() {
5807            if (!refreshIndicator) return;
5808            
5809            refreshIndicator.style.transform = 'translateX(-50%) translateY(-100%)';
5810            refreshIndicator.classList.remove('ready', 'refreshing');
5811        }
5812        
5813        // 触摸开始
5814        function handleTouchStart(e) {
5815            // 只在页面顶部时启用下拉刷新
5816            if (window.scrollY > 5) return;
5817            
5818            // 忽略在输入框、视频播放器等元素上的触摸
5819            const target = e.target;
5820            if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || 
5821                target.tagName === 'VIDEO' || target.closest('.live-player
5821-container') ||
5822                target.closest('.chat-input-container')) {
5823                return;
5824            }
5825            
5826            startY = e.touches[0].pageY;
5827            pulling = true;
5828            createRefreshIndicator();
5829        }
5830        
5831        // 触摸移动
5832        function handleTouchMove(e) {
5833            if (!pulling || window.scrollY > 5) {
5834                pulling = false;
5835                return;
5836            }
5837            
5838            currentY = e.touches[0].pageY;
5839            const pullDistance = currentY - startY;
5840            
5841            // 只处理向下拉动,且拉动距离超过最小阈值
5842            if (pullDistance > 10) {
5843                // iOS 需要阻止默认行为以实现自定义下拉
5844                if (isIOSPWA) {
5845                    e.preventDefault();
5846                }
5847                
5848                const isReady = pullDistance >= refreshThreshold;
5849                updateIndicator(pullDistance, isReady);
5850            }
5851        }
5852        
5853        // 触摸结束
5854        function handleTouchEnd(e) {
5855            if (!pulling) return;
5856            
5857            const pullDistance = currentY - startY;
5858            
5859            if (pullDistance >= refreshThreshold) {
5860                startRefresh();
5861            } else {
5862                resetIndicator();
5863            }
5864            
5865            pulling = false;
5866            startY = 0;
5867            currentY = 0;
5868        }
5869        
5870        // 绑定事件
5871        document.addEventListener('touchstart', handleTouchStart, { passive: true });
5872        document.addEventListener('touchmove', handleTouchMove, { passive: false });
5873        document.addEventListener('touchend', handleTouchEnd, { passive: true });
5874        
5875        console.log('[PWA] Pull-to-refresh enabled', isIOSPWA ? '(iOS PWA mode)' : '');
5876    })();
5877    */
5878    
5879    </script>
5879
5880    
5881    
5882    <!-- 登录/注册弹窗 -->
5883    <meta name="turnstile-sitekey" content="0x4AAAAAACejCwrxG0oAHrtT" style="display:none;" />
5884
5885
5886    
5887    
5888<script>
5889// 联赛折叠/展开
5890function toggleLeague(btn) {
5891    const section = btn.closest('.lg-section');
5892    const matches = section.querySelector('.lg-matches');
5893    const useEl = btn.querySelector('use');
5894    if (matches.style.display === 'none') {
5895        matches.style.display = '';
5896        if (useEl) useEl.setAttribute('href', '#icon-chevron-up');
5897    } else {
5898        matches.style.display = 'none';
5899        if (useEl) useEl.setAttribute('href', '#icon-chevron-down');
5900    }
5901}
5902
5903// 收藏状态初始化。SPA 注入时 DOMContentLoaded 已经触发过,所以已加载则立刻执行。
5904function initMatchListSearch() {
5905    const page = document.querySelector('.match-list-page');
5906    const input = document.getElementById('matchListSearch');
5907    const clearBtn = document.getElementById('matchListSearchClear');
5908    const empty = document.getElementById('matchListSearchEmpty');
5909    if (!page || !input || input.dataset.bound === '1') return;
5910    input.dataset.bound = '1';
5911
5912    function applyFilter() {
5913        const query = input.value.trim().toLowerCase();
5914        if (clearBtn) clearBtn.hidden = query.length === 0;
5915        let visible = 0;
5916
5917        page.querySelectorAll('.mx-row').forEach(function (row) {
5918            const hay = (row.getAttribute('data-search') || '').toLowerCase();
5919            const show = !query || hay.indexOf(query) !== -1;
5920            row.classList.toggle('is-search-hidden', !show);
5921            if (show) visible += 1;
5922        });
5923
5924        page.querySelectorAll('.lg-section').forEach(function (section) {
5925            const any = section.querySelector('.mx-row:not(.is-search-hidden)');
5926            section.classList.toggle('is-search-hidden', !any);
5927            section.classList.toggle('is-search-open', !!query && !!any);
5928        });
5929
5930        page.querySelectorAll('.beauty-schedule-row').forEach(function (row) {
5931            const hay = (row.getAttribute('data-search') || '').toLowerCase();
5932            const show = !query || hay.indexOf(query) !== -1;
5933            row.classList.toggle('is-search-hidden', !show);
5934            if (show) visible += 1;
5935        });
5936
5937        page.querySelectorAll('.schedule-sport-section').forEach(function (section) {
5938            if (!section.querySelector('.beauty-schedule-row')) return;
5939            const any = section.querySelector('.beauty-schedule-row:not(.is-search-hidden)');
5940            section.classList.toggle('is-search-hidden', !any);
5941        });
5942
5943        page.querySelectorAll('.schedule-sport-title-inline').forEach(function (title) {
5944            const anySports = page.querySelector('.lg-section:not(.is-search-hidden)');
5945            title.classList.toggle('is-search-hidden', !!query && !anySports);
5946        });
5947
5948        page.querySelectorAll('.match-list-paging').forEach(function (el) {
5949            el.classList.toggle('is-search-hidden', query.length > 0);
5950        });
5951
5952        if (empty) empty.hidden = !query || visible > 0;
5953    }
5954
5955    input.addEventListener('input', applyFilter);
5956    input.addEventListener('keydown', function (e) {
5957        if (e.key === 'Enter') e.preventDefault();
5958        if (e.key === 'Escape') {
5959            input.value = '';
5960            applyFilter();
5961        }
5962    });
5963    if (clearBtn) {
5964        clearBtn.addEventListener('click', function () {
5965            input.value = '';
5966            applyFilter();
5967            input.focus();
5968        });
5969    }
5970}
5971
5972function initMatchListPage() {
5973    initMatchListSearch();
5974    const isAuth = 'false' === 'true';
5975    if (!isAuth) return;
5976
5977    fetch('/profile/favorites/match-ids')
5978        .then(r => r.json())
5979        .then(data => {
5980            if (!data || !data.success || !Array.isArray(data.ids)) return;
5981            const idSet = new Set(data.ids.map(x => String(x)));
5982            document.querySelectorAll('.favorite-btn[data-match-id]').forEach(btn => {
5983                const matchId = btn.getAttribute('data-match-id');
5984                const isFavorited = idSet.has(String(matchId));
5985                btn.classList.toggle('active', isFavorited);
5986                const useEl = btn.querySelector('use');
5987                if (useEl) {
5988                    useEl.setAttribute('href', isFavorited ? '#icon-star-filled' : '#icon-star');
5989                }
5990            });
5991        })
5992        .catch(() => {});
5993}
5994window.initMatchListPage = initMatchListPage;
5995if (document.readyState === 'loading') {
5996    document.addEventListener('DOMContentLoaded', initMatchListPage);
5997} else {
5998    initMatchListPage();
5999}
6000</script>
6000
6001
6002<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":"b6f571285a4f4a64aa211ef540e7e182","r":1,"spa":2}' crossorigin="anonymous"></script>
6002
6003</body>
6004</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.