PageSourceSearch

https://xoigac.top/hom-nay

html xoigac.top collected 2026-10-10 02:21:41 UTC 316,994 bytes, 6,197 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=1791598901" />
14    <link rel="apple-touch-icon" sizes="120x120" href="/images/pwa/apple-touch-icon-120x120.png?v=1791598901" />
15    <link rel="apple-touch-icon" sizes="152x152" href="/images/pwa/apple-touch-icon-152x152.png?v=1791598901" />
16    <link rel="apple-touch-icon" sizes="167x167" href="/images/pwa/apple-touch-icon-167x167.png?v=1791598901" />
17    <link rel="apple-touch-icon" sizes="180x180" href="/images/pwa/apple-touch-icon-180x180.png?v=1791598901" />
18    <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon/favicon-32x32.png?v=1791598901" />
19    <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon/favicon-16x16.png?v=1791598901" />
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=1791598901" />
26    <link rel="shortcut icon" href="/images/favicon/favicon.ico?v=1791598901" />
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>L&#x1ECB;ch tr&#x1EF1;c ti&#x1EBF;p b&#xF3;ng &#x111;&#xE1; h&#xF4;m nay - T&#x1EF7; s&#x1ED1; tr&#x1EF1;c tuy&#x1EBF;n | Xoigac TV</title>
40    
41    <!-- SEO: 基本元标签 -->
42        <meta name="description" content="C&#x1EAD;p nh&#x1EAD;t l&#x1ECB;ch thi &#x111;&#x1EA5;u b&#xF3;ng &#x111;&#xE1; h&#xF4;m nay v&#xE0; t&#x1EF7; s&#x1ED1; tr&#x1EF1;c ti&#x1EBF;p. Xem tr&#x1EF1;c ti&#x1EBF;p c&#xE1;c tr&#x1EAD;n &#x111;&#x1EA5;u Ngo&#x1EA1;i h&#x1EA1;ng Anh, La Liga, Serie A, Bundesliga, Ligue 1, V-League t&#x1EA1;i Xoigac TV mi&#x1EC5;n ph&#xED;." />
43        <meta name="keywords" content="tr&#x1EAD;n &#x111;&#x1EA5;u h&#xF4;m nay, l&#x1ECB;ch thi &#x111;&#x1EA5;u h&#xF4;m nay, b&#xF3;ng &#x111;&#xE1; h&#xF4;m nay" />
44    
45    <!-- SEO: Robots -->
46    <meta name="robots" content="index, follow" />
47    
48    <!-- SEO: Canonical URL -->
49    <link rel="canonical" href="https://xoigac.top/hom-nay" id="canonicalUrl" />
50    
51    <!-- SEO: Open Graph -->
52    <meta property="og:type" content="website" />
53    <meta property="og:title" content="L&#x1ECB;ch tr&#x1EF1;c ti&#x1EBF;p b&#xF3;ng &#x111;&#xE1; h&#xF4;m nay - T&#x1EF7; s&#x1ED1; tr&#x1EF1;c tuy&#x1EBF;n | Xoigac TV" />
54    <meta property="og:description" content="C&#x1EAD;p nh&#x1EAD;t l&#x1ECB;ch thi &#x111;&#x1EA5;u b&#xF3;ng &#x111;&#xE1; h&#xF4;m nay v&#xE0; t&#x1EF7; s&#x1ED1; tr&#x1EF1;c ti&#x1EBF;p. Xem tr&#x1EF1;c ti&#x1EBF;p c&#xE1;c tr&#x1EAD;n &#x111;&#x1EA5;u Ngo&#x1EA1;i h&#x1EA1;ng Anh, La Liga, Serie A, Bundesliga, Ligue 1, V-League t&#x1EA1;i Xoigac TV mi&#x1EC5;n ph&#xED;." />
55    <meta property="og:url" content="https://xoigac.top/hom-nay" 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="L&#x1ECB;ch tr&#x1EF1;c ti&#x1EBF;p b&#xF3;ng &#x111;&#xE1; h&#xF4;m nay - T&#x1EF7; s&#x1ED1; tr&#x1EF1;c tuy&#x1EBF;n | Xoigac TV" />
63    <meta name="twitter:description" content="C&#x1EAD;p nh&#x1EAD;t l&#x1ECB;ch thi &#x111;&#x1EA5;u b&#xF3;ng &#x111;&#xE1; h&#xF4;m nay v&#xE0; t&#x1EF7; s&#x1ED1; tr&#x1EF1;c ti&#x1EBF;p. Xem tr&#x1EF1;c ti&#x1EBF;p c&#xE1;c tr&#x1EAD;n &#x111;&#x1EA5;u Ngo&#x1EA1;i h&#x1EA1;ng Anh, La Liga, Serie A, Bundesliga, Ligue 1, V-League t&#x1EA1;i Xoigac TV mi&#x1EC5;n ph&#xED;." />
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/hom-nay" 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=%2Fhom-nay" 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=%2Fhom-nay" 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=%2Fhom-nay" 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=%2Fhom-nay" 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=%2Fhom-nay" 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=%2Fhom-nay" 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="CfDJ8IwpNTNw2w9OptYg9zhENLRsx8wFe2Ak-qiHDHuzyf4em6alJ9affol8zlyxcpuwj__AmsmA4sXy1QUj-08DrWY6sqSTuVz34Pm7nKVpp7X5RDjLHyLychXp7oSqTkmeIjmGxMhoFR5HvfYEk_Wew6M" />
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">L&#x1ECB;ch Thi &#x110;&#x1EA5;u Th&#x1EC3; Thao H&#xF4;m Nay</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 ">
1938                    <span class="live-indicator-dot"></span>
1939                    &#x110;ang di&#x1EC5;n ra
1940                </a>
1941                <a href="/hom-nay" class="filter-pill active">
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; th&#x1EC3; thao</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="/hom-nay" selected="selected">T&#x1EA5;t c&#x1EA3; th&#x1EC3; thao</option>
1962                        <option value="/hom-nay?category=football">B&#xF3;ng &#x110;&#xE1;</option>
1963                        <option value="/hom-nay?category=basketball">B&#xF3;ng R&#x1ED5;</option>
1964                    </select>
1965                </div>
1966            </div>
1967        </div>
1968    </div>
1969
1970    <div id="matchListSearchEmpty" class="schedule-sport-empty" hidden>Kh&#xF4;ng t&#xEC;m th&#x1EA5;y k&#x1EBF;t qu&#x1EA3;</div>
1971
1972
1973
1974        <div class="lg-section" data-search="Pro B France">
1975            <div class="lg-header">
1976                <div class="lg-header-left">
1977                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
1978                        <svg class="icon"><use href="#icon-star"/></svg>
1979                    </button>
1980                        <span class="lg-country-name">France:</span>
1981                    <img src="/images/basketball/leagues/8.webp"
1982                         alt="Pro B" class="lg-logo" loading="lazy"
1983                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
1984                    <span class="lg-name">Pro B</span>
1985                </div>
1986                <div class="lg-header-right">
1987                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
1988                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
1989                    </button>
1990                </div>
1991            </div>
1992
1993            <div class="lg-matches">
1994                    <div class="mx-row  " data-search="Pro B France Poitiers Nantes">
1995                        <div class="mx-left">
1996                            <button type="button" class="mx-fav-btn favorite-btn"
1997                                    data-match-id="335884"
1998                                    data-auth="false"
1999                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335884, this);"
2000                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2001                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2002                            </button>
2003                            <div class="mx-status">
2004                                    <span class="mx-time">01:00</span>
2005                            </div>
2006                        </div>
2007
2008                        <div class="mx-center">
2009                            <a href="/poitiers-vs-nantes-id335884" class="mx-teams-link">
2010                                <div class="mx-team-row">
2011                                    <img src="/images/basketball/teams/109.webp"
2012                                         alt="Poitiers" class="mx-team-logo" loading="lazy"
2013                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2014                                    <span class="mx-team-name">Poitiers</span>
2015                                    <span class="mx-score ">
2016                                    </span>
2017                                </div>
2018                                <div class="mx-team-row">
2019                                    <img src="/images/basketball/teams/97.webp"
2020                                         alt="Nantes" class="mx-team-logo" loading="lazy"
2021                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2022                                    <span class="mx-team-name">Nantes</span>
2023                                    <span class="mx-score ">
2024                                    </span>
2025                                </div>
2026                            </a>
2027                        </div>
2028
2029                        <div class="mx-right ">
2030                                <a href="/poitiers-vs-nantes-id335884" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2031                        </div>
2032                    </div>
2033                    <div class="mx-row  " data-search="Pro B France Rouen Ada Blois">
2034                        <div class="mx-left">
2035                            <button type="button" class="mx-fav-btn favorite-btn"
2036                                    data-match-id="335885"
2037                                    data-auth="false"
2038                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335885, this);"
2039                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2040                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2041                            </button>
2042                            <div class="mx-status">
2043                                    <span class="mx-time">01:00</span>
2044                            </div>
2045                        </div>
2046
2047                        <div class="mx-center">
2048                            <a href="/rouen-vs-ada-blois-id335885" class="mx-teams-link">
2049                                <div class="mx-team-row">
2050                                    <img src="/images/basketball/teams/101.webp"
2051                                         alt="Rouen" class="mx-team-logo" loading="lazy"
2052                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2053                                    <span class="mx-team-name">Rouen</span>
2054                                    <span class="mx-score ">
2055                                    </span>
2056                                </div>
2057                                <div class="mx-team-row">
2058                                    <img src="/images/basketball/teams/95.webp"
2059                                         alt="Ada Blois" class="mx-team-logo" loading="lazy"
2060                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2061                                    <span class="mx-team-name">Ada Blois</span>
2062                                    <span class="mx-score ">
2063                                    </span>
2064                                </div>
2065                            </a>
2066                        </div>
2067
2068                        <div class="mx-right ">
2069                                <a href="/rouen-vs-ada-blois-id335885" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2070                        </div>
2071                    </div>
2072                    <div class="mx-row  " data-search="Pro B France Chalons-Reims Aix Maurienne">
2073                        <div class="mx-left">
2074                            <button type="button" class="mx-fav-btn favorite-btn"
2075                                    data-match-id="335886"
2076                                    data-auth="false"
2077                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335886, this);"
2078                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2079                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2080                            </button>
2081                            <div class="mx-status">
2082                                    <span class="mx-time">01:00</span>
2083                            </div>
2084                        </div>
2085
2086                        <div class="mx-center">
2087                            <a href="/chalons-reims-vs-aix-maurienne-id335886" class="mx-teams-link">
2088                                <div class="mx-team-row">
2089                                    <img src="/images/basketball/teams/12.webp"
2090                                         alt="Chalons-Reims" class="mx-team-logo" loading="lazy"
2091                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2092                                    <span class="mx-team-name">Chalons-Reims</span>
2093                                    <span class="mx-score ">
2094                                    </span>
2095                                </div>
2096                                <div class="mx-team-row">
2097                                    <img src="/images/basketball/teams/104.webp"
2098                                         alt="Aix Maurienne" class="mx-team-logo" loading="lazy"
2099                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2100                                    <span class="mx-team-name">Aix Maurienne</span>
2101                                    <span class="mx-score ">
2102                                    </span>
2103                                </div>
2104                            </a>
2105                        </div>
2106
2107                        <div class="mx-right ">
2108                                <a href="/chalons-reims-vs-aix-maurienne-id335886" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2109                        </div>
2110                    </div>
2111                    <div class="mx-row  " data-search="Pro B France Le Havre Fos-sur-Mer">
2112                        <div class="mx-left">
2113                            <button type="button" class="mx-fav-btn favorite-btn"
2114                                    data-match-id="335887"
2115                                    data-auth="false"
2116                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335887, this);"
2117                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2118                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2119                            </button>
2120                            <div class="mx-status">
2121                                    <span class="mx-time">01:00</span>
2122                            </div>
2123                        </div>
2124
2125                        <div class="mx-center">
2126                            <a href="/le-havre-vs-fos-sur-mer-id335887" class="mx-teams-link">
2127                                <div class="mx-team-row">
2128                                    <img src="https://media.api-sports.io/basketball/teams/1481.png"
2129                                         alt="Le Havre" class="mx-team-logo" loading="lazy"
2130                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2131                                    <span class="mx-team-name">Le Havre</span>
2132                                    <span class="mx-score ">
2133                                    </span>
2134                                </div>
2135                                <div class="mx-team-row">
2136                                    <img src="https://media.api-sports.io/basketball/teams/110.png"
2137                                         alt="Fos-sur-Mer" class="mx-team-logo" loading="lazy"
2138                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2139                                    <span class="mx-team-name">Fos-sur-Mer</span>
2140                                    <span class="mx-score ">
2141                                    </span>
2142                                </div>
2143                            </a>
2144                        </div>
2145
2146                        <div class="mx-right ">
2147                                <a href="/le-havre-vs-fos-sur-mer-id335887" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2148                        </div>
2149                    </div>
2150                    <div class="mx-row  " data-search="Pro B France La Rochelle Saint Etienne">
2151                        <div class="mx-left">
2152                            <button type="button" class="mx-fav-btn favorite-btn"
2153                                    data-match-id="335888"
2154                                    data-auth="false"
2155                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335888, this);"
2156                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2157                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2158                            </button>
2159                            <div class="mx-status">
2160                                    <span class="mx-time">01:00</span>
2161                            </div>
2162                        </div>
2163
2164                        <div class="mx-center">
2165                            <a href="/la-rochelle-vs-saint-etienne-id335888" class="mx-teams-link">
2166                                <div class="mx-team-row">
2167                                    <img src="/images/basketball/teams/2311.webp"
2168                                         alt="La Rochelle" class="mx-team-logo" loading="lazy"
2169                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2170                                    <span class="mx-team-name">La Rochelle</span>
2171                                    <span class="mx-score ">
2172                                    </span>
2173                                </div>
2174                                <div class="mx-team-row">
2175                                    <img src="https://media.api-sports.io/basketball/teams/7909.png"
2176                                         alt="Saint Etienne" class="mx-team-logo" loading="lazy"
2177                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2178                                    <span class="mx-team-name">Saint Etienne</span>
2179                                    <span class="mx-score ">
2180                                    </span>
2181                                </div>
2182                            </a>
2183                        </div>
2184
2185                        <div class="mx-right ">
2186                                <a href="/la-rochelle-vs-saint-etienne-id335888" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2187                        </div>
2188                    </div>
2189                    <div class="mx-row  " data-search="Pro B France Denain-Voltaire Levallois">
2190                        <div class="mx-left">
2191                            <button type="button" class="mx-fav-btn favorite-btn"
2192                                    data-match-id="335889"
2193                                    data-auth="false"
2194                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335889, this);"
2195                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2196                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2197                            </button>
2198                            <div class="mx-status">
2199                                    <span class="mx-time">01:00</span>
2200                            </div>
2201                        </div>
2202
2203                        <div class="mx-center">
2204                            <a href="/denain-voltaire-vs-levallois-id335889" class="mx-teams-link">
2205                                <div class="mx-team-row">
2206                                    <img src="/images/basketball/teams/94.webp"
2207                                         alt="Denain-Voltaire" class="mx-team-logo" loading="lazy"
2208                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2209                                    <span class="mx-team-name">Denain-Voltaire</span>
2210                                    <span class="mx-score ">
2211                                    </span>
2212                                </div>
2213                                <div class="mx-team-row">
2214                                    <img src="https://media.api-sports.io/basketball/teams/14.png"
2215                                         alt="Levallois" class="mx-team-logo" loading="lazy"
2216                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2217                                    <span class="mx-team-name">Levallois</span>
2218                                    <span class="mx-score ">
2219                                    </span>
2220                                </div>
2221                            </a>
2222                        </div>
2223
2224                        <div class="mx-right ">
2225                                <a href="/denain-voltaire-vs-levallois-id335889" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2226                        </div>
2227                    </div>
2228                    <div class="mx-row  " data-search="Pro B France Caen Hyeres-Toulon">
2229                        <div class="mx-left">
2230                            <button type="button" class="mx-fav-btn favorite-btn"
2231                                    data-match-id="335890"
2232                                    data-auth="false"
2233                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335890, this);"
2234                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2235                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2236                            </button>
2237                            <div class="mx-status">
2238                                    <span class="mx-time">01:00</span>
2239                            </div>
2240                        </div>
2241
2242                        <div class="mx-center">
2243                            <a href="/caen-vs-hyeres-toulon-id335890" class="mx-teams-link">
2244                                <div class="mx-team-row">
2245                                    <img src="/images/basketball/teams/114.webp"
2246                                         alt="Caen" class="mx-team-logo" loading="lazy"
2247                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2248                                    <span class="mx-team-name">Caen</span>
2249                                    <span class="mx-score ">
2250                                    </span>
2251                                </div>
2252                                <div class="mx-team-row">
2253                                    <img src="/images/basketball/teams/1480.webp"
2254                                         alt="Hyeres-Toulon" class="mx-team-logo" loading="lazy"
2255                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2256                                    <span class="mx-team-name">Hyeres-Toulon</span>
2257                                    <span class="mx-score ">
2258                                    </span>
2259                                </div>
2260                            </a>
2261                        </div>
2262
2263                        <div class="mx-right ">
2264                                <a href="/caen-vs-hyeres-toulon-id335890" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2265                        </div>
2266                    </div>
2267                    <div class="mx-row  " data-search="Pro B France Vichy Evreux">
2268                        <div class="mx-left">
2269                            <button type="button" class="mx-fav-btn favorite-btn"
2270                                    data-match-id="335900"
2271                                    data-auth="false"
2272                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335900, this);"
2273                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2274                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2275                            </button>
2276                            <div class="mx-status">
2277                                    <span class="mx-time">01:30</span>
2278                            </div>
2279                        </div>
2280
2281                        <div class="mx-center">
2282                            <a href="/vichy-vs-evreux-id335900" class="mx-teams-link">
2283                                <div class="mx-team-row">
2284                                    <img src="/images/basketball/teams/98.webp"
2285                                         alt="Vichy" class="mx-team-logo" loading="lazy"
2286                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2287                                    <span class="mx-team-name">Vichy</span>
2288                                    <span class="mx-score ">
2289                                    </span>
2290                                </div>
2291                                <div class="mx-team-row">
2292                                    <img src="/images/basketball/teams/105.webp"
2293                                         alt="Evreux" class="mx-team-logo" loading="lazy"
2294                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2295                                    <span class="mx-team-name">Evreux</span>
2296                                    <span class="mx-score ">
2297                                    </span>
2298                                </div>
2299                            </a>
2300                        </div>
2301
2302                        <div class="mx-right ">
2303                                <a href="/vichy-vs-evreux-id335900" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2304                        </div>
2305                    </div>
2306                    <div class="mx-row  " data-search="Pro B France Antibes Orleans">
2307                        <div class="mx-left">
2308                            <button type="button" class="mx-fav-btn favorite-btn"
2309                                    data-match-id="335901"
2310                                    data-auth="false"
2311                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335901, this);"
2312                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2313                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2314                            </button>
2315                            <div class="mx-status">
2316                                    <span class="mx-time">01:30</span>
2317                            </div>
2318                        </div>
2319
2320                        <div class="mx-center">
2321                            <a href="/antibes-vs-orleans-id335901" class="mx-teams-link">
2322                                <div class="mx-team-row">
2323                                    <img src="/images/basketball/teams/107.webp"
2324                                         alt="Antibes" class="mx-team-logo" loading="lazy"
2325                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2326                                    <span class="mx-team-name">Antibes</span>
2327                                    <span class="mx-score ">
2328                                    </span>
2329                                </div>
2330                                <div class="mx-team-row">
2331                                    <img src="/images/basketball/teams/15.webp"
2332                                         alt="Orleans" class="mx-team-logo" loading="lazy"
2333                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2334                                    <span class="mx-team-name">Orleans</span>
2335                                    <span class="mx-score ">
2336                                    </span>
2337                                </div>
2338                            </a>
2339                        </div>
2340
2341                        <div class="mx-right ">
2342                                <a href="/antibes-vs-orleans-id335901" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2343                        </div>
2344                    </div>
2345            </div>
2346        </div>
2347        <div class="lg-section" data-search="1. Liga Czech Republic">
2348            <div class="lg-header">
2349                <div class="lg-header-left">
2350                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
2351                        <svg class="icon"><use href="#icon-star"/></svg>
2352                    </button>
2353                        <span class="lg-country-name">Czech Republic:</span>
2354                    <img src="/images/basketball/leagues/228.webp"
2355                         alt="1. Liga" class="lg-logo" loading="lazy"
2356                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
2357                    <span class="lg-name">1. Liga</span>
2358                </div>
2359                <div class="lg-header-right">
2360                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
2361                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
2362                    </button>
2363                </div>
2364            </div>
2365
2366            <div class="lg-matches">
2367                    <div class="mx-row  " data-search="1. Liga Czech Republic Basketbal Olomouc Vysoka">
2368                        <div class="mx-left">
2369                            <button type="button" class="mx-fav-btn favorite-btn"
2370                                    data-match-id="335871"
2371                                    data-auth="false"
2372                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335871, this);"
2373                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2374                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2375                            </button>
2376                            <div class="mx-status">
2377                                    <span class="mx-time">00:00</span>
2378                            </div>
2379                        </div>
2380
2381                        <div class="mx-center">
2382                            <a href="/basketbal-olomouc-vs-vysoka-id335871" class="mx-teams-link">
2383                                <div class="mx-team-row">
2384                                    <img src="/images/basketball/teams/2601.webp"
2385                                         alt="Basketbal Olomouc" class="mx-team-logo" loading="lazy"
2386                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2387                                    <span class="mx-team-name">Basketbal Olomouc</span>
2388                                    <span class="mx-score ">
2389                                    </span>
2390                                </div>
2391                                <div class="mx-team-row">
2392                                    <img src="/images/basketball/teams/2631.webp"
2393                                         alt="Vysoka" class="mx-team-logo" loading="lazy"
2394                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2395                                    <span class="mx-team-name">Vysoka</span>
2396                                    <span class="mx-score ">
2397                                    </span>
2398                                </div>
2399                            </a>
2400                        </div>
2401
2402                        <div class="mx-right ">
2403                                <a href="/basketbal-olomouc-vs-vysoka-id335871" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2404                        </div>
2405                    </div>
2406                    <div class="mx-row  " data-search="1. Liga Czech Republic Sokol Prazsky Litomerice">
2407                        <div class="mx-left">
2408                            <button type="button" class="mx-fav-btn favorite-btn"
2409                                    data-match-id="335878"
2410                                    data-auth="false"
2411                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335878, this);"
2412                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2413                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2414                            </button>
2415                            <div class="mx-status">
2416                                    <span class="mx-time">00:30</span>
2417                            </div>
2418                        </div>
2419
2420                        <div class="mx-center">
2421                            <a href="/sokol-prazsky-vs-litomerice-id335878" class="mx-teams-link">
2422                                <div class="mx-team-row">
2423                                    <img src="/images/basketball/teams/2624.webp"
2424                                         alt="Sokol Prazsky" class="mx-team-logo" loading="lazy"
2425                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2426                                    <span class="mx-team-name">Sokol Prazsky</span>
2427                                    <span class="mx-score ">
2428                                    </span>
2429                                </div>
2430                                <div class="mx-team-row">
2431                                    <img src="/images/basketball/teams/2612.webp"
2432                                         alt="Litomerice" class="mx-team-logo" loading="lazy"
2433                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2434                                    <span class="mx-team-name">Litomerice</span>
2435                                    <span class="mx-score ">
2436                                    </span>
2437                                </div>
2438                            </a>
2439                        </div>
2440
2441                        <div class="mx-right ">
2442                                <a href="/sokol-prazsky-vs-litomerice-id335878" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2443                        </div>
2444                    </div>
2445                    <div class="mx-row  " data-search="1. Liga Czech Republic Slavia Prague Tygri Liberecko">
2446                        <div class="mx-left">
2447                            <button type="button" class="mx-fav-btn favorite-btn"
2448                                    data-match-id="335879"
2449                                    data-auth="false"
2450                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335879, this);"
2451                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2452                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2453                            </button>
2454                            <div class="mx-status">
2455                                    <span class="mx-time">00:30</span>
2456                            </div>
2457                        </div>
2458
2459                        <div class="mx-center">
2460                            <a href="/slavia-prague-tygri-vs-liberecko-id335879" class="mx-teams-link">
2461                                <div class="mx-team-row">
2462                                    <img src="https://media.api-sports.io/basketball/teams/7898.png"
2463                                         alt="Slavia Prague Tygri" class="mx-team-logo" loading="lazy"
2464                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2465                                    <span class="mx-team-name">Slavia Prague Tygri</span>
2466                                    <span class="mx-score ">
2467                                    </span>
2468                                </div>
2469                                <div class="mx-team-row">
2470                                    <img src="/images/basketball/teams/2614.webp"
2471                                         alt="Liberecko" class="mx-team-logo" loading="lazy"
2472                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2473                                    <span class="mx-team-name">Liberecko</span>
2474                                    <span class="mx-score ">
2475                                    </span>
2476                                </div>
2477                            </a>
2478                        </div>
2479
2480                        <div class="mx-right ">
2481                                <a href="/slavia-prague-tygri-vs-liberecko-id335879" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2482                        </div>
2483                    </div>
2484                    <div class="mx-row  " data-search="1. Liga Czech Republic CZ.ACADEMY Valecnici Decin">
2485                        <div class="mx-left">
2486                            <button type="button" class="mx-fav-btn favorite-btn"
2487                                    data-match-id="335880"
2488                                    data-auth="false"
2489                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335880, this);"
2490                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2491                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2492                            </button>
2493                            <div class="mx-status">
2494                                    <span class="mx-time">00:30</span>
2495                            </div>
2496                        </div>
2497
2498                        <div class="mx-center">
2499                            <a href="/czacademy-vs-valecnici-decin-id335880" class="mx-teams-link">
2500                                <div class="mx-team-row">
2501                                    <img src="/images/basketball/teams/6485.webp"
2502                                         alt="CZ.ACADEMY" class="mx-team-logo" loading="lazy"
2503                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2504                                    <span class="mx-team-name">CZ.ACADEMY</span>
2505                                    <span class="mx-score ">
2506                                    </span>
2507                                </div>
2508                                <div class="mx-team-row">
2509                                    <img src="/images/basketball/teams/7453.webp"
2510                                         alt="Valecnici Decin" class="mx-team-logo" loading="lazy"
2511                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2512                                    <span class="mx-team-name">Valecnici Decin</span>
2513                                    <span class="mx-score ">
2514                                    </span>
2515                                </div>
2516                            </a>
2517                        </div>
2518
2519                        <div class="mx-right ">
2520                                <a href="/czacademy-vs-valecnici-decin-id335880" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2521                        </div>
2522                    </div>
2523                    <div class="mx-row  " data-search="1. Liga Czech Republic Pardubice 2 Novy Jicin">
2524                        <div class="mx-left">
2525                            <button type="button" class="mx-fav-btn favorite-btn"
2526                                    data-match-id="335882"
2527                                    data-auth="false"
2528                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335882, this);"
2529                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2530                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2531                            </button>
2532                            <div class="mx-status">
2533                                    <span class="mx-time">01:00</span>
2534                            </div>
2535                        </div>
2536
2537                        <div class="mx-center">
2538                            <a href="/pardubice-2-vs-novy-jicin-id335882" class="mx-teams-link">
2539                                <div class="mx-team-row">
2540                                    <img src="/images/basketball/teams/3625.webp"
2541                                         alt="Pardubice 2" class="mx-team-logo" loading="lazy"
2542                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2543                                    <span class="mx-team-name">Pardubice 2</span>
2544                                    <span class="mx-score ">
2545                                    </span>
2546                                </div>
2547                                <div class="mx-team-row">
2548                                    <img src="/images/basketball/teams/2615.webp"
2549                                         alt="Novy Jicin" class="mx-team-logo" loading="lazy"
2550                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2551                                    <span class="mx-team-name">Novy Jicin</span>
2552                                    <span class="mx-score ">
2553                                    </span>
2554                                </div>
2555                            </a>
2556                        </div>
2557
2558                        <div class="mx-right ">
2559                                <a href="/pardubice-2-vs-novy-jicin-id335882" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2560                        </div>
2561                    </div>
2562            </div>
2563        </div>
2564        <div class="lg-section" data-search="Basketligan Sweden">
2565            <div class="lg-header">
2566                <div class="lg-header-left">
2567                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
2568                        <svg class="icon"><use href="#icon-star"/></svg>
2569                    </button>
2570                        <span class="lg-country-name">Sweden:</span>
2571                    <img src="/images/basketball/leagues/93.webp"
2572                         alt="Basketligan" class="lg-logo" loading="lazy"
2573                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
2574                    <span class="lg-name">Basketligan</span>
2575                </div>
2576                <div class="lg-header-right">
2577                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
2578                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
2579                    </button>
2580                </div>
2581            </div>
2582
2583            <div class="lg-matches">
2584                    <div class="mx-row  " data-search="Basketligan Sweden Hogsbo Nassjo">
2585                        <div class="mx-left">
2586                            <button type="button" class="mx-fav-btn favorite-btn"
2587                                    data-match-id="335875"
2588                                    data-auth="false"
2589                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335875, this);"
2590                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2591                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2592                            </button>
2593                            <div class="mx-status">
2594                                    <span class="mx-time">00:04</span>
2595                            </div>
2596                        </div>
2597
2598                        <div class="mx-center">
2599                            <a href="/hogsbo-vs-nassjo-id335875" class="mx-teams-link">
2600                                <div class="mx-team-row">
2601                                    <img src="/images/basketball/teams/1222.webp"
2602                                         alt="Hogsbo" class="mx-team-logo" loading="lazy"
2603                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2604                                    <span class="mx-team-name">Hogsbo</span>
2605                                    <span class="mx-score ">
2606                                    </span>
2607                                </div>
2608                                <div class="mx-team-row">
2609                                    <img src="/images/basketball/teams/1203.webp"
2610                                         alt="Nassjo" class="mx-team-logo" loading="lazy"
2611                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2612                                    <span class="mx-team-name">Nassjo</span>
2613                                    <span class="mx-score ">
2614                                    </span>
2615                                </div>
2616                            </a>
2617                        </div>
2618
2619                        <div class="mx-right ">
2620                                <a href="/hogsbo-vs-nassjo-id335875" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2621                        </div>
2622                    </div>
2623                    <div class="mx-row  " data-search="Basketligan Sweden Sloga Uppsala Koping Stars">
2624                        <div class="mx-left">
2625                            <button type="button" class="mx-fav-btn favorite-btn"
2626                                    data-match-id="335876"
2627                                    data-auth="false"
2628                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335876, this);"
2629                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2630                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2631                            </button>
2632                            <div class="mx-status">
2633                                    <span class="mx-time">00:04</span>
2634                            </div>
2635                        </div>
2636
2637                        <div class="mx-center">
2638                            <a href="/sloga-uppsala-vs-koping-stars-id335876" class="mx-teams-link">
2639                                <div class="mx-team-row">
2640                                    <img src="/images/basketball/teams/4933.webp"
2641                                         alt="Sloga Uppsala" class="mx-team-logo" loading="lazy"
2642                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2643                                    <span class="mx-team-name">Sloga Uppsala</span>
2644                                    <span class="mx-score ">
2645                                    </span>
2646                                </div>
2647                                <div class="mx-team-row">
2648                                    <img src="/images/basketball/teams/1202.webp"
2649                                         alt="Koping Stars" class="mx-team-logo" loading="lazy"
2650                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2651                                    <span class="mx-team-name">Koping Stars</span>
2652                                    <span class="mx-score ">
2653                                    </span>
2654                                </div>
2655                            </a>
2656                        </div>
2657
2658                        <div class="mx-right ">
2659                                <a href="/sloga-uppsala-vs-koping-stars-id335876" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2660                        </div>
2661                    </div>
2662                    <div class="mx-row  " data-search="Basketligan Sweden Umea Jamtland">
2663                        <div class="mx-left">
2664                            <button type="button" class="mx-fav-btn favorite-btn"
2665                                    data-match-id="335877"
2666                                    data-auth="false"
2667                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335877, this);"
2668                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2669                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2670                            </button>
2671                            <div class="mx-status">
2672                                    <span class="mx-time">00:04</span>
2673                            </div>
2674                        </div>
2675
2676                        <div class="mx-center">
2677                            <a href="/umea-vs-jamtland-id335877" class="mx-teams-link">
2678                                <div class="mx-team-row">
2679                                    <img src="/images/basketball/teams/1206.webp"
2680                                         alt="Umea" class="mx-team-logo" loading="lazy"
2681                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2682                                    <span class="mx-team-name">Umea</span>
2683                                    <span class="mx-score ">
2684                                    </span>
2685                                </div>
2686                                <div class="mx-team-row">
2687                                    <img src="/images/basketball/teams/1201.webp"
2688                                         alt="Jamtland" class="mx-team-logo" loading="lazy"
2689                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2690                                    <span class="mx-team-name">Jamtland</span>
2691                                    <span class="mx-score ">
2692                                    </span>
2693                                </div>
2694                            </a>
2695                        </div>
2696
2697                        <div class="mx-right ">
2698                                <a href="/umea-vs-jamtland-id335877" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2699                        </div>
2700                    </div>
2701                    <div class="mx-row  " data-search="Basketligan Sweden Boras BC Lulea">
2702                        <div class="mx-left">
2703                            <button type="button" class="mx-fav-btn favorite-btn"
2704                                    data-match-id="335897"
2705                                    data-auth="false"
2706                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335897, this);"
2707                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2708                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2709                            </button>
2710                            <div class="mx-status">
2711                                    <span class="mx-time">01:04</span>
2712                            </div>
2713                        </div>
2714
2715                        <div class="mx-center">
2716                            <a href="/boras-vs-bc-lulea-id335897" class="mx-teams-link">
2717                                <div class="mx-team-row">
2718                                    <img src="/images/basketball/teams/1199.webp"
2719                                         alt="Boras" class="mx-team-logo" loading="lazy"
2720                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2721                                    <span class="mx-team-name">Boras</span>
2722                                    <span class="mx-score ">
2723                                    </span>
2724                                </div>
2725                                <div class="mx-team-row">
2726                                    <img src="/images/basketball/teams/1198.webp"
2727                                         alt="BC Lulea" class="mx-team-logo" loading="lazy"
2728                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2729                                    <span class="mx-team-name">BC Lulea</span>
2730                                    <span class="mx-score ">
2731                                    </span>
2732                                </div>
2733                            </a>
2734                        </div>
2735
2736                        <div class="mx-right ">
2737                                <a href="/boras-vs-bc-lulea-id335897" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2738                        </div>
2739                    </div>
2740            </div>
2741        </div>
2742        <div class="lg-section" data-search="Superliga Women Austria">
2743            <div class="lg-header">
2744                <div class="lg-header-left">
2745                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
2746                        <svg class="icon"><use href="#icon-star"/></svg>
2747                    </button>
2748                        <span class="lg-country-name">Austria:</span>
2749                    <img src="/images/basketball/leagues/218.webp"
2750                         alt="Superliga Women" class="lg-logo" loading="lazy"
2751                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
2752                    <span class="lg-name">Superliga Women</span>
2753                </div>
2754                <div class="lg-header-right">
2755                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
2756                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
2757                    </button>
2758                </div>
2759            </div>
2760
2761            <div class="lg-matches">
2762                    <div class="mx-row  " data-search="Superliga Women Austria UBI Graz W DBB LZ OO W">
2763                        <div class="mx-left">
2764                            <button type="button" class="mx-fav-btn favorite-btn"
2765                                    data-match-id="335873"
2766                                    data-auth="false"
2767                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335873, this);"
2768                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2769                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2770                            </button>
2771                            <div class="mx-status">
2772                                    <span class="mx-time">00:00</span>
2773                            </div>
2774                        </div>
2775
2776                        <div class="mx-center">
2777                            <a href="/ubi-graz-w-vs-dbb-lz-oo-w-id335873" class="mx-teams-link">
2778                                <div class="mx-team-row">
2779                                    <img src="/images/basketball/teams/2964.webp"
2780                                         alt="UBI Graz W" class="mx-team-logo" loading="lazy"
2781                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2782                                    <span class="mx-team-name">UBI Graz W</span>
2783                                    <span class="mx-score ">
2784                                    </span>
2785                                </div>
2786                                <div class="mx-team-row">
2787                                    <img src="/images/basketball/teams/3554.webp"
2788                                         alt="DBB LZ OO W" class="mx-team-logo" loading="lazy"
2789                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2790                                    <span class="mx-team-name">DBB LZ OO W</span>
2791                                    <span class="mx-score ">
2792                                    </span>
2793                                </div>
2794                            </a>
2795                        </div>
2796
2797                        <div class="mx-right ">
2798                                <a href="/ubi-graz-w-vs-dbb-lz-oo-w-id335873" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2799                        </div>
2800                    </div>
2801                    <div class="mx-row  " data-search="Superliga Women Austria Linz W Basket Flames W">
2802                        <div class="mx-left">
2803                            <button type="button" class="mx-fav-btn favorite-btn"
2804                                    data-match-id="335881"
2805                                    data-auth="false"
2806                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335881, this);"
2807                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2808                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2809                            </button>
2810                            <div class="mx-status">
2811                                    <span class="mx-time">00:30</span>
2812                            </div>
2813                        </div>
2814
2815                        <div class="mx-center">
2816                            <a href="/linz-w-vs-basket-flames-w-id335881" class="mx-teams-link">
2817                                <div class="mx-team-row">
2818                                    <img src="https://media.api-sports.io/basketball/teams/7932.png"
2819                                         alt="Linz W" class="mx-team-logo" loading="lazy"
2820                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2821                                    <span class="mx-team-name">Linz W</span>
2822                                    <span class="mx-score ">
2823                                    </span>
2824                                </div>
2825                                <div class="mx-team-row">
2826                                    <img src="/images/basketball/teams/2961.webp"
2827                                         alt="Basket Flames W" class="mx-team-logo" loading="lazy"
2828                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2829                                    <span class="mx-team-name">Basket Flames W</span>
2830                                    <span class="mx-score ">
2831                                    </span>
2832                                </div>
2833                            </a>
2834                        </div>
2835
2836                        <div class="mx-right ">
2837                                <a href="/linz-w-vs-basket-flames-w-id335881" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2838                        </div>
2839                    </div>
2840                    <div class="mx-row  " data-search="Superliga Women Austria Vienna Timberwolves W UBSC-DBBC Graz W">
2841                        <div class="mx-left">
2842                            <button type="button" class="mx-fav-btn favorite-btn"
2843                                    data-match-id="335895"
2844                                    data-auth="false"
2845                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335895, this);"
2846                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2847                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2848                            </button>
2849                            <div class="mx-status">
2850                                    <span class="mx-time">01:00</span>
2851                            </div>
2852                        </div>
2853
2854                        <div class="mx-center">
2855                            <a href="/vienna-timberwolves-w-vs-ubsc-dbbc-graz-w-id335895" class="mx-teams-link">
2856                                <div class="mx-team-row">
2857                                    <img src="/images/basketball/teams/2965.webp"
2858                                         alt="Vienna Timberwolves W" class="mx-team-logo" loading="lazy"
2859                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2860                                    <span class="mx-team-name">Vienna Timberwolves W</span>
2861                                    <span class="mx-score ">
2862                                    </span>
2863                                </div>
2864                                <div class="mx-team-row">
2865                                    <img src="/images/basketball/teams/3555.webp"
2866                                         alt="UBSC-DBBC Graz W" class="mx-team-logo" loading="lazy"
2867                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2868                                    <span class="mx-team-name">UBSC-DBBC Graz W</span>
2869                                    <span class="mx-score ">
2870                                    </span>
2871                                </div>
2872                            </a>
2873                        </div>
2874
2875                        <div class="mx-right ">
2876                                <a href="/vienna-timberwolves-w-vs-ubsc-dbbc-graz-w-id335895" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
2877                        </div>
2878                    </div>
2879            </div>
2880        </div>
2881        <div class="lg-section" data-search="Torneo Federal A Argentina">
2882            <div class="lg-header">
2883                <div class="lg-header-left">
2884                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
2885                        <svg class="icon"><use href="#icon-star"/></svg>
2886                    </button>
2887                        <span class="lg-country-name">Argentina:</span>
2888                    <img src="/images/football/leagues/134.webp"
2889                         alt="Torneo Federal A" class="lg-logo" loading="lazy"
2890                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
2891                    <span class="lg-name">Torneo Federal A</span>
2892                </div>
2893                <div class="lg-header-right">
2894                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
2895                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
2896                    </button>
2897                </div>
2898            </div>
2899
2900            <div class="lg-matches">
2901                    <div class="mx-row is-live " data-search="Torneo Federal A Argentina San Mart&#xED;n Mendoza Argentino Monte Ma&#xED;z">
2902                        <div class="mx-left">
2903                            <button type="button" class="mx-fav-btn favorite-btn"
2904                                    data-match-id="339455"
2905                                    data-auth="false"
2906                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(339455, this);"
2907                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2908                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2909                            </button>
2910                            <div class="mx-status">
2911                                    <span class="mx-status-badge live">2H</span>
2912                                        <span class="mx-minute">90<span class="minute-tick">'</span></span>
2913                            </div>
2914                        </div>
2915
2916                        <div class="mx-center">
2917                            <a href="/san-martin-mendoza-vs-argentino-monte-maiz-id339455" class="mx-teams-link">
2918                                <div class="mx-team-row">
2919                                    <img src="/images/football/teams/21042.webp"
2920                                         alt="San Mart&#xED;n Mendoza" class="mx-team-logo" loading="lazy"
2921                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2922                                    <span class="mx-team-name">San Mart&#xED;n Mendoza</span>
2923                                    <span class="mx-score live">
29240                                    </span>
2925                                </div>
2926                                <div class="mx-team-row">
2927                                    <img src="/images/football/teams/18764.webp"
2928                                         alt="Argentino Monte Ma&#xED;z" class="mx-team-logo" loading="lazy"
2929                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2930                                    <span class="mx-team-name">Argentino Monte Ma&#xED;z</span>
2931                                    <span class="mx-score live">
29322                                    </span>
2933                                </div>
2934                            </a>
2935                        </div>
2936
2937                        <div class="mx-right action-column streamer-col">
2938                                <a href="/san-martin-mendoza-vs-argentino-monte-maiz-id339455" class="mx-action-btn live-btn">
2939                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2940                                </a>
2941                        </div>
2942                    </div>
2943                    <div class="mx-row is-live " data-search="Torneo Federal A Argentina Juventud Antoniana Huracan Las Heras">
2944                        <div class="mx-left">
2945                            <button type="button" class="mx-fav-btn favorite-btn"
2946                                    data-match-id="339454"
2947                                    data-auth="false"
2948                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(339454, this);"
2949                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
2950                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
2951                            </button>
2952                            <div class="mx-status">
2953                                    <span class="mx-status-badge live">2H</span>
2954                                        <span class="mx-minute">58<span class="minute-tick">'</span></span>
2955                            </div>
2956                        </div>
2957
2958                        <div class="mx-center">
2959                            <a href="/juventud-antoniana-vs-huracan-las-heras-id339454" class="mx-teams-link">
2960                                <div class="mx-team-row">
2961                                    <img src="/images/football/teams/1961.webp"
2962                                         alt="Juventud Antoniana" class="mx-team-logo" loading="lazy"
2963                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2964                                    <span class="mx-team-name">Juventud Antoniana</span>
2965                                    <span class="mx-score live">
29661                                    </span>
2967                                </div>
2968                                <div class="mx-team-row">
2969                                    <img src="/images/football/teams/2428.webp"
2970                                         alt="Huracan Las Heras" class="mx-team-logo" loading="lazy"
2971                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
2972                                    <span class="mx-team-name">Huracan Las Heras</span>
2973                                    <span class="mx-score live">
29740                                    </span>
2975                                </div>
2976                            </a>
2977                        </div>
2978
2979                        <div class="mx-right action-column streamer-col">
2980                                <a href="/juventud-antoniana-vs-huracan-las-heras-id339454" class="mx-action-btn live-btn">
2981                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
2982                                </a>
2983                        </div>
2984                    </div>
2985            </div>
2986        </div>
2987        <div class="lg-section" data-search="National League - National New-Zealand">
2988            <div class="lg-header">
2989                <div class="lg-header-left">
2990                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
2991                        <svg class="icon"><use href="#icon-star"/></svg>
2992                    </button>
2993                        <span class="lg-country-name">New-Zealand:</span>
2994                    <img src="/images/football/leagues/955.webp"
2995                         alt="National League - National" class="lg-logo" loading="lazy"
2996                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
2997                    <span class="lg-name">National League - National</span>
2998                </div>
2999                <div class="lg-header-right">
3000                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3001                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3002                    </button>
3003                </div>
3004            </div>
3005
3006            <div class="lg-matches">
3007                    <div class="mx-row is-live " data-search="National League - National New-Zealand Wellington Phoenix II Birkenhead United">
3008                        <div class="mx-left">
3009                            <button type="button" class="mx-fav-btn favorite-btn"
3010                                    data-match-id="336726"
3011                                    data-auth="false"
3012                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(336726, this);"
3013                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3014                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3015                            </button>
3016                            <div class="mx-status">
3017                                    <span class="mx-status-badge live">HT</span>
3018                                        <span class="mx-minute">45<span class="minute-tick">'</span></span>
3019                            </div>
3020                        </div>
3021
3022                        <div class="mx-center">
3023                            <a href="/wellington-phoenix-ii-vs-birkenhead-united-id336726" class="mx-teams-link">
3024                                <div class="mx-team-row">
3025                                    <img src="/images/football/teams/2535.webp"
3026                                         alt="Wellington Phoenix II" class="mx-team-logo" loading="lazy"
3027                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3028                                    <span class="mx-team-name">Wellington Phoenix II</span>
3029                                    <span class="mx-score live">
30300                                    </span>
3031                                </div>
3032                                <div class="mx-team-row">
3033                                    <img src="/images/football/teams/20650.webp"
3034                                         alt="Birkenhead United" class="mx-team-logo" loading="lazy"
3035                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3036                                    <span class="mx-team-name">Birkenhead United</span>
3037                                    <span class="mx-score live">
30380                                    </span>
3039                                </div>
3040                            </a>
3041                        </div>
3042
3043                        <div class="mx-right action-column streamer-col">
3044                                <a href="/wellington-phoenix-ii-vs-birkenhead-united-id336726" class="mx-action-btn live-btn">
3045                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3046                                </a>
3047                        </div>
3048                    </div>
3049                    <div class="mx-row is-live " data-search="National League - National New-Zealand Auckland City Wellington Olympic">
3050                        <div class="mx-left">
3051                            <button type="button" class="mx-fav-btn favorite-btn"
3052                                    data-match-id="336730"
3053                                    data-auth="false"
3054                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(336730, this);"
3055                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3056                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3057                            </button>
3058                            <div class="mx-status">
3059                                    <span class="mx-status-badge live">1H</span>
3060                                        <span class="mx-minute">21<span class="minute-tick">'</span></span>
3061                            </div>
3062                        </div>
3063
3064                        <div class="mx-center">
3065                            <a href="/auckland-city-vs-wellington-olympic-id336730" class="mx-teams-link">
3066                                <div class="mx-team-row">
3067                                    <img src="/images/football/teams/2537.webp"
3068                                         alt="Auckland City" class="mx-team-logo" loading="lazy"
3069                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3070                                    <span class="mx-team-name">Auckland City</span>
3071                                    <span class="mx-score live">
30720                                    </span>
3073                                </div>
3074                                <div class="mx-team-row">
3075                                    <img src="/images/football/teams/20646.webp"
3076                                         alt="Wellington Olympic" class="mx-team-logo" loading="lazy"
3077                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3078                                    <span class="mx-team-name">Wellington Olympic</span>
3079                                    <span class="mx-score live">
30801                                    </span>
3081                                </div>
3082                            </a>
3083                        </div>
3084
3085                        <div class="mx-right action-column streamer-col">
3086                                <a href="/auckland-city-vs-wellington-olympic-id336730" class="mx-action-btn live-btn">
3087                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3088                                </a>
3089                        </div>
3090                    </div>
3091            </div>
3092        </div>
3093        <div class="lg-section" data-search="Premier League Botswana">
3094            <div class="lg-header">
3095                <div class="lg-header-left">
3096                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3097                        <svg class="icon"><use href="#icon-star"/></svg>
3098                    </button>
3099                        <span class="lg-country-name">Botswana:</span>
3100                    <img src="/images/football/leagues/412.webp"
3101                         alt="Premier League" class="lg-logo" loading="lazy"
3102                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3103                    <span class="lg-name">Premier League</span>
3104                </div>
3105                <div class="lg-header-right">
3106                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3107                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3108                    </button>
3109                </div>
3110            </div>
3111
3112            <div class="lg-matches">
3113                    <div class="mx-row  " data-search="Premier League Botswana Gaborone United Morupule Wanderers">
3114                        <div class="mx-left">
3115                            <button type="button" class="mx-fav-btn favorite-btn"
3116                                    data-match-id="337678"
3117                                    data-auth="false"
3118                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(337678, this);"
3119                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3120                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3121                            </button>
3122                            <div class="mx-status">
3123                                    <span class="mx-time">00:00</span>
3124                            </div>
3125                        </div>
3126
3127                        <div class="mx-center">
3128                            <a href="/gaborone-united-vs-morupule-wanderers-id337678" class="mx-teams-link">
3129                                <div class="mx-team-row">
3130                                    <img src="/images/football/teams/5421.webp"
3131                                         alt="Gaborone United" class="mx-team-logo" loading="lazy"
3132                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3133                                    <span class="mx-team-name">Gaborone United</span>
3134                                    <span class="mx-score ">
3135                                    </span>
3136                                </div>
3137                                <div class="mx-team-row">
3138                                    <img src="/images/football/teams/6386.webp"
3139                                         alt="Morupule Wanderers" class="mx-team-logo" loading="lazy"
3140                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3141                                    <span class="mx-team-name">Morupule Wanderers</span>
3142                                    <span class="mx-score ">
3143                                    </span>
3144                                </div>
3145                            </a>
3146                        </div>
3147
3148                        <div class="mx-right ">
3149                                <a href="/gaborone-united-vs-morupule-wanderers-id337678" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
3150                        </div>
3151                    </div>
3152                    <div class="mx-row  " data-search="Premier League Botswana Tonota Sua Flamingoes">
3153                        <div class="mx-left">
3154                            <button type="button" class="mx-fav-btn favorite-btn"
3155                                    data-match-id="339161"
3156                                    data-auth="false"
3157                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(339161, this);"
3158                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3159                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3160                            </button>
3161                            <div class="mx-status">
3162                                    <span class="mx-time">00:00</span>
3163                            </div>
3164                        </div>
3165
3166                        <div class="mx-center">
3167                            <a href="/tonota-vs-sua-flamingoes-id339161" class="mx-teams-link">
3168                                <div class="mx-team-row">
3169                                    <img src="https://media.api-sports.io/football/teams/28296.png"
3170                                         alt="Tonota" class="mx-team-logo" loading="lazy"
3171                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3172                                    <span class="mx-team-name">Tonota</span>
3173                                    <span class="mx-score ">
3174                                    </span>
3175                                </div>
3176                                <div class="mx-team-row">
3177                                    <img src="/images/football/teams/18122.webp"
3178                                         alt="Sua Flamingoes" class="mx-team-logo" loading="lazy"
3179                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3180                                    <span class="mx-team-name">Sua Flamingoes</span>
3181                                    <span class="mx-score ">
3182                                    </span>
3183                                </div>
3184                            </a>
3185                        </div>
3186
3187                        <div class="mx-right ">
3188                                <a href="/tonota-vs-sua-flamingoes-id339161" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
3189                        </div>
3190                    </div>
3191            </div>
3192        </div>
3193        <div class="lg-section" data-search="Ligue 2 Women France">
3194            <div class="lg-header">
3195                <div class="lg-header-left">
3196                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3197                        <svg class="icon"><use href="#icon-star"/></svg>
3198                    </button>
3199                        <span class="lg-country-name">France:</span>
3200                    <img src="/images/basketball/leagues/232.webp"
3201                         alt="Ligue 2 Women" class="lg-logo" loading="lazy"
3202                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3203                    <span class="lg-name">Ligue 2 Women</span>
3204                </div>
3205                <div class="lg-header-right">
3206                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3207                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3208                    </button>
3209                </div>
3210            </div>
3211
3212            <div class="lg-matches">
3213                    <div class="mx-row  " data-search="Ligue 2 Women France Feytiat W Montbrison W">
3214                        <div class="mx-left">
3215                            <button type="button" class="mx-fav-btn favorite-btn"
3216                                    data-match-id="335892"
3217                                    data-auth="false"
3218                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335892, this);"
3219                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3220                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3221                            </button>
3222                            <div class="mx-status">
3223                                    <span class="mx-time">01:00</span>
3224                            </div>
3225                        </div>
3226
3227                        <div class="mx-center">
3228                            <a href="/feytiat-w-vs-montbrison-w-id335892" class="mx-teams-link">
3229                                <div class="mx-team-row">
3230                                    <img src="/images/basketball/teams/4930.webp"
3231                                         alt="Feytiat W" class="mx-team-logo" loading="lazy"
3232                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3233                                    <span class="mx-team-name">Feytiat W</span>
3234                                    <span class="mx-score ">
3235                                    </span>
3236                                </div>
3237                                <div class="mx-team-row">
3238                                    <img src="/images/basketball/teams/3660.webp"
3239                                         alt="Montbrison W" class="mx-team-logo" loading="lazy"
3240                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3241                                    <span class="mx-team-name">Montbrison W</span>
3242                                    <span class="mx-score ">
3243                                    </span>
3244                                </div>
3245                            </a>
3246                        </div>
3247
3248                        <div class="mx-right ">
3249                                <a href="/feytiat-w-vs-montbrison-w-id335892" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
3250                        </div>
3251                    </div>
3252                    <div class="mx-row  " data-search="Ligue 2 Women France Porte du Hainaut W Centre Federal BB W">
3253                        <div class="mx-left">
3254                            <button type="button" class="mx-fav-btn favorite-btn"
3255                                    data-match-id="335893"
3256                                    data-auth="false"
3257                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335893, this);"
3258                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3259                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3260                            </button>
3261                            <div class="mx-status">
3262                                    <span class="mx-time">01:00</span>
3263                            </div>
3264                        </div>
3265
3266                        <div class="mx-center">
3267                            <a href="/porte-du-hainaut-w-vs-centre-federal-bb-w-id335893" class="mx-teams-link">
3268                                <div class="mx-team-row">
3269                                    <img src="https://media.api-sports.io/basketball/teams/7917.png"
3270                                         alt="Porte du Hainaut W" class="mx-team-logo" loading="lazy"
3271                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3272                                    <span class="mx-team-name">Porte du Hainaut W</span>
3273                                    <span class="mx-score ">
3274                                    </span>
3275                                </div>
3276                                <div class="mx-team-row">
3277                                    <img src="/images/basketball/teams/3665.webp"
3278                                         alt="Centre Federal BB W" class="mx-team-logo" loading="lazy"
3279                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3280                                    <span class="mx-team-name">Centre Federal BB W</span>
3281                                    <span class="mx-score ">
3282                                    </span>
3283                                </div>
3284                            </a>
3285                        </div>
3286
3287                        <div class="mx-right ">
3288                                <a href="/porte-du-hainaut-w-vs-centre-federal-bb-w-id335893" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
3289                        </div>
3290                    </div>
3291            </div>
3292        </div>
3293        <div class="lg-section" data-search="Liga Profesional Argentina Argentina">
3294            <div class="lg-header">
3295                <div class="lg-header-left">
3296                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3297                        <svg class="icon"><use href="#icon-star"/></svg>
3298                    </button>
3299                        <span class="lg-country-name">Argentina:</span>
3300                    <img src="/images/football/leagues/128.webp"
3301                         alt="Liga Profesional Argentina" class="lg-logo" loading="lazy"
3302                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3303                    <span class="lg-name">Liga Profesional Argentina</span>
3304                </div>
3305                <div class="lg-header-right">
3306                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3307                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3308                    </button>
3309                </div>
3310            </div>
3311
3312            <div class="lg-matches">
3313                    <div class="mx-row is-live " data-search="Liga Profesional Argentina Argentina Union Santa Fe Defensa Y Justicia Groot">
3314                        <div class="mx-left">
3315                            <button type="button" class="mx-fav-btn favorite-btn"
3316                                    data-match-id="339522"
3317                                    data-auth="false"
3318                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(339522, this);"
3319                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3320                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3321                            </button>
3322                            <div class="mx-status">
3323                                    <span class="mx-status-badge live">2H</span>
3324                                        <span class="mx-minute">77<span class="minute-tick">'</span></span>
3325                            </div>
3326                        </div>
3327
3328                        <div class="mx-center">
3329                            <a href="/union-santa-fe-vs-defensa-y-justicia-id339522/groot" class="mx-teams-link">
3330                                <div class="mx-team-row">
3331                                    <img src="/images/football/teams/441.webp"
3332                                         alt="Union Santa Fe" class="mx-team-logo" loading="lazy"
3333                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3334                                    <span class="mx-team-name">Union Santa Fe</span>
3335                                    <span class="mx-score live">
33360                                    </span>
3337                                </div>
3338                                <div class="mx-team-row">
3339                                    <img src="/images/football/teams/442.webp"
3340                                         alt="Defensa Y Justicia" class="mx-team-logo" loading="lazy"
3341                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3342                                    <span class="mx-team-name">Defensa Y Justicia</span>
3343                                    <span class="mx-score live">
33442                                    </span>
3345                                </div>
3346                            </a>
3347                        </div>
3348
3349                        <div class="mx-right action-column streamer-col">
3350                                <a href="/union-santa-fe-vs-defensa-y-justicia-id339522/groot" class="mx-action-btn live-btn">
3351                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3352                                </a>
3353                                    <a href="/streamer/94/groot"
3354                                       class="mx-streamer-badge mx-streamer-badge-live mx-streamer-pill"
3355                                       title="BLV GROOT">
3356                                        <svg class="icon icon-mic"><use href="#icon-mic"/></svg>
3357                                        <span class="mx-streamer-name">BLV GROOT</span>
3358                                    </a>
3359                        </div>
3360                    </div>
3361            </div>
3362        </div>
3363        <div class="lg-section" data-search="Primera Divisi&#xF3;n Peru">
3364            <div class="lg-header">
3365                <div class="lg-header-left">
3366                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3367                        <svg class="icon"><use href="#icon-star"/></svg>
3368                    </button>
3369                        <span class="lg-country-name">Peru:</span>
3370                    <img src="/images/football/leagues/281.webp"
3371                         alt="Primera Divisi&#xF3;n" class="lg-logo" loading="lazy"
3372                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3373                    <span class="lg-name">Primera Divisi&#xF3;n</span>
3374                </div>
3375                <div class="lg-header-right">
3376                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3377                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3378                    </button>
3379                </div>
3380            </div>
3381
3382            <div class="lg-matches">
3383                    <div class="mx-row is-live " data-search="Primera Divisi&#xF3;n Peru Deportivo Garcilaso Sport Huancayo">
3384                        <div class="mx-left">
3385                            <button type="button" class="mx-fav-btn favorite-btn"
3386                                    data-match-id="336718"
3387                                    data-auth="false"
3388                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(336718, this);"
3389                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3390                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3391                            </button>
3392                            <div class="mx-status">
3393                                    <span class="mx-status-badge live">2H</span>
3394                                        <span class="mx-minute">62<span class="minute-tick">'</span></span>
3395                            </div>
3396                        </div>
3397
3398                        <div class="mx-center">
3399                            <a href="/deportivo-garcilaso-vs-sport-huancayo-id336718" class="mx-teams-link">
3400                                <div class="mx-team-row">
3401                                    <img src="/images/football/teams/20960.webp"
3402                                         alt="Deportivo Garcilaso" class="mx-team-logo" loading="lazy"
3403                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3404                                    <span class="mx-team-name">Deportivo Garcilaso</span>
3405                                    <span class="mx-score live">
34060                                    </span>
3407                                </div>
3408                                <div class="mx-team-row">
3409                                    <img src="/images/football/teams/2555.webp"
3410                                         alt="Sport Huancayo" class="mx-team-logo" loading="lazy"
3411                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3412                                    <span class="mx-team-name">Sport Huancayo</span>
3413                                    <span class="mx-score live">
34141                                    </span>
3415                                </div>
3416                            </a>
3417                        </div>
3418
3419                        <div class="mx-right action-column streamer-col">
3420                                <a href="/deportivo-garcilaso-vs-sport-huancayo-id336718" class="mx-action-btn live-btn">
3421                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3422                                </a>
3423                        </div>
3424                    </div>
3425            </div>
3426        </div>
3427        <div class="lg-section" data-search="Liga MX Mexico">
3428            <div class="lg-header">
3429                <div class="lg-header-left">
3430                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3431                        <svg class="icon"><use href="#icon-star"/></svg>
3432                    </button>
3433                        <span class="lg-country-name">Mexico:</span>
3434                    <img src="/images/football/leagues/262.webp"
3435                         alt="Liga MX" class="lg-logo" loading="lazy"
3436                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3437                    <span class="lg-name">Liga MX</span>
3438                </div>
3439                <div class="lg-header-right">
3440                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3441                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3442                    </button>
3443                </div>
3444            </div>
3445
3446            <div class="lg-matches">
3447                    <div class="mx-row is-live " data-search="Liga MX Mexico Puebla Leon Phan Pepsi Hawkeye">
3448                        <div class="mx-left">
3449                            <button type="button" class="mx-fav-btn favorite-btn"
3450                                    data-match-id="336719"
3451                                    data-auth="false"
3452                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(336719, this);"
3453                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3454                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3455                            </button>
3456                            <div class="mx-status">
3457                                    <span class="mx-status-badge live">2H</span>
3458                                        <span class="mx-minute">64<span class="minute-tick">'</span></span>
3459                            </div>
3460                        </div>
3461
3462                        <div class="mx-center">
3463                            <a href="/puebla-vs-leon-id336719/phan-pepsi" class="mx-teams-link">
3464                                <div class="mx-team-row">
3465                                    <img src="/images/football/teams/2291.webp"
3466                                         alt="Puebla" class="mx-team-logo" loading="lazy"
3467                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3468                                    <span class="mx-team-name">Puebla</span>
3469                                    <span class="mx-score live">
34700                                    </span>
3471                                </div>
3472                                <div class="mx-team-row">
3473                                    <img src="/images/football/teams/2289.webp"
3474                                         alt="Leon" class="mx-team-logo" loading="lazy"
3475                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3476                                    <span class="mx-team-name">Leon</span>
3477                                    <span class="mx-score live">
34781                                    </span>
3479                                </div>
3480                            </a>
3481                        </div>
3482
3483                        <div class="mx-right action-column streamer-col">
3484                                <a href="/puebla-vs-leon-id336719/phan-pepsi" class="mx-action-btn live-btn">
3485                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3486                                </a>
3487                                    <div class="dropdown mx-streamer-dropdown">
3488                                        <button type="button"
3489                                                class="mx-streamer-toggle mx-streamer-toggle-live"
3490                                                data-bs-toggle="dropdown"
3491                                                data-bs-display="static"
3492                                                aria-expanded="false"
3493                                                aria-label="Streamer">
3494                                            <svg class="icon icon-mic"><use href="#icon-mic"/></svg>
3495                                            <svg class="icon icon-caret"><use href="#icon-chevron-down"/></svg>
3496                                        </button>
3497                                        <ul class="dropdown-menu dropdown-menu-end mx-streamer-menu  mx-streamer-menu-live">
3498                                                <li>
3499                                                    <a class="dropdown-item mx-streamer-menu
3499-item" href="/streamer/12/phan-pepsi" title="BLV PHAN PEPSI">
3500                                                        <svg class="icon icon-mic"><use href="#icon-mic"/></svg>
3501                                                        <span>BLV PHAN PEPSI</span>
3502                                                    </a>
3503                                                </li>
3504                                                <li>
3505                                                    <a class="dropdown-item mx-streamer-menu-item" href="/streamer/79/hawkeye" title="BLV HAWKEYE">
3506                                                        <svg class="icon icon-mic"><use href="#icon-mic"/></svg>
3507                                                        <span>BLV HAWKEYE</span>
3508                                                    </a>
3509                                                </li>
3510                                        </ul>
3511                                    </div>
3512                        </div>
3513                    </div>
3514            </div>
3515        </div>
3516        <div class="lg-section" data-search="Liga de Expansi&#xF3;n MX Mexico">
3517            <div class="lg-header">
3518                <div class="lg-header-left">
3519                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3520                        <svg class="icon"><use href="#icon-star"/></svg>
3521                    </button>
3522                        <span class="lg-country-name">Mexico:</span>
3523                    <img src="/images/football/leagues/263.webp"
3524                         alt="Liga de Expansi&#xF3;n MX" class="lg-logo" loading="lazy"
3525                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3526                    <span class="lg-name">Liga de Expansi&#xF3;n MX</span>
3527                </div>
3528                <div class="lg-header-right">
3529                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3530                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3531                    </button>
3532                </div>
3533            </div>
3534
3535            <div class="lg-matches">
3536                    <div class="mx-row is-live " data-search="Liga de Expansi&#xF3;n MX Mexico Tepatitl&#xE1;n Monarcas">
3537                        <div class="mx-left">
3538                            <button type="button" class="mx-fav-btn favorite-btn"
3539                                    data-match-id="336721"
3540                                    data-auth="false"
3541                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(336721, this);"
3542                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3543                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3544                            </button>
3545                            <div class="mx-status">
3546                                    <span class="mx-status-badge live">2H</span>
3547                                        <span class="mx-minute">55<span class="minute-tick">'</span></span>
3548                            </div>
3549                        </div>
3550
3551                        <div class="mx-center">
3552                            <a href="/tepatitlan-vs-monarcas-id336721" class="mx-teams-link">
3553                                <div class="mx-team-row">
3554                                    <img src="/images/football/teams/14279.webp"
3555                                         alt="Tepatitl&#xE1;n" class="mx-team-logo" loading="lazy"
3556                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3557                                    <span class="mx-team-name">Tepatitl&#xE1;n</span>
3558                                    <span class="mx-score live">
35591                                    </span>
3560                                </div>
3561                                <div class="mx-team-row">
3562                                    <img src="/images/football/teams/2284.webp"
3563                                         alt="Monarcas" class="mx-team-logo" loading="lazy"
3564                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3565                                    <span class="mx-team-name">Monarcas</span>
3566                                    <span class="mx-score live">
35670                                    </span>
3568                                </div>
3569                            </a>
3570                        </div>
3571
3572                        <div class="mx-right action-column streamer-col">
3573                                <a href="/tepatitlan-vs-monarcas-id336721" class="mx-action-btn live-btn">
3574                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3575                                </a>
3576                        </div>
3577                    </div>
3578            </div>
3579        </div>
3580        <div class="lg-section" data-search="Primera A Colombia">
3581            <div class="lg-header">
3582                <div class="lg-header-left">
3583                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3584                        <svg class="icon"><use href="#icon-star"/></svg>
3585                    </button>
3586                        <span class="lg-country-name">Colombia:</span>
3587                    <img src="/images/football/leagues/239.webp"
3588                         alt="Primera A" class="lg-logo" loading="lazy"
3589                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3590                    <span class="lg-name">Primera A</span>
3591                </div>
3592                <div class="lg-header-right">
3593                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3594                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3595                    </button>
3596                </div>
3597            </div>
3598
3599            <div class="lg-matches">
3600                    <div class="mx-row is-live " data-search="Primera A Colombia Once Caldas Llaneros">
3601                        <div class="mx-left">
3602                            <button type="button" class="mx-fav-btn favorite-btn"
3603                                    data-match-id="338177"
3604                                    data-auth="false"
3605                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(338177, this);"
3606                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3607                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3608                            </button>
3609                            <div class="mx-status">
3610                                    <span class="mx-status-badge live">2H</span>
3611                                        <span class="mx-minute">54<span class="minute-tick">'</span></span>
3612                            </div>
3613                        </div>
3614
3615                        <div class="mx-center">
3616                            <a href="/once-caldas-vs-llaneros-id338177" class="mx-teams-link">
3617                                <div class="mx-team-row">
3618                                    <img src="/images/football/teams/1136.webp"
3619                                         alt="Once Caldas" class="mx-team-logo" loading="lazy"
3620                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3621                                    <span class="mx-team-name">Once Caldas</span>
3622                                    <span class="mx-score live">
36230                                    </span>
3624                                </div>
3625                                <div class="mx-team-row">
3626                                    <img src="/images/football/teams/1464.webp"
3627                                         alt="Llaneros" class="mx-team-logo" loading="lazy"
3628                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3629                                    <span class="mx-team-name">Llaneros</span>
3630                                    <span class="mx-score live">
36310                                    </span>
3632                                </div>
3633                            </a>
3634                        </div>
3635
3636                        <div class="mx-right action-column streamer-col">
3637                                <a href="/once-caldas-vs-llaneros-id338177" class="mx-action-btn live-btn">
3638                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3639                                </a>
3640                        </div>
3641                    </div>
3642            </div>
3643        </div>
3644        <div class="lg-section" data-search="Friendlies Women World">
3645            <div class="lg-header">
3646                <div class="lg-header-left">
3647                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3648                        <svg class="icon"><use href="#icon-star"/></svg>
3649                    </button>
3650                        <span class="lg-country-name">World:</span>
3651                    <img src="/images/football/leagues/666.webp"
3652                         alt="Friendlies Women" class="lg-logo" loading="lazy"
3653                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3654                    <span class="lg-name">Friendlies Women</span>
3655                </div>
3656                <div class="lg-header-right">
3657                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3658                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3659                    </button>
3660                </div>
3661            </div>
3662
3663            <div class="lg-matches">
3664                    <div class="mx-row is-live " data-search="Friendlies Women World Paraguay W El Salvador W">
3665                        <div class="mx-left">
3666                            <button type="button" class="mx-fav-btn favorite-btn"
3667                                    data-match-id="336727"
3668                                    data-auth="false"
3669                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(336727, this);"
3670                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3671                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3672                            </button>
3673                            <div class="mx-status">
3674                                    <span class="mx-status-badge live">1H</span>
3675                                        <span class="mx-minute">45<span class="minute-tick">'</span></span>
3676                            </div>
3677                        </div>
3678
3679                        <div class="mx-center">
3680                            <a href="/paraguay-w-vs-el-salvador-w-id336727" class="mx-teams-link">
3681                                <div class="mx-team-row">
3682                                    <img src="/images/football/teams/16941.webp"
3683                                         alt="Paraguay W" class="mx-team-logo" loading="lazy"
3684                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3685                                    <span class="mx-team-name">Paraguay W</span>
3686                                    <span class="mx-score live">
36871                                    </span>
3688                                </div>
3689                                <div class="mx-team-row">
3690                                    <img src="/images/football/teams/16927.webp"
3691                                         alt="El Salvador W" class="mx-team-logo" loading="lazy"
3692                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3693                                    <span class="mx-team-name">El Salvador W</span>
3694                                    <span class="mx-score live">
36952                                    </span>
3696                                </div>
3697                            </a>
3698                        </div>
3699
3700                        <div class="mx-right action-column streamer-col">
3701                                <a href="/paraguay-w-vs-el-salvador-w-id336727" class="mx-action-btn live-btn">
3702                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3703                                </a>
3704                        </div>
3705                    </div>
3706            </div>
3707        </div>
3708        <div class="lg-section" data-search="Primera Premier Mexico">
3709            <div class="lg-header">
3710                <div class="lg-header-left">
3711                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3712                        <svg class="icon"><use href="#icon-star"/></svg>
3713                    </button>
3714                        <span class="lg-country-name">Mexico:</span>
3715                    <img src="https://media.api-sports.io/football/leagues/1242.png"
3716                         alt="Primera Premier" class="lg-logo" loading="lazy"
3717                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3718                    <span class="lg-name">Primera Premier</span>
3719                </div>
3720                <div class="lg-header-right">
3721                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3722                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3723                    </button>
3724                </div>
3725            </div>
3726
3727            <div class="lg-matches">
3728                    <div class="mx-row is-live " data-search="Primera Premier Mexico Reboceros La Piedad Los Cabos United">
3729                        <div class="mx-left">
3730                            <button type="button" class="mx-fav-btn favorite-btn"
3731                                    data-match-id="336722"
3732                                    data-auth="false"
3733                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(336722, this);"
3734                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3735                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3736                            </button>
3737                            <div class="mx-status">
3738                                    <span class="mx-status-badge live">1H</span>
3739                                        <span class="mx-minute">16<span class="minute-tick">'</span></span>
3740                            </div>
3741                        </div>
3742
3743                        <div class="mx-center">
3744                            <a href="/reboceros-la-piedad-vs-los-cabos-united-id336722" class="mx-teams-link">
3745                                <div class="mx-team-row">
3746                                    <img src="/images/football/teams/15937.webp"
3747                                         alt="Reboceros La Piedad" class="mx-team-logo" loading="lazy"
3748                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3749                                    <span class="mx-team-name">Reboceros La Piedad</span>
3750                                    <span class="mx-score live">
37510                                    </span>
3752                                </div>
3753                                <div class="mx-team-row">
3754                                    <img src="/images/football/teams/19908.webp"
3755                                         alt="Los Cabos United" class="mx-team-logo" loading="lazy"
3756                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3757                                    <span class="mx-team-name">Los Cabos United</span>
3758                                    <span class="mx-score live">
37590                                    </span>
3760                                </div>
3761                            </a>
3762                        </div>
3763
3764                        <div class="mx-right action-column streamer-col">
3765                                <a href="/reboceros-la-piedad-vs-los-cabos-united-id336722" class="mx-action-btn live-btn">
3766                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3767                                </a>
3768                        </div>
3769                    </div>
3770            </div>
3771        </div>
3772        <div class="lg-section" data-search="Second League - Group 3 Russia">
3773            <div class="lg-header">
3774                <div class="lg-header-left">
3775                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3776                        <svg class="icon"><use href="#icon-star"/></svg>
3777                    </button>
3778                        <span class="lg-country-name">Russia:</span>
3779                    <img src="/images/football/leagues/650.webp"
3780                         alt="Second League - Group 3" class="lg-logo" loading="lazy"
3781                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3782                    <span class="lg-name">Second League - Group 3</span>
3783                </div>
3784                <div class="lg-header-right">
3785                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3786                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3787                    </button>
3788                </div>
3789            </div>
3790
3791            <div class="lg-matches">
3792                    <div class="mx-row is-live " data-search="Second League - Group 3 Russia SKA Khabarovsk II Kvant">
3793                        <div class="mx-left">
3794                            <button type="button" class="mx-fav-btn favorite-btn"
3795                                    data-match-id="336728"
3796                                    data-auth="false"
3797                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(336728, this);"
3798                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3799                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3800                            </button>
3801                            <div class="mx-status">
3802                                    <span class="mx-status-badge live">1H</span>
3803                                        <span class="mx-minute">18<span class="minute-tick">'</span></span>
3804                            </div>
3805                        </div>
3806
3807                        <div class="mx-center">
3808                            <a href="/ska-khabarovsk-ii-vs-kvant-id336728" class="mx-teams-link">
3809                                <div class="mx-team-row">
3810                                    <img src="/images/football/teams/17721.webp"
3811                                         alt="SKA Khabarovsk II" class="mx-team-logo" loading="lazy"
3812                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3813                                    <span class="mx-team-name">SKA Khabarovsk II</span>
3814                                    <span class="mx-score live">
38150                                    </span>
3816                                </div>
3817                                <div class="mx-team-row">
3818                                    <img src="/images/football/teams/6807.webp"
3819                                         alt="Kvant" class="mx-team-logo" loading="lazy"
3820                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3821                                    <span class="mx-team-name">Kvant</span>
3822                                    <span class="mx-score live">
38230                                    </span>
3824                                </div>
3825                            </a>
3826                        </div>
3827
3828                        <div class="mx-right action-column streamer-col">
3829                                <a href="/ska-khabarovsk-ii-vs-kvant-id336728" class="mx-action-btn live-btn">
3830                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3831                                </a>
3832                        </div>
3833                    </div>
3834            </div>
3835        </div>
3836        <div class="lg-section" data-search="Liga de Ascenso Costa-Rica">
3837            <div class="lg-header">
3838                <div class="lg-header-left">
3839                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3840                        <svg class="icon"><use href="#icon-star"/></svg>
3841                    </button>
3842                        <span class="lg-country-name">Costa-Rica:</span>
3843                    <img src="/images/football/leagues/163.webp"
3844                         alt="Liga de Ascenso" class="lg-logo" loading="lazy"
3845                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3846                    <span class="lg-name">Liga de Ascenso</span>
3847                </div>
3848                <div class="lg-header-right">
3849                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3850                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3851                    </button>
3852                </div>
3853            </div>
3854
3855            <div class="lg-matches">
3856                    <div class="mx-row is-live " data-search="Liga de Ascenso Costa-Rica AD Carmelita Guadalupe FC">
3857                        <div class="mx-left">
3858                            <button type="button" class="mx-fav-btn favorite-btn"
3859                                    data-match-id="339529"
3860                                    data-auth="false"
3861                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(339529, this);"
3862                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3863                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3864                            </button>
3865                            <div class="mx-status">
3866                                    <span class="mx-status-badge live">1H</span>
3867                                        <span class="mx-minute">21<span class="minute-tick">'</span></span>
3868                            </div>
3869                        </div>
3870
3871                        <div class="mx-center">
3872                            <a href="/ad-carmelita-vs-guadalupe-fc-id339529" class="mx-teams-link">
3873                                <div class="mx-team-row">
3874                                    <img src="/images/football/teams/814.webp"
3875                                         alt="AD Carmelita" class="mx-team-logo" loading="lazy"
3876                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3877                                    <span class="mx-team-name">AD Carmelita</span>
3878                                    <span class="mx-score live">
38790                                    </span>
3880                                </div>
3881                                <div class="mx-team-row">
3882                                    <img src="/images/football/teams/821.webp"
3883                                         alt="Guadalupe FC" class="mx-team-logo" loading="lazy"
3884                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3885                                    <span class="mx-team-name">Guadalupe FC</span>
3886                                    <span class="mx-score live">
38871                                    </span>
3888                                </div>
3889                            </a>
3890                        </div>
3891
3892                        <div class="mx-right action-column streamer-col">
3893                                <a href="/ad-carmelita-vs-guadalupe-fc-id339529" class="mx-action-btn live-btn">
3894                                    <svg class="icon"><use href="#icon-live"/></svg> LIVE
3895                                </a>
3896                        </div>
3897                    </div>
3898            </div>
3899        </div>
3900        <div class="lg-section" data-search="Super Cup Austria">
3901            <div class="lg-header">
3902                <div class="lg-header-left">
3903                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3904                        <svg class="icon"><use href="#icon-star"/></svg>
3905                    </button>
3906                        <span class="lg-country-name">Austria:</span>
3907                    <img src="https://media.api-sports.io/basketball/leagues/190.png"
3908                         alt="Super Cup" class="lg-logo" loading="lazy"
3909                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3910                    <span class="lg-name">Super Cup</span>
3911                </div>
3912                <div class="lg-header-right">
3913                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3914                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3915                    </button>
3916                </div>
3917            </div>
3918
3919            <div class="lg-matches">
3920                    <div class="mx-row  " data-search="Super Cup Austria St. Polten Traiskirchen Lions">
3921                        <div class="mx-left">
3922                            <button type="button" class="mx-fav-btn favorite-btn"
3923                                    data-match-id="335872"
3924                                    data-auth="false"
3925                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335872, this);"
3926                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3927                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3928                            </button>
3929                            <div class="mx-status">
3930                                    <span class="mx-time">00:00</span>
3931                            </div>
3932                        </div>
3933
3934                        <div class="mx-center">
3935                            <a href="/st-polten-vs-traiskirchen-lions-id335872" class="mx-teams-link">
3936                                <div class="mx-team-row">
3937                                    <img src="/images/basketball/teams/1406.webp"
3938                                         alt="St. Polten" class="mx-team-logo" loading="lazy"
3939                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3940                                    <span class="mx-team-name">St. Polten</span>
3941                                    <span class="mx-score ">
3942                                    </span>
3943                                </div>
3944                                <div class="mx-team-row">
3945                                    <img src="/images/basketball/teams/2520.webp"
3946                                         alt="Traiskirchen Lions" class="mx-team-logo" loading="lazy"
3947                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
3948                                    <span class="mx-team-name">Traiskirchen Lions</span>
3949                                    <span class="mx-score ">
3950                                    </span>
3951                                </div>
3952                            </a>
3953                        </div>
3954
3955                        <div class="mx-right ">
3956                                <a href="/st-polten-vs-traiskirchen-lions-id335872" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
3957                        </div>
3958                    </div>
3959            </div>
3960        </div>
3961        <div class="lg-section" data-search="Liga Nova KBM Slovenia">
3962            <div class="lg-header">
3963                <div class="lg-header-left">
3964                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
3965                        <svg class="icon"><use href="#icon-star"/></svg>
3966                    </button>
3967                        <span class="lg-country-name">Slovenia:</span>
3968                    <img src="/images/basketball/leagues/89.webp"
3969                         alt="Liga Nova KBM" class="lg-logo" loading="lazy"
3970                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
3971                    <span class="lg-name">Liga Nova KBM</span>
3972                </div>
3973                <div class="lg-header-right">
3974                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
3975                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
3976                    </button>
3977                </div>
3978            </div>
3979
3980            <div class="lg-matches">
3981                    <div class="mx-row  " data-search="Liga Nova KBM Slovenia Helios Domzale KK Triglav Kranj">
3982                        <div class="mx-left">
3983                            <button type="button" class="mx-fav-btn favorite-btn"
3984                                    data-match-id="335874"
3985                                    data-auth="false"
3986                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335874, this);"
3987                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
3988                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
3989                            </button>
3990                            <div class="mx-status">
3991                                    <span class="mx-time">00:00</span>
3992                            </div>
3993                        </div>
3994
3995                        <div class="mx-center">
3996                            <a href="/helios-domzale-vs-kk-triglav-kranj-id335874" class="mx-teams-link">
3997                                <div class="mx-team-row">
3998                                    <img src="/images/basketball/teams/1093.webp"
3999                                         alt="Helios Domzale" class="mx-team-logo" loading="lazy"
4000                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4001                                    <span class="mx-team-name">Helios Domzale</span>
4002                                    <span class="mx-score ">
4003                                    </span>
4004                                </div>
4005                                <div class="mx-team-row">
4006                                    <img src="/images/basketball/teams/2261.webp"
4007                                         alt="KK Triglav Kranj" class="mx-team-logo" loading="lazy"
4008                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4009                                    <span class="mx-team-name">KK Triglav Kranj</span>
4010                                    <span class="mx-score ">
4011                                    </span>
4012                                </div>
4013                            </a>
4014                        </div>
4015
4016                        <div class="mx-right ">
4017                                <a href="/helios-domzale-vs-kk-triglav-kranj-id335874" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
4018                        </div>
4019                    </div>
4020            </div>
4021        </div>
4022        <div class="lg-section" data-search="Liga 3 Georgia">
4023            <div class="lg-header">
4024                <div class="lg-header-left">
4025                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
4026                        <svg class="icon"><use href="#icon-star"/></svg>
4027                    </button>
4028                        <span class="lg-country-name">Georgia:</span>
4029                    <img src="/images/football/leagues/1104.webp"
4030                         alt="Liga 3" class="lg-logo" loading="lazy"
4031                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
4032                    <span class="lg-name">Liga 3</span>
4033                </div>
4034                <div class="lg-header-right">
4035                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
4036                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
4037                    </button>
4038                </div>
4039            </div>
4040
4041            <div class="lg-matches">
4042                    <div class="mx-row  " data-search="Liga 3 Georgia Varketili Dinamo Tbilisi II">
4043                        <div class="mx-left">
4044                            <button type="button" class="mx-fav-btn favorite-btn"
4045                                    data-match-id="336145"
4046                                    data-auth="false"
4047                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(336145, this);"
4048                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
4049                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
4050                            </button>
4051                            <div class="mx-status">
4052                                    <span class="mx-time">00:00</span>
4053                            </div>
4054                        </div>
4055
4056                        <div class="mx-center">
4057                            <a href="/varketili-vs-dinamo-tbilisi-ii-id336145" class="mx-teams-link">
4058                                <div class="mx-team-row">
4059                                    <img src="/images/football/teams/14866.webp"
4060                                         alt="Varketili" class="mx-team-logo" loading="lazy"
4061                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4062                                    <span class="mx-team-name">Varketili</span>
4063                                    <span class="mx-score ">
4064                                    </span>
4065                                </div>
4066                                <div class="mx-team-row">
4067                                    <img src="/images/football/teams/13865.webp"
4068                                         alt="Dinamo Tbilisi II" class="mx-team-logo" loading="lazy"
4069                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4070                                    <span class="mx-team-name">Dinamo Tbilisi II</span>
4071                                    <span class="mx-score ">
4072                                    </span>
4073                                </div>
4074                            </a>
4075                        </div>
4076
4077                        <div class="mx-right ">
4078                                <a href="/varketili-vs-dinamo-tbilisi-ii-id336145" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
4079                        </div>
4080                    </div>
4081            </div>
4082        </div>
4083        <div class="lg-section" data-search="Basketligan W Sweden">
4084            <div class="lg-header">
4085                <div class="lg-header-left">
4086                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
4087                        <svg class="icon"><use href="#icon-star"/></svg>
4088                    </button>
4089                        <span class="lg-country-name">Sweden:</span>
4090                    <img src="/images/basketball/leagues/97.webp"
4091                         alt="Basketligan W" class="lg-logo" loading="lazy"
4092                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
4093                    <span class="lg-name">Basketligan W</span>
4094                </div>
4095                <div class="lg-header-right">
4096                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
4097                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
4098                    </button>
4099                </div>
4100            </div>
4101
4102            <div class="lg-matches">
4103                    <div class="mx-row  " data-search="Basketligan W Sweden Sodertalje W AIK Basket W">
4104                        <div class="mx-left">
4105                            <button type="button" class="mx-fav-btn favorite-btn"
4106                                    data-match-id="336349"
4107                                    data-auth="false"
4108                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(336349, this);"
4109                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
4110                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
4111                            </button>
4112                            <div class="mx-status">
4113                                    <span class="mx-time">00:00</span>
4114                            </div>
4115                        </div>
4116
4117                        <div class="mx-center">
4118                            <a href="/sodertalje-w-vs-aik-basket-w-id336349" class="mx-teams-link">
4119                                <div class="mx-team-row">
4120                                    <img src="/images/basketball/teams/1213.webp"
4121                                         alt="Sodertalje W" class="mx-team-logo" loading="lazy"
4122                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4123                                    <span class="mx-team-name">Sodertalje W</span>
4124                                    <span class="mx-score ">
4125                                    </span>
4126                                </div>
4127                                <div class="mx-team-row">
4128                                    <img src="/images/basketball/teams/1174.webp"
4129                                         alt="AIK Basket W" class="mx-team-logo" loading="lazy"
4130                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4131                                    <span class="mx-team-name">AIK Basket W</span>
4132                                    <span class="mx-score ">
4133                                    </span>
4134                                </div>
4135                            </a>
4136                        </div>
4137
4138                        <div class="mx-right ">
4139                                <a href="/sodertalje-w-vs-aik-basket-w-id336349" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
4140                        </div>
4141                    </div>
4142            </div>
4143        </div>
4144        <div class="lg-section" data-search="Pro A Germany">
4145            <div class="lg-header">
4146                <div class="lg-header-left">
4147                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
4148                        <svg class="icon"><use href="#icon-star"/></svg>
4149                    </button>
4150                        <span class="lg-country-name">Germany:</span>
4151                    <img src="/images/basketball/leagues/42.webp"
4152                         alt="Pro A" class="lg-logo" loading="lazy"
4153                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
4154                    <span class="lg-name">Pro A</span>
4155                </div>
4156                <div class="lg-header-right">
4157                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
4158                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
4159                    </button>
4160                </div>
4161            </div>
4162
4163            <div class="lg-matches">
4164                    <div class="mx-row  " data-search="Pro A Germany Crailsheim Merlins Giessen">
4165                        <div class="mx-left">
4166                            <button type="button" class="mx-fav-btn favorite-btn"
4167                                    data-match-id="335883"
4168                                    data-auth="false"
4169                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335883, this);"
4170                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
4171                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
4172                            </button>
4173                            <div class="mx-status">
4174                                    <span class="mx-time">01:00</span>
4175                            </div>
4176                        </div>
4177
4178                        <div class="mx-center">
4179                            <a href="/crailsheim-merlins-vs-giessen-id335883" class="mx-teams-link">
4180                                <div class="mx-team-row">
4181                                    <img src="/images/basketball/teams/525.webp"
4182                                         alt="Crailsheim Merlins" class="mx-team-logo" loading="lazy"
4183                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4184                                    <span class="mx-team-name">Crailsheim Merlins</span>
4185                                    <span class="mx-score ">
4186                                    </span>
4187                                </div>
4188                                <div class="mx-team-row">
4189                                    <img src="/images/basketball/teams/527.webp"
4190                                         alt="Giessen" class="mx-team-logo" loading="lazy"
4191                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4192                                    <span class="mx-team-name">Giessen</span>
4193                                    <span class="mx-score ">
4194                                    </span>
4195                                </div>
4196                            </a>
4197                        </div>
4198
4199                        <div class="mx-right ">
4200                                <a href="/crailsheim-merlins-vs-giessen-id335883" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
4201                        </div>
4202                    </div>
4203            </div>
4204        </div>
4205        <div class="lg-section" data-search="BBL Germany">
4206            <div class="lg-header">
4207                <div class="lg-header-left">
4208                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
4209                        <svg class="icon"><use href="#icon-star"/></svg>
4210                    </button>
4211                        <span class="lg-country-name">Germany:</span>
4212                    <img src="/images/basketball/leagues/40.webp"
4213                         alt="BBL" class="lg-logo" loading="lazy"
4214                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
4215                    <span class="lg-name">BBL</span>
4216                </div>
4217                <div class="lg-header-right">
4218                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
4219                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
4220                    </button>
4221                </div>
4222            </div>
4223
4224            <div class="lg-matches">
4225                    <div class="mx-row  " data-search="BBL Germany Bonn Jena">
4226                        <div class="mx-left">
4227                            <button type="button" class="mx-fav-btn favorite-btn"
4228                                    data-match-id="335891"
4229                                    data-auth="false"
4230                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335891, this);"
4231                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
4232                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
4233                            </button>
4234                            <div class="mx-status">
4235                                    <span class="mx-time">01:00</span>
4236                            </div>
4237                        </div>
4238
4239                        <div class="mx-center">
4240                            <a href="/bonn-vs-jena-id335891" class="mx-teams-link">
4241                                <div class="mx-team-row">
4242                                    <img src="/images/basketball/teams/524.webp"
4243                                         alt="Bonn" class="mx-team-logo" loading="lazy"
4244                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4245                                    <span class="mx-team-name">Bonn</span>
4246                                    <span class="mx-score ">
4247                                    </span>
4248                                </div>
4249                                <div class="mx-team-row">
4250                                    <img src="/images/basketball/teams/553.webp"
4251                                         alt="Jena" class="mx-team-logo" loading="lazy"
4252                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4253                                    <span class="mx-team-name">Jena</span>
4254                                    <span class="mx-score ">
4255                                    </span>
4256                                </div>
4257                            </a>
4258                        </div>
4259
4260                        <div class="mx-right ">
4261                                <a href="/bonn-vs-jena-id335891" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
4262                        </div>
4263                    </div>
4264            </div>
4265        </div>
4266        <div class="lg-section" data-search="BNXT League Europe">
4267            <div class="lg-header">
4268                <div class="lg-header-left">
4269                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
4270                        <svg class="icon"><use href="#icon-star"/></svg>
4271                    </button>
4272                        <span class="lg-country-name">Europe:</span>
4273                    <img src="/images/basketball/leagues/368.webp"
4274                         alt="BNXT League" class="lg-logo" loading="lazy"
4275                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
4276                    <span class="lg-name">BNXT League</span>
4277                </div>
4278                <div class="lg-header-right">
4279                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
4280                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
4281                    </button>
4282                </div>
4283            </div>
4284
4285            <div class="lg-matches">
4286                    <div class="mx-row  " data-search="BNXT League Europe Den Bosch Rotterdam">
4287                        <div class="mx-left">
4288                            <button type="button" class="mx-fav-btn favorite-btn"
4289                                    data-match-id="335894"
4290                                    data-auth="false"
4291                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335894, this);"
4292                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
4293                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
4294                            </button>
4295                            <div class="mx-status">
4296                                    <span class="mx-time">01:00</span>
4297                            </div>
4298                        </div>
4299
4300                        <div class="mx-center">
4301                            <a href="/den-bosch-vs-rotterdam-id335894" class="mx-teams-link">
4302                                <div class="mx-team-row">
4303                                    <img src="/images/basketball/teams/846.webp"
4304                                         alt="Den Bosch" class="mx-team-logo" loading="lazy"
4305                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4306                                    <span class="mx-team-name">Den Bosch</span>
4307                                    <span class="mx-score ">
4308                                    </span>
4309                                </div>
4310                                <div class="mx-team-row">
4311                                    <img src="/images/basketball/teams/851.webp"
4312                                         alt="Rotterdam" class="mx-team-logo" loading="lazy"
4313                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4314                                    <span class="mx-team-name">Rotterdam</span>
4315                                    <span class="mx-score ">
4316                                    </span>
4317                                </div>
4318                            </a>
4319                        </div>
4320
4321                        <div class="mx-right ">
4322                                <a href="/den-bosch-vs-rotterdam-id335894" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
4323                        </div>
4324                    </div>
4325            </div>
4326        </div>
4327        <div class="lg-section" data-search="LNB France">
4328            <div class="lg-header">
4329                <div class="lg-header-left">
4330                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
4331                        <svg class="icon"><use href="#icon-star"/></svg>
4332                    </button>
4333                        <span class="lg-country-name">France:</span>
4334                    <img src="/images/basketball/leagues/2.webp"
4335                         alt="LNB" class="lg-logo" loading="lazy"
4336                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
4337                    <span class="lg-name">LNB</span>
4338                </div>
4339                <div class="lg-header-right">
4340                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
4341                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
4342                    </button>
4343                </div>
4344            </div>
4345
4346            <div class="lg-matches">
4347                    <div class="mx-row  " data-search="LNB France Dijon Limoges">
4348                        <div class="mx-left">
4349                            <button type="button" class="mx-fav-btn favorite-btn"
4350                                    data-match-id="335896"
4351                                    data-auth="false"
4352                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335896, this);"
4353                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
4354                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
4355                            </button>
4356                            <div class="mx-status">
4357                                    <span class="mx-time">01:00</span>
4358                            </div>
4359                        </div>
4360
4361                        <div class="mx-center">
4362                            <a href="/dijon-vs-limoges-id335896" class="mx-teams-link">
4363                                <div class="mx-team-row">
4364                                    <img src="/images/basketball/teams/10.webp"
4365                                         alt="Dijon" class="mx-team-logo" loading="lazy"
4366                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4367                                    <span class="mx-team-name">Dijon</span>
4368                                    <span class="mx-score ">
4369                                    </span>
4370                                </div>
4371                                <div class="mx-team-row">
4372                                    <img src="/images/basketball/teams/27.webp"
4373                                         alt="Limoges" class="mx-team-logo" loading="lazy"
4374                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4375                                    <span class="mx-team-name">Limoges</span>
4376                                    <span class="mx-score ">
4377                                    </span>
4378                                </div>
4379                            </a>
4380                        </div>
4381
4382                        <div class="mx-right ">
4383                                <a href="/dijon-vs-limoges-id335896" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
4384                        </div>
4385                    </div>
4386            </div>
4387        </div>
4388        <div class="lg-section" data-search="Zweite Liga Austria">
4389            <div class="lg-header">
4390                <div class="lg-header-left">
4391                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
4392                        <svg class="icon"><use href="#icon-star"/></svg>
4393                    </button>
4394                        <span class="lg-country-name">Austria:</span>
4395                    <img src="/images/basketball/leagues/7.webp"
4396                         alt="Zweite Liga" class="lg-logo" loading="lazy"
4397                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
4398                    <span class="lg-name">Zweite Liga</span>
4399                </div>
4400                <div class="lg-header-right">
4401                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
4402                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
4403                    </button>
4404                </div>
4405            </div>
4406
4407            <div class="lg-matches">
4408                    <div class="mx-row  " data-search="Zweite Liga Austr
4408ia Radenthein Celovec">
4409                        <div class="mx-left">
4410                            <button type="button" class="mx-fav-btn favorite-btn"
4411                                    data-match-id="336350"
4412                                    data-auth="false"
4413                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(336350, this);"
4414                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
4415                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
4416                            </button>
4417                            <div class="mx-status">
4418                                    <span class="mx-time">01:00</span>
4419                            </div>
4420                        </div>
4421
4422                        <div class="mx-center">
4423                            <a href="/radenthein-vs-celovec-id336350" class="mx-teams-link">
4424                                <div class="mx-team-row">
4425                                    <img src="https://media.api-sports.io/basketball/teams/2530.png"
4426                                         alt="Radenthein" class="mx-team-logo" loading="lazy"
4427                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4428                                    <span class="mx-team-name">Radenthein</span>
4429                                    <span class="mx-score ">
4430                                    </span>
4431                                </div>
4432                                <div class="mx-team-row">
4433                                    <img src="/images/basketball/teams/90.webp"
4434                                         alt="Celovec" class="mx-team-logo" loading="lazy"
4435                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4436                                    <span class="mx-team-name">Celovec</span>
4437                                    <span class="mx-score ">
4438                                    </span>
4439                                </div>
4440                            </a>
4441                        </div>
4442
4443                        <div class="mx-right ">
4444                                <a href="/radenthein-vs-celovec-id336350" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
4445                        </div>
4446                    </div>
4447            </div>
4448        </div>
4449        <div class="lg-section" data-search="ABA League Europe">
4450            <div class="lg-header">
4451                <div class="lg-header-left">
4452                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
4453                        <svg class="icon"><use href="#icon-star"/></svg>
4454                    </button>
4455                        <span class="lg-country-name">Europe:</span>
4456                    <img src="/images/basketball/leagues/198.webp"
4457                         alt="ABA League" class="lg-logo" loading="lazy"
4458                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
4459                    <span class="lg-name">ABA League</span>
4460                </div>
4461                <div class="lg-header-right">
4462                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
4463                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
4464                    </button>
4465                </div>
4466            </div>
4467
4468            <div class="lg-matches">
4469                    <div class="mx-row  " data-search="ABA League Europe Cibona Slovan Bratislava">
4470                        <div class="mx-left">
4471                            <button type="button" class="mx-fav-btn favorite-btn"
4472                                    data-match-id="338253"
4473                                    data-auth="false"
4474                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(338253, this);"
4475                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
4476                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
4477                            </button>
4478                            <div class="mx-status">
4479                                    <span class="mx-time">01:00</span>
4480                            </div>
4481                        </div>
4482
4483                        <div class="mx-center">
4484                            <a href="/cibona-vs-slovan-bratislava-id338253" class="mx-teams-link">
4485                                <div class="mx-team-row">
4486                                    <img src="/images/basketball/teams/410.webp"
4487                                         alt="Cibona" class="mx-team-logo" loading="lazy"
4488                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4489                                    <span class="mx-team-name">Cibona</span>
4490                                    <span class="mx-score ">
4491                                    </span>
4492                                </div>
4493                                <div class="mx-team-row">
4494                                    <img src="/images/basketball/teams/7438.webp"
4495                                         alt="Slovan Bratislava" class="mx-team-logo" loading="lazy"
4496                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4497                                    <span class="mx-team-name">Slovan Bratislava</span>
4498                                    <span class="mx-score ">
4499                                    </span>
4500                                </div>
4501                            </a>
4502                        </div>
4503
4504                        <div class="mx-right ">
4505                                <a href="/cibona-vs-slovan-bratislava-id338253" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
4506                        </div>
4507                    </div>
4508            </div>
4509        </div>
4510        <div class="lg-section" data-search="Energa Basket Liga Poland">
4511            <div class="lg-header">
4512                <div class="lg-header-left">
4513                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
4514                        <svg class="icon"><use href="#icon-star"/></svg>
4515                    </button>
4516                        <span class="lg-country-name">Poland:</span>
4517                    <img src="/images/basketball/leagues/72.webp"
4518                         alt="Energa Basket Liga" class="lg-logo" loading="lazy"
4519                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
4520                    <span class="lg-name">Energa Basket Liga</span>
4521                </div>
4522                <div class="lg-header-right">
4523                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
4524                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
4525                    </button>
4526                </div>
4527            </div>
4528
4529            <div class="lg-matches">
4530                    <div class="mx-row  " data-search="Energa Basket Liga Poland Zielona Gora Legia">
4531                        <div class="mx-left">
4532                            <button type="button" class="mx-fav-btn favorite-btn"
4533                                    data-match-id="335898"
4534                                    data-auth="false"
4535                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335898, this);"
4536                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
4537                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
4538                            </button>
4539                            <div class="mx-status">
4540                                    <span class="mx-time">01:15</span>
4541                            </div>
4542                        </div>
4543
4544                        <div class="mx-center">
4545                            <a href="/zielona-gora-vs-legia-id335898" class="mx-teams-link">
4546                                <div class="mx-team-row">
4547                                    <img src="/images/basketball/teams/919.webp"
4548                                         alt="Zielona Gora" class="mx-team-logo" loading="lazy"
4549                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4550                                    <span class="mx-team-name">Zielona Gora</span>
4551                                    <span class="mx-score ">
4552                                    </span>
4553                                </div>
4554                                <div class="mx-team-row">
4555                                    <img src="/images/basketball/teams/910.webp"
4556                                         alt="Legia" class="mx-team-logo" loading="lazy"
4557                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4558                                    <span class="mx-team-name">Legia</span>
4559                                    <span class="mx-score ">
4560                                    </span>
4561                                </div>
4562                            </a>
4563                        </div>
4564
4565                        <div class="mx-right ">
4566                                <a href="/zielona-gora-vs-legia-id335898" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
4567                        </div>
4568                    </div>
4569            </div>
4570        </div>
4571        <div class="lg-section" data-search="Euroleague Europe">
4572            <div class="lg-header">
4573                <div class="lg-header-left">
4574                    <button type="button" class="lg-fav-btn" aria-label="Pin league">
4575                        <svg class="icon"><use href="#icon-star"/></svg>
4576                    </button>
4577                        <span class="lg-country-name">Europe:</span>
4578                    <img src="/images/basketball/leagues/120.webp"
4579                         alt="Euroleague" class="lg-logo" loading="lazy"
4580                         onerror="if(!this.dataset.fallback){this.src='/images/placeholder-league.svg';this.dataset.fallback='true';}">
4581                    <span class="lg-name">Euroleague</span>
4582                </div>
4583                <div class="lg-header-right">
4584                    <button type="button" class="lg-collapse-btn" onclick="toggleLeague(this)" aria-label="Toggle">
4585                        <svg class="icon icon-collapse"><use href="#icon-chevron-up"/></svg>
4586                    </button>
4587                </div>
4588            </div>
4589
4590            <div class="lg-matches">
4591                    <div class="mx-row  " data-search="Euroleague Europe Olympiacos Anadolu Efes">
4592                        <div class="mx-left">
4593                            <button type="button" class="mx-fav-btn favorite-btn"
4594                                    data-match-id="335899"
4595                                    data-auth="false"
4596                                    onclick="event.preventDefault(); event.stopPropagation(); handleFavoriteClick(335899, this);"
4597                                    aria-label="Th&#xEA;m v&#xE0;o y&#xEA;u th&#xED;ch">
4598                                <svg class="icon icon-fav"><use href="#icon-star"/></svg>
4599                            </button>
4600                            <div class="mx-status">
4601                                    <span class="mx-time">01:15</span>
4602                            </div>
4603                        </div>
4604
4605                        <div class="mx-center">
4606                            <a href="/olympiacos-vs-anadolu-efes-id335899" class="mx-teams-link">
4607                                <div class="mx-team-row">
4608                                    <img src="/images/basketball/teams/1542.webp"
4609                                         alt="Olympiacos" class="mx-team-logo" loading="lazy"
4610                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4611                                    <span class="mx-team-name">Olympiacos</span>
4612                                    <span class="mx-score ">
4613                                    </span>
4614                                </div>
4615                                <div class="mx-team-row">
4616                                    <img src="/images/basketball/teams/1263.webp"
4617                                         alt="Anadolu Efes" class="mx-team-logo" loading="lazy"
4618                                         onerror="this.onerror=null; this.src='/images/placeholder-team.svg';">
4619                                    <span class="mx-team-name">Anadolu Efes</span>
4620                                    <span class="mx-score ">
4621                                    </span>
4622                                </div>
4623                            </a>
4624                        </div>
4625
4626                        <div class="mx-right ">
4627                                <a href="/olympiacos-vs-anadolu-efes-id335899" class="mx-action-btn preview-btn">Xem tr&#x1B0;&#x1EDB;c</a>
4628                        </div>
4629                    </div>
4630            </div>
4631        </div>
4632                <nav aria-label="&#x110;i&#x1EC1;u h&#x1B0;&#x1EDB;ng trang" class="mt-4 px-3 match-list-paging">
4633                    <ul class="pagination justify-content-center flex-wrap">
4634                        <li class="page-item disabled">
4635                            <a class="page-link" href="/hom-nay"><svg class="icon"><use href="#icon-chevrons-left"/></svg></a>
4636                        </li>
4637                        <li class="page-item disabled">
4638                            <a class="page-link" href="/hom-nay"><svg class="icon"><use href="#icon-chevron-left"/></svg></a>
4639                        </li>
4640                            <li class="page-item active">
4641                                <a class="page-link" href="/hom-nay">1</a>
4642                            </li>
4643                            <li class="page-item ">
4644                                <a class="page-link" href="/hom-nay?page=2">2</a>
4645                            </li>
4646                            <li class="page-item ">
4647                                <a class="page-link" href="/hom-nay?page=3">3</a>
4648                            </li>
4649                            <li class="page-item ">
4650                                <a class="page-link" href="/hom-nay?page=4">4</a>
4651                            </li>
4652                            <li class="page-item ">
4653                                <a class="page-link" href="/hom-nay?page=5">5</a>
4654                            </li>
4655                        <li class="page-item ">
4656                            <a class="page-link" href="/hom-nay?page=2"><svg class="icon"><use href="#icon-chevron-right"/></svg></a>
4657                        </li>
4658                        <li class="page-item ">
4659                            <a class="page-link" href="/hom-nay?page=36"><svg class="icon"><use href="#icon-chevrons-right"/></svg></a>
4660                        </li>
4661                    </ul>
4662                </nav>
4663                <div class="text-center text-muted mt-2 pb-3 match-list-paging">
4664                    <small>Trang 1 / 36 · T&#x1ED5;ng 1794 tr&#x1EAD;n &#x111;&#x1EA5;u</small>
4665                </div>
4666    
4667    <!-- 页面SEO内容 -->
4668    
4669</div>
4670
4671
4672
4673    </main>
4674    
4675    <!-- SPA 加载进度条 -->
4676    <div class="spa-loading-bar" id="spaLoadingBar"></div>
4677
4678    <!-- 底部 -->
4679    <footer class="footer">
4680        <div class="container">
4681            <div class="row">
4682                <div class="col-lg-4 mb-4 mb-lg-0">
4683                    <div class="footer-brand mb-3">
4684                        <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">
4685                    </div>
4686                    <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>
4687                    <div class="social-links">
4688                        <a href="https://weibo.com" target="_blank" rel="nofollow noopener" aria-label="Weibo"><i class="fab fa-weibo" aria-hidden="true"></i></a>
4689                        <a href="https://weixin.qq.com" target="_blank" rel="nofollow noopener" aria-label="WeChat"><i class="fab fa-weixin" aria-hidden="true"></i></a>
4690                        <a href="https://twitter.com" target="_blank" rel="nofollow noopener" aria-label="Twitter"><i class="fab fa-twitter" aria-hidden="true"></i></a>
4691                        <a href="https://youtube.com" target="_blank" rel="nofollow noopener" aria-label="YouTube"><i class="fab fa-youtube" aria-hidden="true"></i></a>
4692                    </div>
4693                </div>
4694                <div class="col-6 col-lg-2">
4695                    <h2 class="footer-title">Li&#xEA;n k&#x1EBF;t nhanh</h2>
4696                    <ul class="footer-links">
4697                        <li><a href="/truc-tiep">Tr&#x1EF1;c ti&#x1EBF;p</a></li>
4698                        <li><a href="/hom-nay">H&#xF4;m nay</a></li>
4699                        <li><a href="/lich-thi-dau">L&#x1ECB;ch thi &#x111;&#x1EA5;u</a></li>
4700                        <li><a href="/tin-tuc-bong-da">Tin T&#x1EE9;c</a></li>
4701                        <li><a href="/nhan-dinh-bong-da">Nh&#x1EAD;n &#x110;&#x1ECB;nh</a></li>
4702                        <li><a href="/giai-dau">Trung t&#xE2;m gi&#x1EA3;i &#x111;&#x1EA5;u</a></li>
4703                        <li><a href="/doi-bong">Trung t&#xE2;m c&#xE2;u l&#x1EA1;c b&#x1ED9;</a></li>
4704                            <li><a href="/leaderboard">BXH Streamer</a></li>
4705                    </ul>
4706                </div>
4707                <div class="col-lg-4">
4708                    <h2 class="footer-title">T&#x1EA3;i &#x1EE9;ng d&#x1EE5;ng</h2>
4709                    <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>
4710                    <div class="app-buttons">
4711                        <a href="https://www.apple.com/app-store/" target="_blank" rel="nofollow noopener" class="app-btn" aria-label="App Store">
4712                            <i class="fab fa-apple" aria-hidden="true"></i>
4713                            <span>App Store</span>
4714                        </a>
4715                        <a href="https://play.google.com/store" target="_blank" rel="nofollow noopener" class="app-btn" aria-label="Google Play">
4716                            <i class="fab fa-android" aria-hidden="true"></i>
4717                            <span>Android</span>
4718                        </a>
4719                    </div>
4720                </div>
4721            </div>
4722            <hr class="border-secondary my-4">
4723            <div class="row align-items-center">
4724                <div class="col-md-6 text-center text-md-start mb-3 mb-md-0">
4725                    <p class="small text-muted mb-2">&copy; 2026 XOIGAC.TV. All rights reserved.</p>
4726                    <!-- DMCA Protection Badge -->
4727                    <div class="dmca-badge">
4728                        <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">
4729                            <img src="/images/dmca_protected_sml_120n.png" alt="DMCA.com Protection Status" width="121" height="24" / loading="lazy">
4730                        </a>
4731                        <!-- Using self-hosted DMCA image to eliminate third-party cookies -->
4732                    </div>
4733                </div>
4734                <div class="col-md-6 text-center text-md-end">
4735                    <ul class="footer-bottom-links">
4736                        <li>
4737                        <a href="/sitemap.xml"
4738                            target="_blank">
4739                            S&#x1A1; &#x111;&#x1ED3; trang
4740                        </a>
4741                        </li>
4742                        <li><a href="/chinh-sach-bao-mat">Ch&#xED;nh s&#xE1;ch b&#x1EA3;o m&#x1EAD;t</a></li>
4743                        <li><a href="/dieu-khoan-su-dung">&#x110;i&#x1EC1;u kho&#x1EA3;n d&#x1ECB;ch v&#x1EE5;</a></li>
4744                        <li><a href="/lien-he">Li&#xEA;n h&#x1EC7;</a></li>
4745                        <li><a href="/gioi-thieu">V&#x1EC1; ch&#xFA;ng t&#xF4;i</a></li>
4746                        <li><a href="/dmca" rel="nofollow">DMCA</a></li>
4747                    </ul>
4748                </div>
4749            </div>
4750        </div>
4751    </footer>
4752
4753    <!-- 聊天室弹窗遮罩 -->
4754    <div class="chat-modal-overlay d-none" id="chatModalOverlay" style="display: none !important;"></div>
4755    
4756    <!-- 聊天室弹窗 -->
4757    <div class="chat-modal d-none" id="chatModal">
4758        <div class="chat-modal-header">
4759            <span class="chat-modal-title"></span>
4760            <div class="chat-modal-actions">
4761                <button class="chat-modal-btn" id="chatModalFullscreen" data-i18n-title="common.fullscreen" title="To&#xE0;n m&#xE0;n h&#xEC;nh">
4762                    <i class="fas fa-expand"></i>
4763                </button>
4764                <button class="chat-modal-btn chat-modal-close-btn" id="chatModalClose" data-i18n-title="common.collapse" title="Thu g&#x1ECD;n">
4765                    <i class="fas fa-chevron-down"></i>
4766                </button>
4767            </div>
4768        </div>
4769        <div class="chat-modal-body" id="chatModalBody">
4770            <!-- 移动端视频播放器区域 -->
4771            <div class="mobile-video-section d-none" id="mobileVideoSection">
4772                <div class="mobile-video-wrapper">
4773                    <video id="mobileVideo" playsinline muted controls crossorigin>
4774                        <!-- 视频源会通过JavaScript动态设置 -->
4775                    </video>
4776                    <!-- 关闭按钮直接放在视频右上角 -->
4777                    <button class="mobile-video-close" id="mobileVideoClose" data-i18n-title="common.closeVideo" title="&#x110;&#xF3;ng video">
4778                        <i class="fas fa-times"></i>
4779                    </button>
4780                </div>
4781            </div>
4782            <!-- 聊天室内容会被复制到这里 -->
4783        </div>
4784    </div>
4785    
4786    <!-- 全局浮动按钮组 -->
4787    <div class="global-fab-container" id="globalFabContainer">
4788        <!-- 推送通知订阅 -->
4789        <button class="global-fab-btn push-fab" id="push-subscribe-btn" data-i18n-title="push.enableNotifications" title="开启推送通知" style="display: none;">
4790            <i class="fas fa-bell"></i>
4791        </button>
4792        <!-- 强制刷新 -->
4793        <button class="global-fab-btn refresh-fab" id="fabRefresh" data-i18n-title="common.refresh" title="L&#xE0;m m&#x1EDB;i">
4794            <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>
4795        </button>
4796        <!-- 回到顶部 -->
4797        <button class="global-fab-btn back-to-top-fab" id="fabBackToTop" data-i18n-title="common.backToTop" title="V&#x1EC1; &#x111;&#x1EA7;u trang">
4798            <i class="fas fa-chevron-up"></i>
4799        </button>
4800        <!-- 打开聊天室:只在有聊天室时显示(已暂时禁用) -->
4801    </div>
4802
4803    <!-- 优化的JavaScript加载 - 使用defer和async -->
4804    <!-- 关键的第三方库 - 使用defer -->
4805    <!-- ★ 添加 crossorigin 属性以支持第三方Cookie -->
4806    
4806<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>
4806
4807    
4807<script src="https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/8.0.0/signalr.min.js" defer crossorigin></script>
4807
4808    
4808<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/hls.min.js" defer crossorigin></script>
4808
4809    
4810    <!-- 应用程序JavaScript - IVS 播放器相关脚本必须按顺序同步加载 -->
4811        <!-- 生产环境:使用打包文件 -->
4812        <!-- 验证码管理器 - 必须在 app.bundle.js 之前加载(app.bundle 包含 auth-modal.js) -->
4813        
4813<script src="/dist/js/captcha-manager.js?v=6Cj5aPMUUHrOwMbOlykc3RZYjobhKsvkLc5aNPDmZi0"></script>
4813
4814        <!-- 核心功能包(3个JS合并)- 同步加载 -->
4815        
4815<script src="/dist/js/core.bundle.js?v=icHE5APGMG30g9fEySb-7hZ5vZ3iHbgJVhyUPH3v4Q8"></script>
4815
4816        <!-- 播放器功能包(8个JS合并)- 延迟加载 -->
4817        
4817<script src="/dist/js/player.bundle.js?v=8u5CWjOuanIR8_RT1hwbFVrUcYrqqHSdSl_i6iFuPEQ" defer></script>
4817
4818        <!-- 应用功能包(含 streamer-follow.js / auth-modal.js)- 延迟加载 -->
4819        
4819<script src="/dist/js/app.bundle.js?v=mOWIwnGUFcWjsPNJLvW6NpHaA0wGjgZ4WYEv8xFjIMQ" defer></script>
4819
4820        
4820<script src="/dist/js/streamer-follow.js?v=p3zJpid1v8N4DkO4wwc04njd4zAS2j99EHmdb_HUbMY" defer></script>
4820
4821    
4821<script src="/js/custom-select.js?v=unrE77TQiy-qc-Fun5fVdZBrEj9yh0GaRL5AHtdIOO8" defer></script>
4821
4822    
4823    <!-- 内联配置脚本 - 必须在其他脚本之前执行 -->
4824    
4824<script>
4825    // 禁用 i18n.js 的自动语言切换 UI 创建(使用服务端渲染的按钮)
4826    window.__disableI18nUI = true;
4827    window.streamerFollowI18n = {
4828        follow: 'Theo dõi',
4829        unfollow: 'Bỏ theo dõi',
4830        followed: 'Đã theo dõi',
4831        unfollowed: 'Đã bỏ theo dõi'
4832    };
4833    window.showFollowerCount = true;
4834    </script>
4834
4835    
4836    <!-- 全局浮动按钮逻辑 -->
4837    
4837<script>
4838    (function() {
4839        const fabBackToTop = document.getElementById('fabBackToTop');
4840        const fabRefresh = document.getElementById('fabRefresh');
4841        const fabOpenChat = document.getElementById('fabOpenChat');
4842        const chatRoom = document.querySelector('.chat-room-container');
4843        const fabChatAvatar = document.getElementById('fabChatAvatar');
4844        const chatModal = document.getElementById('chatModal');
4845        const chatModalOverlay = document.getElementById('chatModalOverlay');
4846        const chatModalBody = document.getElementById('chatModalBody');
4847        const chatModalClose = document.getElementById('chatModalClose');
4848        const chatModalFullscreen = document.getElementById('chatModalFullscreen');
4849        const mobileVideoSection = document.getElementById('mobileVideoSection');
4850        const mobileVideo = document.getElementById('mobileVideo');
4851        const mobileVideoClose = document.getElementById('mobileVideoClose');
4852
4853        let isFullscreen = false;
4854        let originalChatParent = null;
4855        let originalChatNextSibling = null;
4856        let isVideoPlaying = false;
4857        let wasVideoCollapsedBeforeModal = true; // 记录打开弹窗前视频是否收起
4858
4859        // 如果有聊天室且有联赛图标,则把联赛图标同步到右下角 FAB
4860        if (chatRoom && fabChatAvatar) {
4861            const leagueImg = chatRoom.querySelector('.chat-icon-wrapper img');
4862            if (leagueImg && leagueImg.src) {
4863                fabChatAvatar.src = leagueImg.src;
4864            }
4865        }
4866
4867        // 回到顶部和刷新按钮:PC 滚动>300px 常显;移动端滑动后显示,5 秒无垂直滚动自动隐藏
4868        let scrollThrottle = null;
4869        const FAB_IDLE_HIDE_MS = 5000;
4870        const FAB_SCROLL_DELTA = 8;
4871        let fabLastScrollTop = 0;
4872        let fabLastScrollActivityAt = 0;
4873        const globalFabContainer = document.getElementById('globalFabContainer');
4874
4875        function isMobileFabViewport() {
4876            return window.matchMedia('(max-width: 768px)').matches;
4877        }
4878
4879        function getScrollTop() {
4880            return window.scrollY || document.documentElement.scrollTop || document.body.scrollTop || 0;
4881        }
4882
4883        function isFabScrollEligible() {
4884            return getScrollTop() > 300;
4885        }
4886
4887        function hideFabScrollButtons() {
4888            if (fabBackToTop) fabBackToTop.classList.remove('visible');
4889            if (fabRefresh) fabRefresh.classList.remove('visible');
4890            if (globalFabContainer) globalFabContainer.classList.add('fab-auto-hidden');
4891            window.updateFabContainerVisibility();
4892        }
4893
4894        function showFabScrollButtons() {
4895            if (fabBackToTop) fabBackToTop.classList.add('visible');
4896            if (fabRefresh) fabRefresh.classList.add('visible');
4897            if (globalFabContainer) globalFabContainer.classList.remove('fab-auto-hidden');
4898            window.updateFabContainerVisibility();
4899        }
4900
4901        function markFabScrollActivity() {
4902            fabLastScrollActivityAt = Date.now();
4903        }
4904
4905        function updateDesktopFabVisibility() {
4906            if (isFabScrollEligible()) {
4907                showFabScrollButtons();
4908            } else {
4909                hideFabScrollButtons();
4910            }
4911        }
4912
4913        function handleFabScroll() {
4914            const scrollTop = getScrollTop();
4915            const delta = Math.abs(scrollTop - fabLastScrollTop);
4916
4917            if (isMobileFabViewport()) {
4918                if (scrollTop <= 300) {
4919                    fabLastScrollTop = scrollTop;
4920                    hideFabScrollButtons();
4921                    return;
4922                }
4923                if (delta >= FAB_SCROLL_DELTA) {
4924                    fabLastScrollTop = scrollTop;
4925                    markFabScrollActivity();
4926                    showFabScrollButtons();
4927                }
4928                return;
4929            }
4930
4931            fabLastScrollTop = scrollTop;
4932            updateDesktopFabVisibility();
4933        }
4934
4935        // Function to update FAB container visibility
4936        window.updateFabContainerVisibility = function() {
4937            const container = document.getElementById('globalFabContainer');
4938            const fabPushBtn = container ? container.querySelector('#push-subscribe-btn') : null;
4939            const hasVisibleButtons = (fabBackToTop && fabBackToTop.classList.contains('visible')) ||
4940                                       (fabRefresh && fabRefresh.classList.contains('visible')) ||
4941                                       (fabPushBtn && fabPushBtn.style.display !== 'none' && fabPushBtn.classList.contains('visible'));
4942            
4943            if (container) {
4944                if (hasVisibleButtons && !container.classList.contains('fab-auto-hidden')) {
4945                    container.style.display = 'flex';
4946                } else {
4947                    container.style.display = 'none';
4948                }
4949            }
4950        };
4951        
4952        window.addEventListener('scroll', function() {
4953            if (scrollThrottle) return;
4954            scrollThrottle = setTimeout(function() {
4955                handleFabScroll();
4956                scrollThrottle = null;
4957            }, 80);
4958        }, { passive: true });
4959
4960        window.addEventListener('resize', function() {
4961            fabLastScrollTop = getScrollTop();
4962            if (isMobileFabViewport()) {
4963                if (!isFabScrollEligible()) {
4964                    hideFabScrollButtons();
4965                }
4966            } else {
4967                if (globalFabContainer) globalFabContainer.classList.remove('fab-auto-hidden');
4968                updateDesktopFabVisibility();
4969            }
4970        }, { passive: true });
4971
4972        // 移动端:定时强制检查,避免 scroll/touch 漏判导致不消失
4973        setInterval(function() {
4974            if (!isMobileFabViewport()) return;
4975            if (!isFabScrollEligible()) {
4976                if (fabBackToTop && fabBackToTop.classList.contains('visible')) {
4977                    hideFabScrollButtons();
4978                }
4979                return;
4980            }
4981            const isVisible = fabBackToTop && fabBackToTop.classList.contains('visible');
4982            if (!isVisible) return;
4983            const idleMs = Date.now() - fabLastScrollActivityAt;
4984            if (idleMs >= FAB_IDLE_HIDE_MS) {
4985                hideFabScrollButtons();
4986            }
4987        }, 400);
4988        
4989        // Initial check
4990        fabLastScrollTop = getScrollTop();
4991        if (isMobileFabViewport()) {
4992            if (isFabScrollEligible()) {
4993                showFabScrollButtons();
4994                markFabScrollActivity();
4995            } else {
4996                hideFabScrollButtons();
4997            }
4998        } else {
4999            updateDesktopFabVisibility();
5000        }
5001
5002        // 回到顶部点击事件(兼容移动端,避免需要点两次的问题)
5003        function scrollToTop(e) {
5004            e.preventDefault();
5005            e.stopPropagation();
5006            window.scrollTo({ top: 0, behavior: 'smooth' });
5007        }
5008
5009        if (fabBackToTop) {
5010            fabBackToTop.addEventListener('click', scrollToTop);
5011            fabBackToTop.addEventListener('touchend', function(e) {
5012                e.preventDefault();
5013                scrollToTop(e);
5014            });
5015        }
5016        
5017        // 强制刷新点击事件
5018        function forceRefresh(e) {
5019            e.preventDefault();
5020            e.stopPropagation();
5021            // 强制刷新:忽略缓存
5022            location.reload(true);
5023        }
5024        
5025        if (fabRefresh) {
5026            fabRefresh.addEventListener('click', forceRefresh);
5027            fabRefresh.addEventListener('touchend', function(e) {
5028                e.preventDefault();
5029                forceRefresh(e);
5030            });
5031        }
5032
5033        // 获取原始视频播放器元素
5034        function getOriginalVideo() {
5035            return document.getElementById('livePlayer');
5036        }
5037
5038        // 设置移动端视频播放器
5039        function setupMobileVideo() {
5040            const isMobile = window.innerWidth <= 767;
5041            if (!isMobile) return;
5042
5043            const originalVideo = getOriginalVideo();
5044            if (!originalVideo || !mobileVideo) return;
5045
5046            // 复制视频源
5047            if (originalVideo.src) {
5048                mobileVideo.src = originalVideo.src;
5049            } else {
5050                const sources = originalVideo.querySelectorAll('source');
5051                mobileVideo.innerHTML = '';
5052                sources.forEach(source => {
5053                    const newSource = source.cloneNode(true);
5054                    mobileVideo.appendChild(newSource);
5055                });
5056            }
5057
5058            // 同步播放状态
5059            if (!originalVideo.paused) {
5060                mobileVideo.currentTime = originalVideo.currentTime;
5061                setTimeout(() => {
5062                    mobileVideo.play().catch(console.error);
5063                }, 100);
5064            }
5065
5066            // 显示移动端视频区域
5067            mobileVideoSection.classList.remove('d-none');
5068            isVideoPlaying = true;
5069
5070            // 禁用移动端视频的全屏功能
5071            mobileVideo.setAttribute('disablePictureInPicture', 'true');
5072            mobileVideo.setAttribute('controlsList', 'nofullscreen');
5073
5074            // 监听全屏事件并阻止
5075            mobileVideo.addEventListener('webkitfullscreenchange', function() {
5076                if (document.webkitFullscreenElement === mobileVideo) {
5077                    document.webkitExitFullscreen();
5078                }
5079            });
5080
5081            mobileVideo.addEventListener('fullscreenchange', function() {
5082                if (document.fullscreenElement === mobileVideo) {
5083                    document.exitFullscreen();
5084                }
5085            });
5086
5087            // 暂停原视频
5088            originalVideo.pause();
5089        }
5090
5091        // 关闭移动端视频播放器
5092        function closeMobileVideo() {
5093            if (!mobileVideo || !mobileVideoSection) return;
5094
5095            // 隐藏视频区域
5096            mobileVideoSection.classList.add('d-none');
5097            mobileVideo.pause();
5098            isVideoPlaying = false;
5099        }
5100
5101        // 显示聊天室不可用提示
5102        function showChatUnavailableHint(message) {
5103            // 创建提示元素
5104            const hint = document.createElement('div');
5105            hint.className = 'chat-unavailable-hint';
5106            hint.innerHTML = `
5107                <div class="chat-hint-content">
5108                    <i class="fas fa-comments-slash"></i>
5109                    <span>${message}</span>
5110                </div>
5111            `;
5112            hint.style.cssText = `
5113                position: fixed; bottom: 100px; right: 24px; z-index: 1000;
5114                background: linear-gradient(135deg, #1e293b 0%, #334155 100%);
5115                color: white; padding: 16px 20px; border-radius: 12px;
5116                box-shadow: 0 8px 32px rgba(0,0,0,0.3);
5117                border: 1px solid rgba(59, 130, 246, 0.3);
5118                font-size: 14px; max-width: 280px;
5119                animation: slideInUp 0.3s ease;
5120                backdrop-filter: blur(10px);
5121            `;
5122            
5123            // 添加CSS动画
5124            if (!document.querySelector('#chatHintStyles')) {
5125                const style = document.createElement('style');
5126                style.id = 'chatHintStyles';
5127                style.textContent = `
5128                    @keyframes slideInUp {
5129                        from { opacity: 0; transform: translateY(20px); }
5130                        to { opacity: 1; transform: translateY(0); }
5131                    }
5132                    .chat-hint-content {
5133                        display: flex; align-items: center; gap: 12px;
5134                    }
5135                    .chat-hint-content i {
5136                        color: #fbbf24; font-size: 18px;
5137                    }
5138                `;
5139                document.head.appendChild(style);
5140            }
5141            
5142            document.body.appendChild(hint);
5143            
5144            // 3秒后自动消失
5145            setTimeout(() => {
5146                hint.style.animation = 'slideOutDown 0.3s ease forwards';
5147                setTimeout(() => hint.remove(), 300);
5148            }, 3000);
5149        }
5150
5151        // 打开聊天室弹窗
5152        function openChatModal(e) {
5153            if (e) {
5154                e.preventDefault();
5155            }
5156            if (!chatRoom) {
5157                alert(window.L?.T ? window.L.T('common.noChatRoom') : '当前页面没有聊天室');
5158                return;
5159            }
5160
5161            const isMobile = window.innerWidth <= 767;
5162
5163            // 记录原始位置
5164            originalChatParent = chatRoom.parentElement;
5165            originalChatNextSibling = chatRoom.nextElementSibling;
5166
5167            // 移动端:始终显示视频播放器+聊天室(不管视频是否正在播放)
5168            if (isMobile) {
5169                const originalVideo = getOriginalVideo();
5170                const livePlayerSection = document.getElementById('livePlayerSection');
5171                if (originalVideo && livePlayerSection) {
5172                    // 记录打开弹窗前视频是否收起
5173                    wasVideoCollapsedBeforeModal = livePlayerSection.classList.contains('collapsed');
5174                    
5175                    // 如果视频还没展开,先展开它
5176                    if (wasVideoCollapsedBeforeModal) {
5177                        livePlayerSection.classList.remove('collapsed');
5178                        // 更新观看直播按钮文字
5179                        const watchBtn = document.querySelector('.btn-live-watch');
5180                        if (watchBtn) {
5181                            watchBtn.innerHTML = '<i class="fas fa-times"></i>收起直播';
5182                        }
5183                    }
5184                    // 准备移动端视频区域
5185                    setupMobileVideo();
5186
5187                    // 从快捷聊天室打开时,自动开始播放移动端视频
5188                    if (mobileVideo) {
5189                        setTimeout(function () {
5190                            mobileVideo.play().catch(function (err) {
5191                                console.warn('自动播放移动端视频失败:', err);
5192                            });
5193                        }, 150);
5194                    }
5195                }
5196            }
5197
5198            // 移动聊天室到弹窗
5199            chatModalBody.appendChild(chatRoom);
5200            chatRoom.classList.add('in-modal');
5201
5202            // 打开弹窗时,默认让消息区域显示在底部,使用平滑滚动更自然
5203            const chatMessages = chatRoom.querySelector('#chatMessages');
5204            if (chatMessages) {
5205                requestAnimationFrame(() => {
5206                    if (typeof chatMessages.scrollTo === 'function') {
5207                        chatMessages.scrollTo({
5208                            top: chatMessages.scrollHeight,
5209                            behavior: 'smooth'
5210                        });
5211                    } else {
5212                        chatMessages.scrollTop = chatMessages.scrollHeight;
5213                    }
5214                });
5215            }
5216
5217            // 显示弹窗
5218            chatModal.classList.remove('d-none');
5219            chatModalOverlay.classList.remove('d-none');
5220            document.body.style.overflow = 'hidden';
5221
5222            // 聚焦输入框
5223            setTimeout(function() {
5224                const input = chatRoom.querySelector('#chatInput');
5225                if (input && !input.readOnly) input.focus();
5226            }, 300);
5227        }
5228
5229        // 关闭聊天室弹窗
5230        function closeChatModal(e) {
5231            if (e) {
5232                e.preventDefault();
5233            }
5234            if (!chatRoom) return;
5235
5236            const isMobile = window.innerWidth <= 767;
5237
5238            // 关闭移动端视频播放器(无论当前是否在播放,都统一收起视频区域)
5239            closeMobileVideo();
5240            
5241            // 移动端:恢复视频播放器原来的状态
5242            if (isMobile && wasVideoCollapsedBeforeModal) {
5243                const livePlayerSection = document.getElementById('livePlayerSection');
5244                const watchBtn = document.querySelector('.btn-live-watch');
5245                if (livePlayerSection) {
5246                    livePlayerSection.classList.add('collapsed');
5247                }
5248                if (watchBtn) {
5249                    watchBtn.innerHTML = '<i class="fas fa-play"></i>观看直播';
5250                }
5251            }
5252
5253            // 恢复聊天室到原位置
5254            if (originalChatParent) {
5255                if (originalChatNextSibling) {
5256                    originalChatParent.insertBefore(chatRoom, originalChatNextSibling);
5257                } else {
5258                    originalChatParent.appendChild(chatRoom);
5259                }
5260            }
5261            chatRoom.classList.remove('in-modal');
5262
5263            // 隐藏弹窗
5264            chatModal.classList.add('d-none');
5265            chatModalOverlay.classList.add('d-none');
5266            chatModal.classList.remove('fullscreen');
5267            document.body.style.overflow = '';
5268            isFullscreen = false;
5269
5270            // 更新全屏按钮图标
5271            chatModalFullscreen.innerHTML = '<i class="fas fa-expand"></i>';
5272            chatModalFullscreen.title = window.L?.T ? window.L.T('common.fullscreen') : '全屏';
5273        }
5274
5275        // 切换全屏
5276        function toggleFullscreen(e) {
5277            if (e) {
5278                e.preventDefault();
5279            }
5280            isFullscreen = !isFullscreen;
5281            if (isFullscreen) {
5282                chatModal.classList.add('fullscreen');
5283                chatModalFullscreen.innerHTML = '<i class="fas fa-compress"></i>';
5284                chatModalFullscreen.title = window.L?.T ? window.L.T('common.exitFullscreen') : '退出全屏';
5285            } else {
5286                chatModal.classList.remove('fullscreen');
5287                chatModalFullscreen.innerHTML = '<i class="fas fa-expand"></i>';
5288                chatModalFullscreen.title = window.L?.T ? window.L.T('common.fullscreen') : '全屏';
5289            }
5290        }
5291
5292        // 检测是否是移动端
5293        const isMobile = window.innerWidth <= 767;
5294
5295        // 绑定事件:只有存在聊天室时才处理 FAB / 弹窗(Beauty 独立观看页使用内嵌聊天,不走弹窗)
5296        const isBeautyWatchPage = document.body.classList.contains('beauty-watch-layout');
5297        if (chatRoom && !isBeautyWatchPage) {
5298            // 桌面端:只要有聊天室就直接显示FAB(仅当元素存在时)
5299            if (!isMobile && fabOpenChat) {
5300                fabOpenChat.classList.add('visible');
5301            }
5302
5303            // 聊天室弹窗事件(兼容移动端触摸)
5304            if (fabOpenChat) {
5305                fabOpenChat.addEventListener('click', openChatModal);
5306                fabOpenChat.addEventListener('touchend', function(e) {
5307                    e.preventDefault();
5308                    openChatModal(e);
5309                });
5310            }
5311
5312            if (chatModalClose) {
5313                chatModalClose.addEventListener('click', closeChatModal);
5314                chatModalClose.addEventListener('touchend', function(e) {
5315                    e.preventDefault();
5316                    closeChatModal(e);
5317                });
5318            }
5319
5320            if (chatModalOverlay) {
5321                chatModalOverlay.addEventListener('click', closeChatModal);
5322            }
5323
5324            if (chatModalFullscreen) {
5325                chatModalFullscreen.addEventListener('click', toggleFullscreen);
5326            }
5327
5328            // 移动端视频关闭按钮:直接关闭整个弹窗,避免出现“只有聊天”的弹窗
5329            if (mobileVideoClose) {
5330                mobileVideoClose.addEventListener('click', function(e) {
5331                    closeChatModal(e);
5332                });
5333            }
5334
5335            // ESC 关闭
5336            document.addEventListener('keydown', function(e) {
5337                if (e.key === 'Escape' && !chatModal.classList.contains('d-none')) {
5338                    closeChatModal();
5339                }
5340            });
5341
5342            // 移动端:只要聊天室连接成功,就显示 FAB
5343            if (isMobile) {
5344                window.addEventListener('chatConnected', function() {
5345                    if (fabOpenChat) {
5346                        fabOpenChat.classList.add('visible');
5347                    }
5348                });
5349            }
5350
5351            // 同步 FAB 的未读气泡(监听页面内的 unread badge)
5352            const pageUnreadBadge = document.getElementById('unreadBadge');
5353            const fabBadge = document.getElementById('fabChatBadge');
5354            if (pageUnreadBadge && fabBadge) {
5355                const observer = new MutationObserver(function() {
5356                    const count = pageUnreadBadge.textContent || '0';
5357                    const isHidden = pageUnreadBadge.classList.contains('d-none');
5358                    if (isHidden || count === '0') {
5359                        fabBadge.classList.add('d-none');
5360                    } else {
5361                        fabBadge.textContent = count;
5362                        fabBadge.classList.remove('d-none');
5363                    }
5364                });
5365                observer.observe(pageUnreadBadge, { attributes: true, childList: true, subtree: true, characterData: true });
5366            }
5367        } else if (chatRoom && isBeautyWatchPage) {
5368            chatRoom.classList.remove('in-modal');
5369        } else {
5370            // 没有聊天室时隐藏 FAB
5371            if (fabOpenChat) {
5372                fabOpenChat.classList.remove('visible');
5373            }
5374        }
5375    })();
5376    </script>
5376
5377    
5378    <!-- 页面加载完成后隐藏 loader -->
5379    
5379<script>
5380    (function() {
5381        var loader = document.getElementById('pageLoader');
5382        if (!loader) return;
5383        
5384        // 页面加载完成后立即隐藏(服务端已渲染正确语言,无需等待 JS 翻译)
5385        function hideLoader() {
5386            // 立即隐藏,不再延迟
5387            loader.style.display = 'none';
5388            loader.classList.add('fade-out', 'hidden');
5389            // 动画结束后移除元素
5390            setTimeout(function() {
5391                if (loader.parentNode) {
5392                    loader.parentNode.removeChild(loader);
5393                }
5394            }, 200);
5395        }
5396        
5397        // DOM 加载完成后立即隐藏
5398        if (document.readyState === 'complete') {
5399            hideLoader();
5400        } else {
5401            window.addEventListener('load', hideLoader);
5402        }
5403        
5404        // 额外保险:确保在 3 秒后一定隐藏加载器
5405        setTimeout(function() {
5406            if (loader && loader.parentNode) {
5407                loader.style.display = 'none';
5408                loader.classList.add('fade-out', 'hidden');
5409                if (loader.parentNode) {
5410                    loader.parentNode.removeChild(loader);
5411                }
5412            }
5413        }, 3000);
5414        
5415        // 确保聊天遮罩层在页面加载时被隐藏
5416        var chatOverlay = document.getElementById('chatModalOverlay');
5417        if (chatOverlay) {
5418            chatOverlay.style.display = 'none';
5419            chatOverlay.classList.add('d-none');
5420        }
5421        
5422        // 确保聊天弹窗在页面加载时被隐藏
5423        var chatModal = document.getElementById('chatModal');
5424        if (chatModal) {
5425            chatModal.style.display = 'none';
5426            chatModal.classList.add('d-none');
5427        }
5428    })();
5429    </script>
5429
5430    
5431    <!-- 语言切换函数 -->
5432    
5432<script>
5433    function changeLanguage(lang) {
5434        // 防止重复点击
5435        if (window.__changingLanguage) return;
5436        window.__changingLanguage = true;
5437        
5438        // 保存语言偏好到 cookie 和 localStorage
5439        document.cookie = 'livescore_lang=' + lang + '; path=/; max-age=31536000';
5440        localStorage.setItem('livescore_lang', lang);
5441
5442        var returnUrl = window.location.pathname + window.location.search + window.location.hash;
5443        window.location.href = '/set-lang?lang=' + encodeURIComponent(lang) + '&returnUrl=' + encodeURIComponent(returnUrl);
5444    }
5445    </script>
5445
5446    
5447    <!-- SPA 路由 - 暂时禁用以优化LCP -->
5448    
5448<script src="/js/spa-router.js?v=dwhRvRTKNW3gDRjkITc68k3snHSqhN2jwIL1Le2mwmw" defer></script>
5448
5449    
5450    <!-- 简单的预约提醒功能 -->
5451    
5451<script>
5452    window.toggleMatchReminder = async (event, btn) => {
5453        try {
5454            // 检查 Service Worker 支持
5455            if (!('serviceWorker' in navigator)) {
5456                showNotification(window.L?.T ? window.L.T('push.notSupported') : '您的浏览器不支持推送通知', 'warning');
5457                return;
5458            }
5459            
5460            // 等待 Service Worker 就绪(增加超时处理)
5461            let registration, subscription;
5462            try {
5463                registration = await Promise.race([
5464                    navigator.serviceWorker.ready,
5465                    new Promise((_, reject) => setTimeout(() => reject(new Error('SW timeout')), 5000))
5466                ]);
5467                subscription = await registration.pushManager.getSubscription();
5468            } catch (swError) {
5469                console.error('[预约提醒] Service Worker 未就绪:', swError);
5470                showNotification(window.L?.T ? window.L.T('push.notReady') : '推送服务未就绪,请稍后重试', 'warning');
5471                return;
5472            }
5473            
5474            if (!subscription) {
5475                const subscribeBtn = document.getElementById('push-subscribe-btn') || document.getElementById('mobile-push-subscribe-btn');
5476                if (subscribeBtn) {
5477                    subscribeBtn.click();
5478                } else {
5479                    showNotification(window.L?.T ? window.L.T('push.pleaseSubscribe') : '请先订阅推送通知', 'warning');
5480                }
5481                return;
5482            }
5483            
5484            const endpoint = subscription.endpoint;
5485        
5486            const res = await fetch(`/api/push/check-subscription?endpoint=${encodeURIComponent(endpoint)}`);
5487            const data = await res.json();
5488            
5489            if (!data.subscribed) {
5490                const subscribeBtn = document.getElementById('push-subscribe-btn') || document.getElementById('mobile-push-subscribe-btn');
5491                if (subscribeBtn) {
5492                    subscribeBtn.click();
5493                } else {
5494                    showNotification(window.L?.T ? window.L.T('push.pleaseSubscribe') : '请先订阅推送通知', 'warning');
5495                }
5496                return;
5497            }
5498            
5499            // 检查按钮当前状态,判断是订阅还是取消
5500            const matchId = btn.dataset.matchId;
5501            const isActive = btn.classList.contains('active');
5502
5503            const isIconOnly = btn.classList.contains('focus-reminder-btn');
5504
5505            btn.disabled = true;
5506            const originalHtml = btn.innerHTML;
5507            const processingText = window.L?.T ? window.L.T('common.processing') : '处理中...';
5508            btn.innerHTML = isIconOnly
5509                ? `<i class="fas fa-spinner fa-spin"></i>`
5510                : `<i class="fas fa-spinner fa-spin"></i> <span>${processingText}</span>`;
5511            
5512            let reminderRes, reminderData;
5513            
5514            if (isActive) {
5515                // 当前是激活状态,执行取消操作
5516                reminderRes = await fetch('/api/match-reminders/unsubscribe', {
5517                    method: 'POST',
5518                    headers: { 
5519                        'Content-Type': 'application/json',
5520                        'Accept-Language': window.__currentLang || 'vi'
5521                    },
5522                    body: JSON.stringify({
5523                        fixtureId: parseInt(matchId),
5524                        pushEndpoint: endpoint
5525                    })
5526                });
5527                
5528                reminderData = await reminderRes.json();
5529                
5530                if (reminderData.success) {
5531                    btn.classList.remove('active');
5532                    btn.innerHTML = isIconOnly
5533                        ? `<i class="fas fa-bell"></i>`
5534                        : `<i class="fas fa-bell"></i> <span>${btn.dataset.textSet || (window.L?.T ? window.L.T('home.setReminder') : '预约提醒')}</span>`;
5535                    showNotification(reminderData.message || (window.L?.T ? window.L.T('home.reminderCanceled') : '已取消预约'), 'success');
5536                } else {
5537                    btn.innerHTML = originalHtml;
5538                    showNotification(reminderData.message || (window.L?.T ? window.L.T('home.cancelFailed') : '取消失败'), 'danger');
5539                }
5540            } else {
5541                // 当前是未激活状态,执行订阅操作
5542                reminderRes = await fetch('/api/match-reminders/sub
5542scribe', {
5543                    method: 'POST',
5544                    headers: { 
5545                        'Content-Type': 'application/json',
5546                        'Accept-Language': window.__currentLang || 'vi'
5547                    },
5548                    body: JSON.stringify({
5549                        fixtureId: parseInt(matchId),
5550                        pushEndpoint: endpoint
5551                    })
5552                });
5553                
5554                reminderData = await reminderRes.json();
5555                
5556                if (reminderData.success) {
5557                    btn.classList.add('active');
5558                    btn.innerHTML = isIconOnly
5559                        ? `<i class="fas fa-bell-slash"></i>`
5560                        : `<i class="fas fa-bell-slash"></i> <span>${btn.dataset.textCancel || (window.L?.T ? window.L.T('home.cancelReminder') : '取消预约')}</span>`;
5561                    showNotification(reminderData.message || (window.L?.T ? window.L.T('home.reminderSet') : '预约成功'), 'success');
5562                } else {
5563                    btn.innerHTML = originalHtml;
5564                    showNotification(reminderData.message || (window.L?.T ? window.L.T('home.reminderFailed') : '预约失败'), 'danger');
5565                }
5566            }
5567            
5568            btn.disabled = false;
5569            
5570        } catch (error) {
5571            console.error('[预约提醒] 操作失败:', error);
5572            // 根据错误类型显示不同的多语言提示
5573            if (error.message && error.message.includes('Notification permission denied')) {
5574                showNotification(window.L?.T ? window.L.T('push.notificationDenied') : '通知权限已被拒绝,请在浏览器设置中允许通知', 'warning');
5575            } else {
5576                showNotification(window.L?.T ? window.L.T('common.operationFailed') : '操作失败,请稍后重试', 'danger');
5577            }
5578        }
5579    };
5580    
5581    
5582    // 初始化预约提醒按钮状态
5583    window.initReminderButtons = async () => {
5584        // console.log('[预约提醒] 开始初始化按钮状态...');
5585        
5586        try {
5587            // 只获取可见的预约提醒按钮
5588            const buttons = document.querySelectorAll('.reminder-btn:not([style*="display: none"]):not([style*="display:none"]), .focus-reminder-btn');
5589            if (buttons.length === 0) {
5590                // console.log('[预约提醒] 没有找到可见的预约提醒按钮');
5591                return;
5592            }
5593            
5594            // 检查推送订阅状态
5595            const registration = await navigator.serviceWorker.ready;
5596            const subscription = await registration.pushManager.getSubscription();
5597            
5598            if (!subscription) {
5599                // console.log('[预约提醒] 用户未订阅推送,设置默认状态');
5600                buttons.forEach(btn => {
5601                    const isIconOnly = btn.classList.contains('focus-reminder-btn');
5602                    btn.classList.remove('active');
5603                    btn.innerHTML = isIconOnly ? `<i class="fas fa-bell"></i>` : `<i class="fas fa-bell"></i> <span>${btn.dataset.textSet || '预约提醒'}</span>`;
5604                });
5605                return;
5606            }
5607            
5608            // 检查后端订阅状态
5609            const endpoint = subscription.endpoint;
5610            const res = await fetch(`/api/push/check-subscription?endpoint=${encodeURIComponent(endpoint)}`);
5611            const data = await res.json();
5612            
5613            if (!data.subscribed) {
5614                // console.log('[预约提醒] 后端未订阅,设置默认状态');
5615                buttons.forEach(btn => {
5616                    const isIconOnly = btn.classList.contains('focus-reminder-btn');
5617                    btn.classList.remove('active');
5618                    btn.innerHTML = isIconOnly ? `<i class="fas fa-bell"></i>` : `<i class="fas fa-bell"></i> <span>${btn.dataset.textSet || '预约提醒'}</span>`;
5619                });
5620                return;
5621            }
5622            
5623            // 获取已预约的比赛列表
5624            // console.log('[预约提醒] 获取已预约列表...');
5625            const listRes = await fetch(`/api/match-reminders/list?pushEndpoint=${encodeURIComponent(endpoint)}`);
5626            const listData = await listRes.json();
5627            
5628            if (listData.success && listData.reminders) {
5629                const subscribedIds = new Set(listData.reminders.map(r => r.fixtureId.toString()));
5630                // console.log('[预约提醒] 已预约比赛ID:', Array.from(subscribedIds));
5631                
5632                buttons.forEach(btn => {
5633                    const matchId = btn.dataset.matchId;
5634                    const isIconOnly = btn.classList.contains('focus-reminder-btn');
5635                    if (subscribedIds.has(matchId)) {
5636                        btn.classList.add('active');
5637                        btn.innerHTML = isIconOnly ? `<i class="fas fa-bell-slash"></i>` : `<i class="fas fa-bell-slash"></i> <span>${btn.dataset.textCancel || '取消预约'}</span>`;
5638                    } else {
5639                        btn.classList.remove('active');
5640                        btn.innerHTML = isIconOnly ? `<i class="fas fa-bell"></i>` : `<i class="fas fa-bell"></i> <span>${btn.dataset.textSet || '预约提醒'}</span>`;
5641                    }
5642                });
5643            }
5644            
5645            // console.log('[预约提醒] 按钮状态初始化完成');
5646            
5647        } catch (error) {
5648            console.error('[预约提醒] 初始化失败:', error);
5649        }
5650    };
5651    
5652    // 防抖函数,避免频繁触发
5653    let initTimeout = null;
5654    const debouncedInit = () => {
5655        if (initTimeout) {
5656            clearTimeout(initTimeout);
5657        }
5658        initTimeout = setTimeout(initReminderButtons, 300);
5659    };
5660    
5661    // 页面加载完成后初始化
5662    if (document.readyState === 'loading') {
5663        document.addEventListener('DOMContentLoaded', debouncedInit);
5664    } else {
5665        debouncedInit();
5666    }
5667    
5668    // 监听语言切换
5669    window.addEventListener('langChange', debouncedInit);
5670    
5671    // 监听 DOM 变化(只监听比赛列表容器)
5672    const matchContainer = document.querySelector('.matches-container') || 
5673                          document.querySelector('.match-list') || 
5674                          document.querySelector('.fixtures-container') ||
5675                          document.querySelector('.today-matches');
5676    
5677    if (matchContainer) {
5678        const observer = new MutationObserver((mutations) => {
5679            // 检查是否有预约提醒按钮被添加或修改
5680            let hasReminderButtons = false;
5681            mutations.forEach(mutation => {
5682                if (mutation.addedNodes) {
5683                    mutation.addedNodes.forEach(node => {
5684                        if (node.nodeType === 1) {
5685                            if (node.classList?.contains('reminder-btn') || 
5686                                node.querySelector?.('.reminder-btn')) {
5687                                hasReminderButtons = true;
5688                            }
5689                        }
5690                    });
5691                }
5692            });
5693            
5694            if (hasReminderButtons) {
5695                debouncedInit();
5696            }
5697        });
5698        
5699        observer.observe(matchContainer, { childList: true, subtree: true });
5700    }
5701    </script>
5701
5702    
5703    <!-- Visitor Tracking Script -->
5704    
5704<script src="/js/tracker.js" defer></script>
5704
5705    
5705<script src="/js/chat-visitor-id.js" defer></script>
5705
5706    
5707    <!-- 时区检测:自动存储浏览器时区到 cookie,供后端使用 -->
5708    
5708<script>
5709    (function() {
5710        const TZ_COOKIE = 'tzOffset';
5711        const tzOffset = -420;
5712        
5713        // 检查 cookie 是否已存在且值相同
5714        const existingCookie = document.cookie.split('; ').find(c => c.startsWith(TZ_COOKIE + '='));
5715        const existingValue = existingCookie ? parseInt(existingCookie.split('=')[1]) : null;
5716        
5717        if (existingValue !== tzOffset) {
5718            // 设置 cookie,有效期 30 天,全站可用
5719            const expires = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toUTCString();
5720            document.cookie = `${TZ_COOKIE}=${tzOffset}; expires=${expires}; path=/; SameSite=Lax`;
5721            
5722            // 如果是首次设置时区且当前页面是"今日"相关页面,刷新以应用正确时区
5723            const isFirstVisit = existingValue === null;
5724            const isTodayPage = window.location.pathname.includes('/football/today') 
5725                             || window.location.pathname.includes('/matches/today')
5726                             || (window.location.pathname === '/' && !window.location.search.includes('tzOffset'));
5727            
5728            if (isFirstVisit && isTodayPage) {
5729                // 首次访问今日页面,刷新以应用时区
5730                window.location.reload();
5731            }
5732        }
5733    })();
5734    </script>
5734
5735    
5736    <!-- PWA Service Worker Registration & Installation Prompt -->
5737    
5737<script>
5738    (function() {
5739        'use strict';
5740        
5741        let deferredPrompt;
5742        
5743        // Service Worker 注册 - 由 sw-auto-update.js 统一管理,这里只处理开发模式
5744        // 生产环境的 SW 注册和更新由 sw-auto-update.js 处理,自动静默更新无需用户确认
5745        if ('serviceWorker' in navigator && window.__isDevelopment === 'true') {
5746            console.log('[PWA] Development mode: Service Worker enabled with caching disabled.');
5747            
5748            // 开发模式下仍然注册 Service Worker(用于推送通知),但禁用缓存
5749            navigator.serviceWorker.register('/sw.js').then(function(registration) {
5750                console.log('[PWA] Service Worker registered in Development mode (no-cache version)');
5751                
5752                // 清除所有现有缓存
5753                if ('caches' in window) {
5754                    caches.keys().then(function(cacheNames) {
5755                        return Promise.all(
5756                            cacheNames.map(function(cacheName) {
5757                                return caches.delete(cacheName);
5758                            })
5759                        );
5760                    }).then(function() {
5761                        console.log('[PWA] All caches cleared in Development mode');
5762                    });
5763                }
5764            }).catch(function(error) {
5765                console.error('[PWA] Service Worker registration failed in Development mode:', error);
5766            });
5767        }
5768        
5769        // PWA 安装提示事件:仅缓存 deferredPrompt 供顶部横幅使用,不再弹出旧版底部安装条
5770        window.addEventListener('beforeinstallprompt', (e) => {
5771            console.log('[PWA] Install prompt captured for top banner');
5772            e.preventDefault();
5773            deferredPrompt = e;
5774        });
5775        
5776        // 更新通知已移除 - 由 sw-auto-update.js 统一处理静默更新
5777        // 无需用户交互,版本变化时自动刷新页面
5778        window.addEventListener('appinstalled', () => {
5779            console.log('[PWA] App installed successfully');
5780            localStorage.setItem('pwa-installed', 'true');
5781            if (typeof closePwaTopBanner === 'function') closePwaTopBanner();
5782        });
5783        
5784        // ==================== 防止浏览器bfcache(往返缓存)====================
5785        // 防止页面进入bfcache,确保用户关闭标签页再打开时会重新加载
5786        // 注意:不在pageshow时强制刷新,避免中断正在进行的直播
5787        
5788        // 方法1:使用 pagehide 事件(现代替代方案,替代已弃用的 unload)
5789        // pagehide 事件在页面隐藏时触发,可以阻止 bfcache
5790        window.addEventListener('pagehide', function(event) {
5791            // 如果页面被放入 bfcache,event.persisted 为 true
5792            // 通过执行一些操作(如发送 beacon)可以阻止 bfcache
5793            if (event.persisted) {
5794                console.log('[Cache] Page entering bfcache');
5795            }
5796        });
5797        
5798        // 方法2:使用Cache-Control头(已在meta标签中设置)
5799        // 方法3:检测bfcache恢复,记录日志但不刷新
5800        window.addEventListener('pageshow', function(event) {
5801            if (event.persisted) {
5802                console.log('[Cache] Page restored from bfcache');
5803                // 不刷新页面,避免中断直播
5804                // 如果确实从bfcache恢复,页面状态应该是完整的
5805                // 可以在这里重新初始化需要的连接(如 SignalR)
5806            }
5807        });
5808        
5809        // 网络状态监控
5810        window.addEventListener('online', () => {
5811            console.log('[PWA] Back online');
5812            // 可以添加重新连接逻辑
5813        });
5814        
5815        window.addEventListener('offline', () => {
5816            console.log('[PWA] Gone offline');
5817            // 可以显示离线提示
5818        });
5819        
5820        // ==================== PWA 顶部安装横幅 (移动端) ====================
5821        function showPwaTopBanner() {
5822            const banner = document.getElementById('pwa-top-banner');
5823            if (!banner) return;
5824            
5825            // 真正已安装(standalone模式)→ 永久不显示
5826            if (window.matchMedia('(display-mode: standalone)').matches || window.navigator.standalone === true) return;
5827            // 已通过安装事件确认安装 → 永久不显示
5828            if (localStorage.getItem('pwa-installed') === 'true') return;
5829            // 非移动端 → 不显示
5830            if (window.innerWidth > 768) return;
5831            
5832            banner.classList.remove('d-none');
5833        }
5834        
5835        window.closePwaTopBanner = function() {
5836            const banner = document.getElementById('pwa-top-banner');
5837            if (banner) {
5838                banner.classList.add('d-none');
5839            }
5840            // 仅本次页面关闭,刷新后重新显示
5841        };
5842        
5843        window.installPwaFromBanner = async function() {
5844            if (deferredPrompt) {
5845                deferredPrompt.prompt();
5846                const { outcome } = await deferredPrompt.userChoice;
5847                if (outcome === 'accepted') {
5848                    localStorage.setItem('pwa-installed', 'true');
5849                }
5850                deferredPrompt = null;
5851                closePwaTopBanner();
5852            } else {
5853                // iOS / browsers without beforeinstallprompt
5854                // Site default Vietnamese; use i18n when ready
5855                const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent);
5856                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»';
5857                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»';
5858                const key = isIOS ? 'seo.pwa.installGuideIos' : 'seo.pwa.installGuideAndroid';
5859                const fallback = isIOS ? iosFallback : androidFallback;
5860                let msg = fallback;
5861                if (window.L?.T && window.i18n?.isReady?.()) {
5862                    const translated = window.L.T(key);
5863                    if (translated && translated !== key) msg = translated;
5864                }
5865                alert(msg);
5866            }
5867        };
5868        
5869        // 页面加载后显示横幅
5870        if (document.readyState === 'loading') {
5871            document.addEventListener('DOMContentLoaded', showPwaTopBanner);
5872        } else {
5873            showPwaTopBanner();
5874        }
5875        
5876    })();
5877    
5878    // ==================== PWA 下拉刷新功能 ====================
5879    // Android 原生支持下拉刷新,iOS PWA 需要自定义实现
5880    // 已禁用 - 如需启用请取消注释
5881    /*
5882    (function() {
5883        'use strict';
5884        
5885        // 检测是否为 iOS PWA 模式
5886        const isIOSPWA = (window.navigator.standalone === true) || 
5887                         (window.matchMedia('(display-mode: standalone)').matches && /iPad|iPhone|iPod/.test(navigator.userAgent));
5888        
5889        // 检测是否为移动设备
5890        const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
5891        
5892        // 只在移动设备上启用下拉刷新
5893        if (!isMobile) return;
5894        
5895        let startY = 0;
5896        let currentY = 0;
5897        let pulling = false;
5898        let refreshThreshold = 120; // 触发刷新的阈值(像素)
5899        let maxPull = 160; // 最大下拉距离
5900        let refreshIndicator = null;
5901        
5902        // 创建刷新指示器
5903        function createRefreshIndicator() {
5904            if (refreshIndicator) return;
5905            
5906            refreshIndicator = document.createElement('div');
5907            refreshIndicator.id = 'pwa-refresh-indicator';
5908            const pullText = window.L?.T ? window.L.T('common.pullToRefresh') : '下拉刷新';
5909            refreshIndicator.innerHTML = `
5910                <div class="refresh-spinner">
5911                    <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>
5912                </div>
5913                <span class="refresh-text">${window.L?.T ? window.L.T('common.releaseToRefresh') : '松开刷新'}</span>
5914            `;
5915            refreshIndicator.style.cssText = `
5916                position: fixed;
5917                top: 0;
5918                left: 50%;
5919                transform: translateX(-50%) translateY(-100%);
5920                background: transparent;
5921                color: #333;
5922                padding: 12px 24px;
5923                border-radius: 0 0 16px 16px;
5924                display: flex;
5925                align-items: center;
5926                gap: 10px;
5927                font-size: 14px;
5928                font-weight: 500;
5929                z-index: 10002;
5930                transition: transform 0.2s ease;
5931                box-shadow: none;
5932            `;
5933            
5934            // 添加样式
5935            const style = document.createElement('style');
5936            style.textContent = `
5937                #pwa-refresh-indicator .refresh-spinner {
5938                    display: flex;
5939                    align-items: center;
5940                    justify-content: center;
5941                }
5942                #pwa-refresh-indicator .refresh-spinner svg {
5943                    width: 16px;
5944                    height: 16px;
5945                    transition: transform 0.3s ease;
5946                }
5947                #pwa-refresh-indicator .refresh-text {
5948                    color: white !important;
5949                    font-size: 14px;
5950                    font-weight: 500;
5951                }
5952                #pwa-refresh-indicator.refreshing .refresh-spinner svg {
5953                    animation: spin 1s linear infinite;
5954                }
5955                #pwa-refresh-indicator.ready .refresh-spinner svg {
5956                    transform: rotate(180deg);
5957                }
5958                @keyframes spin {
5959                    from { transform: rotate(0deg); }
5960                    to { transform: rotate(360deg); }
5961                }
5962            `;
5963            document.head.appendChild(style);
5964            document.body.appendChild(refreshIndicator);
5965        }
5966        
5967        // 更新指示器位置和状态
5968        function updateIndicator(pullDistance, isReady) {
5969            if (!refreshIndicator) return;
5970            
5971            const progress = Math.min(pullDistance / refreshThreshold, 1);
5972            const translateY = Math.min(pullDistance, maxPull) - 60;
5973            
5974            refreshIndicator.style.transform = `translateX(-50%) translateY(${translateY}px)`;
5975            
5976            if (isReady) {
5977                refreshIndicator.classList.add('ready');
5978                refreshIndicator.classList.remove('refreshing');
5979            } else {
5980                refreshIndicator.classList.remove('ready', 'refreshing');
5981            }
5982        }
5983        
5984        // 开始刷新动画
5985        function startRefresh() {
5986            if (!refreshIndicator) return;
5987            
5988            refreshIndicator.classList.add('refreshing');
5989            refreshIndicator.classList.remove('ready');
5990            refreshIndicator.style.transform = 'translateX(-50%) translateY(10px)';
5991            
5992            // 延迟后刷新页面
5993            setTimeout(() => {
5994                window.location.reload();
5995            }, 500);
5996        }
5997        
5998        // 重置指示器
5999        function resetIndicator() {
6000            if (!refreshIndicator) return;
6001            
6002            refreshIndicator.style.transform = 'translateX(-50%) translateY(-100%)';
6003            refreshIndicator.classList.remove('ready', 'refreshing');
6004        }
6005        
6006        // 触摸开始
6007        function handleTouchStart(e) {
6008            // 只在页面顶部时启用下拉刷新
6009            if (window.scrollY > 5) return;
6010            
6011            // 忽略在输入框、视频播放器等元素上的触摸
6012            const target = e.target;
6013            if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || 
6014                target.tagName === 'VIDEO' || target.closest('.live-player
6014-container') ||
6015                target.closest('.chat-input-container')) {
6016                return;
6017            }
6018            
6019            startY = e.touches[0].pageY;
6020            pulling = true;
6021            createRefreshIndicator();
6022        }
6023        
6024        // 触摸移动
6025        function handleTouchMove(e) {
6026            if (!pulling || window.scrollY > 5) {
6027                pulling = false;
6028                return;
6029            }
6030            
6031            currentY = e.touches[0].pageY;
6032            const pullDistance = currentY - startY;
6033            
6034            // 只处理向下拉动,且拉动距离超过最小阈值
6035            if (pullDistance > 10) {
6036                // iOS 需要阻止默认行为以实现自定义下拉
6037                if (isIOSPWA) {
6038                    e.preventDefault();
6039                }
6040                
6041                const isReady = pullDistance >= refreshThreshold;
6042                updateIndicator(pullDistance, isReady);
6043            }
6044        }
6045        
6046        // 触摸结束
6047        function handleTouchEnd(e) {
6048            if (!pulling) return;
6049            
6050            const pullDistance = currentY - startY;
6051            
6052            if (pullDistance >= refreshThreshold) {
6053                startRefresh();
6054            } else {
6055                resetIndicator();
6056            }
6057            
6058            pulling = false;
6059            startY = 0;
6060            currentY = 0;
6061        }
6062        
6063        // 绑定事件
6064        document.addEventListener('touchstart', handleTouchStart, { passive: true });
6065        document.addEventListener('touchmove', handleTouchMove, { passive: false });
6066        document.addEventListener('touchend', handleTouchEnd, { passive: true });
6067        
6068        console.log('[PWA] Pull-to-refresh enabled', isIOSPWA ? '(iOS PWA mode)' : '');
6069    })();
6070    */
6071    
6072    </script>
6072
6073    
6074    
6075    <!-- 登录/注册弹窗 -->
6076    <meta name="turnstile-sitekey" content="0x4AAAAAACejCwrxG0oAHrtT" style="display:none;" />
6077
6078
6079    
6080    
6081<script>
6082// 联赛折叠/展开
6083function toggleLeague(btn) {
6084    const section = btn.closest('.lg-section');
6085    const matches = section.querySelector('.lg-matches');
6086    const useEl = btn.querySelector('use');
6087    if (matches.style.display === 'none') {
6088        matches.style.display = '';
6089        if (useEl) useEl.setAttribute('href', '#icon-chevron-up');
6090    } else {
6091        matches.style.display = 'none';
6092        if (useEl) useEl.setAttribute('href', '#icon-chevron-down');
6093    }
6094}
6095
6096// 收藏状态初始化。SPA 注入时 DOMContentLoaded 已经触发过,所以已加载则立刻执行。
6097function initMatchListSearch() {
6098    const page = document.querySelector('.match-list-page');
6099    const input = document.getElementById('matchListSearch');
6100    const clearBtn = document.getElementById('matchListSearchClear');
6101    const empty = document.getElementById('matchListSearchEmpty');
6102    if (!page || !input || input.dataset.bound === '1') return;
6103    input.dataset.bound = '1';
6104
6105    function applyFilter() {
6106        const query = input.value.trim().toLowerCase();
6107        if (clearBtn) clearBtn.hidden = query.length === 0;
6108        let visible = 0;
6109
6110        page.querySelectorAll('.mx-row').forEach(function (row) {
6111            const hay = (row.getAttribute('data-search') || '').toLowerCase();
6112            const show = !query || hay.indexOf(query) !== -1;
6113            row.classList.toggle('is-search-hidden', !show);
6114            if (show) visible += 1;
6115        });
6116
6117        page.querySelectorAll('.lg-section').forEach(function (section) {
6118            const any = section.querySelector('.mx-row:not(.is-search-hidden)');
6119            section.classList.toggle('is-search-hidden', !any);
6120            section.classList.toggle('is-search-open', !!query && !!any);
6121        });
6122
6123        page.querySelectorAll('.beauty-schedule-row').forEach(function (row) {
6124            const hay = (row.getAttribute('data-search') || '').toLowerCase();
6125            const show = !query || hay.indexOf(query) !== -1;
6126            row.classList.toggle('is-search-hidden', !show);
6127            if (show) visible += 1;
6128        });
6129
6130        page.querySelectorAll('.schedule-sport-section').forEach(function (section) {
6131            if (!section.querySelector('.beauty-schedule-row')) return;
6132            const any = section.querySelector('.beauty-schedule-row:not(.is-search-hidden)');
6133            section.classList.toggle('is-search-hidden', !any);
6134        });
6135
6136        page.querySelectorAll('.schedule-sport-title-inline').forEach(function (title) {
6137            const anySports = page.querySelector('.lg-section:not(.is-search-hidden)');
6138            title.classList.toggle('is-search-hidden', !!query && !anySports);
6139        });
6140
6141        page.querySelectorAll('.match-list-paging').forEach(function (el) {
6142            el.classList.toggle('is-search-hidden', query.length > 0);
6143        });
6144
6145        if (empty) empty.hidden = !query || visible > 0;
6146    }
6147
6148    input.addEventListener('input', applyFilter);
6149    input.addEventListener('keydown', function (e) {
6150        if (e.key === 'Enter') e.preventDefault();
6151        if (e.key === 'Escape') {
6152            input.value = '';
6153            applyFilter();
6154        }
6155    });
6156    if (clearBtn) {
6157        clearBtn.addEventListener('click', function () {
6158            input.value = '';
6159            applyFilter();
6160            input.focus();
6161        });
6162    }
6163}
6164
6165function initMatchListPage() {
6166    initMatchListSearch();
6167    const isAuth = 'false' === 'true';
6168    if (!isAuth) return;
6169
6170    fetch('/profile/favorites/match-ids')
6171        .then(r => r.json())
6172        .then(data => {
6173            if (!data || !data.success || !Array.isArray(data.ids)) return;
6174            const idSet = new Set(data.ids.map(x => String(x)));
6175            document.querySelectorAll('.favorite-btn[data-match-id]').forEach(btn => {
6176                const matchId = btn.getAttribute('data-match-id');
6177                const isFavorited = idSet.has(String(matchId));
6178                btn.classList.toggle('active', isFavorited);
6179                const useEl = btn.querySelector('use');
6180                if (useEl) {
6181                    useEl.setAttribute('href', isFavorited ? '#icon-star-filled' : '#icon-star');
6182                }
6183            });
6184        })
6185        .catch(() => {});
6186}
6187window.initMatchListPage = initMatchListPage;
6188if (document.readyState === 'loading') {
6189    document.addEventListener('DOMContentLoaded', initMatchListPage);
6190} else {
6191    initMatchListPage();
6192}
6193</script>
6193
6194
6195<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>
6195
6196</body>
6197</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.