
<!DOCTYPE html>
<html lang="vi" prefix="og: https://ogp.me/ns#">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style>
	
<!-- Tối ưu hóa công cụ tìm kiếm bởi Rank Math PRO - https://rankmath.com/ -->
<title>Cola TV - Trực tiếp bóng đá miễn phí, xem ColaTV TTBD HD</title>
<meta name="description" content="ColaTV phát trực tiếp bóng đá chất lượng cao, không giật lag. Xem bóng đá trực tuyến miễn phí tại Cola TV cùng đội ngũ BLV chuyên môn cao."/>
<meta name="robots" content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"/>
<link rel="canonical" href="https://colatvttbd.tv" />
<meta property="og:locale" content="vi_VN" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Cola TV - Trực tiếp bóng đá miễn phí, xem ColaTV TTBD HD" />
<meta property="og:description" content="ColaTV phát trực tiếp bóng đá chất lượng cao, không giật lag. Xem bóng đá trực tuyến miễn phí tại Cola TV cùng đội ngũ BLV chuyên môn cao." />
<meta property="og:url" content="https://colatvttbd.tv" />
<meta property="og:site_name" content="Cola TV - Trực Tiếp Bóng đá Miễn Phí, Xem ColaTV TTBD HD" />
<meta property="og:updated_time" content="2025-07-17T21:38:44+07:00" />
<meta property="og:image" content="https://cdn.admincltvio.com/wp-content/uploads/2025/07/og_image_colatv.png" />
<meta property="og:image:secure_url" content="https://cdn.admincltvio.com/wp-content/uploads/2025/07/og_image_colatv.png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="colatv" />
<meta property="og:image:type" content="image/png" />
<meta property="article:published_time" content="2025-07-15T23:58:20+07:00" />
<meta property="article:modified_time" content="2025-07-17T21:38:44+07:00" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Cola TV - Trực tiếp bóng đá miễn phí, xem ColaTV TTBD HD" />
<meta name="twitter:description" content="ColaTV phát trực tiếp bóng đá chất lượng cao, không giật lag. Xem bóng đá trực tuyến miễn phí tại Cola TV cùng đội ngũ BLV chuyên môn cao." />
<meta name="twitter:image" content="https://cdn.admincltvio.com/wp-content/uploads/2025/07/og_image_colatv.png" />
<meta name="twitter:label1" content="Được viết bởi" />
<meta name="twitter:data1" content="Trần Ngọc Dung" />
<meta name="twitter:label2" content="Thời gian để đọc" />
<meta name="twitter:data2" content="10 phút" />
<script type="application/ld+json" class="rank-math-schema-pro">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://colatvttbd.tv/#organization","name":"ColaTV","logo":{"@type":"ImageObject","@id":"https://colatvttbd.tv/#logo","url":"https://cdn.colatvz.top/wp-content/uploads/2025/07/logo_colatv_square.jpg","contentUrl":"https://cdn.colatvz.top/wp-content/uploads/2025/07/logo_colatv_square.jpg","caption":"Cola TV - Tr\u1ef1c Ti\u1ebfp B\u00f3ng \u0111\u00e1 Mi\u1ec5n Ph\u00ed, Xem ColaTV TTBD HD","inLanguage":"vi","width":"520","height":"520"}},{"@type":"WebSite","@id":"https://colatvttbd.tv/#website","url":"https://colatvttbd.tv","name":"Cola TV - Tr\u1ef1c Ti\u1ebfp B\u00f3ng \u0111\u00e1 Mi\u1ec5n Ph\u00ed, Xem ColaTV TTBD HD","alternateName":"Cola TV - Tr\u1ef1c Ti\u1ebfp B\u00f3ng \u0111\u00e1 HD","publisher":{"@id":"https://colatvttbd.tv/#organization"},"inLanguage":"vi","potentialAction":{"@type":"SearchAction","target":"https://colatvttbd.tv/?s={search_term_string}","query-input":"required name=search_term_string"}},{"@type":"ImageObject","@id":"https://cdn.admincltvio.com/wp-content/uploads/2025/07/og_image_colatv.png","url":"https://cdn.admincltvio.com/wp-content/uploads/2025/07/og_image_colatv.png","width":"1200","height":"630","inLanguage":"vi"},{"@type":"WebPage","@id":"https://colatvttbd.tv#webpage","url":"https://colatvttbd.tv","name":"Cola TV - Tr\u1ef1c ti\u1ebfp b\u00f3ng \u0111\u00e1 mi\u1ec5n ph\u00ed, xem ColaTV TTBD HD","datePublished":"2025-07-15T23:58:20+07:00","dateModified":"2025-07-17T21:38:44+07:00","about":{"@id":"https://colatvttbd.tv/#organization"},"isPartOf":{"@id":"https://colatvttbd.tv/#website"},"primaryImageOfPage":{"@id":"https://cdn.admincltvio.com/wp-content/uploads/2025/07/og_image_colatv.png"},"inLanguage":"vi"},{"@type":"Person","@id":"https://colatvttbd.tv/author/tranngocdung","name":"Tr\u1ea7n Ng\u1ecdc Dung","url":"https://colatvttbd.tv/author/tranngocdung","image":{"@type":"ImageObject","@id":"https://secure.gravatar.com/avatar/948d0950c2ce9bc05da824ef8de26cf178e6cb50de7c90aa818ac8e685a7a91f?s=96&amp;d=mm&amp;r=g","url":"https://secure.gravatar.com/avatar/948d0950c2ce9bc05da824ef8de26cf178e6cb50de7c90aa818ac8e685a7a91f?s=96&amp;d=mm&amp;r=g","caption":"Tr\u1ea7n Ng\u1ecdc Dung","inLanguage":"vi"},"worksFor":{"@id":"https://colatvttbd.tv/#organization"}},{"@type":"Article","headline":"Cola TV - Tr\u1ef1c ti\u1ebfp b\u00f3ng \u0111\u00e1 mi\u1ec5n ph\u00ed, xem ColaTV TTBD HD","keywords":"colatv","datePublished":"2025-07-15T23:58:20+07:00","dateModified":"2025-07-17T21:38:44+07:00","author":{"@id":"https://colatvttbd.tv/author/tranngocdung","name":"Tr\u1ea7n Ng\u1ecdc Dung"},"publisher":{"@id":"https://colatvttbd.tv/#organization"},"description":"ColaTV ph\u00e1t tr\u1ef1c ti\u1ebfp b\u00f3ng \u0111\u00e1 ch\u1ea5t l\u01b0\u1ee3ng cao, kh\u00f4ng gi\u1eadt lag. Xem b\u00f3ng \u0111\u00e1 tr\u1ef1c tuy\u1ebfn mi\u1ec5n ph\u00ed t\u1ea1i Cola TV c\u00f9ng \u0111\u1ed9i ng\u0169 BLV chuy\u00ean m\u00f4n cao.","name":"Cola TV - Tr\u1ef1c ti\u1ebfp b\u00f3ng \u0111\u00e1 mi\u1ec5n ph\u00ed, xem ColaTV TTBD HD","@id":"https://colatvttbd.tv#richSnippet","isPartOf":{"@id":"https://colatvttbd.tv#webpage"},"image":{"@id":"https://cdn.admincltvio.com/wp-content/uploads/2025/07/og_image_colatv.png"},"inLanguage":"vi","mainEntityOfPage":{"@id":"https://colatvttbd.tv#webpage"}}]}</script>
<!-- /Plugin SEO WordPress Rank Math -->

<link rel='dns-prefetch' href='//cdnjs.cloudflare.com' />
<link rel='dns-prefetch' href='//cdn.colatvttbd.tv' />
<script type="text/javascript">
/* <![CDATA[ */
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.1.0\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.1.0\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/cdn.colatvttbd.tv\/wp-content\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.8.1"}};
/*! This file is auto-generated */
!function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\ud83d\udd25","\ud83d\udc26\u200b\ud83d\udd25")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);
/* ]]> */
</script>
<style id='wp-emoji-styles-inline-css' type='text/css'>

	img.wp-smiley, img.emoji {
		display: inline !important;
		border: none !important;
		box-shadow: none !important;
		height: 1em !important;
		width: 1em !important;
		margin: 0 0.07em !important;
		vertical-align: -0.1em !important;
		background: none !important;
		padding: 0 !important;
	}
</style>
<link rel='stylesheet' id='wp-block-library-css' href='https://cdn.colatvttbd.tv/wp-content/wp-includes/css/dist/block-library/style.min.css?ver=6.8.1' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='slick-css-css' href='https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.css?ver=6.8.1' type='text/css' media='all' />
<link rel='stylesheet' id='slick-theme-css-css' href='https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick-theme.min.css?ver=6.8.1' type='text/css' media='all' />
<link rel='stylesheet' id='colatv-style-css' href='https://cdn.colatvttbd.tv/wp-content/themes/colatv-theme/style.css?ver=6.8.1' type='text/css' media='all' />
<link rel='stylesheet' id='custom-override-css' href='https://cdn.colatvttbd.tv/wp-content/themes/colatv-theme/override.css?ver=1787995520' type='text/css' media='all' />
<script type="text/javascript" src="https://cdn.colatvttbd.tv/wp-content/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
<script type="text/javascript" src="https://cdn.colatvttbd.tv/wp-content/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script>
<link rel="https://api.w.org/" href="https://colatvttbd.tv/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://colatvttbd.tv/wp-json/wp/v2/pages/1786" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://colatvttbd.tv/xmlrpc.php?rsd" />
<meta name="generator" content="WordPress 6.8.1" />
<link rel='shortlink' href='https://colatvttbd.tv/' />
<link rel="alternate" title="oNhúng (JSON)" type="application/json+oembed" href="https://colatvttbd.tv/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fcolatvttbd.tv%2F" />
<link rel="alternate" title="oNhúng (XML)" type="text/xml+oembed" href="https://colatvttbd.tv/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fcolatvttbd.tv%2F&#038;format=xml" />
    
    <!-- Google tag (tổng) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-V8GXMSME5N"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-V8GXMSME5N');
</script>

<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-98PFSS6HSM"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());

gtag('config', 'G-98PFSS6HSM');
</script>
    


</head>
<body class="home wp-singular page-template-default page page-id-1786 wp-theme-colatv-theme">
    <header class="header">
        <div class="header-content">
            <div class="logo">
                <a href="https://colatvttbd.tv">
                    <img src="https://cdn.colatvttbd.tv/wp-content/themes/colatv-theme/assets/images/logo.png" alt="ColaTV Logo">                </a>
            </div>
        </div>
        
            <nav class="nav-tabs">
            <ul id="menu-menu-chinh" class="nav-content"><div class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item nav-tab active"><a href="/"><span>🏠</span> Trang chủ</a></div><div class="menu-item menu-item-type-post_type menu-item-object-page nav-tab"><a href="https://colatvttbd.tv/lich-thi-dau"><span>🏠</span> Lịch thi đấu</a></div><div class="menu-item menu-item-type-post_type menu-item-object-page nav-tab"><a href="https://colatvttbd.tv/bang-xep-hang"><span>🏠</span> Bảng xếp hạng</a></div><div class="menu-item menu-item-type-post_type menu-item-object-page nav-tab"><a href="https://colatvttbd.tv/ket-qua-tran-dau"><span>🏠</span> Kết quả</a></div><div class="menu-item menu-item-type-post_type menu-item-object-page nav-tab"><a href="https://colatvttbd.tv/nhan-dinh-tran-dau"><span>🏠</span> Nhận định</a></div><div class="menu-item menu-item-type-taxonomy menu-item-object-category nav-tab"><a href="https://colatvttbd.tv/tin-bong-da"><span>🏠</span> Tin tức</a></div></ul>    </nav>
    
        <div class="header-buttons">
        <a class="btn btn-primary" href="https://refvsb.com/" target="_blank" rel="nofollow">
            Cược VSBET
        </a>
        <a class="btn btn-secondary" href="https://refvsb.com/" target="_blank" rel="nofollow">
            Nhận KM
        </a>

        <!-- NÚT MENU MOBILE (thêm mới) -->
        <button class="mobile-menu-toggle" aria-expanded="false" aria-label="Mở menu">
            <span></span>
            <span></span>
            <span></span>
        </button>
    </div>
    </header>
    
    <!-- OVERLAY MENU MOBILE (thêm mới) -->
<div class="mobile-menu-overlay"></div>

