A quelle heure et sur quelle chaîne ?

Six Nations (F): à quelle heure et sur quelle chaîne TV suivre France (F) – Angleterre (F)

Partager :

France (F) – Angleterre (F) s’affronteront ce dimanche au Bordeaux pour le compte de la tournoi du championnat Six Nations (F).

France (F), actuellement 2ᵉ au classement, sort d’une série avec deux victoires consécutives lors de ses deux derniers matchs. De son côté, Angleterre (F), 1ᵉ, arrive après deux victoires consécutives. La rencontre sera arbitrée par Clara Munarini.

A quelle heure et sur quelle chaîne suivre France (F) – Angleterre (F) ?

Le coup d’envoi prévu à 17H45. Les supporters pourront suivre cette rencontre palpitante en direct sur FRANCETV, ou encore en direct à la radio et/ou en score live sur Vibrez Rugby.



live en direct
.vbr-gps{margin:1.2em 0 1.6em;text-align:center;} .vbr-gps-btn{display:inline-flex;align-items:center;gap:10px;padding:10px 18px;border:1px solid #dadce0;border-radius:24px;background:#fff;color:#202124;text-decoration:none;font:700 14px/1.2 -apple-system,BlinkMacSystemFont, »Segoe UI »,Roboto,Arial,sans-serif;transition:background .15s,box-shadow .15s;max-width:100%;} .vbr-gps-btn:hover,.vbr-gps-btn:focus{background:#f8f9fa;box-shadow:0 1px 3px rgba(60,64,67,.15);text-decoration:none;color:#202124;} .vbr-gps-btn span{white-space:normal;} .vbr-gps-icon{flex-shrink:0;vertical-align:middle;}
(function(){ var G_SVG =  »;// Déterminer la variante via le ?id= de l’URL (parité) var idMatch = (location.search.match(/[?&]id=(d+)/) || [])[1]; var seed = idMatch ? parseInt(idMatch, 10) : (Date.now() % 2); var isNews = (seed % 2 === 1);var url, text, aria; if (isNews) { url = ‘https://news.google.com/publications/CAAqLAgKIiZDQklTRmdnTWFoSUtFSFpwWW5KbGVpMXlkV2RpZVM1amIyMG9BQVAB?hl=fr&gl=FR&ceid=FR:fr’; text = ‘Suivez Vibrez Rugby sur Google Actualités !’; aria = ‘Suivre Vibrez Rugby sur Google Actualités’; } else { url = ‘https://google.com/preferences/source?q=vibrez-rugby.com’; text = ‘Soutenez-nous, mettez Vibrez Rugby dans vos favoris !’; aria = ‘Ajouter Vibrez Rugby à vos sources préférées Google’; }var html = ‘‘;var c = document.getElementById(‘vbr-gps-container’); if (c) c.innerHTML = html; })();live en direct

live en direct

live en direct

live en direct

    Équipe LocaleÉquipe Visiteuse
    var teamRequest = false; // ✅ PATCH : recalcul simple des stats si l’API renvoie 0 partout function buildEmptyStats() { return { locale: { drop:0, essai:0, « mi-temps »: null, penalite:0, carton_jaune:0, carton_rouge:0, transformation:0 }, ext: { drop:0, essai:0, « mi-temps »: null, penalite:0, carton_jaune:0, carton_rouge:0, transformation:0 } }; }function normalizeActionType(t) { return String(t ||  »).toUpperCase().trim(); }function applyStatsFromActions(data) { if (!data || !Array.isArray(data.actions)) return data;// si stats absentes -> on les crée if (!data.stats) data.stats = buildEmptyStats();// si stats présentes mais vides -> on peut recalculer const sL = data.stats.locale || {}; const sE = data.stats.ext || {}; const sum = (sL.essai||0)+(sL.transformation||0)+(sL.penalite||0)+(sL.drop||0)+(sL.carton_jaune||0)+(sL.carton_rouge||0) + (sE.essai||0)+(sE.transformation||0)+(sE.penalite||0)+(sE.drop||0)+(sE.carton_jaune||0)+(sE.carton_rouge||0);// Si l’API a déjà des stats > 0, on ne touche pas if (sum > 0) return data;// Recalcul depuis actions const stats = buildEmptyStats(); const localId = String(data.local_team?.id ||  »); const visitorId = String(data.visitor_team?.id ||  »);for (const a of data.actions) { if (!a) continue; const type = normalizeActionType(a.type); const teamId = String(a.competitionEquipeId ||  »);const side = (teamId === localId) ? ‘locale’ : (teamId === visitorId ? ‘ext’ : null);if (type === ‘TRY’) { if (side) stats[side].essai += 1; } else if (type === ‘GOALAFTERTRY’) { if (side) stats[side].transformation += 1; } else if (type === ‘GOALPENALTY’) { if (side) stats[side].penalite += 1; } else if (type === ‘DROPGOAL’) { if (side) stats[side].drop += 1; } else if (type === ‘PENALTY TRY’ || type === ‘PENALTYTRY’) { if (side) stats[side].essai += 1; } else if (type === ‘CARD’) { const st = String(a.sousType || a.description ||  »).toUpperCase(); if (side && st.includes(‘YELLOW’)) stats[side].carton_jaune += 1; if (side && st.includes(‘RED’)) stats[side].carton_rouge += 1; } else if (type === ‘MT’) { stats.locale[« mi-temps »] = stats.locale[« mi-temps »] ?? ‘MT’; stats.ext[« mi-temps »] = stats.ext[« mi-temps »] ?? ‘MT’; } }data.stats = stats; return data; }function getRencontreId() { let urlParams = new URLSearchParams(window.location.search); let rId = urlParams.get(‘id’); if (!rId) { const matchContainer = document.getElementById(‘match-container’); if (matchContainer) { rId = matchContainer.getAttribute(‘data-match-id’); } } if (!rId) { rId = findRencontreIdInComments(); } console.log(rId); return rId; }function findRencontreIdInComments() { var urlElement = document.querySelector(‘dd.tribe-events-event-url a’); if (urlElement) { var href = urlElement.getAttribute(‘href’); var rId = new URL(href).searchParams.get(‘id’); return rId; } else { const matchContainer = document.getElementById(‘team-container’); if (matchContainer) { rId = matchContainer.getAttribute(‘team-match-id’); teamRequest = true; return rId; } } if (!rId) { const parentElement = document.querySelector(‘#tribe-events-content’); const commentNode = Array.from(parentElement.childNodes).find(node => node.nodeType === 8); if (commentNode) { const match = commentNode.nodeValue.match(/Rencontre ID: (d+)/); if (match) { rId = match[1]; console.log(‘Rencontre ID:’, rId); return rId; } else { console.log(‘ID non trouvé dans le commentaire.’); } } else { console.log(‘Aucun commentaire trouvé.’); } } }function fetchDataAndUpdate() { var apiUrl =  »; const rencontreId = getRencontreId(); if (teamRequest) { apiUrl = `https://rugby-app-4ebacff10fda.herokuapp.com/rencontres/next_rencontre?id=${rencontreId}`; } else { apiUrl = `https://rugby-app-4ebacff10fda.herokuapp.com/rencontres/${rencontreId}`; } fetch(apiUrl) .then(response => response.json()) .then(allData => { const data = allData[0]; applyStatsFromActions(data); const chartSection = document.querySelector(‘.chart-section’); const summarySection = document.querySelector(‘.match-summary’);if (data.rencontre_resultat_locale && data.rencontre_resultat_visiteuse && data.chart && data.chart.length > 0) { createChart(data); chartSection.style.display = ‘block’; } else { chartSection.style.display = ‘none’; }if (data.stats) { updateLists(data); summarySection.style.display = ‘block’; } else { summarySection.style.display = ‘none’; }updateActions(data); updateScoreAndTeams(data); creerTableau(data); const contentDisplay = document.getElementById(‘content-display’); if (data.content) { contentDisplay.innerHTML = data.content; } const radioContainer = document.querySelector(‘.refresh-button-container’); radioContainer.innerHTML =  »; const radios = (data.local_team.radios || []).concat(data.visitor_team.radios || []); const uniqueRadios = Array.from(new Set(radios.map(radio => radio.id))) .map(id => radios.find(radio => radio.id === id)); if (radios && radios.length > 0) { uniqueRadios.forEach(radio => { const radioButton = document.createElement(‘button’); radioButton.textContent = `Écouter ${radio.name}`; radioButton.classList.add(‘radio-btn’); radioButton.onclick = function() { playRadio(radio.name, radio.link, radio.logo); }; radioContainer.appendChild(radioButton); }); } else { radioContainer.style.display = ‘none’; } if (data.youtube_link) { const youtubeContainer = document.querySelector(‘.youtube-container’); const youtubeIframe = document.getElementById(‘youtube-video’); youtubeIframe.src = data.youtube_link; youtubeContainer.style.display = ‘flex’; } const liveFbLink = data.fb_live; const container_fb = document.getElementById(‘fb-live-container’); if (liveFbLink && liveFbLink.includes(‘?v=’)) { const videoId = liveFbLink.split(‘?v=’)[1]; const videoUrlEncoded = encodeURIComponent(`https://www.facebook.com/facebook/videos/${videoId}/`); const iframeSrc = `https://www.facebook.com/plugins/video.php?href=${videoUrlEncoded}&width=560&height=314&show_text=false&appId&mute=0`; const iframe = document.createElement(‘iframe’); iframe.src = iframeSrc; iframe.width = ‘560’; iframe.height = ‘314’; iframe.style.border = ‘none’; iframe.style.overflow = ‘hidden’; iframe.scrolling = ‘no’; iframe.setAttribute(‘frameborder’, ‘0’); iframe.setAttribute(‘allowfullscreen’, ‘true’); iframe.setAttribute(‘allow’, ‘autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share’); container_fb.style.display = ‘flex’; container_fb.appendChild(iframe); } if (data.etat === ‘termine’ || radios.length === 0) { radioContainer.style.display = ‘none’; } else { resetTimer(); } }); }function creerTableau(statsData) { const table = document.getElementById(‘matchTable’); table.innerHTML =  »; let headerRow = `${statsData.local_team.name}Statistiques${statsData.visitor_team.name}`; table.insertAdjacentHTML(‘beforeend’, headerRow); const labels = { « classement_actuel »: « Classement actuel », « victoires_domicile »: « Victoires domicile », « victoires_exterieur »: « Victoires extérieur », « points_domicile »: « Points domicile », « points_exterieur »: « Points extérieur », « essais_marques_domicile »: « Essais marqués domicile », « essais_marques_exterieur »: « Essais marqués extérieur », « essais_encaisses_domicile »: « Essais encaissés domicile », « essais_encaisses_exterieur »: « Essais encaissés extérieur », « tendance_globale »: « Tendance globale », « penalites_encaissees_domicile »: « Pénalités encaissées domicile », « penalites_encaissees_exterieur »: « Pénalités encaissées extérieur » }; Object.keys(labels).forEach(key => { let row = `${formatData(statsData.local_team_stats[key])}${labels[key]}${formatData(statsData.visitor_team_stats[key])}`; table.insertAdjacentHTML(‘beforeend’, row); }); table.insertAdjacentHTML(‘beforeend’, ‘‘); }function formatData(data) { if (typeof data === ‘string’ && data.match(/V|N|D/)) { let formattedData = data.split(‘ ‘).map(el => { switch (el) { case ‘V’: return ‘‘ + el + ‘‘; case ‘N’: return ‘‘ + el + ‘‘; case ‘D’: return ‘‘ + el + ‘‘; default: return el; } }).join(‘ ‘); return formattedData; } else { return data; } }function createTimelineItem(action, actionTeamName, isLocalTeam, actionTeam) { const li = document.createElement(‘li’);if (action.type === ‘comment’) { li.className = ‘timeline-item timeline-comment’; const commentText = action.comment || action.text || action.description || action.content || ‘Commentaire sans texte’; li.innerHTML = `
    ${action.minutes || 0}’

    ${commentText}

    `; return li; }if (action.type === ‘tweet’) { li.className = ‘timeline-item timeline-comment’; const tweetUrl = action.description || action.comment || action.tweetUrl ||  »; const tweetContent = action.text ||  »; li.innerHTML = `
    ${action.minutes || 0}’
    ${tweetContent ? `

    ${tweetContent}

    ` :  »} ${tweetUrl ? `
    ` :  »}
    `; if (tweetUrl) { setTimeout(() => { embedTweet(tweetUrl, `tweet-embed-${action.minutes || Date.now()}`); }, 100); } return li; }li.className = ‘timeline-item ‘ + (isLocalTeam ? ‘timeline-local’ : ‘timeline-visitor’);let sousTypeString =  »; let minute = action.minutes + « ‘ »; if (action.type === ‘CARD’) { sousTypeString = action.description.toUpperCase() ||  »; }const imgSrc = `https://vibrez-rugby.com/wp-content/uploads/2024/08/${action.type_traduit ? action.type_traduit.normalize(« NFD »).replace(/[u0300-u036f]/g, «  »).toLowerCase().replace(/s+/g,  ») :  »}${sousTypeString}.png`;let actionsVar =  »; const specialTypes = new Set([‘Start’, ‘Stop’, ‘MT’, ‘MATCHBEGIN’, ‘MATCHOVER’]);if (!specialTypes.has(action.type)) { actionsVar = action.type_traduit ?? action.type; } else { minute =  »; switch (action.type) { case ‘Start’: case ‘MATCHBEGIN’: actionsVar = ‘Coup d’envoi’; break; case ‘Stop’: case ‘MATCHOVER’: actionsVar = ‘Fin du match’; break; case ‘MT’: actionsVar = ‘Mi-temps’; break; default: actionsVar = action.type_traduit ?? action.type; } }const showTeamInfo = !specialTypes.has(action.type);li.innerHTML = `
    ${actionsVar}
    ${minute ? `${minute}` :  »} ${showTeamInfo ? `` :  »}

    ${actionsVar}

    ${action.Joueur1 ? `

    ${action.Joueur1.Personne.nom}

    ` :  »} ${action.Joueur2 ? `

    ${action.Joueur2.Personne.nom}

    ` :  »}
    `; return li; }function loadTwitterWidgets() { if (!window.twttr && !document.getElementById(‘twitter-widgets’)) { const script = document.createElement(‘script’); script.id = ‘twitter-widgets’; script.src = ‘https://platform.twitter.com/widgets.js’; script.async = true; script.charset = ‘utf-8’; document.head.appendChild(script); } }function embedTweet(tweetUrl, containerId) { const checkTwitter = () => { if (window.twttr && window.twttr.widgets) { const container = document.getElementById(containerId); if (container) { window.twttr.widgets.createTweet( extractTweetId(tweetUrl), container, { theme: ‘light’, width: 400, align: ‘center’, conversation: ‘none’, cards: ‘visible’ } ).then(() => { console.log(‘Tweet embedded successfully’); }).catch(err => { console.error(‘Error embedding tweet:’, err); container.innerHTML = `

    Tweet non disponible

    Voir sur Twitter
    `; }); } } else { setTimeout(checkTwitter, 100); } }; checkTwitter(); }function extractTweetId(url) { const match = url.match(/status/(d+)/); return match ? match[1] : null; }function updateActions(data, invertOrder = true) { const timeline = document.querySelector(‘.timeline’); timeline.innerHTML =  »; loadTwitterWidgets();const actionsTab = document.querySelector(‘.tab-btn[data-tab= »actions »]’); const compositionTab = document.querySelector(‘.tab-btn[data-tab= »composition »]’); const actionsPanel = document.getElementById(‘actions’); const compositionPanel = document.getElementById(‘composition’);// Vérifier s’il y a des actions const hasActions = data.etat !== ‘A venir’ && data.etat !== ‘avenir’ && Array.isArray(data.actions) && data.actions.length > 0;if (hasActions) { const actions = data.actions.filter(a => a && a.type !== ‘KICKOFF’);const priorityOf = (t) => { switch (t) { case ‘Start’: case ‘MATCHBEGIN’: return 0; default: return 1; case ‘MT’: return 2; case ‘MATCHOVER’: case ‘Stop’: return 3; } };const normMinute = (a) => { const m = typeof a.minutes === ‘number’ ? a.minutes : parseInt(a.minutes, 10); if (Number.isFinite(m)) return m; if (a.type === ‘Start’ || a.type === ‘MATCHBEGIN’) return -1; if (a.type === ‘MATCHOVER’ || a.type === ‘Stop’) return 999; if (a.type === ‘MT’) return 500; return 999; };const orderedAsc = actions.slice().sort((a, b) => { const pa = priorityOf(a.type); const pb = priorityOf(b.type); if (pa !== pb) return pa – pb; const ma = normMinute(a); const mb = normMinute(b); if (ma !== mb) return ma – mb; const aLocal = String(a.competitionEquipeId) === String(data.local_team?.id); const bLocal = String(b.competitionEquipeId) === String(data.local_team?.id); return (bLocal ? 1 : 0) – (aLocal ? 1 : 0); });const orderedActions = invertOrder ? orderedAsc.slice().reverse() : orderedAsc;for (const action of orderedActions) { const isLocalTeam = String(action.competitionEquipeId) === String(data.local_team?.id); const actionTeam = isLocalTeam ? data.local_team : data.visitor_team; const actionTeamImg = actionTeam?.img_url ||  »; const item = createTimelineItem(action, actionTeamImg, isLocalTeam, actionTeam); timeline.appendChild(item); }actionsTab.style.display = ‘block’; } else { actionsTab.style.display = ‘none’; actionsPanel.classList.remove(‘active’); }// Vérifier s’il y a des compositions const hasComposition = data.compositon_equipe_local && data.compositon_equipe_local.length > 0;if (!hasComposition) { compositionTab.style.display = ‘none’; compositionPanel.classList.remove(‘active’);// Si pas d’actions ni de composition, activer l’onglet Face à Face if (!hasActions) { const enjeuxTab = document.querySelector(‘.tab-btn[data-tab= »enjeux »]’); const enjeuxPanel = document.getElementById(‘enjeux’); enjeuxTab.classList.add(‘active’); enjeuxPanel.classList.add(‘active’); } return; }compositionTab.style.display = ‘block’;const table = document.querySelector(« .custom-composition-table tbody »); table.innerHTML =  »;const sortedEquipeLocal = (data.compositon_equipe_local || []).slice().sort((a, b) => a.numero – b.numero); const sortedEquipeVisiteur = (data.compositon_equipe_visiteur || []).slice().sort((a, b) => a.numero – b.numero);for (let i = 0; i < sortedEquipeLocal.length; i++) { const joueurLocal = sortedEquipeLocal[i] || {}; const joueurVisiteur = sortedEquipeVisiteur[i];const row = table.insertRow(); row.insertCell(0).innerHTML = `${joueurLocal.numero ??  »} ${joueurLocal.nom ??  »} ${joueurLocal.estCapitaine ? « C » : «  »}`;row.insertCell(1).innerHTML = joueurVisiteur ? `${joueurVisiteur.numero ??  »} ${joueurVisiteur.nom ??  »} ${joueurVisiteur.estCapitaine ? « C » : «  »}` :  »; } }function getFormeHtml(equipe) { let formeArray = equipe.forme; return formeArray.map(val => { if (val === ‘V’) { return ‘‘; } else if (val === ‘N’) { return ‘‘; } else if (val === ‘D’) { return ‘‘; } }).join( »); }function updateScoreAndTeams(data) { const scoreContainer = document.querySelector(« .custom-score-container »); const emblemeLocal = document.querySelector(« .custom-emblem-local »); const dateContainer = document.querySelector(« .custom_date »); const nomLocal = document.querySelector(« .custom-local-name »); const emblemeVisiteur = document.querySelector(« .custom-emblem-visitor »); const nomVisiteur = document.querySelector(« .custom-visitor-name »); const h1Container = document.querySelector(« .custom-h1 »); const competitionBadge = document.querySelector(« .competition-badge »); const matchDay = document.querySelector(« .match-day »); const matchStatusBadge = document.querySelector(« .match-status-badge »);emblemeLocal.src = data.local_team.img_url; emblemeVisiteur.src = data.visitor_team.img_url;let formeEquipeLocale = getFormeHtml(data.local_team); let formeEquipeVisiteuse = getFormeHtml(data.visitor_team);nomLocal.innerHTML = `${data.local_team.name}
    ${formeEquipeLocale}
    `; nomVisiteur.innerHTML = `${data.visitor_team.name}
    ${formeEquipeVisiteuse}
    `;// Mise à jour du badge de compétition competitionBadge.textContent = data.competition ||  »;// Mise à jour de la journée // Formats possibles: « 13e-journee », « poule 3 », « journee-13″, etc. let day = String(data.day ||  ») .replace(/-/g, ‘ ‘) // Remplace les tirets par des espaces .replace(/journees*(d+)/gi, ‘Journée $1’) // « journee 13 » -> « Journée 13 » .replace(/(d+)e?s*journee/gi, ‘Journée $1’) // « 13e journee » ou « 13 journee » -> « Journée 13 » .replace(/poules*(d+)/gi, ‘Poule $1’); // « poule 3 » -> « Poule 3″matchDay.textContent = day;const gameStatus = data.etat === ‘endirect’ || data.etat === ‘avenir’ ? ‘En Direct’ :  »; const gameFinish = data.etat === ‘termine’ ? ‘Terminé’ :  »;// Mise à jour du badge de statut if (data.etat === ‘endirect’) { matchStatusBadge.textContent = ‘LIVE’; matchStatusBadge.className = ‘match-status-badge status-live’; document.body.classList.add(‘match-live’); } else if (data.etat === ‘termine’) { matchStatusBadge.textContent = ‘Terminé’; matchStatusBadge.className = ‘match-status-badge status-finished’; document.body.classList.remove(‘match-live’); } else { matchStatusBadge.textContent = ‘À venir’; matchStatusBadge.className = ‘match-status-badge status-upcoming’; document.body.classList.remove(‘match-live’); }h1Container.textContent = `${data.local_team.name} – ${data.visitor_team.name}`;const date = new Date(data.date); const dateFormatted = `${date.toLocaleDateString(‘fr-FR’, { weekday: ‘long’, year: ‘numeric’, month: ‘long’, day: ‘numeric’, })}`; const heureFormatted = `${date.toLocaleTimeString(‘fr-FR’, { hour: ‘2-digit’, minute: ‘2-digit’, })}`;if (data.rencontre_resultat_locale && data.etat === « termine ») { scoreContainer.innerHTML = `
    ${data.rencontre_resultat_locale.pointsDeMarque}
    ${data.rencontre_resultat_visiteuse.pointsDeMarque}
    `; if (data.periode) { document.querySelector(‘.match-period’).textContent = data.periode; } dateContainer.innerHTML = `${dateFormatted}`; } else if (data.etat === ‘endirect’) { scoreContainer.innerHTML = `
    ${data.rencontre_resultat_locale.pointsDeMarque}
    ${data.rencontre_resultat_visiteuse.pointsDeMarque}
    `; if (data.periode) { document.querySelector(‘.match-period’).textContent = data.periode; } dateContainer.innerHTML = `${dateFormatted}`; } else { scoreContainer.innerHTML = `
    ${heureFormatted}
    `; dateContainer.innerHTML = `${dateFormatted}`; } }function updateLists(data) { const summaryTable = document.querySelector(‘.summary-table’); summaryTable.innerHTML =  »;const orderedKeys = [ ‘MI-TEMPS’, ‘ESSAI’, ‘TRANSFORMATION’, ‘PENALITE’, ‘ESSAIS DE PÉNALITÉ’, ‘DROP’, ‘CARTON_JAUNE’, ‘CARTON_ROUGE’ ];const keyMap = { ‘MI-TEMPS’: ‘mi-temps’, ‘ESSAI’: ‘essai’, ‘TRANSFORMATION’: ‘transformation’, ‘PENALITE’: ‘penalite’, ‘ESSAIS DE PÉNALITÉ’: ‘Essais de pénalité’, ‘DROP’: ‘drop’, ‘CARTON_JAUNE’: ‘carton_jaune’, ‘CARTON_ROUGE’: ‘carton_rouge’ };const displayLabels = { ‘MI-TEMPS’: ‘Mi-temps’, ‘ESSAI’: ‘Essais’, ‘TRANSFORMATION’: ‘Transformations’, ‘PENALITE’: ‘Pénalités’, ‘ESSAIS DE PÉNALITÉ’: ‘Essais pénalité’, ‘DROP’: ‘Drops’, ‘CARTON_JAUNE’: ‘Cartons jaunes’, ‘CARTON_ROUGE’: ‘Cartons rouges’ };const localeStats = data?.stats?.locale || {}; const extStats = data?.stats?.ext || {};orderedKeys.forEach((key) => { const dataKey = keyMap[key]; let localValue = localeStats.hasOwnProperty(dataKey) ? localeStats[dataKey] : 0; let visitorValue = extStats.hasOwnProperty(dataKey) ? extStats[dataKey] : 0;if (key === ‘MI-TEMPS’) { localValue = localeStats.hasOwnProperty(dataKey) ? localeStats[dataKey] : null; visitorValue = extStats.hasOwnProperty(dataKey) ? extStats[dataKey] : null; }if (localValue !== null || visitorValue !== null) { const tr = document.createElement(‘tr’); tr.innerHTML = `${localValue}${displayLabels[key]}${visitorValue} `; summaryTable.appendChild(tr); } }); }// Gestion des onglets document.querySelectorAll(‘.tab-btn’).forEach(btn => { btn.addEventListener(‘click’, () => { const tabId = btn.dataset.tab;// Mise à jour des boutons document.querySelectorAll(‘.tab-btn’).forEach(b => b.classList.remove(‘active’)); btn.classList.add(‘active’);// Mise à jour des panneaux document.querySelectorAll(‘.tab-panel’).forEach(panel => panel.classList.remove(‘active’)); document.getElementById(tabId).classList.add(‘active’); }); });let myChart;function createChart(data) { const chartData = data.chart; if (chartData) { const labels = Array.from({ length: 80 }, (_, i) => i); const teams = { [data.local_team.id]: { name: data.local_team.name, color: ‘#004D90’ }, [data.visitor_team.id]: { name: data.visitor_team.name, color: ‘#e63946′ } }; const datasets = Object.keys(teams).map(teamId => { const rawTeamData = chartData .filter(item => item.team === teamId) .map(item => ({ x: item.minutes, y: item.score })); return { label: teams[teamId].name, data: rawTeamData, borderColor: teams[teamId].color, backgroundColor: teams[teamId].color + ’20’, borderWidth: 3, tension: 0.3, fill: false, pointRadius: 0, pointHoverRadius: 6, }; }); const localTeamDataset = datasets.find(dataset => dataset.label === teams[data.local_team.id].name); const sortedDatasets = [localTeamDataset].concat(datasets.filter(dataset => dataset !== localTeamDataset)); if (myChart) { myChart.destroy(); } if (document.getElementById(‘myChart’)) { const ctx = document.getElementById(‘myChart’).getContext(‘2d’); myChart = new Chart(ctx, { type: ‘line’, data: { labels: labels, datasets: sortedDatasets }, options: { responsive: true, maintainAspectRatio: true, plugins: { legend: { display: true, position: ‘top’, labels: { usePointStyle: true, padding: 20, font: { family: ‘Poppins’, size: 12 } } } }, scales: { x: { display: true, title: { display: true, text: ‘Minutes’, font: { family: ‘Poppins’, size: 12 } }, type: ‘linear’, position: ‘bottom’, min: 0, max: 80, grid: { color: ‘rgba(0, 0, 0, 0.05)’ } }, y: { display: true, title: { display: true, text: ‘Points’, font: { family: ‘Poppins’, size: 12 } }, grid: { color: ‘rgba(0, 0, 0, 0.05)’ } } }, } }); } } }let refreshTimeout = null;function resetTimer() { if (refreshTimeout) { clearTimeout(refreshTimeout); } refreshTimeout = setTimeout(() => { fetchDataAndUpdate(); }, 60000); }function playRadio(name, url, logo) { const playerContainer = document.querySelector(‘.spotify-style-player’); const audioTitle = playerContainer.querySelector(‘.audio-title’); const audioSource = playerContainer.querySelector(‘audio source’); const audioPlayer = playerContainer.querySelector(‘audio’); const logoImg = playerContainer.querySelector(‘.radio-logo’); const closeButton = playerContainer.querySelector(‘.close-button’);closeButton.onclick = function() { playerContainer.style.display = ‘none’; audioPlayer.pause(); };audioTitle.textContent = name; audioSource.src = url; logoImg.src = logo; audioPlayer.load(); playerContainer.style.display = ‘flex’; audioPlayer.play().catch(error => { console.error(« Autoplay blocked by the browser: « , error); }); }window.onload = function() { fetchDataAndUpdate(); };:root { /* Couleurs Vibrez Rugby */ –color-primary: #004D90; –color-primary-dark: #002759; –color-accent: #0693e3; –color-danger: #e63946; –color-success: #2a9d8f; –color-warning: #f4a261;/* Neutres */ –color-white: #ffffff; –color-gray-50: #f8fafc; –color-gray-100: #f1f5f9; –color-gray-200: #e2e8f0; –color-gray-300: #cbd5e1; –color-gray-400: #94a3b8; –color-gray-500: #64748b; –color-gray-600: #475569; –color-gray-700: #334155; –color-gray-800: #1e293b; –color-gray-900: #0f172a;/* Typographie */ –font-family: ‘Poppins’, -apple-system, BlinkMacSystemFont, ‘Segoe UI’, sans-serif;/* Espacements */ –spacing-xs: 0.25rem; –spacing-sm: 0.5rem; –spacing-md: 1rem; –spacing-lg: 1.5rem; –spacing-xl: 2rem; –spacing-2xl: 3rem;/* Bordures */ –radius-sm: 0.375rem; –radius-md: 0.5rem; –radius-lg: 0.75rem; –radius-xl: 1rem; –radius-full: 9999px;/* Ombres */ –shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05); –shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); –shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); –shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); }*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }body { font-family: var(–font-family); background: var(–color-gray-50); color: var(–color-gray-800); line-height: 1.6; -webkit-font-smoothing: antialiased; }/* Container principal */ .main-container { max-width: 1000px; margin: 0 auto; padding: var(–spacing-md); }/* Header du match */ .match-header { text-align: center; padding: var(–spacing-sm) 0; }.match-meta { display: flex; justify-content: center; align-items: center; gap: var(–spacing-sm); margin-bottom: var(–spacing-sm); flex-wrap: wrap; }.competition-badge { background: linear-gradient(135deg, var(–color-primary), var(–color-primary-dark)); color: var(–color-white); padding: var(–spacing-xs) var(–spacing-md); border-radius: var(–radius-full); font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; }.match-day { color: var(–color-gray-500); font-size: 0.875rem; }.match-title { font-size: clamp(1.25rem, 3vw, 1.75rem); font-weight: 700; color: var(–color-gray-900); margin-bottom: var(–spacing-xs); }.match-date-time { color: var(–color-gray-500); font-size: 0.9rem; }.date-text { text-transform: capitalize; }/* Scoreboard */ .scoreboard { display: grid; grid-template-columns: 1fr auto 1fr; gap: var(–spacing-sm); align-items: center; background: var(–color-white); border-radius: var(–radius-xl); padding: var(–spacing-md); box-shadow: var(–shadow-md); margin-bottom: var(–spacing-sm); }.team-block { display: flex; flex-direction: column; align-items: center; text-align: center; }.team-emblem-wrapper { width: 80px; height: 80px; display: flex; align-items: center; justify-content: center; margin-bottom: var(–spacing-xs); }.team-emblem { max-width: 100%; max-height: 100%; object-fit: contain; border-radius: var(–radius-md); }.team-name { font-size: 0.9rem; font-weight: 600; color: var(–color-gray-800); margin-bottom: 0; }.team-form-dots { display: flex; justify-content: center; gap: 4px; margin-top: var(–spacing-xs); }.form-dot { width: 10px; height: 10px; border-radius: var(–radius-full); }.form-dot-win { background-color: var(–color-success); } .form-dot-draw { background-color: var(–color-warning); } .form-dot-loss { background-color: var(–color-danger); }.score-block { display: flex; flex-direction: column; align-items: center; min-width: 140px; }.score-display { display: flex; align-items: center; gap: var(–spacing-sm); }.score-value { font-size: 2rem; font-weight: 700; color: var(–color-gray-900); min-width: 45px; text-align: center; }.score-live { color: var(–color-danger); }.score-separator { font-size: 1.5rem; font-weight: 300; color: var(–color-gray-400); }.match-period { font-size: 0.75rem; color: var(–color-gray-500); margin-top: var(–spacing-xs); }.match-status-badge { display: inline-flex; align-items: center; padding: var(–spacing-xs) var(–spacing-sm); border-radius: var(–radius-full); font-size: 0.7rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; margin-top: var(–spacing-sm); }.status-live { background-color: var(–color-danger); color: var(–color-white); animation: pulse 2s infinite; }.status-finished { background-color: var(–color-gray-200); color: var(–color-gray-600); }.status-upcoming { background-color: var(–color-accent); color: var(–color-white); }@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } }.match-kickoff { text-align: center; }.kickoff-time { font-size: 2rem; font-weight: 700; color: var(–color-primary); }/* Match summary stats */ .match-summary { margin-bottom: var(–spacing-sm); }.summary-table { width: 100%; background: var(–color-white); border-radius: var(–radius-md); overflow: hidden; box-shadow: var(–shadow-sm); }.summary-table tr { display: grid; grid-template-columns: 60px 1fr 60px; border-bottom: 1px solid var(–color-gray-100); align-items: center; }.summary-table tr:last-child { border-bottom: none; }.summary-table td { padding: 4px var(–spacing-sm); border: none; }.summary-table .stat-value { font-weight: 600; font-size: 0.8rem; }.summary-table .stat-local { text-align: center; color: var(–color-primary); }.summary-table .stat-visitor { text-align: center; color: var(–color-danger); }.summary-table .stat-label { text-align: center; color: var(–color-gray-500); font-size: 0.7rem; }/* Radio section */ .radio-section { display: flex; flex-wrap: wrap; justify-content: center; gap: var(–spacing-sm); margin-bottom: var(–spacing-lg); }.radio-btn { display: inline-flex; align-items: center; gap: var(–spacing-xs); padding: var(–spacing-sm) var(–spacing-lg); background: linear-gradient(135deg, var(–color-danger), #c1121f); color: var(–color-white); border: none; border-radius: var(–radius-full); font-family: var(–font-family); font-size: 0.875rem; font-weight: 500; cursor: pointer; transition: transform 0.2s, box-shadow 0.2s; }.radio-btn:hover { transform: translateY(-2px); box-shadow: var(–shadow-md); }/* Video sections */ .video-section { display: flex; justify-content: center; margin-bottom: var(–spacing-lg); border-radius: var(–radius-lg); overflow: hidden; }.video-section iframe { width: 100%; max-width: 700px; aspect-ratio: 16/9; border: none; border-radius: var(–radius-lg); }/* Chart section */ .chart-section { background: var(–color-white); border-radius: var(–radius-md); padding: var(–spacing-sm) var(–spacing-md); margin-bottom: var(–spacing-md); box-shadow: var(–shadow-sm); }#myChart { max-height: 180px; }/* Tabs */ .tabs-nav { display: flex; background: var(–color-white); border-radius: var(–radius-lg); padding: var(–spacing-xs); gap: var(–spacing-xs); margin-bottom: var(–spacing-lg); box-shadow: var(–shadow-sm); }.tab-btn { flex: 1; padding: var(–spacing-sm) var(–spacing-md); background: transparent; border: none; border-radius: var(–radius-md); font-family: var(–font-family); font-size: 0.875rem; font-weight: 500; color: var(–color-gray-600); cursor: pointer; transition: all 0.2s; }.tab-btn:hover { background: var(–color-gray-100); }.tab-btn.active { background: linear-gradient(135deg, var(–color-primary), var(–color-primary-dark)); color: var(–color-white); }.tab-panels { min-height: 200px; }.tab-panel { display: none; }.tab-panel.active { display: block; }/* Timeline */ .timeline { list-style: none; position: relative; padding: var(–spacing-lg) 0; }.timeline::before { content:  »; position: absolute; left: 50%; top: 0; bottom: 0; width: 2px; background: var(–color-gray-200); transform: translateX(-50%); }.timeline-item { position: relative; width: 50%; padding: var(–spacing-md); margin-bottom: var(–spacing-md); }.timeline-item.timeline-local { padding-right: calc(var(–spacing-xl) + 25px); text-align: right; }.timeline-item.timeline-visitor { margin-left: 50%; padding-left: calc(var(–spacing-xl) + 25px); text-align: left; }.timeline-marker { position: absolute; top: 50%; width: 40px; height: 40px; transform: translateY(-50%); background: var(–color-white); border-radius: var(–radius-full); display: flex; align-items: center; justify-content: center; box-shadow: var(–shadow-md); z-index: 1; }.timeline-item.timeline-local .timeline-marker { right: -20px; }.timeline-item.timeline-visitor .timeline-marker { left: -20px; }.timeline-icon { width: 28px; height: 28px; object-fit: contain; }.timeline-card { background: var(–color-white); border-radius: var(–radius-lg); padding: var(–spacing-md); box-shadow: var(–shadow-sm); display: inline-flex; flex-direction: column; align-items: center; min-width: 180px; }.timeline-time { font-size: 0.75rem; font-weight: 600; color: var(–color-primary); background: var(–color-gray-100); padding: 2px 8px; border-radius: var(–radius-full); margin-bottom: var(–spacing-xs); }.timeline-team-logo { width: 36px; height: 36px; object-fit: contain; margin-bottom: var(–spacing-xs); }.timeline-action-title { font-size: 0.9rem; font-weight: 600; color: var(–color-gray-800); }.timeline-player { font-size: 0.8rem; color: var(–color-gray-600); margin-top: 2px; }.timeline-player-secondary { color: var(–color-gray-400); }/* Timeline comments */ .timeline-comment { width: 100%; display: flex; justify-content: center; left: 0 !important; margin-left: 0 !important; padding: var(–spacing-md) !important; }.timeline-card-comment, .timeline-card-tweet { max-width: 500px; width: 100%; text-align: center; }.timeline-card-header { display: flex; align-items: center; justify-content: space-between; padding: var(–spacing-sm) var(–spacing-md); background: linear-gradient(135deg, var(–color-primary), var(–color-primary-dark)); border-radius: var(–radius-lg) var(–radius-lg) 0 0; margin: calc(-1 * var(–spacing-md)); margin-bottom: var(–spacing-md); width: calc(100% + 2 * var(–spacing-md)); }.timeline-card-header-tweet { background: linear-gradient(135deg, #1da1f2, #0d8bd9); }.timeline-card-header .timeline-time { background: rgba(255, 255, 255, 0.2); color: var(–color-white); }.comment-logo, .tweet-logo { width: 28px; height: 28px; border-radius: var(–radius-full); }.timeline-card-text { font-size: 0.95rem; color: var(–color-gray-700); line-height: 1.5; }.tweet-embed { margin-top: var(–spacing-md); }.tweet-fallback { padding: var(–spacing-md); background: var(–color-gray-50); border-radius: var(–radius-md); }.tweet-fallback a { color: var(–color-accent); text-decoration: none; }/* Composition table */ .composition-grid { max-width: 700px; margin: 0 auto; }.composition-table { width: 100%; background: var(–color-white); border-radius: var(–radius-lg); overflow: hidden; box-shadow: var(–shadow-sm); border-collapse: collapse; table-layout: fixed; }.composition-table thead th { background: linear-gradient(135deg, var(–color-primary), var(–color-primary-dark)); color: var(–color-white); padding: var(–spacing-sm) var(–spacing-md); font-weight: 600; font-size: 0.85rem; width: 50%; text-align: center; }.composition-table tbody td { padding: var(–spacing-sm) var(–spacing-md); border-bottom: 1px solid var(–color-gray-100); vertical-align: middle; }.composition-table tbody td .player-wrapper { display: inline-flex; align-items: center; text-align: left; }.composition-table tbody tr:nth-child(odd) { background: var(–color-gray-50); }.composition-table tbody tr:hover { background: var(–color-gray-100); }/* Les deux colonnes : texte aligné à gauche, centré dans l’espace */ .composition-table tbody td:first-child, .composition-table tbody td:last-child { text-align: left; padding-left: 15%; }.player-number { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; background: var(–color-primary); color: var(–color-white); border-radius: var(–radius-sm); font-size: 0.7rem; font-weight: 600; margin-right: var(–spacing-xs); }.player-name { font-weight: 500; font-size: 0.85rem; }.captain-badge { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; background: var(–color-warning); color: var(–color-gray-900); border-radius: var(–radius-full); font-size: 0.65rem; font-weight: 700; margin-left: var(–spacing-xs); }/* Stats table (Face à Face) */ .stats-table { width: 100%; background: var(–color-white); border-radius: var(–radius-lg); overflow: hidden; box-shadow: var(–shadow-sm); border-collapse: collapse; table-layout: fixed; }.stats-table thead th { background: linear-gradient(135deg, var(–color-primary), var(–color-primary-dark)); color: var(–color-white); padding: var(–spacing-sm); font-weight: 600; font-size: 0.75rem; word-wrap: break-word; }.stats-table thead th:first-child, .stats-table thead th:last-child { width: 25%; }.stats-table thead th:nth-child(2) { width: 50%; }.stats-table tbody td { padding: var(–spacing-xs) var(–spacing-sm); border-bottom: 1px solid var(–color-gray-100); text-align: center; font-size: 0.8rem; vertical-align: middle; word-wrap: break-word; }.stats-table tbody tr:nth-child(odd) { background: var(–color-gray-50); }.stats-table .stat-label { font-weight: 500; color: var(–color-gray-600); font-size: 0.7rem; line-height: 1.2; }.form-badge { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; border-radius: var(–radius-sm); font-size: 0.65rem; font-weight: 700; margin: 1px; }.form-win { background: var(–color-success); color: var(–color-white); }.form-draw { background: var(–color-warning); color: var(–color-gray-900); }.form-loss { background: var(–color-danger); color: var(–color-white); }/* Content display */ .content-display { margin-top: var(–spacing-lg); }/* Radio player */ .radio-player { position: fixed; bottom: var(–spacing-lg); right: var(–spacing-lg); width: 320px; background: var(–color-gray-900); border-radius: var(–radius-lg); padding: var(–spacing-md); box-shadow: var(–shadow-xl); z-index: 1000; flex-direction: column; gap: var(–spacing-sm); }.radio-player-close { position: absolute; top: var(–spacing-sm); right: var(–spacing-sm); background: transparent; border: none; color: var(–color-gray-400); font-size: 1.5rem; cursor: pointer; line-height: 1; padding: 0; width: 24px; height: 24px; }.radio-player-close:hover { color: var(–color-white); }.radio-player-info { display: flex; align-items: center; gap: var(–spacing-sm); }.radio-player-logo { width: 48px; height: 48px; border-radius: var(–radius-md); object-fit: cover; }.radio-player-details { flex: 1; }.radio-player-status { font-size: 0.7rem; color: var(–color-danger); text-transform: uppercase; font-weight: 600; letter-spacing: 0.05em; }.radio-player-title { font-size: 0.95rem; font-weight: 600; color: var(–color-white); margin: 0; }.radio-player audio { width: 100%; height: 36px; }/* Responsive */ @media (max-width: 768px) { .scoreboard { display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: space-between; align-items: center; gap: var(–spacing-xs); padding: var(–spacing-sm); }.team-block { flex: 1; min-width: 0; }.team-local { order: 1; } .score-block { order: 2; } .team-visitor { order: 3; }.score-block { flex: 0 0 auto; min-width: 80px; }.team-emblem-wrapper { width: 60px; height: 60px; }.team-name { font-size: 0.8rem; }.score-value { font-size: 1.75rem; }/* Summary table mobile */ .summary-table tr { grid-template-columns: 45px 1fr 45px; }.summary-table td { padding: 3px var(–spacing-xs); }.summary-table .stat-value { font-size: 0.7rem; }.summary-table .stat-label { font-size: 0.6rem; }/* Chart mobile */ .chart-section { max-width: 100%; padding: var(–spacing-sm); }#myChart { max-height: 150px; }/* Timeline mobile */ .timeline::before { left: 20px; }.timeline-item, .timeline-item.timeline-local, .timeline-item.timeline-visitor { width: 100%; padding-left: 60px; padding-right: var(–spacing-md); text-align: left; margin-left: 0; }.timeline-marker, .timeline-item.timeline-local .timeline-marker, .timeline-item.timeline-visitor .timeline-marker { left: 0; right: auto; }.timeline-card { width: 100%; align-items: flex-start; }.timeline-comment { padding-left: var(–spacing-md) !important; }.timeline-comment .timeline-card { align-items: center; }/* Tabs mobile */ .tabs-nav { flex-direction: row; }.tab-btn { font-size: 0.75rem; padding: var(–spacing-sm) var(–spacing-xs); }/* Radio player mobile */ .radio-player { bottom: var(–spacing-md); right: var(–spacing-md); left: var(–spacing-md); width: auto; }/* Composition table mobile */ .composition-grid { max-width: 100%; }.composition-table { font-size: 0.75rem; }.composition-table thead th { padding: var(–spacing-xs) var(–spacing-sm); font-size: 0.7rem; }.composition-table tbody td { padding: var(–spacing-xs) var(–spacing-sm); }.composition-table tbody td:first-child, .composition-table tbody td:last-child { padding-left: 10%; }.player-number { width: 18px; height: 18px; font-size: 0.6rem; margin-right: 2px; }.player-name { font-size: 0.7rem; }.captain-badge { width: 14px; height: 14px; font-size: 0.55rem; }/* Stats table (Face à Face) mobile */ .stats-table { font-size: 0.7rem; }.stats-table thead th { padding: var(–spacing-xs); font-size: 0.6rem; line-height: 1.2; }.stats-table thead th:first-child, .stats-table thead th:last-child { width: 22%; }.stats-table thead th:nth-child(2) { width: 56%; }.stats-table tbody td { padding: var(–spacing-xs) 2px; font-size: 0.65rem; }.stats-table .stat-label { font-size: 0.6rem; }.form-badge { width: 14px; height: 14px; font-size: 0.5rem; margin: 0; } /* Score fixe en haut + lisibilité pendant le direct (mobile uniquement, 15/09/2026) */ .match-title { display: none; }.scoreboard { position: sticky; top: 0; z-index: 100; display: flex; align-items: stretch; grid-template-columns: unset; border-radius: 0; padding: 0; margin: 0 0 var(–spacing-sm); overflow: hidden; }.team-block { flex: 1; flex-direction: row; align-items: center; gap: var(–spacing-xs); padding: var(–spacing-xs) var(–spacing-sm); min-width: 0; }.team-block.team-local { background: var(–color-gray-900); justify-content: flex-start; }.team-block.team-visitor { background: var(–color-danger); justify-content: flex-end; flex-direction: row-reverse; }.team-block .team-emblem-wrapper { width: 24px; height: 24px; margin-bottom: 0; flex-shrink: 0; }.team-block .team-name { color: var(–color-white); font-size: 0.8rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }.team-block .team-form-dots { display: none; }.score-block { min-width: auto; padding: var(–spacing-xs) var(–spacing-sm); background: var(–color-gray-800); flex-shrink: 0; }.score-value { font-size: 1.3rem; }.match-period, .match-status-badge { font-size: 0.6rem; } }@media (max-width: 480px) { .main-container { padding: var(–spacing-xs); }.match-header { padding: var(–spacing-sm) 0; }.match-title { font-size: 0.9rem; }.match-meta { gap: var(–spacing-xs); }.competition-badge { font-size: 0.6rem; padding: 2px var(–spacing-sm); }.match-day { font-size: 0.7rem; }.match-date-time { font-size: 0.75rem; }.scoreboard { padding: var(–spacing-xs); gap: var(–spacing-xs); }.team-emblem-wrapper { width: 45px; height: 45px; }.team-name { font-size: 0.65rem; }.form-dot { width: 5px; height: 5px; }.score-block { min-width: 60px; }.score-value { font-size: 1.25rem; min-width: 30px; }.score-separator { font-size: 1rem; }.match-status-badge { font-size: 0.6rem; padding: 2px 6px; }.kickoff-time { font-size: 1.25rem; }/* Summary even smaller */ .summary-table tr { grid-template-columns: 35px 1fr 35px; }.summary-table td { padding: 2px var(–spacing-xs); }.summary-table .stat-value { font-size: 0.65rem; }.summary-table .stat-label { font-size: 0.55rem; }/* Timeline smaller */ .timeline-item, .timeline-item.timeline-local, .timeline-item.timeline-visitor { padding-left: 50px; padding-right: var(–spacing-xs); }.timeline-marker { width: 32px; height: 32px; }.timeline-icon { width: 22px; height: 22px; }.timeline-card { padding: var(–spacing-xs); }.timeline-time { font-size: 0.65rem; padding: 1px 6px; }.timeline-team-logo { width: 28px; height: 28px; }.timeline-action-title { font-size: 0.75rem; }.timeline-player { font-size: 0.7rem; }/* Tables even smaller */ .stats-table thead th { font-size: 0.55rem; padding: 4px 2px; }.stats-table tbody td { font-size: 0.6rem; padding: 4px 2px; }.stats-table .stat-label { font-size: 0.55rem; }.form-badge { width: 12px; height: 12px; font-size: 0.45rem; }.composition-table thead th { font-size: 0.6rem; }.composition-table tbody td { padding: 4px 2px; }.player-number { width: 16px; height: 16px; font-size: 0.55rem; }.player-name { font-size: 0.65rem; }.captain-badge { width: 12px; height: 12px; font-size: 0.5rem; }/* Radio button smaller */ .radio-btn { font-size: 0.75rem; padding: var(–spacing-xs) var(–spacing-md); } }/* Hide elements */ .entry-title { display: none; }



    live en direct

    live en direct sur Vibrez Rugby. Pronostics, face-à-face, compositions, statistiques : tout savoir avant le direct. Accédez ensuite à notre radio live et/ou à notre score live commenté en temps réel pour ne rien manquer de l’action.

    Comment suivre live en direct ?

    Plusieurs options s’offrent à vous pour vivre cette rencontre comme si vous y étiez. Choisissez celle qui vous convient le mieux en fonction de votre situation.

    À la radio ou en score live commenté

    Si vous ne pouvez pas regarder le match, écoutez live en direct à la radio ou suivez notre score live. Chaque action clé, essai, pénalité et carton est mis à jour instantanément pour vous offrir une expérience immersive.

    Sur quelle chaîne TV ?

    Pour connaître l’heure et la chaîne de diffusion TV de live en direct, consultez notre programme TV complet, mis à jour quotidiennement avec les informations des diffuseurs officiels (Top 14, Pro D2, Coupe d’Europe, etc.).

    Vibrez Rugby : Votre référence pour le rugby en direct

    Notre plateforme vous donne accès à un large éventail de compétitions, chaque week-end. Plongez au cœur de l’action en un seul clic !

    Toutes vos compétitions préférées

    • XV de France (Masculin, Féminin, U20)
    • Coupes d’Europe
    • Top 14, Pro D2, Nationale, et Fédérales 1 à 3
    • Rugby à 7 (Sevens), Élite 1 et 2

    Ne ratez rien de live en direct : suivez le score en live, écoutez le match à la radio et vibrez au rythme des plus grandes rencontres de rugby.