301 yanıt kodu, istenen kaynağın kalıcı olarak yeni bir URL'ye taşındığı anlamına gelir. Gelecekteki tüm istekler yeni adresi kullanmalıdır.
Tarayıcı kullanıcıyı otomatik olarak yeni adrese yönlendirecek ve arama motorları dizinlerini güncelleyecektir.
302 yanıt kodu, istenen kaynağın geçici olarak farklı bir URL'de mevcut olduğunu gösterir.
Kullanıcı otomatik olarak yeni URL'ye yönlendirilir, ancak arama motorları eski adresi dizine eklemeye devam eder.
200 yanıt kodu, standart bir başarılı HTTP sunucu yanıtıdır. Bu, istemcinin isteğinin (örneğin, bir tarayıcıdan) başarıyla işlendiği ve sunucunun istenen verileri ilettiği anlamına gelir.
Kullanıcı içeriği hatasız alır ve sayfa veya uygulama düzgün çalışır. Kod 200'e veri eşlik ediyorsa, tarayıcı veya program bunu işler ve kullanıcıya görüntüler.
GET / HTTP/1.1 Host: xmn1.com Accept: */* User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Xminer - Enhanced Interactive Game</title> <link rel="icon" type="image/x-icon" href="/static/favicon.ico"> <link rel="icon" type="image/png" sizes="32x32" href="/static/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="/static/favicon-16x16.png"> <link rel="apple-touch-icon" sizes="180x180" href="/static/apple-touch-icon.png"> <link rel="manifest" href="/static/site.webmanifest"> <!-- External CSS and JS --> <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/leaflet.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet" /> <link rel="stylesheet" href="/static/css/styles.css" /> <!-- Shepherd.js CSS --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/shepherd.css"/> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/leaflet.js"></script> <script src="/static/js/scripts.js" defer></script> <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> <style> /* Welcome Modal Styles */ .welcome-text { font-size: 2rem; font-weight: bold; color: #00ff88; display: block; margin-bottom: 0.5rem; } .subtitle { font-size: 1.2rem; color: #aaa; display: block; } .welcome-stats { display: flex; justify-content: space-around; margin: 2rem 0; } .stat-item { text-align: center; } .stat-item i { font-size: 2rem; color: #00ff88; margin-bottom: 0.5rem; } .stat-value { font-size: 1.5rem; font-weight: bold; color: #fff; } .stat-label { color: #aaa; font-size: 0.9rem; } .welcome-message { color: #ddd; line-height: 1.6; margin: 2rem 0; } .features-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; margin: 2rem 0; } .feature-item { display: flex; align-items: center; gap: 1rem; padding: 1rem; background: rgba(255, 255, 255, 0.05); border-radius: 8px; } .feature-item i { color: #00ff88; } .modal-content { background: linear-gradient(135deg, #1a1a2e, #16213e); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 15px; } .modal-header { border-bottom: 1px solid rgba(255, 255, 255, 0.1); } .btn-close-white { filter: invert(1) grayscale(100%) brightness(200%); } /* End Welcome Modal Styles */ /* Reset and General Styles */ * { margin: 0; padding: 0; box-sizing: border-box; } body { background: linear-gradient(135deg, #1a1a2e, #16213e); color: #fff; font-family: 'Poppins', sans-serif; overflow-x: hidden; } /* ----------------- Loading Screen Styles ----------------- */ #loading-screen { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: #000; display: flex; justify-content: center; align-items: center; z-index: 9999; transition: opacity 0.5s ease; } .loading-content { text-align: center; color: #00ff88; } .loading-logo { width: 200px; margin-bottom: 20px; } .loading-spinner { border: 4px solid rgba(0, 255, 136, 0.3); border-top: 4px solid #00ff88; border-radius: 50%; width: 50px; height: 50px; animation: spin 1s linear infinite; margin: 0 auto; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* ----------------- End Loading Screen Styles ----------------- */ /* Navbar */ .navbar { background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); border-bottom: 1px solid rgba(255, 255, 255, 0.2); padding: 15px 0; } .navbar-brand { font-size: 2rem; font-weight: 700; color: #00ff88 !important; letter-spacing: 2px; text-transform: uppercase; position: relative; display: inline-block; padding: 10px 15px; transition: all 0.3s ease-in-out; font-family: 'Arial', sans-serif; text-shadow: 0 0 10px rgba(0, 255, 136, 0.5), 0 0 20px rgba(0, 255, 136, 0.3), 0 0 30px rgba(0, 255, 136, 0.2); animation: glow 2s ease-in-out infinite alternate; margin-bottom: 8px; } .navbar-brand::before, .navbar-brand::after { content: ''; position: absolute; left: 0; height: 4px; width: 100%; transition: all 0.3s ease; } .navbar-brand::before { bottom: -8px; background: #005BBB; } .navbar-brand::after { bottom: -12px; background: #FFD700; } .navbar-brand:hover { color: #e0f39f !important; transform: scale(1.1) rotate(2deg); text-shadow: 0 0 20px rgba(0, 255, 136, 0.8), 0 0 30px rgba(0, 255, 136, 0.6), 0 0 40px rgba(0, 255, 136, 0.4); animation: neonPulse 1.5s ease-in-out infinite; } .navbar-brand:hover::before, .navbar-brand:hover::after { height: 5px; box-shadow: 0 0 10px rgba(255, 255, 255, 0.5); } /* Exchange Button Styles */ .exchange-btn { background: linear-gradient(145deg, #FFD700, #FF8C00); color: #1a1a2e !important; font-weight: 600; padding: 12px 30px; border-radius: 12px; border: 1px solid rgba(255, 215, 0, 0.3); transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); margin: 20px auto; display: flex; align-items: center; justify-content: center; gap: 12px; position: relative; overflow: hidden; font-size: 1rem; box-shadow: 0 4px 15px rgba(255, 215, 0, 0.2); width: 100%; max-width: 300px; animation: pulseGlow 2s infinite; } @keyframes pulseGlow { 0% { box-shadow: 0 0 5px rgba(255, 215, 0, 0.2), 0 0 10px rgba(255, 215, 0, 0.2), 0 0 15px rgba(255, 215, 0, 0.2); } 50% { box-shadow: 0 0 10px rgba(255, 215, 0, 0.4), 0 0 20px rgba(255, 215, 0, 0.4), 0 0 30px rgba(255, 215, 0, 0.4); } 100% { box-shadow: 0 0 5px rgba(255, 215, 0, 0.2), 0 0 10px rgba(255, 215, 0, 0.2), 0 0 15px rgba(255, 215, 0, 0.2); } } .exchange-btn::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent); transition: 0.5s; } .exchange-btn::after { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(145deg, #FFA500, #FFD700); opacity: 0; transition: opacity 0.4s ease; } .exchange-btn:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(255, 215, 0, 0.4); border-color: rgba(255, 215, 0, 0.6); animation: none; } .exchange-btn:hover::before { left: 100%; } .exchange-btn:hover::after { opacity: 1; } .exchange-btn i { font-size: 1.2em; transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1); color: #1a1a2e; position: relative; z-index: 1; } .exchange-btn:hover i { transform: rotate(180deg); } .exchange-btn span { position: relative; z-index: 1; color: #1a1a2e; font-weight: 700; text-shadow: 0 1px 2px rgba(255, 255, 255, 0.3); } .nav-link { color: #fff !important; font-weight: 500; transition: all 0.3s ease; } .nav-link:hover { color: #00ff88 !important; } /* Game Map */ .game-map { height: 500px; border: 2px solid #00ff88; border-radius: 15px; box-shadow: 0 0 20px rgba(0, 255, 136, 0.5); transition: all 0.3s ease; } /* Hide map zoom controls */ .leaflet-control-zoom { display: none !important; } .game-map:hover { transform: translateY(-5px); box-shadow: 0 0 30px rgba(0, 255, 136, 0.8); } /* Map container and country selector */ .map-container { position: relative; } .country-select-overlay { position: absolute; top: 15px; left: 50px; z-index: 1000; background: rgba(26, 26, 46, 0.9); padding: 8px 12px; border-radius: 12px; border: 1px solid rgba(0, 255, 136, 0.2); box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); backdrop-filter: blur(10px); transition: all 0.3s ease; } .country-select-overlay:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(0, 255, 136, 0.15); border-color: rgba(0, 255, 136, 0.4); } .country-select-overlay select { background: transparent; border: none; color: #ffffff; font-size: 0.95rem; padding: 5px 25px 5px 10px; outline: none; appearance: none; cursor: pointer; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2300ff88' d='M6 8.825L1.175 4 2.238 2.938 6 6.7l3.763-3.763L10.825 4z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 8px center; background-size: 12px; } .country-select-overlay select:focus { outline: none; } .country-select-overlay select option { background: #1a1a2e; color: #ffffff; padding: 10px; } @media (max-width: 576px) { .country-select-overlay { top: 10px; left: 10px; padding: 6px 10px; } .country-select-overlay select { font-size: 0.9rem; padding: 4px 20px 4px 8px; } } /* Game Card */ .game-card { background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 15px; padding: 20px; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); transition: all 0.3s ease; } .game-card:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.3); } .card-header { background: rgba(255, 255, 255, 0.1); border-bottom: 1px solid rgba(255, 255, 255, 0.2); font-size: 1.2rem; font-weight: 600; color: #00ff88; } /* Modern Tabs Styling */ .nav-tabs { display: flex; justify-content: center; gap: 5px; border-bottom: none; margin-bottom: 1rem; } .nav-tabs .nav-item { margin-bottom: 0; } .nav-tabs .nav-link { padding: 0; font-size: 1.5rem; width: 40px; height: 40px; line-height: 40px; text-align: center; border-radius: 50%; border: 1px solid transparent; transition: background-color 0.3s ease, transform 0.3s ease; color: #fff; } .nav-tabs .nav-link.active { background: rgba(0,0,0,0.6); border-color: #00ff88; color: #00ff88; transform: scale(1.1); } .nav-tabs .nav-link:hover { background: rgba(0, 0, 0, 0.4); } @media (max-width: 576px) { .nav-tabs { gap: 3px; } .nav-tabs .nav-link { width: 40px; height: 40px; line-height: 40px; font-size: 1.7rem; } } /* Progress Bar */ .progress { height: 25px; border-radius: 15px; overflow: hidden; background: rgba(255, 255, 255, 0.1); box-shadow: inset 0 2px 4px rgba(0,0,0,0.2); } .progress-bar { background: linear-gradient(45deg, #00ff88, #00cc66); font-size: 1rem; font-weight: bold; text-align: center; border-radius: 15px; transition: width 0.5s ease-in-out; } /* Tool Icon */ .tool-icon { width: 50px; height: 50px; border: 2px solid #00ff88; border-radius: 10px; box-shadow: 0 0 10px rgba(0, 255, 136, 0.5); } /* State Icon (3D) */ .state-icon { font-size: 2rem; color: #00ff88; margin-right: 10px; transform: perspective(500px) rotateX(10deg) rotateY(10deg); text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.4); } /* Footer */ .game-footer { background: linear-gradient(135deg, #1a1a2e, #16213e); border-top: 1px solid rgba(0, 255, 136, 0.2); padding: 40px 20px 20px; color: #fff; font-size: 0.9rem; line-height: 1.6; margin-top: 40px; } .footer-content { max-width: 1200px; margin: 0 auto; display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 30px; padding: 0 20px; } .footer-section { background: rgba(255, 255, 255, 0.05); border-radius: 10px; padding: 20px; backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.1); transition: transform 0.3s ease; } .footer-section:hover { transform: translateY(-5px); box-shadow: 0 5px 15px rgba(0, 255, 136, 0.1); } .footer-section h5 { color: #00ff88; font-size: 1.1rem; margin-bottom: 15px; font-weight: 600; position: relative; padding-bottom: 10px; } .footer-section h5::after { content: ''; position: absolute; bottom: 0; left: 0; width: 50px; height: 2px; background: linear-gradient(90deg, #00ff88, transparent); } .footer-section p { margin-bottom: 10px; color: rgba(255, 255, 255, 0.8); } .footer-bottom { text-align: center; margin-top: 30px; padding-top: 20px; border-top: 1px solid rgba(255, 255, 255, 0.1); color: rgba(255, 255, 255, 0.6); } @media (max-width: 768px) { .footer-content { grid-template-columns: 1fr; gap: 20px; } .footer-section { padding: 15px; } .game-footer { padding: 30px 15px 15px; } } /* History Panel */ .history-panel { position: fixed; right: -400px; top: 0; width: 100%; max-width: 400px; height: 100vh; background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); border-left: 1px solid rgba(255, 255, 255, 0.2); box-shadow: -4px 0 10px rgba(0, 0, 0, 0.3); padding: 20px; overflow-y: auto; transition: right 0.4s ease-in-out; z-index: 1000; } .history-panel.show { right: 0; } .panel-header { display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid rgba(255, 255, 255, 0.2); padding-bottom: 10px; margin-bottom: 10px; position: relative; padding-right: 40px; } .panel-header h4 { margin: 0; font-size: 1.2rem; font-weight: 600; color: #00ff88; } .close-btn { background: #ffffff; border-radius: 50%; width: 24px; height: 24px; padding: 0; margin: 0; opacity: 1; transition: all 0.3s ease; position: absolute; right: 1rem; top: 1rem; box-shadow: 0 0 10px rgba(255, 255, 255, 0.3); border: none; cursor: pointer; z-index: 1001; } .close-btn:hover { background: #ffffff; opacity: 0.9; transform: scale(1.1); box-shadow: 0 0 15px rgba(255, 255, 255, 0.5); } .close-btn::before, .close-btn::after { content: ''; position: absolute; width: 14px; height: 2px; background-color: #00ff88; border-radius: 1px; top: 50%; left: 50%; transform-origin: center; } .close-btn::before { transform: translate(-50%, -50%) rotate(45deg); } .close-btn::after { transform: translate(-50%, -50%) rotate(-45deg); } /* Tool Shop Panel (Sliding Panel) */ .toolshop-panel { position: fixed; left: -400px; top: 0; width: 100%; max-width: 400px; height: 100vh; background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); border-right: 1px solid rgba(255, 255, 255, 0.2); box-shadow: 4px 0 10px rgba(0, 0, 0, 0.3); padding: 20px; overflow-y: auto; transition: left 0.4s ease-in-out; z-index: 1000; } .toolshop-panel.show { left: 0; } .toolshop-header { display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid rgba(255, 255, 255, 0.2); padding-bottom: 10px; margin-bottom: 10px; position: relative; padding-right: 40px; } .toolshop-header h4 { font-size: 1.2rem; font-weight: 600; color: #00ff88; margin: 0; } .toolshop-header .btn-close { position: absolute; right: 0; top: 50%; transform: translateY(-50%); } .btn-close { background: none; border: none; font-size: 1.5rem; color: #ffffff; cursor: pointer; } .btn-close:hover { opacity: 1; } /* Responsive Design */ @media (max-width: 768px) { .navbar-brand { font-size: 1.2rem; } .game-map { height: 300px; } .game-card { padding: 15px; } .tool-icon { width: 40px; height: 40px; } .history-panel, .toolshop-panel { width: 100%; max-width: 100%; } } /* Message Panel */ .messages-panel { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 90%; max-width: 500px; background: linear-gradient(145deg, #1a1a2e, #16213e); border-radius: 20px; box-shadow: 0 10px 30px rgba(0, 255, 136, 0.2); padding: 25px; opacity: 0; visibility: hidden; transition: all 0.4s ease-in-out; z-index: 1000; border: 1px solid rgba(0, 255, 136, 0.2); } .messages-panel.show { opacity: 1; visibility: visible; transform: translate(-50%, -50%) scale(1); } .messages-panel .panel-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; padding-bottom: 15px; border-bottom: 1px solid rgba(0, 255, 136, 0.2); position: relative; } .messages-panel .panel-header h4 { color: #00ff88; font-size: 1.3rem; font-weight: 600; margin: 0; display: flex; align-items: center; gap: 10px; padding-right: 40px; } .messages-panel .panel-header h4 i { color: #00ff88; font-size: 1.2rem; } .messages-panel .close-btn { position: absolute; right: 0; top: 50%; transform: translateY(-50%); width: 32px; height: 32px; border-radius: 50%; background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(0, 255, 136, 0.2); color: #00ff88; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.3s ease; font-size: 1.2rem; padding: 0; margin: 0; } .messages-panel .close-btn:hover { background: rgba(0, 255, 136, 0.1); border-color: #00ff88; transform: translateY(-50%) scale(1.1); box-shadow: 0 0 15px rgba(0, 255, 136, 0.2); } .messages-panel .close-btn::before, .messages-panel .close-btn::after { content: ''; position: absolute; width: 14px; height: 2px; background-color: #00ff88; border-radius: 1px; top: 50%; left: 50%; transform-origin: center; } .messages-panel .close-btn::before { transform: translate(-50%, -50%) rotate(45deg); } .messages-panel .close-btn::after { transform: translate(-50%, -50%) rotate(-45deg); } .messages-content { max-height: 400px; overflow-y: auto; padding: 0 5px; margin: 0 -5px; } .messages-content::-webkit-scrollbar { width: 6px; } .messages-content::-webkit-scrollbar-track { background: rgba(255, 255, 255, 0.1); border-radius: 3px; } .messages-content::-webkit-scrollbar-thumb { background: rgba(0, 255, 136, 0.3); border-radius: 3px; } .messages-content::-webkit-scrollbar-thumb:hover { background: rgba(0, 255, 136, 0.5); } .messages-content .list-group-item { background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(0, 255, 136, 0.1); border-radius: 12px; margin-bottom: 10px; padding: 15px; transition: all 0.3s ease; color: #fff; font-size: 0.95rem; line-height: 1.5; } .messages-content .list-group-item:hover { transform: translateX(5px); background: rgba(255, 255, 255, 0.08); border-color: rgba(0, 255, 136, 0.3); box-shadow: 0 5px 15px rgba(0, 255, 136, 0.1); } .messages-content .list-group-item strong { color: #00ff88; font-weight: 600; display: block; margin-bottom: 5px; font-size: 0.9rem; } .messages-content .list-group-item:last-child { margin-bottom: 0; } @media (max-width: 576px) { .messages-panel { width: 95%; padding: 20px; } .messages-panel .panel-header h4 { font-size: 1.1rem; } .messages-content .list-group-item { padding: 12px; font-size: 0.9rem; } } /* Action Pad */ .action-pad { margin-top: 20px; padding: 15px; background: linear-gradient(135deg, #1f1c2c, #928dab); border-radius: 10px; display: flex; flex-wrap: wrap; justify-content: center; gap: 15px; } .action-btn { flex: 1 1 30%; min-width: 90px; background: rgb(0, 0, 0); border: none; color: #fff; font-size: 1rem; padding: 12px 20px; border-radius: 50px; transition: transform 0.3s ease, box-shadow 0.3s ease; display: flex; align-items: center; justify-content: center; position: relative; } .action-btn i { margin-right: 8px; } .action-btn:hover { transform: scale(1.05); box-shadow: 0 0 15px rgba(0, 255, 136, 0.7); } .action-btn.blinking { animation: blinkAnimation 1.5s infinite; } .action-btn.fixed { box-shadow: 0 0 20px rgba(0, 255, 136, 1); } @keyframes blinkAnimation { 0%, 100% { box-shadow: 0 0 5px rgba(0, 255, 136, 0.2); } 50% { box-shadow: 0 0 20px rgba(0, 255, 136, 1); } } @media (max-width: 576px) { .action-pad { flex-wrap: nowrap; } .action-btn { flex: 1 1 33%; padding: 8px 10px; font-size: 0.8rem; } } /* Referral Program */ .referral-card { background: linear-gradient(135deg, #1f1c2c, #928dab); border: 2px solid #00ff88; border-radius: 15px; padding: 15px; box-shadow: 0 0 20px rgba(0, 255, 136, 0.3); margin-top: 20px; } .referral-card h4 { font-family: 'Poppins', sans-serif; font-weight: bold; margin-bottom: 8px; color: #00ff88; } .referral-input { background: rgba(255, 255, 255, 0.1); border: 2px solid #00ff88; border-radius: 50px; padding: 10px 15px; color: #fff; font-size: 1rem; width: 100%; box-sizing: border-box; } .referral-input:focus { outline: none; border-color: #e0f39f; } .referral-btn { background: linear-gradient(45deg, #00ff88, #00cc66); border: none; border-radius: 50px; color: #000; padding: 8px 15px; font-weight: bold; margin-top: 10px; transition: background 0.3s ease, transform 0.3s ease; } .referral-btn:hover { background: linear-gradient(45deg, #00cc66, #00ff88); transform: scale(1.02); } /* Dashboard Enhancements */ .section-title { font-size: 1.1rem; margin-bottom: 10px; color: #00ff88; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); } .dashboard-stat { font-size: 1.1rem; margin-bottom: 10px; padding: 10px; background: rgba(0, 0, 0, 0.3); border-radius: 10px; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3); } .dashboard-stat strong { color: #00ff88; } /* Diamond Rewards Bar */ .diamond-rewards-bar { margin-top: 20px; display: flex; justify-content: space-around; align-items: center; padding: 10px; background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 10px; } .diamond-reward { position: relative; text-align: center; opacity: 0; animation: fadeInUp 0.6s ease forwards; } .diamond-reward:nth-child(1) { animation-delay: 0.1s; } .diamond-reward:nth-child(2) { animation-delay: 0.3s; } .diamond-reward:nth-child(3) { animation-delay: 0.5s; } .diamond-reward:nth-child(4) { animation-delay: 0.7s; } @keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .diamond-reward img { width: 40px; height: 40px; transition: transform 0.3s ease, filter 0.3s ease; } .diamond-reward:hover img { transform: scale(1.1); filter: brightness(1.2); } .diamond-reward .reward-count { position: absolute; top: -20px; right: -10px; background: #111114; color: #ffffff; border-radius: 50%; padding: 2px 6px; font-size: 0.6rem; font-weight: bold; } /* Notification Badge */ #btn-admin { position: relative; } .notification-badge { position: absolute; top: -5px; right: -5px; background: red; color: white; border-radius: 50%; padding: 2px 5px; font-size: 0.7rem; font-weight: bold; } /* ----------------------- Site Stats Bar (Bottom) -------------------------- */ .site-stats-bar { margin-top: 15px; padding: 10px; background: rgba(0, 0, 0, 0.4); border-radius: 8px; box-shadow: 0 0 12px rgba(0, 255, 136, 0.3); animation: fadeInUp 0.8s ease-in-out; } .stats-container { display: flex; justify-content: space-around; align-items: center; flex-wrap: wrap; gap: 8px; } .stats-pad { flex: 1; min-width: 90px; margin: 4px; padding: 6px; background: linear-gradient(135deg, #1f1c2c, #3a3d98); border: 1px solid #00ff88; border-radius: 6px; text-align: center; transition: transform 0.2s ease, box-shadow 0.2s ease; animation: fadeInUp 0.6s ease-in-out; } .stats-pad:hover { transform: scale(1.02); box-shadow: 0 0 8px rgba(0, 255, 136, 0.5); } .stats-title { font-size: 0.8rem; color: #e0f39f; text-shadow: 0 0 2px rgba(0, 0, 0, 0.5); } .stats-value { font-size: 1.6rem; font-weight: bold; color: #fff; } /* Online User Pulse Effect */ .online-marker { display: inline-block; width: 8px; height: 8px; background: #00ff88; border-radius: 50%; margin-left: 3px; vertical-align: middle; animation: pulse 1.2s infinite; } @keyframes pulse { 0% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.3); opacity: 0.6; } 100% { transform: scale(1); opacity: 1; } } /* Animations */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(15px); } to { opacity: 1; transform: translateY(0); } } /* Responsive Design for Mobile */ @media (max-width: 576px) { .stats-container { flex-direction: column; align-items: center; gap: 6px; } .stats-pad { width: 90%; padding: 8px; } .stats-title { font-size: 0.75rem; } .stats-value { font-size: 1.5rem; } } /* XMN Points Package Cards */ .xmn-package-card { background: linear-gradient(145deg, #2c2c44, #1b1f3a); border-radius: 15px; padding: 20px; text-align: center; transition: all 0.3s ease; border: 1px solid rgba(255, 255, 255, 0.1); display: flex; flex-direction: column; justify-content: space-between; height: 100%; } .xmn-package-card.featured { transform: scale(1.02); border: 2px solid #00c6ff; box-shadow: 0 0 20px rgba(0, 198, 255, 0.2); } .xmn-package-card:hover { transform: translateY(-3px); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); } .package-header { margin-bottom: 15px; padding-bottom: 10px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); } .package-header h4 { color: #fff; margin-bottom: 8px; font-size: 1.2rem; font-weight: 600; } .package-header .price { color: #00c6ff; font-size: 1.5rem; font-weight: bold; } .package-body { margin-bottom: 15px; flex-grow: 1; } .points-amount { font-size: 1.8rem; color: #fff; margin-bottom: 8px; font-weight: bold; } .points-rate { color: #888; font-size: 0.85rem; } .purchase-btn { background: linear-gradient(45deg, #00c6ff, #0072ff); border: none; padding: 10px 20px; border-radius: 8px; color: white; font-weight: bold; transition: all 0.3s ease; width: 100%; font-size: 0.9rem; margin-top: auto; } .purchase-btn:hover { transform: translateY(-2px); box-shadow: 0 5px 15px rgba(0, 198, 255, 0.3); } .featured .purchase-btn { background: linear-gradient(45deg, #00ff88, #00c6ff); } @media (max-width: 768px) { .xmn-package-card { margin-bottom: 15px; } } /* Update the XMN Points tab content layout */ #tab-xmn-points .card-body { padding: 15px; } #tab-xmn-points .row { margin: 0 -8px; } #tab-xmn-points .col-md-4 { padding: 0 8px; } /* Payment Modal Styles */ .modal-content { background: linear-gradient(145deg, #1a1a2e, #16213e); border: 1px solid rgba(0, 255, 136, 0.2); box-shadow: 0 0 30px rgba(0, 255, 136, 0.1); max-width: 400px; margin: 0 auto; } .modal-header { border-bottom: 1px solid rgba(0, 255, 136, 0.2); padding: 1rem; position: relative; } .btn-close { background: #ffffff; border-radius: 50%; width: 24px; height: 24px; padding: 0; margin: 0; opacity: 1; transition: all 0.3s ease; position: absolute; right: 1rem; top: 50%; transform: translateY(-50%); box-shadow: 0 0 10px rgba(255, 255, 255, 0.3); border: none; cursor: pointer; } .btn-close:hover { background: #ffffff; opacity: 0.9; transform: translateY(-50%) scale(1.1); box-shadow: 0 0 15px rgba(255, 255, 255, 0.5); } .btn-close::before, .btn-close::after { content: ''; position: absolute; width: 14px; height: 2px; background-color: #00ff88; border-radius: 1px; top: 50%; left: 50%; transform-origin: center; } .btn-close::before { transform: translate(-50%, -50%) rotate(45deg); } .btn-close::after { transform: translate(-50%, -50%) rotate(-45deg); } .modal-header img { width: 24px; height: 24px; } .modal-header .modal-title { font-size: 1.1rem; margin: 0; } .modal-body { padding: 1.25rem; } .network-badge .badge { background: linear-gradient(45deg, #00c6ff, #0072ff); padding: 0.35rem 0.75rem; font-size: 0.8rem; font-weight: 500; letter-spacing: 0.3px; } .payment-content { background: rgba(255, 255, 255, 0.05); border-radius: 12px; padding: 1rem; margin-bottom: 1rem; } .payment-content img { max-width: 180px; border-radius: 8px; box-shadow: 0 0 15px rgba(0, 255, 136, 0.15); transition: transform 0.3s ease; } .payment-content img:hover { transform: scale(1.01); } .timer-circle { width: 90px; height: 90px; border-radius: 50%; background: rgba(0, 255, 136, 0.1); border: 2px solid rgba(0, 255, 136, 0.3); display: flex; flex-direction: column; align-items: center; justify-content: center; margin: 0 auto; animation: pulse 2s infinite; } .timer-circle #countdown { font-size: 1.2rem; margin: 0; } .timer-label { font-size: 0.7rem; color: #00ff88; margin-top: 0.3rem; } .input-group { background: rgba(255, 255, 255, 0.05); border-radius: 8px; overflow: hidden; margin-top: 0.5rem; } .input-group input { border: none; background: transparent; color: #fff; padding: 0.6rem; font-size: 0.9rem; } .input-group .btn { background: linear-gradient(45deg, #00c6ff, #0072ff); border: none; padding: 0.6rem 1rem; font-size: 0.85rem; transition: all 0.3s ease; } .input-group .btn:hover { background: linear-gradient(45deg, #0072ff, #00c6ff); transform: translateY(-1px); } .payment-status { margin-top: 1rem; } .payment-status .spinner-border { width: 1.5rem; height: 1.5rem; } .status-text { font-size: 0.9rem; margin-top: 0.5rem; } @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(0, 255, 136, 0.3); } 70% { box-shadow: 0 0 0 6px rgba(0, 255, 136, 0); } 100% { box-shadow: 0 0 0 0 rgba(0, 255, 136, 0); } } @media (max-width: 576px) { .modal-content { margin: 0.5rem; } .modal-body { padding: 1rem; } .payment-content img { max-width: 160px; } .timer-circle { width: 80px; height: 80px; } .timer-circle #countdown { font-size: 1.1rem; } } /* Info Icon Styles */ .nav-link i.fa-info-circle { color: #00ff88; font-size: 1.2rem; animation: pulse 2s infinite; text-shadow: 0 0 10px rgba(0, 255, 136, 0.5); transition: all 0.3s ease; } .nav-link:hover i.fa-info-circle { animation: rotate 1s ease-in-out; text-shadow: 0 0 15px rgba(0, 255, 136, 0.8); } @keyframes pulse { 0% { transform: scale(1); text-shadow: 0 0 10px rgba(0, 255, 136, 0.5); } 50% { transform: scale(1.1); text-shadow: 0 0 20px rgba(0, 255, 136, 0.8); } 100% { transform: scale(1); text-shadow: 0 0 10px rgba(0, 255, 136, 0.5); } } @keyframes rotate { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Add these styles to your existing CSS */ .reward-image { transition: transform 0.3s ease, filter 0.3s ease; cursor: pointer; } .reward-image:hover { transform: scale(1.1); filter: brightness(1.2) drop-shadow(0 0 10px rgba(0, 255, 136, 0.5)); } .tool-history-item { border-bottom: 1px solid rgba(255, 255, 255, 0.1); padding-bottom: 10px; } .tool-history-item:last-child { border-bottom: none; } .tool-icon { border-radius: 4px; object-fit: cover; } .tool-info { flex: 1; } .tool-info h6 { margin: 0; color: #fff; } .badge { font-size: 0.75rem; padding: 0.25rem 0.5rem; } .footer-links { margin-top: 2rem; padding: 1rem 0; border-top: 1px solid rgba(0, 255, 136, 0.1); } .footer-links-container { display: flex; justify-content: center; gap: 2rem; flex-wrap: wrap; } .footer-link { display: flex; align-items: center; gap: 0.5rem; color: rgba(255, 255, 255, 0.7); text-decoration: none; transition: all 0.3s ease; padding: 0.5rem 1rem; border-radius: 8px; background: rgba(0, 255, 136, 0.05); border: 1px solid rgba(0, 255, 136, 0.1); } .footer-link i { color: #00ff88; font-size: 1.1rem; transition: all 0.3s ease; } .footer-link span { font-size: 0.9rem; font-weight: 500; } .footer-link:hover { background: rgba(0, 255, 136, 0.1); transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0, 255, 136, 0.2); color: #fff; } .footer-link:hover i { transform: scale(1.1); text-shadow: 0 0 10px rgba(0, 255, 136, 0.5); } @media (max-width: 768px) { .footer-links-container { gap: 1rem; } .footer-link { padding: 0.4rem 0.8rem; } .footer-link span { font-size: 0.8rem; } } /* Footer Link Styles */ .footer-link i.fa-headset { color: #00c6ff; font-size: 1.1rem; transition: all 0.3s ease; animation: headsetPulse 2s infinite; text-shadow: 0 0 10px rgba(0, 198, 255, 0.5); } @keyframes headsetPulse { 0% { transform: scale(1); text-shadow: 0 0 10px rgba(0, 198, 255, 0.5); } 50% { transform: scale(1.2); text-shadow: 0 0 20px rgba(0, 198, 255, 0.8), 0 0 30px rgba(0, 198, 255, 0.6); } 100% { transform: scale(1); text-shadow: 0 0 10px rgba(0, 198, 255, 0.5); } } .footer-link:hover i.fa-headset { animation: headsetPulse 1s infinite; color: #00c6ff; transform: rotate(10deg); } .footer-link i.fa-ticket-alt { color: #00ff88; font-size: 1.1rem; transition: all 0.3s ease; } .footer-link:hover i.fa-ticket-alt { transform: rotate(-10deg); color: #00ff88; } /* Stats Section */ .stats-section { padding: 10px; margin-bottom: 20px; } .stats-container { display: flex; gap: 15px; justify-content: center; flex-wrap: wrap; } .stat-card { background: linear-gradient(135deg, rgba(0, 255, 136, 0.1), rgba(0, 200, 255, 0.1)); border-radius: 15px; padding: 15px; min-width: 180px; position: relative; overflow: hidden; border: 1px solid rgba(0, 255, 136, 0.2); box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2); transition: all 0.3s ease; display: flex; align-items: center; gap: 15px; } .stat-icon { width: 45px; height: 45px; background: linear-gradient(135deg, #00ff88, #00c8ff); border-radius: 12px; display: flex; align-items: center; justify-content: center; font-size: 20px; color: #000; box-shadow: 0 4px 12px rgba(0, 255, 136, 0.3); } .stat-label { font-size: 12px; color: rgba(255, 255, 255, 0.7); margin-bottom: 3px; text-transform: uppercase; letter-spacing: 1px; } .stat-value { font-size: 18px; font-weight: 700; color: #00ff88; text-shadow: 0 0 8px rgba(0, 255, 136, 0.3); } @media (max-width: 768px) { .stats-container { flex-direction: column; align-items: center; } .stat-card { width: 100%; max-width: 220px; } } /* Risk Disclosure Section */ .risk-disclosure { background: rgba(0, 0, 0, 0.3); border-radius: 8px; padding: 12px; margin: 15px 0; border: 1px solid rgba(0, 255, 136, 0.1); font-size: 0.75rem; line-height: 1.4; } .risk-disclosure h6 { color: #00ff88; font-size: 0.8rem; margin-bottom: 8px; font-weight: 500; } .risk-disclosure p { color: rgba(255, 255, 255, 0.7); margin-bottom: 8px; font-size: 0.75rem; } .risk-disclosure ul { list-style-type: none; padding-left: 0; margin: 8px 0; } .risk-disclosure ul li { color: rgba(255, 255, 255, 0.7); margin-bottom: 6px; font-size: 0.75rem; display: flex; align-items: flex-start; gap: 8px; } .risk-disclosure ul li i { color: #00ff88; font-size: 0.7rem; margin-top: 2px; } .risk-disclosure .disclaimer { font-size: 0.7rem; color: rgba(255, 255, 255, 0.5); margin-top: 10px; padding-top: 8px; border-top: 1px solid rgba(0, 255, 136, 0.1); } /* Add trust bar styles */ .trust-bar { background: linear-gradient(135deg, #1a1a2e, #16213e); padding: 20px 0; margin-top: 30px; border-top: 1px solid rgba(0, 255, 136, 0.2); border-bottom: 1px solid rgba(0, 255, 136, 0.2); } .trust-section { display: flex; justify-content: center; align-items: center; gap: 30px; flex-wrap: wrap; } .trust-item { display: flex; flex-direction: column; align-items: center; gap: 10px; transition: all 0.3s ease; } .trust-item:hover { transform: translateY(-5px); } .trust-icon { width: 60px; height: 60px; background: rgba(0, 255, 136, 0.1); border-radius: 15px; display: flex; align-items: center; justify-content: center; border: 1px solid rgba(0, 255, 136, 0.2); box-shadow: 0 0 15px rgba(0, 255, 136, 0.1); overflow: hidden; } .trust-icon img { width: 100%; height: 100%; object-fit: contain; padding: 5px; } .trust-label { font-size: 0.9rem; color: #00ff88; text-align: center; text-shadow: 0 0 10px rgba(0, 255, 136, 0.3); } .payment-methods { display: flex; gap: 20px; margin-top: 20px; justify-content: center; flex-wrap: wrap; } .payment-method { width: 50px; height: 30px; background: rgba(0, 255, 136, 0.1); border-radius: 5px; display: flex; align-items: center; justify-content: center; border: 1px solid rgba(0, 255, 136, 0.2); transition: all 0.3s ease; } .payment-method:hover { transform: scale(1.1); box-shadow: 0 0 15px rgba(0, 255, 136, 0.3); } .payment-method i { font-size: 1.2rem; color: #00ff88; } @media (max-width: 768px) { .trust-section { gap: 20px; } .trust-icon { width: 50px; height: 50px; } .trust-icon i { font-size: 1.5rem; } .trust-label { font-size: 0.8rem; } } /* Add these styles for Shepherd.js tutorial */ .shepherd-modal-overlay { background-color: rgba(0, 0, 0, 0.85); backdrop-filter: blur(8px) brightness(0.5); z-index: 9998; transition: all 0.3s ease; } .shepherd-modal-overlay::before { content: ''; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: radial-gradient(circle at center, transparent 0%, rgba(0, 0, 0, 0.9) 100%); pointer-events: none; } .shepherd-element { background: linear-gradient(145deg, #1a1a2e, #16213e); border: 1px solid rgba(0, 255, 136, 0.3); box-shadow: 0 4px 20px rgba(0, 255, 136, 0.2), 0 0 15px rgba(0, 255, 136, 0.15), 0 0 8px rgba(0, 255, 136, 0.1); border-radius: 12px; max-width: 280px; z-index: 9999; animation: tutorialBoxPulse 2s infinite; backdrop-filter: blur(8px); overflow: hidden; font-family: 'Poppins', sans-serif; position: relative; } .shepherd-element::before { content: ''; position: absolute; top: -2px; left: -2px; right: -2px; bottom: -2px; background: linear-gradient(45deg, rgba(0, 255, 136, 0.1), rgba(0, 198, 255, 0.1)); border-radius: 14px; z-index: -1; animation: borderGlow 2s infinite; } @keyframes borderGlow { 0% { opacity: 0.3; transform: scale(1); } 50% { opacity: 0.6; transform: scale(1.02); } 100% { opacity: 0.3; transform: scale(1); } } @keyframes tutorialBoxPulse { 0% { box-shadow: 0 4px 15px rgba(0, 255, 136, 0.2), 0 0 10px rgba(0, 255, 136, 0.15), 0 0 5px rgba(0, 255, 136, 0.1); } 50% { box-shadow: 0 4px 20px rgba(0, 255, 136, 0.3), 0 0 15px rgba(0, 255, 136, 0.25), 0 0 10px rgba(0, 255, 136, 0.2); } 100% { box-shadow: 0 4px 15px rgba(0, 255, 136, 0.2), 0 0 10px rgba(0, 255, 136, 0.15), 0 0 5px rgba(0, 255, 136, 0.1); } } .shepherd-header { background: linear-gradient(90deg, rgba(0, 255, 136, 0.08), rgba(0, 198, 255, 0.08)); padding: 10px 15px; border-bottom: 1px solid rgba(0, 255, 136, 0.15); position: relative; overflow: hidden; } .shepherd-header::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(0, 255, 136, 0.08), transparent); animation: headerShine 3s infinite; } .shepherd-title { color: #00ff88; font-size: 0.9rem; font-weight: 500; margin: 0; text-shadow: 0 0 8px rgba(0, 255, 136, 0.4); position: relative; z-index: 1; letter-spacing: 0.5px; } .shepherd-cancel-icon { color: rgba(255, 255, 255, 0.6); transition: all 0.3s ease; font-size: 1.2rem; line-height: 1; position: relative; z-index: 1; } .shepherd-cancel-icon:hover { opacity: 1; transform: rotate(90deg); color: #00ff88; } .shepherd-text { padding: 12px 15px; color: rgba(255, 255, 255, 0.85); font-size: 0.8rem; line-height: 1.5; background: rgba(0, 0, 0, 0.15); border-radius: 0 0 12px 12px; position: relative; overflow: hidden; letter-spacing: 0.3px; } .shepherd-text::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 1px; background: linear-gradient(90deg, transparent, rgba(0, 255, 136, 0.2), transparent); } .shepherd-footer { padding: 10px 15px; border-top: 1px solid rgba(0, 255, 136, 0.1); display: flex; justify-content: space-between; align-items: center; background: rgba(0, 0, 0, 0.15); } .shepherd-button { background: linear-gradient(45deg, #00ff88, #00cc66); border: none; color: #1a1a2e; font-weight: 500; padding: 6px 12px; border-radius: 6px; font-size: 0.75rem; transition: all 0.3s ease; cursor: pointer; position: relative; overflow: hidden; letter-spacing: 0.5px; } .shepherd-button::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.15), transparent); transition: 0.5s; } .shepherd-button:hover { transform: translateY(-1px); box-shadow: 0 3px 10px rgba(0, 255, 136, 0.3); } .shepherd-button:hover::before { left: 100%; } .shepherd-button.shepherd-button-secondary { background: rgba(255, 255, 255, 0.08); color: rgba(255, 255, 255, 0.9); border: 1px solid rgba(0, 255, 136, 0.15); font-size: 0.75rem; } .shepherd-button.shepherd-button-secondary:hover { background: rgba(255, 255, 255, 0.15); box-shadow: 0 3px 10px rgba(0, 255, 136, 0.2); transform: none; } .shepherd-arrow::before { background-color: #1a1a2e; border: 1px solid rgba(0, 255, 136, 0.3); box-shadow: 0 0 8px rgba(0, 255, 136, 0.2); } .shepherd-progress { position: absolute; bottom: 0; left: 0; width: 100%; height: 2px; background: rgba(0, 255, 136, 0.08); } .shepherd-progress-bar { height: 100%; background: linear-gradient(90deg, #00ff88, #00cc66); transition: width 0.3s ease; } .balance-icon { position: relative; width: 80px; height: 80px; margin: 0 auto; } .icon-wrapper { width: 100%; height: 100%; background: linear-gradient(145deg, #00ff88, #00c6ff); border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 0 20px rgba(0, 255, 136, 0.3); animation: pulse 2s infinite; } .icon-wrapper i { font-size: 2.5rem; color: #fff; } .option-card { background: rgba(255, 255, 255, 0.05); border-radius: 10px; padding: 15px; display: flex; align-items: center; gap: 15px; transition: all 0.3s ease; border: 1px solid rgba(255, 255, 255, 0.1); } .option-card:hover { transform: translateY(-2px); box-shadow: 0 5px 15px rgba(0, 255, 136, 0.1); border-color: rgba(0, 255, 136, 0.3); } .option-icon { width: 50px; height: 50px; background: linear-gradient(145deg, #00ff88, #00c6ff); border-radius: 10px; display: flex; align-items: center; justify-content: center; } .option-icon i { font-size: 1.5rem; color: #fff; } .option-content { flex: 1; text-align: left; } .option-content h6 { color: #fff; margin: 0; } @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(0, 255, 136, 0.4); } 70% { box-shadow: 0 0 0 10px rgba(0, 255, 136, 0); } 100% { box-shadow: 0 0 0 0 rgba(0, 255, 136, 0); } } </style> </head> <body> <!-- Welcome Modal --> <div class="modal fade" id="registrationModal" tabindex="-1" aria-labelledby="registrationModalLabel" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header border-0"> <div class="w-100 text-center position-relative"> <h5 class="modal-title" id="registrationModalLabel"> <span class="welcome-text">Welcome to Xminer</span> <span class="subtitle">Your Gateway to Digital Mining</span> </h5> <button type="button" class="btn-close btn-close-white position-absolute" style="right: 0; top: 0;" data-bs-dismiss="modal" aria-label="Close"></button> </div> </div> <div class="modal-body"> <div class="welcome-stats mb-4"> <div class="stat-item"> <i class="fas fa-users"></i> <div class="stat-value">7422</div> <div class="stat-label">Active Miners</div> </div> <div class="stat-item"> <i class="fas fa-globe"></i> <div class="stat-value">1352</div> <div class="stat-label">Online Now</div> </div> <div class="stat-item"> <i class="fas fa-gem"></i> <div class="stat-value">17536</div> <div class="stat-label">Total Mines</div> </div> </div> <div class="welcome-message text-center mb-4"> <p>Start your mining journey today and discover the world of digital mining. With our advanced tools and global mining locations, you can earn rewards while exploring different mining opportunities around the world.</p> </div> <div class="features-grid mb-4"> <div class="feature-item"> <i class="fas fa-rocket"></i> <span>Fast Mining</span> </div> <div class="feature-item"> <i class="fas fa-shield-alt"></i> <span>Secure Platform</span> </div> <div class="feature-item"> <i class="fas fa-globe-americas"></i> <span>Global Network</span> </div> <div class="feature-item"> <i class="fas fa-gift"></i> <span>Daily Rewards</span> </div> </div> <div class="d-grid gap-3"> <a href="/login" class="btn btn-primary btn-lg"> <i class="fas fa-user-plus me-2"></i>Start Mining Now </a> <a href="/login" class="btn btn-outline-light"> <i class="fas fa-sign-in-alt me-2"></i>Already have an account? Login </a> </div> </div> </div> </div> </div> <script> // Show welcome modal on page load document.addEventListener('DOMContentLoaded', function() { var myModal = new bootstrap.Modal(document.getElementById('registrationModal')); myModal.show(); }); </script> <!-- Loading Screen --> <div id="loading-screen"> <div class="loading-content"> <!-- SVG Loading Logo --> <svg id="xminer-logo" class="loading-logo" viewBox="0 0 150 150" xmlns="http://www.w3.org/2000/svg"> <defs> <radialGradient id="grad1" cx="50%" cy="50%" r="50%" fx="50%" fy="50%"> <stop offset="0%" style="stop-color:#00ff88; stop-opacity:1" /> <stop offset="100%" style="stop-color:#16213e; stop-opacity:1" /> </radialGradient> <filter id="dropshadow" height="130%"> <feGaussianBlur in="SourceAlpha" stdDeviation="3"/> <feOffset dx="2" dy="2" result="offsetblur"/> <feComponentTransfer> <feFuncA type="linear" slope="0.5"/> </feComponentTransfer> <feMerge> <feMergeNode/> <feMergeNode in="SourceGraphic"/> </feMerge> </filter> </defs> <circle cx="75" cy="75" r="70" fill="url(#grad1)" stroke="#00ff88" stroke-width="5" filter="url(#dropshadow)" /> <text x="75" y="90" font-family="'Poppins', sans-serif" font-size="60" fill="#fff" text-anchor="middle" font-weight="bold"> X </text> <text x="75" y="125" font-family="'Poppins', sans-serif" font-size="20" fill="#00ff88" text-anchor="middle" font-weight="600"> miner </text> </svg> <div class="loading-spinner"></div> <p>Loading...</p> </div> </div> <!-- Header --> <nav class="navbar navbar-expand-lg navbar-dark"> <div class="container-fluid"> <a class="navbar-brand" href="/">Xminer</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNav"> <ul class="navbar-nav ms-auto align-items-center"> <li class="nav-item"> <a class="nav-link" href="/leaderboard">Leaderboard</a> </li> <li class="nav-item"> <a class="nav-link" href="/mining"> <span>Mining</span> </a> </li> <li class="nav-item"> <a class="nav-link" href="/about"> <i class="fas fa-info-circle"></i> <span>About Xminer</span> </a> </li> <li class="nav-item"> <a class="nav-link" href="/referral-network/">My Teamwork</a> </li> <li class="nav-item"> <a class="nav-link" href="/logout" style="color: red !important;">Logout</a> </li> </ul> </div> </div> </nav> <!-- Main Content --> <div class="container-fluid py-4"> <div class="row"> <!-- Left Column: Game Map and Action Pad --> <div class="col-md-8"> <div class="map-container"> <div id="map" class="game-map shadow-lg"></div> <!-- Country Selector --> <div class="country-select-overlay"> <select id="country-select" class="form-select"> <option value="" disabled selected>Select Country</option> </select> </div> </div> <!-- Action Pad --> <div class="action-pad"> <button id="btn-history" class="action-btn blinking" onclick="toggleHistoryPanel()"> <i class="fas fa-history"></i> History </button> <button id="btn-toolshop" class="action-btn blinking" onclick="toggleToolShop()"> <i class="fas fa-shopping-cart"></i> Tools </button> <button id="btn-admin" class="action-btn blinking" onclick="toggleAdminMessages()"> <i class="fas fa-location"></i> Mines </button> </div> </div> <!-- Right Column: Sidebar with Dashboard and Icon Tabs --> <div class="col-md-4"> <div class="game-card shadow-lg"> <div class="card-header text-center">Dashboard</div> <div class="card-body"> <!-- Exchange Button --> <a href="/exchange?tab=exchange" class="exchange-btn"> <i class="fas fa-exchange-alt"></i> <span>Exchange</span> </a> <!-- Icon Only Tabs --> <ul class="nav nav-tabs"> <li class="nav-item"> <a class="nav-link active" data-bs-toggle="tab" href="#tab-dashboard" title="Dashboard"> <i class="fas fa-tachometer-alt"></i> </a> </li> <li class="nav-item"> <a class="nav-link" data-bs-toggle="tab" href="#tab-tool-history" title="Tool History"> <i class="fas fa-tools"></i> </a> </li> <li class="nav-item"> <a class="nav-link" data-bs-toggle="tab" href="#tab-referral" title="Referral Link"> <i class="fas fa-link"></i> </a> </li> </ul> <!-- Tab Content --> <div class="tab-content mt-3"> <!-- Dashboard Tab --> <div id="tab-dashboard" class="tab-pane fade show active"> <h5 class="section-title">Your Stats:</h5> <!-- Stats Section --> <div class="stats-section"> <div class="stats-container"> <div class="stat-card user-card"> <div class="stat-icon"> <i class="fas fa-user-circle"></i> </div> <div class="stat-content"> <div class="stat-label">User</div> <div class="stat-value">Guest</div> </div> </div> <div class="stat-card balance-card"> <div class="stat-icon"> <i class="fas fa-wallet"></i> </div> <div class="stat-content"> <div class="stat-label">Balance</div> <div class="stat-value">0.00 XMN</div> </div> </div> </div> </div> <!-- Diamond Rewards Bar --> <div class="diamond-rewards-bar"> <div class="diamond-reward"> <div class="reward-count">0</div> <a href="/exchange?tab=exchange" class="text-decoration-none"> <img src="/static/icons/diamond-reward.gif" alt="Diamond Reward" class="reward-image"> </a> </div> <div class="diamond-reward"> <div class="reward-count">0</div> <img src="/static/icons/gold-reward.png" alt="Gold Reward"> </div> <div class="diamond-reward"> <div class="reward-count">0</div> <img src="/static/icons/trophy-reward.png" alt="Trophy Reward"> </div> <div class="diamond-reward"> <div class="reward-count">0</div> <img src="/static/icons/rew-reward.png" alt="REW Reward"> </div> </div> </div> <!-- Purchased Tools Tab --> <div id="tab-purchased-tools" class="tab-pane fade"> <h5>Your Tools</h5> <ul id="purchased-tools-list" class="list-group"> </ul> </div> <!-- Tool History Tab --> <div id="tab-tool-history" class="tab-pane fade"> <div class="card bg-dark text-white mb-4"> <div class="card-header"> <h5 class="card-title mb-0"> <i class="fas fa-history me-2"></i>Tool History </h5> </div> <div class="card-body"> <div class="tool-history-list" id="tool-history-list"> <div class="text-center text-white"> <p>No history available</p> </div> </div> </div> </div> </div> <!-- Referral Tab --> <div id="tab-referral" class="tab-pane fade"> <div class="referral-card"> <h4><i class="fas fa-paper-plane"></i> Telegram Referral Link</h4> <p>Share this link with your friends to invite them via Telegram:</p> <input type="text" id="telegram-referral-link" class="referral-input" readonly> <button class="referral-btn" onclick="copyTelegramReferralLink()">Copy Telegram Link</button> <h4 class="mt-4"><i class="fas fa-envelope"></i> Email Referral Link</h4> <p>Share this link with your friends to invite them via Email:</p> <input type="text" id="email-referral-link" class="referral-input" readonly> <button class="referral-btn" onclick="copyEmailReferralLink()">Copy Email Link</button> </div> </div> </div> </div> </div> </div> </div> </div> <!-- Site Stats Bar (Bottom of the Page) --> <div class="site-stats-bar container-fluid my-4"> <div class="stats-container"> <div class="stats-pad pad-users text-center d-flex align-items-center justify-content-center"> <i class="fas fa-users state-icon me-2"></i> <div> <h5 class="stats-title">Total Users</h5> <p class="stats-value">7422</p> </div> </div> <div class="stats-pad pad-last-online text-center d-flex align-items-center justify-content-center"> <i class="fas fa-signal state-icon me-2"></i> <div> <h5 class="stats-title">Online Users</h5> <p class="stats-value">1352 <span class="online-marker"></span></p> </div> </div> <div class="stats-pad pad-total-mines text-center d-flex align-items-center justify-content-center"> <i class="fas fa-gem state-icon me-2"></i> <div> <h5 class="stats-title">Total Mines Done</h5> <p class="stats-value">17536</p> </div> </div> </div> </div> </div> <!-- History Panel --> <div id="history-panel" class="history-panel"> <div class="panel-header"> <h4>History</h4> <button class="close-btn" onclick="toggleHistoryPanel()"></button> </div> <table class="table table-dark"> <thead> <tr> <th>Date</th> <th>Points Change</th> <th>Reason</th> </tr> </thead> <tbody id="points-history"> <!-- History data loaded via fetchPointsHistory() --> </tbody> </table> </div> <!-- Tool Shop Sliding Panel --> <div id="toolshop-panel" class="toolshop-panel"> <div class="toolshop-header"> <h4><i class="fas fa-tools"></i> Tool Shop</h4> <button class="btn-close" onclick="toggleToolShop()"></button> </div> <div class="toolshop-container" id="toolshop-container"> <p class="loading-text">Loading tools...</p> </div> </div> <!-- Admin Messages Panel --> <div id="admin-messages-panel" class="messages-panel"> <div class="panel-header"> <h4><i class="fas fa-location"></i> Discovered Mines:</h4> <span class="close-btn" onclick="toggleAdminMessages()"></span> </div> <ul id="messages-list" class="list-group messages-content"></ul> </div> <!-- Footer --> <footer class="game-footer"> <div class="footer-content"> <div class="footer-section"> <h5>Risk Disclosure</h5> <p>All materials and services provided on this site are subject to copyright and belong to "Xminer Tech LLC". Any use of materials of this website must be approved by an official representative of "Xminer Tech LLC", and contain a link to the original resource. Any third-party companies type, do not have the right to use materials of this website as well as any distorted writing of "Xminer Tech LLC". In case of violation, they will be prosecuted in accordance with legislation of intellectual property protection.</p> </div> <div class="footer-section"> <h5>Legal Information</h5> <p>Xminer Tech LLC does not provide service to residents of the EEA countries.</p> <p>Xminer Tech LLC is registered at SVG, First Floor, First St. Vincent Bank Ltd Building, James Street Kingstown, St. Vincent and the Grenadines with the registration number 1652 LLC 70.</p> <p>All activity on this website provided by Xminer Tech LLC.</p> </div> <div class="footer-section"> <h5>Additional Information</h5> <p>* The minimum investment amount varies by region and payment method.</p> <p>• XMN Points can be used for mining operations and tool purchases.</p> <p>• Mining rewards are calculated based on your mining tools and efficiency.</p> <p>• Referral program rewards are distributed automatically upon successful referrals.</p> <p>• Support is available 24/7 through our official Telegram channel.</p> </div> </div> <div class="footer-links"> <div class="footer-links-container"> <a href="/terms" class="footer-link"> <i class="fas fa-file-contract"></i> <span>Terms and Conditions</span> </a> <a href="/privacy" class="footer-link"> <i class="fas fa-shield-alt"></i> <span>Privacy Policy</span> </a> <a href="/about" class="footer-link"> <i class="fas fa-info-circle"></i> <span>About Xminer</span> </a> <a href="/roadmap" class="footer-link"> <i class="fas fa-map-marked-alt"></i> <span>Roadmap</span> </a> <a href="/whitepaper" class="footer-link"> <i class="fas fa-book"></i> <span>Whitepaper</span> </a> <a href="/support" class="footer-link"> <i class="fas fa-ticket-alt"></i> <span>Create Ticket</span> </a> <a href="/faq" class="footer-link"> <i class="fas fa-question-circle"></i> <span>FAQ</span> </a> <a href="/support" class="footer-link"> <i class="fas fa-headset"></i> <span>Support</span> </a> <a href="javascript:void(0)" class="footer-link tutorial-link" onclick="showTutorial()"> <i class="fas fa-graduation-cap"></i> <span>Show Tutorial</span> </a> </div> </div> <div class="footer-bottom"> <div class="trust-bar"> <div class="container"> <div class="trust-section"> <div class="trust-item"> <div class="trust-icon"> <img src="/static/logo/sslsec.png" alt="SSL Secured"> </div> <span class="trust-label">SSL Secured</span> </div> <div class="trust-item"> <div class="trust-icon"> <img src="/static/logo/toprated.png" alt="Top Rated"> </div> <span class="trust-label">Top Rated</span> </div> <div class="trust-item"> <div class="trust-icon"> <img src="/static/logo/higeperformance.png" alt="High Performance"> </div> <span class="trust-label">High Performance</span> </div> <div class="trust-item"> <div class="trust-icon"> <img src="/static/logo/247support.png" alt="24/7 Support"> </div> <span class="trust-label">24/7 Support</span> </div> <div class="trust-item"> <div class="trust-icon"> <img src="/static/logo/verifieduser.png" alt="Verified Users"> </div> <span class="trust-label">Verified Users</span> </div> <div class="trust-item"> <div class="trust-icon"> <img src="/static/logo/trusted.png" alt="Trusted By Users"> </div> <span class="trust-label">Trusted By Users</span> </div> </div> <div class="payment-methods"> <div class="payment-method"> <i class="fab fa-bitcoin"></i> </div> <div class="payment-method"> <i class="fab fa-ethereum"></i> </div> <div class="payment-method"> <i class="fab fa-cc-visa"></i> </div> <div class="payment-method"> <i class="fab fa-cc-mastercard"></i> </div> <div class="payment-method"> <i class="fab fa-cc-paypal"></i> </div> <div class="payment-method"> <i class="fas fa-university"></i> </div> </div> </div> </div> <p>© 2025 Xminer Game. All rights reserved.</p> </div> </footer> <!-- Add Payment Modal before the closing body tag --> <div class="modal fade" id="paymentModal" tabindex="-1" aria-labelledby="paymentModalLabel" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content bg-dark text-white"> <div class="modal-header border-secondary"> <div class="d-flex align-items-center"> <img src="/static/icons/USDT-TRC20.png" alt="USDT-TRC20" class="me-2" style="width: 32px; height: 32px;"> <h5 class="modal-title" id="paymentModalLabel">Purchase XMN Points</h5> </div> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body text-center"> <div class="network-badge mb-3"> <span class="badge bg-primary">TRC20 Network</span> </div> <div id="paymentContent" class="payment-content"> <!-- Payment content will be loaded here --> </div> <div id="paymentStatus" class="mt-4" style="display: none;"> <div class="countdown-timer mb-4"> <div class="timer-circle"> <div id="countdown" class="h3 text-warning">15:00</div> <div class="timer-label">Time Remaining</div> </div> </div> <div class="payment-status"> <div class="spinner-border text-primary mb-3" role="status"> <span class="visually-hidden">Loading...</span> </div> <p class="status-text">Checking payment status...</p> </div> </div> </div> </div> </div> </div> <!-- Low Balance Modal --> <div class="modal fade" id="lowBalanceModal" tabindex="-1" aria-labelledby="lowBalanceModalLabel" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content" style="background: linear-gradient(145deg, #1a1a2e, #16213e); border: 1px solid rgba(0, 255, 136, 0.2);"> <div class="modal-header border-0"> <div class="w-100 text-center position-relative"> <div class="balance-icon mb-3"> <div class="icon-wrapper"> <i class="fas fa-wallet"></i> </div> </div> <h5 class="modal-title" id="lowBalanceModalLabel" style="color: #00ff88; font-size: 1.5rem; font-weight: 600;"> Low Balance Alert </h5> <button type="button" class="btn-close btn-close-white position-absolute" style="right: 0; top: 0;" data-bs-dismiss="modal" aria-label="Close"></button> </div> </div> <div class="modal-body text-center"> <div class="balance-message mb-4"> <p class="text-white-50 mb-2">Your current balance is below</p> <h3 class="text-warning mb-3">500 XMN</h3> <p class="text-white-50">Choose an option to continue mining:</p> </div> <div class="options-container"> <div class="option-card mb-3"> <div class="option-icon"> <i class="fas fa-shopping-cart"></i> </div> <div class="option-content"> <h6 class="mb-1">Buy XMN Points</h6> <p class="small text-white-50 mb-2">Purchase points to continue mining</p> <a href="/exchange" class="btn btn-primary btn-sm w-100"> Buy Now </a> </div> </div> <div class="option-card"> <div class="option-icon"> <i class="fas fa-user-plus"></i> </div> <div class="option-content"> <h6 class="mb-1">Invite Friends</h6> <p class="small text-white-50 mb-2">Get 300 XMN for each friend</p> <button onclick="showReferralTab()" class="btn btn-success btn-sm w-100"> Invite Now </button> </div> </div> </div> </div> </div> </div> </div> <!-- JavaScript --> <script> // Referral Link async function fetchReferralLink() { try { const response = await fetch('/generate-referral', { method: 'POST' }); const data = await response.json(); document.getElementById('telegram-referral-link').value = "http://t.me/X_min_erbot?start=" + data.referral_code; document.getElementById('email-referral-link').value = window.location.origin + "/register/email?ref=" + data.referral_code; } catch (error) { console.error('Error fetching referral link:', error); } } function copyTelegramReferralLink() { const referralInput = document.getElementById('telegram-referral-link'); referralInput.select(); document.execCommand('copy'); alert("Telegram referral link copied!"); } function copyEmailReferralLink() { const referralInput = document.getElementById('email-referral-link'); referralInput.select(); document.execCommand('copy'); alert("Email referral link copied!"); } document.addEventListener("DOMContentLoaded", fetchReferralLink); // History Panel Toggle function toggleHistoryPanel() { const panel = document.getElementById('history-panel'); const btn = document.getElementById('btn-history'); if (panel.classList.contains('show')) { panel.classList.remove('show'); btn.classList.remove('fixed'); btn.classList.add('blinking'); } else { panel.classList.add('show'); btn.classList.remove('blinking'); btn.classList.add('fixed'); fetchPointsHistory(); } } async function fetchPointsHistory() { try { const response = await fetch('/api/get-points-history'); const history = await response.json(); if (history.error) { document.getElementById('points-history').innerHTML = `<tr><td colspan="3">${history.error}</td></tr>`; } else { let rows = ''; history.forEach(item => { rows += `<tr> <td>${item.date}</td> <td>${item.points_change > 0 ? '+' : ''}${item.points_change}</td> <td>${item.reason}</td> </tr>`; }); document.getElementById('points-history').innerHTML = rows; } } catch (error) { document.getElementById('points-history').innerHTML = `<tr><td colspan="3">Failed to load data.</td></tr>`; } } // Admin Messages Panel Toggle function toggleAdminMessages() { const panel = document.getElementById('admin-messages-panel'); const btn = document.getElementById('btn-admin'); if (panel.classList.contains('show')) { panel.classList.remove('show'); btn.classList.remove('fixed'); btn.classList.add('blinking'); } else { panel.classList.add('show'); btn.classList.remove('blinking'); btn.classList.add('fixed'); const badge = btn.querySelector('.notification-badge'); if (badge) { badge.remove(); } fetchAdminMessages(); } } async function fetchAdminMessages() { try { const response = await fetch('/api/get-admin-messages'); const messages = await response.json(); const messagesList = document.getElementById('messages-list'); messagesList.innerHTML = ""; if (messages.length === 0) { messagesList.innerHTML = "<li class='list-group-item text-center'>No new messages</li>"; const badge = document.getElementById('btn-admin').querySelector('.notification-badge'); if (badge) badge.remove(); return; } const adminBtn = document.getElementById('btn-admin'); let badge = adminBtn.querySelector('.notification-badge'); if (!badge) { badge = document.createElement('span'); badge.className = 'notification-badge'; adminBtn.appendChild(badge); } badge.innerText = messages.length; messages.forEach(msg => { messagesList.innerHTML += ` <li class="list-group-item"> <strong>${msg.timestamp}:</strong> ${msg.message} </li> `; }); } catch (error) { console.error("Failed to fetch messages:", error); } } document.addEventListener("DOMContentLoaded", fetchAdminMessages); // Tool Shop Panel Toggle function toggleToolShop() { const panel = document.getElementById('toolshop-panel'); const btn = document.getElementById('btn-toolshop'); if (panel.classList.contains('show')) { panel.classList.remove('show'); btn.classList.remove('fixed'); btn.classList.add('blinking'); } else { panel.classList.add('show'); btn.classList.remove('blinking'); btn.classList.add('fixed'); } } // Hide Loading Screen when page fully loads window.addEventListener('load', function() { const loadingScreen = document.getElementById('loading-screen'); loadingScreen.style.opacity = '0'; setTimeout(function() { loadingScreen.style.display = 'none'; }, 500); }); // XMN Points Purchase document.querySelectorAll('.purchase-btn').forEach(btn => { btn.addEventListener('click', async function() { const card = this.closest('.xmn-package-card'); const points = card.dataset.points; const price = card.dataset.price; try { const formData = new FormData(); formData.append('amount', price); formData.append('description', `Purchase ${points} XMN Points`); formData.append('points', points); const response = await fetch('/payments/create', { method: 'POST', body: formData }); if (!response.ok) { throw new Error('Payment creation failed'); } const data = await response.json(); // Show payment modal with QR code const modal = new bootstrap.Modal(document.getElementById('paymentModal')); document.getElementById('paymentContent').innerHTML = ` <div class="text-center"> <h5>Scan QR Code to Pay</h5> <img src="https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(data.pay_address)}" alt="Payment QR Code" class="img-fluid mb-3" style="max-width: 200px;"> <p class="mb-2">Amount: ${price} USDT</p> <p class="mb-2">Points: ${points} XMN</p> <p class="text-primary small">Please complete the payment to receive your points</p> <div class="mt-3"> <p class="mb-1">Payment Address:</p> <div class="input-group"> <input type="text" class="form-control bg-dark text-white" value="${data.pay_address}" readonly> <button class="btn btn-outline-light" onclick="copyAddress(this)">Copy</button> </div> </div> </div> `; // Show payment status section document.getElementById('paymentStatus').style.display = 'block'; // Start countdown and payment status check startCountdown(data.order_id, points); modal.show(); } catch (error) { console.error('Error creating payment:', error); Swal.fire({ title: 'Error', text: error.message || 'An error occurred while processing your request', icon: 'error', confirmButtonColor: '#00c6ff' }); } }); }); // Countdown and payment status check function startCountdown(orderId, points) { let timeLeft = 15 * 60; // 15 minutes in seconds const countdownElement = document.getElementById('countdown'); const statusElement = document.querySelector('.status-text'); const spinnerElement = document.querySelector('.spinner-border'); const countdownInterval = setInterval(() => { const minutes = Math.floor(timeLeft / 60); const seconds = timeLeft % 60; countdownElement.textContent = `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`; if (timeLeft <= 0) { clearInterval(countdownInterval); clearInterval(statusCheckInterval); statusElement.textContent = 'Payment time expired'; statusElement.style.color = 'red'; spinnerElement.style.display = 'none'; return; } timeLeft--; }, 1000); // Check payment status every 10 seconds const statusCheckInterval = setInterval(async () => { try { const response = await fetch(`/payments/status/${orderId}`); const data = await response.json(); if (data.status === 'confirmed') { clearInterval(countdownInterval); clearInterval(statusCheckInterval); statusElement.textContent = 'Payment confirmed! Points added to your account.'; statusElement.style.color = '#00ff88'; spinnerElement.style.display = 'none'; // Update points display const pointsElement = document.querySelector('.convert-points-info'); const currentPoints = parseInt(pointsElement.textContent.match(/\d+/)[0]); pointsElement.innerHTML = `<i class="fas fa-coins"></i> Your Points: ${currentPoints + parseInt(points)}`; // Show success message Swal.fire({ title: 'Success!', text: `${points} XMN points have been added to your account.`, icon: 'success', confirmButtonColor: '#00c6ff' }); // Close modal after 3 seconds setTimeout(() => { const modal = bootstrap.Modal.getInstance(document.getElementById('paymentModal')); modal.hide(); }, 3000); } } catch (error) { console.error('Error checking payment status:', error); } }, 10000); } // Function to copy payment address function copyAddress(button) { const input = button.parentElement.querySelector('input'); input.select(); document.execCommand('copy'); // Show feedback const originalText = button.innerHTML; button.innerHTML = 'Copied!'; setTimeout(() => { button.innerHTML = originalText; }, 2000); } // Check balance and show low balance modal document.addEventListener('DOMContentLoaded', function() { const userBalance = parseFloat('0'); const hasSeenTutorial = localStorage.getItem('xminerTutorialSeen'); // Show welcome modal first if user is not logged in if ('True' === 'True') { const welcomeModal = new bootstrap.Modal(document.getElementById('registrationModal')); welcomeModal.show(); // After welcome modal is closed, show low balance alert if needed document.getElementById('registrationModal').addEventListener('hidden.bs.modal', function () { // Remove modal backdrop const backdrop = document.querySelector('.modal-backdrop'); if (backdrop) { backdrop.remove(); } document.body.classList.remove('modal-open'); document.body.style.overflow = ''; document.body.style.paddingRight = ''; if (userBalance < 500) { const lowBalanceModal = new bootstrap.Modal(document.getElementById('lowBalanceModal')); lowBalanceModal.show(); // After low balance modal is closed, show tutorial if needed document.getElementById('lowBalanceModal').addEventListener('hidden.bs.modal', function () { // Remove modal backdrop const backdrop = document.querySelector('.modal-backdrop'); if (backdrop) { backdrop.remove(); } document.body.classList.remove('modal-open'); document.body.style.overflow = ''; document.body.style.paddingRight = ''; if (!hasSeenTutorial) { // Force remove any remaining modal backdrop const remainingBackdrop = document.querySelector('.modal-backdrop'); if (remainingBackdrop) { remainingBackdrop.remove(); } document.body.classList.remove('modal-open'); document.body.style.overflow = ''; document.body.style.paddingRight = ''; // Add a small delay to ensure all modal cleanup is complete setTimeout(() => { showTutorial(); }, 1000); } }); } else if (!hasSeenTutorial) { setTimeout(() => { showTutorial(); }, 1000); } }); } else { // If user is logged in, show low balance alert first if needed if (userBalance < 500) { const lowBalanceModal = new bootstrap.Modal(document.getElementById('lowBalanceModal')); lowBalanceModal.show(); // After low balance modal is closed, show tutorial if needed document.getElementById('lowBalanceModal').addEventListener('hidden.bs.modal', function () { // Remove modal backdrop const backdrop = document.querySelector('.modal-backdrop'); if (backdrop) { backdrop.remove(); } document.body.classList.remove('modal-open'); document.body.style.overflow = ''; document.body.style.paddingRight = ''; if (!hasSeenTutorial) { // Force remove any remaining modal backdrop const remainingBackdrop = document.querySelector('.modal-backdrop'); if (remainingBackdrop) { remainingBackdrop.remove(); } document.body.classList.remove('modal-open'); document.body.style.overflow = ''; document.body.style.paddingRight = ''; // Add a small delay to ensure all modal cleanup is complete setTimeout(() => { showTutorial(); }, 1000); } }); } else if (!hasSeenTutorial) { // If balance is good but user hasn't seen tutorial, show it setTimeout(() => { showTutorial(); }, 1000); } } }); // Tutorial Button Function function showTutorial() { // Initialize Shepherd tour const tour = new Shepherd.Tour({ useModalOverlay: true, defaultStepOptions: { cancelIcon: { enabled: true }, classes: 'shepherd-theme-custom', scrollTo: true } }); // Add steps to the tour tour.addStep({ id: 'welcome', text: 'Welcome to Xminer! Let\'s take a quick tour to help you get started.', attachTo: { element: '.navbar-brand', on: 'bottom' }, buttons: [ { text: 'Skip', action: tour.cancel }, { text: 'Next', action: tour.next } ] }); tour.addStep({ id: 'mining', text: 'Click here to find new mining and earn XMN points.', attachTo: { element: '#btn-admin', on: 'right' }, buttons: [ { text: 'Back', action: tour.back }, { text: 'Next', action: tour.next } ] }); tour.addStep({ id: 'tools', text: 'Visit the tool shop to purchase mining equipment and boost your earnings.', attachTo: { element: '#btn-toolshop', on: 'right' }, buttons: [ { text: 'Back', action: tour.back }, { text: 'Next', action: tour.next } ] }); tour.addStep({ id: 'history', text: 'Check your mining history and earnings here.', attachTo: { element: '#btn-history', on: 'right' }, buttons: [ { text: 'Back', action: tour.back }, { text: 'Finish', action: function() { localStorage.setItem('xminerTutorialSeen', 'true'); tour.complete(); } } ] }); // Start the tour tour.start(); } // Function to show referral tab function showReferralTab() { // Close the low balance modal const lowBalanceModal = bootstrap.Modal.getInstance(document.getElementById('lowBalanceModal')); lowBalanceModal.hide(); // Remove modal backdrop const backdrop = document.querySelector('.modal-backdrop'); if (backdrop) { backdrop.remove(); } document.body.classList.remove('modal-open'); document.body.style.overflow = ''; document.body.style.paddingRight = ''; // Switch to referral tab const referralTab = document.querySelector('a[href="#tab-referral"]'); if (referralTab) { referralTab.click(); } } </script> <!-- Bootstrap JS --> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script> <!-- Shepherd.js JS --> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/shepherd.min.js"></script> </body> </html>