diff --git a/public/index.html b/public/index.html index 03b6367..7724fb7 100644 --- a/public/index.html +++ b/public/index.html @@ -4,74 +4,14 @@ Hotel 777 | Отдых в Абхазии - +
@@ -95,181 +36,75 @@

Бескрайние пляжи Гудауты

-

Наш отель расположен в живописном селе Мгудзырхуа. Мы предлагаем комфортные номера и прямой выход к широкому, чистому галечно-песчаному пляжу. Наслаждайтесь шумом прибоя и ласковым абхазским солнцем вдали от городской суеты.

+

Наш отель расположен в живописном селе Мгудзырхуа. Мы предлагаем комфортные номера и прямой выход к широкому, чистому галечно-песчаному пляжу.

-
- Пляж +
+ Пляж
-
+
+

Вкус Абхазии

+
+
+ Абхазская кухня +
+
+

Домашняя кухня из местных продуктов

+

Почувствуйте настоящее гостеприимство! Мы готовим из того, что выросло прямо здесь: свежайший сыр сулугуни, ароматная абыста, сочные овощи с грядки и домашнее вино.

+
+
+
+ +

Удобное расположение

-
- Указатель +
+ Указатель

Все красоты Абхазии рядом

-

Наш адрес: Гудаутский район, село Мгудзырхуа, Набережная улица, 1.

-
-
    -
  • 🚗 Гудаута — 10 км
  • -
  • 🚗 Лыхны — 15 км
  • -
  • 🚗 Новый Афон — 25 км
  • -
  • 🚗 Сухум — 51 км
  • +

    Адрес: Мгудзырхуа, Набережная улица, 1.

    +
      +
    • 🚗 Гудаута — 10 км
    • +
    • 🚗 Новый Афон — 25 км
    • +
    • 🚗 Сухум — 51 км
    -

    Отправляйтесь на экскурсии прямо из нашего отеля!

-
+

Забронировать отдых

-
+
- - + +
- +
- +
- +
-

© 2026 Hotel 777. Абхазия, Мгудзырхуа. Все права защищены.

+

© 2026 Hotel 777. Абхазия, Мгудзырхуа.