<main>
    <section class="hero">
        <div class="hero-content">
            <h1 style="margin: 1rem">Cola TV - Trực tiếp bóng đá miễn phí - Xem ColaTV TTBD HD</h1>

            <!-- Hero Slider (tự detect số ảnh trong .hero-slider__slide, autoplay 5s, swipe mobile) -->
            <section
              class="hero-slider"
              aria-label="Nổi bật"
              data-autoplay="5000"
            >
              <div class="hero-slider__viewport">
                <div class="hero-slider__track">
                  <!-- Bạn có thể thêm/bớt <article class="hero-slider__slide">…</article> tùy ý -->
                  <article class="hero-slider__slide">
                    <img
                      src="/wp-content/images/slide1.jpg"
                      alt="Highlight 1"
                      loading="eager"
                      decoding="async"
                    />
                  </article>
                  <article class="hero-slider__slide">
                    <img
                      src="/wp-content/images/slide2.jpg"
                      alt="Highlight 2"
                      loading="lazy"
                      decoding="async"
                    />
                  </article>
                  <article class="hero-slider__slide">
                    <img
                      src="/wp-content/images/slide4.jpg"
                      alt="Highlight 3"
                      loading="lazy"
                      decoding="async"
                    />
                  </article>
                </div>
              </div>

              <button class="hero-slider__btn hero-slider__btn--prev" type="button" aria-label="Slide trước">
                ‹
              </button>
              <button class="hero-slider__btn hero-slider__btn--next" type="button" aria-label="Slide tiếp">
                ›
              </button>

              <div class="hero-slider__dots" aria-label="Chọn slide"></div>
            </section>
        </div>
    </section>
    
    <nav class="sports-nav">
        <div class="sports-content">
            <div class="sports-tabs">
                <div class="sports-tab active" data-sport="all">
                    <span>🔥</span> TẤT CẢ
                </div>
                <div class="sports-tab" data-sport="football">
                    <span>⚽</span> BÓNG ĐÁ
                </div>
                <div class="sports-tab" data-sport="basketball">
                    <span>🏀</span> BÓNG RỔ
                </div>
            </div>
        </div>
    </nav>
    
    <div class="filters-nav">
    <div class="filters-content">
        <div class="filter-tabs">
            <div class="filter-tab active" data-filter="all">
                <img src="/wp-content/images/mic-icon.svg" alt="All">Tất cả <span id="count-all">0</span>
            </div>
            <div class="filter-tab" data-filter="live">
                <img src="/wp-content/images/live-icon.svg" alt="Live"> <span id="count-live">0</span>
            </div>
            <div class="filter-tab" data-filter="hot">
                <img src="/wp-content/images/hot-icon.svg" alt="Hot">Trận hot <span id="count-hot">0</span>
            </div>
            <div class="filter-tab" data-filter="today">
                <img src="/wp-content/images/calendar-icon.svg" alt="Today">Hôm nay <span id="count-today">0</span>
            </div>
            <div class="filter-tab" data-filter="tomorrow">
                <img src="/wp-content/images/calendar-icon.svg" alt="Tomorrow">Ngày mai <span id="count-tomorrow">0</span>
            </div>
        </div>
    </div>
</div>
    
    <section class="matches-section">
        <div class="matches-grid">
            <!-- Matches will be populated by JavaScript -->
        </div>
    </section>
    
    <section class="content-nav">
      <div class="container">
        <div class="content-nav__container" style="display: flex; gap: 20px; max-height: 800px !important;">
          
          <!-- Cột trái: Mục lục (33%) -->
          <div class="content-nav__lists" style="flex: 1;">
            <div class="content-nav__list">
              <p style="font-weight: bold; font-size: 120%">Mục Lục</p>
              <div class="content-nav__divider"></div>
              <!-- Có thể thêm danh sách mục lục tự tạo hoặc TOC tự động ở đây -->
            </div>
          </div>
    
          <!-- Cột phải: Nội dung bài viết (66%) -->
          <div class="content-nav__content" style="flex: 2;">
            <div class="content-nav__text">
              
<p><a href="/"><strong>ColaTV</strong></a>&nbsp;được đánh giá là trang web trực tiếp bóng đá uy tín, mang đến cho người hâm mộ những trận cầu đỉnh cao với chất lượng hình ảnh sắc nét nhất. Không chỉ phát sóng miễn phí, đơn vị còn có thêm nhiều tính năng thú vị giúp trải nghiệm của bạn được trọn vẹn nhất.</p>



<h2 class="wp-block-heading">Giới thiệu Cola TV &#8211; trang trực tiếp bóng đá uy tín</h2>



<p>Cola TV được biết đến là nền tảng chuyên cung cấp dịch vụ xem bóng đá trực tiếp miễn phí với chất lượng cao. Người hâm mộ có thể nhanh chóng theo dõi các trận đấu từ các giải hàng đầu thế giới như Champions League, Ngoại hạng Anh, La Liga, Serie A, Bundesliga, World Cup, Euro và nhiều giải quốc gia khác.</p>



<h3 class="wp-block-heading">Lịch sử thành lập trang web Cola TV</h3>



<p>ColaTV được thành lập với mục tiêu mang đến cho người hâm mộ nền tảng xem bóng đá miễn phí, chất lượng cao mà không gặp phải những phiền toái như quảng cáo gây gián đoạn hay đường truyền kém ổn định. Từ những ngày đầu, đội ngũ phát triển đã tập trung xây dựng hệ thống server mạnh mẽ, tối ưu hóa tốc độ phát sóng cho trang.</p>



<p>Trải qua nhiều năm phát triển, đơn vị không ngừng cải thiện chất lượng dịch vụ, mở rộng danh sách giải đấu lớn được phát sóng tại đây và tích hợp thêm nhiều tính năng hữu ích. Hiện tại, trang web không chỉ phục vụ người xem tại Việt Nam mà còn thu hút sự quan tâm của cộng đồng người hâm mộ quốc tế.</p>



<figure class="wp-block-image"><img decoding="async" src="https://colatvz.top/wp-content/uploads/2025/07/AD_4nXeA5paEUdFrq_mP3pdvHF2RKCfV5NYtanPDG0jzt816XTYRIO-2xEOodAnHG-ungPl97UWxN0Ox5ANHX8anPU03XaJFmGefwi4tRUp7P-B8_Lk81MqG-XpadIOOj8fbpFs8sYVP3wkeyknPgc1sgBVnChbIp8wqFnvmS.jpg" alt=""/></figure>



<p>Tổng quan thành lập trang web Cola TV</p>



<h3 class="wp-block-heading">Định hướng quan trọng trong tương lai của trang web</h3>



<p>Với tầm nhìn dài hạn, đơn vị đặt ra những mục tiêu phát triển quan trọng trong tương lai nhằm mang lại trải nghiệm tốt nhất cho người xem. Dưới đây là một vài khía cạnh về định hướng của trang web:</p>



<ul class="wp-block-list">
<li>Trang web sẽ tiếp tục mở rộng hệ thống server của mình để đảm bảo tốc độ phát sóng ổn định hơn, hạn chế tối đa tình trạng giật lag ngay cả trong những trận cầu đinh có lượng người theo dõi truy cập cao.</li>



<li>Cola TV dự kiến sẽ mở rộng danh sách giải đấu, bao gồm cả những giải cầu thủ trẻ, giải nữ và các lượt đối đầu trong khu vực nhằm đáp ứng nhu cầu đa dạng của người hâm mộ.</li>



<li>Trang web hướng tới việc tích hợp thêm các tính năng tương tác ngay tại trang web như bình luận trực tiếp cho người xem để tạo ra một cộng đồng bóng đá sôi động.</li>
</ul>



<p>Nhìn chung, định hướng quan trọng trong tương lai của trang web ColaTV chính là không ngừng nâng cao chất lượng dịch vụ, mở rộng nội dung để mang đến trải nghiệm bóng đá toàn diện nhất cho người dùng. Chính vì thế, nếu bạn đang tìm kiếm một địa chỉ xem bóng đá trực tuyến thì đây sẽ là sự lựa chọn phù hợp.</p>



<h2 class="wp-block-heading">Các quyền lợi hấp dẫn của trang bóng đá trực tuyến&nbsp;Cola TV</h2>



<p>ColaTV không chỉ là một trang web phát sóng&nbsp;<a href="/"><strong>trực tiếp bóng đá</strong></a>&nbsp;mà còn đảm bảo mang đến nhiều quyền lợi hấp dẫn cho người xem. Khi truy cập, người dùng có thể theo dõi mọi giải đấu lớn trên thế giới với chất lượng cao và các ưu điểm thú vị dưới đây.</p>



<h3 class="wp-block-heading">Cung cấp nhiều giải đấu lớn theo quy mô quốc tế</h3>



<p>Một trong những ưu điểm nổi bật của Cola TV là khả năng phát sóng đa dạng các giải đấu bóng đá từ khắp nơi trên thế giới. Người hâm mộ có thể theo dõi các giải đấu hàng đầu cùng với các giải cấp đội tuyển quốc gia.</p>



<p>ColaTV còn phát sóng các giải đấu trẻ, điều này giúp người hâm mộ dễ dàng tiếp cận với mọi trận đấu mình yêu thích. Với tiêu chí phục vụ mọi nhu cầu của người xem, đơn vị luôn cam kết mang đến nguồn phát sóng đa dạng nhất.</p>



<figure class="wp-block-image"><img decoding="async" src="https://colatvz.top/wp-content/uploads/2025/07/AD_4nXc32yg7Q6yVbS6E6zKoOSEDwQph5P7Kkk3FRpR5aSUzSerRwSFtRuvwNtF-RvMdzo47Dvz1VCVA268FOx7NYSotBNOcc6CkSisHYs58eDXRBkEwj0HNYKY31cdgGZvUI24ZGNAHuAkeyknPgc1sgBVnChbIp8wqFnvmS.jpg" alt=""/></figure>



<p>Nhiều giải đấu lớn xuất hiện tại trang web</p>



<h3 class="wp-block-heading">Xem bóng đá&nbsp;chất lượng không lo bị gián đoạn</h3>



<p>Khi xem bóng đá trực tiếp tại đây chất lượng đường truyền luôn là yếu tố quan trọng quyết định trải nghiệm của người xem. Đơn vị hiện đang sử dụng hệ thống máy chủ tiên tiến, điều này cũng là cơ sở giúp tối ưu hóa tốc độ phát sóng và giảm thiểu tối đa tình trạng giật lag khi bạn xem bóng.</p>



<p>Không chỉ vậy, đội ngũ admin tại trang web còn thường xuyên kiểm tra và nâng cấp hệ thống để đảm bảo chất lượng phát sóng ổn định nhất. Nhờ đó, dù có lượng người truy cập lớn, đơn vị vẫn có thể duy trì đường truyền mượt mà để bạn không gặp gián đoạn.</p>



<h3 class="wp-block-heading">Hình ảnh và âm thanh rõ nét nắm bắt chi tiết trận đấu</h3>



<p>ColaTV luôn đảm bảo chú trọng đến chất lượng hình ảnh và âm thanh để mang lại trải nghiệm xem tốt nhất cho bạn. Trang web hiện đang cung cấp video livestream ngay tại sân vận động với độ phân giải cao, từ đó giúp người xem nắm bắt được từng pha bóng, từng đường chuyền một cách rõ ràng nhất.</p>



<p>Bên cạnh đó, nhờ vào hệ thống âm thanh sống động, trung thực giúp người hâm mộ có cảm giác như đang theo dõi trực tiếp ngay trên sân vận động. Đây cũng là cơ sở giúp đơn vị ngày càng trở nên phổ biến hơn trên thị trường.</p>



<figure class="wp-block-image"><img decoding="async" src="https://colatvz.top/wp-content/uploads/2025/07/AD_4nXdKHk7RjdlpU7lYa_20zzCZjdmgUy1A4qJLVRmDE-bNzr8WIqzMAkziXK9nbq4yngJgd5H46rfQKSSxgOAYcKOqAgvPuiuMh9oKgcahtTu9Tw5zrOigW1XODyolbjXVhJ1rwL3gkeyknPgc1sgBVnChbIp8wqFnvmS.jpg" alt=""/></figure>



<p>Đảm bảo đường truyền hình ảnh và âm thanh hấp dẫn</p>



<h3 class="wp-block-heading">Xem bóng đá không lo gặp quảng cáo khi theo dõi</h3>



<p>Một trong những điểm khiến nhiều người khó chịu khi xem bóng đá trực tuyến chính là tình trạng quảng cáo chen ngang trong trận đấu. Tuy nhiên, đơn vị hiện đã tối ưu hóa trải nghiệm người dùng bằng cách loại bỏ hoàn toàn các hình ảnh gây phiền nhiễu.</p>



<p>Khi truy cập vào trang web, bạn có thể ngay lập tức theo dõi trận đấu và nắm bắt tin tức nhanh chóng mà không bị làm phiền bởi những banner quảng cáo hoặc video che mất màn hình. Điều này cũng giúp làm tăng sự mượt mà của đường truyền, tránh tình trạng giật lag do nặng dữ liệu.</p>



<p>Điều này giúp Cola TV ghi điểm trong mắt người hâm mộ và trở thành một lựa chọn hàng đầu cho những ai muốn tận hưởng trận đấu trọn vẹn nhất. Nếu bạn cũng quan tâm về vấn đề đó, địa chỉ này chắc chắn sẽ là một phương án giải quyết hiệu quả nhất.</p>



<h3 class="wp-block-heading">Cung cấp hàng loạt link dự phòng ổn định</h3>



<p>Nhằm đảm bảo trải nghiệm xem trực tiếp bóng đá mượt mà và không bị gián đoạn, đơn vị hiện đang cung cấp nhiều link dự phòng cho mỗi trận đấu. Điều này giúp người dùng có thể dễ dàng chuyển đổi sang một đường truyền khác nếu gặp sự cố tại link chính thức.</p>



<p>Các link dự phòng trên trang web đều đã được kiểm tra kỹ lưỡng trước khi phát sóng, điều này giúp đảm bảo chất lượng hình ảnh và âm thanh không thay đổi. Nhờ vậy, người xem luôn có thể tận hưởng trận đấu mà không phải lo lắng về vấn đề kết nối trong khi các tình tiết bóng đang diễn ra.</p>



<h3 class="wp-block-heading">Theo dõi không cần đăng ký tài khoản Cola TV</h3>



<p>Không giống như nhiều trang web khác yêu cầu người dùng phải đăng ký tài khoản trước khi xem, đơn vị hiện đang cho phép bạn truy cập trực tiếp và theo dõi trận đấu ngay lập tức. Việc này giúp tiết kiệm thời gian, tránh những rắc rối không cần thiết về bảo mật và đảm bảo tính tiện lợi tối đa cho người xem.</p>



<p>Ngoài ra, người dùng cũng không cần phải cung cấp thông tin cá nhân hay thực hiện bất kỳ bước xác minh nào trên hệ thống của trang web. Điều này cũng giúp bảo mật thông tin người xem và tạo sự thoải mái cho bạn khi theo dõi bóng đá trực tuyến.</p>



<figure class="wp-block-image"><img decoding="async" src="https://colatvz.top/wp-content/uploads/2025/07/AD_4nXeTBz90Yzxr9V_JtIYf_vD0mCla9mSi2XBlR4qih-b8xBQoMzVi3xJsJBJbhR1j3UvdgW_3EYFWqsz12apUdBlZ2pDDJ6mwHLBjgZho4a08Jr0K6qdprg_iTk55TQNiy1XuskaezQkeyknPgc1sgBVnChbIp8wqFnvmS.jpg" alt=""/></figure>



