| <!DOCTYPE html> |
| <html lang="fr"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>NexusCore - Plateforme Gaming Autonome</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=Orbitron:wght@400;500;700;900&family=Rajdhani:wght@300;500;700&display=swap'); |
| |
| :root { |
| --primary: #00f0ff; |
| --secondary: #ff2d7b; |
| --dark: #0a0a1a; |
| --darker: #050510; |
| } |
| |
| body { |
| font-family: 'Rajdhani', sans-serif; |
| background-color: var(--darker); |
| color: white; |
| overflow-x: hidden; |
| } |
| |
| .font-orbitron { |
| font-family: 'Orbitron', sans-serif; |
| } |
| |
| .neon-text { |
| text-shadow: 0 0 5px var(--primary), 0 0 10px var(--primary), 0 0 20px var(--secondary); |
| } |
| |
| .gradient-text { |
| background: linear-gradient(90deg, var(--primary), var(--secondary)); |
| -webkit-background-clip: text; |
| background-clip: text; |
| color: transparent; |
| } |
| |
| .gradient-bg { |
| background: linear-gradient(135deg, var(--primary), var(--secondary)); |
| } |
| |
| .game-card:hover { |
| transform: translateY(-10px) scale(1.02); |
| box-shadow: 0 25px 50px -12px rgba(0, 240, 255, 0.3); |
| } |
| |
| .glow { |
| box-shadow: 0 0 20px rgba(0, 240, 255, 0.7); |
| } |
| |
| .holographic { |
| background: linear-gradient(135deg, rgba(0, 240, 255, 0.1), rgba(255, 45, 123, 0.1)); |
| backdrop-filter: blur(10px); |
| border: 1px solid rgba(255, 255, 255, 0.2); |
| } |
| |
| .cyber-border { |
| position: relative; |
| overflow: hidden; |
| } |
| |
| .cyber-border::before { |
| content: ''; |
| position: absolute; |
| inset: 0; |
| border-radius: inherit; |
| padding: 2px; |
| background: linear-gradient(135deg, var(--primary), var(--secondary)); |
| -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); |
| -webkit-mask-composite: xor; |
| mask-composite: exclude; |
| pointer-events: none; |
| } |
| |
| .scanline { |
| position: relative; |
| overflow: hidden; |
| } |
| |
| .scanline::after { |
| content: ""; |
| position: absolute; |
| top: 0; |
| left: 0; |
| right: 0; |
| bottom: 0; |
| background: linear-gradient( |
| to bottom, |
| transparent 0%, |
| rgba(0, 240, 255, 0.1) 10%, |
| transparent 20%, |
| rgba(255, 45, 123, 0.1) 30%, |
| transparent 40%, |
| rgba(0, 240, 255, 0.1) 50%, |
| transparent 60%, |
| rgba(255, 45, 123, 0.1) 70%, |
| transparent 80%, |
| rgba(0, 240, 255, 0.1) 90%, |
| transparent 100% |
| ); |
| animation: scan 8s linear infinite; |
| pointer-events: none; |
| } |
| |
| @keyframes scan { |
| 0% { transform: translateY(-100%); } |
| 100% { transform: translateY(100%); } |
| } |
| |
| @keyframes pulse { |
| 0% { opacity: 1; } |
| 50% { opacity: 0.5; } |
| 100% { opacity: 1; } |
| } |
| |
| @keyframes float { |
| 0% { transform: translateY(0px); } |
| 50% { transform: translateY(-10px); } |
| 100% { transform: translateY(0px); } |
| } |
| |
| .floating { |
| animation: float 6s ease-in-out infinite; |
| } |
| |
| .terminal-text { |
| font-family: 'Courier New', monospace; |
| color: #00ff00; |
| text-shadow: 0 0 5px #00ff00; |
| } |
| |
| .typewriter { |
| overflow: hidden; |
| border-right: .15em solid var(--primary); |
| white-space: nowrap; |
| animation: typing 3.5s steps(40, end), blink-caret .75s step-end infinite; |
| } |
| |
| @keyframes typing { |
| from { width: 0 } |
| to { width: 100% } |
| } |
| |
| @keyframes blink-caret { |
| from, to { border-color: transparent } |
| 50% { border-color: var(--primary) } |
| } |
| |
| .scrollbar-hide::-webkit-scrollbar { |
| display: none; |
| } |
| |
| .scrollbar-hide { |
| -ms-overflow-style: none; |
| scrollbar-width: none; |
| } |
| |
| .skeleton { |
| animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; |
| background-color: rgba(255, 255, 255, 0.1); |
| border-radius: 0.25rem; |
| } |
| </style> |
| </head> |
| <body class="min-h-screen scanline"> |
| |
| <nav class="bg-black/80 backdrop-blur-md border-b border-gray-800 fixed w-full z-50"> |
| <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> |
| <div class="flex items-center justify-between h-16"> |
| <div class="flex items-center"> |
| <div class="flex-shrink-0"> |
| <span class="font-orbitron text-2xl font-bold neon-text">NEXUS<span class="text-white">CORE</span></span> |
| </div> |
| <div class="hidden md:block"> |
| <div class="ml-10 flex items-baseline space-x-4"> |
| <a href="#" class="text-white hover:text-cyan-300 px-3 py-2 rounded-md text-sm font-medium flex items-center"> |
| <i class="fas fa-home mr-1"></i> Hub |
| </a> |
| <a href="#" class="text-gray-300 hover:text-cyan-300 px-3 py-2 rounded-md text-sm font-medium flex items-center"> |
| <i class="fas fa-gamepad mr-1"></i> Jeux |
| </a> |
| <a href="#" class="text-gray-300 hover:text-cyan-300 px-3 py-2 rounded-md text-sm font-medium flex items-center"> |
| <i class="fas fa-users mr-1"></i> NexusNet |
| </a> |
| <a href="#" class="text-gray-300 hover:text-cyan-300 px-3 py-2 rounded-md text-sm font-medium flex items-center"> |
| <i class="fas fa-robot mr-1"></i> AI Assist |
| </a> |
| </div> |
| </div> |
| </div> |
| <div class="hidden md:block"> |
| <div class="ml-4 flex items-center md:ml-6"> |
| <div class="relative"> |
| <input type="text" placeholder="Recherche neuronale..." class="bg-gray-900/50 border border-gray-700 rounded-full px-4 py-1 text-sm focus:outline-none focus:ring-2 focus:ring-cyan-500 focus:border-transparent w-64 terminal-text"> |
| <button class="absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400"> |
| <i class="fas fa-search"></i> |
| </button> |
| </div> |
| <div class="ml-4 relative"> |
| <div class="h-8 w-8 rounded-full gradient-bg flex items-center justify-center cursor-pointer"> |
| <i class="fas fa-user-astronaut text-white"></i> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="-mr-2 flex md:hidden"> |
| <button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none" aria-controls="mobile-menu" aria-expanded="false"> |
| <span class="sr-only">Open main menu</span> |
| <i class="fas fa-bars"></i> |
| </button> |
| </div> |
| </div> |
| </div> |
| </nav> |
|
|
| |
| <div class="fixed bottom-24 right-6 z-50 w-72 bg-gray-900/90 border border-cyan-500/30 rounded-lg shadow-2xl overflow-hidden transform transition-all duration-300" id="aiPanel"> |
| <div class="gradient-bg px-4 py-3 flex justify-between items-center"> |
| <div class="flex items-center"> |
| <i class="fas fa-robot mr-2 text-white"></i> |
| <span class="font-orbitron text-sm">NEXUS AI ASSISTANT</span> |
| </div> |
| <div class="flex items-center"> |
| <div class="h-2 w-2 rounded-full bg-green-500 mr-1 animate-pulse"></div> |
| <span class="text-xs">ACTIVE</span> |
| </div> |
| </div> |
| <div class="p-4 h-48 overflow-y-auto terminal-text text-sm" id="aiChat"> |
| <p>> Système NexusCore initialisé</p> |
| <p>> Connexion établie avec la base de jeux</p> |
| <p>> Analyse des préférences utilisateur...</p> |
| <p>> Chargement des recommandations personnalisées</p> |
| <p class="typewriter">Bonjour joueur. Comment puis-je vous aider aujourd'hui?</p> |
| </div> |
| <div class="border-t border-gray-800 p-3"> |
| <div class="relative"> |
| <input type="text" placeholder="Tapez votre requête..." class="w-full bg-gray-800/50 border border-gray-700 rounded-full px-4 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-cyan-500 focus:border-transparent terminal-text"> |
| <button class="absolute right-3 top-1/2 transform -translate-y-1/2 text-cyan-400"> |
| <i class="fas fa-paper-plane"></i> |
| </button> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <main class="pt-20 pb-16"> |
| |
| <section class="relative py-16 overflow-hidden"> |
| <div class="absolute inset-0 overflow-hidden"> |
| <div class="absolute inset-0 bg-gradient-to-b from-black/90 via-black/70 to-black/90 z-10"></div> |
| <video autoplay muted loop class="w-full h-full object-cover"> |
| <source src="https://cdn.akamai.steamstatic.com/steam/public/clusters/gametrailers/webm/steam_deck_oled_hero_loop.webm" type="video/webm"> |
| </video> |
| </div> |
| <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 relative z-20"> |
| <div class="lg:grid lg:grid-cols-12 lg:gap-8"> |
| <div class="sm:text-center md:max-w-2xl md:mx-auto lg:col-span-7 lg:text-left"> |
| <h1 class="text-4xl tracking-tight font-extrabold text-white sm:text-5xl md:text-6xl font-orbitron"> |
| <span class="block">PLATEFORME DE JEUX</span> |
| <span class="block gradient-text">AUTO-PILOTÉE</span> |
| </h1> |
| <p class="mt-3 text-base text-gray-300 sm:mt-5 sm:text-lg sm:max-w-xl sm:mx-auto md:mt-5 md:text-xl lg:mx-0"> |
| NexusCore analyse vos préférences en temps réel pour optimiser votre expérience gaming avec notre IA neuronale. |
| </p> |
| <div class="mt-8 sm:max-w-lg sm:mx-auto sm:text-center lg:text-left lg:mx-0"> |
| <div class="flex flex-col sm:flex-row space-y-3 sm:space-y-0 sm:space-x-4"> |
| <button class="gradient-bg hover:opacity-90 text-white font-bold py-3 px-8 rounded-full flex items-center justify-center transition-all duration-300 hover:scale-105"> |
| <i class="fas fa-rocket mr-2"></i> Explorer la Matrice |
| </button> |
| <button class="bg-white/10 hover:bg-white/20 text-white font-bold py-3 px-8 rounded-full flex items-center justify-center border border-white/20 transition-all duration-300 hover:scale-105"> |
| <i class="fas fa-terminal mr-2"></i> Accès Direct |
| </button> |
| </div> |
| </div> |
| </div> |
| <div class="mt-12 relative sm:max-w-lg sm:mx-auto lg:mt-0 lg:max-w-none lg:mx-0 lg:col-span-5 lg:flex lg:items-center floating"> |
| <div class="cyber-border rounded-xl overflow-hidden w-full h-96 lg:h-auto lg:aspect-w-16 lg:aspect-h-9"> |
| <div class="holographic h-full flex items-center justify-center p-8"> |
| <div class="text-center"> |
| <div class="h-16 w-16 gradient-bg rounded-full flex items-center justify-center mx-auto mb-4"> |
| <i class="fas fa-gamepad text-white text-2xl"></i> |
| </div> |
| <h3 class="font-orbitron text-xl mb-2">JEU DU MOMENT</h3> |
| <p class="text-3xl font-bold mb-4" id="featuredGameTitle">Chargement...</p> |
| <div class="w-full bg-gray-800 rounded-full h-2.5 mb-4"> |
| <div class="gradient-bg h-2.5 rounded-full" style="width: 87%" id="featuredGameRating"></div> |
| </div> |
| <p class="text-sm text-gray-300 mb-6">Compatibilité neuronale: <span id="featuredGameCompatibility">94%</span></p> |
| <button class="gradient-bg hover:opacity-90 text-white font-bold py-2 px-6 rounded-full text-sm flex items-center mx-auto"> |
| <i class="fas fa-bolt mr-2"></i> Lancer en Cloud |
| </button> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 mt-16"> |
| <div class="cyber-border rounded-xl overflow-hidden"> |
| <div class="gradient-bg px-6 py-4 flex justify-between items-center"> |
| <div class="flex items-center"> |
| <i class="fas fa-database mr-3 text-white"></i> |
| <h2 class="font-orbitron text-xl">BASE DE JEUX NEXUS</h2> |
| </div> |
| <div class="flex items-center"> |
| <span class="text-xs bg-black/30 px-2 py-1 rounded-full mr-3"> |
| <span class="h-2 w-2 rounded-full bg-green-500 inline-block mr-1"></span> |
| SYNC: 100% |
| </span> |
| <span class="text-xs">Dernière mise à jour: <span class="font-mono">NOW</span></span> |
| </div> |
| </div> |
| <div class="bg-gray-900/50 p-6"> |
| |
| <div class="flex overflow-x-auto pb-4 scrollbar-hide space-x-3 mb-6"> |
| <button class="flex-shrink-0 gradient-bg text-white text-xs font-bold px-4 py-2 rounded-full" data-filter="all"> |
| Tous les jeux |
| </button> |
| <button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full" data-filter="popular"> |
| <i class="fas fa-fire mr-1"></i> Tendance |
| </button> |
| <button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full" data-filter="released"> |
| <i class="fas fa-star mr-1"></i> Nouveautés |
| </button> |
| <button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full" data-filter="pc"> |
| <i class="fas fa-desktop mr-1"></i> PC |
| </button> |
| <button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full" data-filter="action"> |
| <i class="fas fa-running mr-1"></i> Action |
| </button> |
| <button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full" data-filter="rpg"> |
| <i class="fas fa-dragon mr-1"></i> RPG |
| </button> |
| </div> |
|
|
| |
| <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6" id="gameGrid"> |
| |
| <div class="game-card bg-gray-900 rounded-lg overflow-hidden h-full"> |
| <div class="skeleton h-48 w-full"></div> |
| <div class="p-4"> |
| <div class="skeleton h-6 w-3/4 mb-2"></div> |
| <div class="skeleton h-4 w-1/2 mb-4"></div> |
| <div class="skeleton h-4 w-full mb-4"></div> |
| <div class="skeleton h-8 w-full rounded-full"></div> |
| </div> |
| </div> |
| <div class="game-card bg-gray-900 rounded-lg overflow-hidden h-full"> |
| <div class="skeleton h-48 w-full"></div> |
| <div class="p-4"> |
| <div class="skeleton h-6 w-3/4 mb-2"></div> |
| <div class="skeleton h-4 w-1/2 mb-4"></div> |
| <div class="skeleton h-4 w-full mb-4"></div> |
| <div class="skeleton h-8 w-full rounded-full"></div> |
| </div> |
| </div> |
| <div class="game-card bg-gray-900 rounded-lg overflow-hidden h-full"> |
| <div class="skeleton h-48 w-full"></div> |
| <div class="p-4"> |
| <div class="skeleton h-6 w-3/4 mb-2"></div> |
| <div class="skeleton h-4 w-1/2 mb-4"></div> |
| <div class="skeleton h-4 w-full mb-4"></div> |
| <div class="skeleton h-8 w-full rounded-full"></div> |
| </div> |
| </div> |
| <div class="game-card bg-gray-900 rounded-lg overflow-hidden h-full"> |
| <div class="skeleton h-48 w-full"></div> |
| <div class="p-4"> |
| <div class="skeleton h-6 w-3/4 mb-2"></div> |
| <div class="skeleton h-4 w-1/2 mb-4"></div> |
| <div class="skeleton h-4 w-full mb-4"></div> |
| <div class="skeleton h-8 w-full rounded-full"></div> |
| </div> |
| </div> |
| </div> |
|
|
| <div class="mt-8 flex justify-center"> |
| <button id="loadMoreBtn" class="gradient-bg hover:opacity-90 text-white font-bold py-2 px-6 rounded-full flex items-center"> |
| <i class="fas fa-sync-alt mr-2"></i> Charger plus de jeux |
| </button> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 mt-16"> |
| <div class="cyber-border rounded-xl overflow-hidden"> |
| <div class="gradient-bg px-6 py-4"> |
| <div class="flex items-center"> |
| <i class="fas fa-brain mr-3 text-white"></i> |
| <h2 class="font-orbitron text-xl">RECOMMANDATIONS NEURONALES</h2> |
| </div> |
| <div class="mt-2 text-xs"> |
| <span class="font-mono">> Analyse comportementale complète. Adaptation en temps réel.</span> |
| </div> |
| </div> |
| <div class="bg-gray-900/50 p-6"> |
| <div class="flex overflow-x-auto pb-4 scrollbar-hide space-x-4" id="recommendations"> |
| |
| <div class="flex-shrink-0 w-64 game-card bg-gray-900 rounded-lg overflow-hidden"> |
| <div class="skeleton h-36 w-full"></div> |
| <div class="p-4"> |
| <div class="skeleton h-5 w-3/4 mb-3"></div> |
| <div class="skeleton h-8 w-full rounded-full"></div> |
| </div> |
| </div> |
| <div class="flex-shrink-0 w-64 game-card bg-gray-900 rounded-lg overflow-hidden"> |
| <div class="skeleton h-36 w-full"></div> |
| <div class="p-4"> |
| <div class="skeleton h-5 w-3/4 mb-3"></div> |
| <div class="skeleton h-8 w-full rounded-full"></div> |
| </div> |
| </div> |
| <div class="flex-shrink-0 w-64 game-card bg-gray-900 rounded-lg overflow-hidden"> |
| <div class="skeleton h-36 w-full"></div> |
| <div class="p-4"> |
| <div class="skeleton h-5 w-3/4 mb-3"></div> |
| <div class="skeleton h-8 w-full rounded-full"></div> |
| </div> |
| </div> |
| <div class="flex-shrink-0 w-64 game-card bg-gray-900 rounded-lg overflow-hidden"> |
| <div class="skeleton h-36 w-full"></div> |
| <div class="p-4"> |
| <div class="skeleton h-5 w-3/4 mb-3"></div> |
| <div class="skeleton h-8 w-full rounded-full"></div> |
| </div> |
| </div> |
| </div> |
| <div class="mt-6 text-center"> |
| <p class="text-gray-400 text-sm">Ces recommandations évoluent en fonction de vos sessions de jeu</p> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 mt-16"> |
| <div class="cyber-border rounded-xl overflow-hidden"> |
| <div class="gradient-bg px-6 py-4 flex justify-between items-center"> |
| <div class="flex items-center"> |
| <i class="fas fa-cloud mr-3 text-white"></i> |
| <h2 class="font-orbitron text-xl">NEXUS CLOUD GAMING</h2> |
| </div> |
| <div class="flex items-center"> |
| <span class="text-xs bg-black/30 px-2 py-1 rounded-full mr-2"> |
| <span class="h-2 w-2 rounded-full bg-green-500 inline-block mr-1"></span> |
| SERVEURS: ONLINE |
| </span> |
| <span class="text-xs">Latence: <span class="font-mono">8ms</span></span> |
| </div> |
| </div> |
| <div class="bg-gray-900/50 p-6"> |
| <div class="lg:grid lg:grid-cols-3 lg:gap-8"> |
| <div class="lg:col-span-2"> |
| <h3 class="text-xl font-bold mb-4">Jouez instantanément sur n'importe quel appareil</h3> |
| <p class="text-gray-300 mb-6"> |
| Notre technologie de streaming cloud vous permet d'accéder à votre bibliothèque complète sans téléchargement. |
| L'IA optimise automatiquement les paramètres pour votre connexion. |
| </p> |
| <div class="grid grid-cols-2 gap-4 mb-6"> |
| <div class="bg-gray-800/50 border border-gray-700 rounded-lg p-4"> |
| <div class="flex items-center mb-2"> |
| <div class="h-8 w-8 rounded-full bg-cyan-500/10 flex items-center justify-center mr-2"> |
| <i class="fas fa-tachometer-alt text-cyan-400"></i> |
| </div> |
| <span class="font-bold">Performance</span> |
| </div> |
| <p class="text-xs text-gray-400">120 FPS / 4K HDR</p> |
| </div> |
| <div class="bg-gray-800/50 border border-gray-700 rounded-lg p-4"> |
| <div class="flex items-center mb-2"> |
| <div class="h-8 w-8 rounded-full bg-purple-500/10 flex items-center justify-center mr-2"> |
| <i class="fas fa-globe-americas text-purple-400"></i> |
| </div> |
| <span class="font-bold">Couverture</span> |
| </div> |
| <p class="text-xs text-gray-400">25 centres de données</p> |
| </div> |
| </div> |
| <button class="gradient-bg hover:opacity-90 text-white font-bold py-3 px-6 rounded-full flex items-center"> |
| <i class="fas fa-play mr-2"></i> Essayer maintenant |
| </button> |
| </div> |
| <div class="mt-8 lg:mt-0"> |
| <div class="holographic rounded-lg p-6 h-full"> |
| <h4 class="font-orbitron mb-4">VOS JEUX CLOUD</h4> |
| <div class="space-y-4" id="cloudGames"> |
| <div class="flex items-center"> |
| <div class="h-10 w-10 rounded-full bg-gray-800 flex items-center justify-center mr-3"> |
| <i class="fas fa-gamepad"></i> |
| </div> |
| <div class="flex-1"> |
| <p class="font-bold">Cyberpunk 2077</p> |
| <div class="w-full bg-gray-700 rounded-full h-1.5"> |
| <div class="gradient-bg h-1.5 rounded-full" style="width: 75%"></div> |
| </div> |
| </div> |
| </div> |
| <div class="flex items-center"> |
| <div class="h-10 w-10 rounded-full bg-gray-800 flex items-center justify-center mr-3"> |
| <i class="fas fa-gamepad"></i> |
| </div> |
| <div class="flex-1"> |
| <p class="font-bold">Elden Ring</p> |
| <div class="w-full bg-gray-700 rounded-full h-1.5"> |
| <div class="gradient-bg h-1.5 rounded-full" style="width: 92%"></div> |
| </div> |
| </div> |
| </div> |
| <div class="flex items-center"> |
| <div class="h-10 w-10 rounded-full bg-gray-800 flex items-center justify-center mr-3"> |
| <i class="fas fa-gamepad"></i> |
| </div> |
| <div class="flex-1"> |
| <p class="font-bold">Starfield</p> |
| <div class="w-full bg-gray-700 rounded-full h-1.5"> |
| <div class="gradient-bg h-1.5 rounded-full" style="width: 68%"></div> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="mt-6 pt-4 border-t border-gray-700"> |
| <p class="text-xs text-gray-400">Stockage cloud disponible: <span class="font-bold text-white">1.2TB</span></p> |
| <div class="w-full bg-gray-700 rounded-full h-2 mt-2"> |
| <div class="gradient-bg h-2 rounded-full" style="width: 45%"></div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </section> |
| </main> |
|
|
| |
| <footer class="bg-black/80 backdrop-blur-md border-t border-gray-800 mt-16"> |
| <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12"> |
| <div class="grid grid-cols-2 md:grid-cols-4 gap-8"> |
| <div> |
| <h3 class="text-white font-bold mb-4 font-orbitron">NEXUSCORE</h3> |
| <ul class="space-y-2"> |
| <li><a href="#" class="text-gray-400 hover:text-white text-sm">À propos</a></li> |
| <li><a href="#" class="text-gray-400 hover:text-white text-sm">Technologie</a></li> |
| <li><a href="#" class="text-gray-400 hover:text-white text-sm">Carrières</a></li> |
| <li><a href="#" class="text-gray-400 hover:text-white text-sm">Presse</a></li> |
| </ul> |
| </div> |
| <div> |
| <h3 class="text-white font-bold mb-4 font-orbitron">ASSISTANCE</h3> |
| <ul class="space-y-2"> |
| <li><a href="#" class="text-gray-400 hover:text-white text-sm">Centre d'aide</a></li> |
| <li><a href="#" class="text-gray-400 hover:text-white text-sm">Statut des serveurs</a></li> |
| <li><a href="#" class="text-gray-400 hover:text-white text-sm">FAQ</a></li> |
| <li><a href="#" class="text-gray-400 hover:text-white text-sm">Nous contacter</a></li> |
| </ul> |
| </div> |
| <div> |
| <h3 class="text-white font-bold mb-4 font-orbitron">LÉGAL</h3> |
| <ul class="space-y-2"> |
| <li><a href="#" class="text-gray-400 hover:text-white text-sm">Conditions d'utilisation</a></li> |
| <li><a href="#" class="text-gray-400 hover:text-white text-sm">Confidentialité</a></li> |
| <li><a href="#" class="text-gray-400 hover:text-white text-sm">Cookies</a></li> |
| <li><a href="#" class="text-gray-400 hover:text-white text-sm">Copyright</a></li> |
| </ul> |
| </div> |
| <div> |
| <h3 class="text-white font-bold mb-4 font-orbitron">CONNECTER</h3> |
| <div class="flex space-x-4 mb-4"> |
| <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-discord"></i> |
| </a> |
| <a href="#" class="text-gray-400 hover:text-white"> |
| <i class="fab fa-youtube"></i> |
| </a> |
| <a href="#" class="text-gray-400 hover:text-white"> |
| <i class="fab fa-twitch"></i> |
| </a> |
| </div> |
| <div class="mt-6"> |
| <p class="text-gray-400 text-sm mb-2">Télécharger l'app</p> |
| <div class="flex space-x-2"> |
| <button class="bg-black text-white px-3 py-1 rounded flex items-center text-xs"> |
| <i class="fab fa-apple mr-1"></i> iOS |
| </button> |
| <button class="bg-black text-white px-3 py-1 rounded flex items-center text-xs"> |
| <i class="fab fa-android mr-1"></i> Android |
| </button> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="mt-12 pt-8 border-t border-gray-800 flex flex-col md:flex-row justify-between items-center"> |
| <div class="flex items-center"> |
| <span class="font-orbitron text-xl font-bold gradient-text">NEXUS<span class="text-white">CORE</span></span> |
| <span class="text-gray-400 text-sm ml-4">© 2023 Nexus Technologies. Tous droits réservés.</span> |
| </div> |
| <div class="mt-4 md:mt-0"> |
| <span class="text-gray-400 text-sm">Version système: <span class="font-mono">NEXUS-OS v4.2.1</span></span> |
| </div> |
| </div> |
| </div> |
| </footer> |
|
|
| |
| <script> |
| |
| const API_KEY = 'd4e5b8d7b5a84f4c8a5e0a3e3e3e3e3'; |
| const API_URL = 'https://api.rawg.io/api/games'; |
| |
| |
| let currentPage = 1; |
| let isLoading = false; |
| |
| |
| function formatDate(dateString) { |
| const options = { year: 'numeric', month: 'short', day: 'numeric' }; |
| return new Date(dateString).toLocaleDateString('fr-FR', options); |
| } |
| |
| |
| function getRandomPrice() { |
| const prices = [0, 9.99, 19.99, 29.99, 39.99, 49.99, 59.99]; |
| return prices[Math.floor(Math.random() * prices.length)]; |
| } |
| |
| |
| function getRandomDiscount() { |
| return Math.random() > 0.7 ? Math.floor(Math.random() * 60) + 10 : 0; |
| } |
| |
| |
| function getRandomRating() { |
| return (Math.random() * 2 + 3).toFixed(1); |
| } |
| |
| |
| function getRandomCompatibility() { |
| return Math.floor(Math.random() * 15) + 85; |
| } |
| |
| |
| async function fetchGames(page = 1, filter = '') { |
| try { |
| isLoading = true; |
| |
| |
| if (page === 1) { |
| document.getElementById('gameGrid').innerHTML = ` |
| <div class="game-card bg-gray-900 rounded-lg overflow-hidden h-full"> |
| <div class="skeleton h-48 w-full"></div> |
| <div class="p-4"> |
| <div class="skeleton h-6 w-3/4 mb-2"></div> |
| <div class="skeleton h-4 w-1/2 mb-4"></div> |
| <div class="skeleton h-4 w-full mb-4"></div> |
| <div class="skeleton h-8 w-full rounded-full"></div> |
| </div> |
| </div> |
| `.repeat(4); |
| } |
| |
| let url = `${API_URL}?key=${API_KEY}&page=${page}&page_size=8`; |
| |
| |
| if (filter) { |
| switch(filter) { |
| case 'popular': |
| url += '&ordering=-rating'; |
| break; |
| case 'released': |
| url += '&ordering=-released'; |
| break; |
| case 'pc': |
| url += '&platforms=4'; |
| break; |
| case 'action': |
| url += '&genres=4'; |
| break; |
| case 'rpg': |
| url += '&genres=5'; |
| break; |
| } |
| } |
| |
| const response = await fetch(url); |
| const data = await response.json(); |
| |
| |
| displayGames(data.results, page === 1); |
| |
| |
| currentPage = page; |
| isLoading = false; |
| |
| return data; |
| } catch (error) { |
| console.error('Erreur lors du chargement des jeux:', error); |
| isLoading = false; |
| |
| |
| if (page === 1) { |
| document.getElementById('gameGrid').innerHTML = ` |
| <div class="col-span-4 text-center py-8"> |
| <i class="fas fa-exclamation-triangle text-yellow-500 text-4xl mb-4"></i> |
| <h3 class="text-xl font-bold mb-2">Erreur de chargement</h3> |
| <p class="text-gray-400">Impossible de charger les jeux. Veuillez réessayer plus tard.</p> |
| <button onclick="fetchGames()" class="mt-4 gradient-bg hover:opacity-90 text-white font-bold py-2 px-6 rounded-full"> |
| <i class="fas fa-sync-alt mr-2"></i> Réessayer |
| </button> |
| </div> |
| `; |
| } |
| } |
| } |
| |
| |
| function displayGames(games, clear = true) { |
| const gameGrid = document.getElementById('gameGrid'); |
| |
| if (clear) { |
| gameGrid.innerHTML = ''; |
| } |
| |
| games.forEach(game => { |
| const price = getRandomPrice(); |
| const discount = getRandomDiscount(); |
| const rating = getRandomRating(); |
| const compatibility = getRandomCompatibility(); |
| |
| gameGrid.innerHTML += ` |
| <div class="game-card bg-gray-900 rounded-lg overflow-hidden transition-all duration-300 ease-in-out cursor-pointer h-full" data-genres="${game.genres.map(g => g.id).join(',')}" data-platforms="${game.platforms.map(p => p.platform.id).join(',')}"> |
| <div class="relative"> |
| <img src="${game.background_image || 'https://via.placeholder.com/400x225?text=No+Image'}" alt="${game.name}" class="w-full h-48 object-cover"> |
| ${discount > 0 ? `<div class="absolute top-2 right-2 bg-black/80 text-white text-xs px-2 py-1 rounded">-${discount}%</div>` : ''} |
| ${price === 0 ? `<div class="absolute top-2 left-2 bg-green-600/80 text-white text-xs px-2 py-1 rounded">GRATUIT</div>` : ''} |
| </div> |
| <div class="p-4"> |
| <h3 class="text-white font-bold">${game.name}</h3> |
| <p class="text-gray-400 text-xs mb-2">${game.released ? formatDate(game.released) : 'Date inconnue'}</p> |
| <div class="flex items-center mt-1"> |
| <div class="flex"> |
| ${Array.from({length: 5}, (_, i) => |
| i < Math.floor(rating) ? |
| `<i class="fas fa-star text-yellow-400 text-xs"></i>` : |
| (i < rating ? `<i class="fas fa-star-half-alt text-yellow-400 text-xs"></i>` : `<i class="far fa-star text-yellow-400 text-xs"></i>`) |
| ).join('')} |
| </div> |
| <span class="text-gray-400 text-xs ml-1">(${rating})</span> |
| </div> |
| <div class="flex justify-between items-center mt-3"> |
| <div> |
| ${discount > 0 ? `<span class="text-gray-400 line-through text-sm">${(price / (1 - discount/100)).toFixed(2)}€</span>` : ''} |
| <span class="text-white font-bold ml-2">${price > 0 ? `${price.toFixed(2)}€` : 'Gratuit'}</span> |
| </div> |
| <button class="text-xs gradient-bg hover:opacity-90 text-white px-3 py-1 rounded-full"> |
| ${price > 0 ? 'Ajouter' : 'Jouer'} |
| </button> |
| </div> |
| </div> |
| </div> |
| `; |
| }); |
| |
| |
| document.querySelectorAll('.game-card').forEach(card => { |
| card.addEventListener('mouseenter', () => { |
| card.classList.add('glow'); |
| }); |
| card.addEventListener('mouseleave', () => { |
| card.classList.remove('glow'); |
| }); |
| }); |
| } |
| |
| |
| async function fetchRecommendations() { |
| try { |
| |
| document.getElementById('recommendations').innerHTML = ` |
| <div class="flex-shrink-0 w-64 game-card bg-gray-900 rounded-lg overflow-hidden"> |
| <div class="skeleton h-36 w-full"></div> |
| <div class="p-4"> |
| <div class="skeleton h-5 w-3/4 mb-3"></div> |
| <div class="skeleton h-8 w-full rounded-full"></div> |
| </div> |
| </div> |
| `.repeat(4); |
| |
| |
| const response = await fetch(`${API_URL}?key=${API_KEY}&page=1&page_size=6&ordering=-rating`); |
| const data = await response.json(); |
| |
| |
| displayRecommendations(data.results.slice(0, 4)); |
| } catch (error) { |
| console.error('Erreur lors du chargement des recommandations:', error); |
| |
| document.getElementById('recommendations').innerHTML = ` |
| <div class="col-span-4 text-center py-8"> |
| <i class="fas fa-exclamation-triangle text-yellow-500 text-4xl mb-4"></i> |
| <p class="text-gray-400">Les recommandations ne sont pas disponibles pour le moment.</p> |
| </div> |
| `; |
| } |
| } |
| |
| |
| function displayRecommendations(games) { |
| const recommendationsGrid = document.getElementById('recommendations'); |
| recommendationsGrid.innerHTML = ''; |
| |
| games.forEach(game => { |
| const compatibility = getRandomCompatibility(); |
| |
| recommendationsGrid.innerHTML += ` |
| <div class="flex-shrink-0 w-64 game-card bg-gray-900 rounded-lg overflow-hidden transition-all duration-300 ease-in-out cursor-pointer"> |
| <div class="relative"> |
| <img src="${game.background_image || 'https://via.placeholder.com/400x225?text=No+Image'}" alt="${game.name}" class="w-full h-36 object-cover"> |
| <div class="absolute top-2 left-2 bg-cyan-600/80 text-white text-xs px-2 py-1 rounded"> |
| <i class="fas fa-brain mr-1"></i> ${compatibility}% |
| </div> |
| </div> |
| <div class="p-4"> |
| <h3 class="text-white font-bold text-sm">${game.name}</h3> |
| <div class="flex justify-between items-center mt-3"> |
| <div> |
| <span class="text-white font-bold text-sm">${getRandomPrice() > 0 ? `${getRandomPrice().toFixed(2)}€` : 'Gratuit'}</span> |
| </div> |
| <button class="text-xs gradient-bg hover:opacity-90 text-white px-3 py-1 rounded-full"> |
| <i class="fas fa-bolt mr-1"></i> Démarrer |
| </button> |
| </div> |
| </div> |
| </div> |
| `; |
| }); |
| } |
| |
| |
| async function fetchFeaturedGame() { |
| try { |
| |
| const response = await fetch(`${API_URL}?key=${API_KEY}&page=1&page_size=1&ordering=-rating`); |
| const data = await response.json(); |
| |
| if (data.results.length > 0) { |
| const featuredGame = data.results[0]; |
| const rating = (featuredGame.rating * 20).toFixed(0); |
| |
| document.getElementById('featuredGameTitle').textContent = featuredGame.name; |
| document.getElementById('featuredGameRating').style.width = `${rating}%`; |
| document.getElementById('featuredGameCompatibility').textContent = `${getRandomCompatibility()}%`; |
| } |
| } catch (error) { |
| console.error('Erreur lors du chargement du jeu vedette:', error); |
| } |
| } |
| |
| |
| document.addEventListener('DOMContentLoaded', () => { |
| |
| fetchGames(); |
| fetchRecommendations(); |
| fetchFeaturedGame(); |
| |
| |
| document.getElementById('loadMoreBtn').addEventListener('click', () => { |
| if (!isLoading) { |
| fetchGames(currentPage + 1); |
| } |
| }); |
| |
| |
| document.querySelectorAll('[data-filter]').forEach(button => { |
| button.addEventListener('click', () => { |
| |
| document.querySelectorAll('[data-filter]').forEach(btn => { |
| btn.classList.remove('gradient-bg'); |
| btn.classList.add('bg-gray-800', 'hover:bg-gray-700'); |
| }); |
| |
| button.classList.add('gradient-bg'); |
| button.classList.remove('bg-gray-800', 'hover:bg-gray-700'); |
| |
| |
| fetchGames(1, button.dataset.filter); |
| }); |
| }); |
| |
| |
| setInterval(() => { |
| const latency = Math.floor(Math.random() * 5) + 5; |
| document.querySelectorAll('.font-mono').forEach(el => { |
| if (el.textContent.includes('ms')) { |
| el.textContent = `${latency}ms`; |
| } |
| }); |
| }, 3000); |
| |
| |
| const aiPanel = document.getElementById('aiPanel'); |
| const aiChat = document.getElementById('aiChat'); |
| |
| |
| setTimeout(() => { |
| aiChat.innerHTML += `<p>> Préparation des recommandations...</p>`; |
| }, 3000); |
| |
| setTimeout(() => { |
| aiChat.innerHTML += `<p>> Optimisation des paramètres système</p>`; |
| }, 6000); |
| |
| setTimeout(() => { |
| aiChat.innerHTML += `<p class="typewriter">Votre session est optimisée. Bon jeu!</p>`; |
| }, 9000); |
| }); |
| </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=docto41/nexuscore" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
| </html> |