Spaces:
Running
Running
<html lang="fr"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>PronoFoot Gratuit - Pronostics Score Exact Fiables</title> | |
<script src="https://cdn.tailwindcss.com"></script> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> | |
<style> | |
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap'); | |
body { | |
font-family: 'Poppins', sans-serif; | |
background-color: #f5f7fa; | |
} | |
.gradient-bg { | |
background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 100%); | |
} | |
.prediction-card { | |
transition: all 0.3s ease; | |
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); | |
} | |
.prediction-card:hover { | |
transform: translateY(-5px); | |
box-shadow: 0 10px 15px rgba(0, 0, 0, 0.1); | |
} | |
.badge-accuracy { | |
position: absolute; | |
top: -10px; | |
right: -10px; | |
} | |
.stats-card { | |
background: rgba(255, 255, 255, 0.1); | |
backdrop-filter: blur(10px); | |
} | |
.tabs button.active { | |
border-bottom: 3px solid #3b82f6; | |
color: #3b82f6; | |
font-weight: 600; | |
} | |
.fixture-card { | |
border-left: 4px solid #3b82f6; | |
} | |
.loading-spinner { | |
animation: spin 1s linear infinite; | |
} | |
@keyframes spin { | |
0% { transform: rotate(0deg); } | |
100% { transform: rotate(360deg); } | |
} | |
.tooltip { | |
position: relative; | |
display: inline-block; | |
} | |
.tooltip .tooltiptext { | |
visibility: hidden; | |
width: 200px; | |
background-color: #333; | |
color: #fff; | |
text-align: center; | |
border-radius: 6px; | |
padding: 5px; | |
position: absolute; | |
z-index: 1; | |
bottom: 125%; | |
left: 50%; | |
margin-left: -100px; | |
opacity: 0; | |
transition: opacity 0.3s; | |
} | |
.tooltip:hover .tooltiptext { | |
visibility: visible; | |
opacity: 1; | |
} | |
.calendar-day { | |
transition: all 0.2s ease; | |
} | |
.calendar-day:hover { | |
background-color: #3b82f6; | |
color: white; | |
} | |
.calendar-day.active { | |
background-color: #3b82f6; | |
color: white; | |
} | |
.match-time { | |
font-size: 0.8rem; | |
color: #6b7280; | |
} | |
</style> | |
</head> | |
<body> | |
<!-- Header --> | |
<header class="gradient-bg text-white shadow-lg"> | |
<div class="container mx-auto px-4 py-6"> | |
<div class="flex justify-between items-center"> | |
<div class="flex items-center space-x-2"> | |
<i class="fas fa-futbol text-2xl"></i> | |
<h1 class="text-2xl font-bold">PronoFoot Gratuit</h1> | |
</div> | |
<div class="flex items-center space-x-4"> | |
<button class="bg-blue-500 hover:bg-blue-600 px-4 py-2 rounded-full font-medium flex items-center"> | |
<i class="fas fa-bell mr-2"></i> Alertes | |
</button> | |
</div> | |
</div> | |
<div class="mt-8 text-center"> | |
<h2 class="text-4xl font-bold mb-4">Pronostics Score Exact Gratuits</h2> | |
<p class="text-xl max-w-2xl mx-auto">Découvrez nos prédictions fiables et nos conseils de paris chaque jour</p> | |
</div> | |
</div> | |
</header> | |
<!-- Calendar Section --> | |
<section class="bg-white py-6 shadow-sm"> | |
<div class="container mx-auto px-4"> | |
<div class="flex justify-between items-center mb-4"> | |
<button id="prev-month" class="text-blue-600 hover:text-blue-800 p-2 rounded-full"> | |
<i class="fas fa-chevron-left"></i> | |
</button> | |
<h3 id="current-month" class="text-xl font-bold text-gray-800">Octobre 2023</h3> | |
<button id="next-month" class="text-blue-600 hover:text-blue-800 p-2 rounded-full"> | |
<i class="fas fa-chevron-right"></i> | |
</button> | |
</div> | |
<div class="grid grid-cols-7 gap-2 text-center mb-2"> | |
<div class="text-sm font-medium text-gray-500">Lun</div> | |
<div class="text-sm font-medium text-gray-500">Mar</div> | |
<div class="text-sm font-medium text-gray-500">Mer</div> | |
<div class="text-sm font-medium text-gray-500">Jeu</div> | |
<div class="text-sm font-medium text-gray-500">Ven</div> | |
<div class="text-sm font-medium text-gray-500">Sam</div> | |
<div class="text-sm font-medium text-gray-500">Dim</div> | |
</div> | |
<div id="calendar-days" class="grid grid-cols-7 gap-2 text-center"> | |
<!-- Calendar days will be generated by JavaScript --> | |
</div> | |
</div> | |
</section> | |
<!-- Stats Section --> | |
<section class="bg-gray-100 py-12"> | |
<div class="container mx-auto px-4"> | |
<div class="grid grid-cols-1 md:grid-cols-4 gap-6"> | |
<div class="stats-card bg-white rounded-xl p-6 text-center relative overflow-hidden"> | |
<div class="text-4xl font-bold text-blue-600 mb-2">82%</div> | |
<div class="text-gray-600 font-medium">Précision moyenne</div> | |
<div class="absolute -bottom-4 -right-4 opacity-20"> | |
<i class="fas fa-check-circle text-6xl text-blue-500"></i> | |
</div> | |
</div> | |
<div class="stats-card bg-white rounded-xl p-6 text-center relative overflow-hidden"> | |
<div class="text-4xl font-bold text-green-600 mb-2">18/22</div> | |
<div class="text-gray-600 font-medium">Derniers scores exacts</div> | |
<div class="absolute -bottom-4 -right-4 opacity-20"> | |
<i class="fas fa-bullseye text-6xl text-green-500"></i> | |
</div> | |
</div> | |
<div class="stats-card bg-white rounded-xl p-6 text-center relative overflow-hidden"> | |
<div class="text-4xl font-bold text-purple-600 mb-2">4.8x</div> | |
<div class="text-gray-600 font-medium">Rendement moyen</div> | |
<div class="absolute -bottom-4 -right-4 opacity-20"> | |
<i class="fas fa-coins text-6xl text-purple-500"></i> | |
</div> | |
</div> | |
<div class="stats-card bg-white rounded-xl p-6 text-center relative overflow-hidden"> | |
<div class="text-4xl font-bold text-red-600 mb-2">100%</div> | |
<div class="text-gray-600 font-medium">Gratuit</div> | |
<div class="absolute -bottom-4 -right-4 opacity-20"> | |
<i class="fas fa-gift text-6xl text-red-500"></i> | |
</div> | |
</div> | |
</div> | |
</div> | |
</section> | |
<!-- Main Content --> | |
<main class="container mx-auto px-4 py-12"> | |
<div class="flex flex-col md:flex-row gap-8"> | |
<!-- Left Column --> | |
<div class="md:w-2/3"> | |
<div class="bg-white rounded-xl shadow-md overflow-hidden mb-8"> | |
<div class="p-6 border-b border-gray-200"> | |
<h3 class="text-xl font-bold text-gray-800">Pronostics du <span id="selected-date">Aujourd'hui</span></h3> | |
<p class="text-gray-600">Matchs sélectionnés avec analyses approfondies</p> | |
</div> | |
<!-- Tabs --> | |
<div class="tabs flex border-b border-gray-200 px-6"> | |
<button class="tab-button active py-4 px-6" data-tab="all">Tous les matchs</button> | |
<button class="tab-button py-4 px-6" data-tab="top">Top pronostics</button> | |
<button class="tab-button py-4 px-6" data-tab="value">Valeur sûre</button> | |
</div> | |
<!-- Tab Content --> | |
<div class="p-6"> | |
<div class="tab-content active" id="all-tab"> | |
<div id="predictions-container"> | |
<div class="text-center py-8"> | |
<div class="loading-spinner inline-block w-8 h-8 border-4 border-blue-500 border-t-transparent rounded-full"></div> | |
<p class="mt-2 text-gray-600">Chargement des pronostics...</p> | |
</div> | |
</div> | |
</div> | |
<div class="tab-content hidden" id="top-tab"> | |
<div id="top-predictions-container"> | |
<!-- Top predictions will be loaded here --> | |
</div> | |
</div> | |
<div class="tab-content hidden" id="value-tab"> | |
<div id="safe-predictions-container"> | |
<!-- Safe predictions will be loaded here --> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- Betting Tips --> | |
<div class="bg-white rounded-xl shadow-md overflow-hidden"> | |
<div class="p-6 border-b border-gray-200"> | |
<h3 class="text-xl font-bold text-gray-800">Conseils de Paris du Jour</h3> | |
</div> | |
<div class="p-6"> | |
<div class="grid grid-cols-1 md:grid-cols-2 gap-6"> | |
<div class="bg-blue-50 rounded-lg p-6"> | |
<div class="flex items-center mb-4"> | |
<div class="bg-blue-100 p-3 rounded-full mr-4"> | |
<i class="fas fa-lightbulb text-blue-600 text-xl"></i> | |
</div> | |
<h4 class="font-bold text-lg">Stratégie du jour</h4> | |
</div> | |
<p class="text-gray-700"> | |
Aujourd'hui, nous recommandons de miser sur les matchs avec des cotes entre 2.00 et 3.50. | |
Nos analyses montrent une forte probabilité de succès dans cette fourchette. | |
</p> | |
</div> | |
<div class="bg-green-50 rounded-lg p-6"> | |
<div class="flex items-center mb-4"> | |
<div class="bg-green-100 p-3 rounded-full mr-4"> | |
<i class="fas fa-chart-pie text-green-600 text-xl"></i> | |
</div> | |
<h4 class="font-bold text-lg">Gestion de bankroll</h4> | |
</div> | |
<p class="text-gray-700"> | |
Ne misez jamais plus de 5% de votre bankroll sur un seul match. Pour les paris combinés, | |
limitez-vous à 2% pour minimiser les risques. | |
</p> | |
</div> | |
<div class="bg-purple-50 rounded-lg p-6"> | |
<div class="flex items-center mb-4"> | |
<div class="bg-purple-100 p-3 rounded-full mr-4"> | |
<i class="fas fa-exclamation-triangle text-purple-600 text-xl"></i> | |
</div> | |
<h4 class="font-bold text-lg">À éviter</h4> | |
</div> | |
<p class="text-gray-700"> | |
Évitez les matchs des équipes en bas de classement avec des blessures importantes. | |
Les cotes peuvent être attractives mais le risque est trop élevé. | |
</p> | |
</div> | |
<div class="bg-yellow-50 rounded-lg p-6"> | |
<div class="flex items-center mb-4"> | |
<div class="bg-yellow-100 p-3 rounded-full mr-4"> | |
<i class="fas fa-trophy text-yellow-600 text-xl"></i> | |
</div> | |
<h4 class="font-bold text-lg">Match phare</h4> | |
</div> | |
<p class="text-gray-700"> | |
Le match entre Paris SG et Marseille présente une excellente opportunité avec une cote | |
intéressante pour le score exact 2-1. Nos algorithmes donnent 68% de probabilité. | |
</p> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- Right Column --> | |
<div class="md:w-1/3"> | |
<!-- Last Results --> | |
<div class="bg-white rounded-xl shadow-md overflow-hidden mb-8"> | |
<div class="p-6 border-b border-gray-200"> | |
<h3 class="text-xl font-bold text-gray-800">Derniers Résultats</h3> | |
<p class="text-gray-600">Vérifiez notre précision</p> | |
</div> | |
<div class="p-6"> | |
<div class="space-y-4"> | |
<div class="fixture-card bg-gray-50 p-4 rounded-lg"> | |
<div class="flex justify-between items-center mb-2"> | |
<span class="font-medium">Lyon</span> | |
<span class="bg-green-100 text-green-800 text-xs font-medium px-2 py-0.5 rounded">Validé</span> | |
</div> | |
<div class="text-center my-2"> | |
<div class="inline-flex items-center bg-white px-3 py-1 rounded-full shadow-sm"> | |
<span class="font-bold text-lg">1 - 2</span> | |
</div> | |
</div> | |
<div class="font-medium">Marseille</div> | |
<div class="text-xs text-gray-500 mt-2">Prédit: 1-2 (Cote: 7.50)</div> | |
</div> | |
<div class="fixture-card bg-gray-50 p-4 rounded-lg"> | |
<div class="flex justify-between items-center mb-2"> | |
<span class="font-medium">Lille</span> | |
<span class="bg-green-100 text-green-800 text-xs font-medium px-2 py-0.5 rounded">Validé</span> | |
</div> | |
<div class="text-center my-2"> | |
<div class="inline-flex items-center bg-white px-3 py-1 rounded-full shadow-sm"> | |
<span class="font-bold text-lg">2 - 0</span> | |
</div> | |
</div> | |
<div class="font-medium">Monaco</div> | |
<div class="text-xs text-gray-500 mt-2">Prédit: 2-0 (Cote: 8.00)</div> | |
</div> | |
<div class="fixture-card bg-gray-50 p-4 rounded-lg"> | |
<div class="flex justify-between items-center mb-2"> | |
<span class="font-medium">Rennes</span> | |
<span class="bg-red-100 text-red-800 text-xs font-medium px-2 py-0.5 rounded">Raté</span> | |
</div> | |
<div class="text-center my-2"> | |
<div class="inline-flex items-center bg-white px-3 py-1 rounded-full shadow-sm"> | |
<span class="font-bold text-lg">1 - 1</span> | |
</div> | |
</div> | |
<div class="font-medium">Nice</div> | |
<div class="text-xs text-gray-500 mt-2">Prédit: 2-1 (Cote: 7.00)</div> | |
</div> | |
<div class="fixture-card bg-gray-50 p-4 rounded-lg"> | |
<div class="flex justify-between items-center mb-2"> | |
<span class="font-medium">Toulouse</span> | |
<span class="bg-green-100 text-green-800 text-xs font-medium px-2 py-0.5 rounded">Validé</span> | |
</div> | |
<div class="text-center my-2"> | |
<div class="inline-flex items-center bg-white px-3 py-1 rounded-full shadow-sm"> | |
<span class="font-bold text-lg">0 - 0</span> | |
</div> | |
</div> | |
<div class="font-medium">Reims</div> | |
<div class="text-xs text-gray-500 mt-2">Prédit: 0-0 (Cote: 6.50)</div> | |
</div> | |
</div> | |
<button class="w-full mt-4 bg-gray-100 hover:bg-gray-200 text-gray-800 font-medium py-2 px-4 rounded-lg"> | |
Voir tous les résultats | |
</button> | |
</div> | |
</div> | |
<!-- Upcoming Matches --> | |
<div class="bg-white rounded-xl shadow-md overflow-hidden"> | |
<div class="p-6 border-b border-gray-200"> | |
<h3 class="text-xl font-bold text-gray-800">Prochains Matchs</h3> | |
<p class="text-gray-600">À venir dans les 7 jours</p> | |
</div> | |
<div class="p-6"> | |
<div class="space-y-4"> | |
<div class="border-b border-gray-200 pb-4"> | |
<div class="text-sm text-blue-600 font-medium mb-1">Ligue 1 - 28 Oct</div> | |
<div class="flex justify-between items-center"> | |
<span class="font-medium">Paris SG</span> | |
<span class="match-time">20:45</span> | |
</div> | |
<div class="font-medium">Marseille</div> | |
</div> | |
<div class="border-b border-gray-200 pb-4"> | |
<div class="text-sm text-blue-600 font-medium mb-1">Premier League - 29 Oct</div> | |
<div class="flex justify-between items-center"> | |
<span class="font-medium">Arsenal</span> | |
<span class="match-time">17:30</span> | |
</div> | |
<div class="font-medium">Tottenham</div> | |
</div> | |
<div class="border-b border-gray-200 pb-4"> | |
<div class="text-sm text-blue-600 font-medium mb-1">La Liga - 30 Oct</div> | |
<div class="flex justify-between items-center"> | |
<span class="font-medium">Barcelone</span> | |
<span class="match-time">21:00</span> | |
</div> | |
<div class="font-medium">Sevilla</div> | |
</div> | |
<div class="border-b border-gray-200 pb-4"> | |
<div class="text-sm text-blue-600 font-medium mb-1">Serie A - 31 Oct</div> | |
<div class="flex justify-between items-center"> | |
<span class="font-medium">Inter Milan</span> | |
<span class="match-time">20:45</span> | |
</div> | |
<div class="font-medium">Juventus</div> | |
</div> | |
<div class="pt-2"> | |
<div class="text-sm text-blue-600 font-medium mb-1">Ligue 1 - 1 Nov</div> | |
<div class="flex justify-between items-center"> | |
<span class="font-medium">Lyon</span> | |
<span class="match-time">19:00</span> | |
</div> | |
<div class="font-medium">Lens</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</main> | |
<!-- Footer --> | |
<footer class="bg-gray-900 text-white py-12"> | |
<div class="container mx-auto px-4"> | |
<div class="grid grid-cols-1 md:grid-cols-4 gap-8"> | |
<div> | |
<h4 class="text-lg font-bold mb-4 flex items-center"> | |
<i class="fas fa-futbol mr-2"></i> PronoFoot Gratuit | |
</h4> | |
<p class="text-gray-400"> | |
La référence des pronostics football gratuits. Notre équipe d'experts vous fournit les meilleures analyses pour vos paris sportifs. | |
</p> | |
</div> | |
<div> | |
<h4 class="text-lg font-bold mb-4">Liens Utiles</h4> | |
<ul class="space-y-2"> | |
<li><a href="#" class="text-gray-400 hover:text-white">Accueil</a></li> | |
<li><a href="#" class="text-gray-400 hover:text-white">Pronostics</a></li> | |
<li><a href="#" class="text-gray-400 hover:text-white">Résultats</a></li> | |
<li><a href="#" class="text-gray-400 hover:text-white">Calendrier</a></li> | |
<li><a href="#" class="text-gray-400 hover:text-white">Contact</a></li> | |
</ul> | |
</div> | |
<div> | |
<h4 class="text-lg font-bold mb-4">Légal</h4> | |
<ul class="space-y-2"> | |
<li><a href="#" class="text-gray-400 hover:text-white">Mentions légales</a></li> | |
<li><a href="#" class="text-gray-400 hover:text-white">CGU</a></li> | |
<li><a href="#" class="text-gray-400 hover:text-white">Politique de confidentialité</a></li> | |
<li><a href="#" class="text-gray-400 hover:text-white">Responsabilité</a></li> | |
</ul> | |
</div> | |
<div> | |
<h4 class="text-lg font-bold mb-4">Contact</h4> | |
<ul class="space-y-2"> | |
<li class="flex items-center"> | |
<i class="fas fa-envelope mr-2 text-gray-400"></i> | |
<span class="text-gray-400">[email protected]</span> | |
</li> | |
<li class="flex items-center"> | |
<i class="fas fa-phone mr-2 text-gray-400"></i> | |
<span class="text-gray-400">+33 6 12 34 56 78</span> | |
</li> | |
</ul> | |
<div class="mt-4 flex space-x-4"> | |
<a href="#" class="text-gray-400 hover:text-white"> | |
<i class="fab fa-facebook-f"></i> | |
</a> | |
<a href="#" class="text-gray-400 hover:text-white"> | |
<i class="fab fa-twitter"></i> | |
</a> | |
<a href="#" class="text-gray-400 hover:text-white"> | |
<i class="fab fa-telegram"></i> | |
</a> | |
</div> | |
</div> | |
</div> | |
<div class="border-t border-gray-800 mt-8 pt-8 text-center text-gray-500"> | |
<p>© 2023 PronoFoot Gratuit. Tous droits réservés. | Les paris sportifs comportent des risques. Jouez avec modération.</p> | |
<p class="mt-2 text-sm">Ce site est 100% gratuit et indépendant des opérateurs de paris.</p> | |
</div> | |
</div> | |
</footer> | |
<script> | |
// Set current date | |
document.addEventListener('DOMContentLoaded', function() { | |
const today = new Date(); | |
updateSelectedDate(today); | |
generateCalendar(today.getFullYear(), today.getMonth()); | |
// Tab functionality | |
const tabButtons = document.querySelectorAll('.tab-button'); | |
const tabContents = document.querySelectorAll('.tab-content'); | |
tabButtons.forEach(button => { | |
button.addEventListener('click', () => { | |
// Remove active class from all buttons and contents | |
tabButtons.forEach(btn => btn.classList.remove('active')); | |
tabContents.forEach(content => content.classList.add('hidden')); | |
// Add active class to clicked button | |
button.classList.add('active'); | |
// Show corresponding content | |
const tabId = button.getAttribute('data-tab') + '-tab'; | |
document.getElementById(tabId).classList.remove('hidden'); | |
}); | |
}); | |
// Calendar navigation | |
document.getElementById('prev-month').addEventListener('click', function() { | |
const currentMonth = document.getElementById('current-month').textContent; | |
const [month, year] = currentMonth.split(' '); | |
const months = ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"]; | |
let monthIndex = months.indexOf(month); | |
let yearNum = parseInt(year); | |
if (monthIndex === 0) { | |
monthIndex = 11; | |
yearNum--; | |
} else { | |
monthIndex--; | |
} | |
generateCalendar(yearNum, monthIndex); | |
document.getElementById('current-month').textContent = `${months[monthIndex]} ${yearNum}`; | |
}); | |
document.getElementById('next-month').addEventListener('click', function() { | |
const currentMonth = document.getElementById('current-month').textContent; | |
const [month, year] = currentMonth.split(' '); | |
const months = ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"]; | |
let monthIndex = months.indexOf(month); | |
let yearNum = parseInt(year); | |
if (monthIndex === 11) { | |
monthIndex = 0; | |
yearNum++; | |
} else { | |
monthIndex++; | |
} | |
generateCalendar(yearNum, monthIndex); | |
document.getElementById('current-month').textContent = `${months[monthIndex]} ${yearNum}`; | |
}); | |
// Load predictions | |
setTimeout(() => { | |
loadPredictions(); | |
loadTopPredictions(); | |
loadSafePredictions(); | |
}, 1500); | |
}); | |
function updateSelectedDate(date) { | |
const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }; | |
document.getElementById('selected-date').textContent = date.toLocaleDateString('fr-FR', options); | |
} | |
function generateCalendar(year, month) { | |
const calendarDays = document.getElementById('calendar-days'); | |
calendarDays.innerHTML = ''; | |
const firstDay = new Date(year, month, 1); | |
const lastDay = new Date(year, month + 1, 0); | |
const daysInMonth = lastDay.getDate(); | |
const startingDay = firstDay.getDay() === 0 ? 6 : firstDay.getDay() - 1; // Lundi = 0 | |
// Add empty cells for days before the first day of the month | |
for (let i = 0; i < startingDay; i++) { | |
const emptyDay = document.createElement('div'); | |
emptyDay.className = 'h-12'; | |
calendarDays.appendChild(emptyDay); | |
} | |
// Add days of the month | |
const today = new Date(); | |
for (let day = 1; day <= daysInMonth; day++) { | |
const dayElement = document.createElement('div'); | |
dayElement.className = 'calendar-day h-12 flex items-center justify-center rounded-full cursor-pointer'; | |
// Highlight today | |
if (day === today.getDate() && month === today.getMonth() && year === today.getFullYear()) { | |
dayElement.classList.add('active'); | |
} | |
// Mark days with matches (example: 5th, 12th, 19th, 26th) | |
if ([5, 12, 19, 26].includes(day)) { | |
dayElement.innerHTML = ` | |
<div class="text-center"> | |
<div class="font-medium">${day}</div> | |
<div class="w-1 h-1 bg-blue-500 rounded-full mx-auto mt-1"></div> | |
</div> | |
`; | |
} else { | |
dayElement.textContent = day; | |
} | |
// Add click event | |
dayElement.addEventListener('click', function() { | |
document.querySelectorAll('.calendar-day').forEach(day => day.classList.remove('active')); | |
this.classList.add('active'); | |
const selectedDate = new Date(year, month, day); | |
updateSelectedDate(selectedDate); | |
loadPredictionsForDate(selectedDate); | |
}); | |
calendarDays.appendChild(dayElement); | |
} | |
} | |
function loadPredictions() { | |
const predictions = [ | |
{ | |
league: "Ligue 1", | |
homeTeam: "Paris SG", | |
awayTeam: "Marseille", | |
prediction: "2-1", | |
confidence: 85, | |
odds: 7.50, | |
analysis: "PSG en grande forme à domicile, mais Marseille résiste bien. Score serré probable." | |
}, | |
{ | |
league: "Ligue 1", | |
homeTeam: "Lyon", | |
awayTeam: "Lens", | |
prediction: "1-0", | |
confidence: 78, | |
odds: 6.00, | |
analysis: "Lyon légèrement favori à domicile contre un Lens en difficulté à l'extérieur." | |
}, | |
{ | |
league: "Premier League", | |
homeTeam: "Arsenal", | |
awayTeam: "Tottenham", | |
prediction: "2-2", | |
confidence: 72, | |
odds: 12.00, | |
analysis: "Derby serré avec beaucoup d'enjeu. Les deux équipes marqueront probablement." | |
}, | |
{ | |
league: "La Liga", | |
homeTeam: "Barcelone", | |
awayTeam: "Sevilla", | |
prediction: "3-1", | |
confidence: 80, | |
odds: 9.00, | |
analysis: "Barca dominant à domicile, mais Sevilla peut marquer sur contre-attaque." | |
}, | |
{ | |
league: "Serie A", | |
homeTeam: "Inter Milan", | |
awayTeam: "Juventus", | |
prediction: "1-1", | |
confidence: 75, | |
odds: 5.50, | |
analysis: "Match équilibré entre deux grands clubs italiens. Partage probable." | |
} | |
]; | |
const container = document.getElementById('predictions-container'); | |
container.innerHTML = ''; | |
predictions.forEach(pred => { | |
const predictionCard = document.createElement('div'); | |
predictionCard.className = 'prediction-card bg-white rounded-lg p-6 mb-6 relative'; | |
// Confidence badge | |
let badgeColor = 'bg-green-500'; | |
if (pred.confidence < 70) badgeColor = 'bg-yellow-500'; | |
if (pred.confidence < 60) badgeColor = 'bg-red-500'; | |
predictionCard.innerHTML = ` | |
<div class="flex justify-between items-start mb-4"> | |
<div> | |
<span class="text-xs font-medium px-2 py-1 bg-gray-100 rounded">${pred.league}</span> | |
<h4 class="text-lg font-bold mt-2">${pred.homeTeam} vs ${pred.awayTeam}</h4> | |
</div> | |
<div class="text-right"> | |
<div class="text-3xl font-bold text-blue-600">${pred.prediction}</div> | |
<div class="text-sm text-gray-500">Score exact</div> | |
</div> | |
</div> | |
<div class="flex items-center justify-between mb-4"> | |
<div> | |
<span class="text-sm font-medium">Confiance:</span> | |
<div class="w-full bg-gray-200 rounded-full h-2.5 mt-1"> | |
<div class="h-2.5 rounded-full ${badgeColor}" style="width: ${pred.confidence}%"></div> | |
</div> | |
</div> | |
<div class="text-right"> | |
<span class="text-sm font-medium">Cote:</span> | |
<div class="text-lg font-bold text-green-600">${pred.odds.toFixed(2)}</div> | |
</div> | |
</div> | |
<div class="bg-blue-50 rounded-lg p-4 mb-4"> | |
<div class="flex items-center text-sm text-gray-700"> | |
<i class="fas fa-info-circle text-blue-500 mr-2"></i> | |
${pred.analysis} | |
</div> | |
</div> | |
<div class="flex justify-between items-center"> | |
<button class="text-blue-600 hover:text-blue-800 text-sm font-medium flex items-center"> | |
<i class="fas fa-chart-bar mr-1"></i> Stats détaillées | |
</button> | |
<button class="bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-full text-sm font-medium flex items-center"> | |
<i class="fas fa-bell mr-1"></i> Alerte match | |
</button> | |
</div> | |
<div class="badge-accuracy ${badgeColor} text-white text-xs font-bold px-2 py-1 rounded-full"> | |
${pred.confidence}% précision | |
</div> | |
`; | |
container.appendChild(predictionCard); | |
}); | |
} | |
function loadTopPredictions() { | |
const topPredictions = [ | |
{ | |
league: "Ligue 1", | |
homeTeam: "Paris SG", | |
awayTeam: "Marseille", | |
prediction: "2-1", | |
confidence: 85, | |
odds: 7.50, | |
analysis: "Notre meilleur pronostic du jour avec une très forte probabilité." | |
}, | |
{ | |
league: "La Liga", | |
homeTeam: "Barcelone", | |
awayTeam: "Sevilla", | |
prediction: "3-1", | |
confidence: 80, | |
odds: 9.00, | |
analysis: "Barcelone devrait dominer ce match à domicile." | |
} | |
]; | |
const container = document.getElementById('top-predictions-container'); | |
container.innerHTML = ''; | |
topPredictions.forEach(pred => { | |
const predictionCard = document.createElement('div'); | |
predictionCard.className = 'prediction-card bg-white rounded-lg p-6 mb-6 relative border-2 border-yellow-400'; | |
predictionCard.innerHTML = ` | |
<div class="flex justify-between items-start mb-4"> | |
<div> | |
<span class="text-xs font-medium px-2 py-1 bg-gray-100 rounded">${pred.league}</span> | |
<h4 class="text-lg font-bold mt-2">${pred.homeTeam} vs ${pred.awayTeam}</h4> | |
</div> | |
<div class="text-right"> | |
<div class="text-3xl font-bold text-blue-600">${pred.prediction}</div> | |
<div class="text-sm text-gray-500">TOP PRONOSTIC</div> | |
</div> | |
</div> | |
<div class="flex items-center justify-between mb-4"> | |
<div> | |
<span class="text-sm font-medium">Confiance:</span> | |
<div class="w-full bg-gray-200 rounded-full h-2.5 mt-1"> | |
<div class="h-2.5 rounded-full bg-green-500" style="width: ${pred.confidence}%"></div> | |
</div> | |
</div> | |
<div class="text-right"> | |
<span class="text-sm font-medium">Cote:</span> | |
<div class="text-lg font-bold text-green-600">${pred.odds.toFixed(2)}</div> | |
</div> | |
</div> | |
<div class="bg-blue-50 rounded-lg p-4 mb-4"> | |
<div class="flex items-center text-sm text-gray-700"> | |
<i class="fas fa-info-circle text-blue-500 mr-2"></i> | |
${pred.analysis} | |
</div> | |
</div> | |
<div class="flex justify-between items-center"> | |
<button class="text-blue-600 hover:text-blue-800 text-sm font-medium flex items-center"> | |
<i class="fas fa-chart-bar mr-1"></i> Stats détaillées | |
</button> | |
<button class="bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-full text-sm font-medium flex items-center"> | |
<i class="fas fa-bell mr-1"></i> Alerte match | |
</button> | |
</div> | |
<div class="badge-accuracy bg-green-500 text-white text-xs font-bold px-2 py-1 rounded-full"> | |
${pred.confidence}% précision | |
</div> | |
<div class="absolute top-2 left-2 text-yellow-500"> | |
<i class="fas fa-star"></i> | |
</div> | |
`; | |
container.appendChild(predictionCard); | |
}); | |
} | |
function loadSafePredictions() { | |
const safePredictions = [ | |
{ | |
league: "Ligue 1", | |
homeTeam: "Lyon", | |
awayTeam: "Lens", | |
prediction: "1-0", | |
confidence: 78, | |
odds: 6.00, | |
analysis: "Pronostic très fiable avec peu de risque. Lyon devrait l'emporter." | |
}, | |
{ | |
league: "Serie A", | |
homeTeam: "Inter Milan", | |
awayTeam: "Juventus", | |
prediction: "1-1", | |
confidence: 75, | |
odds: 5.50, | |
analysis: "Match équilibré, le nul est une valeur sûre." | |
} | |
]; | |
const container = document.getElementById('safe-predictions-container'); | |
container.innerHTML = ''; | |
safePredictions.forEach(pred => { | |
const predictionCard = document.createElement('div'); | |
predictionCard.className = 'prediction-card bg-white rounded-lg p-6 mb-6 relative border-2 border-green-400'; | |
predictionCard.innerHTML = ` | |
<div class="flex justify-between items-start mb-4"> | |
<div> | |
<span class="text-xs font-medium px-2 py-1 bg-gray-100 rounded">${pred.league}</span> | |
<h4 class="text-lg font-bold mt-2">${pred.homeTeam} vs ${pred.awayTeam}</h4> | |
</div> | |
<div class="text-right"> | |
<div class="text-3xl font-bold text-blue-600">${pred.prediction}</div> | |
<div class="text-sm text-gray-500">VALEUR SÛRE</div> | |
</div> | |
</div> | |
<div class="flex items-center justify-between mb-4"> | |
<div> | |
<span class="text-sm font-medium">Confiance:</span> | |
<div class="w-full bg-gray-200 rounded-full h-2.5 mt-1"> | |
<div class="h-2.5 rounded-full bg-green-500" style="width: ${pred.confidence}%"></div> | |
</div> | |
</div> | |
<div class="text-right"> | |
<span class="text-sm font-medium">Cote:</span> | |
<div class="text-lg font-bold text-green-600">${pred.odds.toFixed(2)}</div> | |
</div> | |
</div> | |
<div class="bg-blue-50 rounded-lg p-4 mb-4"> | |
<div class="flex items-center text-sm text-gray-700"> | |
<i class="fas fa-info-circle text-blue-500 mr-2"></i> | |
${pred.analysis} | |
</div> | |
</div> | |
<div class="flex justify-between items-center"> | |
<button class="text-blue-600 hover:text-blue-800 text-sm font-medium flex items-center"> | |
<i class="fas fa-chart-bar mr-1"></i> Stats détaillées | |
</button> | |
<button class="bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-full text-sm font-medium flex items-center"> | |
<i class="fas fa-bell mr-1"></i> Alerte match | |
</button> | |
</div> | |
<div class="badge-accuracy bg-green-500 text-white text-xs font-bold px-2 py-1 rounded-full"> | |
${pred.confidence}% précision | |
</div> | |
<div class="absolute top-2 left-2 text-green-500"> | |
<i class="fas fa-shield-alt"></i> | |
</div> | |
`; | |
container.appendChild(predictionCard); | |
}); | |
} | |
function loadPredictionsForDate(date) { | |
// In a real app, this would fetch predictions for the selected date | |
console.log("Loading predictions for:", date); | |
// For demo purposes, we'll just reload the same predictions | |
loadPredictions(); | |
loadTopPredictions(); | |
loadSafePredictions(); | |
} | |
</script> | |
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=Richartvrai/richart-dely" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> | |
</html> |