sparkit/index.html

796 lines
22 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">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Sparkit — Клининг и химчистка в Астане</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Playfair+Display:wght@500;600;700;800&display=swap" rel="stylesheet">
<style>
:root {
--ink: #0F1218;
--ink-light: #161921;
--cyan: #00E5FF;
--cyan-darker: #00B8D4;
--white: #FFFFFF;
--off-white: #FEFFFC;
--gray-100: #F2F4F7;
--gray-500: #5B6573;
--border-glass: rgba(255,255,255,0.12);
--border-light: rgba(255,255,255,0.08);
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
font-size: 15px;
line-height: 1.6;
color: var(--white);
background: var(--ink);
-webkit-font-smoothing: antialiased;
}
h1, h2, h3, .serif {
font-family: 'Playfair Display', Georgia, serif;
font-weight: 700;
line-height: 1.1;
letter-spacing: -0.02em;
}
.container {
max-width: 1140px;
margin: 0 auto;
padding: 0 24px;
}
/* NAV */
.nav {
position: fixed;
top: 0; left: 0; right: 0;
z-index: 100;
background: rgba(15,18,24,0.65);
backdrop-filter: blur(14px);
-webkit-backdrop-filter: blur(14px);
border-bottom: 1px solid var(--border-light);
}
.nav-inner {
display: flex;
justify-content: space-between;
align-items: center;
max-width: 1140px;
margin: 0 auto;
padding: 16px 24px;
}
.nav-logo {
font-family: 'Playfair Display', serif;
font-size: 22px;
font-weight: 700;
color: var(--white);
text-decoration: none;
letter-spacing: -0.01em;
}
.nav-links { display: flex; gap: 32px; align-items: center; }
.nav-links a {
color: rgba(255,255,255,0.65);
text-decoration: none;
font-size: 14px;
font-weight: 500;
transition: color 0.2s;
}
.nav-links a:hover { color: var(--white); }
.nav-cta {
background: var(--cyan);
color: var(--ink) !important;
padding: 8px 18px;
border-radius: 6px;
font-weight: 600 !important;
font-size: 13px !important;
}
.nav-cta:hover {
background: #1be5ff !important;
color: var(--ink) !important;
}
/* HERO */
.hero {
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
position: relative;
overflow: hidden;
padding: 160px 24px 100px;
}
.hero::before {
content: '';
position: absolute;
top: -50%; left: -50%;
width: 200%; height: 200%;
background:
radial-gradient(ellipse at 50% 20%, var(--cyan) 0%, transparent 35%),
radial-gradient(ellipse at 75% 55%, rgba(0,229,255,0.04) 0%, transparent 45%);
opacity: 0.08;
pointer-events: none;
}
.hero-bg-noise {
position: absolute;
inset: 0;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");
background-size: 256px;
pointer-events: none;
}
.hero-content { position: relative; z-index: 2; }
.hero-badge {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 6px 16px;
border-radius: 50px;
border: 1px solid var(--border-glass);
background: rgba(255,255,255,0.04);
backdrop-filter: blur(8px);
font-size: 13px;
font-weight: 500;
color: rgba(255,255,255,0.7);
margin-bottom: 32px;
}
.hero-badge-dot {
width: 6px; height: 6px;
border-radius: 50%;
background: var(--cyan);
box-shadow: 0 0 6px var(--cyan);
}
.hero h1 {
font-size: clamp(44px, 8vw, 80px);
font-weight: 800;
line-height: 1.05;
text-shadow:
0 0 50px rgba(0,229,255,0.25),
0 0 100px rgba(0,229,255,0.08);
margin-bottom: 24px;
max-width: 13ch;
margin-left: auto;
margin-right: auto;
}
.hero p {
font-size: 18px;
color: rgba(255,255,255,0.5);
max-width: 520px;
margin: 0 auto 40px;
line-height: 1.5;
}
/* BUTTONS */
.btn {
display: inline-block;
padding: 14px 32px;
border-radius: 10px;
font-weight: 600;
font-size: 15px;
text-decoration: none;
transition: all 0.25s cubic-bezier(0.4,0,0.2,1);
cursor: pointer;
border: none;
font-family: 'Inter', sans-serif;
letter-spacing: -0.01em;
}
.btn-primary {
background: var(--cyan);
color: var(--ink);
}
.btn-primary:hover {
background: #1be5ff;
box-shadow: 0 0 40px rgba(0,229,255,0.35);
transform: translateY(-2px);
}
.btn-glass {
background: rgba(255,255,255,0.05);
color: var(--white);
border: 1px solid var(--border-glass);
backdrop-filter: blur(8px);
}
.btn-glass:hover {
background: rgba(255,255,255,0.1);
border-color: rgba(255,255,255,0.2);
}
/* SECTION COMMON */
.section { padding: 140px 24px; }
.section-label {
display: inline-block;
font-size: 12px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(--cyan);
margin-bottom: 12px;
}
/* CALCULATOR (light bg) */
.calc-section {
background: var(--off-white);
color: var(--ink);
padding: 140px 24px;
}
.calc-section .section-label { color: #0088A0; }
.calc-section h2 { color: var(--ink); font-size: 48px; margin-bottom: 12px; }
.calc-subtitle {
font-size: 15px;
color: var(--gray-500);
max-width: 460px;
}
.calc-card {
background: rgba(255,255,255,0.75);
backdrop-filter: blur(24px);
-webkit-backdrop-filter: blur(24px);
border: 1px solid rgba(0,0,0,0.06);
border-radius: 24px;
padding: 48px;
max-width: 680px;
margin: 52px auto 0;
box-shadow:
0 1px 3px rgba(0,0,0,0.03),
0 8px 32px rgba(0,0,0,0.06);
}
.calc-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 24px;
}
.calc-divider {
grid-column: 1 / -1;
display: flex;
align-items: center;
gap: 14px;
color: var(--gray-500);
font-size: 12px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.08em;
margin: 4px 0;
}
.calc-divider::before,
.calc-divider::after {
content: '';
flex: 1;
height: 1px;
background: rgba(0,0,0,0.08);
}
.calc-field {
display: flex;
flex-direction: column;
gap: 6px;
}
.calc-field label {
font-size: 13px;
font-weight: 600;
color: var(--gray-500);
text-transform: uppercase;
letter-spacing: 0.04em;
}
.calc-field input[type="number"] {
width: 100%;
padding: 13px 16px;
border: 1px solid rgba(0,0,0,0.1);
border-radius: 12px;
font-size: 16px;
font-family: 'Inter', sans-serif;
font-weight: 500;
background: rgba(255,255,255,0.7);
transition: border-color 0.2s, box-shadow 0.2s;
outline: none;
color: var(--ink);
}
.calc-field input[type="number"]:focus {
border-color: var(--cyan);
box-shadow: 0 0 0 3px rgba(0,229,255,0.12);
}
.calc-field input[type="number"]::placeholder {
color: rgba(0,0,0,0.25);
}
/* Toggle for kitchen */
.calc-toggle-row {
display: flex;
align-items: center;
justify-content: space-between;
background: rgba(255,255,255,0.5);
border: 1px solid rgba(0,0,0,0.1);
border-radius: 12px;
padding: 13px 16px;
height: 52px;
}
.calc-toggle-row label.calc-toggle-label {
color: var(--ink);
text-transform: none;
letter-spacing: 0;
font-size: 15px;
font-weight: 500;
cursor: pointer;
}
.calc-toggle {
position: relative;
width: 44px;
height: 26px;
flex-shrink: 0;
}
.calc-toggle input {
opacity: 0;
width: 0;
height: 0;
}
.calc-toggle-slider {
position: absolute;
inset: 0;
background: rgba(0,0,0,0.15);
border-radius: 13px;
cursor: pointer;
transition: background 0.25s;
}
.calc-toggle-slider::after {
content: '';
position: absolute;
width: 20px;
height: 20px;
left: 3px;
top: 3px;
background: var(--white);
border-radius: 50%;
transition: transform 0.25s;
box-shadow: 0 1px 3px rgba(0,0,0,0.15);
}
.calc-toggle input:checked + .calc-toggle-slider {
background: var(--cyan);
}
.calc-toggle input:checked + .calc-toggle-slider::after {
transform: translateX(18px);
}
/* Result */
.calc-result {
margin-top: 36px;
padding-top: 28px;
border-top: 2px solid rgba(0,0,0,0.05);
text-align: center;
}
.calc-result-label {
font-size: 12px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--gray-500);
margin-bottom: 8px;
}
.calc-result-price {
font-family: 'Playfair Display', serif;
font-size: 56px;
font-weight: 800;
line-height: 1;
color: var(--ink);
margin-bottom: 8px;
word-break: break-all;
}
.calc-result-price span {
font-size: 28px;
font-weight: 600;
color: var(--gray-500);
}
.calc-result .btn-primary {
margin-top: 20px;
padding: 16px 40px;
font-size: 16px;
}
.calc-note {
font-size: 13px;
color: var(--gray-500);
margin-top: 14px;
}
/* BENEFITS */
.benefits {
background: var(--ink-light);
text-align: center;
}
.benefits h2 {
font-size: 48px;
margin-bottom: 20px;
}
.benefits-subtitle {
font-size: 15px;
color: rgba(255,255,255,0.45);
max-width: 460px;
margin: 0 auto 60px;
}
.benefits-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16px;
}
.benefit-card {
background: rgba(255,255,255,0.03);
border: 1px solid var(--border-light);
border-radius: 18px;
padding: 40px 24px 32px;
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
transition: all 0.35s cubic-bezier(0.4,0,0.2,1);
text-align: center;
}
.benefit-card:hover {
background: rgba(255,255,255,0.06);
border-color: var(--border-glass);
transform: translateY(-4px);
}
.benefit-icon {
font-size: 38px;
margin-bottom: 18px;
display: block;
}
.benefit-card h3 {
font-family: 'Playfair Display', serif;
font-size: 20px;
font-weight: 700;
margin-bottom: 10px;
letter-spacing: -0.01em;
}
.benefit-card p {
font-size: 14px;
color: rgba(255,255,255,0.45);
line-height: 1.55;
}
/* CONTACTS */
.contacts {
background: var(--ink);
text-align: center;
position: relative;
overflow: hidden;
}
.contacts::before {
content: '';
position: absolute;
bottom: -20%;
left: -10%;
right: -10%;
height: 500px;
background:
radial-gradient(ellipse at 50% 100%, rgba(0,229,255,0.1) 0%, transparent 60%),
radial-gradient(ellipse at 30% 80%, rgba(0,229,255,0.04) 0%, transparent 50%);
pointer-events: none;
}
.contacts-content { position: relative; z-index: 1; }
.contacts h2 { font-size: 48px; margin-bottom: 20px; }
.contacts-subtitle {
font-size: 15px;
color: rgba(255,255,255,0.45);
max-width: 460px;
margin: 0 auto 52px;
}
.contacts-grid {
display: flex;
justify-content: center;
gap: 56px;
flex-wrap: wrap;
margin-bottom: 60px;
}
.contact-item {
display: flex;
flex-direction: column;
align-items: center;
gap: 10px;
}
.contact-item .label {
font-size: 12px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--gray-500);
}
.contact-item a, .contact-item span {
font-size: 18px;
font-weight: 600;
color: var(--white);
text-decoration: none;
transition: color 0.2s;
}
.contact-item a:hover { color: var(--cyan); }
.contact-cta {
background: rgba(255,255,255,0.03);
border: 1px solid var(--border-light);
border-radius: 18px;
padding: 40px 32px;
max-width: 500px;
margin: 0 auto;
backdrop-filter: blur(8px);
}
.contact-cta h3 {
font-family: 'Playfair Display', serif;
font-size: 24px;
font-weight: 700;
margin-bottom: 10px;
}
.contact-cta p {
font-size: 14px;
color: rgba(255,255,255,0.5);
margin-bottom: 24px;
}
.contact-cta .btn-primary {
padding: 16px 36px;
font-size: 16px;
}
/* FOOTER */
.footer {
border-top: 1px solid rgba(255,255,255,0.06);
padding: 36px 24px;
text-align: center;
}
.footer p {
font-size: 13px;
color: rgba(255,255,255,0.3);
}
/* ANIMATIONS */
.fade-in {
opacity: 0;
transform: translateY(24px);
transition: opacity 0.8s cubic-bezier(0.4,0,0.2,1), transform 0.8s cubic-bezier(0.4,0,0.2,1);
}
.fade-in.visible {
opacity: 1;
transform: translateY(0);
}
/* RESPONSIVE */
@media (max-width: 768px) {
.nav-links { display: none; }
.hero h1 { font-size: clamp(34px, 10vw, 56px); }
.section { padding: 80px 20px; }
.calc-section { padding: 80px 20px; }
.calc-section h2 { font-size: 32px; }
.calc-card { padding: 32px 22px; margin-top: 36px; }
.calc-grid { grid-template-columns: 1fr; gap: 18px; }
.calc-result-price { font-size: 44px; }
.benefits { padding: 80px 20px; }
.benefits h2 { font-size: 32px; }
.benefits-grid { grid-template-columns: 1fr 1fr; }
.contacts { padding: 80px 20px; }
.contacts h2 { font-size: 32px; }
.contacts-grid { gap: 36px; }
}
@media (max-width: 480px) {
.benefits-grid { grid-template-columns: 1fr; }
.contacts-grid { flex-direction: column; align-items: center; gap: 28px; }
}
</style>
</head>
<body>
<nav class="nav">
<div class="nav-inner">
<a href="#" class="nav-logo">Sparkit</a>
<div class="nav-links">
<a href="#calculator">Калькулятор</a>
<a href="#benefits">Почему мы</a>
<a href="#contacts">Контакты</a>
<a href="#calculator" class="nav-cta">Рассчитать</a>
</div>
</div>
</nav>
<section class="hero">
<div class="hero-bg-noise"></div>
<div class="hero-content">
<div class="hero-badge fade-in">
<span class="hero-badge-dot"></span>
Бесплатный выезд мастера по Астане
</div>
<h1 class="fade-in">Чистота за секунды</h1>
<p class="fade-in">Профессиональный клининг и химчистка. Рассчитайте цену за 10 секунд — и получите идеальную чистоту без лишних хлопот.</p>
<a href="#calculator" class="btn btn-primary fade-in">Рассчитать стоимость</a>
</div>
</section>
<section class="calc-section" id="calculator">
<div class="container">
<div class="section-label fade-in">Калькулятор</div>
<h2 class="fade-in">Рассчитайте стоимость уборки</h2>
<p class="calc-subtitle fade-in">Заполните параметры — цена обновится мгновенно, без кнопок и ожидания</p>
<div class="calc-card fade-in">
<div class="calc-grid">
<div class="calc-field">
<label>Площадь (м²)</label>
<input type="number" id="area" value="0" min="0" max="2000" placeholder="Например, 60">
</div>
<div class="calc-field">
<label>Количество комнат</label>
<input type="number" id="rooms" value="0" min="0" max="30" placeholder="Например, 2">
</div>
<div class="calc-field">
<div class="calc-toggle-row">
<label class="calc-toggle-label" for="kitchen">Кухня</label>
<label class="calc-toggle">
<input type="checkbox" id="kitchen">
<span class="calc-toggle-slider"></span>
</label>
</div>
</div>
<div class="calc-field">
<label>Количество балконов</label>
<input type="number" id="balconies" value="0" min="0" max="10" placeholder="Например, 1">
</div>
<div class="calc-divider">Химчистка</div>
<div class="calc-field">
<label>Предметов мебели</label>
<input type="number" id="furniture" value="0" min="0" max="100" placeholder="Например, 2">
</div>
<div class="calc-field">
<label>Количество ковров</label>
<input type="number" id="carpets" value="0" min="0" max="50" placeholder="Например, 1">
</div>
</div>
<div class="calc-result">
<div class="calc-result-label">Примерная стоимость</div>
<div class="calc-result-price" id="totalPrice">0 <span></span></div>
<a href="#" class="btn btn-primary" id="orderBtn">Заказать через WhatsApp</a>
<p class="calc-note">Точная цена после бесплатного осмотра мастером</p>
</div>
</div>
</div>
</section>
<section class="section benefits" id="benefits">
<div class="container">
<div class="section-label fade-in">Почему Sparkit</div>
<h2 class="fade-in">Чистота без компромиссов</h2>
<p class="benefits-subtitle fade-in">Мы не просто убираем — мы создаём пространство, в которое приятно возвращаться</p>
<div class="benefits-grid">
<div class="benefit-card fade-in">
<span class="benefit-icon">🚀</span>
<h3>Быстрый выезд</h3>
<p>Приедем в день заявки или к следующему утру. Без опозданий и задержек.</p>
</div>
<div class="benefit-card fade-in">
<span class="benefit-icon">🌿</span>
<h3>Эко-средства</h3>
<p>Безопасная химия без резких запахов. Чистота без вреда для вас и дома.</p>
</div>
<div class="benefit-card fade-in">
<span class="benefit-icon"></span>
<h3>Опытные мастера</h3>
<p>Команда с опытом от 3 лет. Знаем все тонкости клининга и химчистки.</p>
</div>
<div class="benefit-card fade-in">
<span class="benefit-icon">🛡️</span>
<h3>Гарантия качества</h3>
<p>Не устроит результат — переделаем бесплатно. Ваш комфорт — наш стандарт.</p>
</div>
</div>
</div>
</section>
<section class="section contacts" id="contacts">
<div class="container contacts-content">
<div class="section-label fade-in">Контакты</div>
<h2 class="fade-in">Свяжитесь с нами</h2>
<p class="contacts-subtitle fade-in">Ответим за минуту. Работаем по всей Астане без выходных.</p>
<div class="contacts-grid fade-in">
<div class="contact-item">
<span class="label">Телефон</span>
<a href="tel:+77001234567">+7 700 123-45-67</a>
</div>
<div class="contact-item">
<span class="label">WhatsApp</span>
<a href="https://wa.me/77001234567">Написать в WhatsApp</a>
</div>
<div class="contact-item">
<span class="label">Город</span>
<span>Астана</span>
</div>
</div>
<div class="contact-cta fade-in">
<h3>Готовы к чистоте?</h3>
<p>Оставьте заявку в WhatsApp — рассчитаем точную цену и приедем когда удобно</p>
<a href="https://wa.me/77001234567" class="btn btn-primary">Написать в WhatsApp</a>
</div>
</div>
</section>
<footer class="footer">
<div class="container">
<p>&copy; 2026 Sparkit. Профессиональный клининг и химчистка в Астане.</p>
</div>
</footer>
<script>
(function () {
'use strict';
var RATES = {
areaPerSqm: 500,
room: 3000,
kitchen: 5000,
balcony: 2500,
furniture: 4000,
carpet: 3500
};
var areaEl = document.getElementById('area');
var roomsEl = document.getElementById('rooms');
var kitchenEl = document.getElementById('kitchen');
var balconiesEl = document.getElementById('balconies');
var furnitureEl = document.getElementById('furniture');
var carpetsEl = document.getElementById('carpets');
var totalPriceEl = document.getElementById('totalPrice');
var orderBtn = document.getElementById('orderBtn');
function formatPrice(price) {
return String(price).replace(/\B(?=(\d{3})+(?!\d))/g, ' ');
}
function calculate() {
var area = Math.max(0, parseInt(areaEl.value, 10) || 0);
var rooms = Math.max(0, parseInt(roomsEl.value, 10) || 0);
var kitchen = kitchenEl.checked;
var balconies = Math.max(0, parseInt(balconiesEl.value, 10) || 0);
var furniture = Math.max(0, parseInt(furnitureEl.value, 10) || 0);
var carpets = Math.max(0, parseInt(carpetsEl.value, 10) || 0);
var total = 0;
total += area * RATES.areaPerSqm;
total += rooms * RATES.room;
if (kitchen) total += RATES.kitchen;
total += balconies * RATES.balcony;
total += furniture * RATES.furniture;
total += carpets * RATES.carpet;
totalPriceEl.innerHTML = formatPrice(total) + ' <span>₸</span>';
var msg = 'Здравствуйте! Хочу заказать клининг.\n\n' +
'Площадь: ' + area + ' м²\n' +
'Комнат: ' + rooms + '\n' +
'Кухня: ' + (kitchen ? 'да' : 'нет') + '\n' +
'Балконов: ' + balconies + '\n' +
'Мебели на химчистку: ' + furniture + '\n' +
'Ковров на химчистку: ' + carpets + '\n\n' +
'Примерная цена: ' + formatPrice(total) + ' ₸';
orderBtn.href = 'https://wa.me/77001234567?text=' + encodeURIComponent(msg);
}
[areaEl, roomsEl, kitchenEl, balconiesEl, furnitureEl, carpetsEl].forEach(function (el) {
el.addEventListener('input', calculate);
el.addEventListener('change', calculate);
});
calculate();
var observer = new IntersectionObserver(function (entries) {
entries.forEach(function (entry) {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
}
});
}, { threshold: 0.1, rootMargin: '0px 0px -30px 0px' });
document.querySelectorAll('.fade-in').forEach(function (el) {
observer.observe(el);
});
})();
</script>
</body>
</html>