diff --git a/Leaderboard.css b/Leaderboard.css new file mode 100644 index 0000000..3793923 --- /dev/null +++ b/Leaderboard.css @@ -0,0 +1,527 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Arial', sans-serif; + background: radial-gradient(circle at 20% 20%, #3b0066, #0c001a 70%); + min-height: 100vh; + display: flex; + justify-content: center; + align-items: center; + overflow: hidden; + position: relative; +} + +/* Neon Particles */ +#particles { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1; +} + +.particle { + position: absolute; + width: 5px; + height: 5px; + border-radius: 50%; + background: radial-gradient(circle, #00ffff, #0099ff); + box-shadow: 0 0 10px #00eaff, 0 0 25px #0088ff; + pointer-events: none; +} + +/* ========== LEADERBOARD CONTAINER ========== */ +.container { + position: relative; + z-index: 2; + background: rgba(20, 0, 40, 0.65); + border-radius: 20px; + padding: 40px 100px; + width: 98%; + max-width: 1600px; + + border: 2px solid rgba(0, 255, 255, 0.4); + box-shadow: + 0 0 25px rgba(0, 255, 255, 0.4), + 0 0 60px rgba(255, 0, 255, 0.25), + inset 0 0 40px rgba(0, 255, 255, 0.2); + animation: scanGlow 4s ease-in-out infinite alternate; +} + +@keyframes scanGlow { + 0% { + border-color: #00eaff; + box-shadow: + 0 0 20px rgba(0, 255, 255, 0.3), + 0 0 40px rgba(0, 255, 255, 0.2), + inset 0 0 25px rgba(0, 255, 255, 0.1); + } + 100% { + border-color: #ff00ff; + box-shadow: + 0 0 30px rgba(255, 0, 255, 0.4), + 0 0 70px rgba(255, 0, 255, 0.3), + inset 0 0 35px rgba(255, 0, 255, 0.2); + } +} + +/* ========== TITLE ========== */ +h1 { + text-align: center; + font-size: 2.2rem; + margin-bottom: 35px; + background: linear-gradient(90deg, #00d9ff 0%, #ff00ff 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-transform: uppercase; + letter-spacing: 3px; + font-weight: bold; + display: flex; + align-items: center; + justify-content: center; + gap: 15px; +} + +h1::before { + content: '🏆'; + -webkit-text-fill-color: initial; + font-size: 2rem; + filter: drop-shadow(0 0 10px #ffd700); +} + +/* ========== LEADERBOARD LIST ========== */ +.leaderboard-list { + list-style: none; + display: flex; + flex-direction: column; + gap: 14px; +} + +/* ========== LEADERBOARD ITEM ========== */ +.leaderboard-item { + display: flex; + align-items: center; + gap: 20px; + padding: 18px 25px; + border-radius: 14px; + background: rgba(30, 0, 50, 0.5); + border: 1px solid rgba(0, 255, 255, 0.2); + transition: all 0.3s ease; + position: relative; +} + +.leaderboard-item:hover { + transform: translateX(6px); + border-color: rgba(0, 255, 255, 0.5); + box-shadow: 0 0 20px rgba(0, 255, 255, 0.3); +} + +/* ========== RANK 1 - CHAMPION ========== */ +.leaderboard-item.rank-1 { + background: linear-gradient(135deg, rgba(0, 234, 255, 0.25), rgba(0, 255, 136, 0.2)); + border: 2px solid rgba(0, 234, 255, 0.6); + box-shadow: + 0 0 25px rgba(0, 234, 255, 0.4), + inset 0 0 25px rgba(0, 234, 255, 0.15); +} + +.leaderboard-item.rank-1:hover { + box-shadow: + 0 0 35px rgba(0, 234, 255, 0.6), + 0 0 60px rgba(0, 255, 136, 0.4); +} + +/* ========== RANK 2 - RUNNER UP ========== */ +.leaderboard-item.rank-2 { + background: linear-gradient(135deg, rgba(255, 0, 255, 0.2), rgba(204, 0, 255, 0.15)); + border: 2px solid rgba(255, 0, 255, 0.5); + box-shadow: 0 0 18px rgba(255, 0, 255, 0.3); +} + +.leaderboard-item.rank-2:hover { + box-shadow: 0 0 30px rgba(255, 0, 255, 0.5); +} + +/* ========== RANK 3 - THIRD PLACE ========== */ +.leaderboard-item.rank-3 { + background: linear-gradient(135deg, rgba(138, 43, 226, 0.25), rgba(75, 0, 130, 0.2)); + border: 2px solid rgba(138, 43, 226, 0.5); + box-shadow: 0 0 15px rgba(138, 43, 226, 0.3); +} + +.leaderboard-item.rank-3:hover { + box-shadow: 0 0 25px rgba(138, 43, 226, 0.5); +} + +/* ========== RANK BADGE ========== */ +.rank-badge { + width: 45px; + height: 45px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-size: 17px; + font-weight: bold; + flex-shrink: 0; + transition: all 0.3s ease; +} + +.rank-1 .rank-badge { + background: linear-gradient(135deg, #00eaff, #00ff88); + color: #0c001a; + box-shadow: 0 0 20px rgba(0, 234, 255, 0.8); + animation: pulseBadge 2s ease-in-out infinite; +} + +.rank-2 .rank-badge { + background: linear-gradient(135deg, #ff00ff, #cc00ff); + color: #ffffff; + box-shadow: 0 0 18px rgba(255, 0, 255, 0.7); +} + +.rank-3 .rank-badge { + background: linear-gradient(135deg, #8a2be2, #4b0082); + color: #ffffff; + box-shadow: 0 0 15px rgba(138, 43, 226, 0.6); +} + +.rank-other .rank-badge { + background: rgba(60, 20, 80, 0.8); + color: rgba(200, 200, 255, 0.7); + border: 1px solid rgba(0, 255, 255, 0.3); +} + +@keyframes pulseBadge { + 0%, 100% { + transform: scale(1); + box-shadow: 0 0 20px rgba(0, 234, 255, 0.8); + } + 50% { + transform: scale(1.1); + box-shadow: 0 0 30px rgba(0, 234, 255, 1); + } +} + +/* ========== PLAYER INFO ========== */ +.player-info { + flex: 1; + display: flex; + flex-direction: column; + gap: 4px; + min-width: 0; +} + +.player-name { + font-weight: 700; + font-size: 18px; + color: #e1e8ff; + text-shadow: 0 0 8px rgba(0, 234, 255, 0.3); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.rank-1 .player-name { + background: linear-gradient(90deg, #00eaff, #00ff88); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-shadow: none; + filter: drop-shadow(0 0 6px rgba(0, 234, 255, 0.5)); + font-size: 19px; +} + +.player-level { + font-size: 12px; + color: rgba(200, 200, 255, 0.6); + text-transform: uppercase; + letter-spacing: 1px; +} + +.rank-1 .player-level { + color: rgba(0, 255, 136, 0.8); +} + +/* ========== SCORE ========== */ +.player-score { + font-weight: 700; + font-size: 18px; + color: #00eaff; + text-shadow: 0 0 12px rgba(0, 234, 255, 0.7); + display: flex; + flex-direction: column; + align-items: flex-end; + gap: 3px; + flex-shrink: 0; +} + +.score-value { + font-size: 22px; +} + +.rank-1 .score-value { + font-size: 25px; + background: linear-gradient(90deg, #00eaff, #ff00ff); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + filter: drop-shadow(0 0 10px rgba(0, 234, 255, 0.8)); +} + +.rank-2 .player-score { + color: #ff00ff; + text-shadow: 0 0 12px rgba(255, 0, 255, 0.7); +} + +.rank-3 .player-score { + color: #a855f7; + text-shadow: 0 0 12px rgba(138, 43, 226, 0.6); +} + +.score-label { + font-size: 11px; + text-transform: uppercase; + letter-spacing: 1px; + color: rgba(200, 200, 255, 0.5); +} + +/* ========== YOUR RANK HIGHLIGHT ========== */ +.leaderboard-item.your-rank { + border-color: #00ff88 !important; + box-shadow: + 0 0 25px rgba(0, 255, 136, 0.6), + inset 0 0 20px rgba(0, 255, 136, 0.15) !important; +} + +.leaderboard-item.your-rank::after { + content: 'YOU'; + position: absolute; + right: -8px; + top: -10px; + background: linear-gradient(135deg, #00ff88, #00eaff); + color: #0c001a; + font-size: 11px; + font-weight: bold; + padding: 5px 10px; + border-radius: 8px; + box-shadow: 0 0 15px rgba(0, 255, 136, 0.8); + letter-spacing: 1px; +} + +/* ========== EMPTY STATE ========== */ +.leaderboard-empty { + text-align: center; + padding: 40px 20px; + color: rgba(200, 200, 255, 0.5); + font-size: 16px; + border: 2px dashed rgba(0, 255, 255, 0.2); + border-radius: 14px; + background: rgba(30, 0, 50, 0.3); +} + +.leaderboard-empty::before { + content: '🎮'; + display: block; + font-size: 50px; + margin-bottom: 12px; + opacity: 0.6; + filter: drop-shadow(0 0 10px rgba(0, 234, 255, 0.4)); +} + +/* ========== STATS SECTION (OPTIONAL) ========== */ +.stats-container { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 15px; + margin-bottom: 30px; +} + +.stat-box { + background: rgba(30, 0, 50, 0.5); + border: 1px solid rgba(0, 255, 255, 0.2); + border-radius: 12px; + padding: 16px 12px; + text-align: center; + transition: all 0.3s ease; +} + +.stat-box:hover { + border-color: rgba(0, 255, 255, 0.5); + box-shadow: 0 0 15px rgba(0, 255, 255, 0.3); +} + +.stat-label { + font-size: 11px; + text-transform: uppercase; + letter-spacing: 1px; + color: rgba(200, 200, 255, 0.6); + margin-bottom: 6px; +} + +.stat-value { + font-size: 22px; + font-weight: bold; + color: #00eaff; + text-shadow: 0 0 10px rgba(0, 234, 255, 0.6); +} + +/* ========== RESPONSIVE ========== */ +@media (max-width: 768px) { + .container { + padding: 35px 30px; + max-width: 90%; + } + + h1 { + font-size: 2rem; + gap: 12px; + } + + h1::before { + font-size: 1.8rem; + } + + .leaderboard-item { + padding: 16px 20px; + gap: 16px; + } + + .rank-badge { + width: 40px; + height: 40px; + font-size: 16px; + } + + .player-name { + font-size: 17px; + } + + .rank-1 .player-name { + font-size: 18px; + } + + .score-value { + font-size: 20px; + } + + .rank-1 .score-value { + font-size: 23px; + } + + .stats-container { + gap: 12px; + } + + .stat-box { + padding: 14px 10px; + } + + .stat-value { + font-size: 20px; + } +} + +@media (max-width: 480px) { + .container { + padding: 25px 20px; + max-width: 95%; + } + + h1 { + font-size: 1.6rem; + gap: 8px; + margin-bottom: 25px; + } + + h1::before { + font-size: 1.4rem; + } + + .leaderboard-item { + padding: 12px 14px; + gap: 10px; + } + + .rank-badge { + width: 32px; + height: 32px; + font-size: 13px; + } + + .player-name { + font-size: 14px; + } + + .rank-1 .player-name { + font-size: 15px; + } + + .player-level { + font-size: 10px; + } + + .score-value { + font-size: 15px; + } + + .rank-1 .score-value { + font-size: 17px; + } + + .score-label { + font-size: 9px; + } + + .stats-container { + gap: 8px; + margin-bottom: 20px; + } + + .stat-box { + padding: 10px 6px; + } + + .stat-value { + font-size: 16px; + } + + .stat-label { + font-size: 9px; + } +} + +@media (max-width: 360px) { + .container { + padding: 20px 15px; + } + + h1 { + font-size: 1.4rem; + } + + .leaderboard-item { + padding: 10px 12px; + gap: 8px; + } + + .rank-badge { + width: 28px; + height: 28px; + font-size: 12px; + } + + .player-name { + font-size: 13px; + } + + .score-value { + font-size: 14px; + } +} \ No newline at end of file diff --git a/Leaderboard.html b/Leaderboard.html new file mode 100644 index 0000000..55cc7a6 --- /dev/null +++ b/Leaderboard.html @@ -0,0 +1,111 @@ + + +
+ + +