Files
hotel777/public/style.css
2026-05-06 00:45:23 +05:00

669 lines
13 KiB
CSS
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.
:root {
--primary: #005f73;
--secondary: #0a9396;
--light: #e9d8a6;
--dark: #001219;
--bg: #f8f9fa;
--white: #ffffff;
--input-bg: #f0f4f5;
}
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;
margin: 0;
font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
}
header {
background: #ffffff;
color: #1f2937;
padding: 1rem 5%;
position: fixed;
width: 90%;
z-index: 100;
display: flex;
justify-content: space-between;
align-items: center;
backdrop-filter: blur(6px);
border-bottom: 1px solid #e5e7eb;
box-shadow: 0 2px 15px rgba(0, 0, 0, 0.05);
}
.logo {
font-weight: 800;
font-size: 1.2rem;
letter-spacing: 1px;
}
.lang-switch {
background: #fff;
color: #1f2937;
border: 1px solid #d1d5db;
padding: 6px 10px;
border-radius: 8px;
cursor: pointer;
outline: none;
}
.lang-switch option {
color: #1f2937;
background: #fff;
}
nav a {
color: #1f2937;
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 {
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.webp') center/cover;
transition: background-image 1.5s ease-in-out;
}
.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);
display: flex;
flex-direction: column;
gap: 1.5rem;
}
.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;
}
.location-img-animate {
transition: transform 0.8s cubic-bezier(0.2, 0.9, 0.4, 1.1), opacity 0.8s ease;
transform: scale(0.85);
opacity: 0;
}
.location-img-animate.in-view {
transform: scale(1);
opacity: 1;
}
.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;
font-size: 1rem;
}
.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;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
.btn:hover {
background: var(--primary);
transform: translateY(-3px);
}
.full-width {
width: 100%;
}
.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;
text-align: center;
}
.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;
}
.location-cards {
display: flex;
flex-wrap: wrap;
gap: 1rem;
justify-content: center;
}
.location-card {
background: var(--white);
padding: 1rem;
border-radius: 20px;
text-align: center;
min-width: 120px;
transition: transform 0.2s ease, box-shadow 0.2s ease;
cursor: pointer;
border: 1px solid rgba(0, 0, 0, 0.03);
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.05);
}
.location-card:hover {
transform: translateY(-5px);
box-shadow: 0 20px 30px rgba(0, 0, 0, 0.1);
}
.location-icon {
font-size: 2rem;
margin-bottom: 0.5rem;
}
.location-title {
font-weight: 600;
color: var(--primary);
font-size: 0.9rem;
}
.location-distance {
font-size: 0.9rem;
color: #666;
}
.show-map-btn {
background: var(--primary);
transition: 0.3s;
}
.show-map-btn:hover {
background: var(--secondary);
transform: translateY(-2px);
}
.map-container {
width: 100%;
height: 400px;
border-radius: 24px;
overflow: hidden;
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
margin-top: 1rem;
display: none;
}
@media (max-width: 768px) {
.map-container {
height: 300px;
}
}
.modern-about {
gap: 3rem;
}
.about-text h3 {
font-size: 1.8rem;
color: var(--primary);
margin-bottom: 1rem;
}
.main-description {
font-size: 1.1rem;
line-height: 1.6;
color: #2c3e2f;
margin-bottom: 1.5rem;
}
.extra-description {
background: linear-gradient(135deg, #e0f2e9 0%, #f0f9f4 100%);
padding: 1.2rem;
border-radius: 20px;
margin: 1.5rem 0;
font-style: italic;
border-left: 4px solid var(--secondary);
font-size: 0.95rem;
}
.facts-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 1rem;
margin-top: 2rem;
}
.fact-card {
background: var(--white);
padding: 1rem;
border-radius: 20px;
text-align: center;
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.05);
transition: transform 0.2s, box-shadow 0.2s;
border: 1px solid rgba(0, 0, 0, 0.03);
}
.fact-card:hover {
transform: translateY(-5px);
box-shadow: 0 20px 30px rgba(0, 0, 0, 0.1);
}
.fact-icon {
font-size: 2rem;
margin-bottom: 0.5rem;
}
.fact-text {
font-weight: 500;
color: var(--dark);
font-size: 0.9rem;
}
.food-features {
margin: 2rem 0 1rem;
}
.food-note {
background: #fff8e7;
padding: 0.8rem;
border-radius: 16px;
text-align: center;
font-size: 0.9rem;
margin-top: 1rem;
}
@media (max-width: 768px) {
.facts-grid {
grid-template-columns: 1fr 1fr;
}
.about-text h3 {
font-size: 1.4rem;
}
}
.modal {
display: none;
position: fixed;
z-index: 2000;
left: 0;
top: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.7);
justify-content: center;
align-items: center;
}
.modal-content {
background: var(--white);
margin: 10% auto;
padding: 2rem;
border-radius: 30px;
width: 90%;
max-width: 500px;
box-shadow: 0 30px 50px rgba(0, 0, 0, 0.3);
position: relative;
animation: fadeIn 0.3s ease;
}
.modal-close {
position: absolute;
top: 1rem;
right: 1.5rem;
font-size: 2rem;
cursor: pointer;
color: #666;
transition: 0.2s;
}
.modal-close:hover {
color: var(--primary);
}
.modal-content h3 {
color: var(--primary);
margin-bottom: 1rem;
font-size: 1.8rem;
}
.modal-facts {
display: flex;
flex-direction: column;
gap: 1rem;
margin-top: 1rem;
}
.modal-fact-item {
padding: 0.8rem;
background: var(--bg);
border-radius: 20px;
border-left: 4px solid var(--secondary);
font-size: 1rem;
}
/* Эффекты перехода для hero */
.hero {
position: relative;
overflow: hidden;
transition: background-image 0.2s ease; /* плавная смена самого фона (не обязательно) */
}
/* Базовые стили для псевдоэлемента анимации */
.hero.effect-active::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
z-index: 1;
background: rgba(0,0,0,0.2);
animation-duration: 0.8s;
animation-fill-mode: forwards;
}
/* 1. Шторка - полоса, проходящая по экрану */
.hero.effect-shutter::before {
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);
animation-name: shutterSlide;
animation-timing-function: ease-in-out;
}
@keyframes shutterSlide {
0% { transform: translateX(-100%); width: 10%; }
50% { transform: translateX(0%); width: 100%; }
100% { transform: translateX(100%); width: 10%; }
}
/* 2. Торнадо - завихрение (масштаб+поворот) */
.hero.effect-tornado::before {
background: radial-gradient(circle, rgba(255,255,255,0.3) 0%, rgba(255,255,255,0) 80%);
animation-name: tornadoSpin;
animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
@keyframes tornadoSpin {
0% { transform: scale(0.1) rotate(0deg); opacity: 0; }
50% { transform: scale(1.5) rotate(180deg); opacity: 0.8; }
100% { transform: scale(0.1) rotate(360deg); opacity: 0; }
}
/* 3. Волна - ripple effect */
.hero.effect-wave::before {
background: radial-gradient(circle at 50% 50%, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 70%);
animation-name: waveRipple;
animation-timing-function: ease-out;
}
@keyframes waveRipple {
0% { transform: scale(0); opacity: 1; }
100% { transform: scale(4); opacity: 0; }
}
/* Стили для галереи Swiper */
.gallery-section {
padding: 50px 0;
}
.swiper {
width: 100%;
height: 400px;
border-radius: 20px;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
}
.swiper-slide img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
}
.swiper-button-next, .swiper-button-prev {
color: var(--white);
text-shadow: 0 0 5px rgba(0,0,0,0.5);
}
.swiper-pagination-bullet-active {
background: var(--secondary);
}
@media (max-width: 768px) {
.swiper {
height: 250px;
}
}
/* --- Обновленные стили для секции "Удобное расположение" (Светлая тема) --- */
.location-section {
background: var(--bg); /* Светлый фон как у всех блоков */
color: var(--dark);
text-align: center;
}
.location-desc {
max-width: 700px;
margin: 0 auto 50px;
font-size: 1.1rem;
line-height: 1.6;
}
.distances-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 25px;
margin-bottom: 50px;
}
.distance-card {
background: var(--white);
border: 1px solid rgba(0, 0, 0, 0.05);
border-radius: 20px;
padding: 25px 15px;
transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
box-shadow: 0 10px 20px rgba(0,0,0,0.05);
}
.distance-card:hover {
transform: translateY(-10px);
box-shadow: 0 15px 30px rgba(0,0,0,0.1);
border-color: var(--secondary);
}
.distance-card .icon {
font-size: 3rem;
margin-bottom: 15px;
display: inline-block;
}
.distance-card h3 {
margin: 10px 0;
font-size: 1.3rem;
color: var(--primary);
}
.distance-card p {
font-size: 0.95rem;
color: #666;
margin: 0;
}
.btn-map {
display: inline-block;
padding: 15px 35px;
background-color: var(--secondary);
color: white;
text-decoration: none;
border-radius: 50px;
font-weight: bold;
font-size: 1.1rem;
transition: all 0.3s ease;
box-shadow: 0 4px 15px rgba(10, 147, 150, 0.3);
}
.btn-map:hover {
background-color: var(--primary);
transform: scale(1.05);
box-shadow: 0 6px 20px rgba(0, 95, 115, 0.5);
}