| <!DOCTYPE html> |
| <html lang="ru"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Casino Payouts - 3D Phone Interface</title> |
| <script src="https://cdn.tailwindcss.com"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.4/gsap.min.js"></script> |
| <style> |
| @keyframes float { |
| 0%, 100% { transform: translateY(0) rotate(0deg); } |
| 50% { transform: translateY(-10px) rotate(5deg); } |
| } |
| .phone-3d { |
| transform-style: preserve-3d; |
| perspective: 1000px; |
| transform: rotateY(-15deg) rotateX(10deg); |
| box-shadow: 20px 30px 50px rgba(0, 0, 0, 0.3); |
| } |
| .phone-screen { |
| background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%); |
| box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.5); |
| transform: translateZ(10px); |
| } |
| .phone-side { |
| position: absolute; |
| background: #020617; |
| transform: translateZ(-5px); |
| } |
| .card-gradient { |
| background: linear-gradient(135deg, #3b82f6 0%, #6366f1 50%, #8b5cf6 100%); |
| } |
| .transaction-item { |
| background: rgba(255, 255, 255, 0.05); |
| backdrop-filter: blur(10px); |
| } |
| .glare { |
| position: absolute; |
| top: 0; |
| left: 0; |
| width: 100%; |
| height: 100%; |
| background: linear-gradient(135deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0) 60%); |
| pointer-events: none; |
| } |
| .chip { |
| background: linear-gradient(135deg, #f59e0b 0%, #fcd34d 100%); |
| } |
| .animate-float { |
| animation: float 4s ease-in-out infinite; |
| } |
| .casino-logo { |
| background: linear-gradient(135deg, #ef4444 0%, #f97316 100%); |
| } |
| </style> |
| </head> |
| <body class="bg-gray-950 text-white overflow-x-hidden"> |
| <div class="min-h-screen flex items-center justify-center p-4"> |
| |
| <div class="relative w-80 h-[580px] phone-3d animate-float"> |
| |
| <div class="absolute inset-0 rounded-[40px] overflow-hidden phone-screen flex flex-col p-6"> |
| |
| <div class="glare"></div> |
| |
| |
| <div class="flex justify-between items-center mb-6 z-10"> |
| <span class="text-sm font-medium" id="current-time">14:25</span> |
| <div class="flex items-center space-x-2"> |
| <svg class="w-4 h-4" fill="currentColor" viewBox="0 0 20 20"> |
| <path fill-rule="evenodd" d="M17.778 8.222c-4.296-4.296-11.26-4.296-15.556 0A1 1 0 01.808 6.808c5.076-5.077 13.308-5.077 18.384 0a1 1 0 01-1.414 1.414zM14.95 11.05a7 7 0 00-9.9 0 1 1 0 01-1.414-1.414 9 9 0 0112.728 0 1 1 0 01-1.414 1.414zM12.12 13.88a3 3 0 00-4.242 0 1 1 0 01-1.415-1.415 5 5 0 017.072 0 1 1 0 01-1.415 1.415z" clip-rule="evenodd"></path> |
| </svg> |
| <svg class="w-4 h-4" fill="currentColor" viewBox="0 0 20 20"> |
| <path d="M2 11a1 1 0 011-1h2a1 1 0 011 1v5a1 1 0 01-1 1H3a1 1 0 01-1-1v-5zM8 7a1 1 0 011-1h2a1 1 0 011 1v9a1 1 0 01-1 1H9a1 1 0 01-1-1V7zM14 4a1 1 0 011-1h2a1 1 0 011 1v12a1 1 0 01-1 1h-2a1 1 0 01-1-1V4z"></path> |
| </svg> |
| <svg class="w-4 h-4" fill="currentColor" viewBox="0 0 20 20"> |
| <path fill-rule="evenodd" d="M5 9V7a5 5 0 0110 0v2a2 2 0 012 2v5a2 2 0 01-2 2H5a2 2 0 01-2-2v-5a2 2 0 012-2zm8-2v2H7V7a3 3 0 016 0z" clip-rule="evenodd"></path> |
| </svg> |
| </div> |
| </div> |
| |
| |
| <div class="card-gradient rounded-2xl p-5 mb-6 relative overflow-hidden z-10"> |
| <div class="absolute top-0 right-0 w-24 h-24 bg-white/10 rounded-bl-full"></div> |
| <div class="flex justify-between items-start mb-8"> |
| <div> |
| <p class="text-xs text-white/70 mb-1">Баланс</p> |
| <h3 class="text-2xl font-bold text-white" id="balance">$1,240.00</h3> |
| </div> |
| <div class="chip w-10 h-7 rounded-md flex items-center justify-center"> |
| <svg class="w-6 h-6 text-yellow-800" fill="currentColor" viewBox="0 0 24 24"> |
| <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm4.59-12.42L10 14.17l-2.59-2.58L6 13l4 4 8-8z"/> |
| </svg> |
| </div> |
| </div> |
| <div class="flex justify-between items-center"> |
| <div> |
| <p class="text-xs text-white/70 mb-1">Номер карты</p> |
| <p class="text-sm font-medium text-white">•••• •••• •••• 4242</p> |
| </div> |
| <div class="text-right"> |
| <p class="text-xs text-white/70 mb-1">Срок действия</p> |
| <p class="text-sm font-medium text-white">12/25</p> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="flex-1 overflow-hidden z-10"> |
| <h4 class="text-sm font-medium mb-3">Последние выплаты</h4> |
| |
| <div class="space-y-3" id="transactions-container"> |
| |
| </div> |
| </div> |
| |
| |
| <div class="flex justify-around items-center pt-3 border-t border-gray-800/50 mt-auto z-10"> |
| <button class="p-2 rounded-full"> |
| <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
| <path d="M10.707 2.293a1 1 0 00-1.414 0l-7 7a1 1 0 001.414 1.414L4 10.414V17a1 1 0 001 1h2a1 1 0 001-1v-2a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 001 1h2a1 1 0 001-1v-6.586l.293.293a1 1 0 001.414-1.414l-7-7z"></path> |
| </svg> |
| </button> |
| <button class="p-2 rounded-full"> |
| <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
| <path d="M4 4a2 2 0 00-2 2v1h16V6a2 2 0 00-2-2H4z"></path> |
| <path fill-rule="evenodd" d="M18 9H2v5a2 2 0 002 2h12a2 2 0 002-2V9zM4 13a1 1 0 011-1h1a1 1 0 110 2H5a1 1 0 01-1-1zm5-1a1 1 0 100 2h1a1 1 0 100-2H9z" clip-rule="evenodd"></path> |
| </svg> |
| </button> |
| <button class="p-2 rounded-full bg-blue-500 text-white"> |
| <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
| <path fill-rule="evenodd" d="M10 2a4 4 0 00-4 4v1H5a1 1 0 00-.994.89l-1 9A1 1 0 004 18h12a1 1 0 00.994-1.11l-1-9A1 1 0 0015 7h-1V6a4 4 0 00-4-4zm2 5V6a2 2 0 10-4 0v1h4zm-6 3a1 1 0 112 0 1 1 0 01-2 0zm7-1a1 1 0 100 2 1 1 0 000-2z" clip-rule="evenodd"></path> |
| </svg> |
| </button> |
| <button class="p-2 rounded-full"> |
| <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
| <path fill-rule="evenodd" d="M11.49 3.17c-.38-1.56-2.6-1.56-2.98 0a1.532 1.532 0 01-2.286.948c-1.372-.836-2.942.734-2.106 2.106.54.886.061 2.042-.947 2.287-1.561.379-1.561 2.6 0 2.978a1.532 1.532 0 01.947 2.287c-.836 1.372.734 2.942 2.106 2.106a1.532 1.532 0 012.287.947c.379 1.561 2.6 1.561 2.978 0a1.533 1.533 0 012.287-.947c1.372.836 2.942-.734 2.106-2.106a1.533 1.533 0 01.947-2.287c1.561-.379 1.561-2.6 0-2.978a1.532 1.532 0 01-.947-2.287c.836-1.372-.734-2.942-2.106-2.106a1.532 1.532 0 01-2.287-.947zM10 13a3 3 0 100-6 3 3 0 000 6z" clip-rule="evenodd"></path> |
| </svg> |
| </button> |
| </div> |
| </div> |
| |
| |
| <div class="phone-side absolute top-0 left-0 w-2 h-full rounded-l-[30px]"></div> |
| <div class="phone-side absolute top-0 right-0 w-2 h-full rounded-r-[30px]"></div> |
| <div class="phone-side absolute bottom-0 left-0 w-full h-2 rounded-b-[30px]"></div> |
| </div> |
| </div> |
|
|
| <script> |
| |
| const CASINO_NAMES = [ |
| "Lucky Spin Casino", |
| "Golden Jackpot", |
| "Royal Flush Club", |
| "Diamond VIP", |
| "High Rollers" |
| ]; |
| |
| const GAME_NAMES = [ |
| "Book of Ra", |
| "Mega Fortune", |
| "Starburst", |
| "Gonzo's Quest", |
| "Dead or Alive" |
| ]; |
| |
| |
| let balance = { val: 1240.00 }; |
| let transactions = []; |
| |
| |
| function updateTime() { |
| const now = new Date(); |
| const hours = now.getHours().toString().padStart(2, '0'); |
| const minutes = now.getMinutes().toString().padStart(2, '0'); |
| document.getElementById('current-time').textContent = `${hours}:${minutes}`; |
| } |
| |
| setInterval(updateTime, 60000); |
| updateTime(); |
| |
| |
| function generateRandomAmount() { |
| const baseAmount = Math.random() * 1000; |
| const roundedAmount = Math.floor(baseAmount / 10) * 10 + 5; |
| return Math.max(50, roundedAmount); |
| } |
| |
| |
| function addTransaction() { |
| const isBigWin = Math.random() > 0.85; |
| const casinoName = isBigWin ? "JACKPOT! " + CASINO_NAMES[Math.floor(Math.random() * CASINO_NAMES.length)] : |
| CASINO_NAMES[Math.floor(Math.random() * CASINO_NAMES.length)]; |
| |
| const gameName = GAME_NAMES[Math.floor(Math.random() * GAME_NAMES.length)]; |
| const amount = isBigWin ? generateRandomAmount() * 3 : generateRandomAmount(); |
| const minutesAgo = Math.floor(Math.random() * 15) + 1; |
| |
| const transaction = { |
| id: Date.now(), |
| casino: casinoName, |
| game: gameName, |
| amount: amount, |
| time: `${minutesAgo} min ago` |
| }; |
| |
| |
| transactions.unshift(transaction); |
| |
| |
| if (transactions.length > 5) { |
| transactions.pop(); |
| } |
| |
| |
| balance.val += amount; |
| document.getElementById("balance").textContent = `$${balance.val.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ",")}`; |
| |
| |
| renderTransactions(); |
| |
| |
| const newTransaction = document.getElementById(`transaction-${transaction.id}`); |
| gsap.from(newTransaction, { |
| opacity: 0, |
| y: 20, |
| duration: 0.5, |
| ease: "power2.out" |
| }); |
| } |
| |
| |
| function renderTransactions() { |
| const container = document.getElementById('transactions-container'); |
| container.innerHTML = ''; |
| |
| transactions.forEach(t => { |
| const transactionEl = document.createElement('div'); |
| transactionEl.id = `transaction-${t.id}`; |
| transactionEl.className = 'transaction-item rounded-xl p-3 flex items-center'; |
| |
| const isJackpot = t.casino.includes("JACKPOT!"); |
| |
| transactionEl.innerHTML = ` |
| <div class="w-8 h-8 rounded-full ${isJackpot ? 'casino-logo' : 'bg-green-500/20'} flex items-center justify-center mr-3"> |
| <svg class="w-4 h-4 ${isJackpot ? 'text-white' : 'text-green-400'}" fill="currentColor" viewBox="0 0 20 20"> |
| <path fill-rule="evenodd" d="M4 4a2 2 0 00-2 2v4a2 2 0 002 2V6h10a2 2 0 00-2-2H4zm2 6a2 2 0 012-2h8a2 2 0 012 2v4a2 2 0 01-2 2H8a2 2 0 01-2-2v-4zm6 4a2 2 0 100-4 2 2 0 000 4z" clip-rule="evenodd"></path> |
| </svg> |
| </div> |
| <div class="flex-1"> |
| <p class="text-sm font-medium">${t.casino}</p> |
| <p class="text-xs text-gray-400">${t.game} • ${t.time}</p> |
| </div> |
| <p class="text-sm font-medium ${isJackpot ? 'text-yellow-400' : 'text-green-400'}">+$${t.amount.toFixed(2)}</p> |
| `; |
| |
| container.appendChild(transactionEl); |
| }); |
| } |
| |
| |
| function initTransactions() { |
| for (let i = 0; i < 3; i++) { |
| setTimeout(addTransaction, i * 1000); |
| } |
| } |
| |
| |
| function startTransactionCycle() { |
| addTransaction(); |
| setInterval(addTransaction, 15000); |
| } |
| |
| |
| const phone = document.querySelector('.phone-3d'); |
| document.addEventListener('mousemove', (e) => { |
| const x = e.clientX / window.innerWidth; |
| const y = e.clientY / window.innerHeight; |
| |
| gsap.to(phone, { |
| rotationY: -15 + (x * 10), |
| rotationX: 10 - (y * 10), |
| duration: 1, |
| ease: "power2.out" |
| }); |
| }); |
| |
| |
| document.addEventListener('DOMContentLoaded', () => { |
| initTransactions(); |
| setTimeout(startTransactionCycle, 5000); |
| |
| |
| gsap.to(balance, { |
| val: 2000.00, |
| duration: 30, |
| ease: "power2.out", |
| onUpdate: () => { |
| document.getElementById("balance").textContent = `$${balance.val.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ",")}`; |
| } |
| }); |
| }); |
| </script> |
| <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=timoon811/phase4" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
| </html> |