<p>Xem bóng không cần tiến hành đăng ký</p>



<h2 class="wp-block-heading">Các nội dung hấp dẫn trên trang trực tiếp bóng đá Cola TV</h2>



<p>Bên cạnh việc phát sóng trực tiếp các trận đấu, Cola TV còn mang đến nhiều nội dung hấp dẫn khác giúp người hâm mộ cập nhật đầy đủ thông tin về bộ môn bóng đá. Hãy cùng điểm qua một vài khía cạnh thú vị tại địa chỉ uy tín này.</p>



<h3 class="wp-block-heading">Cung cấp link xem bóng đá trực tiếp theo từng giải đấu</h3>



<p>Cola TV liên tục cập nhật các link xem bóng đá trực tiếp cho mọi trận đấu trong khuôn khổ khác nhau, chính điều này đảm bảo người dùng luôn có thể tìm thấy đường truyền phù hợp nhất. Các link đó đều được chọn lọc kỹ lưỡng, cung cấp chất lượng HD, âm thanh rõ ràng, giúp người xem có trải nghiệm trọn vẹn cho bản thân.</p>



<p>Ngoài ra, trang web cũng đang tích hợp các link dự phòng để tránh tình trạng mất kết nối khi trận đấu đang diễn ra. Bạn có thể ngay lập tức chuyển sang link khác mà không bị gián đoạn, điều đó giúp người theo dõi có thể nắm bắt được mọi tình tiết.</p>



<h3 class="wp-block-heading">Theo dõi lịch thi đấu từng giải cụ thể</h3>



<p>Cola TV cung cấp <strong><a href="/lich-thi-dau">lịch thi đấu</a></strong> chi tiết cho từng giải đấu, điều này đảm bảo giúp người hâm mộ dễ dàng theo dõi và sắp xếp thời gian để không bỏ lỡ trận cầu quan trọng. Các lịch này đều được cập nhật theo thời gian thực, hiển thị đầy đủ thông tin về ngày, giờ, địa điểm và các đội bóng sẽ tham gia thi đấu.</p>



<p>Người dùng có thể đặt thông báo trên trang web và điện thoại để không quên thời gian trận đấu mình mong chờ. Cola TV mang đến sự tiện lợi tối đa, giúp người hâm mộ bóng đá luôn chủ động trong việc theo dõi các giải đấu yêu thích.</p>



<figure class="wp-block-image"><img decoding="async" src="https://colatvz.top/wp-content/uploads/2025/07/AD_4nXcO9Slg3EimoQhE2VKfOseZCXou1p4_xbyiZdhqSBiNllmsUJ_oRgWuD-jJlRVPkV6fIFWBBWHtJbIj4kAk-pomW_8zm0DAVpa1xdveLBYdIeRvJL9n5yopveZaXOpZLBQt3Bm7dQkeyknPgc1sgBVnChbIp8wqFnvmS.jpg" alt=""/></figure>



<p>Cập nhật lịch thi đấu liên tục mỗi giai đoạn</p>



<h3 class="wp-block-heading">Bảng xếp hạng các đội bóng trong từng giải cập nhật liên tục</h3>



<p><strong><a href="/bang-xep-hang">Bảng xếp hạng</a></strong> là một trong những nội dung quan trọng giúp người hâm mộ nắm bắt tình hình của từng đội bóng trong mỗi giải đấu lớn. Cola TV hiện đang cung cấp bảng thống kê chi tiết cho mọi giải lớn nhỏ trên thế giới. Tại đó bạn có thể biết được những chỉ số để hiểu được đội mà mình yêu thích đang có phong độ thế nào.</p>



<p>Dữ liệu trong bảng xếp hạng được cập nhật liên tục theo kết quả của các trận đấu mới nhất trong thời gian thực. Chính điều này giúp người dùng có thể theo dõi sự thay đổi trong thứ hạng của các đội bóng một cách chính xác và nhanh chóng, không cần xem tại nhiều nguồn.</p>



<h3 class="wp-block-heading">Soi kèo bóng đá chuẩn xác theo chuyên gia mỗi trận đấu</h3>



<p>Cola TV cung cấp chuyên mục nhận định bóng đá với những phân tích chuyên sâu từ các chuyên gia giàu kinh nghiệm hiện nay. Những bài viết tại đây đều đã được nghiên cứu kỹ lưỡng dựa trên các yếu tố thống kê về phong độ, lịch sử đối đầu, đội hình ra sân,&#8230;</p>



<p>Cola TV hiện đang cung cấp nhận định về kèo châu Á, châu Âu, Tài xỉu và nhiều loại khác phổ biến theo xu hướng. Những thông tin này giúp người hâm mộ có cái nhìn khách quan hơn trước khi đưa ra dự đoán kết quả trận đấu để đặt tiền hiệu quả nhất.</p>



<h3 class="wp-block-heading">Cập nhật các tin tức quan trọng từng giải đấu</h3>



<p>Cola TV không chỉ tập trung vào việc phát sóng mà còn liên tục cung cấp thông tin bóng đá nhanh chóng và chính xác theo từng thời điểm. Bạn có thể cập nhật những tin tức mới nhất về việc chuyển nhượng, chấn thương cầu thủ và sự kiện quan trọng diễn ra trong từng giải đấu được đưa ra.</p>



<figure class="wp-block-image"><img decoding="async" src="https://colatvz.top/wp-content/uploads/2025/07/AD_4nXfl3ej5M6QdDQYAtrvi8AtOMPU8Lh6ZC31puwveipTggIjtPb_9KdlL3ABpY0HMm3iQxDYywCx7WHK5LYhkB8hfz8duJCKC6tNsQtusGAz40ylYlEmGGU0B1cY8508bQE7dzmllCwkeyknPgc1sgBVnChbIp8wqFnvmS.jpg" alt=""/></figure>



<p>Cung cấp đa dạng tin tức quan trọng nổi bật</p>



<h2 class="wp-block-heading">Kết luận</h2>



<p>Trên đây là một vài thông tin giới thiệu về trang trực tiếp bóng đá Cola TV được yêu thích nhất. Hãy nhanh chóng truy cập và theo dõi những trận cầu đỉnh cao thú vị trên địa chỉ uy tín.</p>
            </div>
          </div>
    
        </div>
      </div>
    </section>
</main>

