coursesite / index.html
timoon811's picture
Add 2 files
552dd86 verified
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ты выиграл эту жизнь!</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
@keyframes fall {
0% {
transform: translateY(-100px) rotate(0deg);
opacity: 0;
}
10% {
opacity: 1;
}
100% {
transform: translateY(calc(100vh + 100px)) rotate(360deg);
opacity: 0;
}
}
.money {
position: absolute;
animation: fall linear forwards;
z-index: 10;
font-size: 24px;
color: #10b981;
text-shadow: 1px 1px 2px rgba(0,0,0,0.3);
}
.stage {
transition: all 0.5s ease;
}
.hidden {
display: none !important;
}
.creative-card {
transition: all 0.3s ease;
transform-style: preserve-3d;
}
.creative-card:hover {
transform: translateY(-5px) scale(1.03);
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
}
.creative-card.selected {
transform: scale(1.05);
box-shadow: 0 0 0 3px #8b5cf6;
}
.campaign-dropzone {
transition: all 0.3s ease;
}
.campaign-dropzone.drag-over {
background-color: rgba(139, 92, 246, 0.2);
transform: scale(1.02);
}
.counter {
font-family: 'Courier New', monospace;
text-shadow: 0 0 5px rgba(16, 185, 129, 0.5);
}
.final-screen {
background: linear-gradient(135deg, #6b21a8 0%, #3b82f6 50%, #10b981 100%);
background-size: 200% 200%;
animation: gradientBG 8s ease infinite;
}
@keyframes gradientBG {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
.pulse {
animation: pulse 2s infinite;
}
@keyframes pulse {
0% {
transform: scale(1);
}
50% {
transform: scale(1.05);
}
100% {
transform: scale(1);
}
}
</style>
</head>
<body class="bg-gray-900 text-white font-sans overflow-x-hidden">
<!-- Этап 1: Выбор креатива -->
<div id="stage1" class="stage min-h-screen flex flex-col items-center justify-center p-4">
<div class="text-center mb-8">
<h1 class="text-3xl md:text-5xl font-bold mb-4 text-transparent bg-clip-text bg-gradient-to-r from-purple-400 to-blue-500">
Выбери креатив, который порвет ленту
</h1>
<p class="text-lg md:text-xl text-gray-300">От твоего выбора зависит успех кампании!</p>
</div>
<div class="flex flex-wrap justify-center gap-6 max-w-4xl w-full">
<div class="creative-card w-full md:w-1/3 bg-gray-800 rounded-xl p-4 cursor-pointer" data-creative="1">
<div class="h-48 bg-gradient-to-br from-purple-500 to-blue-500 rounded-lg mb-4 flex items-center justify-center">
<i class="fas fa-ad text-6xl text-white opacity-80"></i>
</div>
<h3 class="text-xl font-bold mb-2">Креатив "Прорыв"</h3>
<p class="text-gray-400">CTR: 4.8% | Конверсия: 12%</p>
</div>
<div class="creative-card w-full md:w-1/3 bg-gray-800 rounded-xl p-4 cursor-pointer" data-creative="2">
<div class="h-48 bg-gradient-to-br from-blue-500 to-green-500 rounded-lg mb-4 flex items-center justify-center">
<i class="fas fa-bolt text-6xl text-white opacity-80"></i>
</div>
<h3 class="text-xl font-bold mb-2">Креатив "Молния"</h3>
<p class="text-gray-400">CTR: 5.2% | Конверсия: 15%</p>
</div>
<div class="creative-card w-full md:w-1/3 bg-gray-800 rounded-xl p-4 cursor-pointer" data-creative="3">
<div class="h-48 bg-gradient-to-br from-green-500 to-yellow-500 rounded-lg mb-4 flex items-center justify-center">
<i class="fas fa-fire text-6xl text-white opacity-80"></i>
</div>
<h3 class="text-xl font-bold mb-2">Креатив "Вулкан"</h3>
<p class="text-gray-400">CTR: 6.1% | Конверсия: 18%</p>
</div>
</div>
<div class="mt-8 text-gray-400">
<p>Кликни на креатив, который хочешь запустить</p>
</div>
</div>
<!-- Этап 2: Запуск рекламы -->
<div id="stage2" class="stage min-h-screen flex flex-col items-center justify-center p-4 hidden">
<div class="text-center mb-8">
<h1 class="text-3xl md:text-5xl font-bold mb-4 text-transparent bg-clip-text bg-gradient-to-r from-blue-400 to-green-500">
Настройка рекламной кампании
</h1>
<p class="text-lg md:text-xl text-gray-300">Перетащи выбранный креатив в зону кампании</p>
</div>
<div class="flex flex-col md:flex-row gap-8 max-w-5xl w-full items-center justify-center">
<div id="selected-creative-container" class="w-full md:w-1/3 bg-gray-800 rounded-xl p-4 cursor-move">
<div class="h-48 bg-gradient-to-br from-purple-500 to-blue-500 rounded-lg mb-4 flex items-center justify-center">
<i id="creative-icon" class="fas fa-ad text-6xl text-white opacity-80"></i>
</div>
<h3 id="creative-title" class="text-xl font-bold mb-2">Креатив</h3>
<p id="creative-stats" class="text-gray-400">CTR: 0% | Конверсия: 0%</p>
</div>
<div class="flex flex-col items-center justify-center">
<i class="fas fa-arrow-right text-3xl text-gray-500 my-4 hidden md:block"></i>
<i class="fas fa-arrow-down text-3xl text-gray-500 my-4 md:hidden"></i>
</div>
<div id="campaign-dropzone" class="campaign-dropzone w-full md:w-2/3 bg-gray-800 rounded-xl p-6 border-2 border-dashed border-gray-600 flex flex-col items-center justify-center">
<i class="fas fa-cloud-upload-alt text-5xl text-gray-500 mb-4"></i>
<h3 class="text-xl font-bold mb-2">Зона кампании</h3>
<p class="text-gray-500 text-center">Перетащи сюда креатив или нажми кнопку ниже</p>
<div class="mt-8 w-full max-w-md bg-gray-700 rounded-lg p-4">
<div class="mb-4">
<label class="block text-gray-400 mb-2">Бюджет</label>
<div class="flex items-center">
<span class="bg-gray-600 px-3 py-2 rounded-l">$</span>
<input type="number" value="100" class="bg-gray-700 px-3 py-2 w-full rounded-r border-l-0 border-gray-600">
</div>
</div>
<div class="mb-4">
<label class="block text-gray-400 mb-2">Аудитория</label>
<select class="bg-gray-700 px-3 py-2 w-full rounded border-gray-600">
<option>Широкая (18-65+)</option>
<option>Целевая (25-45)</option>
<option>Премиум (30-55)</option>
</select>
</div>
</div>
<button id="launch-btn" class="mt-6 px-8 py-3 bg-gradient-to-r from-blue-500 to-green-500 rounded-full font-bold text-lg hover:from-blue-600 hover:to-green-600 transition-all transform hover:scale-105">
Запустить кампанию
</button>
</div>
</div>
</div>
<!-- Этап 3: Деньги сыплются -->
<div id="stage3" class="stage min-h-screen flex flex-col items-center justify-center p-4 hidden relative overflow-hidden">
<div class="text-center mb-8 z-20">
<h1 class="text-3xl md:text-5xl font-bold mb-4 text-transparent bg-clip-text bg-gradient-to-r from-green-400 to-yellow-500">
Трафик пошёл. Деньги льются!
</h1>
<p class="text-lg md:text-xl text-gray-300">Твоя кампания приносит прибыль</p>
</div>
<div class="z-20 bg-gray-900 bg-opacity-70 rounded-xl p-8 max-w-2xl w-full">
<div class="flex justify-between items-center mb-6">
<div>
<h2 id="creative-name" class="text-xl font-bold">Креатив</h2>
<p class="text-gray-400">Статистика в реальном времени</p>
</div>
<div class="text-right">
<div class="text-sm text-gray-400">Прибыль</div>
<div class="counter text-3xl font-bold text-green-400">$<span id="profit">0</span></div>
</div>
</div>
<div class="grid grid-cols-2 md:grid-cols-3 gap-4 mb-6">
<div class="bg-gray-800 p-4 rounded-lg">
<div class="text-gray-400 text-sm">CTR</div>
<div class="text-xl font-bold"><span id="ctr">0</span>%</div>
</div>
<div class="bg-gray-800 p-4 rounded-lg">
<div class="text-gray-400 text-sm">Конверсия</div>
<div class="text-xl font-bold"><span id="conversion">0</span>%</div>
</div>
<div class="bg-gray-800 p-4 rounded-lg">
<div class="text-gray-400 text-sm">Лидов</div>
<div class="text-xl font-bold"><span id="leads">0</span></div>
</div>
</div>
<div class="w-full bg-gray-700 rounded-full h-4 mb-2">
<div id="progress-bar" class="bg-gradient-to-r from-blue-500 to-green-500 h-4 rounded-full" style="width: 0%"></div>
</div>
<div class="text-right text-sm text-gray-400">Завершено: <span id="progress-percent">0</span>%</div>
<button id="finish-btn" class="mt-6 px-8 py-3 bg-gradient-to-r from-purple-500 to-blue-500 rounded-full font-bold text-lg hover:from-purple-600 hover:to-blue-600 transition-all transform hover:scale-105 hidden">
Завершить
</button>
</div>
</div>
<!-- Этап 4: Финал -->
<div id="stage4" class="stage min-h-screen flex flex-col items-center justify-center p-4 hidden final-screen">
<div class="text-center max-w-4xl mx-auto z-20">
<h1 class="text-4xl md:text-6xl font-bold mb-6 text-white">
Ты выиграл эту жизнь!
</h1>
<p class="text-xl md:text-2xl mb-8 text-gray-100">
Но это — только начало 👉 Приходи на вебинар — мы покажем, как выйти в плюс по-настоящему
</p>
<div class="bg-white bg-opacity-10 backdrop-blur-md rounded-xl p-8 mb-8">
<div class="flex flex-wrap justify-center gap-6 mb-8">
<div class="flex items-center">
<i class="fas fa-money-bill-wave text-3xl text-green-400 mr-3"></i>
<span class="text-lg">Пассивный доход</span>
</div>
<div class="flex items-center">
<i class="fas fa-plane text-3xl text-blue-400 mr-3"></i>
<span class="text-lg">Путешествия</span>
</div>
<div class="flex items-center">
<i class="fas fa-home text-3xl text-purple-400 mr-3"></i>
<span class="text-lg">Недвижимость</span>
</div>
</div>
<a href="https://t.me/TrafficMastManager_bot" target="_blank" class="pulse inline-block px-10 py-4 bg-gradient-to-r from-yellow-400 to-yellow-600 rounded-full font-bold text-xl text-gray-900 hover:from-yellow-500 hover:to-yellow-700 transition-all transform hover:scale-105 shadow-lg">
🚀 Записаться на вебинар
</a>
</div>
<div class="text-gray-200 text-sm mt-8">
<p>Ты сделал первый шаг. Теперь узнай, как превратить игру в реальность!</p>
</div>
</div>
</div>
<script>
// Данные креативов
const creatives = {
1: {
title: "Креатив 'Прорыв'",
icon: "fa-ad",
ctr: 4.8,
conversion: 12,
colorFrom: "from-purple-500",
colorTo: "to-blue-500"
},
2: {
title: "Креатив 'Молния'",
icon: "fa-bolt",
ctr: 5.2,
conversion: 15,
colorFrom: "from-blue-500",
colorTo: "to-green-500"
},
3: {
title: "Креатив 'Вулкан'",
icon: "fa-fire",
ctr: 6.1,
conversion: 18,
colorFrom: "from-green-500",
colorTo: "to-yellow-500"
}
};
// Текущий выбранный креатив
let selectedCreative = null;
// Инициализация игры
document.addEventListener('DOMContentLoaded', function() {
// Этап 1: Выбор креатива
const creativeCards = document.querySelectorAll('.creative-card');
creativeCards.forEach(card => {
card.addEventListener('click', function() {
const creativeId = this.getAttribute('data-creative');
selectCreative(creativeId);
});
});
// Этап 2: Настройка кампании
const selectedCreativeContainer = document.getElementById('selected-creative-container');
const campaignDropzone = document.getElementById('campaign-dropzone');
const launchBtn = document.getElementById('launch-btn');
// Drag and drop
if (selectedCreativeContainer) {
selectedCreativeContainer.setAttribute('draggable', 'true');
selectedCreativeContainer.addEventListener('dragstart', function(e) {
e.dataTransfer.setData('text/plain', 'creative');
});
campaignDropzone.addEventListener('dragover', function(e) {
e.preventDefault();
this.classList.add('drag-over');
});
campaignDropzone.addEventListener('dragleave', function() {
this.classList.remove('drag-over');
});
campaignDropzone.addEventListener('drop', function(e) {
e.preventDefault();
this.classList.remove('drag-over');
if (selectedCreative) {
launchCampaign();
}
});
}
launchBtn.addEventListener('click', launchCampaign);
// Этап 3: Процесс заработка
const finishBtn = document.getElementById('finish-btn');
finishBtn.addEventListener('click', showFinal);
});
// Выбор креатива
function selectCreative(creativeId) {
selectedCreative = creatives[creativeId];
// Обновляем отображение выбранного креатива
const creativeCards = document.querySelectorAll('.creative-card');
creativeCards.forEach(card => {
card.classList.remove('selected');
if (card.getAttribute('data-creative') === creativeId) {
card.classList.add('selected');
}
});
// Переходим к следующему этапу
setTimeout(() => {
document.getElementById('stage1').classList.add('hidden');
document.getElementById('stage2').classList.remove('hidden');
// Обновляем информацию о выбранном креативе
const creativeIcon = document.getElementById('creative-icon');
const creativeTitle = document.getElementById('creative-title');
const creativeStats = document.getElementById('creative-stats');
creativeIcon.className = `fas ${selectedCreative.icon} text-6xl text-white opacity-80`;
creativeTitle.textContent = selectedCreative.title;
creativeStats.textContent = `CTR: ${selectedCreative.ctr}% | Конверсия: ${selectedCreative.conversion}%`;
// Обновляем фон креатива
const creativeContainer = document.getElementById('selected-creative-container');
creativeContainer.querySelector('div').className = `h-48 bg-gradient-to-br ${selectedCreative.colorFrom} ${selectedCreative.colorTo} rounded-lg mb-4 flex items-center justify-center`;
}, 300);
}
// Запуск кампании
function launchCampaign() {
if (!selectedCreative) return;
document.getElementById('stage2').classList.add('hidden');
document.getElementById('stage3').classList.remove('hidden');
// Обновляем информацию о креативе
document.getElementById('creative-name').textContent = selectedCreative.title;
// Запускаем анимацию денег
startMoneyRain();
// Запускаем симуляцию заработка
simulateEarnings();
}
// Анимация падающих денег
function startMoneyRain() {
const moneySymbols = ['💰', '💵', '💴', '💶', '💷', '💸', '🤑'];
setInterval(() => {
const money = document.createElement('div');
money.className = 'money';
money.textContent = moneySymbols[Math.floor(Math.random() * moneySymbols.length)];
// Случайная позиция по горизонтали
const left = Math.random() * 100;
money.style.left = `${left}%`;
// Случайная скорость падения
const duration = 3 + Math.random() * 7;
money.style.animationDuration = `${duration}s`;
// Случайный размер
const size = 0.5 + Math.random();
money.style.fontSize = `${size}em`;
document.getElementById('stage3').appendChild(money);
// Удаляем элемент после завершения анимации
setTimeout(() => {
money.remove();
}, duration * 1000);
}, 100);
}
// Симуляция заработка
function simulateEarnings() {
let profit = 0;
let leads = 0;
let progress = 0;
const profitElement = document.getElementById('profit');
const ctrElement = document.getElementById('ctr');
const conversionElement = document.getElementById('conversion');
const leadsElement = document.getElementById('leads');
const progressBar = document.getElementById('progress-bar');
const progressPercent = document.getElementById('progress-percent');
const finishBtn = document.getElementById('finish-btn');
const ctr = selectedCreative.ctr;
const conversion = selectedCreative.conversion;
ctrElement.textContent = ctr.toFixed(1);
conversionElement.textContent = conversion.toFixed(1);
const interval = setInterval(() => {
// Увеличиваем прогресс
progress += 1;
progressBar.style.width = `${progress}%`;
progressPercent.textContent = progress;
// Генерируем случайные значения
const randomProfit = Math.floor(Math.random() * 50) + 10;
const randomLeads = Math.floor(Math.random() * 3) + 1;
profit += randomProfit;
leads += randomLeads;
profitElement.textContent = profit.toLocaleString();
leadsElement.textContent = leads.toLocaleString();
// Если прогресс достиг 100%, останавливаем интервал
if (progress >= 100) {
clearInterval(interval);
finishBtn.classList.remove('hidden');
}
}, 100);
}
// Показать финальный экран
function showFinal() {
document.getElementById('stage3').classList.add('hidden');
document.getElementById('stage4').classList.remove('hidden');
}
</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/coursesite" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>