| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>User Strikes Dashboard</title> |
| <style> |
| @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap'); |
| |
| * { |
| margin: 0; |
| padding: 0; |
| box-sizing: border-box; |
| } |
| |
| body { |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; |
| background: radial-gradient(ellipse at top, #0f0728, #000000), |
| linear-gradient(135deg, #1a0033 0%, #0d0221 50%, #000000 100%); |
| color: #ffffff; |
| min-height: 100vh; |
| overflow-x: hidden; |
| position: relative; |
| font-weight: 400; |
| } |
| |
| |
| .bg-effects { |
| position: fixed; |
| top: 0; |
| left: 0; |
| width: 100%; |
| height: 100%; |
| pointer-events: none; |
| z-index: 1; |
| } |
| |
| .floating-orbs { |
| position: absolute; |
| width: 100%; |
| height: 100%; |
| } |
| |
| .orb { |
| position: absolute; |
| border-radius: 50%; |
| background: radial-gradient(circle at 30% 30%, rgba(138, 43, 226, 0.8), rgba(75, 0, 130, 0.4), transparent); |
| filter: blur(1px); |
| animation: float-orb 8s infinite ease-in-out; |
| } |
| |
| .orb:nth-child(1) { width: 200px; height: 200px; top: 10%; left: 10%; animation-delay: 0s; } |
| .orb:nth-child(2) { width: 150px; height: 150px; top: 60%; right: 15%; animation-delay: -2s; } |
| .orb:nth-child(3) { width: 100px; height: 100px; bottom: 20%; left: 20%; animation-delay: -4s; } |
| .orb:nth-child(4) { width: 120px; height: 120px; top: 30%; right: 40%; animation-delay: -6s; } |
| |
| @keyframes float-orb { |
| 0%, 100% { transform: translateY(0px) translateX(0px) scale(1); opacity: 0.3; } |
| 25% { transform: translateY(-30px) translateX(20px) scale(1.1); opacity: 0.5; } |
| 50% { transform: translateY(-10px) translateX(-15px) scale(0.9); opacity: 0.4; } |
| 75% { transform: translateY(20px) translateX(25px) scale(1.05); opacity: 0.6; } |
| } |
| |
| .particles { |
| position: absolute; |
| width: 100%; |
| height: 100%; |
| } |
| |
| .particle { |
| position: absolute; |
| width: 2px; |
| height: 2px; |
| background: linear-gradient(45deg, #9d4edd, #c77dff); |
| border-radius: 50%; |
| animation: particle-float 12s infinite linear; |
| box-shadow: 0 0 6px rgba(157, 78, 221, 0.6); |
| } |
| |
| @keyframes particle-float { |
| 0% { transform: translateY(100vh) translateX(0) rotate(0deg); opacity: 0; } |
| 10% { opacity: 1; } |
| 90% { opacity: 1; } |
| 100% { transform: translateY(-10vh) translateX(100px) rotate(360deg); opacity: 0; } |
| } |
| |
| .grid-overlay { |
| position: absolute; |
| top: 0; |
| left: 0; |
| right: 0; |
| bottom: 0; |
| background-image: |
| linear-gradient(rgba(157, 78, 221, 0.03) 1px, transparent 1px), |
| linear-gradient(90deg, rgba(157, 78, 221, 0.03) 1px, transparent 1px); |
| background-size: 50px 50px; |
| animation: grid-move 20s linear infinite; |
| } |
| |
| @keyframes grid-move { |
| 0% { transform: translate(0, 0); } |
| 100% { transform: translate(50px, 50px); } |
| } |
| |
| .container { |
| position: relative; |
| z-index: 2; |
| max-width: 1200px; |
| margin: 0 auto; |
| padding: 60px 20px; |
| min-height: 100vh; |
| } |
| |
| .header { |
| text-align: center; |
| margin-bottom: 60px; |
| animation: slideDown 1.2s cubic-bezier(0.22, 1, 0.36, 1); |
| } |
| |
| .header h1 { |
| font-size: clamp(2.5rem, 5vw, 4rem); |
| font-weight: 900; |
| background: linear-gradient(135deg, #ffffff 0%, #c77dff 25%, #9d4edd 50%, #7209b7 75%, #480ca8 100%); |
| -webkit-background-clip: text; |
| -webkit-text-fill-color: transparent; |
| background-clip: text; |
| margin-bottom: 16px; |
| letter-spacing: -0.02em; |
| position: relative; |
| } |
| |
| .header h1::after { |
| content: ''; |
| position: absolute; |
| bottom: -10px; |
| left: 50%; |
| transform: translateX(-50%); |
| width: 100px; |
| height: 3px; |
| background: linear-gradient(90deg, transparent, #9d4edd, transparent); |
| border-radius: 2px; |
| } |
| |
| .header p { |
| font-size: 1.1rem; |
| opacity: 0.7; |
| letter-spacing: 0.5px; |
| font-weight: 400; |
| margin-top: 20px; |
| } |
| |
| .dashboard { |
| display: grid; |
| grid-template-columns: repeat(12, 1fr); |
| gap: 24px; |
| animation: fadeInUp 1.2s cubic-bezier(0.22, 1, 0.36, 1) 0.3s both; |
| } |
| |
| .card { |
| background: rgba(255, 255, 255, 0.02); |
| backdrop-filter: blur(20px); |
| border: 1px solid rgba(157, 78, 221, 0.1); |
| border-radius: 24px; |
| padding: 32px; |
| position: relative; |
| overflow: hidden; |
| transition: all 0.4s cubic-bezier(0.22, 1, 0.36, 1); |
| box-shadow: |
| 0 8px 32px rgba(0, 0, 0, 0.3), |
| inset 0 1px 0 rgba(255, 255, 255, 0.1); |
| } |
| |
| .card:hover { |
| transform: translateY(-8px) scale(1.02); |
| box-shadow: |
| 0 20px 60px rgba(157, 78, 221, 0.2), |
| 0 8px 32px rgba(0, 0, 0, 0.4), |
| inset 0 1px 0 rgba(255, 255, 255, 0.2); |
| border-color: rgba(157, 78, 221, 0.3); |
| } |
| |
| .card::before { |
| content: ''; |
| position: absolute; |
| top: 0; |
| left: -100%; |
| width: 100%; |
| height: 100%; |
| background: linear-gradient(90deg, transparent, rgba(255,255,255,0.1), transparent); |
| transition: left 0.6s cubic-bezier(0.22, 1, 0.36, 1); |
| } |
| |
| .card:hover::before { |
| left: 100%; |
| } |
| |
| .card::after { |
| content: ''; |
| position: absolute; |
| top: 0; |
| left: 0; |
| right: 0; |
| height: 1px; |
| background: linear-gradient(90deg, transparent, rgba(157, 78, 221, 0.5), transparent); |
| } |
| |
| .strikes-display { |
| grid-column: 1 / -1; |
| text-align: center; |
| background: rgba(0, 0, 0, 0.4); |
| border: 2px solid rgba(157, 78, 221, 0.3); |
| position: relative; |
| min-height: 300px; |
| display: flex; |
| flex-direction: column; |
| justify-content: center; |
| } |
| |
| .strikes-display::before { |
| content: ''; |
| position: absolute; |
| inset: -2px; |
| background: linear-gradient(45deg, #9d4edd, #c77dff, #9d4edd); |
| border-radius: 24px; |
| padding: 2px; |
| -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); |
| -webkit-mask-composite: exclude; |
| mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); |
| mask-composite: exclude; |
| animation: border-glow 3s ease-in-out infinite alternate; |
| } |
| |
| @keyframes border-glow { |
| 0% { opacity: 0.5; } |
| 100% { opacity: 1; } |
| } |
| |
| .strikes-number { |
| font-size: clamp(4rem, 12vw, 8rem); |
| font-weight: 900; |
| margin: 20px 0; |
| letter-spacing: -0.05em; |
| position: relative; |
| display: inline-block; |
| } |
| |
| .strikes-0 { |
| color: #00ff88; |
| text-shadow: |
| 0 0 20px rgba(0, 255, 136, 0.5), |
| 0 0 40px rgba(0, 255, 136, 0.3), |
| 0 0 60px rgba(0, 255, 136, 0.1); |
| } |
| |
| .strikes-1 { |
| color: #ffd700; |
| text-shadow: |
| 0 0 20px rgba(255, 215, 0, 0.5), |
| 0 0 40px rgba(255, 215, 0, 0.3), |
| 0 0 60px rgba(255, 215, 0, 0.1); |
| } |
| |
| .strikes-2 { |
| color: #ff6b35; |
| text-shadow: |
| 0 0 20px rgba(255, 107, 53, 0.5), |
| 0 0 40px rgba(255, 107, 53, 0.3), |
| 0 0 60px rgba(255, 107, 53, 0.1); |
| } |
| |
| .strikes-3-plus { |
| color: #ff0040; |
| text-shadow: |
| 0 0 20px rgba(255, 0, 64, 0.6), |
| 0 0 40px rgba(255, 0, 64, 0.4), |
| 0 0 60px rgba(255, 0, 64, 0.2); |
| animation: danger-pulse 2s ease-in-out infinite; |
| } |
| |
| @keyframes danger-pulse { |
| 0%, 100% { transform: scale(1); filter: brightness(1); } |
| 50% { transform: scale(1.05); filter: brightness(1.2); } |
| } |
| |
| .strikes-message { |
| font-size: 1.5rem; |
| margin-top: 20px; |
| font-weight: 700; |
| letter-spacing: 2px; |
| text-transform: uppercase; |
| } |
| |
| .strikes-description { |
| font-size: 1rem; |
| margin-top: 16px; |
| opacity: 0.8; |
| max-width: 600px; |
| margin-left: auto; |
| margin-right: auto; |
| line-height: 1.6; |
| font-weight: 400; |
| } |
| |
| .warning-icon { |
| position: absolute; |
| top: 24px; |
| right: 24px; |
| font-size: 2.5rem; |
| opacity: 0.4; |
| animation: icon-glow 3s ease-in-out infinite alternate; |
| } |
| |
| @keyframes icon-glow { |
| 0% { opacity: 0.4; transform: scale(1); } |
| 100% { opacity: 0.8; transform: scale(1.1); } |
| } |
| |
| .info-card { |
| grid-column: span 6; |
| } |
| |
| .card-title { |
| font-size: 1.3rem; |
| margin-bottom: 24px; |
| color: #c77dff; |
| display: flex; |
| align-items: center; |
| gap: 12px; |
| font-weight: 600; |
| text-transform: uppercase; |
| letter-spacing: 1px; |
| } |
| |
| .card-title::before { |
| content: ''; |
| width: 8px; |
| height: 8px; |
| background: linear-gradient(45deg, #9d4edd, #c77dff); |
| border-radius: 50%; |
| box-shadow: 0 0 20px rgba(157, 78, 221, 0.6); |
| animation: dot-pulse 2s ease-in-out infinite; |
| } |
| |
| @keyframes dot-pulse { |
| 0%, 100% { transform: scale(1); opacity: 1; } |
| 50% { transform: scale(1.3); opacity: 0.7; } |
| } |
| |
| .info-item { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| padding: 18px 0; |
| border-bottom: 1px solid rgba(157, 78, 221, 0.1); |
| transition: all 0.3s ease; |
| } |
| |
| .info-item:last-child { |
| border-bottom: none; |
| } |
| |
| .info-item:hover { |
| background: rgba(157, 78, 221, 0.05); |
| margin: 0 -16px; |
| padding: 18px 16px; |
| border-radius: 12px; |
| } |
| |
| .info-label { |
| font-weight: 500; |
| opacity: 0.7; |
| text-transform: uppercase; |
| letter-spacing: 0.5px; |
| font-size: 0.85rem; |
| } |
| |
| .info-value { |
| font-size: 1.1rem; |
| font-weight: 600; |
| color: #ffffff; |
| text-align: right; |
| } |
| |
| .status-badge { |
| display: inline-block; |
| padding: 6px 12px; |
| border-radius: 20px; |
| font-size: 0.8rem; |
| font-weight: 600; |
| text-transform: uppercase; |
| letter-spacing: 0.5px; |
| } |
| |
| .badge-clean { |
| background: rgba(0, 255, 136, 0.2); |
| color: #00ff88; |
| border: 1px solid rgba(0, 255, 136, 0.3); |
| } |
| |
| .badge-warning { |
| background: rgba(255, 215, 0, 0.2); |
| color: #ffd700; |
| border: 1px solid rgba(255, 215, 0, 0.3); |
| } |
| |
| .badge-danger { |
| background: rgba(255, 0, 64, 0.2); |
| color: #ff0040; |
| border: 1px solid rgba(255, 0, 64, 0.3); |
| } |
| |
| @keyframes slideDown { |
| from { |
| opacity: 0; |
| transform: translateY(-60px); |
| } |
| to { |
| opacity: 1; |
| transform: translateY(0); |
| } |
| } |
| |
| @keyframes fadeInUp { |
| from { |
| opacity: 0; |
| transform: translateY(60px); |
| } |
| to { |
| opacity: 1; |
| transform: translateY(0); |
| } |
| } |
| |
| .no-data { |
| grid-column: 1 / -1; |
| text-align: center; |
| padding: 80px 20px; |
| opacity: 0.6; |
| } |
| |
| .no-data h2 { |
| font-size: 2.5rem; |
| margin-bottom: 20px; |
| color: #9d4edd; |
| font-weight: 700; |
| } |
| |
| .loading-spinner { |
| display: inline-block; |
| width: 40px; |
| height: 40px; |
| border: 3px solid rgba(157, 78, 221, 0.3); |
| border-radius: 50%; |
| border-top-color: #9d4edd; |
| animation: spin 1s ease-in-out infinite; |
| margin-top: 20px; |
| } |
| |
| @keyframes spin { |
| to { transform: rotate(360deg); } |
| } |
| |
| @media (max-width: 968px) { |
| .info-card { |
| grid-column: span 12; |
| } |
| } |
| |
| @media (max-width: 768px) { |
| .container { |
| padding: 40px 16px; |
| } |
| |
| .dashboard { |
| gap: 16px; |
| } |
| |
| .card { |
| padding: 24px; |
| } |
| |
| .info-item { |
| flex-direction: column; |
| align-items: flex-start; |
| gap: 8px; |
| } |
| |
| .info-value { |
| text-align: left; |
| } |
| } |
| </style> |
| </head> |
| <body> |
| |
| <div class="bg-effects"> |
| <div class="grid-overlay"></div> |
| <div class="floating-orbs"> |
| <div class="orb"></div> |
| <div class="orb"></div> |
| <div class="orb"></div> |
| <div class="orb"></div> |
| </div> |
| <div class="particles" id="particles"></div> |
| </div> |
|
|
| <div class="container"> |
| <div class="header"> |
| <h1>User Strike Dashboard</h1> |
| <p>Advanced Content Moderation System</p> |
| </div> |
|
|
| <div id="content" class="dashboard"> |
| <div class="no-data"> |
| <h2>Initializing Dashboard</h2> |
| <p>Loading user data from URL parameters...</p> |
| <div class="loading-spinner"></div> |
| </div> |
| </div> |
| </div> |
|
|
| <script> |
| |
| function createParticles() { |
| const particles = document.getElementById('particles'); |
| const particleCount = 80; |
| |
| for (let i = 0; i < particleCount; i++) { |
| const particle = document.createElement('div'); |
| particle.className = 'particle'; |
| particle.style.left = Math.random() * 100 + '%'; |
| particle.style.animationDelay = Math.random() * 12 + 's'; |
| particle.style.animationDuration = (Math.random() * 6 + 8) + 's'; |
| particles.appendChild(particle); |
| } |
| } |
| |
| |
| function getUrlParams() { |
| const urlParams = new URLSearchParams(window.location.search); |
| return { |
| group: urlParams.get('group') || 'N/A', |
| chat_id: urlParams.get('chat_id') || 'N/A', |
| userid: urlParams.get('userid') || 'N/A', |
| username: urlParams.get('username') || 'N/A', |
| strikes: parseInt(urlParams.get('strikes')) || 0 |
| }; |
| } |
| |
| |
| function getStrikeInfo(strikes) { |
| if (strikes === 0) { |
| return { |
| class: 'strikes-0', |
| message: 'Clean Record', |
| description: 'This user has maintained an excellent standing with zero violations. They consistently follow all community guidelines and contribute positively to the platform.', |
| icon: '✅', |
| badge: 'badge-clean', |
| status: 'Excellent Standing' |
| }; |
| } else if (strikes === 1) { |
| return { |
| class: 'strikes-1', |
| message: 'First Warning', |
| description: 'User received their initial strike for posting inappropriate content. This serves as a formal warning to review and adhere to community guidelines.', |
| icon: '⚠️', |
| badge: 'badge-warning', |
| status: 'Warning Issued' |
| }; |
| } else if (strikes === 2) { |
| return { |
| class: 'strikes-2', |
| message: 'Final Warning', |
| description: 'User has accumulated 2 strikes for repeated violations. This is their final warning before facing potential account restrictions or suspension.', |
| icon: '🚨', |
| badge: 'badge-warning', |
| status: 'Final Warning' |
| }; |
| } else { |
| return { |
| class: 'strikes-3-plus', |
| message: 'Critical Status', |
| description: 'User has exceeded the violation threshold with multiple infractions. Immediate review required for potential account suspension or permanent ban.', |
| icon: '🔴', |
| badge: 'badge-danger', |
| status: 'Under Review' |
| }; |
| } |
| } |
| |
| |
| function displayUserInfo() { |
| const params = getUrlParams(); |
| const strikeInfo = getStrikeInfo(params.strikes); |
| |
| const content = ` |
| <div class="strikes-display card"> |
| <div class="warning-icon">${strikeInfo.icon}</div> |
| <div class="card-title">Strike Status Overview</div> |
| <div class="strikes-number ${strikeInfo.class}">${params.strikes}</div> |
| <div class="strikes-message ${strikeInfo.class}">${strikeInfo.message}</div> |
| <div class="strikes-description">${strikeInfo.description}</div> |
| </div> |
| |
| <div class="card info-card"> |
| <div class="card-title">👤 User Profile</div> |
| <div class="info-item"> |
| <span class="info-label">Username</span> |
| <span class="info-value">@${params.username}</span> |
| </div> |
| <div class="info-item"> |
| <span class="info-label">User ID</span> |
| <span class="info-value">${params.userid}</span> |
| </div> |
| <div class="info-item"> |
| <span class="info-label">Group Name</span> |
| <span class="info-value">${params.group}</span> |
| </div> |
| <div class="info-item"> |
| <span class="info-label">Chat ID</span> |
| <span class="info-value">${params.chat_id}</span> |
| </div> |
| </div> |
| |
| <div class="card info-card"> |
| <div class="card-title">⚖️ Moderation Details</div> |
| <div class="info-item"> |
| <span class="info-label">Total Strikes</span> |
| <span class="info-value">${params.strikes}/3</span> |
| </div> |
| <div class="info-item"> |
| <span class="info-label">Violation Type</span> |
| <span class="info-value">NSFW Content</span> |
| </div> |
| <div class="info-item"> |
| <span class="info-label">Account Status</span> |
| <span class="info-value"> |
| <span class="status-badge ${strikeInfo.badge}">${strikeInfo.status}</span> |
| </span> |
| </div> |
| <div class="info-item"> |
| <span class="info-label">Action Required</span> |
| <span class="info-value">${ |
| params.strikes === 0 ? 'None' : |
| params.strikes >= 3 ? 'Immediate Review' : |
| params.strikes === 2 ? 'Final Warning' : 'Monitoring' |
| }</span> |
| </div> |
| <div class="info-item"> |
| <span class="info-label">Risk Level</span> |
| <span class="info-value">${ |
| params.strikes === 0 ? 'Low' : |
| params.strikes === 1 ? 'Medium' : |
| params.strikes === 2 ? 'High' : 'Critical' |
| }</span> |
| </div> |
| </div> |
| `; |
| |
| document.getElementById('content').innerHTML = content; |
| document.getElementById('content').className = 'dashboard'; |
| } |
| |
| |
| function init() { |
| createParticles(); |
| |
| setTimeout(displayUserInfo, 800); |
| } |
| |
| |
| window.addEventListener('load', init); |
| |
| |
| document.documentElement.style.scrollBehavior = 'smooth'; |
| </script> |
| </body> |
| </html> |