<style>
  .hero-slider {
    position: relative;
    width: 100%;
    margin-top: 14px;
    border-radius: 16px;
    overflow: hidden;
    background: #0b1220;
  }

  .hero-slider__viewport {
    overflow: hidden;
    width: 100%;
    touch-action: pan-y;
    user-select: none;
    cursor: grab;
  }

  .hero-slider__track {
    display: flex;
    will-change: transform;
    transform: translate3d(0, 0, 0);
    transition: transform 380ms ease;
  }

  .hero-slider__slide {
    flex: 0 0 100%;
    position: relative;
    background: #0b1220;
  }

  .hero-slider__slide img {
    width: 100%;
    display: block;
    object-fit: cover;
    object-position: center;
    user-select: none;
    -webkit-user-drag: none;
  }

  .hero-slider__btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 44px;
    height: 44px;
    border-radius: 999px;
    border: 1px solid rgba(255, 255, 255, 0.18);
    background: rgba(0, 0, 0, 0.35);
    color: #fff;
    font-size: 28px;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
  }

  .hero-slider__btn:hover {
    background: rgba(0, 0, 0, 0.5);
  }

  .hero-slider__btn:focus-visible {
    outline: 2px solid rgba(255, 255, 255, 0.75);
    outline-offset: 2px;
  }

  .hero-slider__btn--prev {
    left: 10px;
  }
  .hero-slider__btn--next {
    right: 10px;
  }

  .hero-slider__dots {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    bottom: 10px;
    display: flex;
    gap: 8px;
    padding: 8px 10px;
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.35);
    border: 1px solid rgba(255, 255, 255, 0.16);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
  }

  .hero-slider__dot {
    width: 9px;
    height: 9px;
    border-radius: 999px;
    border: 0;
    background: rgba(255, 255, 255, 0.45);
    cursor: pointer;
    padding: 0;
  }

  .hero-slider__dot[aria-current="true"] {
    width: 22px;
    background: rgba(255, 255, 255, 0.95);
  }

  @media (max-width: 768px) {
    .hero-slider__btn {
      width: 40px;
      height: 40px;
      font-size: 26px;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .hero-slider__track {
      transition: none;
    }
  }
</style>

<script>
  (function () {
    function initHeroSlider(root) {
      var viewport = root.querySelector(".hero-slider__viewport");
      var track = root.querySelector(".hero-slider__track");
      if (!viewport || !track) return;

      var slides = Array.prototype.slice.call(track.querySelectorAll(".hero-slider__slide"));
      var btnPrev = root.querySelector(".hero-slider__btn--prev");
      var btnNext = root.querySelector(".hero-slider__btn--next");
      var dotsWrap = root.querySelector(".hero-slider__dots");
      var autoplayMs = parseInt(root.getAttribute("data-autoplay") || "0", 10);
      if (isNaN(autoplayMs)) autoplayMs = 0;

      var canAutoplay = autoplayMs > 0;

      var index = 0;
      var timer = null; // setTimeout id
      var isPointerDown = false;
      var startX = 0;
      var lastX = 0;
      var deltaX = 0;
      var startT = 0;
      var raf = null;

      function slideWidth() {
        return viewport.clientWidth || 1;
      }

      function clampIndex(i) {
        var n = slides.length;
        if (n <= 0) return 0;
        if (i < 0) return n - 1;
        if (i >= n) return 0;
        return i;
      }

      function renderDots() {
        if (!dotsWrap) return;
        dotsWrap.innerHTML = "";
        slides.forEach(function (_, i) {
          var b = document.createElement("button");
          b.type = "button";
          b.className = "hero-slider__dot";
          b.setAttribute("aria-label", "Tới slide " + (i + 1));
          b.setAttribute("aria-current", i === index ? "true" : "false");
          b.addEventListener("click", function () {
            goTo(i, true);
          });
          dotsWrap.appendChild(b);
        });
      }

      function updateDots() {
        if (!dotsWrap) return;
        var dots = dotsWrap.querySelectorAll(".hero-slider__dot");
        for (var i = 0; i < dots.length; i++) {
          dots[i].setAttribute("aria-current", i === index ? "true" : "false");
        }
      }

      function applyTransform(px, animate) {
        if (!track) return;
        track.style.transition = animate ? "" : "none";
        track.style.transform = "translate3d(" + px + "px, 0, 0)";
        if (!animate) {
          // restore transition on next frame
          cancelAnimationFrame(raf);
          raf = requestAnimationFrame(function () {
            track.style.transition = "";
          });
        }
      }

      function goTo(i, userInitiated) {
        index = clampIndex(i);
        var x = -index * slideWidth();
        applyTransform(x, true);
        updateDots();
        if (userInitiated) restartAutoplaySoon();
      }

      function next(userInitiated) {
        goTo(index + 1, userInitiated);
      }

      function prev(userInitiated) {
        goTo(index - 1, userInitiated);
      }

      function stopAutoplay() {
        if (timer) window.clearTimeout(timer);
        timer = null;
      }

      function startAutoplay() {
        if (!canAutoplay || slides.length <= 1) return;
        stopAutoplay();
        timer = window.setTimeout(function tick() {
          next(false);
          timer = window.setTimeout(tick, autoplayMs);
        }, autoplayMs);
      }

      function restartAutoplaySoon() {
        if (!canAutoplay) return;
        stopAutoplay();
        window.setTimeout(startAutoplay, 1200);
      }

      function setControlsVisible(visible) {
        if (btnPrev) btnPrev.style.display = visible ? "" : "none";
        if (btnNext) btnNext.style.display = visible ? "" : "none";
        if (dotsWrap) dotsWrap.style.display = visible ? "" : "none";
      }

      function onPointerDown(e) {
        if (slides.length <= 1) return;
        isPointerDown = true;
        stopAutoplay();

        startX = (e.touches && e.touches[0] ? e.touches[0].clientX : e.clientX) || 0;
        lastX = startX;
        deltaX = 0;
        startT = Date.now();

        applyTransform(-index * slideWidth(), false);
      }

      function onPointerMove(e) {
        if (!isPointerDown) return;
        var x = (e.touches && e.touches[0] ? e.touches[0].clientX : e.clientX) || 0;
        deltaX = x - startX;
        lastX = x;
        applyTransform(-index * slideWidth() + deltaX, false);
      }

      function onPointerUp() {
        if (!isPointerDown) return;
        isPointerDown = false;

        var w = slideWidth();
        var dt = Math.max(1, Date.now() - startT);
        var vx = (lastX - startX) / dt; // px/ms

        var threshold = Math.min(90, w * 0.2);
        var shouldGoNext = deltaX < -threshold || vx < -0.6;
        var shouldGoPrev = deltaX > threshold || vx > 0.6;

        if (shouldGoNext) next(true);
        else if (shouldGoPrev) prev(true);
        else goTo(index, false);

        restartAutoplaySoon();
      }

      function onResize() {
        // giữ đúng vị trí khi đổi size
        applyTransform(-index * slideWidth(), true);
      }

      // Init
      if (slides.length <= 1) {
        setControlsVisible(false);
      } else {
        setControlsVisible(true);
      }
      renderDots();
      goTo(0, false);
      startAutoplay();

      if (btnPrev) btnPrev.addEventListener("click", function () { prev(true); });
      if (btnNext) btnNext.addEventListener("click", function () { next(true); });

      // Pause/resume on hover/focus for desktop
      root.addEventListener("mouseenter", stopAutoplay);
      root.addEventListener("mouseleave", startAutoplay);
      root.addEventListener("focusin", stopAutoplay);
      root.addEventListener("focusout", startAutoplay);

      // Pause khi tab/background, resume khi quay lại
      document.addEventListener("visibilitychange", function () {
        if (document.hidden) stopAutoplay();
        else startAutoplay();
      });

      // Touch/Pointer swipe
      viewport.addEventListener("touchstart", onPointerDown, { passive: true });
      viewport.addEventListener("touchmove", onPointerMove, { passive: true });
      viewport.addEventListener("touchend", onPointerUp, { passive: true });
      viewport.addEventListener("mousedown", function (e) {
        e.preventDefault();
        onPointerDown(e);
      });
      viewport.addEventListener("dragstart", function (e) { e.preventDefault(); });
      window.addEventListener("mousemove", function (e) { onPointerMove(e); });
      window.addEventListener("mouseup", onPointerUp);

      window.addEventListener("resize", onResize);
    }

    var sliders = document.querySelectorAll(".hero-slider");
    for (var i = 0; i < sliders.length; i++) initHeroSlider(sliders[i]);
  })();
</script>
<footer class="footer">
    <section class="footer-1">
        <div class="footer-content">
            <div class="footer-sections" style="margin-bottom: 20px">
                <a href="https://colatvttbd.tv" class="footer-logo">
                    <img src="https://cdn.colatvttbd.tv/wp-content/themes/colatv-theme/assets/images/logo.png" alt="ColaTV Logo">
                </a>
                <div class="social-icons">
                    <a href="#"><img src="https://cdn.colatvttbd.tv/wp-content/themes/colatv-theme/assets/images/icon_facebook.png" alt="Facebook"></a>
                    <a href="#"><img src="https://cdn.colatvttbd.tv/wp-content/themes/colatv-theme/assets/images/icon_youtube.png" alt="YouTube"></a>
                    <a href="#"><img src="https://cdn.colatvttbd.tv/wp-content/themes/colatv-theme/assets/images/icon_instagram.png" alt="Instagram"></a>
                    <a href="#"><img src="https://cdn.colatvttbd.tv/wp-content/themes/colatv-theme/assets/images/icon_x.png" alt="X"></a>
                </div>
            </div>

            <div class="content">
                                    <div class="card">
                        <a class="link-card" href="https://t.me/vsthethao" target="_blank" rel="nofollow"></a>
                        <img src="https://cdn.colatvttbd.tv/wp-content/themes/colatv-theme/assets/images/hotro_khachhang.png">
                        <div>
                            <div class="box-title">Hỗ trợ khách hàng</div>
                            <a href="https://t.me/vsthethao" class="footer-link">
                                <img src="https://cdn.colatvttbd.tv/wp-content/themes/colatv-theme/assets/images/icon_small_telegram.png">
                                colatvlive                            </a>
                        </div>
                    </div>
                                        <div class="card">
                        <a class="link-card" href="https://colatv.live" target="_blank" rel="nofollow"></a>
                        <img src="https://cdn.colatvttbd.tv/wp-content/themes/colatv-theme/assets/images/bg-live-1.webp">
                        <div>
                            <div class="box-title">Link trực tiếp bóng đá 1</div>
                            <a href="https://colatv.live" class="footer-link">
                                <img src="https://cdn.colatvttbd.tv/wp-content/themes/colatv-theme/assets/images/icon_small_link.png">
                                Xem ngay                            </a>
                        </div>
                    </div>
                                        <div class="card">
                        <a class="link-card" href="https://colatv.live" target="_blank" rel="nofollow"></a>
                        <img src="https://cdn.colatvttbd.tv/wp-content/themes/colatv-theme/assets/images/bg-live-2.webp">
                        <div>
                            <div class="box-title">Link trực tiếp bóng đá 2</div>
                            <a href="https://colatv.live" class="footer-link">
                                <img src="https://cdn.colatvttbd.tv/wp-content/themes/colatv-theme/assets/images/icon_small_link.png">
                                Xem ngay                            </a>
                        </div>
                    </div>
                                </div>
        </div>
    </section>
    <section class="footer-2">
        <div class="footer-content" style="padding-top: 20px">
            <div class="footer-sections">
                <div class="footer-section fs-1">
                    <p>Giới thiệu trang <span style="font-weight: bold, color: #FF993B">ColaTV</span> - Trực tiếp bóng đá HD</p>
                    <p><a href="/" title="ColaTV" style="color: #f37a0c; font-weight: bold;">ColaTV</a> phát trực tiếp bóng đá chất lượng cao ở tất cả giải đấu trên thế giới. Xem bóng đá trực tuyến ColaTV miễn phí cùng đội ngũ BLV chuyên môn cao, am hiểu kèo cược.</p>
                </div>
                <div class="footer-section fs-2" style="text-align: right;">
                    <img src="/wp-content/uploads/2025/07/dmca.webp" style="max-width: 100px;">
                </div>
            </div>

            <div class="footer-bottom">
              <div style="display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center;" class="footer-nap">
                <div style="flex: 1 1 60%; text-align: center">
                  <span>T: <a href="tel:09768421098" style="color: #f37a0c; text-decoration: none;">09768421098</a></span> |
                  <span>E: <a href="/cdn-cgi/l/email-protection#d7a4a2a7a7b8a5a397b4b8bbb6a3a1f9beb8" style="color: #f37a0c; text-decoration: none;"><span class="__cf_email__" data-cfemail="fb888e8b8b94898fbb9894979a8f8dd59294">[email&#160;protected]</span></a></span> |
                  <span>A: 11A Bình Chiểu, P. 6, Q. Thủ Đức, TP. Hồ Chí Minh</span>
                </div>
                <div class="copy-right" style="text-align: right; flex: 1 1 30%;">
                  <div style="margin-top: 8px; text-align: center">
                    <a href="#" style="color: #f37a0c; margin-right: 10px; text-decoration: none;">RSS</a> |
                    <a href="/gioi-thieu" style="color: #f37a0c; margin: 0 10px; text-decoration: none;">Giới thiệu</a> |
                    <a href="/lien-he" style="color: #f37a0c; margin: 0 10px; text-decoration: none;">Liên hệ</a> |
                    <a href="/dieu-khoan-su-dung" style="color: #f37a0c; margin-left: 10px; text-decoration: none;">Điều khoản sử dụng</a> |
                    <a href="/chinh-sach-bao-mat" style="color: #f37a0c; margin-left: 10px; text-decoration: none;">Chính sách bảo mật</a> |
                    <a href="/ban-quyen" style="color: #f37a0c; margin-left: 10px; text-decoration: none;">Bản quyền</a> |
                    <a href="/mien-tru-trach-nhiem" style="color: #f37a0c; margin-left: 10px; text-decoration: none;">Miễn trừ trách nhiệm</a>
                  </div>
                  
                    <div class="copyright">Copyright © 2025 Cola TV Official. All rights reserved</div>
                </div>
            </div>
        </div>
    </section>
</footer>

    <div class="fixed-bottom-menu">
        <a class="menu-item active" href="/" rel="nofollow">
            <img src="https://cdn.colatvttbd.tv/wp-content/wp-content/uploads/2025/07/ball_icon.webp" alt="Trực tiếp">
            <span>TRỰC TIẾP</span>
        </a>
        <a class="menu-item" href="/lich-thi-dau" rel="nofollow">
            <img src="https://cdn.colatvttbd.tv/wp-content/wp-content/uploads/2025/07/v114_78.png" alt="Lịch thi đấu">
            <span>LỊCH</span>
        </a>
        <a class="menu-item" href="/bang-xep-hang" rel="nofollow">
            <img src="https://cdn.colatvttbd.tv/wp-content/wp-content/uploads/2025/07/v134_98-1.png" alt="Bảng xếp hạng">
            <span>BXH</span>
        </a>
        <a class="menu-item" href="/ket-qua-bong-da" rel="nofollow">
            <img src="https://cdn.colatvttbd.tv/wp-content/wp-content/uploads/2025/07/v134_102-1.png" alt="Kết quả">
            <span>KẾT QUẢ</span>
        </a>
        <a class="menu-item" href="/nhan-dinh" rel="nofollow">
            <img src="https://cdn.colatvttbd.tv/wp-content/wp-content/uploads/2025/07/v134_106-1.png" alt="Nhận định">
            <span>NHẬN ĐỊNH</span>
        </a>
    </div>
    
<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"\/*"},{"not":{"href_matches":["\/wp-*.php","\/wp-admin\/*","\/wp-content\/uploads\/*","\/wp-content\/*","\/wp-content\/plugins\/*","\/wp-content\/themes\/colatv-theme\/*","\/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
        <script>
        // Update filter counts based on selected sport
        function updateFilterCounts(allMatchCards) {
            const selectedSport = currentFilters.sport;
            
            // Filter cards by selected sport first
            const filteredBySport = Array.from(allMatchCards).filter(card => 
                selectedSport === 'all' || card.dataset.sport === selectedSport
            );

            // Today and tomorrow dates
            const today = new Date().toISOString().split('T')[0];
            const tomorrow = new Date(Date.now() + 86400000).toISOString().split('T')[0];

            // Update counts for filter tabs (based on selected sport)
            const countAll = document.getElementById('count-all');
            if (countAll) countAll.textContent = filteredBySport.length;

            const liveElement = document.getElementById('count-live');
            if (liveElement) {
                const liveCount = filteredBySport.filter(card => card.dataset.live === 'true').length;
                liveElement.textContent = liveCount;
            }

            const hotElement = document.getElementById('count-hot');
            if (hotElement) {
                const hotCount = filteredBySport.filter(card => card.dataset.hot === 'true').length;
                hotElement.textContent = hotCount;
            }

            const todayElement = document.getElementById('count-today');
            if (todayElement) {
                const todayCount = filteredBySport.filter(card => card.dataset.date === today).length;
                todayElement.textContent = todayCount;
            }

            const tomorrowElement = document.getElementById('count-tomorrow');
            if (tomorrowElement) {
                const tomorrowCount = filteredBySport.filter(card => card.dataset.date === tomorrow).length;
                tomorrowElement.textContent = tomorrowCount;
            }

            const noCommentatorElement = document.getElementById('count-no-commentator');
            if (noCommentatorElement) {
                const noCommentatorCount = filteredBySport.filter(card => {
                    const blvList = card.querySelector('.blv-list');
                    return !blvList || blvList.children.length === 0 || blvList.textContent.includes('Không có BLV');
                }).length;
                noCommentatorElement.textContent = noCommentatorCount;
            }
        }

        // Map sport ID to name
        function sportName(sportId) {
            const sports = {
                1: 'football',
                2: 'basketball',
            };
            return sports[sportId] || 'unknown';
        }

        // Fix timestamp
        function fixtime(timestamp) {
            return isNaN(timestamp) ? new Date(timestamp).getTime() : timestamp;
        }

        // Format date
        function formatDate(timestamp, format) {
            const date = new Date(timestamp * 1000);
            const day = String(date.getDate()).padStart(2, '0');
            const month = String(date.getMonth() + 1).padStart(2, '0');
            const year = date.getFullYear();
            const hours = String(date.getHours()).padStart(2, '0');
            const minutes = String(date.getMinutes()).padStart(2, '0');
            if (format === 'd/m') return `${day}/${month}`;
            if (format === 'Y-m-d') return `${year}-${month}-${day}`;
            if (format === 'H:i') return `${hours}:${minutes}`;
            return date;
        }

        // Hàm lấy domain API random để tránh Cloudflare rate limit
        function getApiDomain() {
            const domains = ['api.gvapi.cc'];
            
            // Random chọn một domain
            const index = Math.floor(Math.random() * domains.length);
            const selected = domains[index];
            
            return 'https://' + selected;
        }

        // Fetch and render matches
        async function refreshMatches() {
            try {
                const apiBase = getApiDomain();
                const response = await fetch(apiBase + '/api/matches?t=' + new Date().getTime());
                if (!response.ok) throw new Error('Error fetching API data');
                const datas = await response.json();

                if (!datas.data) throw new Error('Invalid API data structure');

                const newMatches = [];
                for (const [key, data] of Object.entries(datas.data)) {
                    if (data.anchorAppointmentVoList) {
                        if (data.anchorAppointmentVoList[0]?.nickName === 'Live streaming') {
                            continue;
                        }

                        const status = data.matchStatus === 1 ? 'scheduled' : data.matchStatus === 2 ? 'live' : 'finished';
                        const statusText = status === 'scheduled' ? 'CHỜ' : status === 'live' ? 'XEM' : 'HẾT';
                        const statusFullText = status === 'scheduled' ? 'Sắp bắt đầu' : status === 'live' ? 'Đang diễn ra' : 'Đã kết thúc';

                        newMatches.push({
                            id: key,
                            slug: key,
                            sport: sportName(data.sportId),
                            live: data.matchStatus === 2,
                            hot: data.matchStatus === 2, // Assume live matches are hot
                            date: formatDate(fixtime(data.matchTime), 'd/m'),
                            datesearch: formatDate(fixtime(data.matchTime), 'Y-m-d'),
                            hour: formatDate(fixtime(data.matchTime), 'H:i'),
                            competitionName: data.competitionName || 'Unknown League',
                            teams: [
                                {
                                    name: data.homeTeamName || 'Team A',
                                    logo: data.homeTeamLogo || 'TBD'
                                },
                                {
                                    name: data.awayTeamName || 'Team B',
                                    logo: data.awayTeamLogo || 'TBD'
                                }
                            ],
                            score: data.homeScore && data.awayScore ? `${data.homeScore[0]} : ${data.awayScore[0]}` : 'VS',
                            status: status,
                            statusText: statusText,
                            statusFullText: status === 'scheduled' ? 'Sắp bắt đầu' : status === 'live' ? 'Đang diễn ra' : 'Đã kết thúc',
                            sponsors: data.anchorAppointmentVoList.length ? data.anchorAppointmentVoList.map(item => item.nickName).join(', ') : 'Không có BLV',
                            videoUrl: data.videoUrl || 'https://live2.example.com',
                            animationUrl: data.animationUrl || 'https://animation.example.com',
                            data: data 
                        });
                    }
                }

                renderAllMatches(newMatches);
                filterMatches('parent', newMatches);
            } catch (error) {
                console.error('Error refreshing matches:', error);
            }
        }

        // Create match card HTML - Cấu trúc mới theo mẫu
        function createMatchCard(match) {
            const isLive = match.data.matchStatus === 2;
            
            // BLV list với avatar
            const blvItems = match.data.anchorAppointmentVoList.length ? match.data.anchorAppointmentVoList.map(item => `
                <div class="blv-item-scl">
                    <a class="blv-link" href="https://colatvttbd.tv/truc-tiep/${match.slug}?houseId=${item.houseId}" rel="nofollow">
                        <div class="blv-avatar">
                            <img src="${item.userImage || '/wp-content/uploads/2025/07/blv-icon.webp'}" alt="${item.nickName}">
                        </div>
                        <span class="blv-name">${item.nickName}</span>
                    </a>
                </div>
            `).join('') : '<div class="blv-item-scl"><span class="blv-name">Không có BLV</span></div>';
            
            // Match overview - hiển thị VS hoặc Score
            let overviewHtml = '';
            if (isLive) {
                overviewHtml = `
                    <div class="match-score-live">
                        <span class="home-score">${match.data.homeScore?.[0] || 0}</span>
                        <span class="divide-score">:</span>
                        <span class="away-score">${match.data.awayScore?.[0] || 0}</span>
                    </div>
                `;
            } else {
                overviewHtml = `
                    <span class="status-match vs-match">VS</span>
                `;
            }
            
            // Quick Stats (chỉ hiển thị khi live) - giống watch.php
            let statsHtml = '';
            // node_api_data.match_id match với id trong detail_live API
            const liveMatchId = match.data?.node_api_data?.match_id || '';
            if (isLive) {
                statsHtml = `
                    <div class="quick-stats" data-match-slug="${match.slug}" data-live-match-id="${liveMatchId}">
                        <div class="quick-stat-item" title="Tỉ số hiệp 1">
                            <div class="quick-stat-icon">
                                <span class="ht-label">HT</span>
                            </div>
                            <div class="quick-stat-values">
                                <span class="quick-stat-home qs-ht-home">-</span>
                                <span class="quick-stat-sep">-</span>
                                <span class="quick-stat-away qs-ht-away">-</span>
                            </div>
                        </div>
                        <div class="quick-stat-item" title="Sút trúng đích">
                            <div class="quick-stat-icon">
                                <img src="/assets/images/dp_goal.svg" alt="Sút" width="16" height="16">
                            </div>
                            <div class="quick-stat-values">
                                <span class="quick-stat-home qs-shots-home">-</span>
                                <span class="quick-stat-sep">-</span>
                                <span class="quick-stat-away qs-shots-away">-</span>
                            </div>
                        </div>
                        <div class="quick-stat-item" title="Phạt góc">
                            <div class="quick-stat-icon">
                                <img src="/assets/images/dp_capa.svg" alt="Góc" width="16" height="16">
                            </div>
                            <div class="quick-stat-values">
                                <span class="quick-stat-home qs-corner-home">-</span>
                                <span class="quick-stat-sep">-</span>
                                <span class="quick-stat-away qs-corner-away">-</span>
                            </div>
                        </div>
                        <div class="quick-stat-item" title="Thẻ vàng">
                            <div class="quick-stat-icon">
                                <svg viewBox="0 0 24 24" width="14" height="14">
                                    <rect x="6" y="3" width="12" height="18" rx="2" fill="#facc15"/>
                                </svg>
                            </div>
                            <div class="quick-stat-values">
                                <span class="quick-stat-home qs-yellow-home">-</span>
                                <span class="quick-stat-sep">-</span>
                                <span class="quick-stat-away qs-yellow-away">-</span>
                            </div>
                        </div>
                    </div>
                `;
            }
            
            return `
                <div class="match-item ${isLive ? 'live-match running-border' : ''}" 
                     data-match-id="${match.id}" 
                     data-live-match-id="${liveMatchId}"
                     data-sport="${match.sport}" 
                     data-live="${match.live}" 
                     data-hot="${match.hot}" 
                     data-date="${match.datesearch}"
                     data-match-time="${match.data.matchTime}"
                     data-match-status="${match.data.matchStatus}">
                    <div class="match-item-inner">
                        <a class="link-match" href="https://colatvttbd.tv/truc-tiep/${match.slug}" rel="nofollow"></a>
                        
                        <!-- Live Badge - Absolute top center -->
                        ${isLive ? '<div class="match-item__live-badge"><span>Hiệp 2: 90\'</span></div>' : ''}
                        
                        <!-- HEADER: League + Time -->
                        <div class="match-item-head">
                            <div class="match-item-head-inner">
                                <div class="match-item__comp">${match.competitionName}</div>
                                <div class="match-item__time"><span>${match.hour} ${match.date}</span></div>
                            </div>
                        </div>
                        
                        <!-- BODY: Teams + Score -->
                        <div class="match-item-body">
                            <div class="match-item-body-inner">
                                <!-- Home Team -->
                                <div class="match-home match-team">
                                    <div class="logo-team">
                                        <img src="${match.teams[0].logo}" alt="${match.teams[0].name}">
                                    </div>
                                    <div class="name-team">${match.teams[0].name}</div>
                                </div>
                                
                                <!-- Match Overview -->
                                <div class="match-overview">
                                    ${overviewHtml}
                                </div>
                                
                                <!-- Away Team -->
                                <div class="match-away match-team">
                                    <div class="logo-team">
                                        <img src="${match.teams[1].logo}" alt="${match.teams[1].name}">
                                    </div>
                                    <div class="name-team">${match.teams[1].name}</div>
                                </div>
                            </div>
                            
                            <!-- Statistics -->
                            ${statsHtml}
                        </div>
                        
                        <!-- FOOTER: BLV List -->
                        <div class="match-item-footer">
                            <div class="blv-slider">
                                <div class="blv-list">
                                    ${blvItems}
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            `;
        }

        // Initialize filters - sport 'all' matches the default active tab in front-page.php
        let currentFilters = {
            sport: 'all',      // Sport filter: all, football, basketball
            filter: 'all',     // Status filter: all, live, hot, today, tomorrow, no-commentator
        };
        
        // CSS to hide elements
        const styleEl = document.createElement('style');
        styleEl.textContent = '.d-none { display: none !important; }';
        document.head.appendChild(styleEl);

        // Render all matches
        function renderAllMatches(matches) {
            const matchList = document.querySelector('.matches-grid');
            if (!matchList) {
                console.error('Matches grid not found');
                return;
            }

            matchList.innerHTML = '';

            matches.forEach(match => {
                const cardHTML = createMatchCard(match);
                matchList.insertAdjacentHTML('beforeend', cardHTML);
            });

            filterMatches('parent');
        }

        // Filter matches
        function filterMatches(type, matches) {
            const allCards = document.querySelectorAll('.match-item');
            const selectedSport = currentFilters.sport;

            // First, filter by sport
            let filtered = Array.from(allCards).filter(card => {
                const sport = card.dataset.sport;
                return selectedSport === 'all' || sport === selectedSport;
            });

            // Then, apply additional filter
            const today = new Date().toISOString().split('T')[0];
            const tomorrow = new Date(Date.now() + 86400000).toISOString().split('T')[0];

            if (currentFilters.filter === 'live') {
                filtered = filtered.filter(card => card.dataset.live === 'true');
            } else if (currentFilters.filter === 'hot') {
                filtered = filtered.filter(card => card.dataset.hot === 'true');
            } else if (currentFilters.filter === 'today') {
                filtered = filtered.filter(card => card.dataset.date === today);
            } else if (currentFilters.filter === 'tomorrow') {
                filtered = filtered.filter(card => card.dataset.date === tomorrow);
            } else if (currentFilters.filter === 'no-commentator') {
                filtered = filtered.filter(card => {
                    const blvList = card.querySelector('.blv-list');
                    return !blvList || blvList.textContent.includes('Không có BLV');
                });
            }

            // Show/hide match cards
            allCards.forEach(card => {
                card.classList.toggle('d-none', !filtered.includes(card));
            });

            // Update counts (always based on selected sport, not filtered results)
            updateFilterCounts(allCards);
        }

        // Event listeners for sports tabs and filter tabs
        document.addEventListener('DOMContentLoaded', () => {
            // Handle sports tabs
            const sportsTabs = document.querySelectorAll('.sports-tab');
            sportsTabs.forEach(tab => {
                tab.addEventListener('click', () => {
                    sportsTabs.forEach(t => t.classList.remove('active'));
                    tab.classList.add('active');

                    const sport = tab.dataset.sport;
                    currentFilters.sport = sport;
                    currentFilters.filter = 'all'; // Reset filter khi chuyển tab sport

                    // Update filter tabs' active state
                    const filterTabs = document.querySelectorAll('.filter-tab');
                    filterTabs.forEach(t => t.classList.remove('active'));
                    const defaultFilterTab = document.querySelector('.filter-tab[data-filter="all"]');
                    if (defaultFilterTab) defaultFilterTab.classList.add('active');

                    filterMatches('parent');
                });
            });

            // Handle filter tabs
            const filterTabs = document.querySelectorAll('.filter-tab');
            filterTabs.forEach(tab => {
                tab.addEventListener('click', () => {
                    filterTabs.forEach(t => t.classList.remove('active'));
                    tab.classList.add('active');

                    const filter = tab.dataset.filter;
                    currentFilters.filter = filter;
                    filterMatches('parent');
                });
            });

            // Load more button
            const loadMoreBtn = document.querySelector('.load-more-btn');
            if (loadMoreBtn) {
                loadMoreBtn.addEventListener('click', () => {
                    loadMoreBtn.textContent = 'Đang tải...';
                    setTimeout(() => {
                        loadMoreBtn.textContent = 'Tải thêm trận';
                    }, 1000);
                });
            }
        });

        // Refresh matches every 20 seconds
        setInterval(refreshMatches, 120000);
        refreshMatches();
        
        // Hàm tính thời gian trận đấu realtime theo API documentation
        // - kickoff_timestamp thay đổi theo từng hiệp
        // - Hiệp 1: 1' - 45' (bù giờ: 45'+X)
        // - Hiệp 2: 46' - 90' (bù giờ: 90'+X)
        function calculateMatchTime(kickoffTimestamp, matchStatus) {
            const now = Math.floor(Date.now() / 1000);
            const elapsedSeconds = Math.max(0, now - kickoffTimestamp);
            const elapsedMinutes = Math.floor(elapsedSeconds / 60) + 1;
            
            let halfText = 'LIVE';
            let minuteText = '-';
            
            switch (matchStatus) {
                case 2: // Hiệp 1: 1' - 45'
                    if (elapsedMinutes > 45) {
                        halfText = 'Bù H1';
                        minuteText = `45'+${elapsedMinutes - 45}`;
                    } else {
                        halfText = 'Hiệp 1';
                        minuteText = `${elapsedMinutes}'`;
                    }
                    break;
                    
                case 3: // Nghỉ giữa hiệp
                    halfText = 'Nghỉ';
                    minuteText = 'HT';
                    break;
                    
                case 4: // Hiệp 2: 46' - 90'
                    const matchMinuteH2 = 45 + elapsedMinutes;
                    if (matchMinuteH2 > 90) {
                        halfText = 'Bù H2';
                        minuteText = `90'+${matchMinuteH2 - 90}`;
                    } else {
                        halfText = 'Hiệp 2';
                        minuteText = `${matchMinuteH2}'`;
                    }
                    break;
                    
                case 5: // Hiệp phụ 1: 91' - 105'
                    const matchMinuteET1 = 90 + elapsedMinutes;
                    if (matchMinuteET1 > 105) {
                        halfText = 'Bù HP1';
                        minuteText = `105'+${matchMinuteET1 - 105}`;
                    } else {
                        halfText = 'HP 1';
                        minuteText = `${matchMinuteET1}'`;
                    }
                    break;
                    
                case 6: // Hiệp phụ 2: 106' - 120'
                    const matchMinuteET2 = 105 + elapsedMinutes;
                    if (matchMinuteET2 > 120) {
                        halfText = 'Bù HP2';
                        minuteText = `120'+${matchMinuteET2 - 120}`;
                    } else {
                        halfText = 'HP 2';
                        minuteText = `${matchMinuteET2}'`;
                    }
                    break;
                    
                case 7: // Đá luân lưu
                    halfText = 'Luân lưu';
                    minuteText = 'PEN';
                    break;
                    
                case 8: // Kết thúc
                    halfText = 'Kết thúc';
                    minuteText = 'FT';
                    break;
                    
                default:
                    return null;
            }
            
            return { half: halfText, minute: minuteText };
        }
        
        // Cache kickoff timestamps từ detail_live API
        let kickoffCache = {};
        
        // Cập nhật thời gian live mỗi giây
        async function updateLiveTimesDisplay() {
            // Fetch detail_live để lấy kickoff_timestamp realtime
            const liveMatches = await fetchDetailLive();
            
            // Build cache từ detail_live response
            // liveMatches là array trực tiếp từ data.results
            if (liveMatches && Array.isArray(liveMatches) && liveMatches.length > 0) {
                // Log tất cả match IDs từ API để debug
                const apiMatchIds = liveMatches.map(m => m.id);
                console.log('API returned match IDs:', apiMatchIds);
                
                liveMatches.forEach(match => {
                    const matchId = match.id;
                    const score = match.score || [];
                    
                    // score là array: [match_id, status, home_data, away_data, kickoff_ts, ""]
                    // score[1] = match_status (2=H1, 3=HT, 4=H2, 5=HP1, 6=HP2, 7=PEN, 8=FT)
                    // score[4] = kickoff_timestamp (thay đổi theo từng hiệp!)
                    const status = parseInt(score[1]) || 0;
                    const kickoff = parseInt(score[4]) || 0;
                    
                    kickoffCache[matchId] = { kickoff, status };
                    
                    // Log raw data cho match cụ thể để debug
                    console.log(`API Match[${matchId}]: status=${status}, kickoff=${kickoff}, raw_score[1]=${score[1]}`);
                });
            } else {
                console.warn('No live matches from API or invalid format:', liveMatches);
            }
            
            // Update tất cả các trận có live badge
            const liveCards = document.querySelectorAll('.match-item.live-match');
            console.log(`Found ${liveCards.length} live cards to update`);
            
            liveCards.forEach(card => {
                const matchId = card.dataset.liveMatchId;
                const liveBadge = card.querySelector('.match-item__live-badge span');
                if (!liveBadge) return;
                
                // Debug: log tất cả matchId trên cards
                console.log(`Card matchId: ${matchId}, inCache: ${!!kickoffCache[matchId]}`);
                
                // Lấy kickoff và status từ cache (từ detail_live API)
                const cached = kickoffCache[matchId];
                
                if (cached && cached.kickoff > 0 && cached.status > 0) {
                    // Dùng data từ API (chính xác nhất)
                    const liveTime = calculateMatchTime(cached.kickoff, cached.status);
                    if (liveTime) {
                        liveBadge.textContent = `${liveTime.half}: ${liveTime.minute}`;
                        
                        // Cập nhật data-match-status để đồng bộ với API
                        card.dataset.matchStatus = cached.status;
                    }
                    
                    // Debug: log match đang xem (uncomment dòng dưới để hiện ID trên badge)
                    // liveBadge.title = `ID: ${matchId} | Status: ${cached.status} | Kickoff: ${cached.kickoff}`;
                    console.log(`✓ Match ${matchId}: API status=${cached.status}, kickoff=${cached.kickoff}, display=${liveTime?.half}: ${liveTime?.minute}`);
                } else {
                    // Debug: log match không tìm thấy trong API
                    console.log(`✗ Match ${matchId}: NOT in API cache, using fallback`);
                    
                    // Fallback: không có trong detail_live API
                    // Có thể trận chưa live hoặc đã kết thúc
                    const matchStatus = parseInt(card.dataset.matchStatus) || 0;
                    
                    if (matchStatus === 8) {
                        liveBadge.textContent = 'Kết thúc: FT';
                    } else if (matchStatus >= 2 && matchStatus <= 7) {
                        // Trận đang live nhưng không có trong API
                        // Hiển thị trạng thái mà không tính phút
                        const statusLabels = {
                            2: 'Hiệp 1',
                            3: 'Nghỉ: HT',
                            4: 'Hiệp 2',
                            5: 'HP 1',
                            6: 'HP 2',
                            7: 'Luân lưu: PEN'
                        };
                        liveBadge.textContent = statusLabels[matchStatus] || 'LIVE';
                    }
                }
            });
        }
        
        // Update mỗi giây
        //setInterval(updateLiveTimesDisplay, 1000);
        // Chạy ngay lập tức
        //setTimeout(updateLiveTimesDisplay, 500);
        
        // Stat type mapping từ API detail_live
        // type 2: corners, type 3: yellow cards, type 4: red cards
        // type 21: shots on target, type 22: shots off target
        // type 23: total shots, type 24: passes, type 25: ball possession
        const STAT_TYPES = {
            CORNERS: 2,
            YELLOW_CARDS: 3,
            RED_CARDS: 4,
            SHOTS_ON_TARGET: 21,
            SHOTS_OFF_TARGET: 22,
            TOTAL_SHOTS: 23,
            PASSES: 24,
            POSSESSION: 25
        };
        
        // Cache cho detail_live data
        let detailLiveData = null;
        let detailLiveTimestamp = 0;
        const DETAIL_LIVE_CACHE_TTL = 2000; // 2 giây (theo khuyến nghị API)
        
        // Fetch detail_live data với cache
        async function fetchDetailLive() {
            const now = Date.now();
            if (detailLiveData && (now - detailLiveTimestamp) < DETAIL_LIVE_CACHE_TTL) {
                return detailLiveData;
            }
            
            try {
                const res = await fetch(`https://api.domainapi.space/api/match/detail_live?t=${now}`);
                const data = await res.json();
                if (data.code === 0 && data.results) {
                    detailLiveData = data.results;
                    detailLiveTimestamp = now;
                    console.log('Detail Live fetched:', detailLiveData.length, 'matches');
                }
                return detailLiveData || [];
            } catch (e) {
                console.error('Error fetching detail_live:', e);
                return detailLiveData || [];
            }
        }
        
        // Helper: Lấy stat value theo type
        function getStatValue(stats, type, side) {
            if (!stats || !Array.isArray(stats)) return 0;
            const stat = stats.find(s => s.type === type);
            return stat ? (side === 'home' ? stat.home : stat.away) : 0;
        }
        
        // Load quick stats cho các trận đang diễn ra
        async function loadQuickStatsForLiveMatches() {
            const quickStatsElements = document.querySelectorAll('.quick-stats[data-live-match-id]');
            if (quickStatsElements.length === 0) {
                console.log('No quick-stats elements found');
                return;
            }
            
            try {
                // Fetch tất cả live data một lần
                const liveMatches = await fetchDetailLive();
                if (!liveMatches || liveMatches.length === 0) {
                    console.log('No live matches data from API');
                    return;
                }
                
                console.log('Live matches from API:', liveMatches.length);
                
                for (const statsEl of quickStatsElements) {
                    const liveMatchId = statsEl.dataset.liveMatchId;
                    const matchSlug = statsEl.dataset.matchSlug;
                    
                    if (!liveMatchId) {
                        console.log('No live_match_id for element, slug:', matchSlug);
                        continue;
                    }
                    
                    console.log('Looking for live match ID:', liveMatchId);
                    
                    // Tìm match trong live data theo node_api_data.match_id
                    const liveMatch = liveMatches.find(m => m.id === liveMatchId);
                    if (!liveMatch) {
                        console.log('Match not found in live data:', liveMatchId, 'Available IDs:', liveMatches.map(m => m.id).slice(0, 5));
                        continue;
                    }
                    
                    console.log('Found live match:', liveMatchId, 'Score:', liveMatch.score, 'Stats:', liveMatch.stats?.length);
                    
                    // Parse score array
                    // score[2] = [home_score, ht_score, red, yellow, corners, overtime, penalty]
                    // score[3] = [away_score, ht_score, red, yellow, corners, overtime, penalty]
                    const homeScore = liveMatch.score?.[2] || [0,0,0,0,0,0,0];
                    const awayScore = liveMatch.score?.[3] || [0,0,0,0,0,0,0];
                    
                    // HT Score (index 1)
                    const htHome = statsEl.querySelector('.qs-ht-home');
                    const htAway = statsEl.querySelector('.qs-ht-away');
                    if (htHome) htHome.textContent = homeScore[1] || 0;
                    if (htAway) htAway.textContent = awayScore[1] || 0;
                    
                    // Sút trúng đích (type 21)
                    const shotsHome = statsEl.querySelector('.qs-shots-home');
                    const shotsAway = statsEl.querySelector('.qs-shots-away');
                    if (shotsHome) shotsHome.textContent = getStatValue(liveMatch.stats, STAT_TYPES.SHOTS_ON_TARGET, 'home');
                    if (shotsAway) shotsAway.textContent = getStatValue(liveMatch.stats, STAT_TYPES.SHOTS_ON_TARGET, 'away');
                    
                    // Phạt góc (type 2) hoặc từ score array (index 4)
                    // -1 trong score array = không có data corners
                    const cornerHome = statsEl.querySelector('.qs-corner-home');
                    const cornerAway = statsEl.querySelector('.qs-corner-away');
                    const homeCornersFromScore = homeScore[4];
                    const awayCornersFromScore = awayScore[4];
                    const homeCornersFromStats = getStatValue(liveMatch.stats, STAT_TYPES.CORNERS, 'home');
                    const awayCornersFromStats = getStatValue(liveMatch.stats, STAT_TYPES.CORNERS, 'away');
                    // Ưu tiên từ score array nếu có (>= 0), -1 = không có data
                    const homeCorners = (homeCornersFromScore !== undefined && homeCornersFromScore !== -1) ? homeCornersFromScore : homeCornersFromStats;
                    const awayCorners = (awayCornersFromScore !== undefined && awayCornersFromScore !== -1) ? awayCornersFromScore : awayCornersFromStats;
                    if (cornerHome) cornerHome.textContent = homeCorners;
                    if (cornerAway) cornerAway.textContent = awayCorners;
                    
                    // Thẻ vàng (type 3) hoặc từ score array (index 3)
                    const yellowHome = statsEl.querySelector('.qs-yellow-home');
                    const yellowAway = statsEl.querySelector('.qs-yellow-away');
                    const homeYellowFromScore = homeScore[3];
                    const awayYellowFromScore = awayScore[3];
                    const homeYellowFromStats = getStatValue(liveMatch.stats, STAT_TYPES.YELLOW_CARDS, 'home');
                    const awayYellowFromStats = getStatValue(liveMatch.stats, STAT_TYPES.YELLOW_CARDS, 'away');
                    // Ưu tiên từ score array nếu có
                    const homeYellow = (homeYellowFromScore !== undefined && homeYellowFromScore > 0) ? homeYellowFromScore : homeYellowFromStats;
                    const awayYellow = (awayYellowFromScore !== undefined && awayYellowFromScore > 0) ? awayYellowFromScore : awayYellowFromStats;
                    if (yellowHome) yellowHome.textContent = homeYellow;
                    if (yellowAway) yellowAway.textContent = awayYellow;
                    
                    console.log('Updated stats for', liveMatchId, '- HT:', homeScore[1], '-', awayScore[1], 
                        '| Shots:', getStatValue(liveMatch.stats, STAT_TYPES.SHOTS_ON_TARGET, 'home'), '-', getStatValue(liveMatch.stats, STAT_TYPES.SHOTS_ON_TARGET, 'away'),
                        '| Corners:', homeCorners, '-', awayCorners,
                        '| Yellow:', homeYellow, '-', awayYellow);
                }
            } catch (e) {
                console.error('Error loading quick stats:', e);
            }
        }
        
        // ===== WEBSOCKET QUICK STATS (giống React colatv40.live Home.jsx) =====
        let quickStatsWsConnected = false;
        let quickStatsWsClient = null;
        let quickStatsPollingInterval = null;
        
        // Update quick stats từ WebSocket data (giống React updateQuickStatsFromWebSocket)
        function updateQuickStatsFromWebSocket(results) {
            if (!results || !Array.isArray(results)) return;
            
            const quickStatsElements = document.querySelectorAll('.quick-stats[data-live-match-id]');
            if (quickStatsElements.length === 0) return;
            
            for (const statsEl of quickStatsElements) {
                const liveMatchId = statsEl.dataset.liveMatchId;
                if (!liveMatchId) continue;
                
                // Tìm match trong results
                const liveMatch = results.find(m => m.id === liveMatchId);
                if (!liveMatch) continue;
                
                // Parse score array
                // score[2] = [home_score, ht_score, red, yellow, corners, overtime, penalty]
                // score[3] = [away_score, ht_score, red, yellow, corners, overtime, penalty]
                const homeScore = liveMatch.score?.[2] || [0,0,0,0,0,0,0];
                const awayScore = liveMatch.score?.[3] || [0,0,0,0,0,0,0];
                
                // HT Score (index 1)
                const htHome = statsEl.querySelector('.qs-ht-home');
                const htAway = statsEl.querySelector('.qs-ht-away');
                if (htHome) htHome.textContent = homeScore[1] || 0;
                if (htAway) htAway.textContent = awayScore[1] || 0;
                
                // Sút trúng đích (type 21)
                const shotsHome = statsEl.querySelector('.qs-shots-home');
                const shotsAway = statsEl.querySelector('.qs-shots-away');
                if (shotsHome) shotsHome.textContent = getStatValue(liveMatch.stats, STAT_TYPES.SHOTS_ON_TARGET, 'home');
                if (shotsAway) shotsAway.textContent = getStatValue(liveMatch.stats, STAT_TYPES.SHOTS_ON_TARGET, 'away');
                
                // Phạt góc (type 2) hoặc từ score array (index 4)
                const cornerHome = statsEl.querySelector('.qs-corner-home');
                const cornerAway = statsEl.querySelector('.qs-corner-away');
                const homeCornersFromScore = homeScore[4];
                const awayCornersFromScore = awayScore[4];
                const homeCornersFromStats = getStatValue(liveMatch.stats, STAT_TYPES.CORNERS, 'home');
                const awayCornersFromStats = getStatValue(liveMatch.stats, STAT_TYPES.CORNERS, 'away');
                const homeCorners = (homeCornersFromScore !== undefined && homeCornersFromScore !== -1) ? homeCornersFromScore : homeCornersFromStats;
                const awayCorners = (awayCornersFromScore !== undefined && awayCornersFromScore !== -1) ? awayCornersFromScore : awayCornersFromStats;
                if (cornerHome) cornerHome.textContent = homeCorners;
                if (cornerAway) cornerAway.textContent = awayCorners;
                
                // Thẻ vàng (type 3) hoặc từ score array (index 3)
                const yellowHome = statsEl.querySelector('.qs-yellow-home');
                const yellowAway = statsEl.querySelector('.qs-yellow-away');
                const homeYellowFromScore = homeScore[3];
                const awayYellowFromScore = awayScore[3];
                const homeYellowFromStats = getStatValue(liveMatch.stats, STAT_TYPES.YELLOW_CARDS, 'home');
                const awayYellowFromStats = getStatValue(liveMatch.stats, STAT_TYPES.YELLOW_CARDS, 'away');
                const homeYellow = (homeYellowFromScore !== undefined && homeYellowFromScore > 0) ? homeYellowFromScore : homeYellowFromStats;
                const awayYellow = (awayYellowFromScore !== undefined && awayYellowFromScore > 0) ? awayYellowFromScore : awayYellowFromStats;
                if (yellowHome) yellowHome.textContent = homeYellow;
                if (yellowAway) yellowAway.textContent = awayYellow;
            }
            
            // Update live times display luôn
            updateLiveTimesDisplay();
        }
        
        // Init WebSocket cho quick stats (giống React connectWebSocket pattern)
        function initQuickStatsWebSocket() {
            const wsUrl = 'wss://server.ws-xyz.com/ws';
            
            if (typeof RealtimeWebSocketClient === 'undefined') {
                console.warn('[Homepage QS] RealtimeWebSocketClient not loaded, using polling');
                startQuickStatsPolling();
                return;
            }
            
            quickStatsWsClient = new RealtimeWebSocketClient(wsUrl);
            
            // Subscribe to detail_live updates (giống React detail_live:updated)
            quickStatsWsClient.subscribe('detail_live:updated', (data) => {
                console.log('[Homepage QS] Received detail_live update from WebSocket');
                if (data.results) {
                    updateQuickStatsFromWebSocket(data.results);
                }
            });
            
            quickStatsWsClient.subscribe('connected', () => {
                console.log('[Homepage QS] WebSocket connected - tắt polling');
                quickStatsWsConnected = true;
                if (quickStatsPollingInterval) {
                    clearInterval(quickStatsPollingInterval);
                    quickStatsPollingInterval = null;
                }
            });
            
            quickStatsWsClient.subscribe('disconnected', () => {
                console.log('[Homepage QS] WebSocket disconnected - bật polling');
                quickStatsWsConnected = false;
                startQuickStatsPolling();
            });
            
            quickStatsWsClient.subscribe('error', () => {
                quickStatsWsConnected = false;
                startQuickStatsPolling();
            });
            
            quickStatsWsClient.connect();
        }
        
        // Polling fallback khi WebSocket không available
        function startQuickStatsPolling() {
            if (quickStatsPollingInterval) return;
            quickStatsPollingInterval = setInterval(() => {
                if (!quickStatsWsConnected) {
                    loadQuickStatsForLiveMatches();
                } else {
                    clearInterval(quickStatsPollingInterval);
                    quickStatsPollingInterval = null;
                }
            }, 5000);
        }
        
        // Khởi động: đợi 2 giây rồi thử WebSocket, fallback polling
        setTimeout(() => {
            initQuickStatsWebSocket();
            // Load lần đầu từ API nếu WebSocket chưa connected
            if (!quickStatsWsConnected) {
                loadQuickStatsForLiveMatches();
            }
        }, 2000);
        
        // Cleanup khi rời trang
        window.addEventListener('beforeunload', () => {
            if (quickStatsWsClient) quickStatsWsClient.disconnect();
            if (quickStatsPollingInterval) clearInterval(quickStatsPollingInterval);
        });
        </script>
        <script src="https://colatvttbd.tv/js/websocket-client.js"></script>                <style>
            ul#menu-menu-chinh img.menu-icon {
                display: none !important;
            }
            
            .header-content {
                gap: 20px;
            }
            
            .top-live-box {
                width: 100%;
                height: auto;
                display: flex;
                gap: 8px;
            }
            .top-live-box .left {
                width: 100%;
                min-height: 564px;
                background-color: #000;
                border-radius: 4px;
                overflow: hidden;
            }
            .top-live-box .live-list {
                width: 240px;
                flex-shrink: 0;
            }
            .top-live-box .live-list .live-item {
                width: 100%;
                height: 144px;
                margin-bottom: 6px;
                cursor: pointer;
                border-radius: 4px;
                transition: all .1s ease-in-out;
                overflow: hidden;
                border: 2px solid transparent;
                position: relative;
            }
            .top-live-box .live-list .live-item .anchor-item {
                width: 100%;
                height: 100%;
            }
            .el-image img {
                display: block;
                width: 100%;
                height: 100%;
                object-fit: cover;
            }
            .btn-view-truc-tiep {
                position: absolute;
                top: 70%;
                left: 50%;
                transform: translate(-50%, -50%);
                z-index: 5;
                background: #f2152d;
                padding: 20px;
                border-radius: 30px;
                cursor: pointer;
                text-align: center;
            }
            .btn-view-truc-tiep:hover {
                opacity: 0.8;
            }
            .video-player {
                position: relative;
            }
            .top-live-box .live-list .live-item.active {
                border: 2px solid #ff0202;
            }
            .overlay-click {
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
                z-index: 10;
                display: block;
            }
            .sports-content {
                display: none;
            }
            
            /* ========== MATCH ITEM NEW STRUCTURE ========== */
            .match-item {
                position: relative;
                background: #1a1a2e;
                border-radius: 8px;
                overflow: hidden;
                margin-bottom: 10px;
            }
            .match-item.live-match {
                background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
            }
            .match-item.running-border {
                border: 1px solid rgba(34, 197, 94, 0.3);
            }
            .match-item-inner {
                position: relative;
                padding-top: 5px; /* Space for absolute badge */
            }
            .match-item .link-match {
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
                z-index: 5;
            }
            
            /* Match Header */
            .match-item-head {
                padding: 10px 15px;
                padding-top: 25px;
                border-bottom: 1px solid rgba(255,255,255,0.1);
            }
            .match-item-head-inner {
                display: flex;
                justify-content: space-between;
                align-items: center;
                gap: 10px;
            }
            .match-item__comp {
                flex: 1;
                font-size: 12px;
                color: #999;
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
            }
            .match-item__live-badge {
                position: absolute;
                top: 0;
                left: 50%;
                transform: translateX(-50%);
                z-index: 10;
            }
            .match-item__live-badge span {
                display: inline-block;
                background: linear-gradient(135deg, #22c55e, #16a34a);
                color: #fff;
                padding: 6px 20px;
                font-size: 12px;
                font-weight: bold;
                clip-path: polygon(0% 0%, 100% 0%, 85% 100%, 15% 100%);
                animation: pulse-live 1.5s infinite;
            }
            @keyframes pulse-live {
                0%, 100% { box-shadow: 0 0 5px rgba(34, 197, 94, 0.5); }
                50% { box-shadow: 0 0 15px rgba(34, 197, 94, 0.8); }
            }
            .match-item__time {
                flex-shrink: 0;
                font-size: 12px;
                color: #888;
                background: rgba(255,255,255,0.1);
                padding: 4px 10px;
                border-radius: 4px;
            }
            
            /* Match Body */
            .match-item-body {
                padding: 15px;
            }
            .match-item-body-inner {
                display: flex;
                justify-content: space-between;
                align-items: center;
                gap: 10px;
            }
            .match-team {
                flex: 1;
                display: flex;
                flex-direction: column;
                align-items: center;
                gap: 8px;
            }
            .match-home {
                align-items: flex-start;
            }
            .match-home .logo-team,
            .match-home .name-team {
                margin-left: 0;
            }
            .match-away {
                align-items: flex-end;
            }
            .logo-team {
                width: 50px;
                height: 50px;
            }
            .logo-team img {
                width: 100%;
                height: 100%;
                object-fit: contain;
            }
            .name-team {
                font-size: 13px;
                color: #fff;
                text-align: center;
                max-width: 100px;
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
            }
            .match-home .name-team { text-align: left; }
            .match-away .name-team { text-align: right; }
            
            /* Match Overview - Center */
            .match-overview {
                flex-shrink: 0;
                display: flex;
                flex-direction: column;
                align-items: center;
                gap: 5px;
                min-width: 80px;
                border-radius: 36px;
    border: 1px solid #1456FF;
    background: linear-gradient(280deg, #1553EF 22.76%, #0C3089 43.68%, #0C1A4C 74.93%);
            }
            .vs-match {
                font-size: 18px;
                font-weight: bold;
                color: #666;
            }
            .status-match-live {
                display: flex;
                flex-direction: column;
                align-items: center;
                gap: 2px;
            }
            .status-match-live .status-text {
                font-size: 11px;
                color: #22c55e;
                font-weight: bold;
            }
            .status-match-live .time-text {
                font-size: 14px;
                color: #22c55e;
                font-weight: bold;
            }
            .match-score-live {
                display: flex;
                align-items: center;
                gap: 8px;
                font-size: 28px;
                font-weight: bold;
            }
            .match-score-live .home-score { color: #FF6B35; }
            .match-score-live .divide-score { color: #666; }
            .match-score-live .away-score { color: #764ba2; }
            
            /* Quick Stats - giống watch.php */
            .quick-stats {
                display: flex;
                justify-content: center;
                align-items: center;
                gap: 12px;
                padding: 8px 12px;
                margin-top: 10px;
                border-top: 1px solid rgba(255,255,255,0.1);
            }
            .quick-stat-item {
                display: flex;
                align-items: center;
                gap: 5px;
            }
            .quick-stat-icon {
                display: flex;
                align-items: center;
                justify-content: center;
            }
            .quick-stat-icon img,
            .quick-stat-icon svg {
                width: 14px;
                height: 14px;
            }
            .ht-label {
                font-size: 11px;
                font-weight: bold;
                color: #22c55e;
            }
            .quick-stat-values {
                display: flex;
                align-items: center;
                gap: 3px;
                font-size: 12px;
                font-weight: bold;
            }
            .quick-stat-home {
                color: #FF6B35;
            }
            .quick-stat-away {
                color: #764ba2;
            }
            .quick-stat-sep {
                color: #666;
            }
            
            /* Match Footer - BLV List */
            .match-item-footer {
                padding: 10px 15px;
                background: rgba(0,0,0,0.2);
                border-top: 1px solid rgba(255,255,255,0.1);
            }
            .blv-slider {
                position: relative;
            }
            .blv-list {
                display: flex;
                gap: 10px;
                overflow-x: auto;
                scrollbar-width: none;
                -ms-overflow-style: none;
                padding: 5px 0;
            }
            .blv-list::-webkit-scrollbar { display: none; }
            .blv-item-scl {
                flex-shrink: 0;
                position: relative;
                z-index: 10;
            }
            .blv-link {
                display: flex;
                align-items: center;
                gap: 6px;
                padding: 5px 10px;
                background: rgba(255,255,255,0.1);
                border-radius: 20px;
                text-decoration: none;
                transition: all 0.2s;
            }
            .blv-link:hover {
                background: rgba(255,255,255,0.2);
            }
            .blv-avatar {
                width: 24px;
                height: 24px;
                border-radius: 50%;
                overflow: hidden;
                border: 2px solid #22c55e;
            }
            .blv-avatar img {
                width: 100%;
                height: 100%;
                object-fit: cover;
            }
            .blv-name {
                font-size: 11px;
                color: #fff;
                white-space: nowrap;
            }
            
            @media screen and (max-width: 1024px) {
                .top-live-box {
                    flex-direction: column;
                }
                .top-live-box .left {
                    width: 100%;
                    min-height: 400px;
                }
                .top-live-box .live-list {
                    display: flex;
                    width: 100%;
                    flex-direction: row;
                    flex-wrap: wrap;
                    justify-content: center;
                    gap: 6px;
                    margin-top: 12px;
                }
                .top-live-box .live-list .live-item {
                    width: calc(50% - 6px);
                    height: 120px;
                }
            }
            @media screen and (max-width: 768px) {
                .top-live-box .left {
                    min-height: unset;
                }
                .btn-view-truc-tiep {
                    padding: 10px 16px;
                    font-size: 13px;
                }
                .top-live-box .live-list .live-item {
                    width: calc(50% - 3px);
                    height: 100px;
                }
                
                .filters-content {
                    align-items: start !important;
                }
            }
            @media screen and (max-width: 480px) {
                .top-live-box .live-list .live-item {
                    width: calc(50% - 3px);
                    height: 100px;
                }
                .live-list {
                    display: none !important;
                }
                .btn-view-truc-tiep {
                    padding: 8px 14px;
                    font-size: 13px;
                }
                
                .filters-content {
                    max-width: 97%;
                    padding: 11px;
                }
                
                .filter-tab {
                    font-size: 15px;
                        padding: 8px 16px;
                }
            }
            
            /* ========== MATCH ITEM RESPONSIVE ========== */
            @media screen and (max-width: 768px) {
                .match-item-head { padding: 8px 12px; padding-top: 20px; }
                .match-item__comp { font-size: 11px; }
                .match-item__live-badge span { padding: 4px 12px; font-size: 10px; }
                .match-item__time { font-size: 11px; padding: 3px 8px; }
                
                .match-item-body { padding: 12px; }
                .logo-team { width: 40px; height: 40px; }
                .name-team { font-size: 11px; max-width: 80px; }
                .match-score-live { font-size: 24px; gap: 6px; }
                
                .quick-stats { gap: 10px; padding: 6px 10px; }
                .quick-stat-values { font-size: 11px; }
                .quick-stat-icon img, .quick-stat-icon svg { width: 12px; height: 12px; }
                .ht-label { font-size: 10px; }
                
                .match-item-footer { padding: 8px 12px; }
                .blv-link { padding: 4px 8px; gap: 4px; }
                .blv-avatar { width: 20px; height: 20px; }
                .blv-name { font-size: 10px; }
            }
            
            @media screen and (max-width: 480px) {
                .match-item-head-inner { flex-wrap: wrap; gap: 5px; }
                .match-item__comp { order: 1; flex: 0 0 100%; text-align: center; }
                .match-item__live-badge { order: 2; }
                .match-item__time { order: 3; }
                
                .match-item-body { padding: 10px; }
                .logo-team { width: 35px; height: 35px; }
                .name-team { font-size: 10px; max-width: 70px; }
                .match-score-live { font-size: 20px; }
                .match-overview { min-width: 60px; }
                
                .quick-stats { gap: 6px; padding: 5px 8px; flex-wrap: wrap; }
                .quick-stat-item { gap: 3px; }
                .quick-stat-values { font-size: 10px; gap: 2px; }
                .quick-stat-icon img, .quick-stat-icon svg { width: 10px; height: 10px; }
                .ht-label { font-size: 9px; }
                
                .blv-list { gap: 6px; }
                .blv-link { padding: 3px 6px; }
                .blv-avatar { width: 18px; height: 18px; border-width: 1px; }
                .blv-name { font-size: 9px; }
                
                h1 {font-size: 1.3rem !important}
            }
            
            
        </style>
        <script src="//unpkg.byted-static.com/xgplayer/3.0.0-next.1/dist/index.min.js"></script>
        <script src="//unpkg.com/xgplayer-hls@3.0.0-next.1/dist/index.min.js"></script>
        <link rel="stylesheet" href="//unpkg.byted-static.com/xgplayer/3.0.0-alpha.100/dist/xgplayer.min.css" />
        <script type="text/javascript">
        // Hàm lấy domain API random cho video-home (pinned-home)
        function getVideoHomeApiDomain() {
            const domains = [
                'video-home.colahd.tv'
            ];
            
            // Random chọn một domain
            const index = Math.floor(Math.random() * domains.length);
            const selected = domains[index];
            
            return 'https://' + selected;
        }

        document.addEventListener('DOMContentLoaded', function () {
            const apiBase = getVideoHomeApiDomain();
            const STORAGE_KEY = 'pinnedMatchesCache';
            const heroSection = document.querySelector('section.hero');
            if (!heroSection) {
                console.error('Hero section not found.');
                return;
            }

            const skeletonHtml = `
                <div class="top-live-box container skeleton-loading" id="pinned-matches-container">
                    <style>
                        .skeleton-box {
                            display: inline-block;
                            height: 100%;
                            width: 100%;
                            position: relative;
                            overflow: hidden;
                            background-color: #2a2a2a;
                            border-radius: 8px;
                        }
                        .skeleton-box::after {
                            position: absolute;
                            top: 0;
                            right: 0;
                            bottom: 0;
                            left: 0;
                            transform: translateX(-100%);
                            background-image: linear-gradient(
                                90deg,
                                rgba(255, 255, 255, 0) 0,
                                rgba(255, 255, 255, 0.05) 20%,
                                rgba(255, 255, 255, 0.2) 60%,
                                rgba(255, 255, 255, 0)
                            );
                            animation: shimmer 2s infinite;
                            content: '';
                        }
                        @keyframes shimmer { 100% { transform: translateX(100%); } }
                        .skeleton-loading .left { aspect-ratio: 16/9; background: #1a1a1a; padding: 10px; border-radius: 8px;}
                        .skeleton-loading .live-list { display: flex; gap: 10px; margin-top: 10px; }
                        .skeleton-loading .live-item { flex: 1; aspect-ratio: 1/1; background: #1a1a1a; border-radius: 8px; overflow: hidden; }
                    </style>
                    <div class="left">
                        <div class="skeleton-box" style="min-height: 300px;"></div>
                    </div>
                    <div class="live-list">
                        <div class="live-item"><div class="skeleton-box"></div></div>
                        <div class="live-item"><div class="skeleton-box"></div></div>
                        <div class="live-item"><div class="skeleton-box"></div></div>
                        <div class="live-item"><div class="skeleton-box"></div></div>
                    </div>
                </div>
            `;

            function renderMatches(matches) {
                const anchors = matches.slice(0, 4).map((match, index) => ({
                    streamUrl: match.playStreamAddress2,
                    image: match.houseImage,
                    name: match.nickName,
                    slug: match.slugKey + '?houseId=' + match.houseId
                }));

                if (anchors.length === 0) return;

                const streamUrl = anchors[0].streamUrl;

                const liveBoxHtml = `
                    <div class="top-live-box container" id="pinned-matches-container">
                        <div class="left">
                            <div class="video-container">
                                <div class="video-player">
                                    <div id="mse" style="width: 100%;"></div>
                                    <a href="https://colatvttbd.tv/truc-tiep/${anchors[0].slug}" class="overlay-click" id="btn-view-link" rel="nofollow"></a>
                                    <span class="btn-view-truc-tiep" rel="nofollow">Vào phòng live đang phát sóng</span>
                                </div>
                            </div>
                        </div>
                        <div class="live-list">
                            ${anchors.map((anchor, index) => `
                                <div class="live-item ${index === 0 ? 'active' : ''} live-living-item" data-index="${index}">
                                    <div class="anchor-item">
                                        <div class="placeholder img">
                                            <img src="${anchor.image}" alt="${anchor.name}" style="object-fit: cover;">
                                        </div>
                                    </div>
                                </div>
                            `).join('')}
                        </div>
                    </div>
                `;

                const existingContainer = document.getElementById('pinned-matches-container');
                if (existingContainer) {
                    existingContainer.outerHTML = liveBoxHtml;
                } else {
                    heroSection.insertAdjacentHTML('afterend', liveBoxHtml);
                }

                if (window.Player && window.HlsPlayer) {
                    new Player({
                        plugins: [window.HlsPlayer],
                        id: "mse",
                        ignores: ["time", "progress"],
                        autoplayMuted: true,
                        autoplay: true,
                        playsinline: true,
                        isLive: true,
                        fluid: true,
                        pip: true,
                        muted: true,
                        url: streamUrl
                    });
                }

                const liveItems = document.querySelectorAll('#pinned-matches-container .live-item');
                const viewLink = document.getElementById('btn-view-link');

                liveItems.forEach(item => {
                    item.addEventListener('click', () => {
                        const index = parseInt(item.getAttribute('data-index'));
                        liveItems.forEach(i => i.classList.remove('active'));
                        item.classList.add('active');

                        if (window.Player && window.HlsPlayer) {
                            new Player({
                                plugins: [window.HlsPlayer],
                                id: "mse",
                                ignores: ["time", "progress"],
                                autoplayMuted: true,
                                autoplay: true,
                                playsinline: true,
                                isLive: true,
                                fluid: true,
                                pip: true,
                                muted: true,
                                url: anchors[index].streamUrl
                            });
                        }
                        if (viewLink) {
                            viewLink.href = 'https://colatvttbd.tv/truc-tiep/' + anchors[index].slug;
                        }
                    });
                });
            }

            let hasLocalData = false;
            try {
                const cached = localStorage.getItem(STORAGE_KEY);
                if (cached) {
                    const parsed = JSON.parse(cached);
                    if (parsed && parsed.length > 0) {
                        renderMatches(parsed);
                        hasLocalData = true;
                    }
                }
            } catch (e) {
                console.error('Error parsing localStorage:', e);
            }

            if (!hasLocalData) {
                heroSection.insertAdjacentHTML('afterend', skeletonHtml);
            }

            fetch('https://video-home.colahd.tv/api/pinned-home?t=' + new Date().getTime())
                .then(response => {
                    if (!response.ok) throw new Error('API Response not ok: ' + response.status);
                    return response.json();
                })
                .then(data => {
                    const matches = data.pinnedMatches;
                    if (!matches || matches.length < 1) {
                        if (!hasLocalData) {
                            const existingContainer = document.getElementById('pinned-matches-container');
                            if (existingContainer) existingContainer.remove();
                        }
                        return;
                    }
                    localStorage.setItem(STORAGE_KEY, JSON.stringify(matches));
                    renderMatches(matches);
                })
                .catch(error => {
                    console.error('Error fetching API data:', error);
                    if (!hasLocalData) {
                        const existingContainer = document.getElementById('pinned-matches-container');
                        if (existingContainer) existingContainer.remove();
                    }
                });
        });
        </script>
        <script type="text/javascript" id="jquery-js-after">
/* <![CDATA[ */
        // Script 1: Mobile menu toggle
        document.addEventListener("DOMContentLoaded", function () {
            const btn = document.querySelector(".mobile-menu-toggle");
            const overlay = document.querySelector(".mobile-menu-overlay");
            const navLinks = document.querySelectorAll(".nav-tabs a");
            if (!btn || !overlay) return;

            function toggleMenu() {
                const isOpen = document.body.classList.toggle("menu-open");
                btn.setAttribute("aria-expanded", isOpen ? "true" : "false");
            }

            btn.addEventListener("click", toggleMenu);
            overlay.addEventListener("click", toggleMenu);

            // Đóng menu khi click vào link
            navLinks.forEach(link => {
                link.addEventListener("click", () => {
                    document.body.classList.remove("menu-open");
                    btn.setAttribute("aria-expanded", "false");
                });
            });
        });

        // Script 2: Set --header-height CSS variable
        document.addEventListener("DOMContentLoaded", function () {
            const header = document.querySelector(".header");
            if (header) {
                const height = header.offsetHeight;
                document.documentElement.style.setProperty("--header-height", height + "px");
            }
        });

        // Script 3: Clamp floating video player (mini player)
        const mini = document.querySelector(".video-player.is-floating.floating-draggable");
        const margin = 8; // khoảng cách với mép

        function clampFloatingVideo() {
            if (!mini) return;

            const rect = mini.getBoundingClientRect();
            let x = rect.left;
            let y = rect.top;

            const vw = window.innerWidth;
            const vh = window.innerHeight;

            const minX = margin;
            const minY = margin;
            const maxX = vw - rect.width - margin;
            const maxY = vh - rect.height - margin;

            if (x < minX) x = minX;
            if (x > maxX) x = maxX;
            if (y < minY) y = minY;
            if (y > maxY) y = maxY;

            mini.style.left = x + "px";
            mini.style.top = y + "px";
        }

        // Chạy khi scroll, resize, orientation change
        window.addEventListener("scroll", clampFloatingVideo);
        window.addEventListener("resize", clampFloatingVideo);
        window.addEventListener("orientationchange", clampFloatingVideo);

        // Hỗ trợ tốt hơn trên iOS Safari (visual viewport)
        if (window.visualViewport) {
            visualViewport.addEventListener("resize", clampFloatingVideo);
            visualViewport.addEventListener("scroll", clampFloatingVideo);
        }
    
/* ]]> */
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js" id="slick-js-js"></script>
<script type="text/javascript" src="https://cdn.colatvttbd.tv/wp-content/themes/colatv-theme/assets/js/main.js" id="colatv-script-js"></script>
<script>
// === Catfish Banner Global: lấy từ API /api/catfish-banners (giống React CatfishBanners.jsx) ===
(function() {
  var apiUrl = 'https://api.colahd.tv/api/catfish-banners';
  fetch(apiUrl)
    .then(function(res) { return res.ok ? res.json() : null; })
    .then(function(data) {
      if (!data || !data.success || !data.data || !data.data.length) return;
      
      // === Video catfish overlay (nếu có trong trang watch) ===
      var catfishLink = data.data[0].link_url || '';
      if (catfishLink) {
        var overlayTop = document.querySelector('.video-catfish-overlay-top');
        var overlayBottom = document.querySelector('.video-catfish-overlay');
        if (overlayTop) {
          overlayTop.href = catfishLink;
          overlayTop.style.display = 'block';
        }
        if (overlayBottom) {
          overlayBottom.href = catfishLink;
          overlayBottom.style.display = 'block';
        }
      }
      
      // === Tạo container catfish-banner-global (fixed bottom, giống React) ===
      var wrapper = document.createElement('div');
      wrapper.className = 'catfish-banner-global';
      wrapper.style.cssText = 'position:fixed;bottom:0;left:0;right:0;z-index:9999;display:flex;flex-direction:column;align-items:center;pointer-events:none;width:50%;margin:0 auto;';
      
      // Nút đóng
      var closeBtn = document.createElement('button');
      closeBtn.className = 'catfish-banner-close';
      closeBtn.innerHTML = '✕';
      closeBtn.setAttribute('aria-label', 'Đóng quảng cáo');
      closeBtn.style.cssText = 'position:absolute;top:-24px;right:4px;width:24px;height:24px;background:rgba(0,0,0,0.7);color:#fff;border:none;border-radius:50%;font-size:14px;line-height:24px;text-align:center;cursor:pointer;pointer-events:auto;z-index:10000;padding:0;';
      closeBtn.addEventListener('click', function() { wrapper.remove(); });
      wrapper.appendChild(closeBtn);
      
      // Render banners
      data.data.forEach(function(banner) {
        var a = document.createElement('a');
        a.className = 'catfish-banner-global-item';
        a.href = banner.link_url || '#';
        a.target = '_blank';
        a.rel = 'nofollow noopener noreferrer';
        a.style.cssText = 'display:block;width:100%;pointer-events:auto;line-height:0;cursor:pointer;';
        var img = document.createElement('img');
        img.src = banner.image_url;
        img.alt = banner.name || 'Banner';
        img.style.cssText = 'width:100%;height:auto;display:block;object-fit:contain;';
        a.appendChild(img);
        wrapper.appendChild(a);
      });
      
      document.body.appendChild(wrapper);
      
      // Mobile: full width
      var mq = window.matchMedia('(max-width: 768px)');
      function applyMobile(e) { wrapper.style.width = e.matches ? '100%' : '50%'; }
      applyMobile(mq);
      mq.addListener(applyMobile);
    })
    .catch(function(e) { console.warn('Catfish banner load failed:', e); });
})();
</script>
<script>
// === FIX: Chặn smooth-scroll handlers can thiệp vào catfish overlay ===
(function() {
  document.addEventListener('click', function(e) {
    var overlay = e.target.closest('.video-catfish-overlay, .video-catfish-overlay-top');
    if (!overlay) return;
    var href = overlay.getAttribute('href');
    if (href && href !== '#' && !href.startsWith('#')) {
      e.stopImmediatePropagation();
    }
  }, true);
})();
</script>
</body>
</html>
<!-- | colatvttbd.tv | 2026-08-29 09:25:20 -->