Compare commits
18 Commits
a54df15979
...
style/all
| Author | SHA1 | Date | |
|---|---|---|---|
| 382afe7694 | |||
| d426e3cb3e | |||
|
|
98f3d12455 | ||
| 288f028235 | |||
|
|
7ce71ffa33 | ||
|
|
1f8cb4e8c5 | ||
| 1707f05f7a | |||
|
|
429af5fa0f | ||
| 9903a824a5 | |||
|
|
e75a56cd9e | ||
| 09a407d456 | |||
|
|
a72a42031a | ||
| 29d81800ce | |||
|
|
ae1cc39fd1 | ||
| 0892a4392d | |||
|
|
a2127549ac | ||
|
|
acd36fce34 | ||
| 86fca87b87 |
2
assets/css/main.min.css
vendored
BIN
assets/images/other/_tmp_infra.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
assets/images/other/_tmp_services.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
assets/images/other/booking-section.webp
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
assets/images/other/footer-section.webp
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
assets/images/other/infrastructure-section.webp
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
assets/images/other/services-section.webp
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
assets/images/renders/basket.jpg
Normal file
|
After Width: | Height: | Size: 157 KiB |
BIN
assets/images/renders/led.jpg
Normal file
|
After Width: | Height: | Size: 138 KiB |
BIN
assets/images/renders/ledadnbasket.jpg
Normal file
|
After Width: | Height: | Size: 159 KiB |
@@ -43,4 +43,37 @@
|
|||||||
<path d="M20 4H4C2.89543 4 2 4.89543 2 6V18C2 19.1046 2.89543 20 4 20H20C21.1046 20 22 19.1046 22 18V6C22 4.89543 21.1046 4 20 4Z" stroke="#CF1717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="M20 4H4C2.89543 4 2 4.89543 2 6V18C2 19.1046 2.89543 20 4 20H20C21.1046 20 22 19.1046 22 18V6C22 4.89543 21.1046 4 20 4Z" stroke="#CF1717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
<path d="M22 7L13.03 12.7C12.7213 12.8934 12.3643 12.996 12 12.996C11.6357 12.996 11.2787 12.8934 10.97 12.7L2 7" stroke="#CF1717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="M22 7L13.03 12.7C12.7213 12.8934 12.3643 12.996 12 12.996C11.6357 12.996 11.2787 12.8934 10.97 12.7L2 7" stroke="#CF1717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
</symbol>
|
</symbol>
|
||||||
|
|
||||||
|
<symbol id="icon-time" viewBox="0 0 24 24" fill="none">
|
||||||
|
<circle cx="12" cy="12" r="9" stroke="#CF1717" stroke-width="2"/>
|
||||||
|
<path d="M12 7V12L15 14" stroke="#CF1717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
<symbol id="icon-whatsapp" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path d="M20.521 3.479A11.91 11.91 0 0012.037 0C5.488 0 .137 5.35.137 11.9c0 2.096.548 4.141 1.588 5.946L0 24l6.307-1.66a11.844 11.844 0 005.73 1.46h.005c6.549 0 11.9-5.35 11.9-11.9a11.833 11.833 0 00-3.421-8.421zm-8.484 18.31h-.004a9.86 9.86 0 01-5.018-1.371l-.36-.213-3.742.984.998-3.646-.234-.374a9.88 9.88 0 01-1.51-5.27c.002-5.457 4.442-9.896 9.904-9.896a9.83 9.83 0 017.01 2.903 9.833 9.833 0 012.89 6.997c-.003 5.458-4.443 9.886-9.934 9.886z" fill="currentColor"/>
|
||||||
|
<path d="M17.457 14.572c-.298-.15-1.764-.87-2.037-.968-.273-.1-.472-.15-.67.15-.198.298-.768.968-.943 1.166-.174.2-.347.224-.645.075-.298-.149-1.257-.463-2.395-1.477-.885-.788-1.483-1.762-1.657-2.06-.174-.299-.019-.46.131-.61.135-.134.298-.348.447-.521.15-.174.199-.299.299-.498.099-.199.05-.373-.025-.523-.075-.149-.67-1.614-.918-2.211-.241-.58-.486-.502-.67-.511-.174-.008-.372-.01-.57-.01a1.097 1.097 0 00-.794.373c-.273.298-1.042 1.017-1.042 2.48 0 1.465 1.067 2.88 1.216 3.078.149.199 2.103 3.213 5.095 4.505.712.307 1.266.49 1.699.627.713.227 1.362.195 1.875.118.572-.085 1.764-.72 2.013-1.414.248-.695.248-1.29.173-1.414-.074-.125-.273-.2-.57-.349z" fill="currentColor"/>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
<symbol id="icon-telegram" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path d="M9.347 14.695l-.394 5.54c.564 0 .808-.242 1.101-.533l2.64-2.52 5.472 4.005c1.004.558 1.712.264 1.983-.924L23.74 3.35c.355-1.453-.525-2.022-1.503-1.658L1.09 9.84c-1.443.563-1.421 1.367-.246 1.73l5.406 1.686L18.806 5.4c.591-.39 1.13-.174.687.217l-10.146 9.078z" fill="currentColor"/>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
<symbol id="icon-route" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path d="M6.5 4.5a2.5 2.5 0 110 5 2.5 2.5 0 010-5zm0 10a2.5 2.5 0 110 5 2.5 2.5 0 010-5zm11-5a2.5 2.5 0 110 5 2.5 2.5 0 010-5z" stroke="currentColor" stroke-width="1.8"/>
|
||||||
|
<path d="M8.8 7h5.1c1.2 0 2.1 1 2.1 2.1v.2M15.9 12.9v.2c0 1.2-1 2.1-2.1 2.1H8.8" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
<symbol id="icon-map" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path d="M8 3.5l8-2v19l-8 2-6-1.5v-19L8 3.5zm0 0v19m8-21l6 1.5v19L16 20.5" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
<symbol id="icon-instagram" viewBox="0 0 24 24" fill="none">
|
||||||
|
<rect x="2.5" y="2.5" width="19" height="19" rx="5" stroke="currentColor" stroke-width="2"/>
|
||||||
|
<circle cx="12" cy="12" r="4.25" stroke="currentColor" stroke-width="2"/>
|
||||||
|
<circle cx="17.2" cy="6.8" r="1.2" fill="currentColor"/>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
<symbol id="icon-vk" viewBox="0 0 24 24" fill="none">
|
||||||
|
<path d="M3.8 7.5c.1-.4.4-.6.8-.6h2.2c.3 0 .6.2.7.5.8 2.1 1.8 3.9 2.6 4.8.3.3.5.4.7.4.1 0 .2-.1.2-.4V7.8c0-.5.4-.9.9-.9h2c.5 0 .9.4.9.9v2.4c0 .8.3 1.1.6 1.1.2 0 .4-.1.7-.4.8-.9 1.7-2.6 2.5-4.6.1-.3.4-.5.7-.5h2.2c.6 0 1 .6.8 1.2-.6 1.7-1.5 3.3-2.4 4.4-.3.4-.4.7 0 1.2.9 1 1.8 1.9 2.5 3.2.3.6-.1 1.3-.8 1.3h-2.4c-.3 0-.5-.1-.7-.4-.5-.7-1.1-1.4-1.8-2-.2-.1-.3-.2-.5-.2-.2 0-.4.2-.4.5v1.2c0 .5-.4.9-.9.9h-1.3c-1.2 0-2.4-.4-3.6-1.4-1.7-1.4-3.1-3.7-4-6.4 0-.1 0-.3 0-.4z" fill="currentColor"/>
|
||||||
|
</symbol>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
@@ -54,3 +54,287 @@
|
|||||||
|
|
||||||
elements.forEach((element) => observer.observe(element));
|
elements.forEach((element) => observer.observe(element));
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
(() => {
|
||||||
|
const counters = Array.from(document.querySelectorAll(".js-counter"));
|
||||||
|
if (!counters.length) return;
|
||||||
|
|
||||||
|
const reduceMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
||||||
|
|
||||||
|
const formatCounter = (counter, value) => {
|
||||||
|
const suffix = counter.dataset.suffix || "";
|
||||||
|
counter.textContent = `${value}${suffix}`;
|
||||||
|
};
|
||||||
|
|
||||||
|
const setFinalValue = (counter) => {
|
||||||
|
const target = Number(counter.dataset.target || 0);
|
||||||
|
formatCounter(counter, Number.isFinite(target) ? target : 0);
|
||||||
|
};
|
||||||
|
|
||||||
|
const animateCounter = (counter) => {
|
||||||
|
const target = Number(counter.dataset.target || 0);
|
||||||
|
const duration = Number(counter.dataset.duration || 1300);
|
||||||
|
|
||||||
|
if (!Number.isFinite(target) || target <= 0) {
|
||||||
|
setFinalValue(counter);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let startTime = null;
|
||||||
|
|
||||||
|
const tick = (timestamp) => {
|
||||||
|
if (startTime === null) startTime = timestamp;
|
||||||
|
|
||||||
|
const progress = Math.min((timestamp - startTime) / duration, 1);
|
||||||
|
const currentValue = Math.floor(progress * target);
|
||||||
|
formatCounter(counter, currentValue);
|
||||||
|
|
||||||
|
if (progress < 1) {
|
||||||
|
window.requestAnimationFrame(tick);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
setFinalValue(counter);
|
||||||
|
};
|
||||||
|
|
||||||
|
window.requestAnimationFrame(tick);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (reduceMotion || !("IntersectionObserver" in window)) {
|
||||||
|
counters.forEach(setFinalValue);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const observer = new IntersectionObserver(
|
||||||
|
(entries, currentObserver) => {
|
||||||
|
entries.forEach((entry) => {
|
||||||
|
if (!entry.isIntersecting) return;
|
||||||
|
animateCounter(entry.target);
|
||||||
|
currentObserver.unobserve(entry.target);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
{ threshold: 0.45 }
|
||||||
|
);
|
||||||
|
|
||||||
|
counters.forEach((counter) => {
|
||||||
|
formatCounter(counter, 0);
|
||||||
|
observer.observe(counter);
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
|
||||||
|
(() => {
|
||||||
|
const slider = document.querySelector("[data-reviews-slider]");
|
||||||
|
if (!slider) return;
|
||||||
|
|
||||||
|
const viewport = slider.querySelector("[data-reviews-viewport]");
|
||||||
|
const track = slider.querySelector("[data-reviews-track]");
|
||||||
|
const prevButton = slider.querySelector("[data-reviews-prev]");
|
||||||
|
const nextButton = slider.querySelector("[data-reviews-next]");
|
||||||
|
const dotsContainer = document.querySelector("[data-reviews-dots]");
|
||||||
|
const cards = Array.from(track?.querySelectorAll(".review-card") ?? []);
|
||||||
|
|
||||||
|
if (!viewport || !track || !prevButton || !nextButton || !dotsContainer || cards.length < 2) return;
|
||||||
|
|
||||||
|
let currentIndex = 0;
|
||||||
|
let touchStartX = 0;
|
||||||
|
|
||||||
|
const readVisibleSlides = () => {
|
||||||
|
const visibleValue = Number.parseInt(getComputedStyle(slider).getPropertyValue("--reviews-visible"), 10);
|
||||||
|
return Number.isFinite(visibleValue) && visibleValue > 0 ? visibleValue : 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
const readTrackGap = () => {
|
||||||
|
const styles = getComputedStyle(track);
|
||||||
|
const gapValue = styles.gap || styles.columnGap || "0";
|
||||||
|
const parsedGap = Number.parseFloat(gapValue);
|
||||||
|
return Number.isFinite(parsedGap) ? parsedGap : 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
const maxIndex = () => Math.max(0, cards.length - readVisibleSlides());
|
||||||
|
|
||||||
|
const renderDots = () => {
|
||||||
|
const total = maxIndex() + 1;
|
||||||
|
dotsContainer.innerHTML = "";
|
||||||
|
|
||||||
|
for (let index = 0; index < total; index += 1) {
|
||||||
|
const dot = document.createElement("button");
|
||||||
|
dot.type = "button";
|
||||||
|
dot.className = "reviews__dot";
|
||||||
|
dot.setAttribute("aria-label", `Показать отзыв ${index + 1}`);
|
||||||
|
dot.addEventListener("click", () => {
|
||||||
|
currentIndex = index;
|
||||||
|
update();
|
||||||
|
});
|
||||||
|
dotsContainer.appendChild(dot);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const update = () => {
|
||||||
|
const max = maxIndex();
|
||||||
|
currentIndex = Math.min(Math.max(currentIndex, 0), max);
|
||||||
|
|
||||||
|
const cardWidth = cards[0].getBoundingClientRect().width;
|
||||||
|
const offset = (cardWidth + readTrackGap()) * currentIndex;
|
||||||
|
track.style.transform = `translateX(${-offset}px)`;
|
||||||
|
|
||||||
|
prevButton.disabled = currentIndex === 0;
|
||||||
|
nextButton.disabled = currentIndex === max;
|
||||||
|
|
||||||
|
const dots = Array.from(dotsContainer.querySelectorAll(".reviews__dot"));
|
||||||
|
dots.forEach((dot, index) => {
|
||||||
|
dot.classList.toggle("is-active", index === currentIndex);
|
||||||
|
dot.setAttribute("aria-current", index === currentIndex ? "true" : "false");
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
prevButton.addEventListener("click", () => {
|
||||||
|
currentIndex -= 1;
|
||||||
|
update();
|
||||||
|
});
|
||||||
|
|
||||||
|
nextButton.addEventListener("click", () => {
|
||||||
|
currentIndex += 1;
|
||||||
|
update();
|
||||||
|
});
|
||||||
|
|
||||||
|
viewport.addEventListener("touchstart", (event) => {
|
||||||
|
touchStartX = event.changedTouches[0].clientX;
|
||||||
|
}, { passive: true });
|
||||||
|
|
||||||
|
viewport.addEventListener("touchend", (event) => {
|
||||||
|
const deltaX = event.changedTouches[0].clientX - touchStartX;
|
||||||
|
const threshold = 48;
|
||||||
|
|
||||||
|
if (deltaX > threshold) {
|
||||||
|
currentIndex -= 1;
|
||||||
|
update();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (deltaX < -threshold) {
|
||||||
|
currentIndex += 1;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
}, { passive: true });
|
||||||
|
|
||||||
|
const handleResize = () => {
|
||||||
|
renderDots();
|
||||||
|
update();
|
||||||
|
};
|
||||||
|
|
||||||
|
let resizeRaf = null;
|
||||||
|
window.addEventListener("resize", () => {
|
||||||
|
if (resizeRaf) return;
|
||||||
|
resizeRaf = window.requestAnimationFrame(() => {
|
||||||
|
resizeRaf = null;
|
||||||
|
handleResize();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
renderDots();
|
||||||
|
update();
|
||||||
|
})();
|
||||||
|
|
||||||
|
(() => {
|
||||||
|
const bookingForm = document.getElementById("booking-form");
|
||||||
|
const successModal = document.getElementById("booking-success-modal");
|
||||||
|
|
||||||
|
if (!bookingForm || !successModal) return;
|
||||||
|
|
||||||
|
const closeTriggers = Array.from(successModal.querySelectorAll("[data-modal-close]"));
|
||||||
|
|
||||||
|
const openModal = () => {
|
||||||
|
successModal.classList.add("is-open");
|
||||||
|
successModal.setAttribute("aria-hidden", "false");
|
||||||
|
};
|
||||||
|
|
||||||
|
const closeModal = () => {
|
||||||
|
successModal.classList.remove("is-open");
|
||||||
|
successModal.setAttribute("aria-hidden", "true");
|
||||||
|
};
|
||||||
|
|
||||||
|
const triggerAnalytics = () => {
|
||||||
|
const eventName = "заявка";
|
||||||
|
|
||||||
|
const metrikaIdRaw = bookingForm.dataset.metrikaId || document.body.dataset.metrikaId || window.YANDEX_METRIKA_ID;
|
||||||
|
const metrikaId = Number(metrikaIdRaw);
|
||||||
|
|
||||||
|
if (typeof window.ym === "function" && Number.isFinite(metrikaId) && metrikaId > 0) {
|
||||||
|
window.ym(metrikaId, "reachGoal", eventName);
|
||||||
|
}
|
||||||
|
|
||||||
|
const legacyCounterKey = Object.keys(window).find((key) => {
|
||||||
|
return key.startsWith("yaCounter") && typeof window[key]?.reachGoal === "function";
|
||||||
|
});
|
||||||
|
|
||||||
|
if (legacyCounterKey) {
|
||||||
|
window[legacyCounterKey].reachGoal(eventName);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof window.gtag === "function") {
|
||||||
|
window.gtag("event", eventName, {
|
||||||
|
event_category: "lead",
|
||||||
|
event_label: "booking_form"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Array.isArray(window.dataLayer)) {
|
||||||
|
window.dataLayer.push({
|
||||||
|
event: eventName,
|
||||||
|
event_category: "lead",
|
||||||
|
event_label: "booking_form"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const triggerAutoReply = async (email) => {
|
||||||
|
if (!email) return;
|
||||||
|
|
||||||
|
const autoReplyEndpoint = bookingForm.dataset.autoreplyEndpoint || window.BOOKING_AUTOREPLY_ENDPOINT;
|
||||||
|
if (!autoReplyEndpoint) return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
await fetch(autoReplyEndpoint, {
|
||||||
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
email,
|
||||||
|
source: "booking-form"
|
||||||
|
})
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
// Auto-reply is optional and should not block form success.
|
||||||
|
console.error("Auto-reply request failed", error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
bookingForm.addEventListener("submit", async (event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
if (!bookingForm.checkValidity()) {
|
||||||
|
bookingForm.reportValidity();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const formData = new FormData(bookingForm);
|
||||||
|
const email = String(formData.get("email") || "").trim();
|
||||||
|
|
||||||
|
triggerAnalytics();
|
||||||
|
await triggerAutoReply(email);
|
||||||
|
|
||||||
|
bookingForm.reset();
|
||||||
|
openModal();
|
||||||
|
});
|
||||||
|
|
||||||
|
closeTriggers.forEach((trigger) => {
|
||||||
|
trigger.addEventListener("click", closeModal);
|
||||||
|
});
|
||||||
|
|
||||||
|
document.addEventListener("keydown", (event) => {
|
||||||
|
if (event.key === "Escape" && successModal.classList.contains("is-open")) {
|
||||||
|
closeModal();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
:root {
|
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500&family=Montserrat:wght@700&display=swap");
|
||||||
|
|
||||||
|
:root {
|
||||||
color-scheme: dark;
|
color-scheme: dark;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ $bp-lg: 1024px;
|
|||||||
$bp-md: 768px;
|
$bp-md: 768px;
|
||||||
$bp-sm: 520px;
|
$bp-sm: 520px;
|
||||||
|
|
||||||
$font-main: "Segoe UI", "Segoe UI Variable", "Helvetica Neue", Arial, sans-serif;
|
$font-main: "Inter", "Segoe UI", "Segoe UI Variable", "Helvetica Neue", Arial, sans-serif;
|
||||||
|
$font-heading: "Montserrat", "Inter", "Segoe UI", "Segoe UI Variable", "Helvetica Neue", Arial, sans-serif;
|
||||||
|
|
||||||
$color-bg: #121212;
|
$color-bg: #121212;
|
||||||
$color-surface: #293133;
|
$color-surface: #293133;
|
||||||
|
|||||||
416
index.html
@@ -16,7 +16,7 @@
|
|||||||
<nav class="header__nav" aria-label="Основная навигация">
|
<nav class="header__nav" aria-label="Основная навигация">
|
||||||
<a href="#objects">Объекты</a>
|
<a href="#objects">Объекты</a>
|
||||||
<a href="#services">Услуги</a>
|
<a href="#services">Услуги</a>
|
||||||
<a href="#contacts">Стоимость</a>
|
<a href="#pricing">Стоимость</a>
|
||||||
<a href="#gallery">Галерея</a>
|
<a href="#gallery">Галерея</a>
|
||||||
<a href="#contacts">Контакты</a>
|
<a href="#contacts">Контакты</a>
|
||||||
</nav>
|
</nav>
|
||||||
@@ -33,17 +33,17 @@
|
|||||||
лёд, залы, проживание и питание на одной территории
|
лёд, залы, проживание и питание на одной территории
|
||||||
</h1>
|
</h1>
|
||||||
<p>
|
<p>
|
||||||
Два ледовых поля 56×26 м, универсальный зал, фитнес-центр и
|
Два ледовых поля 58×26 м, универсальный зал, фитнес-центр и
|
||||||
апарт-отель на 70+ номеров. 15 минут от центра, своя парковка.
|
апарт-отель на 70+ номеров. В пределах ТТК.
|
||||||
</p>
|
</p>
|
||||||
<ul class="hero__tags">
|
<ul class="hero__tags">
|
||||||
<li>2 ледовых поля 56×26 м</li>
|
<li>2 ледовых поля 58×26 м</li>
|
||||||
<li>Универсальный зал, фитнес и залы единоборств</li>
|
<li>Универсальный зал, фитнес центр, и зал хореографии</li>
|
||||||
<li>Проживание и питание на территории</li>
|
<li>Проживание и питание на территории</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="hero__actions">
|
<div class="hero__actions">
|
||||||
<a class="btn" href="#booking">Забронировать площадку</a>
|
<a class="btn" href="#booking">Забронировать площадку</a>
|
||||||
<a class="btn btn--ghost" href="#">Посмотреть расписание</a>
|
<a class="btn btn--ghost" href="#">Узнать расписание</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
<div class="container highlights__grid">
|
<div class="container highlights__grid">
|
||||||
<article class="info-card">
|
<article class="info-card">
|
||||||
<h3>Всё в одном месте</h3>
|
<h3>Всё в одном месте</h3>
|
||||||
<p>Лёд, спортзалы, фитнес, проживание и питание — без переездов между объектами. Команда заезжает и работает по полной программе.</p>
|
<p>Лёд, спортзалы, фитнес, проживание и питание — 5 минут от метро Волгоградский проспект, удобный заезд на автомобиле, собственная парковка для гостей комплекса</p>
|
||||||
</article>
|
</article>
|
||||||
<article class="info-card">
|
<article class="info-card">
|
||||||
<h3>Удобная логистика</h3>
|
<h3>Удобная логистика</h3>
|
||||||
@@ -77,19 +77,19 @@
|
|||||||
</header>
|
</header>
|
||||||
|
|
||||||
<article class="object-card">
|
<article class="object-card">
|
||||||
<div class="object-card__image" style="background-image: linear-gradient(0deg, rgba(18,18,18,.3), rgba(18,18,18,.3)), url('./assets/images/other/ledovie.jpg');"></div>
|
<div class="object-card__image" style="background-image: linear-gradient(0deg, rgba(18,18,18,.3), rgba(18,18,18,.3)), url('./assets/images/renders/led.jpg');"></div>
|
||||||
<div class="object-card__content">
|
<div class="object-card__content">
|
||||||
<h3>Два ледовых поля</h3>
|
<h3>Два ледовых поля</h3>
|
||||||
<p>Стандарт 56×26 м. Тренировки, сборы, соревнования.</p>
|
<p>Стандарт 58×26 м. Тренировки, сборы, соревнования.</p>
|
||||||
<a class="btn btn--small" href="#booking">Забронировать</a>
|
<a class="btn btn--small" href="#booking">Забронировать</a>
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="object-card object-card--reverse">
|
<article class="object-card object-card--reverse">
|
||||||
<div class="object-card__image" style="background-image: linear-gradient(0deg, rgba(18,18,18,.3), rgba(18,18,18,.3)), url('./assets/images/other/IMG_4521-min.jpg');"></div>
|
<div class="object-card__image" style="background-image: linear-gradient(0deg, rgba(18,18,18,.3), rgba(18,18,18,.3)), url('./assets/images/renders/basket.jpg');"></div>
|
||||||
<div class="object-card__content">
|
<div class="object-card__content">
|
||||||
<h3>Универсальный зал</h3>
|
<h3>Универсальный зал</h3>
|
||||||
<p>Паркетное покрытие. Игровые виды спорта, ОФП, турниры.</p>
|
<p>Зал для игровых видов спорта, паркетное покрытие.</p>
|
||||||
<a class="btn btn--small" href="#booking">Забронировать</a>
|
<a class="btn btn--small" href="#booking">Забронировать</a>
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
@@ -103,25 +103,16 @@
|
|||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="object-card object-card--reverse">
|
<article class="object-card object-card--reverse" style="display:none;">
|
||||||
<div class="object-card__image" style="background-image: linear-gradient(0deg, rgba(18,18,18,.3), rgba(18,18,18,.3)), url('./assets/images/other/1231.png');"></div>
|
<div class="object-card__image" style="background-image: linear-gradient(0deg, rgba(18,18,18,.3), rgba(18,18,18,.3)), url('./assets/images/other/1231.png');"></div>
|
||||||
<div class="object-card__content">
|
<div class="object-card__content">
|
||||||
<h3>Зал хореографии</h3>
|
<h3>Зал хореографии</h3>
|
||||||
<p>Зеркала, станки. Танцы, групповые программы, ОФП.</p>
|
<p>Оборудован зеркалами и станками для занятий хореографией.</p>
|
||||||
<a class="btn btn--small" href="#booking">Подробнее</a>
|
<a class="btn btn--small" href="#booking">Подробнее</a>
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="object-card">
|
<article class="object-card object-card--reverse">
|
||||||
<div class="object-card__image" style="background-image: linear-gradient(0deg, rgba(18,18,18,.3), rgba(18,18,18,.3)), url('./assets/images/other/8540eec74dd51616e6b30215183b38ad1-870x580.jpg');"></div>
|
|
||||||
<div class="object-card__content">
|
|
||||||
<h3>Зал единоборств</h3>
|
|
||||||
<p>Бокс, ММА, борьба. Ринг, татами, мешки.</p>
|
|
||||||
<a class="btn btn--small" href="#booking">Подробнее</a>
|
|
||||||
</div>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
<article class="object-card">
|
|
||||||
<div class="object-card__image" style="background-image: linear-gradient(0deg, rgba(18,18,18,.3), rgba(18,18,18,.3)), url('./assets/images/other/6399e455dd0120ee5802a0d0_643691cf6bb745.08564640.jpg');"></div>
|
<div class="object-card__image" style="background-image: linear-gradient(0deg, rgba(18,18,18,.3), rgba(18,18,18,.3)), url('./assets/images/other/6399e455dd0120ee5802a0d0_643691cf6bb745.08564640.jpg');"></div>
|
||||||
<div class="object-card__content">
|
<div class="object-card__content">
|
||||||
<h3>Апарт-отель</h3>
|
<h3>Апарт-отель</h3>
|
||||||
@@ -139,7 +130,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="object-card">
|
<article class="object-card object-card--reverse">
|
||||||
<div class="object-card__image" style="background-image: linear-gradient(0deg, rgba(18,18,18,.3), rgba(18,18,18,.3)), url('./assets/images/other/8540eec74dd51616e6b30215183b38ad1-870x580.jpg');"></div>
|
<div class="object-card__image" style="background-image: linear-gradient(0deg, rgba(18,18,18,.3), rgba(18,18,18,.3)), url('./assets/images/other/8540eec74dd51616e6b30215183b38ad1-870x580.jpg');"></div>
|
||||||
<div class="object-card__content">
|
<div class="object-card__content">
|
||||||
<h3>Парковка и подъезд</h3>
|
<h3>Парковка и подъезд</h3>
|
||||||
@@ -204,15 +195,51 @@
|
|||||||
<p>Широкий спектр возможностей для вашего спорта</p>
|
<p>Широкий спектр возможностей для вашего спорта</p>
|
||||||
</header>
|
</header>
|
||||||
<div class="services__grid">
|
<div class="services__grid">
|
||||||
<a class="service-card" href="#booking">Аренда льда — почасовая или абонементом</a>
|
<a class="service-card" href="#booking">
|
||||||
<a class="service-card" href="#booking">Аренда залов — универсального, единоборств, хореографии, фитнес-зон</a>
|
<span class="service-card__title">Аренда льда</span>
|
||||||
<a class="service-card" href="#booking">Сборы команд «под ключ» — лёд + зал + проживание + питание</a>
|
<span class="service-card__description">Почасовая аренда. Подберем удобные слоты для тренировок и матчей.</span>
|
||||||
<a class="service-card" href="#booking">Проведение турниров и соревнований</a>
|
</a>
|
||||||
<a class="service-card" href="#booking">Корпоративные мероприятия и тимбилдинги</a>
|
<a class="service-card" href="#booking">
|
||||||
<a class="service-card" href="#booking">Фитнес — индивидуально, абонемент, групповые занятия</a>
|
<span class="service-card__title">Аренда залов</span>
|
||||||
|
<span class="service-card__description">Полноценная инфраструктура для проведения тренировочного процесса и организации мероприятий.</span>
|
||||||
|
</a>
|
||||||
|
<a class="service-card" href="#booking">
|
||||||
|
<span class="service-card__title">Сборы команд под ключ</span>
|
||||||
|
<span class="service-card__description">Лёд, зал, проживание и питание в одном комплексе без лишней логистики.</span>
|
||||||
|
</a>
|
||||||
|
<a class="service-card" href="#booking">
|
||||||
|
<span class="service-card__title">Корпоративные мероприятия</span>
|
||||||
|
<span class="service-card__description">Спортивные тимбилдинги, активные форматы и сопровождение программы под задачи компании.</span>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="services__cta">
|
<div class="services__cta">
|
||||||
<a class="btn services__cta-btn" href="#">Подобрать формат и время</a>
|
<a class="btn services__cta-btn" href="#booking">Подобрать формат и время</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="section pricing" id="pricing">
|
||||||
|
<div class="container">
|
||||||
|
<header class="section__head">
|
||||||
|
<h2>Стоимость</h2>
|
||||||
|
</header>
|
||||||
|
<div class="pricing__list">
|
||||||
|
<article class="pricing-item">
|
||||||
|
<h3>Аренда льда</h3>
|
||||||
|
<p>от 25.000₽/час</p>
|
||||||
|
</article>
|
||||||
|
<article class="pricing-item">
|
||||||
|
<h3>Универсальный зал</h3>
|
||||||
|
<p>от 7.000₽/час</p>
|
||||||
|
</article>
|
||||||
|
<article class="pricing-item">
|
||||||
|
<h3>Фитнес центр</h3>
|
||||||
|
<p>от 3.000₽/месяц</p>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
<p class="pricing__note">Точная стоимость зависит от времени, длительности и пакета услуг. Оставьте заявку — пришлём расчёт за 30 минут.</p>
|
||||||
|
<div class="pricing__cta">
|
||||||
|
<a class="btn pricing__cta-btn" href="#booking">Получить расчёт</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -224,9 +251,9 @@
|
|||||||
<p>Пространства OlimpArena в деталях</p>
|
<p>Пространства OlimpArena в деталях</p>
|
||||||
</header>
|
</header>
|
||||||
<div class="gallery__grid">
|
<div class="gallery__grid">
|
||||||
<div class="gallery__item" style="background-image:url('./assets/images/other/1231.png');"></div>
|
<div class="gallery__item" style="background-image:url('./assets/images/renders/basket.jpg');"></div>
|
||||||
<div class="gallery__item" style="background-image:url('./assets/images/other/6399e455dd0120ee5802a0d0_643691cf6bb745.08564640.jpg');"></div>
|
<div class="gallery__item" style="background-image:url('./assets/images/renders/led.jpg');"></div>
|
||||||
<div class="gallery__item" style="background-image:url('./assets/images/other/8540eec74dd51616e6b30215183b38ad1-870x580.jpg');"></div>
|
<div class="gallery__item" style="background-image:url('./assets/images/renders/ledadnbasket.jpg');"></div>
|
||||||
<div class="gallery__item" style="background-image:url('./assets/images/other/IMG_4521-min.jpg');"></div>
|
<div class="gallery__item" style="background-image:url('./assets/images/other/IMG_4521-min.jpg');"></div>
|
||||||
<div class="gallery__item" style="background-image:url('./assets/images/other/ledovie.jpg');"></div>
|
<div class="gallery__item" style="background-image:url('./assets/images/other/ledovie.jpg');"></div>
|
||||||
<div class="gallery__item" style="background-image:url('./assets/images/other/6399e455dd0120ee5802a0d0_643691cf6bb745.08564640.jpg');"></div>
|
<div class="gallery__item" style="background-image:url('./assets/images/other/6399e455dd0120ee5802a0d0_643691cf6bb745.08564640.jpg');"></div>
|
||||||
@@ -234,35 +261,120 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="section reviews">
|
<section class="section reviews" id="reviews">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<header class="section__head">
|
<header class="section__head">
|
||||||
<h2>Отзывы</h2>
|
<h2>Отзывы</h2>
|
||||||
<p>Что говорят о нас спортсмены и тренеры</p>
|
<p>Что говорят клиенты о тренировках и сборах в OlimpArena</p>
|
||||||
</header>
|
</header>
|
||||||
|
<div class="reviews__slider" data-reviews-slider>
|
||||||
<div class="reviews__grid">
|
<button class="reviews__nav reviews__nav--prev" type="button" data-reviews-prev aria-label="Предыдущий отзыв">←</button>
|
||||||
|
<div class="reviews__viewport" data-reviews-viewport>
|
||||||
|
<div class="reviews__track" data-reviews-track>
|
||||||
<article class="review-card">
|
<article class="review-card">
|
||||||
<p>"Лучшие ледовые условия в Москве. Качество льда на высочайшем уровне, всё организовано профессионально."</p>
|
<p>Ледовая арена премиум-уровня с отличной локацией. Удобные раздевалки и отличный лед. Профессиональный и приветливый персонал. Лучшая арена для тренировок и соревнований</p>
|
||||||
<strong>Александр Иванов</strong>
|
<div class="review-card__meta">
|
||||||
<span>Тренер хоккейной школы</span>
|
<strong>Владимир Л.</strong>
|
||||||
|
<a href="https://yandex.ru/maps/org/144435842347/reviews?reviews%5BpublicId%5D=1zaqed8uewrx0zdfqr75d3n8zm&si=j6p3d50uf3hwfup3ey7u8b3myg&utm_source=review" target="_blank" rel="noopener noreferrer">Читать на Яндекс Картах</a>
|
||||||
|
</div>
|
||||||
</article>
|
</article>
|
||||||
<article class="review-card">
|
<article class="review-card">
|
||||||
<p>"Отличный комплекс для тренировок. Залы хореографии и фитнеса действительно помогают прогрессировать быстрее."</p>
|
<p>Отличная локация, вежливый персонал, прекрасные ледовые арены, хорошо обустроенные раздевалки. Дизайнерское решение соответствует направлению. Всё очень круто!!! Обязательно посетите данное место!</p>
|
||||||
<strong>Елена Петрова</strong>
|
<div class="review-card__meta">
|
||||||
<span>Фигуристка</span>
|
<strong>Закопайло С.</strong>
|
||||||
|
<a href="https://yandex.ru/maps/org/144435842347/reviews?reviews%5BpublicId%5D=9g4uxhfhd4cqbjdjec0unkqzug&si=j6p3d50uf3hwfup3ey7u8b3myg&utm_source=review" target="_blank" rel="noopener noreferrer">Читать на Яндекс Картах</a>
|
||||||
|
</div>
|
||||||
</article>
|
</article>
|
||||||
<article class="review-card">
|
<article class="review-card">
|
||||||
<p>"Проводим здесь турниры уже второй год. Профессиональный подход команды и высокая готовность площадок."</p>
|
<p>Отличная локация, отличный лед и его постоянно обновляют, очень вежливый персонал, очень приятно находиться в помещении. Очень современные место. Хорошее впечатление</p>
|
||||||
<strong>Дмитрий Соколов</strong>
|
<div class="review-card__meta">
|
||||||
<span>Организатор турниров</span>
|
<strong>Ольга Р.</strong>
|
||||||
|
<a href="https://yandex.ru/maps/org/144435842347/reviews?reviews%5BpublicId%5D=vpdm0u6jzp7dcwndttf7z9akv4&si=j6p3d50uf3hwfup3ey7u8b3myg&utm_source=review" target="_blank" rel="noopener noreferrer">Читать на Яндекс Картах</a>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<article class="review-card">
|
||||||
|
<p>Побывала на экскурсии по своему направлению деятельности, понравилось все: инфраструктура комплекса, дизайн, персонал, все на высшем уровне 👍</p>
|
||||||
|
<div class="review-card__meta">
|
||||||
|
<strong>Елена Ильина</strong>
|
||||||
|
<a href="https://yandex.ru/maps/org/144435842347/reviews?reviews%5BpublicId%5D=fwfzfd88e6uq59qa8h6pv84ve0&si=j6p3d50uf3hwfup3ey7u8b3myg&utm_source=review target="_blank" rel="noopener noreferrer">Читать на Яндекс Картах</a>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<article class="review-card">
|
||||||
|
<p>Нам очень понравилась арена! Высокий уровень-комфорт, красота, расположение, персонал. Очень понравилось качество льда. Спасибо</p>
|
||||||
|
<div class="review-card__meta">
|
||||||
|
<strong>Руслан Я.</strong>
|
||||||
|
<a href="https://yandex.ru/maps/org/144435842347/reviews?reviews%5BpublicId%5D=81a1u705vn3kd0kmhdkc7qh02c&si=j6p3d50uf3hwfup3ey7u8b3myg&utm_source=review" target="_blank" rel="noopener noreferrer">Читать на Яндекс Картах</a>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<article class="review-card">
|
||||||
|
<p>Полноценное футбольное поле под крышей! Чего ещё желать? Таких объектов в Москве по пальцам одной руки можно пересчитать. И самое главное на территории легендарная футбольная школа...</p>
|
||||||
|
<div class="review-card__meta">
|
||||||
|
<strong>Andrey Kuleshov</strong>
|
||||||
|
<a href="https://yandex.ru/maps/org/144435842347/reviews?reviews%5BpublicId%5D=k1eyc820uqf5wua1ypqua8zyww&si=j6p3d50uf3hwfup3ey7u8b3myg&utm_source=review" target="_blank" rel="noopener noreferrer">Читать на Яндекс Картах</a>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<article class="review-card">
|
||||||
|
<p>Отличный лед. Приветливый персонал. Очень красиво внутри. Просторные раздевалки.</p>
|
||||||
|
<div class="review-card__meta">
|
||||||
|
<strong>Сергей рылов</strong>
|
||||||
|
<a href="https://yandex.ru/maps/org/144435842347/reviews?reviews%5BpublicId%5D=nah55c29h52e3fxw0bfuk2he1c&si=j6p3d50uf3hwfup3ey7u8b3myg&utm_source=review" target="_blank" rel="noopener noreferrer">Читать на Яндекс Картах</a>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<article class="review-card">
|
||||||
|
<p>Хороший персонал, хорошие место, хороший пк клуб. Всем советую, хороший пк клуб</p>
|
||||||
|
<div class="review-card__meta">
|
||||||
|
<strong>Иван Курцев</strong>
|
||||||
|
<a href="https://yandex.ru/maps/org/144435842347/reviews?reviews%5BpublicId%5D=af38gg3nfbrz1cnfr94peuv6zc&si=j6p3d50uf3hwfup3ey7u8b3myg&utm_source=review" target="_blank" rel="noopener noreferrer">Читать на Яндекс Картах</a>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<article class="review-card">
|
||||||
|
<p>Выглядит очень здорово. Будете в восторге от места, где найдется всем место для комфортного катания и ожидания.Отличный лед</p>
|
||||||
|
<div class="review-card__meta">
|
||||||
|
<strong>Оксана Викторовна завхоз</strong>
|
||||||
|
<a href="https://yandex.ru/maps/org/144435842347/reviews?reviews%5BpublicId%5D=rtr4medjwd3hev3138by8nw17c&si=j6p3d50uf3hwfup3ey7u8b3myg&utm_source=review" target="_blank" rel="noopener noreferrer">Читать на Яндекс Картах</a>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<article class="review-card">
|
||||||
|
<p>Отличное место для занятия спортом, очень понравилось😊 рекомендую👍</p>
|
||||||
|
<div class="review-card__meta">
|
||||||
|
<strong>Serega</strong>
|
||||||
|
<a href="https://yandex.ru/maps/org/144435842347/reviews?reviews%5BpublicId%5D=5tctvtm88tq564tc117493nqq4&si=j6p3d50uf3hwfup3ey7u8b3myg&utm_source=review" target="_blank" rel="noopener noreferrer">Читать на Яндекс Картах</a>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<article class="review-card">
|
||||||
|
<p>Отличная арена 🏒</p>
|
||||||
|
<div class="review-card__meta">
|
||||||
|
<strong>Андрей Иванов</strong>
|
||||||
|
<a href="https://yandex.ru/maps/org/144435842347/reviews?reviews%5BpublicId%5D=heccmk2e26d2bcpqtgdccq47bg&si=j6p3d50uf3hwfup3ey7u8b3myg&utm_source=review" target="_blank" rel="noopener noreferrer">Читать на Яндекс Картах</a>
|
||||||
|
</div>
|
||||||
</article>
|
</article>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<button class="reviews__nav reviews__nav--next" type="button" data-reviews-next aria-label="Следующий отзыв">→</button>
|
||||||
|
</div>
|
||||||
|
<div class="reviews__dots" data-reviews-dots></div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
<div class="stats">
|
<section class="section facts" id="facts" style="display:none;">
|
||||||
<article><strong>150+</strong><span>Мест для проживания</span></article>
|
<div class="container">
|
||||||
<article><strong>2</strong><span>Профессиональных ледовых поля</span></article>
|
<header class="section__head">
|
||||||
<article><strong>10</strong><span>Оборудованных раздевалок</span></article>
|
<h2>Цифры о комплексе</h2>
|
||||||
|
<p>Ключевые показатели инфраструктуры OlimpArena</p>
|
||||||
|
</header>
|
||||||
|
<div class="stats stats--facts">
|
||||||
|
<article class="stats__item">
|
||||||
|
<strong class="js-counter" data-target="70" data-suffix="+">0</strong>
|
||||||
|
<span>аппартов</span>
|
||||||
|
</article>
|
||||||
|
<article class="stats__item">
|
||||||
|
<strong class="js-counter" data-target="2">0</strong>
|
||||||
|
<span>профессиональных ледовых поля</span>
|
||||||
|
</article>
|
||||||
|
<article class="stats__item">
|
||||||
|
<strong class="js-counter" data-target="9">0</strong>
|
||||||
|
<span>оборудованных раздевалок</span>
|
||||||
|
</article>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -270,22 +382,49 @@
|
|||||||
<section class="section booking" id="booking">
|
<section class="section booking" id="booking">
|
||||||
<div class="container booking__wrap">
|
<div class="container booking__wrap">
|
||||||
<div class="booking__form">
|
<div class="booking__form">
|
||||||
<h2>Забронировать время</h2>
|
<h2>Оставьте заявку — подберём площадку и время</h2>
|
||||||
<p>Заполните форму, и мы свяжемся с вами в ближайшее время для подтверждения заявки.</p>
|
<p>Перезвоним в течение 15 минут в рабочее время и пришлём расчёт</p>
|
||||||
<form action="#" method="post">
|
<form id="booking-form" action="#" method="post" novalidate data-metrika-id="" data-autoreply-endpoint="">
|
||||||
<label>
|
<div class="booking__field">
|
||||||
<input type="text" name="sport" placeholder="Вид спорта">
|
<label for="booking-name">Имя <span class="required-mark">*</span></label>
|
||||||
|
<input id="booking-name" type="text" name="name" autocomplete="name" placeholder="Введите имя" required>
|
||||||
|
</div>
|
||||||
|
<div class="booking__field">
|
||||||
|
<label for="booking-phone">Телефон <span class="required-mark">*</span></label>
|
||||||
|
<input id="booking-phone" type="tel" name="phone" autocomplete="tel" placeholder="+7 (___) ___-__-__" required>
|
||||||
|
</div>
|
||||||
|
<div class="booking__field">
|
||||||
|
<label for="booking-email">E-mail (для расчёта)</label>
|
||||||
|
<input id="booking-email" type="email" name="email" autocomplete="email" placeholder="example@mail.ru">
|
||||||
|
</div>
|
||||||
|
<div class="booking__field">
|
||||||
|
<label for="booking-interest">Что интересует <span class="required-mark">*</span></label>
|
||||||
|
<select id="booking-interest" name="interest" required>
|
||||||
|
<option value="" selected disabled>Выберите вариант</option>
|
||||||
|
<option value="Лёд">Лёд</option>
|
||||||
|
<option value="Универсальный зал">Универсальный зал</option>
|
||||||
|
<option value="Зал единоборств">Зал единоборств</option>
|
||||||
|
<option value="Зал хореографии">Зал хореографии</option>
|
||||||
|
<option value="Фитнес">Фитнес</option>
|
||||||
|
<option value="Сборы команды">Сборы команды</option>
|
||||||
|
<option value="Турнир">Турнир</option>
|
||||||
|
<option value="Корпоратив">Корпоратив</option>
|
||||||
|
<option value="Другое">Другое</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="booking__field">
|
||||||
|
<label for="booking-date">Удобная дата</label>
|
||||||
|
<input id="booking-date" type="date" name="date">
|
||||||
|
</div>
|
||||||
|
<div class="booking__field">
|
||||||
|
<label for="booking-comment">Комментарий</label>
|
||||||
|
<textarea id="booking-comment" name="comment" placeholder="Кратко опишите запрос"></textarea>
|
||||||
|
</div>
|
||||||
|
<label class="booking__consent" for="booking-consent">
|
||||||
|
<input id="booking-consent" type="checkbox" name="consent" required>
|
||||||
|
<span>Я согласен(а) с <a href="#" target="_blank" rel="noopener noreferrer">политикой обработки ПДн</a> <span class="required-mark">*</span></span>
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<button class="btn booking__submit" type="submit">Отправить заявку</button>
|
||||||
<input type="text" name="date" placeholder="Желаемая дата">
|
|
||||||
</label>
|
|
||||||
<label>
|
|
||||||
<input type="text" name="name" placeholder="Ваше имя">
|
|
||||||
</label>
|
|
||||||
<label>
|
|
||||||
<input type="tel" name="phone" placeholder="Телефон">
|
|
||||||
</label>
|
|
||||||
<button class="btn" type="submit">Отправить заявку</button>
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -301,7 +440,18 @@
|
|||||||
</span>
|
</span>
|
||||||
<div class="contacts-card__item-content">
|
<div class="contacts-card__item-content">
|
||||||
<strong>Адрес</strong>
|
<strong>Адрес</strong>
|
||||||
<span>Москва, в пределах ТТК<br>15 минут от м. Волгоградский проспект</span>
|
<span>Москва, Автомобильный проезд, 4к5</span>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="contacts-card__icon" aria-hidden="true">
|
||||||
|
<svg viewBox="0 0 24 24" fill="none">
|
||||||
|
<use href="./assets/images/svg-sprites.svg#icon-time"></use>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
<div class="contacts-card__item-content">
|
||||||
|
<strong>Режим работы</strong>
|
||||||
|
<span>Ежедневно с 06:00 до 23:00</span>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
@@ -312,7 +462,8 @@
|
|||||||
</span>
|
</span>
|
||||||
<div class="contacts-card__item-content">
|
<div class="contacts-card__item-content">
|
||||||
<strong>Телефон</strong>
|
<strong>Телефон</strong>
|
||||||
<span>+7 (495) 123-45-67</span>
|
<a style="margin-bottom:5px;" href="tel:+79251404737">+7 (925) 140-47-37</a><br>
|
||||||
|
<a href="tel:+79251404764">+7 (925) 140-47-64</a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
@@ -323,20 +474,83 @@
|
|||||||
</span>
|
</span>
|
||||||
<div class="contacts-card__item-content">
|
<div class="contacts-card__item-content">
|
||||||
<strong>Email</strong>
|
<strong>Email</strong>
|
||||||
<span>receptionadmin@o-arena.ru</span>
|
<a href="mailto:receptionadmin@o-arena.ru">receptionadmin@o-arena.ru</a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
<div class="contacts-card__links">
|
||||||
|
<a class="contacts-card__messenger" href="https://wa.me/74951234567?text=%D0%94%D0%BE%D0%B1%D1%80%D1%8B%D0%B9%20%D0%B4%D0%B5%D0%BD%D1%8C%2C%20%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%B5%D1%81%D1%83%D0%B5%D1%82%20%D0%B1%D1%80%D0%BE%D0%BD%D1%8C%20%D0%B2%20OlimpArena." target="_blank" rel="noopener noreferrer" aria-label="WhatsApp">
|
||||||
|
<span class="contacts-card__action-icon" aria-hidden="true">
|
||||||
|
<svg viewBox="0 0 24 24" fill="none">
|
||||||
|
<use href="./assets/images/svg-sprites.svg#icon-whatsapp"></use>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="contacts-card__messenger contacts-card__messenger--secondary" href="https://t.me/o_arena_admin" target="_blank" rel="noopener noreferrer" aria-label="Telegram">
|
||||||
|
<span class="contacts-card__action-icon" aria-hidden="true">
|
||||||
|
<svg viewBox="0 0 24 24" fill="none">
|
||||||
|
<use href="./assets/images/svg-sprites.svg#icon-telegram"></use>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="contacts-card__links contacts-card__links--social">
|
||||||
|
<a href="#" aria-label="ВКонтакте">
|
||||||
|
<span class="contacts-card__action-icon" aria-hidden="true">
|
||||||
|
<svg viewBox="0 0 24 24" fill="none">
|
||||||
|
<use href="./assets/images/svg-sprites.svg#icon-vk"></use>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a href="#" aria-label="Instagram">
|
||||||
|
<span class="contacts-card__action-icon" aria-hidden="true">
|
||||||
|
<svg viewBox="0 0 24 24" fill="none">
|
||||||
|
<use href="./assets/images/svg-sprites.svg#icon-instagram"></use>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="hours-card map-card">
|
||||||
|
<h4>Карта и маршрут</h4>
|
||||||
|
<div class="map-card__embed">
|
||||||
|
<iframe title="OlimpArena на Яндекс Картах" src="https://yandex.ru/map-widget/v1/?text=%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0%2C%20%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D0%BF%D1%80%D0%BE%D0%B5%D0%B7%D0%B4%2C%204&z=16" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe>
|
||||||
|
</div>
|
||||||
|
<div class="map-card__actions">
|
||||||
|
<a class="btn btn--small map-card__route" href="https://yandex.ru/maps/?rtext=~%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0%2C%20%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D0%BF%D1%80%D0%BE%D0%B5%D0%B7%D0%B4%2C%204&rtt=auto" target="_blank" rel="noopener noreferrer" aria-label="Построить маршрут">
|
||||||
|
<span class="map-card__action-icon" aria-hidden="true">
|
||||||
|
<svg viewBox="0 0 24 24" fill="none">
|
||||||
|
<use href="./assets/images/svg-sprites.svg#icon-route"></use>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a href="https://yandex.ru/maps/?text=%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0%2C%20%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D0%BF%D1%80%D0%BE%D0%B5%D0%B7%D0%B4%2C%204" target="_blank" rel="noopener noreferrer" aria-label="Открыть в Яндекс Картах">
|
||||||
|
<span class="map-card__action-icon" aria-hidden="true">
|
||||||
|
<svg viewBox="0 0 24 24" fill="none">
|
||||||
|
<use href="./assets/images/svg-sprites.svg#icon-map"></use>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="hours-card">
|
|
||||||
<h4>Режим работы</h4>
|
|
||||||
<p>Ежедневно: 06:00 — 23:00</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
|
<div class="booking-modal" id="booking-success-modal" aria-hidden="true" role="dialog" aria-modal="true" aria-labelledby="booking-success-title">
|
||||||
|
<button class="booking-modal__overlay" type="button" data-modal-close aria-label="Закрыть окно"></button>
|
||||||
|
<div class="booking-modal__content">
|
||||||
|
<button class="booking-modal__close" type="button" data-modal-close aria-label="Закрыть окно">×</button>
|
||||||
|
<div class="booking-modal__status" aria-hidden="true">✓</div>
|
||||||
|
<h2 class="booking-modal__title" id="booking-success-title">Заявка отправлена</h2>
|
||||||
|
<p class="booking-modal__text">Перезвоним в течение 15 минут.</p>
|
||||||
|
<div class="booking-modal__actions">
|
||||||
|
<button class="btn booking-modal__btn" type="button" data-modal-close>Понятно</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<footer class="footer">
|
<footer class="footer">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="footer__top">
|
<div class="footer__top">
|
||||||
@@ -344,44 +558,68 @@
|
|||||||
<a class="logo" href="#top" aria-label="OlimpArena">
|
<a class="logo" href="#top" aria-label="OlimpArena">
|
||||||
<img src="./assets/images/logo.svg" alt="OlimpArena">
|
<img src="./assets/images/logo.svg" alt="OlimpArena">
|
||||||
</a>
|
</a>
|
||||||
<p>Современный спортивный комплекс в центре Москвы</p>
|
<p>OlimpArena — спорткомплекс полного цикла: ледовые арены, залы, проживание и питание на одной территории.</p>
|
||||||
</div>
|
</div>
|
||||||
<nav class="footer__nav" aria-label="Навигация в футере">
|
<nav class="footer__nav" aria-label="Навигация в футере">
|
||||||
<h4>Навигация</h4>
|
<h4>Объекты</h4>
|
||||||
<a href="#objects">Объекты</a>
|
<a href="#objects">Объекты</a>
|
||||||
<a href="#services">Услуги</a>
|
<a href="#infrastructure">Инфраструктура</a>
|
||||||
<a href="#gallery">Галерея</a>
|
<a href="#gallery">Галерея</a>
|
||||||
<a href="#contacts">Контакты, режим работы</a>
|
<a href="#facts">Цифры о комплексе</a>
|
||||||
|
</nav>
|
||||||
|
<nav class="footer__nav" aria-label="Услуги в футере">
|
||||||
|
<h4>Услуги</h4>
|
||||||
|
<a href="#services">Форматы аренды и мероприятий</a>
|
||||||
|
<a href="#pricing">Стоимость</a>
|
||||||
|
<a href="#booking">Оставить заявку</a>
|
||||||
</nav>
|
</nav>
|
||||||
<div class="footer__contacts">
|
<div class="footer__contacts">
|
||||||
<h4>Контакты</h4>
|
<h4>Контакты и режим работы</h4>
|
||||||
<span>+7 (495) 123-45-67</span>
|
<a href="tel:+79251404737">+7 (925) 140-47-37</a><br>
|
||||||
<span>receptionadmin@o-arena.ru</span>
|
<a href="tel:+79251404764">+7 (925) 140-47-64</a>
|
||||||
<span>Москва, ТТК</span>
|
<a href="mailto:receptionadmin@o-arena.ru">receptionadmin@o-arena.ru</a>
|
||||||
|
<span>Москва, Автомобильный проезд, 4</span>
|
||||||
|
<span>Ежедневно с 06:00 до 23:00</span>
|
||||||
|
<div class="footer__messengers">
|
||||||
|
<a href="https://wa.me/74951234567" target="_blank" rel="noopener noreferrer" aria-label="WhatsApp">
|
||||||
|
<span class="footer__messenger-icon" aria-hidden="true">
|
||||||
|
<svg viewBox="0 0 24 24" fill="none">
|
||||||
|
<use href="./assets/images/svg-sprites.svg#icon-whatsapp"></use>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a href="https://t.me/o_arena_admin" target="_blank" rel="noopener noreferrer" aria-label="Telegram">
|
||||||
|
<span class="footer__messenger-icon" aria-hidden="true">
|
||||||
|
<svg viewBox="0 0 24 24" fill="none">
|
||||||
|
<use href="./assets/images/svg-sprites.svg#icon-telegram"></use>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="footer__social">
|
|
||||||
<h4>Социальные сети</h4>
|
|
||||||
<div class="footer__socials">
|
<div class="footer__socials">
|
||||||
<a href="#" aria-label="Instagram">
|
<a href="#" aria-label="Instagram">
|
||||||
|
<span class="footer__messenger-icon" aria-hidden="true">
|
||||||
<svg viewBox="0 0 24 24" fill="none">
|
<svg viewBox="0 0 24 24" fill="none">
|
||||||
<rect x="2.5" y="2.5" width="19" height="19" rx="5" stroke="currentColor" stroke-width="2"/>
|
<use href="./assets/images/svg-sprites.svg#icon-instagram"></use>
|
||||||
<circle cx="12" cy="12" r="4.25" stroke="currentColor" stroke-width="2"/>
|
|
||||||
<circle cx="17.2" cy="6.8" r="1.2" fill="currentColor"/>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
</span>
|
||||||
</a>
|
</a>
|
||||||
<a href="#" aria-label="Facebook">
|
<a href="#" aria-label="ВКонтакте">
|
||||||
|
<span class="footer__messenger-icon" aria-hidden="true">
|
||||||
<svg viewBox="0 0 24 24" fill="none">
|
<svg viewBox="0 0 24 24" fill="none">
|
||||||
<path d="M14.5 8H16.5V5H14C11.8 5 10 6.8 10 9V11H8V14H10V19H13V14H15.5L16 11H13V9.5C13 8.67 13.67 8 14.5 8Z" fill="currentColor"/>
|
<use href="./assets/images/svg-sprites.svg#icon-vk"></use>
|
||||||
</svg>
|
</svg>
|
||||||
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="footer__bottom">
|
<div class="footer__bottom">
|
||||||
<span>© 2026 OlimpArena. Все права защищены.</span>
|
<span>© 2026 ООО «ОлимпАрена»</span>
|
||||||
<div class="footer__legal">
|
<div class="footer__legal">
|
||||||
<a href="#">Политика конфиденциальности</a>
|
<a href="#">Политика конфиденциальности</a>
|
||||||
<a href="#">Условия использования</a>
|
<a href="#">Договор оферты</a>
|
||||||
|
<span>ИНН 7700000000 · ОГРН 1207700000000</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||