- + \ No newline at end of file diff --git a/public/scripts.js b/public/scripts.js new file mode 100644 index 0000000..05ebddf --- /dev/null +++ b/public/scripts.js @@ -0,0 +1,75 @@ +const translations = { + ru: { + nav_about: "О нас", nav_food: "Кухня", nav_location: "Где мы", nav_booking: "Бронь", + hero_title: "Добро пожаловать", hero_subtitle: "Ваш идеальный отдых на берегу Черного моря", hero_btn: "Забронировать номер", + about_title: "Море в шаговой доступности", about_subtitle: "Бескрайние пляжи Гудауты", about_text: "Наш отель расположен в живописном селе Мгудзырхуа. Мы предлагаем комфортные номера и прямой выход к морю.", + food_title: "Вкус Абхазии", food_subtitle: "Домашняя кухня из местных продуктов", food_text: "Почувствуйте гостеприимство! Свежайший сыр сулугуни, мамалыга, овощи с грядки и домашнее вино.", + loc_title: "Удобное расположение", book_title: "Забронировать отдых", label_name: "Ваше имя", label_phone: "Номер телефона", ph_name: "Иван Иванов", + fz152: "Согласие на обработку данных (152-ФЗ)", book_btn: "Отправить заявку", footer_text: "© 2026 Hotel 777. Абхазия, Мгудзырхуа.", + cookie_text: "Мы используем файлы cookie для улучшения работы сайта.", cookie_btn: "Согласен", alert_msg: "Спасибо! Ваша заявка принята." + }, + en: { + nav_about: "About", nav_food: "Kitchen", nav_location: "Location", nav_booking: "Booking", + hero_title: "Welcome", hero_subtitle: "Your perfect vacation on the Black Sea", hero_btn: "Book a room", + about_title: "Sea at your doorstep", food_title: "Taste of Abkhazia", food_subtitle: "Local home cooking", + alert_msg: "Thank you! Your request has been received." + }, + ab: { + nav_about: "Ҳазкы", nav_food: "Афатә", nav_location: "Аҭыԥ", nav_booking: "Аанкылара", + hero_title: "Бзиала шәаабеит", hero_subtitle: "Амшын аԥшаҳәаҿы адырра", hero_btn: "Ауада аанкылара", + food_title: "Аԥсны аҳамҭа", alert_msg: "Ишәҭабуп! Азҳәара дәықәҵоуп." + } +}; + +document.addEventListener("DOMContentLoaded", () => { + // Прогрессивная загрузка фона + const hero = document.querySelector('.hero'); + const imgHD = new Image(); + imgHD.src = 'img/h777.webp'; + imgHD.onload = () => { hero.style.backgroundImage = `linear-gradient(rgba(0,0,0,0.6), rgba(0,0,0,0.6)), url('${imgHD.src}')`; }; + + // Локализация + const langSelect = document.getElementById('langSwitch'); + let currentLang = localStorage.getItem('siteLang') || 'ru'; + + const updateText = (lang) => { + document.querySelectorAll('[data-i18n]').forEach(el => { + const key = el.getAttribute('data-i18n'); + if (translations[lang][key]) el.innerHTML = translations[lang][key]; + }); + document.querySelectorAll('[data-i18n-ph]').forEach(el => { + const key = el.getAttribute('data-i18n-ph'); + if (translations[lang][key]) el.placeholder = translations[lang][key]; + }); + localStorage.setItem('siteLang', lang); + }; + + langSelect.value = currentLang; + updateText(currentLang); + langSelect.onchange = (e) => updateText(e.target.value); + + // Cookie + if (!localStorage.getItem('cookiesAccepted')) { + setTimeout(() => document.getElementById('cookieBanner').classList.add('show'), 2000); + } + + // Форма + document.getElementById('bookingForm').onsubmit = (e) => { + e.preventDefault(); + alert(translations[localStorage.getItem('siteLang') || 'ru'].alert_msg); + }; + + // Анимации при скролле + const obs = new IntersectionObserver(entries => { + entries.forEach(en => { if(en.isIntersecting) en.target.style.animationPlayState = 'running'; }); + }); + document.querySelectorAll('.animate').forEach(el => { + el.style.animationPlayState = 'paused'; + obs.observe(el); + }); +}); + +function acceptCookies() { + localStorage.setItem('cookiesAccepted', 'true'); + document.getElementById('cookieBanner').classList.remove('show'); +} \ No newline at end of file diff --git a/public/style.css b/public/style.css new file mode 100644 index 0000000..c0ea495 --- /dev/null +++ b/public/style.css @@ -0,0 +1,103 @@ +:root { + --primary: #005f73; + --secondary: #0a9396; + --light: #e9d8a6; + --dark: #001219; + --bg: #f8f9fa; + --white: #ffffff; + --input-bg: #f0f4f5; +} + +* { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', Roboto, sans-serif; } + +html { font-size: 16px; scroll-behavior: smooth; } +@media (min-width: 2000px) { html { font-size: 22px; } } + +body { background: var(--bg); color: var(--dark); line-height: 1.6; } + +/* ШАПКА */ +header { + background: rgba(0, 18, 25, 0.95); + color: var(--white); + padding: 1rem 5%; + position: fixed; + width: 100%; + z-index: 100; + display: flex; + justify-content: space-between; + align-items: center; + backdrop-filter: blur(10px); + box-shadow: 0 2px 15px rgba(0,0,0,0.2); +} + +.lang-switch { + background: rgba(255,255,255,0.1); + color: var(--white); + border: 1px solid rgba(255,255,255,0.3); + padding: 6px 10px; + border-radius: 8px; + cursor: pointer; + outline: none; +} +.lang-switch option { background: var(--dark); color: var(--white); } + +nav a { color: var(--white); text-decoration: none; margin-left: clamp(10px, 2vw, 20px); font-weight: 500; transition: 0.3s; font-size: 0.9rem; } +nav a:hover { color: var(--secondary); } + +/* HERO */ +.hero { + height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: center; + text-align: center; color: var(--white); padding: 0 20px; + background: linear-gradient(rgba(0,0,0,0.6), rgba(0,0,0,0.6)), url('img/h777-tiny.webp') center/cover; +} +.hero h1 { font-size: clamp(2.5rem, 8vw, 5rem); font-weight: 800; line-height: 1.1; } + +/* СЕКЦИИ */ +section { padding: 6rem 10%; } +.white-bg { background: var(--white); } +.section-title { font-size: clamp(2rem, 5vw, 3rem); color: var(--primary); margin-bottom: 3.5rem; text-align: center; } +.section-title::after { content: ''; display: block; width: 60px; height: 4px; background: var(--secondary); margin: 15px auto; border-radius: 2px; } + +.about-grid { display: grid; grid-template-columns: 1fr; gap: 4rem; align-items: center; } +@media (min-width: 992px) { .about-grid { grid-template-columns: 1fr 1fr; } } + +.about-image-wrapper { width: 100%; aspect-ratio: 1 / 1; overflow: hidden; border-radius: 24px; box-shadow: 0 20px 40px rgba(0,0,0,0.1); } +.about-img { width: 100%; height: 100%; object-fit: cover; transition: 0.6s; } +.about-image-wrapper:hover .about-img { transform: scale(1.05); } + +.signpost-img { max-width: 100%; height: auto; display: block; margin: 0 auto; } + +/* ФОРМА */ +.booking-form { + max-width: 550px; margin: 0 auto; background: var(--white); padding: 3rem; + border-radius: 30px; box-shadow: 0 30px 60px rgba(0,18,25,0.1); border: 1px solid rgba(0,0,0,0.05); +} +.form-group { margin-bottom: 1.5rem; } +.form-group label { display: block; margin-bottom: 0.5rem; font-weight: 600; color: var(--dark); } +.form-group input { + width: 100%; padding: 14px; border: 2px solid transparent; + background: var(--input-bg); border-radius: 12px; transition: 0.3s; +} +.form-group input:focus { outline: none; border-color: var(--secondary); background: var(--white); } + +.btn { + display: inline-block; padding: 16px 30px; background: var(--secondary); + color: var(--white); border-radius: 14px; font-weight: 700; border: none; cursor: pointer; transition: 0.3s; +} +.btn:hover { background: var(--primary); transform: translateY(-3px); } +.full-width { width: 100%; } + +/* COOKIE & ANIMATIONS */ +.cookie-banner { + position: fixed; bottom: -200px; left: 50%; transform: translateX(-50%); width: 90%; max-width: 600px; + background: var(--dark); color: var(--white); padding: 20px; border-radius: 20px; transition: 0.6s; z-index: 1000; +} +.cookie-banner.show { bottom: 20px; } +.cookie-btn { background: var(--light); border: none; padding: 8px 20px; border-radius: 8px; font-weight: 700; cursor: pointer; margin-top: 10px; } + +@keyframes fadeIn { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } +.animate { animation: fadeIn 1s ease-out forwards; opacity: 0; } +.delay-1 { animation-delay: 0.3s; } +.delay-2 { animation-delay: 0.6s; } + +footer { background: var(--dark); color: rgba(255,255,255,0.5); text-align: center; padding: 3rem; } \ No newline at end of file