/* v2 - Force override broken inline CSS (.fm-league missing } + -wall-img-count bad selector) */
.featured-match{margin:6px 4px!important;background:linear-gradient(135deg,#1a2a1f,#0d1117)!important;border:1px solid #2d8659!important;border-radius:10px!important;padding:12px!important;cursor:pointer!important}
.fm-league{text-align:center!important;color:#5cb87a!important;font-size:9px!important;font-weight:700!important;text-transform:uppercase!important;display:block!important}
.fm-teams{display:flex!important;align-items:center!important;justify-content:center!important;gap:10px!important;margin-top:6px!important}
.fm-team{flex:1!important;display:flex!important;flex-direction:column!important;align-items:center!important;gap:4px!important}
.fm-team img{width:32px!important;height:32px!important;object-fit:contain!important}
.fm-team span{font-size:10px!important;color:#ccc!important;text-align:center!important}
.fm-score{font-size:22px!important;font-weight:900!important;min-width:60px!important;text-align:center!important;color:#fff!important}
.fm-status{text-align:center!important;margin-top:6px!important;font-size:9px!important;color:#e74c3c!important;font-weight:700!important}
.fm-status.upcoming{color:#f0c040!important}
.ai-compose{margin:6px 4px!important;background:#141414!important;border:1px solid #2a2a2a!important;border-radius:10px!important;padding:10px!important}
.ai-compose-title{font-size:13px!important;font-weight:800!important;color:#5cb87a!important;margin-bottom:8px!important}
.ai-compose-row{display:flex!important;gap:6px!important;margin-top:6px!important}
.ai-compose input{flex:1!important;background:#222!important;border:1px solid #333!important;color:#eee!important;border-radius:18px!important;padding:9px 12px!important;font-size:12px!important;min-width:0!important}
.ai-compose button{background:#2d8659!important;border:0!important;color:#fff!important;border-radius:18px!important;padding:9px 12px!important;font-size:11px!important;font-weight:700!important;cursor:pointer!important;white-space:nowrap!important}
.ai-compose button.secondary{background:#333!important}
.hot-topic-row{display:flex!important;gap:6px!important;overflow-x:auto!important;padding:4px 0!important}
.hot-chip{flex:0 0 auto!important;background:#222!important;border:1px solid #333!important;color:#ddd!important;border-radius:16px!important;padding:5px 10px!important;font-size:11px!important;cursor:pointer!important;white-space:nowrap!important}
.hashtag-sources{margin:8px 4px!important;background:#1a1a1a!important;border:1px solid #2a2a2a!important;border-radius:10px!important;padding:10px!important}
.hashtag-sources h3{font-size:13px!important;color:#5cb87a!important;margin-bottom:8px!important}
.hashtag-src-item{display:flex!important;gap:8px!important;padding:8px!important;background:#202020!important;border-radius:8px!important;margin:6px 0!important;cursor:pointer!important}
.hashtag-src-img{flex:0 0 80px!important;aspect-ratio:16/9!important;background:#333!important;border-radius:6px!important;overflow:hidden!important}
.hashtag-src-img img{width:100%!important;height:100%!important;object-fit:cover!important}
.hashtag-src-text{flex:1!important;min-width:0!important}
.hashtag-src-title{font-size:12px!important;font-weight:700!important;color:#eee!important;display:-webkit-box!important;-webkit-line-clamp:2!important;-webkit-box-orient:vertical!important;overflow:hidden!important}
.hashtag-src-via{font-size:10px!important;color:#888!important;margin-top:2px!important}
.hashtag-rewrite-btn{width:100%!important;margin-top:8px!important;background:#2d8659!important;border:0!important;color:#fff!important;padding:9px!important;border-radius:10px!important;font-size:12px!important;font-weight:700!important;cursor:pointer!important}
.hashtag-load-more{width:100%!important;margin-top:8px!important;background:#222!important;border:1px solid #333!important;color:#ccc!important;padding:9px!important;border-radius:10px!important;font-size:12px!important;cursor:pointer!important}
.hashtag-loading{display:flex!important;align-items:center!important;gap:8px!important;padding:12px!important;color:#888!important;font-size:12px!important}
.hashtag-spinner{width:16px!important;height:16px!important;border:2px solid #333!important;border-top-color:#5cb87a!important;border-radius:50%!important;animation:ht-spin .8s linear infinite!important}
@keyframes ht-spin{to{transform:rotate(360deg)}}
.wall-img-count{position:absolute;bottom:4px;left:4px;background:rgba(0,0,0,.7);color:#fff;font-size:9px;padding:1px 5px;border-radius:4px}
#progress-toast{position:fixed!important;bottom:70px!important;left:50%!important;transform:translateX(-50%)!important;background:#2d8659!important;color:#fff!important;padding:10px 20px!important;border-radius:20px!important;font-size:12px!important;z-index:99998!important;box-shadow:0 4px 12px rgba(0,0,0,.4)!important;display:none;white-space:nowrap!important}
/* === ARTICLE / REWRITE VIEW FIX === *//* === WORLD CUP 2026 SECTION === */
.wc-section{margin:8px 4px!important;background:#1a1a1a!important;border:1px solid #2a2a2a!important;border-radius:10px!important;overflow:hidden!important}
.wc-header{padding:10px 12px!important;background:linear-gradient(135deg,#0d1b2b,#1a3a2a 50%,#0b4b8b)!important;display:flex!important;align-items:center!important;justify-content:space-between!important}
.wc-title{font-size:14px!important;font-weight:800!important;color:#fff!important}
.wc-tabs{display:flex!important;gap:4px!important;padding:8px 10px!important;background:#1a1a1a!important;overflow-x:auto!important;scrollbar-width:none!important;border-bottom:1px solid #2a2a2a!important}
.wc-tabs::-webkit-scrollbar{display:none!important}
.wc-tab{padding:6px 12px!important;background:#222!important;border:1px solid #333!important;border-radius:12px!important;color:#999!important;font-size:10px!important;white-space:nowrap!important;cursor:pointer!important;flex-shrink:0!important}
.wc-tab.active{background:#0b6bcb!important;border-color:#0b6bcb!important;color:#fff!important;font-weight:700!important}
.wc-tab-content{padding:10px!important;max-height:500px!important;overflow-y:auto!important}
.wc-news-list{display:flex!important;flex-direction:column!important;gap:8px!important}
.wc-news-item{display:flex!important;gap:10px!important;padding:8px!important;background:#202020!important;border-radius:8px!important;cursor:pointer!important}
.wc-news-item:hover{background:#2a2a2a!important}
.wc-news-img{flex:0 0 90px!important;aspect-ratio:16/9!important;background:#333!important;border-radius:6px!important;overflow:hidden!important}
.wc-news-img img{width:100%!important;height:100%!important;object-fit:cover!important}
.wc-news-text{flex:1!important;min-width:0!important;display:flex!important;flex-direction:column!important;justify-content:space-between!important}
.wc-news-title{font-size:12px!important;font-weight:700!important;color:#eee!important;display:-webkit-box!important;-webkit-line-clamp:2!important;-webkit-box-orient:vertical!important;overflow:hidden!important}
.wc-news-source{font-size:10px!important;color:#888!important;margin-top:4px!important}

/* World Cup Fixtures */
.wc-fixtures-list{display:flex!important;flex-direction:column!important;gap:6px!important}
.wc-match-item{padding:10px!important;background:#202020!important;border-radius:8px!important;border-left:3px solid #333!important}
.wc-match-item:nth-child(odd){background:#1e1e1e!important}
.wc-match-date{font-size:10px!important;color:#888!important;margin-bottom:4px!important}
.wc-match-teams{display:flex!important;align-items:center!important;justify-content:center!important;gap:12px!important}
.wc-match-teams .wc-team{flex:1!important;font-size:12px!important;color:#ddd!important;text-align:center!important}
.wc-match-teams .wc-score{font-size:16px!important;font-weight:900!important;color:#f0c040!important;min-width:60px!important;text-align:center!important}
.wc-score.wc-live{color:#e74c3c!important}
.wc-score.wc-finished{color:#888!important}
.wc-score.wc-upcoming{color:#5cb87a!important}
.wc-match-location{font-size:9px!important;color:#777!important;text-align:center!important;margin-top:4px!important}

/* World Cup Standings & Stats Tables */
.wc-standings-table,.wc-stats-table{font-size:11px!important;color:#ccc!important;overflow-x:auto!important;width:100%!important}
.wc-standings-table table,.wc-stats-table table{width:100%!important;border-collapse:collapse!important;table-layout:fixed!important}
.wc-standings-table th,.wc-stats-table th{background:#222!important;color:#999!important;padding:6px 4px!important;font-size:10px!important;border-bottom:1px solid #333!important;text-align:center!important}
.wc-standings-table th:first-child,.wc-stats-table th:first-child{text-align:left!important}
.wc-standings-table td,.wc-stats-table td{padding:5px 4px!important;border-bottom:1px solid #1a1a1a!important;text-align:center!important;font-size:11px!important}
.wc-standings-table td:first-child,.wc-stats-table td:first-child{text-align:left!important}
.wc-standings-table .pts,.wc-stats-table .pts{font-weight:800!important;color:#f0c040!important}
.wc-standings-table .team-name,.wc-stats-table .team-name{display:flex!important;align-items:center!important;gap:4px!important}
.wc-standings-table .team-name img,.wc-stats-table .team-name img{width:16px!important;height:16px!important;object-fit:contain!important}

/* World Cup Highlights */
.wc-highlights-grid{display:grid!important;grid-template-columns:repeat(2,1fr)!important;gap:8px!important}/* World Cup Stats */
.wc-stats{padding:10px!important}
.wc-stat-group{margin-bottom:16px!important;padding:10px!important;background:#202020!important;border-radius:8px!important}
.wc-stat-group h4{font-size:12px!important;color:#5cb87a!important;margin-bottom:8px!important;font-weight:700!important}
.wc-stat-group .wc-empty{color:#888!important;font-size:11px!important;font-style:italic!important}
.wc-stat-group table{width:100%!important;border-collapse:collapse!important}
.wc-stat-group th{background:#2a2a2a!important;color:#999!important;padding:6px 4px!important;font-size:10px!important;text-align:left!important;border-bottom:1px solid #333!important}
.wc-stat-group td{padding:5px 4px!important;border-bottom:1px solid #1a1a1a!important;font-size:11px!important;color:#ccc!important}

/* World Cup Group Standings */
.wc-group{margin-bottom:16px!important}
.wc-group h4{font-size:12px!important;color:#f0c040!important;margin-bottom:6px!important;padding:6px 8px!important;background:#222!important;border-radius:6px!important;font-weight:700!important}
.wc-table{width:100%!important;border-collapse:collapse!important;font-size:11px!important}
.wc-table th{background:#2a2a2a!important;color:#999!important;padding:6px 4px!important;font-size:10px!important;text-align:center!important;border-bottom:1px solid #333!important}
.wc-table th:first-child{text-align:left!important}
.wc-table td{padding:5px 4px!important;border-bottom:1px solid #1a1a1a!important;text-align:center!important;color:#ccc!important}
.wc-table td:first-child{text-align:left!important;font-weight:600!important}
.wc-table .pts{font-weight:800!important;color:#f0c040!important}

/* World Cup Highlights */
.wc-highlights-grid{display:grid!important;grid-template-columns:repeat(2,1fr)!important;gap:8px!important}
.wc-hl-item{cursor:pointer!important}
.wc-hl-thumb{position:relative!important;aspect-ratio:16/9!important;background:#333!important;border-radius:6px!important;overflow:hidden!important}
.wc-hl-thumb img{width:100%!important;height:100%!important;object-fit:cover!important}
.wc-hl-thumb .card-play{position:absolute!important;left:50%!important;top:50%!important;transform:translate(-50%,-50%)!important;width:30px!important;height:30px!important;border-radius:50%!important;background:rgba(0,0,0,.55)!important;display:flex!important;align-items:center!important;justify-content:center!important;color:#fff!important;font-size:12px!important}
.wc-hl-title{font-size:10px!important;color:#ccc!important;margin-top:4px!important;line-height:1.2!important;display:-webkit-box!important;-webkit-line-clamp:2!important;-webkit-box-orient:vertical!important;overflow:hidden!important}

/* === ARTICLE / REWRITE VIEW FIX === */
.article-view{padding:12px 8px 40px!important;max-width:760px!important;margin:0 auto!important}
.article-title{font-size:18px!important;font-weight:800!important;line-height:1.3!important;margin-bottom:8px!important;color:#fff!important}
.article-p{font-size:14px!important;line-height:1.7!important;color:#ccc!important;margin-bottom:10px!important}
.article-img{width:100%!important;border-radius:6px!important;margin:10px 0!important}
.article-actions{display:flex!important;gap:8px!important;flex-wrap:wrap!important;border-top:1px solid #333!important;margin-top:16px!important;padding-top:10px!important}
.article-actions button{background:#1a1a1a!important;border:1px solid #333!important;color:#ccc!important;padding:7px 12px!important;border-radius:14px!important;font-size:11px!important;cursor:pointer!important}
.article-actions button.primary{background:#2d8659!important;border-color:#2d8659!important;color:#fff!important}
.badge-ai{background:#2d8659!important;color:#fff!important;font-size:8px!important;padding:1px 5px!important;border-radius:3px!important;font-weight:700!important;display:inline-block!important}
/* TTS voice selector */
.tts-selector{margin:12px 0!important;padding:10px!important;background:#1a1a1a!important;border:1px solid #2a2a2a!important;border-radius:10px!important;width:100%!important}
.tts-selector-label{font-size:12px!important;font-weight:700!important;color:#5cb87a!important;margin-bottom:8px!important}
.tts-voice-groups{display:flex!important;flex-direction:column!important;gap:8px!important;max-height:280px!important;overflow-y:auto!important}
.tts-voice-group{background:#1e1e1e!important;border:1px solid #2a2a2a!important;border-radius:8px!important;padding:6px 8px!important}
.tts-voice-group-label{font-size:10px!important;font-weight:700!important;color:#888!important;margin-bottom:4px!important;text-transform:uppercase!important}
.tts-voice-btns{display:flex!important;gap:6px!important;flex-wrap:wrap!important}
.tts-voice-btn{background:#222!important;border:1px solid #333!important;color:#ddd!important;border-radius:12px!important;padding:6px 10px!important;font-size:10px!important;cursor:pointer!important;white-space:nowrap!important}
.tts-voice-btn.active{background:#2d8659!important;border-color:#2d8659!important;color:#fff!important;font-weight:700!important}
.tts-speed-row{display:flex!important;align-items:center!important;gap:8px!important;font-size:12px!important;color:#aaa!important;margin-top:10px!important}
.tts-speed-row select{flex:1!important;background:#222!important;border:1px solid #333!important;color:#eee!important;border-radius:14px!important;padding:6px 10px!important;font-size:11px!important}
/* Image gallery */
.article-image-gallery{margin:10px 0!important}
.article-hero-img{width:100%!important;border-radius:8px!important;margin-bottom:6px!important}
.gallery-thumbs{display:flex!important;gap:6px!important;overflow-x:auto!important;padding-bottom:4px!important}
.gallery-thumb{flex:0 0 100px!important;aspect-ratio:16/9!important;border-radius:6px!important;overflow:hidden!important;background:#222!important;cursor:pointer!important}
.gallery-thumb img{width:100%!important;height:100%!important;object-fit:cover!important}
/* === BADGE FIX (article AI badge) === */
.badge{display:inline-block!important;font-size:8px!important;padding:1px 5px!important;border-radius:3px!important;font-weight:700!important;vertical-align:middle!important}
.badge.badge-ai,.badge-ai{background:#2d8659!important;color:#fff!important}
/* article-view top spacing so badge+title not clipped */
.article-view .badge{margin-bottom:6px!important}
.article-view .tts-selector{width:auto!important;display:block!important}

/* ============================================================
   1:1 ("ratio-square") view for normal horizontal Dan tri / SKDS videos.
   Spec: fill 100% of the slide HEIGHT, crop the excess WIDTH (cut left/right).
   A YouTube <iframe> ignores object-fit, so instead of letterboxing we size the
   iframe to FULL slide height and 16:9 width (177.78vh -> wider than a phone),
   center it, and let the slide's overflow:hidden clip the sides.
   The #tiktok-feed ancestor raises specificity above app_v2.js's injected
   `.tiktok-slide.ratio-square>iframe` rule, so this wins regardless of CSS
   load order (not just !important + source order).
   ============================================================ */
#tiktok-feed .tiktok-slide.ratio-square{position:relative!important;overflow:hidden!important;display:block!important;background:#000!important}
#tiktok-feed .tiktok-slide.ratio-square>iframe,
#tiktok-feed .tiktok-slide.ratio-square>video{
  position:absolute!important;
  top:50%!important;
  left:50%!important;
  transform:translate(-50%,-50%)!important;
  height:100%!important;          /* 100% full height */
  width:177.78vh!important;       /* 16/9 of the height -> overflow on the sides */
  min-width:100%!important;       /* never narrower than the screen */
  max-width:none!important;
  max-height:none!important;
  object-fit:cover!important;     /* affects <video>; harmless for <iframe> */
}
/* Fallback copy at plain specificity too (in case the feed id ever differs) */
.tiktok-slide.ratio-square{position:relative!important;overflow:hidden!important;display:block!important;background:#000!important}
.tiktok-slide.ratio-square>iframe,
.tiktok-slide.ratio-square>video{
  position:absolute!important;top:50%!important;left:50%!important;
  transform:translate(-50%,-50%)!important;
  height:100%!important;width:177.78vh!important;
  min-width:100%!important;max-width:none!important;max-height:none!important;
  object-fit:cover!important;
}

/* ============================================================
   BXH / BÅNG XẼP HẠNG (standing league table) FIX
   Bongda returns div-based Tailwind rows (.ranking-table .leaderboard
   .leaderboard-item / .head / .team / .copy). The old CSS only styled
   <table> so the standings rendered broken. Style the divs directly.
   ============================================================ */
#ls-content .ranking-table,
#ls-content .leaderboard{display:block!important;width:100%!important}
#ls-content .ranking-table .head,
#ls-content .leaderboard .head{display:flex!important;width:100%!important;background:#222!important;border-bottom:1px solid #333!important;padding:5px 0!important;font-size:10px!important;color:#999!important}
#ls-content .ranking-table .head .team,
#ls-content .leaderboard .head .team{flex:1 1 auto!important;min-width:0!important}
#ls-content .ranking-table .head .team span,
#ls-content .leaderboard .head .team span{display:inline-block!important;width:18px!important;text-align:center!important;color:#888!important}
#ls-content .ranking-table .head .team .link,
#ls-content .leaderboard .head .team .link{font-size:10px!important;color:#999!important;font-weight:700!important}
#ls-content .ranking-table .head .copy,
#ls-content .leaderboard .head .copy{display:flex!important;gap:2px!important;align-items:center!important;justify-content:flex-end!important;min-width:0!important}
#ls-content .ranking-table .head .copy p,
#ls-content .leaderboard .head .copy p{font-size:9px!important;color:#888!important;min-width:16px!important;text-align:center!important;margin:0!important}
#ls-content .ranking-table .head .copy p.form,
#ls-content .leaderboard .head .copy p.form{display:none!important}
#ls-content .ranking-table .leaderboard-item,
#ls-content .ranking-table #team_,
#ls-content .leaderboard .leaderboard-item{
  display:table!important;width:100%!important;table-layout:fixed!important;
  border-collapse:collapse!important;border-bottom:1px solid #1a1a1a!important;
  font-size:11px!important;color:#ccc!important;background:transparent!important
}
#ls-content .ranking-table .leaderboard-item>div.team,
#ls-content .ranking-table .leaderboard-item>.team,
#ls-content .leaderboard .leaderboard-item .team{
  display:table-cell!important;vertical-align:middle!important;
  padding:5px 4px!important;text-align:left!important;min-width:0!important
}
#ls-content .ranking-table .leaderboard-item>div.team span,
#ls-content .ranking-table .leaderboard-item>.team span{
  display:inline-block!important;width:18px!important;min-width:18px!important;
  text-align:center!important;font-size:10px!important;color:#888!important;font-weight:600!important
}
#ls-content .ranking-table .leaderboard-item>div.team a.link,
#ls-content .ranking-table .leaderboard-item>.team a.link{
  display:inline-flex!important;align-items:center!important;gap:4px!important;
  min-width:0!important;font-size:11px!important;color:#ccc!important;text-decoration:none!important
}
#ls-content .ranking-table .leaderboard-item>div.team a.link img,
#ls-content .ranking-table .leaderboard-item>.team a.link img{width:16px!important;height:16px!important;object-fit:contain!important;flex:0 0 auto!important}
#ls-content .ranking-table .leaderboard-item>div.team a.link p,
#ls-content .ranking-table .leaderboard-item>.team a.link p{
  font-size:11px!important;color:#ccc!important;margin:0!important;
  white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important
}
#ls-content .ranking-table .leaderboard-item>div.copy,
#ls-content .ranking-table .leaderboard-item>.copy,
#ls-content .leaderboard .leaderboard-item .copy{
  display:table-cell!important;vertical-align:middle!important;
  padding:5px 2px!important;text-align:center!important;white-space:nowrap!important
}
#ls-content .ranking-table .leaderboard-item>div.copy p,
#ls-content .ranking-table .leaderboard-item>.copy p{
  display:inline-block!important;min-width:22px!important;text-align:center!important;
  font-size:11px!important;color:#ccc!important;margin:0 1px!important
}
#ls-content .ranking-table .leaderboard-item>div.copy p strong,
#ls-content .ranking-table .leaderboard-item>.copy p strong{
  display:inline-block!important;min-width:22px!important;text-align:center!important;
  font-weight:800!important;color:#f0c040!important;font-size:12px!important
}
#ls-content .ranking-table .leaderboard-item>div.copy p.form,
#ls-content .ranking-table .leaderboard-item>.copy p.form{display:inline-flex!important;flex-wrap:nowrap!important}
#ls-content .ranking-table .leaderboard-item>div.copy p.form span,
#ls-content .ranking-table .leaderboard-item>.copy p.form span{
  display:inline-block!important;min-width:14px!important;height:14px!important;
  line-height:14px!important;text-align:center!important;font-size:9px!important;
  border-radius:2px!important;margin:0 1px!important;color:#fff!important
}
#ls-content .ranking-table .leaderboard-item>div.copy p.form span.bg-green,
#ls-content .ranking-table .leaderboard-item>.copy p.form span.bg-green{background:#2d8659!important}
#ls-content .ranking-table .leaderboard-item>div.copy p.form span.bg-gray-5,
#ls-content .ranking-table .leaderboard-item>.copy p.form span.bg-gray-5,
#ls-content .leaderboard .leaderboard-item .copy p.form span.bg-gray-5,
#ls-content .ranking-table .leaderboard-item .copy p.form span.bg-gray-5{background:#555!important;color:#ccc!important}
#ls-content .ranking-table .leaderboard-item>div.copy p.form span.bg-red,
#ls-content .ranking-table .leaderboard-item>.copy p.form span.bg-red{background:#c0392b!important}
/* hide the bongda left accent bar that floats absolutely */
#ls-content .ranking-table .leaderboard-item>div[class*="w-["],
#ls-content .ranking-table .leaderboard-item div.relative{display:none!important}
/* top row = champion accent can stay, but clean layout */
#ls-content .leaderboard-item{margin:0!important}
#ls-content .rank-table{width:100%!important;overflow-x:auto!important}
/* fallback generic so ANY div-based standings table gets readable */
#ls-content .team .name,#ls-content .team .logo{font-size:11px!important;color:#ccc!important}
#ls-content .copy p{font-size:11px!important;color:#ccc!important}
/* injected BXH header + row layout (see _decorateStandings in app_v2.js) */
#ls-content .ls-bxh-head{
  display:flex!important;width:100%!important;align-items:center!important;gap:4px!important;
  background:#222!important;border-bottom:1px solid #333!important;
  padding:5px 2px!important;position:sticky!important;top:0!important;z-index:2!important
}
#ls-content .ls-bxh-head .team{flex:1!important;min-width:0!important;display:flex!important;align-items:center!important;gap:4px!important}
#ls-content .ls-bxh-head .team span{display:inline-block!important;width:18px!important;min-width:18px!important;text-align:center!important;color:#888!important;font-size:10px!important;font-weight:700!important}
#ls-content .ls-bxh-head .team p{font-size:10px!important;color:#999!important;font-weight:700!important;margin:0!important;text-transform:uppercase!important}
#ls-content .ls-bxh-head .copy{display:flex!important;align-items:center!important;gap:2px!important;white-space:nowrap!important}
#ls-content .ls-bxh-head .copy p{display:inline-block!important;min-width:20px!important;text-align:center!important;font-size:9px!important;color:#888!important;font-weight:700!important;margin:0!important}
#ls-content .leaderboard-item{display:flex!important;width:100%!important;align-items:center!important;gap:4px!important;border-bottom:1px solid #1a1a1a!important;padding:4px 2px!important;background:transparent!important}
#ls-content .leaderboard-item .team{flex:1!important;min-width:0!important;display:flex!important;align-items:center!important;gap:4px!important}
#ls-content .leaderboard-item .team span{display:inline-block!important;width:18px!important;min-width:18px!important;text-align:center!important;color:#888!important;font-size:10px!important;font-weight:600!important}
#ls-content .leaderboard-item .team a{display:inline-flex!important;align-items:center!important;gap:4px!important;font-size:11px!important;color:#ccc!important;text-decoration:none!important;overflow:hidden!important;min-width:0!important}
#ls-content .leaderboard-item .team a img{width:16px!important;height:16px!important;object-fit:contain!important;flex:0 0 auto!important}
#ls-content .leaderboard-item .team a p{font-size:11px!important;color:#ccc!important;margin:0!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
#ls-content .leaderboard-item .copy{display:flex!important;align-items:center!important;gap:2px!important;white-space:nowrap!important}
#ls-content .leaderboard-item .copy p{display:inline-block!important;min-width:20px!important;text-align:center!important;font-size:11px!important;color:#ccc!important;margin:0!important}
#ls-content .leaderboard-item .copy p strong{font-weight:800!important;color:#f0c040!important;min-width:20px!important;text-align:center!important}
#ls-content .leaderboard-item .copy p.form{display:inline-flex!important;flex-wrap:nowrap!important}
#ls-content .leaderboard-item .copy p.form span{width:14px!important;height:14px!important;line-height:14px!important;font-size:9px!important;border-radius:2px!important;color:#fff!important;margin:0 1px!important;text-align:center!important}
#ls-content .leaderboard-item .copy p.form span.bg-green{background:#2d8659!important;display:inline-block!important}
#ls-content .leaderboard-item .copy p.form span.bg-gray-5{background:#555!important;color:#ccc!important;display:inline-block!important}
#ls-content .leaderboard-item .copy p.form span.bg-red{background:#c0392b!important;display:inline-block!important}
#ls-content .leaderboard-item>div[class*="w-["]{display:none!important}#ls-content .leaderboard-item>div[class*="w-["]{display:none!important}

/* ============================================================
   FPT PLAY / HIGHLIGHT VIDEO OVERFLOW FIX v2
   fptplay videos open in the TikTok-style feed inside .yt-thumb-wrap >
   iframe (YouTube) or <video>. <iframe> ignores object-fit, so a 9:16
   Shorts (or any non-16:9) source stretched the slide and overflowed
   width/height — the iframe's intrinsic aspect ratio pushed it beyond the
   slide bounds.

   BUG FIX v2 (two issues):
   1) "FPT Play videos displayed differently from Short AI videos — too tall
      and wide": The old rule sized iframes to 177.78vh (16:9 of viewport
      height, ~1.78x screen wide). Short AI <video> tags used width:100%;
      height:100%; object-fit:contain. The iframe was much wider/taller than
      the video. Fix: make iframe use width:100%; height:100% — identical to
      <video> — centered and clipped by the slide's overflow:hidden.

   2) "9:16 ↔ 16:9 ratio toggle button (🖥️/📺) doesn't work on football
      player slides and wall videos": The inline CSS .ratio-wide rule
      (specificity 0,3,1) was overridden by fm_fix.css selectors using the
      #tiktok-feed ID (specificity 1,3,1). The .ratio-wide rules never applied
      to iframes inside #tiktok-feed. Fix: add .ratio-wide override rules
      with #tiktok-feed ID prefix (matching or higher specificity) AFTER the
      default iframe rules, so the !important cascade honors the toggle.

   Sizing model: iframes don't support object-fit, so we use
   position:absolute + transform centering inside .yt-thumb-wrap (which is
   position:relative, width:100%, height:100%). The slide's
   overflow:hidden clips any letterbox/pillarbox bars — same visual result
   as object-fit:contain on <video>.
   ============================================================ */
.tiktok-slide{overflow:hidden!important;position:relative!important}
.tiktok-slide video{max-width:100%!important;max-height:100%!important;object-fit:contain!important;width:100%!important;height:100%!important;border:none!important}
/* FPT play / YouTube iframe in the TikTok viewer: SAME sizing as <video>.
   Width and height 100% of .yt-thumb-wrap (which fills .tiktok-slide),
   centered via transform, clipped by overflow:hidden on the slide.
   This makes iframes appear IDENTICAL to Short AI <video> tags. */
#tiktok-feed .tiktok-slide .yt-thumb-wrap iframe,
#wc-shorts-feed .tiktok-slide .yt-thumb-wrap iframe,
#tt-feed .tiktok-slide .yt-thumb-wrap iframe,
.tiktok-slide .yt-thumb-wrap iframe{
  position:absolute!important;
  top:50%!important;
  left:50%!important;
  transform:translate(-50%,-50%)!important;
  width:100%!important;            /* match <video> — 100% of slide */
  height:100%!important;          /* match <video> — 100% of slide */
  min-width:100%!important;
  min-height:100%!important;
  max-height:100%!important;
  max-width:100vw!important;      /* never overflow screen width */
  border:none!important;
}
/* WC Shorts path: iframe is a DIRECT child of .tiktok-slide (no .yt-thumb-wrap) */
#tiktok-feed .tiktok-slide > iframe,
#wc-shorts-feed .tiktok-slide > iframe,
.tiktok-slide > iframe{
  position:absolute!important;
  top:50%!important;
  left:50%!important;
  transform:translate(-50%,-50%)!important;
  width:100%!important;            /* match <video> — 100% of slide */
  height:100%!important;          /* match <video> — 100% of slide */
  min-width:100%!important;
  min-height:100%!important;
  max-height:100%!important;
  max-width:100vw!important;      /* never overflow screen width */
  border:none!important;
}
/* RATIO TOGGLE FIX: when .ratio-wide is on a .tiktok-slide inside
   #tiktok-feed, switch from 9:16 portrait to 16:9 landscape.
   These rules use #tiktok-feed ID prefix (same specificity as the default
   iframe rules above) AND .ratio-wide class, so they win the CSS cascade
   only when the toggle button is active. The default 9:16 sizing (width:100%,
   height:100%) is overridden to 16:9 landscape (width:100vw, height:56.25vw). */
#tiktok-feed .tiktok-slide.ratio-wide .yt-thumb-wrap iframe,
#wc-shorts-feed .tiktok-slide.ratio-wide .yt-thumb-wrap iframe,
#tt-feed .tiktok-slide.ratio-wide .yt-thumb-wrap iframe,
.tiktok-slide.ratio-wide .yt-thumb-wrap iframe{
  position:absolute!important;
  top:50%!important;
  left:50%!important;
  transform:translate(-50%,-50%)!important;
  width:calc(100vw - 1px)!important;
  height:56.25vw!important;
  max-width:100vw!important;
  max-height:100dvh!important;
  min-width:100%!important;
  min-height:100%!important;
  border:none!important;
  pointer-events:auto!important;
}
#tiktok-feed .tiktok-slide.ratio-wide > iframe,
#wc-shorts-feed .tiktok-slide.ratio-wide > iframe,
.tiktok-slide.ratio-wide > iframe{
  position:absolute!important;
  top:50%!important;
  left:50%!important;
  transform:translate(-50%,-50%)!important;
  width:calc(100vw - 1px)!important;
  height:56.25vw!important;
  max-width:100vw!important;
  max-height:100dvh!important;
  min-width:100%!important;
  min-height:100%!important;
  border:none!important;
  pointer-events:auto!important;
}
/* Toggle back to 9:16 (default) — reset to 100% sizing */
#tt-feed .tiktok-slide:not(.ratio-wide) .yt-thumb-wrap iframe,
#tt-feed .tiktok-slide:not(.ratio-wide) > iframe{
  width:100%!important;
  height:100%!important;
  max-width:100vw!important;
  min-width:100%!important;
}
/* .yt-thumb-wrap is the positioning context for the centered iframe */
.yt-thumb-wrap{position:relative!important;overflow:hidden!important;width:100%!important;height:100%!important;background:#000!important}
.yt-thumb-wrap img,.yt-thumb-wrap video{width:100%!important;height:100%!important;object-fit:cover!important}
.wall-item{overflow:hidden!important}
.wall-thumb img,.wall-thumb video{max-width:100%!important;max-height:100%!important;object-fit:cover!important}
/* FIX: FPT Play cards on the AI wall (Tường AI) are wrapped in
   .wall-yt-feed-item which had NO CSS — the inner .wall-item's inline
   flex:0 0 260px is ignored inside a display:block wrapper, so the card
   sized to its content (1280px hq720 thumbnail) → ~2x the Short AI card.
   Give the wrapper the same flex sizing as a wall card so the FPT card is
   100% identical in width/height to a Short AI card. */
.ai-wall-track .wall-yt-feed-item,
#ai-wall-track .wall-yt-feed-item,
.wall-yt-feed-item{
  flex:0 0 260px!important;
  max-width:260px!important;
  min-width:260px!important;
}
.wall-yt-feed-item .wall-item{
  width:100%!important;
  flex:0 0 auto!important;   /* inner card fills the wrapper, not double-sizes */
  max-width:100%!important;
}
#fpt-main-track .wall-item{flex:0 0 260px!important;max-width:260px!important}
.slider-thumb{overflow:hidden!important}
.slider-thumb img,.slider-thumb video{max-width:100%!important;max-height:100%!important;object-fit:cover!important}
.fpt-slider-thumb img,.fpt-slider-thumb video{max-width:100%!important;max-height:100%!important;object-fit:cover!important}

/* FPT Play slider moved into Livescore section - ensure it fits within the ls-section */
.ls-section #home-fpt-section{margin-top:4px;padding:0 4px}
/* M3U IPTV grid */
.m3u-grid{padding:12px}
.m3u-group-label{color:#5cb87a;font-size:14px;font-weight:700;margin:10px 0 6px 4px}
.m3u-group-track{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.m3u-channel-card{background:#1a1a1a;border:1px solid #2a2a2a;border-radius:10px;padding:8px;cursor:pointer;transition:0.2s;position:relative}
.m3u-channel-card:hover{border-color:#5cb87a;transform:translateY(-1px)}
.m3u-channel-thumb{width:100%;max-width:80px;height:auto;aspect-ratio:1/1;background:#222;border-radius:6px;overflow:hidden;display:flex;align-items:center;justify-content:center;margin:0 auto}
.m3u-channel-thumb img{width:100%;height:100%;object-fit:contain}
.m3u-no-logo{font-size:24px;color:#5cb87a}
.m3u-channel-title{font-size:11px;color:#ccc;margin-top:4px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.m3u-stream-count{font-size:9px;color:#5cb87a;margin-top:3px;text-align:center;background:rgba(45,134,89,.12);border-radius:8px;padding:1px 8px;display:inline-block}
.badge-live{background:#ff4444 !important;color:#fff !important;animation:pulse 1.5s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.6}}
