razrabotay-stranitsu-registr-2/index.html

439 lines
21 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="ru" data-theme="light">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Регистрация — КТ Опен Хакатон 2026</title>
<link rel="stylesheet" href="design-system/kt-ai-fonts.css">
<link rel="stylesheet" href="design-system/kt-ai-tokens.css">
<link rel="stylesheet" href="design-system/kt-ai-components.css">
<link rel="stylesheet" href="design-system/kt-ai-page.css">
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🚀</text></svg>">
<style>
a.kt-ai-btn { text-decoration: none; }
.hero-gradient {
background: linear-gradient(135deg, var(--kt-ai-bg-soft) 0%, var(--kt-ai-bg) 100%);
border-radius: var(--kt-ai-radius-3xl);
padding: var(--kt-ai-space-12);
}
.form-section {
margin-top: var(--kt-ai-space-10);
}
.stats-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: var(--kt-ai-space-6);
margin: var(--kt-ai-space-8) 0;
}
.stat-card {
background: var(--kt-ai-card-bg);
border: 1px solid var(--kt-ai-card-border);
border-radius: var(--kt-ai-radius-xl);
padding: var(--kt-ai-space-6);
text-align: center;
}
.stat-value {
font-size: var(--kt-ai-text-3xl);
font-weight: var(--kt-ai-font-bold);
color: var(--kt-ai-primary);
}
.stat-label {
color: var(--kt-ai-fg-muted);
margin-top: var(--kt-ai-space-2);
}
.success-message {
background: var(--kt-ai-bg-soft);
border: 2px solid var(--kt-ai-primary);
border-radius: var(--kt-ai-radius-xl);
padding: var(--kt-ai-space-8);
text-align: center;
margin-top: var(--kt-ai-space-8);
}
@media (max-width: 768px) {
.kt-ai-wrap {
padding-left: var(--kt-ai-space-4);
padding-right: var(--kt-ai-space-4);
}
.hero-gradient {
padding: var(--kt-ai-space-6);
}
.stats-grid {
grid-template-columns: repeat(2, 1fr);
gap: var(--kt-ai-space-4);
}
.kt-ai-grid {
grid-template-columns: 1fr !important;
}
.kt-ai-hero-actions {
flex-direction: column;
width: 100%;
}
.kt-ai-hero-actions .kt-ai-btn {
width: 100%;
}
.kt-ai-pagehead-in {
flex-wrap: wrap;
}
.kt-ai-pagehead-in .kt-ai-btn {
margin-left: var(--kt-ai-space-2);
}
}
</style>
</head>
<body class="kt-ai-app" data-kt-data-mode="demo">
<header class="kt-ai-pagehead">
<div class="kt-ai-wrap kt-ai-pagehead-in">
<div style="display:flex;align-items:center;gap:var(--kt-ai-space-3)">
<img src="https://code.vibe42.kz/tore/aitu/kt-logo.svg" alt="Казахтелеком" height="28">
<strong>КТ Опен Хакатон 2026</strong>
</div>
<span class="kt-ai-spacer"></span>
<span class="kt-ai-chip" data-tone="orange">Демо-данные</span>
<a class="kt-ai-btn" data-variant="ghost" href="#about">О хакатоне</a>
<a class="kt-ai-btn" data-variant="primary" href="#register">Зарегистрироваться</a>
</div>
</header>
<section class="kt-ai-hero" data-align="center">
<div class="kt-ai-wrap">
<div class="hero-gradient">
<h1>Создавай будущее вместе с Казахтелеком</h1>
<p class="kt-ai-hero-sub" style="max-width:720px;margin:var(--kt-ai-space-6) auto">
Крупнейший хакатон страны: 48 часов кода, менторство экспертов, призовой фонд 10 млн ₸
и реальные кейсы от телеком-гиганта. Стань частью технологической революции!
</p>
<div class="kt-ai-hero-actions">
<a class="kt-ai-btn" data-variant="primary" data-size="lg" href="#register">Зарегистрироваться</a>
<a class="kt-ai-btn" data-size="lg" href="#about">Узнать больше</a>
</div>
<div class="stats-grid" style="margin-top:var(--kt-ai-space-10);max-width:800px;margin-left:auto;margin-right:auto">
<div class="stat-card">
<div class="stat-value" id="stat-participants">247</div>
<div class="stat-label">Участников</div>
</div>
<div class="stat-card">
<div class="stat-value" id="stat-teams">52</div>
<div class="stat-label">Команд</div>
</div>
<div class="stat-card">
<div class="stat-value" id="stat-days">14</div>
<div class="stat-label">Дней до старта</div>
</div>
<div class="stat-card">
<div class="stat-value" id="stat-tracks">6</div>
<div class="stat-label">Направлений</div>
</div>
</div>
</div>
</div>
</section>
<section id="about" class="kt-ai-section" data-divider="true">
<div class="kt-ai-wrap">
<div class="kt-ai-section-head">
<h2>Что тебя ждёт</h2>
<p>Три дня интенсивной работы, нетворкинга и создания прорывных проектов</p>
</div>
<div class="kt-ai-grid" style="margin-top:var(--kt-ai-space-9)">
<article class="kt-ai-tile">
<div class="kt-ai-tile-icon">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M12 2L2 7l10 5 10-5-10-5z"/><path d="M2 17l10 5 10-5"/><path d="M2 12l10 5 10-5"/>
</svg>
</div>
<h3>6 треков инноваций</h3>
<p>AI/ML, IoT, Cybersecurity, Big Data, Cloud, Telecom Solutions — выбирай своё направление</p>
</article>
<article class="kt-ai-tile">
<div class="kt-ai-tile-icon">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/>
</svg>
</div>
<h3>50+ менторов</h3>
<p>Эксперты Казахтелека и технологических компаний помогут довести идею до прототипа</p>
</article>
<article class="kt-ai-tile">
<div class="kt-ai-tile-icon">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<circle cx="12" cy="12" r="10"/><path d="M12 6v6l4 2"/>
</svg>
</div>
<h3>48 часов хардкора</h3>
<p>Нон-стоп кодинг, пицца, энергетика и комьюнити лучших разработчиков Казахстана</p>
</article>
<article class="kt-ai-tile">
<div class="kt-ai-tile-icon">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<line x1="12" y1="1" x2="12" y2="23"/><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/>
</svg>
</div>
<h3>10 млн ₸ призовых</h3>
<p>Щедрые награды победителям в каждом треке и специальные призы от партнёров</p>
</article>
<article class="kt-ai-tile">
<div class="kt-ai-tile-icon">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/><polyline points="10 9 9 9 8 9"/>
</svg>
</div>
<h3>Официальный сертификат</h3>
<p>Все участники получают сертификат хакатона для портфолио и LinkedIn</p>
</article>
<article class="kt-ai-tile">
<div class="kt-ai-tile-icon">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/><polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/>
</svg>
</div>
<h3>Трудоустройство</h3>
<p>Лучшие команды получат предложения о работе в Казахтелеке и партнёрских компаниях</p>
</article>
</div>
</div>
</section>
<section id="tracks" class="kt-ai-section" data-divider="true">
<div class="kt-ai-wrap">
<div class="kt-ai-section-head">
<h2>Направления хакатона</h2>
<p>Выбери трек, в котором будешь участвовать</p>
</div>
<div class="kt-ai-grid" style="margin-top:var(--kt-ai-space-9)" data-cols="3">
<article class="kt-ai-tile" data-span="1">
<h3 style="color:var(--kt-ai-chart-blue)">AI / Machine Learning</h3>
<p>Нейросети, компьютерное зрение, NLP, генеративные модели</p>
</article>
<article class="kt-ai-tile" data-span="1">
<h3 style="color:var(--kt-ai-chart-green)">IoT & Smart Devices</h3>
<p>Умные устройства, сенсоры, автоматизация, embedded</p>
</article>
<article class="kt-ai-tile" data-span="1">
<h3 style="color:var(--kt-ai-chart-orange)">Cybersecurity</h3>
<p>Защита данных, пентест, криптография, безопасность сетей</p>
</article>
<article class="kt-ai-tile" data-span="1">
<h3 style="color:var(--kt-ai-chart-pink)">Big Data & Analytics</h3>
<p>Обработка больших данных, визуализация, предиктивная аналитика</p>
</article>
<article class="kt-ai-tile" data-span="1">
<h3 style="color:var(--kt-ai-chart-salmon)">Cloud & DevOps</h3>
<p>Облачные архитектуры, микросервисы, CI/CD, контейнеризация</p>
</article>
<article class="kt-ai-tile" data-span="1">
<h3 style="color:var(--kt-ai-primary)">Telecom Solutions</h3>
<p>Телеком-сервисы, 5G, сети нового поколения, API операторов</p>
</article>
</div>
</div>
</section>
<section id="register" class="kt-ai-cta">
<div class="kt-ai-wrap" style="max-width:720px">
<h2>Регистрация участника</h2>
<p style="margin-bottom:var(--kt-ai-space-8)">Заполни форму, чтобы стать участником КТ Опен Хакатон 2026</p>
<div id="registration-form-container">
<form id="registration-form" class="kt-ai-card" style="padding:var(--kt-ai-space-8)">
<div class="kt-ai-field" style="margin-bottom:var(--kt-ai-space-5)">
<label for="fullname" style="display:block;margin-bottom:var(--kt-ai-space-2);font-weight:var(--kt-ai-font-medium)">ФИО *</label>
<input type="text" id="fullname" name="fullname" class="kt-ai-input" placeholder="Иванов Иван Иванович" required>
</div>
<div class="kt-ai-field" style="margin-bottom:var(--kt-ai-space-5)">
<label for="email" style="display:block;margin-bottom:var(--kt-ai-space-2);font-weight:var(--kt-ai-font-medium)">Email *</label>
<input type="email" id="email" name="email" class="kt-ai-input" placeholder="ivan@example.com" required>
</div>
<div class="kt-ai-field" style="margin-bottom:var(--kt-ai-space-5)">
<label for="phone" style="display:block;margin-bottom:var(--kt-ai-space-2);font-weight:var(--kt-ai-font-medium)">Телефон *</label>
<input type="tel" id="phone" name="phone" class="kt-ai-input" placeholder="+7 777 123 45 67" required>
</div>
<div class="kt-ai-field" style="margin-bottom:var(--kt-ai-space-5)">
<label for="team" style="display:block;margin-bottom:var(--kt-ai-space-2);font-weight:var(--kt-ai-font-medium)">Название команды</label>
<input type="text" id="team" name="team" class="kt-ai-input" placeholder="Code Warriors">
</div>
<div class="kt-ai-field" style="margin-bottom:var(--kt-ai-space-5)">
<label for="track" style="display:block;margin-bottom:var(--kt-ai-space-2);font-weight:var(--kt-ai-font-medium)">Направление *</label>
<select id="track" name="track" class="kt-ai-select" required>
<option value="">Выберите трек</option>
<option value="AI / Machine Learning">AI / Machine Learning</option>
<option value="IoT & Smart Devices">IoT & Smart Devices</option>
<option value="Cybersecurity">Cybersecurity</option>
<option value="Big Data & Analytics">Big Data & Analytics</option>
<option value="Cloud & DevOps">Cloud & DevOps</option>
<option value="Telecom Solutions">Telecom Solutions</option>
</select>
</div>
<div class="kt-ai-field" style="margin-bottom:var(--kt-ai-space-6)">
<label for="experience" style="display:block;margin-bottom:var(--kt-ai-space-2);font-weight:var(--kt-ai-font-medium)">Опыт разработки</label>
<select id="experience" name="experience" class="kt-ai-select">
<option value="">Выберите опыт</option>
<option value="Junior (до 1 года)">Junior (до 1 года)</option>
<option value="Middle (1-3 года)">Middle (1-3 года)</option>
<option value="Senior (3+ лет)">Senior (3+ лет)</option>
<option value="Student">Студент</option>
</select>
</div>
<div class="kt-ai-field" style="margin-bottom:var(--kt-ai-space-6)">
<label for="motivation" style="display:block;margin-bottom:var(--kt-ai-space-2);font-weight:var(--kt-ai-font-medium)">Почему вы хотите участвовать?</label>
<textarea id="motivation" name="motivation" class="kt-ai-textarea" rows="4" placeholder="Расскажите о себе и своей мотивации..."></textarea>
</div>
<button type="submit" class="kt-ai-btn" data-variant="primary" data-size="lg" style="width:100%">
Зарегистрироваться
</button>
</form>
</div>
<div id="success-message" class="success-message" style="display:none">
<svg width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="var(--kt-ai-primary)" stroke-width="2" style="margin-bottom:var(--kt-ai-space-4)">
<path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/><polyline points="22 4 12 14.01 9 11.01"/>
</svg>
<h3 style="margin-bottom:var(--kt-ai-space-2)">Вы зарегистрированы!</h3>
<p style="color:var(--kt-ai-fg-muted)">Добро пожаловать на КТ Опен Хакатон 2026. Детали участия придут на email.</p>
<button id="new-registration" class="kt-ai-btn" data-variant="ghost" style="margin-top:var(--kt-ai-space-6)">
Зарегистрировать ещё одного
</button>
</div>
</div>
</section>
<footer class="kt-ai-wrap kt-ai-pagefoot">
<span>© 2026 Казахтелеком. КТ Опен Хакатон</span>
<span class="kt-ai-spacer"></span>
<a href="#" class="kt-ai-link">Политика конфиденциальности</a>
<span style="width:var(--kt-ai-space-6)"></span>
<a href="mailto:hakathon@kt.kz" class="kt-ai-link">hakathon@kt.kz</a>
</footer>
<script>
// === Демо-данные для начального наполнения ===
const DEMO_DATA = [
{ id: 1, fullname: 'Алиев Нурсултан', email: 'nursultan@example.com', phone: '+7 777 111 22 33', team: 'AI Pioneers', track: 'AI / Machine Learning', experience: 'Middle (1-3 года)', registeredAt: '2026-09-10' },
{ id: 2, fullname: 'Смирнова Анна', email: 'anna@example.com', phone: '+7 777 222 33 44', team: 'AI Pioneers', track: 'AI / Machine Learning', experience: 'Senior (3+ лет)', registeredAt: '2026-09-10' },
{ id: 3, fullname: 'Ибраев Данияр', email: 'daniyar@example.com', phone: '+7 777 333 44 55', team: 'IoT Masters', track: 'IoT & Smart Devices', experience: 'Middle (1-3 года)', registeredAt: '2026-09-11' },
{ id: 4, fullname: 'Ким Юлия', email: 'yulia@example.com', phone: '+7 777 444 55 66', team: 'Cyber Knights', track: 'Cybersecurity', experience: 'Junior (до 1 года)', registeredAt: '2026-09-11' },
{ id: 5, fullname: 'Омаров Ержан', email: 'erzhan@example.com', phone: '+7 777 555 66 77', team: 'Data Wizards', track: 'Big Data & Analytics', experience: 'Senior (3+ лет)', registeredAt: '2026-09-12' },
{ id: 6, fullname: 'Петров Александр', email: 'alex@example.com', phone: '+7 777 666 77 88', team: 'Cloud Ninjas', track: 'Cloud & DevOps', experience: 'Middle (1-3 года)', registeredAt: '2026-09-12' },
{ id: 7, fullname: 'Нурсултанова Айдана', email: 'aidana@example.com', phone: '+7 777 777 88 99', team: 'Telecom Pros', track: 'Telecom Solutions', experience: 'Student', registeredAt: '2026-09-13' },
{ id: 8, fullname: 'Васильев Дмитрий', email: 'dmitry@example.com', phone: '+7 777 888 99 00', team: 'AI Pioneers', track: 'AI / Machine Learning', experience: 'Junior (до 1 года)', registeredAt: '2026-09-13' },
];
// === Инициализация localStorage ===
function getRegistrations() {
const stored = localStorage.getItem('kt-hackathon-2026-registrations');
if (stored) {
return JSON.parse(stored);
}
// Первый запуск - сохраняем демо-данные
localStorage.setItem('kt-hackathon-2026-registrations', JSON.stringify(DEMO_DATA));
return DEMO_DATA;
}
function saveRegistration(reg) {
const regs = getRegistrations();
reg.id = Date.now();
reg.registeredAt = new Date().toISOString().split('T')[0];
regs.push(reg);
localStorage.setItem('kt-hackathon-2026-registrations', JSON.stringify(regs));
return regs;
}
// === Обновление статистики ===
function updateStats() {
const regs = getRegistrations();
const teams = new Set(regs.map(r => r.team).filter(Boolean));
const tracks = new Set(regs.map(r => r.track));
document.getElementById('stat-participants').textContent = regs.length;
document.getElementById('stat-teams').textContent = teams.size;
document.getElementById('stat-tracks').textContent = tracks.size;
// Дни до старта (хакатон 1 октября 2026)
const hackathonDate = new Date('2026-10-01');
const today = new Date();
const daysLeft = Math.ceil((hackathonDate - today) / (1000 * 60 * 60 * 24));
document.getElementById('stat-days').textContent = Math.max(0, daysLeft);
}
// === Утилиты ===
function escapeHtml(text) {
if (!text) return '';
const div = document.createElement('div');
div.textContent = text;
return div.innerHTML;
}
function formatDate(dateStr) {
if (!dateStr) return '';
const date = new Date(dateStr);
return date.toLocaleDateString('ru-RU', { day: 'numeric', month: 'long' });
}
// === Обработчики ===
document.getElementById('registration-form').addEventListener('submit', function(e) {
e.preventDefault();
const formData = new FormData(this);
const registration = {
fullname: formData.get('fullname'),
email: formData.get('email'),
phone: formData.get('phone'),
team: formData.get('team'),
track: formData.get('track'),
experience: formData.get('experience'),
motivation: formData.get('motivation')
};
saveRegistration(registration);
// Показываем успех
document.getElementById('registration-form-container').style.display = 'none';
document.getElementById('success-message').style.display = 'block';
// Обновляем всё
updateStats();
renderRegistrations();
// Скролл к успеху
document.getElementById('success-message').scrollIntoView({ behavior: 'smooth', block: 'center' });
});
document.getElementById('new-registration').addEventListener('click', function() {
document.getElementById('registration-form').reset();
document.getElementById('success-message').style.display = 'none';
document.getElementById('registration-form-container').style.display = 'block';
document.getElementById('registration-form').scrollIntoView({ behavior: 'smooth' });
});
// === Запуск при загрузке ===
updateStats();
// Плавный скролл для якорных ссылок
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function(e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({ behavior: 'smooth', block: 'start' });
}
});
});
</script>
</body>
</html>