Why This Is the Last World Cup for These Football Legends

Sports LiveMay 31, 2026
Why This Is the Last World Cup for These Football Legends
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="FIFA World Cup 2026 Complete Hub — Live Scores, Player Rankings, Match Schedule, 120 Football Articles. Your #1 World Cup destination."> <meta name="keywords" content="FIFA World Cup 2026, football, live scores, player rankings, schedule, Messi, Mbappe, Ronaldo, World Cup groups, World Cup schedule"> <meta property="og:title" content="FIFA World Cup 2026 Complete Hub | SportsLNV"> <meta property="og:description" content="120 articles, live scores, player rankings & full match schedule in one place."> <title>FIFA World Cup 2026 Complete Hub | SportsLNV</title> <link rel="preconnect" href="https://fonts.googleapis.com"> <link href="https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Barlow:wght@400;500;600;700&family=Barlow+Condensed:wght@600;700;800&display=swap" rel="stylesheet"> <style> /* ============================================================ RESET & ROOT ============================================================ */ *, *::before, *::after { margin:0; padding:0; box-sizing:border-box; } :root { --bg: #080c14; --bg2: #0d1320; --bg3: #111827; --card: #131c2e; --card2: #1a2540; --border: rgba(255,255,255,0.08); --border2: rgba(255,255,255,0.14); --gold: #F5A623; --gold2: #ffcc66; --red: #E8293A; --blue: #2563EB; --cyan: #06B6D4; --green: #22C55E; --purple: #8B5CF6; --text: #F1F5F9; --text2: #94A3B8; --text3: #64748B; --r: 12px; --r2: 8px; --shadow: 0 4px 24px rgba(0,0,0,0.5); --glow-gold: 0 0 30px rgba(245,166,35,0.3); --glow-red: 0 0 30px rgba(232,41,58,0.25); } html { scroll-behavior: smooth; } body { font-family: 'Barlow', sans-serif; background: var(--bg); color: var(--text); min-height: 100vh; overflow-x: hidden; } /* ============================================================ SCROLLBAR ============================================================ */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: var(--bg); } ::-webkit-scrollbar-thumb { background: var(--card2); border-radius: 3px; } /* ============================================================ BACKGROUND GRID ============================================================ */ body::before { content: ''; position: fixed; inset: 0; background-image: linear-gradient(rgba(255,255,255,0.02) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,0.02) 1px, transparent 1px); background-size: 40px 40px; pointer-events: none; z-index: 0; } /* ============================================================ NAV ============================================================ */ nav { position: sticky; top: 0; z-index: 100; background: rgba(8,12,20,0.92); backdrop-filter: blur(16px); border-bottom: 1px solid var(--border); padding: 0 20px; } .nav-inner { max-width: 1280px; margin: 0 auto; display: flex; align-items: center; gap: 12px; height: 54px; } .nav-logo { font-family: 'Bebas Neue', sans-serif; font-size: 22px; color: var(--gold); letter-spacing: 2px; text-decoration: none; margin-right: 8px; flex-shrink: 0; } .nav-logo span { color: var(--text); } .nav-tabs { display: flex; gap: 2px; overflow-x: auto; scrollbar-width: none; flex: 1; } .nav-tabs::-webkit-scrollbar { display: none; } .nav-tab { padding: 6px 14px; border-radius: 6px; font-size: 13px; font-weight: 500; color: var(--text2); cursor: pointer; white-space: nowrap; border: none; background: transparent; transition: all 0.15s; font-family: 'Barlow', sans-serif; } .nav-tab:hover { background: rgba(255,255,255,0.06); color: var(--text); } .nav-tab.active { background: rgba(245,166,35,0.12); color: var(--gold); } .live-pill { display: flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 600; color: var(--red); background: rgba(232,41,58,0.1); border: 1px solid rgba(232,41,58,0.25); padding: 4px 10px; border-radius: 20px; white-space: nowrap; flex-shrink: 0; } .live-dot { width: 6px; height: 6px; background: var(--red); border-radius: 50%; animation: blink 1.2s infinite; } @keyframes blink { 0%,100% { opacity:1; } 50% { opacity:0.2; } } /* ============================================================ WRAPPER ============================================================ */ .wrapper { max-width: 1280px; margin: 0 auto; padding: 0 20px 60px; position: relative; z-index: 1; } /* ============================================================ HERO ============================================================ */ .hero { position: relative; overflow: hidden; border-radius: 20px; margin: 20px 0 24px; background: linear-gradient(135deg, #0a1628 0%, #0f0e2a 40%, #0a1e14 100%); border: 1px solid rgba(245,166,35,0.2); padding: 48px 40px 36px; perspective: 800px; } .hero-bg-orb1 { position: absolute; width: 500px; height: 500px; border-radius: 50%; background: radial-gradient(circle, rgba(245,166,35,0.12), transparent 70%); top: -200px; right: -100px; pointer-events: none; } .hero-bg-orb2 { position: absolute; width: 400px; height: 400px; border-radius: 50%; background: radial-gradient(circle, rgba(34,197,94,0.08), transparent 70%); bottom: -150px; left: -100px; pointer-events: none; } .hero-bg-lines { position: absolute; inset: 0; background-image: repeating-linear-gradient(45deg, transparent, transparent 40px, rgba(255,255,255,0.012) 40px, rgba(255,255,255,0.012) 41px); pointer-events: none; } .hero-badge { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--gold); background: rgba(245,166,35,0.1); border: 1px solid rgba(245,166,35,0.3); padding: 5px 14px; border-radius: 20px; margin-bottom: 18px; } .hero-title { font-family: 'Bebas Neue', sans-serif; font-size: clamp(48px, 8vw, 88px); letter-spacing: 4px; line-height: 0.9; color: #fff; margin-bottom: 6px; position: relative; z-index: 1; } .hero-title .hl { color: var(--gold); } .hero-sub { font-size: 15px; color: rgba(255,255,255,0.5); margin-bottom: 28px; max-width: 520px; line-height: 1.5; } .hero-stats { display: flex; gap: 28px; flex-wrap: wrap; } .hstat { display: flex; flex-direction: column; } .hstat-num { font-family: 'Bebas Neue', sans-serif; font-size: 36px; color: var(--gold); line-height: 1; } .hstat-lbl { font-size: 11px; color: rgba(255,255,255,0.4); text-transform: uppercase; letter-spacing: 1px; margin-top: 2px; } .hero-3d-ball { position: absolute; right: 40px; top: 50%; transform: translateY(-50%); width: 140px; height: 140px; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #fff 0%, #e0e0e0 30%, #999 70%, #333 100%); box-shadow: inset -15px -15px 30px rgba(0,0,0,0.7), inset 10px 10px 20px rgba(255,255,255,0.4), 0 0 60px rgba(245,166,35,0.4), 0 20px 40px rgba(0,0,0,0.6); animation: float 4s ease-in-out infinite; display: flex; align-items: center; justify-content: center; overflow: hidden; } .hero-3d-ball::before { content: ''; position: absolute; inset: 0; border-radius: 50%; background: radial-gradient(ellipse at 50% 50%, transparent 40%, rgba(0,0,0,0.3) 100%); } .hero-3d-ball::after { content: ''; position: absolute; width: 60%; height: 3px; background: rgba(0,0,0,0.4); border-radius: 50%; top: 48%; left: 50%; transform: translateX(-50%); } @keyframes float { 0%,100% { transform: translateY(-50%) rotate(0deg); } 50% { transform: translateY(calc(-50% - 12px)) rotate(8deg); } } /* ============================================================ LIVE SCORES BAR ============================================================ */ .scores-bar { background: var(--card); border: 1px solid rgba(232,41,58,0.25); border-radius: var(--r); padding: 12px 16px; display: flex; align-items: center; gap: 12px; margin-bottom: 24px; overflow-x: auto; scrollbar-width: none; } .scores-bar::-webkit-scrollbar { display: none; } .scores-label { font-size: 11px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: var(--red); display: flex; align-items: center; gap: 5px; white-space: nowrap; flex-shrink: 0; } .score-chips { display: flex; gap: 8px; flex: 1; overflow-x: auto; scrollbar-width: none; } .score-chips::-webkit-scrollbar { display: none; } .score-chip { background: rgba(255,255,255,0.04); border: 1px solid var(--border); border-radius: 20px; padding: 5px 14px; font-size: 12px; font-weight: 600; color: var(--text); white-space: nowrap; cursor: pointer; transition: border-color 0.15s; } .score-chip:hover { border-color: var(--border2); } .score-chip .mins { font-size: 10px; color: var(--red); margin-left: 4px; font-weight: 700; } .score-chip .ft { font-size: 10px; color: var(--text3); margin-left: 4px; } /* ============================================================ SECTION HEADER ============================================================ */ .sec-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; gap: 12px; } .sec-title { font-family: 'Barlow Condensed', sans-serif; font-size: 22px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: var(--text); display: flex; align-items: center; gap: 10px; } .sec-title::before { content: ''; width: 4px; height: 22px; background: var(--gold); border-radius: 2px; } .sec-badge { font-size: 11px; font-weight: 600; padding: 3px 10px; border-radius: 20px; background: rgba(245,166,35,0.1); color: var(--gold); border: 1px solid rgba(245,166,35,0.25); } .sec-count { font-size: 12px; color: var(--text3); margin-left: auto; } /* ============================================================ FILTER ROW ============================================================ */ .filter-row { display: flex; gap: 6px; margin-bottom: 16px; flex-wrap: wrap; align-items: center; } .filter-btn { padding: 6px 16px; border-radius: 20px; border: 1px solid var(--border); background: transparent; color: var(--text2); font-size: 12px; font-family: 'Barlow', sans-serif; font-weight: 500; cursor: pointer; transition: all 0.12s; } .filter-btn:hover { border-color: var(--border2); color: var(--text); } .filter-btn.active { background: rgba(245,166,35,0.1); color: var(--gold); border-color: rgba(245,166,35,0.35); } .search-box { background: var(--card); border: 1px solid var(--border); border-radius: 20px; padding: 6px 14px; font-size: 12px; font-family: 'Barlow', sans-serif; color: var(--text); outline: none; width: 180px; transition: border-color 0.15s; } .search-box::placeholder { color: var(--text3); } .search-box:focus { border-color: rgba(245,166,35,0.4); } /* ============================================================ ARTICLE CARDS GRID ============================================================ */ .articles-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; margin-bottom: 16px; } .art-card { background: var(--card); border: 1px solid var(--border); border-radius: var(--r); padding: 14px; cursor: pointer; transition: transform 0.15s, border-color 0.15s, box-shadow 0.15s; position: relative; overflow: hidden; text-decoration: none; display: block; } .art-card:hover { transform: translateY(-2px); border-color: var(--border2); box-shadow: 0 8px 24px rgba(0,0,0,0.4); } .art-card::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; border-radius: 3px 0 0 3px; } .t1::before { background: var(--red); } .t2::before { background: var(--gold); } .t3::before { background: var(--blue); } .t4::before { background: var(--green); } .art-card:hover::after { content: ''; position: absolute; inset: 0; background: linear-gradient(135deg, rgba(255,255,255,0.02), transparent); pointer-events: none; } .art-num { font-size: 11px; font-weight: 600; color: var(--text3); margin-bottom: 6px; letter-spacing: 0.5px; } .art-title { font-size: 13px; font-weight: 600; color: var(--text); line-height: 1.45; margin-bottom: 10px; } .art-tags { display: flex; gap: 5px; flex-wrap: wrap; margin-bottom: 8px; } .tag { font-size: 10px; font-weight: 600; padding: 2px 8px; border-radius: 10px; letter-spacing: 0.3px; } .tag-v { background: rgba(232,41,58,0.12); color: #ff6b78; } .tag-w { background: rgba(245,166,35,0.12); color: var(--gold); } .tag-p { background: rgba(37,99,235,0.15); color: #60a5fa; } .tag-g { background: rgba(34,197,94,0.12); color: #4ade80; } .tag-a { background: rgba(139,92,246,0.12); color: #a78bfa; } .tag-f { background: rgba(6,182,212,0.12); color: #22d3ee; } .traffic-bar { height: 3px; background: rgba(255,255,255,0.06); border-radius: 2px; overflow: hidden; } .traffic-fill { height: 100%; border-radius: 2px; background: linear-gradient(90deg, var(--gold), var(--red)); transition: width 0.4s ease; } /* TIER LEGEND */ .tier-legend { display: flex; gap: 16px; margin-bottom: 14px; flex-wrap: wrap; } .tl-item { display: flex; align-items: center; gap: 6px; font-size: 11px; color: var(--text2); } .tl-dot { width: 10px; height: 10px; border-radius: 2px; } /* ============================================================ PAGINATION ============================================================ */ .pagination { display: flex; gap: 4px; justify-content: center; flex-wrap: wrap; padding: 8px 0; } .pg-btn { width: 34px; height: 34px; display: flex; align-items: center; justify-content: center; border-radius: 8px; border: 1px solid var(--border); background: var(--card); color: var(--text2); font-size: 12px; font-weight: 600; font-family: 'Barlow', sans-serif; cursor: pointer; transition: all 0.12s; } .pg-btn:hover { background: var(--card2); color: var(--text); border-color: var(--border2); } .pg-btn.active { background: rgba(245,166,35,0.15); color: var(--gold); border-color: rgba(245,166,35,0.4); } .pg-btn:disabled { opacity:0.3; cursor:not-allowed; } /* ============================================================ PLAYER RANKINGS ============================================================ */ .players-section { margin-bottom: 40px; } .players-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 10px; } .player-card { background: var(--card); border: 1px solid var(--border); border-radius: var(--r); padding: 18px 14px 14px; text-align: center; cursor: pointer; transition: transform 0.18s, box-shadow 0.18s, border-color 0.18s; position: relative; overflow: hidden; } .player-card::before { content: ''; position: absolute; inset: 0; opacity: 0; transition: opacity 0.2s; background: radial-gradient(circle at 50% 0%, rgba(245,166,35,0.08), transparent 60%); } .player-card:hover { transform: translateY(-4px) scale(1.01); border-color: rgba(245,166,35,0.35); box-shadow: 0 12px 32px rgba(0,0,0,0.5), 0 0 20px rgba(245,166,35,0.1); } .player-card:hover::before { opacity:1; } /* 3D rank number */ .p-rank { font-family: 'Bebas Neue', sans-serif; font-size: 14px; letter-spacing: 1px; margin-bottom: 10px; position: relative; z-index: 1; } .p-rank.r1 { color: var(--gold); text-shadow: 0 0 12px rgba(245,166,35,0.6); font-size: 16px; } .p-rank.r2 { color: #C0C0C0; } .p-rank.r3 { color: #CD7F32; } .p-rank.rn { color: var(--text3); } .p-avatar { width: 56px; height: 56px; border-radius: 50%; margin: 0 auto 8px; display: flex; align-items: center; justify-content: center; font-size: 20px; font-weight: 700; color: rgba(255,255,255,0.9); border: 2px solid rgba(255,255,255,0.1); position: relative; z-index: 1; /* 3D sphere effect */ box-shadow: inset -4px -4px 12px rgba(0,0,0,0.4), inset 2px 2px 8px rgba(255,255,255,0.15); } .p-name { font-size: 13px; font-weight: 700; color: var(--text); margin-bottom: 3px; position: relative; z-index: 1; } .p-nat { font-size: 11px; color: var(--text3); margin-bottom: 10px; } .p-pos-badge { font-size: 10px; font-weight: 600; padding: 2px 8px; border-radius: 10px; background: rgba(255,255,255,0.06); color: var(--text2); display: inline-block; margin-bottom: 10px; } .p-stats { display: flex; justify-content: space-between; border-top: 1px solid var(--border); padding-top: 10px; } .p-stat-item { text-align: center; } .p-stat-val { font-family: 'Barlow Condensed', sans-serif; font-size: 20px; font-weight: 700; color: var(--text); line-height: 1; } .p-stat-lbl { font-size: 9px; color: var(--text3); text-transform: uppercase; letter-spacing: 0.5px; margin-top: 2px; } /* ============================================================ MATCH SCHEDULE ============================================================ */ .schedule-section { margin-bottom: 40px; } .schedule-wrap { overflow-x: auto; border-radius: var(--r); border: 1px solid var(--border); } table { width: 100%; border-collapse: collapse; min-width: 700px; } thead tr { background: rgba(255,255,255,0.04); border-bottom: 1px solid var(--border); } thead th { padding: 10px 14px; font-size: 11px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: var(--text3); text-align: left; } tbody tr { border-bottom: 1px solid var(--border); transition: background 0.12s; cursor: pointer; } tbody tr:last-child { border-bottom: none; } tbody tr:hover { background: rgba(255,255,255,0.03); } tbody td { padding: 11px 14px; font-size: 13px; color: var(--text); vertical-align: middle; } .td-num { color: var(--text3); font-size: 11px; } .td-date { white-space: nowrap; font-weight: 600; color: var(--gold); font-size: 12px; } .td-time { white-space: nowrap; color: var(--text2); font-size: 12px; } .match-name { display: flex; align-items: center; gap: 8px; font-weight: 600; } .vs-tag { font-size: 10px; font-weight: 700; color: var(--text3); background: rgba(255,255,255,0.05); padding: 2px 6px; border-radius: 4px; } .stage-pill { display: inline-block; font-size: 10px; font-weight: 700; padding: 3px 9px; border-radius: 10px; letter-spacing: 0.3px; white-space: nowrap; } .sg { background: rgba(37,99,235,0.15); color: #60a5fa; border: 1px solid rgba(37,99,235,0.2); } .r16 { background: rgba(245,166,35,0.12); color: var(--gold); border: 1px solid rgba(245,166,35,0.2); } .qf { background: rgba(232,41,58,0.12); color: #ff6b78; border: 1px solid rgba(232,41,58,0.2); } .sf { background: rgba(139,92,246,0.12); color: #a78bfa; border: 1px solid rgba(139,92,246,0.2); } .fn { background: rgba(245,166,35,0.2); color: var(--gold); border: 1px solid rgba(245,166,35,0.4); font-size: 11px; } .venue-cell { font-size: 11px; color: var(--text3); max-width: 180px; } /* ============================================================ GROUPS ============================================================ */ .groups-section { margin-bottom: 40px; } .groups-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; } .group-card { background: var(--card); border: 1px solid var(--border); border-radius: var(--r); overflow: hidden; } .group-head { background: rgba(255,255,255,0.04); padding: 10px 14px; font-family: 'Barlow Condensed', sans-serif; font-size: 15px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: var(--gold); border-bottom: 1px solid var(--border); display: flex; align-items: center; gap: 8px; } .group-head::before { content: ''; width: 3px; height: 14px; background: var(--gold); border-radius: 2px; } .group-table { width: 100%; border-collapse: collapse; } .group-table th { padding: 6px 12px; font-size: 10px; font-weight: 700; letter-spacing: 0.8px; text-transform: uppercase; color: var(--text3); text-align: center; border-bottom: 1px solid var(--border); } .group-table th:first-child { text-align: left; } .group-table td { padding: 9px 12px; font-size: 12px; text-align: center; border-bottom: 1px solid var(--border); color: var(--text); } .group-table tr:last-child td { border-bottom: none; } .group-table td:first-child { text-align: left; font-weight: 600; } .group-table tr.qualify td { color: var(--text); } .group-table tr:nth-child(3) td, .group-table tr:nth-child(4) td { color: var(--text3); } .qual-dot { display: inline-block; width: 6px; height: 6px; background: var(--green); border-radius: 50%; margin-right: 6px; vertical-align: middle; } /* ============================================================ SEO TIP BOX ============================================================ */ .seo-box { background: linear-gradient(135deg, rgba(37,99,235,0.08), rgba(6,182,212,0.05)); border: 1px solid rgba(37,99,235,0.2); border-radius: var(--r); padding: 12px 16px; font-size: 12px; color: var(--text2); margin-bottom: 16px; display: flex; align-items: flex-start; gap: 10px; line-height: 1.5; } .seo-box-icon { width: 20px; height: 20px; flex-shrink: 0; margin-top: 1px; color: var(--cyan); } /* ============================================================ PANES ============================================================ */ .pane { display: none; } .pane.active { display: block; } /* ============================================================ FOOTER ============================================================ */ footer { background: var(--bg2); border-top: 1px solid var(--border); padding: 24px 20px; margin-top: 40px; position: relative; z-index: 1; } .footer-inner { max-width: 1280px; margin: 0 auto; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; } .footer-logo { font-family: 'Bebas Neue', sans-serif; font-size: 20px; color: var(--gold); letter-spacing: 2px; } .footer-links { display: flex; gap: 16px; flex-wrap: wrap; } .footer-links a { font-size: 12px; color: var(--text3); text-decoration: none; transition: color 0.12s; } .footer-links a:hover { color: var(--text2); } .footer-copy { font-size: 11px; color: var(--text3); width: 100%; } /* ============================================================ RESPONSIVE ============================================================ */ @media (max-width: 768px) { .hero { padding: 30px 20px 24px; } .hero-3d-ball { width: 80px; height: 80px; right: 16px; } .hero-title { font-size: 44px; } .hero-stats { gap: 16px; } .articles-grid { grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); } .players-grid { grid-template-columns: repeat(auto-fill, minmax(145px, 1fr)); } } /* ============================================================ ANIMATIONS ============================================================ */ @keyframes fadeUp { from { opacity:0; transform: translateY(16px); } to { opacity:1; transform: translateY(0); } } .art-card, .player-card, .group-card { animation: fadeUp 0.3s ease both; } </style> </head> <body> <!-- NAV --> <nav> <div class="nav-inner"> <a class="nav-logo" href="https://www.sportslnv.com">Sports<span>LNV</span></a> <div class="nav-tabs"> <button class="nav-tab active" onclick="showPane('articles',this)">⚽ 120 Articles</button> <button class="nav-tab" onclick="showPane('players',this)">🌟 Players</button> <button class="nav-tab" onclick="showPane('schedule',this)">📅 Schedule</button> <button class="nav-tab" onclick="showPane('groups',this)">🏆 Groups</button> </div> <div class="live-pill"><span class="live-dot"></span> LIVE</div> </div> </nav> <div class="wrapper"> <!-- HERO --> <section class="hero" aria-label="FIFA World Cup 2026 Hub"> <div class="hero-bg-orb1" aria-hidden="true"></div> <div class="hero-bg-orb2" aria-hidden="true"></div> <div class="hero-bg-lines" aria-hidden="true"></div> <div class="hero-badge">⚽ SportsLNV Exclusive Hub</div> <h1 class="hero-title">FIFA<br>WORLD CUP<br><span class="hl">2026</span></h1> <p class="hero-sub">Complete football hub — 120 SEO articles, live scores, player rankings & full match schedule. Your #1 World Cup destination.</p> <div class="hero-stats"> <div class="hstat"><div class="hstat-num">120</div><div class="hstat-lbl">Articles</div></div> <div class="hstat"><div class="hstat-num">48</div><div class="hstat-lbl">Teams</div></div> <div class="hstat"><div class="hstat-num">104</div><div class="hstat-lbl">Matches</div></div> <div class="hstat"><div class="hstat-num">16</div><div class="hstat-lbl">Venues</div></div> <div class="hstat"><div class="hstat-num">5M+</div><div class="hstat-lbl">Traffic Goal</div></div> <div class="hstat"><div class="hstat-num">Jun 11</div><div class="hstat-lbl">Kick-off</div></div> </div> <div class="hero-3d-ball" aria-hidden="true"></div> </section> <!-- LIVE SCORES BAR --> <div class="scores-bar" role="region" aria-label="Live match scores"> <div class="scores-label"><span class="live-dot"></span> LIVE SCORES</div> <div class="score-chips" id="liveScoreChips"></div> </div> <!-- PANE: ARTICLES --> <section id="pane-articles" class="pane active" aria-label="120 Football Articles"> <div class="sec-head"> <h2 class="sec-title">All 120 Articles</h2> <span class="sec-badge">Google Ranking Ready</span> <span class="sec-count" id="artCountLabel">120 articles</span> </div> <div class="seo-box" role="note"> <svg class="seo-box-icon" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" aria-hidden="true"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg> <span><strong style="color:var(--cyan)">Google Traffic Strategy:</strong> Tier 1 articles (red bar) target 2M–5M+ daily traffic. Publish articles #1, #2, #3, #5, #6 TODAY — World Cup 2026 kicks off June 11. Peak search window is RIGHT NOW. Click any article to generate full content.</span> </div> <div class="tier-legend" aria-label="Traffic tier legend"> <div class="tl-item"><span class="tl-dot" style="background:var(--red)"></span> Tier 1: 2M–5M+ traffic</div> <div class="tl-item"><span class="tl-dot" style="background:var(--gold)"></span> Tier 2: 500K–2M</div> <div class="tl-item"><span class="tl-dot" style="background:var(--blue)"></span> Tier 3: 200K–500K</div> <div class="tl-item"><span class="tl-dot" style="background:var(--green)"></span> Tier 4: 100K–200K</div> </div> <div class="filter-row"> <input type="text" class="search-box" placeholder="🔍 Search articles..." id="artSearch" oninput="filterArts()" aria-label="Search articles"> <button class="filter-btn active" onclick="setArtCat('all',this)">All</button> <button class="filter-btn" onclick="setArtCat('wc',this)">⚽ World Cup</button> <button class="filter-btn" onclick="setArtCat('player',this)">👤 Players</button> <button class="filter-btn" onclick="setArtCat('fantasy',this)">🎮 Fantasy</button> <button class="filter-btn" onclick="setArtCat('guide',this)">📖 Guides</button> <button class="filter-btn" onclick="setArtCat('analysis',this)">📊 Analysis</button> </div> <div class="articles-grid" id="artGrid"></div> <div class="pagination" id="artPagination"></div> </section> <!-- PANE: PLAYERS --> <section id="pane-players" class="pane" aria-label="Player Rankings"> <div class="sec-head"> <h2 class="sec-title">Player Rankings</h2> <span class="sec-badge">World Cup 2026 Watch List</span> </div> <div class="filter-row"> <button class="filter-btn active" onclick="setPlayerPos('all',this)">All</button> <button class="filter-btn" onclick="setPlayerPos('Forward',this)">Forwards</button> <button class="filter-btn" onclick="setPlayerPos('Midfielder',this)">Midfielders</button> <button class="filter-btn" onclick="setPlayerPos('Defender',this)">Defenders</button> <button class="filter-btn" onclick="setPlayerPos('Goalkeeper',this)">Keepers</button> </div> <div class="players-grid" id="playersGrid"></div> </section> <!-- PANE: SCHEDULE --> <section id="pane-schedule" class="pane" aria-label="Match Schedule"> <div class="sec-head"> <h2 class="sec-title">Match Schedule</h2> <span class="sec-badge">Jun 11 – Aug 4, 2026</span> </div> <div class="filter-row"> <button class="filter-btn active" onclick="setStage('all',this)">All Stages</button> <button class="filter-btn" onclick="setStage('Group Stage',this)">Group Stage</button> <button class="filter-btn" onclick="setStage('Round of 16',this)">Round of 16</button> <button class="filter-btn" onclick="setStage('Quarter-final',this)">Quarter-finals</button> <button class="filter-btn" onclick="setStage('Semi-final',this)">Semi-finals</button> <button class="filter-btn" onclick="setStage('Final',this)">Final</button> </div> <div class="schedule-wrap"> <table aria-label="World Cup 2026 schedule"> <thead> <tr> <th>#</th> <th>Date</th> <th>Match</th> <th>Venue</th> <th>Stage</th> <th>Time (ET)</th> </tr> </thead> <tbody id="scheduleTbody"></tbody> </table> </div> </section> <!-- PANE: GROUPS --> <section id="pane-groups" class="pane" aria-label="Group Stage Tables"> <div class="sec-head"> <h2 class="sec-title">Groups & Tables</h2> <span class="sec-badge">12 Groups — 48 Teams</span> </div> <div class="groups-grid" id="groupsGrid"></div> </section> </div><!-- /wrapper --> <!-- FOOTER --> <footer> <div class="footer-inner"> <div class="footer-logo">SportsLNV</div> <div class="footer-links"> <a href="https://www.sportslnv.com">Home</a> <a href="https://www.sportslnv.com/live">Live Scores</a> <a href="https://www.sportslnv.com/news">News</a> <a href="https://www.sportslnv.com/blog">Blog</a> <a href="https://www.sportslnv.com/fantasy">Fantasy</a> <a href="https://www.sportslnv.com/predictions">Predictions</a> <a href="https://www.sportslnv.com/about">About</a> <a href="https://www.sportslnv.com/contact">Contact</a> </div> <p class="footer-copy">© 2026 SportsLNV. All rights reserved. Your #1 destination for live scores, predictions & fantasy sports.</p> </div> </footer> <script> /* ============================================================ DATA ============================================================ */ const LIVE_SCORES = [ {t:"Spain 0–0 England", m:"67'", type:"live"}, {t:"Argentina 0–0 Colombia", m:"45'", type:"live"}, {t:"Leverkusen 0–0 Frankfurt", m:"31'", type:"live"}, {t:"Brazil 2–1 Ecuador", m:"FT", type:"ft"}, {t:"France 3–0 Tunisia", m:"FT", type:"ft"}, {t:"Germany 1–1 Italy", m:"FT", type:"ft"}, {t:"Portugal 2–0 Wales", m:"FT", type:"ft"}, {t:"USA vs Paraguay", m:"Jun 3 · 7PM", type:"up"}, ]; const ARTICLES = [ // TIER 1 — 2M–5M+ {n:1,t:"FIFA World Cup 2026 Full Schedule: All 104 Matches, Dates, Venues & Times",tier:"t1",cat:"wc",tags:["v","w"],tr:98}, {n:2,t:"How to Watch FIFA World Cup 2026 Free — Complete Streaming Guide by Country",tier:"t1",cat:"guide",tags:["v","g"],tr:96}, {n:3,t:"World Cup 2026 Groups: All 48 Teams, Predictions & Dark Horses Revealed",tier:"t1",cat:"wc",tags:["w","a"],tr:95}, {n:4,t:"World Cup 2026 Bracket Predictor — Full Knockout Stage Preview & Picks",tier:"t1",cat:"wc",tags:["v","w"],tr:93}, {n:5,t:"Lionel Messi at World Cup 2026: Will He Play? Age, Fitness & Argentina Squad",tier:"t1",cat:"player",tags:["p","v"],tr:99}, {n:6,t:"Cristiano Ronaldo World Cup 2026 — Portugal's Last Hope or Final Farewell?",tier:"t1",cat:"player",tags:["p","v"],tr:97}, {n:7,t:"England vs Spain UEFA Euro 2026 Live Preview — H2H, Predicted XI & Odds",tier:"t1",cat:"analysis",tags:["a","w"],tr:90}, {n:8,t:"Top 10 Players to Watch at FIFA World Cup 2026 — Stars Who'll Define It",tier:"t1",cat:"player",tags:["p","w"],tr:94}, {n:9,t:"World Cup 2026 Host Cities: All 16 Venues in USA, Canada & Mexico Guide",tier:"t1",cat:"guide",tags:["g","w"],tr:88}, {n:10,t:"Best Fantasy Football Team for World Cup 2026 — Captain Picks & Budget XI",tier:"t1",cat:"fantasy",tags:["f","w"],tr:87}, // TIER 2 — 500K–2M {n:11,t:"Kylian Mbappe 2026: Real Madrid Star's Biggest World Cup Yet — Full Preview",tier:"t2",cat:"player",tags:["p","w"],tr:85}, {n:12,t:"Premier League 2025/26 Golden Boot Race — Top Scorers, Stats & Predictions",tier:"t2",cat:"analysis",tags:["a"],tr:80}, {n:13,t:"Champions League Final 2026 Preview — Teams, Predictions & How to Watch",tier:"t2",cat:"wc",tags:["w","g"],tr:83}, {n:14,t:"World Cup 2026 Dark Horses — 5 Teams That Could Shock Everyone",tier:"t2",cat:"wc",tags:["w","a"],tr:79}, {n:15,t:"Argentina vs Brazil World Cup 2026 — Could the Greatest Rivalry Clash Again?",tier:"t2",cat:"wc",tags:["w","v"],tr:86}, {n:16,t:"World Cup 2026 Ticket Prices, How to Buy & Resale Guide — Full Breakdown",tier:"t2",cat:"guide",tags:["g","w"],tr:77}, {n:17,t:"Saudi Arabia at World Cup 2026 — Squad, Fixtures & Can They Shock Again?",tier:"t2",cat:"wc",tags:["w","a"],tr:72}, {n:18,t:"Jude Bellingham 2026 — England's Best Hope for World Cup Glory Explained",tier:"t2",cat:"player",tags:["p","w"],tr:82}, {n:19,t:"World Cup 2026 AI Predictions: Who Wins the Trophy According to Data?",tier:"t2",cat:"analysis",tags:["a","v"],tr:84}, {n:20,t:"Complete FIFA World Cup 2026 Match Results Hub — Updated After Every Game",tier:"t2",cat:"wc",tags:["w","g"],tr:90}, {n:21,t:"Vinicius Jr. at World Cup 2026 — Can Brazil Finally Win It All With Him?",tier:"t2",cat:"player",tags:["p","w"],tr:75}, {n:22,t:"Erling Haaland World Cup 2026 — Norway's First WC Since 1998?",tier:"t2",cat:"player",tags:["p"],tr:70}, {n:23,t:"World Cup 2026 Group A Preview — USA, Mexico, Canada & Full Analysis",tier:"t2",cat:"wc",tags:["w","a"],tr:68}, {n:24,t:"World Cup 2026 Group B Preview — England, Iran & Surprise Packages",tier:"t2",cat:"wc",tags:["w"],tr:67}, {n:25,t:"World Cup 2026 Group C Preview — Argentina's Road to the Final",tier:"t2",cat:"wc",tags:["w"],tr:69}, {n:26,t:"World Cup 2026 Group D Preview — France vs Denmark Showdown",tier:"t2",cat:"wc",tags:["w"],tr:65}, {n:27,t:"World Cup 2026 Group E Preview — Spain, Germany & Who Advances?",tier:"t2",cat:"wc",tags:["w"],tr:66}, {n:28,t:"World Cup 2026 Group F Preview — Brazil's Dominant Path Forward",tier:"t2",cat:"wc",tags:["w"],tr:70}, // TIER 3 — 200K–500K {n:29,t:"Top 5 Goalkeepers at World Cup 2026 — Who Will Be the Unbeatable Wall?",tier:"t3",cat:"player",tags:["p","w"],tr:58}, {n:30,t:"Top 5 Defenders at World Cup 2026 — Best Backlines Ranked & Reviewed",tier:"t3",cat:"player",tags:["p"],tr:55}, {n:31,t:"Top 5 Midfielders at World Cup 2026 — Who Controls the Beautiful Game?",tier:"t3",cat:"player",tags:["p"],tr:56}, {n:32,t:"Top 10 Strikers at World Cup 2026 — Golden Boot Contenders Ranked",tier:"t3",cat:"player",tags:["p","w"],tr:60}, {n:33,t:"World Cup 2026 Fantasy Football Draft Guide — Full 23-Man Squad Strategy",tier:"t3",cat:"fantasy",tags:["f"],tr:62}, {n:34,t:"World Cup 2026 Fantasy Captains — Best Weekly Captain Choices Revealed",tier:"t3",cat:"fantasy",tags:["f"],tr:58}, {n:35,t:"World Cup 2026 Fantasy Differentials — Hidden Gems Worth Picking Now",tier:"t3",cat:"fantasy",tags:["f"],tr:54}, {n:36,t:"World Cup 2026 Betting Guide — Best Odds, Tips & Safe Platforms to Use",tier:"t3",cat:"guide",tags:["g"],tr:60}, {n:37,t:"FIFA World Cup 2026 Prize Money — How Much Do the Winners Really Earn?",tier:"t3",cat:"wc",tags:["w"],tr:57}, {n:38,t:"World Cup 2026 VAR Rules Guide — How It Works, Controversies & Changes",tier:"t3",cat:"guide",tags:["g"],tr:50}, {n:39,t:"World Cup 2026 Opening Ceremony — Date, Performers & What to Expect",tier:"t3",cat:"wc",tags:["w","g"],tr:63}, {n:40,t:"World Cup 2026 Final Venue — MetLife Stadium NJ Complete Fan Guide",tier:"t3",cat:"guide",tags:["g","w"],tr:55}, {n:41,t:"Pedri at World Cup 2026 — Spain's Midfield Maestro: Fully Fit & Dangerous",tier:"t3",cat:"player",tags:["p"],tr:52}, {n:42,t:"Marcus Rashford Redemption — Can He Shine at World Cup 2026 at Last?",tier:"t3",cat:"player",tags:["p"],tr:53}, {n:43,t:"Harry Kane World Cup 2026 — Bayern Munich Star's Shot at International Glory",tier:"t3",cat:"player",tags:["p","w"],tr:58}, {n:44,t:"Bukayo Saka at World Cup 2026 — England's Most Dangerous Attacking Weapon",tier:"t3",cat:"player",tags:["p"],tr:56}, {n:45,t:"Lamine Yamal's World Cup 2026 — 18-Year-Old Superstar vs the Entire World",tier:"t3",cat:"player",tags:["p","v"],tr:65}, {n:46,t:"Rodri World Cup 2026 — Spain's Heartbeat Returning From Injury?",tier:"t3",cat:"player",tags:["p"],tr:52}, {n:47,t:"Declan Rice at World Cup 2026 — Why He's England's Most Important Player",tier:"t3",cat:"player",tags:["p"],tr:54}, {n:48,t:"Achraf Hakimi — Morocco's Star and Africa's Best Hope at WC 2026",tier:"t3",cat:"player",tags:["p","w"],tr:51}, {n:49,t:"Africa's Best Teams at World Cup 2026 — Morocco, Nigeria & Senegal Preview",tier:"t3",cat:"wc",tags:["w","a"],tr:58}, {n:50,t:"Asian Teams at World Cup 2026 — Japan, South Korea & Saudi Arabia Preview",tier:"t3",cat:"wc",tags:["w"],tr:55}, {n:51,t:"CONCACAF at World Cup 2026 — USA, Mexico & Canada Home Advantage Explained",tier:"t3",cat:"wc",tags:["w"],tr:60}, {n:52,t:"World Cup 2026 Qualifiers Summary — How Every Team Made It to the Finals",tier:"t3",cat:"wc",tags:["w","g"],tr:50}, {n:53,t:"Germany at World Cup 2026 — Full Squad, New Manager & Tournament Prediction",tier:"t3",cat:"wc",tags:["w","a"],tr:57}, {n:54,t:"France at World Cup 2026 — Deschamps' Last Dance? Complete Preview",tier:"t3",cat:"wc",tags:["w","a"],tr:60}, {n:55,t:"Brazil at World Cup 2026 — New Manager, New Tactics & A Golden Chance",tier:"t3",cat:"wc",tags:["w","a"],tr:65}, {n:56,t:"Italy at World Cup 2026 — Back After Disaster, Can the Azzurri Finally Win?",tier:"t3",cat:"wc",tags:["w"],tr:55}, {n:57,t:"Netherlands at World Cup 2026 — Van Dijk's Last WC & De Jong's Prime",tier:"t3",cat:"wc",tags:["w"],tr:52}, {n:58,t:"Portugal at World Cup 2026 — After Ronaldo, Who Actually Leads the Nation?",tier:"t3",cat:"wc",tags:["w"],tr:58}, {n:59,t:"Belgium at World Cup 2026 — New Golden Generation or Just Another False Dawn?",tier:"t3",cat:"wc",tags:["w"],tr:50}, {n:60,t:"Croatia at World Cup 2026 — After Modric, Can They Still Compete at the Top?",tier:"t3",cat:"wc",tags:["w"],tr:49}, // TIER 4 — 100K–200K {n:61,t:"World Cup 2026 Most Expensive Squads — Who Has the Richest Team in Qatar?",tier:"t4",cat:"analysis",tags:["a"],tr:45}, {n:62,t:"World Cup 2026 Youngest Players — 10 Future Stars You Absolutely Must Watch",tier:"t4",cat:"player",tags:["p"],tr:43}, {n:63,t:"World Cup 2026 Oldest Players — Veterans Defying Age at the Biggest Stage",tier:"t4",cat:"player",tags:["p"],tr:42}, {n:64,t:"World Cup 2026 Kit Guide — Every Nation's Official Jersey Ranked Best to Worst",tier:"t4",cat:"guide",tags:["g"],tr:47}, {n:65,t:"World Cup 2026 Best Goals of All Time — Top 10 Historic WC Moments Ranked",tier:"t4",cat:"wc",tags:["w","v"],tr:50}, {n:66,t:"World Cup 2026 Travel Guide — How to Attend Matches Across the USA",tier:"t4",cat:"guide",tags:["g"],tr:48}, {n:67,t:"World Cup 2026 Fan Guide — Everything You Need to Know Before You Go",tier:"t4",cat:"guide",tags:["g"],tr:46}, {n:68,t:"How to Play World Cup 2026 Fantasy on SportsLNV — Full Tutorial Guide",tier:"t4",cat:"fantasy",tags:["f","g"],tr:44}, {n:69,t:"World Cup 2026 Fantasy Gameweek 1 Tips — Best Starting XI for Opening Day",tier:"t4",cat:"fantasy",tags:["f"],tr:43}, {n:70,t:"World Cup 2026 Fantasy Gameweek 2 Tips — Early Captain Choices Revealed",tier:"t4",cat:"fantasy",tags:["f"],tr:41}, {n:71,t:"World Cup 2026 Fantasy Gameweek 3 Tips — Who to Transfer In & Out Now?",tier:"t4",cat:"fantasy",tags:["f"],tr:40}, {n:72,t:"World Cup 2026 Group Stage Results Tracker — All 48 Games Covered Daily",tier:"t4",cat:"wc",tags:["w"],tr:50}, {n:73,t:"World Cup 2026 Round of 16 Predictions — Our Expert Picks for Every Game",tier:"t4",cat:"wc",tags:["w","a"],tr:52}, {n:74,t:"World Cup 2026 Quarter-Final Previews — 4 Blockbuster Matches Fully Analysed",tier:"t4",cat:"analysis",tags:["a","w"],tr:54}, {n:75,t:"World Cup 2026 Semi-Final Predictions — Which Two Teams Make the Final?",tier:"t4",cat:"wc",tags:["w","a"],tr:56}, {n:76,t:"World Cup 2026 Final Preview — The Two Best Teams in the World Face Off",tier:"t4",cat:"wc",tags:["w","v"],tr:70}, {n:77,t:"World Cup 2026 Golden Boot Winner Prediction — Top 5 Scorers to Watch",tier:"t4",cat:"wc",tags:["w","p"],tr:55}, {n:78,t:"World Cup 2026 Golden Glove — Best Goalkeepers Who Could Win the Award",tier:"t4",cat:"player",tags:["p","w"],tr:43}, {n:79,t:"World Cup 2026 Best XI — Our Predicted All-Tournament Dream Team",tier:"t4",cat:"analysis",tags:["a"],tr:48}, {n:80,t:"World Cup 2026 Referee Guide — Who Are the Match Officials at Each Game?",tier:"t4",cat:"guide",tags:["g"],tr:38}, {n:81,t:"World Cup 2026 Official Ball — Adidas Design, Name & Special Features Revealed",tier:"t4",cat:"guide",tags:["g"],tr:40}, {n:82,t:"World Cup 2026 Official Song & Anthem — The Tournament's Music Fully Revealed",tier:"t4",cat:"wc",tags:["w"],tr:45}, {n:83,t:"5 New FIFA Rules at World Cup 2026 — Changes That Will Shock Football Fans",tier:"t4",cat:"guide",tags:["g","w"],tr:47}, {n:84,t:"World Cup 2026 USA vs Mexico Match Preview — The Derby Everyone Wants to See",tier:"t4",cat:"wc",tags:["w","a"],tr:52}, {n:85,t:"World Cup 2026 England vs France Dream Clash — Will This Epic Tie Happen?",tier:"t4",cat:"wc",tags:["w"],tr:51}, {n:86,t:"World Cup 2026 Argentina vs France Rematch — The 2022 Final Sequel?",tier:"t4",cat:"wc",tags:["w","v"],tr:60}, {n:87,t:"World Cup 2026 Brazil vs Argentina — The Ultimate South American Derby Preview",tier:"t4",cat:"wc",tags:["w","v"],tr:58}, {n:88,t:"Thierry Henry Coaching at World Cup 2026 — Full Preview & Bold Predictions",tier:"t4",cat:"analysis",tags:["a"],tr:42}, {n:89,t:"World Cup 2026 Managers Ranked — Who Has the Best Tactical Master Plan?",tier:"t4",cat:"analysis",tags:["a"],tr:45}, {n:90,t:"World Cup 2026 Shocks & Upsets Predicted — 5 Giant Killings to Expect",tier:"t4",cat:"analysis",tags:["a","v"],tr:48}, {n:91,t:"Goalscoring Records at World Cup History — Who Can Break Them in 2026?",tier:"t4",cat:"wc",tags:["w","p"],tr:44}, {n:92,t:"World Cup 2026 Group G Preview — Full Analysis & Qualification Predictions",tier:"t4",cat:"wc",tags:["w"],tr:40}, {n:93,t:"World Cup 2026 Group H Preview — Is This the New Group of Death?",tier:"t4",cat:"wc",tags:["w"],tr:41}, {n:94,t:"World Cup 2026 Group I Preview — Sleeping Giants & Major Surprise Teams",tier:"t4",cat:"wc",tags:["w"],tr:39}, {n:95,t:"World Cup 2026 Group J Preview — Three Big Teams in One Dangerous Group",tier:"t4",cat:"wc",tags:["w"],tr:38}, {n:96,t:"World Cup 2026 Group K Preview — South American Powerhouse Group Analysis",tier:"t4",cat:"wc",tags:["w"],tr:38}, {n:97,t:"World Cup 2026 Group L Preview — European Giants Battle for the Top Spot",tier:"t4",cat:"wc",tags:["w"],tr:39}, {n:98,t:"SportsLNV Live Score Guide — How to Use Our Real-Time Match Tracker",tier:"t4",cat:"guide",tags:["g"],tr:36}, {n:99,t:"World Cup 2026 Stats Hub — Goals, Assists, Passes & Clean Sheets Tracked",tier:"t4",cat:"analysis",tags:["a"],tr:44}, {n:100,t:"World Cup 2026 Top 5 Matches to Watch — The Must-See Games of the Tournament",tier:"t4",cat:"wc",tags:["w","v"],tr:50}, {n:101,t:"Phil Foden at World Cup 2026 — City Star's International Stage Redemption",tier:"t4",cat:"player",tags:["p"],tr:45}, {n:102,t:"Federico Valverde at WC 2026 — Uruguay's Most Complete & Dangerous Player",tier:"t4",cat:"player",tags:["p"],tr:38}, {n:103,t:"Gavi's Return — Can the Barcelona Maestro Lead Spain at the World Cup?",tier:"t4",cat:"player",tags:["p","w"],tr:44}, {n:104,t:"Kevin De Bruyne's Final World Cup — Belgium Legend's Very Last Chance",tier:"t4",cat:"player",tags:["p"],tr:46}, {n:105,t:"Alexia Putellas — From Women's Ballon d'Or to Global Football Icon",tier:"t4",cat:"player",tags:["p"],tr:38}, {n:106,t:"World Cup 2026 vs 2022 Qatar — How the Tournament Has Fundamentally Changed",tier:"t4",cat:"analysis",tags:["a"],tr:40}, {n:107,t:"Best World Cup 2026 Fan Zones — Where to Watch Matches Across the USA",tier:"t4",cat:"guide",tags:["g"],tr:43}, {n:108,t:"World Cup 2026 USMNT Squad — Full Player Ratings & Best Starting XI",tier:"t4",cat:"wc",tags:["w","a"],tr:50}, {n:109,t:"Christian Pulisic World Cup 2026 — USA's Captain America Must Step Up Now",tier:"t4",cat:"player",tags:["p","w"],tr:48}, {n:110,t:"World Cup 2026 Mexico Squad — Can El Tri Finally Go Beyond the Round of 16?",tier:"t4",cat:"wc",tags:["w"],tr:45}, {n:111,t:"World Cup 2026 Canada Squad — Jonathan David Leads the Canucks to History",tier:"t4",cat:"wc",tags:["w"],tr:42}, {n:112,t:"Japan at World Cup 2026 — Is This Asia's Greatest Squad in Tournament History?",tier:"t4",cat:"wc",tags:["w"],tr:44}, {n:113,t:"South Korea at World Cup 2026 — Son Heung-min's Final World Cup Bow?",tier:"t4",cat:"player",tags:["p","w"],tr:46}, {n:114,t:"Son Heung-min World Cup 2026 — Tottenham Legend's Emotional Farewell?",tier:"t4",cat:"player",tags:["p"],tr:43}, {n:115,t:"Robert Lewandowski World Cup 2026 — Poland's King at His Last Major Tournament?",tier:"t4",cat:"player",tags:["p"],tr:44}, {n:116,t:"World Cup 2026 South American Teams Ranked — Who Is Genuinely the Strongest?",tier:"t4",cat:"analysis",tags:["a","w"],tr:42}, {n:117,t:"World Cup 2026 European Teams Ranked — 6 Serious Contenders, Only 1 Trophy",tier:"t4",cat:"analysis",tags:["a"],tr:43}, {n:118,t:"World Cup 2026 Tactical Masterclasses — 5 Coaching Blueprints Fully Explained",tier:"t4",cat:"analysis",tags:["a"],tr:40}, {n:119,t:"World Cup 2026 Post-Tournament Analysis — What Happens to Football After the Final",tier:"t4",cat:"analysis",tags:["a"],tr:38}, {n:120,t:"SportsLNV World Cup 2026 Full Coverage Hub — Your Complete One-Stop Guide",tier:"t4",cat:"guide",tags:["g","w"],tr:55}, ]; const PLAYERS = [ {rank:1,name:"Lionel Messi",nat:"Argentina",pos:"Forward",goals:15,apps:26,age:38,col:"#1a6b3a"}, {rank:2,name:"Kylian Mbappe",nat:"France",pos:"Forward",goals:14,apps:24,age:27,col:"#003189"}, {rank:3,name:"Cristiano Ronaldo",nat:"Portugal",pos:"Forward",goals:13,apps:25,age:41,col:"#A9221F"}, {rank:4,name:"Vinicius Jr.",nat:"Brazil",pos:"Winger",goals:11,apps:22,age:24,col:"#009c3b"}, {rank:5,name:"Jude Bellingham",nat:"England",pos:"Midfielder",goals:10,apps:23,age:22,col:"#003090"}, {rank:6,name:"Erling Haaland",nat:"Norway",pos:"Striker",goals:12,apps:20,age:25,col:"#CF091A"}, {rank:7,name:"Lamine Yamal",nat:"Spain",pos:"Winger",goals:8,apps:18,age:18,col:"#c60b1e"}, {rank:8,name:"Harry Kane",nat:"England",pos:"Striker",goals:9,apps:22,age:31,col:"#003090"}, {rank:9,name:"Pedri",nat:"Spain",pos:"Midfielder",goals:6,apps:20,age:22,col:"#c60b1e"}, {rank:10,name:"Bukayo Saka",nat:"England",pos:"Winger",goals:7,apps:21,age:23,col:"#063672"}, {rank:11,name:"Rodri",nat:"Spain",pos:"Midfielder",goals:4,apps:19,age:28,col:"#c60b1e"}, {rank:12,name:"Kevin De Bruyne",nat:"Belgium",pos:"Midfielder",goals:5,apps:20,age:34,col:"#EF3340"}, {rank:13,name:"Declan Rice",nat:"England",pos:"Midfielder",goals:3,apps:22,age:26,col:"#003090"}, {rank:14,name:"Achraf Hakimi",nat:"Morocco",pos:"Defender",goals:4,apps:21,age:26,col:"#C1272D"}, {rank:15,name:"Federico Valverde",nat:"Uruguay",pos:"Midfielder",goals:5,apps:19,age:26,col:"#5EB6E4"}, {rank:16,name:"Phil Foden",nat:"England",pos:"Midfielder",goals:6,apps:20,age:26,col:"#6CABDD"}, {rank:17,name:"Gavi",nat:"Spain",pos:"Midfielder",goals:3,apps:17,age:24,col:"#c60b1e"}, {rank:18,name:"Jonathan David",nat:"Canada",pos:"Striker",goals:8,apps:18,age:24,col:"#FF0000"}, {rank:19,name:"Christian Pulisic",nat:"USA",pos:"Winger",goals:7,apps:20,age:27,col:"#002868"}, {rank:20,name:"Son Heung-min",nat:"South Korea",pos:"Forward",goals:6,apps:19,age:34,col:"#C60C30"}, {rank:21,name:"Trent Alexander-Arnold",nat:"England",pos:"Defender",goals:3,apps:18,age:27,col:"#C8102E"}, {rank:22,name:"Robert Lewandowski",nat:"Poland",pos:"Striker",goals:8,apps:19,age:37,col:"#DC143C"}, {rank:23,name:"Ruben Dias",nat:"Portugal",pos:"Defender",goals:2,apps:20,age:27,col:"#A9221F"}, {rank:24,name:"Jamal Musiala",nat:"Germany",pos:"Midfielder",goals:9,apps:21,age:22,col:"#000"}, ]; const SCHEDULE = [ {n:1,d:"Jun 11",t:"Mexico vs Opening TBD",v:"Estadio Azteca, Mexico City",s:"Group Stage",tm:"3:00 PM"}, {n:2,d:"Jun 12",t:"USA vs TBD",v:"SoFi Stadium, Los Angeles",s:"Group Stage",tm:"6:00 PM"}, {n:3,d:"Jun 12",t:"Canada vs TBD",v:"BMO Field, Toronto",s:"Group Stage",tm:"9:00 PM"}, {n:4,d:"Jun 13",t:"England vs TBD",v:"MetLife Stadium, NJ",s:"Group Stage",tm:"3:00 PM"}, {n:5,d:"Jun 13",t:"France vs TBD",v:"AT&T Stadium, Dallas",s:"Group Stage",tm:"6:00 PM"}, {n:6,d:"Jun 14",t:"Brazil vs TBD",v:"Lumen Field, Seattle",s:"Group Stage",tm:"3:00 PM"}, {n:7,d:"Jun 14",t:"Argentina vs TBD",v:"Rose Bowl, Pasadena",s:"Group Stage",tm:"6:00 PM"}, {n:8,d:"Jun 15",t:"Spain vs TBD",v:"Hard Rock Stadium, Miami",s:"Group Stage",tm:"3:00 PM"}, {n:9,d:"Jun 15",t:"Germany vs TBD",v:"Lincoln Financial Field, Philly",s:"Group Stage",tm:"6:00 PM"}, {n:10,d:"Jun 16",t:"Portugal vs TBD",v:"Gillette Stadium, Boston",s:"Group Stage",tm:"3:00 PM"}, {n:11,d:"Jun 17",t:"Netherlands vs TBD",v:"Arrowhead Stadium, KC",s:"Group Stage",tm:"6:00 PM"}, {n:12,d:"Jun 18",t:"Japan vs TBD",v:"BC Place, Vancouver",s:"Group Stage",tm:"3:00 PM"}, {n:13,d:"Jun 19",t:"Morocco vs TBD",v:"MetLife Stadium, NJ",s:"Group Stage",tm:"6:00 PM"}, {n:14,d:"Jun 20",t:"Italy vs TBD",v:"SoFi Stadium, LA",s:"Group Stage",tm:"3:00 PM"}, {n:15,d:"Jun 21",t:"Belgium vs TBD",v:"AT&T Stadium, Dallas",s:"Group Stage",tm:"3:00 PM"}, {n:16,d:"Jun 22",t:"Croatia vs TBD",v:"Hard Rock Stadium, Miami",s:"Group Stage",tm:"6:00 PM"}, {n:17,d:"Jun 23",t:"South Korea vs TBD",v:"Rose Bowl, Pasadena",s:"Group Stage",tm:"3:00 PM"}, {n:18,d:"Jun 24",t:"Saudi Arabia vs TBD",v:"Lumen Field, Seattle",s:"Group Stage",tm:"6:00 PM"}, {n:19,d:"Jun 25",t:"Uruguay vs TBD",v:"BC Place, Vancouver",s:"Group Stage",tm:"3:00 PM"}, {n:20,d:"Jun 26",t:"Mexico vs TBD (MD2)",v:"Estadio Azteca, Mexico City",s:"Group Stage",tm:"3:00 PM"}, {n:21,d:"Jun 27",t:"USA vs TBD (MD2)",v:"SoFi Stadium, LA",s:"Group Stage",tm:"6:00 PM"}, {n:22,d:"Jun 28",t:"England vs TBD (MD2)",v:"MetLife Stadium, NJ",s:"Group Stage",tm:"3:00 PM"}, {n:23,d:"Jun 29",t:"Brazil vs TBD (MD2)",v:"Rose Bowl, Pasadena",s:"Group Stage",tm:"6:00 PM"}, {n:24,d:"Jun 30",t:"Argentina vs TBD (MD2)",v:"Hard Rock Stadium, Miami",s:"Group Stage",tm:"3:00 PM"}, {n:25,d:"Jul 1",t:"Spain vs TBD (MD2)",v:"AT&T Stadium, Dallas",s:"Group Stage",tm:"6:00 PM"}, {n:26,d:"Jul 2",t:"Germany vs TBD (MD2)",v:"Gillette Stadium, Boston",s:"Group Stage",tm:"3:00 PM"}, {n:27,d:"Jul 3",t:"France vs TBD (MD2)",v:"Lumen Field, Seattle",s:"Group Stage",tm:"6:00 PM"}, {n:28,d:"Jul 4",t:"Portugal vs TBD (MD2)",v:"Lincoln Financial Field, Philly",s:"Group Stage",tm:"3:00 PM"}, {n:29,d:"Jul 5",t:"Netherlands vs TBD (MD2)",v:"BC Place, Vancouver",s:"Group Stage",tm:"6:00 PM"}, {n:30,d:"Jul 7",t:"Mexico vs TBD (MD3)",v:"Estadio Azteca, Mexico City",s:"Group Stage",tm:"3:00 PM"}, {n:31,d:"Jul 8",t:"USA vs TBD (MD3)",v:"MetLife Stadium, NJ",s:"Group Stage",tm:"6:00 PM"}, {n:32,d:"Jul 9",t:"England vs TBD (MD3)",v:"SoFi Stadium, LA",s:"Group Stage",tm:"3:00 PM"}, {n:33,d:"Jul 10",t:"Brazil vs TBD (MD3)",v:"Rose Bowl, Pasadena",s:"Group Stage",tm:"6:00 PM"}, {n:34,d:"Jul 11",t:"Argentina vs TBD (MD3)",v:"Hard Rock Stadium, Miami",s:"Group Stage",tm:"3:00 PM"}, {n:35,d:"Jul 12",t:"Spain vs TBD (MD3)",v:"AT&T Stadium, Dallas",s:"Group Stage",tm:"6:00 PM"}, {n:36,d:"Jul 13",t:"Germany vs TBD (MD3)",v:"Gillette Stadium, Boston",s:"Group Stage",tm:"3:00 PM"}, {n:37,d:"Jul 14",t:"France vs TBD (MD3)",v:"Lumen Field, Seattle",s:"Group Stage",tm:"6:00 PM"}, {n:38,d:"Jul 15",t:"Portugal vs TBD (MD3)",v:"BC Place, Vancouver",s:"Group Stage",tm:"3:00 PM"}, {n:39,d:"Jul 16",t:"Group A Winner vs Group B Runner-up",v:"MetLife Stadium, NJ",s:"Round of 16",tm:"3:00 PM"}, {n:40,d:"Jul 16",t:"Group C Winner vs Group D Runner-up",v:"SoFi Stadium, LA",s:"Round of 16",tm:"9:00 PM"}, {n:41,d:"Jul 17",t:"Group B Winner vs Group A Runner-up",v:"AT&T Stadium, Dallas",s:"Round of 16",tm:"3:00 PM"}, {n:42,d:"Jul 17",t:"Group D Winner vs Group C Runner-up",v:"Rose Bowl, Pasadena",s:"Round of 16",tm:"9:00 PM"}, {n:43,d:"Jul 18",t:"Group E Winner vs Group F Runner-up",v:"Hard Rock Stadium, Miami",s:"Round of 16",tm:"3:00 PM"}, {n:44,d:"Jul 18",t:"Group G Winner vs Group H Runner-up",v:"Gillette Stadium, Boston",s:"Round of 16",tm:"9:00 PM"}, {n:45,d:"Jul 19",t:"Group F Winner vs Group E Runner-up",v:"Lumen Field, Seattle",s:"Round of 16",tm:"3:00 PM"}, {n:46,d:"Jul 19",t:"Group H Winner vs Group G Runner-up",v:"Lincoln Financial Field, Philly",s:"Round of 16",tm:"9:00 PM"}, {n:47,d:"Jul 20",t:"Group I Winner vs Group J Runner-up",v:"BC Place, Vancouver",s:"Round of 16",tm:"3:00 PM"}, {n:48,d:"Jul 20",t:"Group K Winner vs Group L Runner-up",v:"Estadio Azteca, Mexico City",s:"Round of 16",tm:"9:00 PM"}, {n:49,d:"Jul 21",t:"Group J Winner vs Group I Runner-up",v:"MetLife Stadium, NJ",s:"Round of 16",tm:"3:00 PM"}, {n:50,d:"Jul 21",t:"Group L Winner vs Group K Runner-up",v:"SoFi Stadium, LA",s:"Round of 16",tm:"9:00 PM"}, {n:51,d:"Jul 24",t:"R16 W1 vs R16 W2",v:"AT&T Stadium, Dallas",s:"Quarter-final",tm:"3:00 PM"}, {n:52,d:"Jul 24",t:"R16 W3 vs R16 W4",v:"Rose Bowl, Pasadena",s:"Quarter-final",tm:"9:00 PM"}, {n:53,d:"Jul 25",t:"R16 W5 vs R16 W6",v:"Hard Rock Stadium, Miami",s:"Quarter-final",tm:"3:00 PM"}, {n:54,d:"Jul 25",t:"R16 W7 vs R16 W8",v:"Gillette Stadium, Boston",s:"Quarter-final",tm:"9:00 PM"}, {n:55,d:"Jul 28",t:"QF Winner 1 vs QF Winner 2",v:"MetLife Stadium, NJ",s:"Semi-final",tm:"6:00 PM"}, {n:56,d:"Jul 29",t:"QF Winner 3 vs QF Winner 4",v:"SoFi Stadium, LA",s:"Semi-final",tm:"6:00 PM"}, {n:57,d:"Aug 1",t:"3rd Place Play-off",v:"AT&T Stadium, Dallas",s:"Semi-final",tm:"3:00 PM"}, {n:58,d:"Aug 4",t:"🏆 THE GRAND FINAL — SF Winner 1 vs SF Winner 2",v:"MetLife Stadium, East Rutherford NJ",s:"Final",tm:"6:00 PM"}, ]; const GROUPS = [ {name:"Group A",teams:["USA","Panama","Uruguay","TBD"]}, {name:"Group B",teams:["England","TBD","TBD","TBD"]}, {name:"Group C",teams:["Argentina","TBD","TBD","TBD"]}, {name:"Group D",teams:["France","TBD","TBD","TBD"]}, {name:"Group E",teams:["Spain","Germany","TBD","TBD"]}, {name:"Group F",teams:["Brazil","TBD","TBD","TBD"]}, {name:"Group G",teams:["Portugal","TBD","TBD","TBD"]}, {name:"Group H",teams:["Morocco","TBD","TBD","TBD"]}, {name:"Group I",teams:["Italy","Japan","TBD","TBD"]}, {name:"Group J",teams:["Netherlands","Belgium","TBD","TBD"]}, {name:"Group K",teams:["South Korea","TBD","TBD","TBD"]}, {name:"Group L",teams:["Croatia","Saudi Arabia","TBD","TBD"]}, ]; /* ============================================================ STATE ============================================================ */ let artPage = 1; const PER = 24; let artCat = 'all'; let artSearch = ''; let stageFilter = 'all'; let playerPos = 'all'; /* ============================================================ RENDER: LIVE SCORES ============================================================ */ function renderLiveScores() { const el = document.getElementById('liveScoreChips'); el.innerHTML = LIVE_SCORES.map(s => { const extra = s.type === 'live' ? `<span class="mins">${s.m}</span>` : s.type === 'ft' ? `<span class="ft">${s.m}</span>` : `<span class="ft" style="color:var(--cyan)">${s.m}</span>`; return `<div class="score-chip">${s.t}${extra}</div>`; }).join(''); } /* ============================================================ RENDER: ARTICLES ============================================================ */ const TAG_MAP = { v:['tag-v','🔥 Viral'],w:['tag-w','⚽ WC26'],p:['tag-p','👤 Player'], g:['tag-g','📖 Guide'],a:['tag-a','📊 Analysis'],f:['tag-f','🎮 Fantasy'] }; function getFiltered() { return ARTICLES.filter(a => { const catOk = artCat === 'all' || a.cat === artCat; const searchOk = !artSearch || a.t.toLowerCase().includes(artSearch); return catOk && searchOk; }); } function renderArticles() { const filtered = getFiltered(); const total = filtered.length; const pages = Math.ceil(total / PER); const start = (artPage - 1) * PER; const slice = filtered.slice(start, start + PER); document.getElementById('artCountLabel').textContent = `${total} article${total !== 1 ? 's' : ''}`; const grid = document.getElementById('artGrid'); grid.innerHTML = slice.map((a, i) => { const tags = a.tags.slice(0,2).map(t => `<span class="tag ${TAG_MAP[t][0]}">${TAG_MAP[t][1]}</span>`).join(''); const url = `https://www.sportslnv.com/news/${a.t.toLowerCase().replace(/[^a-z0-9]+/g,'-').replace(/-+/g,'-').replace(/^-|-$/g,'')}`; return `<a class="art-card ${a.tier}" href="${url}" style="animation-delay:${i*0.02}s" aria-label="Article ${a.n}: ${a.t}"> <div class="art-num">#${a.n}</div> <div class="art-title">${a.t}</div> <div class="art-tags">${tags}</div> <div class="traffic-bar"><div class="traffic-fill" style="width:${a.tr}%"></div></div> </a>`; }).join(''); // Pagination const pag = document.getElementById('artPagination'); if (pages <= 1) { pag.innerHTML = ''; return; } let html = ''; html += `<button class="pg-btn" onclick="goPage(${artPage-1})" ${artPage===1?'disabled':''}>‹</button>`; for (let i = 1; i <= pages; i++) { if (pages > 7 && i > 2 && i < pages - 1 && Math.abs(i - artPage) > 1) { if (i === 3 || i === pages - 2) html += `<button class="pg-btn" disabled style="border:none;background:transparent;color:var(--text3)">…</button>`; continue; } html += `<button class="pg-btn ${i===artPage?'active':''}" onclick="goPage(${i})">${i}</button>`; } html += `<button class="pg-btn" onclick="goPage(${artPage+1})" ${artPage===pages?'disabled':''}>›</button>`; pag.innerHTML = html; } function goPage(p) { artPage = p; renderArticles(); document.getElementById('pane-articles').scrollIntoView({behavior:'smooth',block:'start'}); } function setArtCat(cat, el) { artCat = cat; artPage = 1; document.querySelectorAll('#pane-articles .filter-btn').forEach(b => b.classList.remove('active')); el.classList.add('active'); renderArticles(); } function filterArts() { artSearch = document.getElementById('artSearch').value.toLowerCase().trim(); artPage = 1; renderArticles(); } /* ============================================================ RENDER: PLAYERS ============================================================ */ function renderPlayers() { const pos = playerPos; const filtered = pos === 'all' ? PLAYERS : PLAYERS.filter(p => p.pos === pos || p.pos.includes(pos.replace(/s$/,''))); const grid = document.getElementById('playersGrid'); grid.innerHTML = filtered.map((p, i) => { const rankClass = p.rank===1?'r1':p.rank===2?'r2':p.rank===3?'r3':'rn'; const initials = p.name.split(' ').map(w=>w[0]).slice(0,2).join(''); const url = `https://www.sportslnv.com/news/${p.name.toLowerCase().replace(/\s+/g,'-')}-world-cup-2026`; return `<a class="player-card" href="${url}" style="animation-delay:${i*0.03}s;text-decoration:none;" aria-label="${p.name} - ${p.nat} - Rank ${p.rank}"> <div class="p-rank ${rankClass}">#${p.rank} RANKED</div> <div class="p-avatar" style="background:${p.col}">${initials}</div> <div class="p-name">${p.name}</div> <div class="p-nat">${p.nat}</div> <span class="p-pos-badge">${p.pos}</span> <div class="p-stats"> <div class="p-stat-item"><div class="p-stat-val">${p.goals}</div><div class="p-stat-lbl">Goals</div></div> <div class="p-stat-item"><div class="p-stat-val">${p.apps}</div><div class="p-stat-lbl">Apps</div></div> <div class="p-stat-item"><div class="p-stat-val">${p.age}</div><div class="p-stat-lbl">Age</div></div> </div> </a>`; }).join(''); } function setPlayerPos(pos, el) { playerPos = pos; document.querySelectorAll('#pane-players .filter-btn').forEach(b => b.classList.remove('active')); el.classList.add('active'); renderPlayers(); } /* ============================================================ RENDER: SCHEDULE ============================================================ */ const STAGE_CLASS = {'Group Stage':'sg','Round of 16':'r16','Quarter-final':'qf','Semi-final':'sf','Final':'fn'}; const STAGE_LABEL = {'Group Stage':'Group Stage','Round of 16':'Round of 16','Quarter-final':'QF','Semi-final':'SF','Final':'🏆 FINAL'}; function renderSchedule() { const tbody = document.getElementById('scheduleTbody'); const data = stageFilter === 'all' ? SCHEDULE : SCHEDULE.filter(m => m.s === stageFilter); tbody.innerHTML = data.map(m => { const parts = m.t.split(' vs '); const team1 = parts[0]; const team2 = parts.slice(1).join(' vs '); return `<tr> <td class="td-num">${m.n}</td> <td class="td-date">${m.d}</td> <td><div class="match-name">${team1}<span class="vs-tag">vs</span>${team2}</div></td> <td class="venue-cell">${m.v}</td> <td><span class="stage-pill ${STAGE_CLASS[m.s]}">${STAGE_LABEL[m.s]}</span></td> <td class="td-time">${m.tm}</td> </tr>`; }).join(''); } function setStage(stage, el) { stageFilter = stage; document.querySelectorAll('#pane-schedule .filter-btn').forEach(b => b.classList.remove('active')); el.classList.add('active'); renderSchedule(); } /* ============================================================ RENDER: GROUPS ============================================================ */ function renderGroups() { const grid = document.getElementById('groupsGrid'); grid.innerHTML = GROUPS.map(g => { const rows = g.teams.map((team, i) => ` <tr class="${i < 2 ? 'qualify' : ''}"> <td>${i < 2 ? '<span class="qual-dot" aria-label="Qualifies"></span>' : ''}${team}</td> <td>0</td><td>0</td><td>0</td><td>0</td> <td><strong>0</strong></td> </tr>`).join(''); return `<div class="group-card"> <div class="group-head">${g.name}</div> <table class="group-table" aria-label="${g.name} standings"> <thead><tr><th>Team</th><th>P</th><th>W</th><th>D</th><th>L</th><th>Pts</th></tr></thead> <tbody>${rows}</tbody> </table> </div>`; }).join(''); } /* ============================================================ PANE SWITCHER ============================================================ */ function showPane(id, el) { document.querySelectorAll('.pane').forEach(p => p.classList.remove('active')); document.querySelectorAll('.nav-tab').forEach(b => b.classList.remove('active')); document.getElementById('pane-' + id).classList.add('active'); el.classList.add('active'); } /* ============================================================ INIT ============================================================ */ renderLiveScores(); renderArticles(); renderPlayers(); renderSchedule(); renderGroups(); </script> </body> </html>