diff --git a/assets/css/main.css b/assets/css/main.css index df6faeb..37aefe6 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -65,7 +65,6 @@ body { background: #121212; color: #ffffff; font-family: "Segoe UI", "Segoe UI Variable", "Helvetica Neue", Arial, sans-serif; - min-width: 1200px; } body { @@ -82,6 +81,26 @@ img { max-width: 100%; } +@keyframes fade-up { + from { + opacity: 0; + transform: translateY(24px); + } + to { + opacity: 1; + transform: translateY(0); + } +} +@keyframes slide-down { + from { + opacity: 0; + transform: translateY(-16px); + } + to { + opacity: 1; + transform: translateY(0); + } +} .container { width: 100%; max-width: 1400px; @@ -94,32 +113,49 @@ img { overflow: hidden; } +.scroll-reveal { + opacity: 0; + transform: translateY(26px); + transition: opacity 0.7s ease, transform 0.7s ease; + transition-delay: var(--reveal-delay, 0ms); + will-change: opacity, transform; +} +.scroll-reveal.is-visible { + opacity: 1; + transform: translateY(0); +} + .btn { display: inline-flex; align-items: center; justify-content: center; padding: 18px 24px; border-radius: 14px; + border: 0; background: #cf1717; color: #ffffff; font-size: 16px; font-weight: 700; line-height: 24px; box-shadow: 0 25px 50px rgba(231, 0, 11, 0.5); - border: 0; cursor: pointer; + transition: transform 0.25s ease, box-shadow 0.25s ease, background-color 0.25s ease; +} +.btn:hover { + transform: translateY(-2px); +} +.btn:active { + transform: translateY(0); } - .btn--small { padding: 10px 24px; font-size: 14px; line-height: 20px; box-shadow: 0 10px 15px rgba(231, 0, 11, 0.4), 0 4px 6px rgba(231, 0, 11, 0.4); } - .btn--ghost { - background: rgba(41, 49, 51, 0.6); border: 2px solid rgba(255, 255, 255, 0.2); + background: rgba(41, 49, 51, 0.6); box-shadow: none; } @@ -127,29 +163,16 @@ img { position: fixed; inset: 0 0 auto; z-index: 20; - background: rgba(18, 18, 18, 0.95); border-bottom: 1px solid rgba(207, 23, 23, 0.2); + background: rgba(18, 18, 18, 0.95); + animation: slide-down 0.65s ease both; } - .header__inner { display: flex; align-items: center; justify-content: space-between; min-height: 72px; } - -.logo { - display: inline-flex; - width: 137px; - height: 30px; -} - -.logo img { - width: 100%; - height: 100%; - object-fit: cover; -} - .header__nav { display: flex; align-items: center; @@ -157,12 +180,26 @@ img { margin-left: auto; margin-right: 32px; } - .header__nav a { - font-size: 14px; - line-height: 20px; - font-weight: 600; color: rgba(255, 255, 255, 0.8); + font-size: 14px; + font-weight: 600; + line-height: 20px; + transition: color 0.2s ease; +} +.header__nav a:hover { + color: #ffffff; +} + +.logo { + display: inline-flex; + width: 137px; + height: 30px; +} +.logo img { + width: 100%; + height: 100%; + object-fit: cover; } .hero { @@ -170,13 +207,11 @@ img { min-height: 852px; padding-top: 72px; } - .hero__bg { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(18, 18, 18, 0.9) 0%, rgba(18, 18, 18, 0.7) 50%, rgba(0, 0, 0, 0) 100%), url("https://www.figma.com/api/mcp/asset/e5a37fb1-e23a-4258-855e-e6951519202d") center/cover no-repeat; } - .hero__bg::after { content: ""; position: absolute; @@ -184,7 +219,6 @@ img { background-image: repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.045) 0 1px, transparent 1px 8px), repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.045) 0 1px, transparent 1px 8px); mix-blend-mode: soft-light; } - .hero__content { position: relative; z-index: 1; @@ -192,45 +226,61 @@ img { margin-left: 528px; padding-top: 104px; } - +.hero__content > * { + opacity: 0; + animation: fade-up 0.7s ease forwards; +} +.hero__content h1 { + animation-delay: 0.15s; +} +.hero__content p { + animation-delay: 0.28s; +} +.hero__content .hero__tags { + animation-delay: 0.4s; +} +.hero__content .hero__actions { + animation-delay: 0.52s; +} .hero h1 { max-width: 768px; - font-size: 72px; - line-height: 90px; - font-weight: 800; margin-bottom: 24px; + font-size: 72px; + font-weight: 800; + line-height: 90px; } - .hero h1 span { color: #cf1717; } - .hero p { max-width: 768px; - font-size: 20px; - line-height: 32.5px; - color: rgba(255, 255, 255, 0.8); margin-bottom: 32px; + color: rgba(255, 255, 255, 0.8); + font-size: 20px; + line-height: 32px; } - .hero__tags { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 28px; } - .hero__tags li { padding: 9px 17px; - border-radius: 999px; border: 1px solid rgba(207, 23, 23, 0.3); + border-radius: 999px; background: rgba(41, 49, 51, 0.6); font-size: 14px; - line-height: 20px; font-weight: 600; + line-height: 20px; white-space: nowrap; + transition: border-color 0.25s ease, background-color 0.25s ease, transform 0.25s ease; +} +.hero__tags li:hover { + transform: translateY(-1px); + border-color: rgba(207, 23, 23, 0.55); + background: rgba(41, 49, 51, 0.9); } - .hero__actions { display: flex; gap: 16px; @@ -240,7 +290,6 @@ img { background: #293133; padding: 96px 0; } - .highlights__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); @@ -254,15 +303,19 @@ img { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.1); min-height: 178px; padding: 33px; + transition: transform 0.3s ease, border-color 0.3s ease, background-color 0.3s ease; +} +.info-card:hover { + transform: translateY(-6px); + border-color: rgba(207, 23, 23, 0.45); + background: rgba(18, 18, 18, 0.62); } - .info-card h3 { - font-size: 20px; - line-height: 28px; - font-weight: 700; margin-bottom: 8px; + font-size: 20px; + font-weight: 700; + line-height: 28px; } - .info-card p { color: rgba(255, 255, 255, 0.7); font-size: 16px; @@ -273,11 +326,13 @@ img { position: relative; padding: 96px 0; } - +.section > .container { + position: relative; + z-index: 1; +} .section--pattern { background: #1a2124; } - .section--pattern::before { content: ""; position: absolute; @@ -287,28 +342,20 @@ img { opacity: 0.4; pointer-events: none; } - -.section > .container { - position: relative; - z-index: 1; -} - .section__head { margin-bottom: 64px; text-align: center; } - .section__head h2 { - font-size: 48px; - line-height: 1; - font-weight: 700; margin-bottom: 16px; -} - -.section__head p { - font-size: 28px; + font-size: 48px; + font-weight: 700; line-height: 1; +} +.section__head p { color: rgba(255, 255, 255, 0.8); + font-size: 28px; + line-height: 1.15; } .advantages__grid { @@ -322,33 +369,35 @@ img { border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 16px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.1); + position: relative; min-height: 162px; padding: 25px; - position: relative; + transition: transform 0.3s ease, border-color 0.3s ease; +} +.feature-card:hover { + transform: translateY(-5px); + border-color: rgba(207, 23, 23, 0.4); } - .feature-card::before { content: ""; + display: block; width: 48px; height: 48px; + margin-bottom: 16px; + border: 1px solid rgba(207, 23, 23, 0.32); border-radius: 14px; background: rgba(207, 23, 23, 0.16); - border: 1px solid rgba(207, 23, 23, 0.32); - display: block; - margin-bottom: 16px; } - .feature-card h3 { - font-size: 24px; - line-height: 1; - font-weight: 700; margin-bottom: 8px; -} - -.feature-card p { font-size: 20px; - line-height: 1; + font-weight: 700; + line-height: 1.2; +} +.feature-card p { color: rgba(255, 255, 255, 0.7); + font-size: 16px; + line-height: 1.4; } .objects .section__head { @@ -361,66 +410,57 @@ img { gap: 32px; margin-bottom: 48px; } - .object-card:last-child { margin-bottom: 0; } - .object-card--reverse .object-card__image { order: 2; } - .object-card--reverse .object-card__content { order: 1; } - .object-card__image { min-height: 400px; border-radius: 16px; background-size: cover; background-position: center; + transition: transform 0.5s ease; } - .object-card__content { background: rgba(18, 18, 18, 0.4); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 16px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.1); - min-height: 338px; align-self: center; + min-height: 338px; padding: 33px; + transition: transform 0.3s ease, border-color 0.3s ease; } - .object-card__content h3 { - font-size: 36px; - line-height: 1; - font-weight: 700; margin-bottom: 16px; + font-size: 34px; + font-weight: 700; + line-height: 1.1; } - .object-card__content p { - font-size: 20px; - line-height: 28px; - color: rgba(255, 255, 255, 0.7); margin-bottom: 24px; + color: rgba(255, 255, 255, 0.7); + font-size: 18px; + line-height: 28px; } - .object-card__content ul { margin-bottom: 24px; } - .object-card__content li { position: relative; padding-left: 14px; - font-size: 20px; - line-height: 28px; color: rgba(255, 255, 255, 0.8); + font-size: 16px; + line-height: 28px; } - .object-card__content li + li { margin-top: 8px; } - .object-card__content li::before { content: ""; position: absolute; @@ -431,11 +471,17 @@ img { border-radius: 50%; background: #cf1717; } +.object-card:hover .object-card__image { + transform: scale(1.02); +} +.object-card:hover .object-card__content { + transform: translateY(-4px); + border-color: rgba(207, 23, 23, 0.4); +} .services { background: #293133; } - .services__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); @@ -447,60 +493,65 @@ img { border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 16px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.1); - padding: 33px; - min-height: 260px; display: flex; flex-direction: column; + min-height: 260px; + padding: 33px; + transition: transform 0.3s ease, border-color 0.3s ease; +} +.service-card:hover { + transform: translateY(-6px); + border-color: rgba(207, 23, 23, 0.45); } - .service-card h3 { - font-size: 28px; - line-height: 1.15; - font-weight: 700; margin-bottom: 12px; + font-size: 24px; + font-weight: 700; + line-height: 1.2; } - .service-card p { - color: rgba(255, 255, 255, 0.7); - font-size: 20px; - line-height: 28px; margin-bottom: auto; + color: rgba(255, 255, 255, 0.7); + font-size: 18px; + line-height: 28px; } - .service-card a { display: inline-flex; width: fit-content; margin-top: 20px; - font-size: 14px; - line-height: 20px; - font-weight: 700; padding: 10px 20px; border-radius: 14px; background: #cf1717; + font-size: 14px; + font-weight: 700; + line-height: 20px; } .gallery { background: #1b2225; } - .gallery__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; } - .gallery__item { aspect-ratio: 16/10; + border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 16px; background-size: cover; background-position: center; - border: 1px solid rgba(255, 255, 255, 0.1); + transition: transform 0.45s ease, border-color 0.3s ease, filter 0.3s ease; +} +.gallery__item:hover { + transform: scale(1.03); + border-color: rgba(207, 23, 23, 0.55); + filter: saturate(1.08); } .reviews { background: #1a2023; } - .reviews__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); @@ -513,29 +564,31 @@ img { border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 16px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.1); - padding: 33px; min-height: 206px; + padding: 33px; + transition: transform 0.3s ease, border-color 0.3s ease; +} +.review-card:hover { + transform: translateY(-5px); + border-color: rgba(207, 23, 23, 0.4); } - .review-card p { - font-size: 24px; - line-height: 1.5; - color: rgba(255, 255, 255, 0.8); margin-bottom: 24px; + color: rgba(255, 255, 255, 0.8); + font-size: 16px; + line-height: 1.5; } - .review-card strong { display: block; - font-size: 24px; - line-height: 1; - font-weight: 700; margin-bottom: 8px; + font-size: 16px; + font-weight: 700; + line-height: 1.2; } - .review-card span { - font-size: 20px; - line-height: 1; color: rgba(255, 255, 255, 0.7); + font-size: 16px; + line-height: 1.2; } .stats { @@ -543,84 +596,81 @@ img { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; } - .stats article { background: rgba(18, 18, 18, 0.4); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 16px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.1); + border: 0; + background: #cf1717; min-height: 144px; padding: 32px; text-align: center; + transition: transform 0.3s ease; +} +.stats article:hover { + transform: translateY(-5px); } - .stats strong { display: block; - font-size: 48px; - line-height: 1; - font-weight: 700; - color: #cf1717; margin-bottom: 8px; -} - -.stats span { - font-size: 24px; + color: #ffffff; + font-size: 48px; + font-weight: 700; line-height: 1; } +.stats span { + color: #ffffff; + font-size: 16px; + line-height: 1.3; +} .booking { background: #1b2225; } - .booking__wrap { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; } - .booking h2 { - font-size: 64px; - line-height: 1; - font-weight: 700; margin-bottom: 24px; + font-size: 48px; + font-weight: 600; + line-height: 1.1; } - .booking p { - font-size: 28px; - line-height: 1.4; - color: rgba(255, 255, 255, 0.8); margin-bottom: 32px; + color: rgba(255, 255, 255, 0.8); + font-size: 18px; + line-height: 1.45; } - .booking form { display: flex; flex-direction: column; gap: 16px; } - +.booking form .btn { + width: 100%; + height: 56px; + margin-top: 4px; + padding: 0 24px; +} .booking input { width: 100%; height: 58px; - border: 1px solid rgba(255, 255, 255, 0.1); - background: rgba(18, 18, 18, 0.35); - border-radius: 14px; padding: 0 24px; + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: 14px; + background: rgba(18, 18, 18, 0.35); color: #ffffff; - font-size: 20px; - line-height: 22px; + font-size: 16px; + line-height: 18px; } - .booking input::placeholder { color: rgba(255, 255, 255, 0.75); } -.booking form .btn { - width: 100%; - margin-top: 4px; - height: 56px; - padding: 0 24px; -} - .contacts-card, .hours-card { background: rgba(18, 18, 18, 0.4); @@ -628,123 +678,347 @@ img { border-radius: 16px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.1); padding: 33px; + transition: transform 0.3s ease, border-color 0.3s ease; +} +.contacts-card:hover, +.hours-card:hover { + transform: translateY(-4px); + border-color: rgba(207, 23, 23, 0.4); } .contacts-card { margin-bottom: 32px; } - .contacts-card h3 { - font-size: 32px; - line-height: 1; - font-weight: 700; margin-bottom: 24px; + font-size: 24px; + font-weight: 700; + line-height: 1.2; } - .contacts-card ul { display: flex; flex-direction: column; gap: 16px; } - .contacts-card li strong { display: block; - font-size: 24px; - line-height: 1; margin-bottom: 8px; + font-size: 16px; + font-weight: 700; + line-height: 1.2; } - .contacts-card li span { - font-size: 20px; - line-height: 1.5; color: rgba(255, 255, 255, 0.8); + font-size: 16px; + line-height: 1.5; } .hours-card h4 { - font-size: 24px; - line-height: 1; - font-weight: 700; margin-bottom: 16px; + font-size: 16px; + font-weight: 700; + line-height: 1.2; } - .hours-card p { margin: 0; - font-size: 24px; - line-height: 1; + font-size: 16px; + line-height: 1.2; } .footer { - background: #12161a; - border-top: 1px solid rgba(255, 255, 255, 0.1); + border-top: 1px solid rgba(207, 23, 23, 0.1); + background: #121212; padding: 49px 0; } - .footer__top { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 32px; margin-bottom: 32px; } - .footer__col h4 { - font-size: 24px; - line-height: 1; - font-weight: 700; margin-bottom: 16px; + font-size: 16px; + font-weight: 700; + line-height: 1.2; } - .footer__col p, .footer__col span, .footer__col a { display: block; - font-size: 20px; - line-height: 1; color: rgba(255, 255, 255, 0.8); + font-size: 14px; + line-height: 1.3; } - .footer__col p { margin-top: 16px; line-height: 1.4; } - .footer__col a + a, .footer__col span + span { margin-top: 8px; } - .footer__socials { display: flex; gap: 12px; } - .footer__socials a { - width: 40px; - height: 40px; - border-radius: 10px; - border: 1px solid rgba(255, 255, 255, 0.1); display: inline-flex; align-items: center; justify-content: center; + width: 40px; + height: 40px; + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: 10px; font-size: 14px; font-weight: 700; + transition: transform 0.25s ease, border-color 0.25s ease, background-color 0.25s ease; +} +.footer__socials a:hover { + transform: translateY(-2px); + border-color: rgba(207, 23, 23, 0.5); + background: rgba(207, 23, 23, 0.15); } - .footer__bottom { - border-top: 1px solid rgba(255, 255, 255, 0.08); - padding-top: 24px; display: flex; align-items: center; justify-content: space-between; + gap: 16px; + border-top: 1px solid rgba(255, 255, 255, 0.08); + padding-top: 24px; } - .footer__bottom span, .footer__bottom a { - font-size: 20px; - line-height: 1; color: rgba(255, 255, 255, 0.7); + font-size: 14px; + line-height: 1.3; } - .footer__bottom div { display: flex; gap: 24px; } + +@media only screen and (max-width: 1600px) { + .hero__content { + margin-left: 420px; + } + .hero h1 { + font-size: 64px; + line-height: 1.15; + } +} +@media only screen and (max-width: 1280px) { + .container { + padding: 0 20px; + } + .header__nav { + gap: 20px; + margin-right: 20px; + } + .hero__content { + margin-left: 280px; + max-width: 700px; + } + .hero h1 { + font-size: 56px; + } + .hero p { + font-size: 18px; + line-height: 1.6; + } + .section__head h2 { + font-size: 40px; + } + .section__head p { + font-size: 24px; + } + .object-card__content h3 { + font-size: 30px; + } + .booking h2 { + font-size: 42px; + } +} +@media only screen and (max-width: 1024px) { + .header__inner { + min-height: 64px; + } + .header__nav { + display: none; + } + .hero { + min-height: auto; + padding: 120px 0 80px; + } + .hero__content { + margin-left: 0; + max-width: 100%; + padding-top: 0; + } + .hero h1 { + max-width: 640px; + font-size: 48px; + line-height: 1.15; + } + .hero p { + max-width: 640px; + } + .hero__actions { + flex-wrap: wrap; + } + .highlights__grid, + .advantages__grid, + .services__grid, + .gallery__grid, + .reviews__grid, + .stats, + .footer__top { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + .object-card, + .booking__wrap { + grid-template-columns: 1fr; + gap: 24px; + } + .object-card--reverse .object-card__image, + .object-card--reverse .object-card__content { + order: initial; + } + .section { + padding: 72px 0; + } + .section__head { + margin-bottom: 40px; + } + .booking__contacts { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 24px; + } + .contacts-card { + margin-bottom: 0; + } + .footer__bottom { + flex-direction: column; + align-items: flex-start; + } +} +@media only screen and (max-width: 768px) { + .container { + padding: 0 16px; + } + .btn { + width: 100%; + } + .btn--small { + width: auto; + } + .hero { + padding-top: 108px; + } + .hero h1 { + max-width: 100%; + font-size: 40px; + } + .hero p { + max-width: 100%; + font-size: 16px; + line-height: 1.5; + } + .hero__tags li { + white-space: normal; + } + .hero__actions .btn--ghost { + width: 100%; + } + .section__head h2 { + font-size: 34px; + } + .section__head p { + font-size: 20px; + line-height: 1.3; + } + .highlights__grid, + .advantages__grid, + .services__grid, + .gallery__grid, + .reviews__grid, + .stats, + .footer__top, + .booking__contacts { + grid-template-columns: 1fr; + } + .feature-card h3, + .object-card__content h3, + .service-card h3, + .booking h2 { + font-size: 28px; + } + .stats strong { + font-size: 40px; + } +} +@media only screen and (max-width: 520px) { + .header__inner { + gap: 12px; + } + .logo { + width: 110px; + height: 24px; + } + .btn--small { + padding: 10px 16px; + font-size: 13px; + } + .hero { + padding-top: 100px; + } + .hero h1 { + font-size: 34px; + } + .hero__actions { + gap: 12px; + } + .section { + padding: 64px 0; + } + .section__head h2 { + font-size: 32px; + } + .section__head p { + font-size: 18px; + } + .info-card, + .feature-card, + .service-card, + .review-card, + .stats article, + .contacts-card, + .hours-card, + .object-card__content { + padding: 24px; + } + .object-card__image { + min-height: 260px; + } + .footer__bottom div { + flex-direction: column; + gap: 12px; + } +} +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + animation: none !important; + transition: none !important; + scroll-behavior: auto !important; + } + .hero__content > * { + opacity: 1 !important; + } + .scroll-reveal { + opacity: 1 !important; + transform: none !important; + } +} diff --git a/assets/css/main.min.css b/assets/css/main.min.css index 85af8a3..2a89dfc 100644 --- a/assets/css/main.min.css +++ b/assets/css/main.min.css @@ -1 +1 @@ -a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{border:0;font-size:100%;font:inherit;margin:0;padding:0;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}:root{color-scheme:dark}*{box-sizing:border-box}body,html{background:#121212;color:#fff;font-family:Segoe UI,Segoe UI Variable,Helvetica Neue,Arial,sans-serif;min-width:1200px}body{line-height:1}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}.container{margin:0 auto;max-width:1400px;padding:0 24px;width:100%}.site{overflow:hidden;position:relative}.btn{align-items:center;background:#cf1717;border:0;border-radius:14px;box-shadow:0 25px 50px rgba(231,0,11,.5);color:#fff;cursor:pointer;display:inline-flex;font-size:16px;font-weight:700;justify-content:center;line-height:24px;padding:18px 24px}.btn--small{box-shadow:0 10px 15px rgba(231,0,11,.4),0 4px 6px rgba(231,0,11,.4);font-size:14px;line-height:20px;padding:10px 24px}.btn--ghost{background:rgba(41,49,51,.6);border:2px solid hsla(0,0%,100%,.2);box-shadow:none}.header{background:hsla(0,0%,7%,.95);border-bottom:1px solid rgba(207,23,23,.2);inset:0 0 auto;position:fixed;z-index:20}.header__inner{align-items:center;display:flex;justify-content:space-between;min-height:72px}.logo{display:inline-flex;height:30px;width:137px}.logo img{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.header__nav{align-items:center;display:flex;gap:32px;margin-left:auto;margin-right:32px}.header__nav a{color:hsla(0,0%,100%,.8);font-size:14px;font-weight:600;line-height:20px}.hero{min-height:852px;padding-top:72px;position:relative}.hero__bg{background:linear-gradient(90deg,hsla(0,0%,7%,.9),hsla(0,0%,7%,.7) 50%,transparent),url(https://www.figma.com/api/mcp/asset/e5a37fb1-e23a-4258-855e-e6951519202d) 50%/cover no-repeat;inset:0;position:absolute}.hero__bg:after{background-image:repeating-linear-gradient(0deg,hsla(0,0%,100%,.045) 0 1px,transparent 1px 8px),repeating-linear-gradient(90deg,hsla(0,0%,100%,.045) 0 1px,transparent 1px 8px);content:"";inset:0;mix-blend-mode:soft-light;position:absolute}.hero__content{margin-left:528px;max-width:816px;padding-top:104px;position:relative;z-index:1}.hero h1{font-size:72px;font-weight:800;line-height:90px;margin-bottom:24px;max-width:768px}.hero h1 span{color:#cf1717}.hero p{color:hsla(0,0%,100%,.8);font-size:20px;line-height:32.5px;margin-bottom:32px;max-width:768px}.hero__tags{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:28px}.hero__tags li{background:rgba(41,49,51,.6);border:1px solid rgba(207,23,23,.3);border-radius:999px;font-size:14px;font-weight:600;line-height:20px;padding:9px 17px;white-space:nowrap}.hero__actions{display:flex;gap:16px}.highlights{background:#293133;padding:96px 0}.highlights__grid{display:grid;gap:24px;grid-template-columns:repeat(4,minmax(0,1fr))}.info-card{background:hsla(0,0%,7%,.4);border:1px solid hsla(0,0%,100%,.1);border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.1);min-height:178px;padding:33px}.info-card h3{font-size:20px;font-weight:700;line-height:28px;margin-bottom:8px}.info-card p{color:hsla(0,0%,100%,.7);font-size:16px;line-height:24px}.section{padding:96px 0;position:relative}.section--pattern{background:#1a2124}.section--pattern:before{background-image:radial-gradient(circle at 80px 80px,rgba(207,23,23,.25) 0 2px,transparent 2px 70px),radial-gradient(circle at 120px 120px,hsla(0,0%,100%,.06) 0 1px,transparent 1px 48px);background-size:320px 320px;content:"";inset:0;opacity:.4;pointer-events:none;position:absolute}.section>.container{position:relative;z-index:1}.section__head{margin-bottom:64px;text-align:center}.section__head h2{font-size:48px;font-weight:700;line-height:1;margin-bottom:16px}.section__head p{color:hsla(0,0%,100%,.8);font-size:28px;line-height:1}.advantages__grid{display:grid;gap:24px;grid-template-columns:repeat(4,minmax(0,1fr))}.feature-card{background:hsla(0,0%,7%,.4);border:1px solid hsla(0,0%,100%,.1);border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.1);min-height:162px;padding:25px;position:relative}.feature-card:before{background:rgba(207,23,23,.16);border:1px solid rgba(207,23,23,.32);border-radius:14px;content:"";display:block;height:48px;margin-bottom:16px;width:48px}.feature-card h3{font-size:24px;font-weight:700;line-height:1;margin-bottom:8px}.feature-card p{color:hsla(0,0%,100%,.7);font-size:20px;line-height:1}.objects .section__head{margin-bottom:64px}.object-card{display:grid;gap:32px;grid-template-columns:1fr 1fr;margin-bottom:48px}.object-card:last-child{margin-bottom:0}.object-card--reverse .object-card__image{order:2}.object-card--reverse .object-card__content{order:1}.object-card__image{background-position:50%;background-size:cover;border-radius:16px;min-height:400px}.object-card__content{align-self:center;background:hsla(0,0%,7%,.4);border:1px solid hsla(0,0%,100%,.1);border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.1);min-height:338px;padding:33px}.object-card__content h3{font-size:36px;font-weight:700;line-height:1;margin-bottom:16px}.object-card__content p{color:hsla(0,0%,100%,.7);font-size:20px;line-height:28px;margin-bottom:24px}.object-card__content ul{margin-bottom:24px}.object-card__content li{color:hsla(0,0%,100%,.8);font-size:20px;line-height:28px;padding-left:14px;position:relative}.object-card__content li+li{margin-top:8px}.object-card__content li:before{background:#cf1717;border-radius:50%;content:"";height:6px;left:0;position:absolute;top:12px;width:6px}.services{background:#293133}.services__grid{display:grid;gap:24px;grid-template-columns:repeat(4,minmax(0,1fr))}.service-card{background:hsla(0,0%,7%,.4);border:1px solid hsla(0,0%,100%,.1);border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.1);display:flex;flex-direction:column;min-height:260px;padding:33px}.service-card h3{font-size:28px;font-weight:700;line-height:1.15;margin-bottom:12px}.service-card p{color:hsla(0,0%,100%,.7);font-size:20px;line-height:28px;margin-bottom:auto}.service-card a{background:#cf1717;border-radius:14px;display:inline-flex;font-size:14px;font-weight:700;line-height:20px;margin-top:20px;padding:10px 20px;width:-moz-fit-content;width:fit-content}.gallery{background:#1b2225}.gallery__grid{display:grid;gap:24px;grid-template-columns:repeat(3,minmax(0,1fr))}.gallery__item{aspect-ratio:16/10;background-position:50%;background-size:cover;border:1px solid hsla(0,0%,100%,.1);border-radius:16px}.reviews{background:#1a2023}.reviews__grid{display:grid;gap:32px;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:64px}.review-card{background:hsla(0,0%,7%,.4);border:1px solid hsla(0,0%,100%,.1);border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.1);min-height:206px;padding:33px}.review-card p{color:hsla(0,0%,100%,.8);font-size:24px;line-height:1.5;margin-bottom:24px}.review-card strong{display:block;font-size:24px;font-weight:700;line-height:1;margin-bottom:8px}.review-card span{color:hsla(0,0%,100%,.7);font-size:20px;line-height:1}.stats{display:grid;gap:32px;grid-template-columns:repeat(3,minmax(0,1fr))}.stats article{background:hsla(0,0%,7%,.4);border:1px solid hsla(0,0%,100%,.1);border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.1);min-height:144px;padding:32px;text-align:center}.stats strong{color:#cf1717;display:block;font-size:48px;font-weight:700;line-height:1;margin-bottom:8px}.stats span{font-size:24px;line-height:1}.booking{background:#1b2225}.booking__wrap{display:grid;gap:48px;grid-template-columns:1fr 1fr}.booking h2{font-size:64px;font-weight:700;line-height:1;margin-bottom:24px}.booking p{color:hsla(0,0%,100%,.8);font-size:28px;line-height:1.4;margin-bottom:32px}.booking form{display:flex;flex-direction:column;gap:16px}.booking input{background:hsla(0,0%,7%,.35);border:1px solid hsla(0,0%,100%,.1);border-radius:14px;color:#fff;font-size:20px;height:58px;line-height:22px;padding:0 24px;width:100%}.booking input::-moz-placeholder{color:hsla(0,0%,100%,.75)}.booking input::placeholder{color:hsla(0,0%,100%,.75)}.booking form .btn{height:56px;margin-top:4px;padding:0 24px;width:100%}.contacts-card,.hours-card{background:hsla(0,0%,7%,.4);border:1px solid hsla(0,0%,100%,.1);border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.1);padding:33px}.contacts-card{margin-bottom:32px}.contacts-card h3{font-size:32px;font-weight:700;line-height:1;margin-bottom:24px}.contacts-card ul{display:flex;flex-direction:column;gap:16px}.contacts-card li strong{display:block;font-size:24px;line-height:1;margin-bottom:8px}.contacts-card li span{color:hsla(0,0%,100%,.8);font-size:20px;line-height:1.5}.hours-card h4{font-size:24px;font-weight:700;line-height:1;margin-bottom:16px}.hours-card p{font-size:24px;line-height:1;margin:0}.footer{background:#12161a;border-top:1px solid hsla(0,0%,100%,.1);padding:49px 0}.footer__top{display:grid;gap:32px;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:32px}.footer__col h4{font-size:24px;font-weight:700;line-height:1;margin-bottom:16px}.footer__col a,.footer__col p,.footer__col span{color:hsla(0,0%,100%,.8);display:block;font-size:20px;line-height:1}.footer__col p{line-height:1.4;margin-top:16px}.footer__col a+a,.footer__col span+span{margin-top:8px}.footer__socials{display:flex;gap:12px}.footer__socials a{align-items:center;border:1px solid hsla(0,0%,100%,.1);border-radius:10px;display:inline-flex;font-size:14px;font-weight:700;height:40px;justify-content:center;width:40px}.footer__bottom{align-items:center;border-top:1px solid hsla(0,0%,100%,.08);display:flex;justify-content:space-between;padding-top:24px}.footer__bottom a,.footer__bottom span{color:hsla(0,0%,100%,.7);font-size:20px;line-height:1}.footer__bottom div{display:flex;gap:24px} \ No newline at end of file +a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{border:0;font-size:100%;font:inherit;margin:0;padding:0;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}:root{color-scheme:dark}*{box-sizing:border-box}body,html{background:#121212;color:#fff;font-family:Segoe UI,Segoe UI Variable,Helvetica Neue,Arial,sans-serif}body{line-height:1}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}@keyframes fade-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-down{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}.container{margin:0 auto;max-width:1400px;padding:0 24px;width:100%}.site{overflow:hidden;position:relative}.scroll-reveal{opacity:0;transform:translateY(26px);transition:opacity .7s ease,transform .7s ease;transition-delay:var(--reveal-delay,0s);will-change:opacity,transform}.scroll-reveal.is-visible{opacity:1;transform:translateY(0)}.btn{align-items:center;background:#cf1717;border:0;border-radius:14px;box-shadow:0 25px 50px rgba(231,0,11,.5);color:#fff;cursor:pointer;display:inline-flex;font-size:16px;font-weight:700;justify-content:center;line-height:24px;padding:18px 24px;transition:transform .25s ease,box-shadow .25s ease,background-color .25s ease}.btn:hover{transform:translateY(-2px)}.btn:active{transform:translateY(0)}.btn--small{box-shadow:0 10px 15px rgba(231,0,11,.4),0 4px 6px rgba(231,0,11,.4);font-size:14px;line-height:20px;padding:10px 24px}.btn--ghost{background:rgba(41,49,51,.6);border:2px solid hsla(0,0%,100%,.2);box-shadow:none}.header{animation:slide-down .65s ease both;background:hsla(0,0%,7%,.95);border-bottom:1px solid rgba(207,23,23,.2);inset:0 0 auto;position:fixed;z-index:20}.header__inner{justify-content:space-between;min-height:72px}.header__inner,.header__nav{align-items:center;display:flex}.header__nav{gap:32px;margin-left:auto;margin-right:32px}.header__nav a{color:hsla(0,0%,100%,.8);font-size:14px;font-weight:600;line-height:20px;transition:color .2s ease}.header__nav a:hover{color:#fff}.logo{display:inline-flex;height:30px;width:137px}.logo img{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.hero{min-height:852px;padding-top:72px;position:relative}.hero__bg{background:linear-gradient(90deg,hsla(0,0%,7%,.9),hsla(0,0%,7%,.7) 50%,transparent),url(https://www.figma.com/api/mcp/asset/e5a37fb1-e23a-4258-855e-e6951519202d) 50%/cover no-repeat;inset:0;position:absolute}.hero__bg:after{background-image:repeating-linear-gradient(0deg,hsla(0,0%,100%,.045) 0 1px,transparent 1px 8px),repeating-linear-gradient(90deg,hsla(0,0%,100%,.045) 0 1px,transparent 1px 8px);content:"";inset:0;mix-blend-mode:soft-light;position:absolute}.hero__content{margin-left:528px;max-width:816px;padding-top:104px;position:relative;z-index:1}.hero__content>*{animation:fade-up .7s ease forwards;opacity:0}.hero__content h1{animation-delay:.15s}.hero__content p{animation-delay:.28s}.hero__content .hero__tags{animation-delay:.4s}.hero__content .hero__actions{animation-delay:.52s}.hero h1{font-size:72px;font-weight:800;line-height:90px;margin-bottom:24px;max-width:768px}.hero h1 span{color:#cf1717}.hero p{color:hsla(0,0%,100%,.8);font-size:20px;line-height:32px;margin-bottom:32px;max-width:768px}.hero__tags{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:28px}.hero__tags li{background:rgba(41,49,51,.6);border:1px solid rgba(207,23,23,.3);border-radius:999px;font-size:14px;font-weight:600;line-height:20px;padding:9px 17px;transition:border-color .25s ease,background-color .25s ease,transform .25s ease;white-space:nowrap}.hero__tags li:hover{background:rgba(41,49,51,.9);border-color:rgba(207,23,23,.55);transform:translateY(-1px)}.hero__actions{display:flex;gap:16px}.highlights{background:#293133;padding:96px 0}.highlights__grid{display:grid;gap:24px;grid-template-columns:repeat(4,minmax(0,1fr))}.info-card{background:hsla(0,0%,7%,.4);border:1px solid hsla(0,0%,100%,.1);border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.1);min-height:178px;padding:33px;transition:transform .3s ease,border-color .3s ease,background-color .3s ease}.info-card:hover{background:hsla(0,0%,7%,.62);border-color:rgba(207,23,23,.45);transform:translateY(-6px)}.info-card h3{font-size:20px;font-weight:700;line-height:28px;margin-bottom:8px}.info-card p{color:hsla(0,0%,100%,.7);font-size:16px;line-height:24px}.section{padding:96px 0;position:relative}.section>.container{position:relative;z-index:1}.section--pattern{background:#1a2124}.section--pattern:before{background-image:radial-gradient(circle at 80px 80px,rgba(207,23,23,.25) 0 2px,transparent 2px 70px),radial-gradient(circle at 120px 120px,hsla(0,0%,100%,.06) 0 1px,transparent 1px 48px);background-size:320px 320px;content:"";inset:0;opacity:.4;pointer-events:none;position:absolute}.section__head{margin-bottom:64px;text-align:center}.section__head h2{font-size:48px;font-weight:700;line-height:1;margin-bottom:16px}.section__head p{color:hsla(0,0%,100%,.8);font-size:28px;line-height:1.15}.advantages__grid{display:grid;gap:24px;grid-template-columns:repeat(4,minmax(0,1fr))}.feature-card{background:hsla(0,0%,7%,.4);border:1px solid hsla(0,0%,100%,.1);border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.1);min-height:162px;padding:25px;position:relative;transition:transform .3s ease,border-color .3s ease}.feature-card:hover{border-color:rgba(207,23,23,.4);transform:translateY(-5px)}.feature-card:before{background:rgba(207,23,23,.16);border:1px solid rgba(207,23,23,.32);border-radius:14px;content:"";display:block;height:48px;margin-bottom:16px;width:48px}.feature-card h3{font-size:20px;font-weight:700;line-height:1.2;margin-bottom:8px}.feature-card p{color:hsla(0,0%,100%,.7);font-size:16px;line-height:1.4}.objects .section__head{margin-bottom:64px}.object-card{display:grid;gap:32px;grid-template-columns:1fr 1fr;margin-bottom:48px}.object-card:last-child{margin-bottom:0}.object-card--reverse .object-card__image{order:2}.object-card--reverse .object-card__content{order:1}.object-card__image{background-position:50%;background-size:cover;border-radius:16px;min-height:400px;transition:transform .5s ease}.object-card__content{align-self:center;background:hsla(0,0%,7%,.4);border:1px solid hsla(0,0%,100%,.1);border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.1);min-height:338px;padding:33px;transition:transform .3s ease,border-color .3s ease}.object-card__content h3{font-size:34px;font-weight:700;line-height:1.1;margin-bottom:16px}.object-card__content p{color:hsla(0,0%,100%,.7);font-size:18px;line-height:28px;margin-bottom:24px}.object-card__content ul{margin-bottom:24px}.object-card__content li{color:hsla(0,0%,100%,.8);font-size:16px;line-height:28px;padding-left:14px;position:relative}.object-card__content li+li{margin-top:8px}.object-card__content li:before{background:#cf1717;border-radius:50%;content:"";height:6px;left:0;position:absolute;top:12px;width:6px}.object-card:hover .object-card__image{transform:scale(1.02)}.object-card:hover .object-card__content{border-color:rgba(207,23,23,.4);transform:translateY(-4px)}.services{background:#293133}.services__grid{display:grid;gap:24px;grid-template-columns:repeat(4,minmax(0,1fr))}.service-card{background:hsla(0,0%,7%,.4);border:1px solid hsla(0,0%,100%,.1);border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.1);display:flex;flex-direction:column;min-height:260px;padding:33px;transition:transform .3s ease,border-color .3s ease}.service-card:hover{border-color:rgba(207,23,23,.45);transform:translateY(-6px)}.service-card h3{font-size:24px;font-weight:700;line-height:1.2;margin-bottom:12px}.service-card p{color:hsla(0,0%,100%,.7);font-size:18px;line-height:28px;margin-bottom:auto}.service-card a{background:#cf1717;border-radius:14px;display:inline-flex;font-size:14px;font-weight:700;line-height:20px;margin-top:20px;padding:10px 20px;width:-moz-fit-content;width:fit-content}.gallery{background:#1b2225}.gallery__grid{display:grid;gap:24px;grid-template-columns:repeat(3,minmax(0,1fr))}.gallery__item{aspect-ratio:16/10;background-position:50%;background-size:cover;border:1px solid hsla(0,0%,100%,.1);border-radius:16px;transition:transform .45s ease,border-color .3s ease,filter .3s ease}.gallery__item:hover{border-color:rgba(207,23,23,.55);filter:saturate(1.08);transform:scale(1.03)}.reviews{background:#1a2023}.reviews__grid{display:grid;gap:32px;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:64px}.review-card{background:hsla(0,0%,7%,.4);border:1px solid hsla(0,0%,100%,.1);border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.1);min-height:206px;padding:33px;transition:transform .3s ease,border-color .3s ease}.review-card:hover{border-color:rgba(207,23,23,.4);transform:translateY(-5px)}.review-card p{color:hsla(0,0%,100%,.8);font-size:16px;line-height:1.5;margin-bottom:24px}.review-card strong{display:block;font-size:16px;font-weight:700;line-height:1.2;margin-bottom:8px}.review-card span{color:hsla(0,0%,100%,.7);font-size:16px;line-height:1.2}.stats{display:grid;gap:32px;grid-template-columns:repeat(3,minmax(0,1fr))}.stats article{background:hsla(0,0%,7%,.4);background:#cf1717;border:0;border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.1);min-height:144px;padding:32px;text-align:center;transition:transform .3s ease}.stats article:hover{transform:translateY(-5px)}.stats strong{color:#fff;display:block;font-size:48px;font-weight:700;line-height:1;margin-bottom:8px}.stats span{color:#fff;font-size:16px;line-height:1.3}.booking{background:#1b2225}.booking__wrap{display:grid;gap:48px;grid-template-columns:1fr 1fr}.booking h2{font-size:48px;font-weight:600;line-height:1.1;margin-bottom:24px}.booking p{color:hsla(0,0%,100%,.8);font-size:18px;line-height:1.45;margin-bottom:32px}.booking form{display:flex;flex-direction:column;gap:16px}.booking form .btn{height:56px;margin-top:4px;padding:0 24px;width:100%}.booking input{background:hsla(0,0%,7%,.35);border:1px solid hsla(0,0%,100%,.1);border-radius:14px;color:#fff;font-size:16px;height:58px;line-height:18px;padding:0 24px;width:100%}.booking input::-moz-placeholder{color:hsla(0,0%,100%,.75)}.booking input::placeholder{color:hsla(0,0%,100%,.75)}.contacts-card,.hours-card{background:hsla(0,0%,7%,.4);border:1px solid hsla(0,0%,100%,.1);border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.1);padding:33px;transition:transform .3s ease,border-color .3s ease}.contacts-card:hover,.hours-card:hover{border-color:rgba(207,23,23,.4);transform:translateY(-4px)}.contacts-card{margin-bottom:32px}.contacts-card h3{font-size:24px;font-weight:700;line-height:1.2;margin-bottom:24px}.contacts-card ul{display:flex;flex-direction:column;gap:16px}.contacts-card li strong{display:block;font-size:16px;font-weight:700;line-height:1.2;margin-bottom:8px}.contacts-card li span{color:hsla(0,0%,100%,.8);font-size:16px;line-height:1.5}.hours-card h4{font-weight:700;margin-bottom:16px}.hours-card h4,.hours-card p{font-size:16px;line-height:1.2}.hours-card p{margin:0}.footer{background:#121212;border-top:1px solid rgba(207,23,23,.1);padding:49px 0}.footer__top{display:grid;gap:32px;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:32px}.footer__col h4{font-size:16px;font-weight:700;line-height:1.2;margin-bottom:16px}.footer__col a,.footer__col p,.footer__col span{color:hsla(0,0%,100%,.8);display:block;font-size:14px;line-height:1.3}.footer__col p{line-height:1.4;margin-top:16px}.footer__col a+a,.footer__col span+span{margin-top:8px}.footer__socials{display:flex;gap:12px}.footer__socials a{align-items:center;border:1px solid hsla(0,0%,100%,.1);border-radius:10px;display:inline-flex;font-size:14px;font-weight:700;height:40px;justify-content:center;transition:transform .25s ease,border-color .25s ease,background-color .25s ease;width:40px}.footer__socials a:hover{background:rgba(207,23,23,.15);border-color:rgba(207,23,23,.5);transform:translateY(-2px)}.footer__bottom{align-items:center;border-top:1px solid hsla(0,0%,100%,.08);display:flex;gap:16px;justify-content:space-between;padding-top:24px}.footer__bottom a,.footer__bottom span{color:hsla(0,0%,100%,.7);font-size:14px;line-height:1.3}.footer__bottom div{display:flex;gap:24px}@media only screen and (max-width:1600px){.hero__content{margin-left:420px}.hero h1{font-size:64px;line-height:1.15}}@media only screen and (max-width:1280px){.container{padding:0 20px}.header__nav{gap:20px;margin-right:20px}.hero__content{margin-left:280px;max-width:700px}.hero h1{font-size:56px}.hero p{font-size:18px;line-height:1.6}.section__head h2{font-size:40px}.section__head p{font-size:24px}.object-card__content h3{font-size:30px}.booking h2{font-size:42px}}@media only screen and (max-width:1024px){.header__inner{min-height:64px}.header__nav{display:none}.hero{min-height:auto;padding:120px 0 80px}.hero__content{margin-left:0;max-width:100%;padding-top:0}.hero h1{font-size:48px;line-height:1.15}.hero h1,.hero p{max-width:640px}.hero__actions{flex-wrap:wrap}.advantages__grid,.footer__top,.gallery__grid,.highlights__grid,.reviews__grid,.services__grid,.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.booking__wrap,.object-card{gap:24px;grid-template-columns:1fr}.object-card--reverse .object-card__content,.object-card--reverse .object-card__image{order:0}.section{padding:72px 0}.section__head{margin-bottom:40px}.booking__contacts{display:grid;gap:24px;grid-template-columns:1fr 1fr}.contacts-card{margin-bottom:0}.footer__bottom{align-items:flex-start;flex-direction:column}}@media only screen and (max-width:768px){.container{padding:0 16px}.btn{width:100%}.btn--small{width:auto}.hero{padding-top:108px}.hero h1{font-size:40px;max-width:100%}.hero p{font-size:16px;line-height:1.5;max-width:100%}.hero__tags li{white-space:normal}.hero__actions .btn--ghost{width:100%}.section__head h2{font-size:34px}.section__head p{font-size:20px;line-height:1.3}.advantages__grid,.booking__contacts,.footer__top,.gallery__grid,.highlights__grid,.reviews__grid,.services__grid,.stats{grid-template-columns:1fr}.booking h2,.feature-card h3,.object-card__content h3,.service-card h3{font-size:28px}.stats strong{font-size:40px}}@media only screen and (max-width:520px){.header__inner{gap:12px}.logo{height:24px;width:110px}.btn--small{font-size:13px;padding:10px 16px}.hero{padding-top:100px}.hero h1{font-size:34px}.hero__actions{gap:12px}.section{padding:64px 0}.section__head h2{font-size:32px}.section__head p{font-size:18px}.contacts-card,.feature-card,.hours-card,.info-card,.object-card__content,.review-card,.service-card,.stats article{padding:24px}.object-card__image{min-height:260px}.footer__bottom div{flex-direction:column;gap:12px}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation:none!important;scroll-behavior:auto!important;transition:none!important}.hero__content>*,.scroll-reveal{opacity:1!important}.scroll-reveal{transform:none!important}} \ No newline at end of file diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 0000000..0de5e3a --- /dev/null +++ b/assets/js/main.js @@ -0,0 +1,58 @@ +(() => { + const reduceMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches; + + const selectors = [ + ".section__head", + ".info-card", + ".feature-card", + ".object-card", + ".service-card", + ".gallery__item", + ".review-card", + ".stats article", + ".booking__form", + ".contacts-card", + ".hours-card", + ".footer__col", + ".footer__bottom" + ]; + + const elements = Array.from(document.querySelectorAll(selectors.join(","))); + if (!elements.length) return; + + const siblingCounters = new WeakMap(); + + elements.forEach((element) => { + element.classList.add("scroll-reveal"); + const parent = element.parentElement; + let offsetIndex = 0; + + if (parent) { + offsetIndex = siblingCounters.get(parent) ?? 0; + siblingCounters.set(parent, offsetIndex + 1); + } + + element.style.setProperty("--reveal-delay", `${(offsetIndex % 4) * 80}ms`); + }); + + if (reduceMotion || !("IntersectionObserver" in window)) { + elements.forEach((element) => element.classList.add("is-visible")); + return; + } + + const observer = new IntersectionObserver( + (entries, currentObserver) => { + entries.forEach((entry) => { + if (!entry.isIntersecting) return; + entry.target.classList.add("is-visible"); + currentObserver.unobserve(entry.target); + }); + }, + { + threshold: 0.18, + rootMargin: "0px 0px -12% 0px" + } + ); + + elements.forEach((element) => observer.observe(element)); +})(); diff --git a/assets/scss/_base.scss b/assets/scss/_base.scss index 752f464..9e9d2df 100644 --- a/assets/scss/_base.scss +++ b/assets/scss/_base.scss @@ -10,7 +10,6 @@ body { background: $color-bg; color: $color-text; font-family: $font-main; - min-width: 1200px; } body { @@ -27,6 +26,28 @@ img { max-width: 100%; } +@keyframes fade-up { + from { + opacity: 0; + transform: translateY(24px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes slide-down { + from { + opacity: 0; + transform: translateY(-16px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + .container { @include container; padding: 0 $container-padding; @@ -37,261 +58,338 @@ img { overflow: hidden; } +.scroll-reveal { + opacity: 0; + transform: translateY(26px); + transition: opacity 0.7s ease, transform 0.7s ease; + transition-delay: var(--reveal-delay, 0ms); + will-change: opacity, transform; + + &.is-visible { + opacity: 1; + transform: translateY(0); + } +} + .btn { display: inline-flex; align-items: center; justify-content: center; padding: 18px 24px; border-radius: $radius-sm; + border: 0; background: $color-accent; color: $color-text; font-size: 16px; font-weight: 700; line-height: 24px; box-shadow: $shadow-accent; - border: 0; cursor: pointer; -} + transition: transform 0.25s ease, box-shadow 0.25s ease, background-color 0.25s ease; -.btn--small { - padding: 10px 24px; - font-size: 14px; - line-height: 20px; - box-shadow: 0 10px 15px rgba(231, 0, 11, 0.4), 0 4px 6px rgba(231, 0, 11, 0.4); -} + &:hover { + transform: translateY(-2px); + } -.btn--ghost { - background: rgba(41, 49, 51, 0.6); - border: 2px solid rgba(255, 255, 255, 0.2); - box-shadow: none; + &:active { + transform: translateY(0); + } + + &--small { + padding: 10px 24px; + font-size: 14px; + line-height: 20px; + box-shadow: 0 10px 15px rgba(231, 0, 11, 0.4), 0 4px 6px rgba(231, 0, 11, 0.4); + } + + &--ghost { + border: 2px solid rgba(255, 255, 255, 0.2); + background: rgba(41, 49, 51, 0.6); + box-shadow: none; + } } .header { position: fixed; inset: 0 0 auto; z-index: 20; - background: rgba(18, 18, 18, 0.95); border-bottom: 1px solid rgba(207, 23, 23, 0.2); -} + background: rgba(18, 18, 18, 0.95); + animation: slide-down 0.65s ease both; -.header__inner { - display: flex; - align-items: center; - justify-content: space-between; - min-height: 72px; + &__inner { + display: flex; + align-items: center; + justify-content: space-between; + min-height: 72px; + } + + &__nav { + display: flex; + align-items: center; + gap: 32px; + margin-left: auto; + margin-right: 32px; + + a { + color: rgba(255, 255, 255, 0.8); + font-size: 14px; + font-weight: 600; + line-height: 20px; + transition: color 0.2s ease; + + &:hover { + color: $color-text; + } + } + } } .logo { display: inline-flex; width: 137px; height: 30px; -} -.logo img { - width: 100%; - height: 100%; - object-fit: cover; -} - -.header__nav { - display: flex; - align-items: center; - gap: 32px; - margin-left: auto; - margin-right: 32px; -} - -.header__nav a { - font-size: 14px; - line-height: 20px; - font-weight: 600; - color: rgba(255, 255, 255, 0.8); + img { + width: 100%; + height: 100%; + object-fit: cover; + } } .hero { position: relative; min-height: 852px; padding-top: 72px; -} -.hero__bg { - position: absolute; - inset: 0; - background: - linear-gradient(90deg, rgba(18, 18, 18, 0.9) 0%, rgba(18, 18, 18, 0.7) 50%, rgba(0, 0, 0, 0) 100%), - url("https://www.figma.com/api/mcp/asset/e5a37fb1-e23a-4258-855e-e6951519202d") center/cover no-repeat; -} + &__bg { + position: absolute; + inset: 0; + background: + linear-gradient(90deg, rgba(18, 18, 18, 0.9) 0%, rgba(18, 18, 18, 0.7) 50%, rgba(0, 0, 0, 0) 100%), + url("https://www.figma.com/api/mcp/asset/e5a37fb1-e23a-4258-855e-e6951519202d") center / cover no-repeat; -.hero__bg::after { - content: ""; - position: absolute; - inset: 0; - background-image: repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.045) 0 1px, transparent 1px 8px), repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.045) 0 1px, transparent 1px 8px); - mix-blend-mode: soft-light; -} + &::after { + content: ""; + position: absolute; + inset: 0; + background-image: + repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.045) 0 1px, transparent 1px 8px), + repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.045) 0 1px, transparent 1px 8px); + mix-blend-mode: soft-light; + } + } -.hero__content { - position: relative; - z-index: 1; - max-width: 816px; - margin-left: 528px; - padding-top: 104px; -} + &__content { + position: relative; + z-index: 1; + max-width: 816px; + margin-left: 528px; + padding-top: 104px; -.hero h1 { - max-width: 768px; - font-size: 72px; - line-height: 90px; - font-weight: 800; - margin-bottom: 24px; -} + > * { + opacity: 0; + animation: fade-up 0.7s ease forwards; + } -.hero h1 span { - color: $color-accent; -} + h1 { + animation-delay: 0.15s; + } -.hero p { - max-width: 768px; - font-size: 20px; - line-height: 32.5px; - color: $color-text-soft; - margin-bottom: 32px; -} + p { + animation-delay: 0.28s; + } -.hero__tags { - display: flex; - flex-wrap: wrap; - gap: 12px; - margin-bottom: 28px; -} + .hero__tags { + animation-delay: 0.4s; + } -.hero__tags li { - padding: 9px 17px; - border-radius: 999px; - border: 1px solid $color-border-strong; - background: rgba(41, 49, 51, 0.6); - font-size: 14px; - line-height: 20px; - font-weight: 600; - white-space: nowrap; -} + .hero__actions { + animation-delay: 0.52s; + } + } -.hero__actions { - display: flex; - gap: 16px; + h1 { + max-width: 768px; + margin-bottom: 24px; + font-size: 72px; + font-weight: 800; + line-height: 90px; + + span { + color: $color-accent; + } + } + + p { + max-width: 768px; + margin-bottom: 32px; + color: $color-text-soft; + font-size: 20px; + line-height: 32px; + } + + &__tags { + display: flex; + flex-wrap: wrap; + gap: 12px; + margin-bottom: 28px; + + li { + padding: 9px 17px; + border: 1px solid $color-border-strong; + border-radius: 999px; + background: rgba(41, 49, 51, 0.6); + font-size: 14px; + font-weight: 600; + line-height: 20px; + white-space: nowrap; + transition: border-color 0.25s ease, background-color 0.25s ease, transform 0.25s ease; + + &:hover { + transform: translateY(-1px); + border-color: rgba(207, 23, 23, 0.55); + background: rgba(41, 49, 51, 0.9); + } + } + } + + &__actions { + display: flex; + gap: 16px; + } } .highlights { background: $color-surface; padding: 96px 0; -} -.highlights__grid { - display: grid; - grid-template-columns: repeat(4, minmax(0, 1fr)); - gap: 24px; + &__grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 24px; + } } .info-card { @include card; min-height: 178px; padding: 33px; -} + transition: transform 0.3s ease, border-color 0.3s ease, background-color 0.3s ease; -.info-card h3 { - font-size: 20px; - line-height: 28px; - font-weight: 700; - margin-bottom: 8px; -} + &:hover { + transform: translateY(-6px); + border-color: rgba(207, 23, 23, 0.45); + background: rgba(18, 18, 18, 0.62); + } -.info-card p { - color: $color-text-muted; - font-size: 16px; - line-height: 24px; + h3 { + margin-bottom: 8px; + font-size: 20px; + font-weight: 700; + line-height: 28px; + } + + p { + color: $color-text-muted; + font-size: 16px; + line-height: 24px; + } } .section { position: relative; padding: 96px 0; + + > .container { + position: relative; + z-index: 1; + } + + &--pattern { + background: #1a2124; + + &::before { + content: ""; + position: absolute; + inset: 0; + background-image: + radial-gradient(circle at 80px 80px, rgba(207, 23, 23, 0.25) 0 2px, transparent 2px 70px), + radial-gradient(circle at 120px 120px, rgba(255, 255, 255, 0.06) 0 1px, transparent 1px 48px); + background-size: 320px 320px; + opacity: 0.4; + pointer-events: none; + } + } + + &__head { + margin-bottom: 64px; + text-align: center; + + h2 { + margin-bottom: 16px; + font-size: 48px; + font-weight: 700; + line-height: 1; + } + + p { + color: $color-text-soft; + font-size: 28px; + line-height: 1.15; + } + } } -.section--pattern { - background: #1a2124; -} - -.section--pattern::before { - content: ""; - position: absolute; - inset: 0; - background-image: radial-gradient(circle at 80px 80px, rgba(207, 23, 23, 0.25) 0 2px, transparent 2px 70px), radial-gradient(circle at 120px 120px, rgba(255, 255, 255, 0.06) 0 1px, transparent 1px 48px); - background-size: 320px 320px; - opacity: 0.4; - pointer-events: none; -} - -.section > .container { - position: relative; - z-index: 1; -} - -.section__head { - margin-bottom: 64px; - text-align: center; -} - -.section__head h2 { - font-size: 48px; - line-height: 1; - font-weight: 700; - margin-bottom: 16px; -} - -.section__head p { - font-size: 28px; - line-height: 1; - color: $color-text-soft; -} - -.advantages__grid { - display: grid; - grid-template-columns: repeat(4, minmax(0, 1fr)); - gap: 24px; +.advantages { + &__grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 24px; + } } .feature-card { @include card; + position: relative; min-height: 162px; padding: 25px; - position: relative; + transition: transform 0.3s ease, border-color 0.3s ease; + + &:hover { + transform: translateY(-5px); + border-color: rgba(207, 23, 23, 0.4); + } + + &::before { + content: ""; + display: block; + width: 48px; + height: 48px; + margin-bottom: 16px; + border: 1px solid rgba(207, 23, 23, 0.32); + border-radius: 14px; + background: rgba(207, 23, 23, 0.16); + } + + h3 { + margin-bottom: 8px; + font-size: 20px; + font-weight: 700; + line-height: 1.2; + } + + p { + color: $color-text-muted; + font-size: 16px; + line-height: 1.4; + } } -.feature-card::before { - content: ""; - width: 48px; - height: 48px; - border-radius: 14px; - background: rgba(207, 23, 23, 0.16); - border: 1px solid rgba(207, 23, 23, 0.32); - display: block; - margin-bottom: 16px; -} - -.feature-card h3 { - font-size: 24px; - line-height: 1; - font-weight: 700; - margin-bottom: 8px; -} - -.feature-card p { - font-size: 20px; - line-height: 1; - color: $color-text-muted; -} - -.objects .section__head { - margin-bottom: 64px; +.objects { + .section__head { + margin-bottom: 64px; + } } .object-card { @@ -299,376 +397,745 @@ img { grid-template-columns: 1fr 1fr; gap: 32px; margin-bottom: 48px; -} -.object-card:last-child { - margin-bottom: 0; -} + &:last-child { + margin-bottom: 0; + } -.object-card--reverse .object-card__image { - order: 2; -} + &--reverse { + .object-card__image { + order: 2; + } -.object-card--reverse .object-card__content { - order: 1; -} + .object-card__content { + order: 1; + } + } -.object-card__image { - min-height: 400px; - border-radius: $radius-md; - background-size: cover; - background-position: center; -} + &__image { + min-height: 400px; + border-radius: $radius-md; + background-size: cover; + background-position: center; + transition: transform 0.5s ease; + } -.object-card__content { - @include card; - min-height: 338px; - align-self: center; - padding: 33px; -} + &__content { + @include card; + align-self: center; + min-height: 338px; + padding: 33px; + transition: transform 0.3s ease, border-color 0.3s ease; -.object-card__content h3 { - font-size: 36px; - line-height: 1; - font-weight: 700; - margin-bottom: 16px; -} + h3 { + margin-bottom: 16px; + font-size: 34px; + font-weight: 700; + line-height: 1.1; + } -.object-card__content p { - font-size: 20px; - line-height: 28px; - color: $color-text-muted; - margin-bottom: 24px; -} + p { + margin-bottom: 24px; + color: $color-text-muted; + font-size: 18px; + line-height: 28px; + } -.object-card__content ul { - margin-bottom: 24px; -} + ul { + margin-bottom: 24px; + } -.object-card__content li { - position: relative; - padding-left: 14px; - font-size: 20px; - line-height: 28px; - color: $color-text-soft; -} + li { + position: relative; + padding-left: 14px; + color: $color-text-soft; + font-size: 16px; + line-height: 28px; -.object-card__content li + li { - margin-top: 8px; -} + & + li { + margin-top: 8px; + } -.object-card__content li::before { - content: ""; - position: absolute; - left: 0; - top: 12px; - width: 6px; - height: 6px; - border-radius: 50%; - background: $color-accent; + &::before { + content: ""; + position: absolute; + left: 0; + top: 12px; + width: 6px; + height: 6px; + border-radius: 50%; + background: $color-accent; + } + } + } + + &:hover { + .object-card__image { + transform: scale(1.02); + } + + .object-card__content { + transform: translateY(-4px); + border-color: rgba(207, 23, 23, 0.4); + } + } } .services { background: $color-surface; -} -.services__grid { - display: grid; - grid-template-columns: repeat(4, minmax(0, 1fr)); - gap: 24px; + &__grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 24px; + } } .service-card { @include card; - padding: 33px; - min-height: 260px; display: flex; flex-direction: column; -} + min-height: 260px; + padding: 33px; + transition: transform 0.3s ease, border-color 0.3s ease; -.service-card h3 { - font-size: 28px; - line-height: 1.15; - font-weight: 700; - margin-bottom: 12px; -} + &:hover { + transform: translateY(-6px); + border-color: rgba(207, 23, 23, 0.45); + } -.service-card p { - color: $color-text-muted; - font-size: 20px; - line-height: 28px; - margin-bottom: auto; -} + h3 { + margin-bottom: 12px; + font-size: 24px; + font-weight: 700; + line-height: 1.2; + } -.service-card a { - display: inline-flex; - width: fit-content; - margin-top: 20px; - font-size: 14px; - line-height: 20px; - font-weight: 700; - padding: 10px 20px; - border-radius: $radius-sm; - background: $color-accent; + p { + margin-bottom: auto; + color: $color-text-muted; + font-size: 18px; + line-height: 28px; + } + + a { + display: inline-flex; + width: fit-content; + margin-top: 20px; + padding: 10px 20px; + border-radius: $radius-sm; + background: $color-accent; + font-size: 14px; + font-weight: 700; + line-height: 20px; + } } .gallery { background: #1b2225; -} -.gallery__grid { - display: grid; - grid-template-columns: repeat(3, minmax(0, 1fr)); - gap: 24px; -} + &__grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 24px; + } -.gallery__item { - aspect-ratio: 16 / 10; - border-radius: $radius-md; - background-size: cover; - background-position: center; - border: 1px solid $color-border; + &__item { + aspect-ratio: 16 / 10; + border: 1px solid $color-border; + border-radius: $radius-md; + background-size: cover; + background-position: center; + transition: transform 0.45s ease, border-color 0.3s ease, filter 0.3s ease; + + &:hover { + transform: scale(1.03); + border-color: rgba(207, 23, 23, 0.55); + filter: saturate(1.08); + } + } } .reviews { background: #1a2023; -} -.reviews__grid { - display: grid; - grid-template-columns: repeat(3, minmax(0, 1fr)); - gap: 32px; - margin-bottom: 64px; + &__grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 32px; + margin-bottom: 64px; + } } .review-card { @include card; - padding: 33px; min-height: 206px; -} + padding: 33px; + transition: transform 0.3s ease, border-color 0.3s ease; -.review-card p { - font-size: 24px; - line-height: 1.5; - color: $color-text-soft; - margin-bottom: 24px; -} + &:hover { + transform: translateY(-5px); + border-color: rgba(207, 23, 23, 0.4); + } -.review-card strong { - display: block; - font-size: 24px; - line-height: 1; - font-weight: 700; - margin-bottom: 8px; -} + p { + margin-bottom: 24px; + color: $color-text-soft; + font-size: 16px; + line-height: 1.5; + } -.review-card span { - font-size: 20px; - line-height: 1; - color: $color-text-muted; + strong { + display: block; + margin-bottom: 8px; + font-size: 16px; + font-weight: 700; + line-height: 1.2; + } + + span { + color: $color-text-muted; + font-size: 16px; + line-height: 1.2; + } } .stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; -} -.stats article { - @include card; - min-height: 144px; - padding: 32px; - text-align: center; -} + article { + @include card; + border: 0; + background: $color-accent; + min-height: 144px; + padding: 32px; + text-align: center; + transition: transform 0.3s ease; -.stats strong { - display: block; - font-size: 48px; - line-height: 1; - font-weight: 700; - color: $color-accent; - margin-bottom: 8px; -} + &:hover { + transform: translateY(-5px); + } + } -.stats span { - font-size: 24px; - line-height: 1; + strong { + display: block; + margin-bottom: 8px; + color: $color-text; + font-size: 48px; + font-weight: 700; + line-height: 1; + } + + span { + color: $color-text; + font-size: 16px; + line-height: 1.3; + } } .booking { background: #1b2225; -} -.booking__wrap { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 48px; -} + &__wrap { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 48px; + } -.booking h2 { - font-size: 64px; - line-height: 1; - font-weight: 700; - margin-bottom: 24px; -} + h2 { + margin-bottom: 24px; + font-size: 48px; + font-weight: 600; + line-height: 1.1; + } -.booking p { - font-size: 28px; - line-height: 1.4; - color: $color-text-soft; - margin-bottom: 32px; -} + p { + margin-bottom: 32px; + color: $color-text-soft; + font-size: 18px; + line-height: 1.45; + } -.booking form { - display: flex; - flex-direction: column; - gap: 16px; -} + form { + display: flex; + flex-direction: column; + gap: 16px; -.booking input { - width: 100%; - height: 58px; - border: 1px solid $color-border; - background: rgba(18, 18, 18, 0.35); - border-radius: 14px; - padding: 0 24px; - color: $color-text; - font-size: 20px; - line-height: 22px; -} + .btn { + width: 100%; + height: 56px; + margin-top: 4px; + padding: 0 24px; + } + } -.booking input::placeholder { - color: rgba(255, 255, 255, 0.75); -} + input { + width: 100%; + height: 58px; + padding: 0 24px; + border: 1px solid $color-border; + border-radius: $radius-sm; + background: rgba(18, 18, 18, 0.35); + color: $color-text; + font-size: 16px; + line-height: 18px; -.booking form .btn { - width: 100%; - margin-top: 4px; - height: 56px; - padding: 0 24px; + &::placeholder { + color: rgba(255, 255, 255, 0.75); + } + } } .contacts-card, .hours-card { @include card; padding: 33px; + transition: transform 0.3s ease, border-color 0.3s ease; + + &:hover { + transform: translateY(-4px); + border-color: rgba(207, 23, 23, 0.4); + } } .contacts-card { margin-bottom: 32px; + + h3 { + margin-bottom: 24px; + font-size: 24px; + font-weight: 700; + line-height: 1.2; + } + + ul { + display: flex; + flex-direction: column; + gap: 16px; + } + + li { + strong { + display: block; + margin-bottom: 8px; + font-size: 16px; + font-weight: 700; + line-height: 1.2; + } + + span { + color: $color-text-soft; + font-size: 16px; + line-height: 1.5; + } + } } -.contacts-card h3 { - font-size: 32px; - line-height: 1; - font-weight: 700; - margin-bottom: 24px; -} +.hours-card { + h4 { + margin-bottom: 16px; + font-size: 16px; + font-weight: 700; + line-height: 1.2; + } -.contacts-card ul { - display: flex; - flex-direction: column; - gap: 16px; -} - -.contacts-card li strong { - display: block; - font-size: 24px; - line-height: 1; - margin-bottom: 8px; -} - -.contacts-card li span { - font-size: 20px; - line-height: 1.5; - color: $color-text-soft; -} - -.hours-card h4 { - font-size: 24px; - line-height: 1; - font-weight: 700; - margin-bottom: 16px; -} - -.hours-card p { - margin: 0; - font-size: 24px; - line-height: 1; + p { + margin: 0; + font-size: 16px; + line-height: 1.2; + } } .footer { - background: #12161a; - border-top: 1px solid rgba(255, 255, 255, 0.1); + border-top: 1px solid rgba(207, 23, 23, 0.1); + background: #121212; padding: 49px 0; + + &__top { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 32px; + margin-bottom: 32px; + } + + &__col { + h4 { + margin-bottom: 16px; + font-size: 16px; + font-weight: 700; + line-height: 1.2; + } + + p, + span, + a { + display: block; + color: $color-text-soft; + font-size: 14px; + line-height: 1.3; + } + + p { + margin-top: 16px; + line-height: 1.4; + } + + a + a, + span + span { + margin-top: 8px; + } + } + + &__socials { + display: flex; + gap: 12px; + + a { + display: inline-flex; + align-items: center; + justify-content: center; + width: 40px; + height: 40px; + border: 1px solid $color-border; + border-radius: 10px; + font-size: 14px; + font-weight: 700; + transition: transform 0.25s ease, border-color 0.25s ease, background-color 0.25s ease; + + &:hover { + transform: translateY(-2px); + border-color: rgba(207, 23, 23, 0.5); + background: rgba(207, 23, 23, 0.15); + } + } + } + + &__bottom { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + border-top: 1px solid rgba(255, 255, 255, 0.08); + padding-top: 24px; + + span, + a { + color: rgba(255, 255, 255, 0.7); + font-size: 14px; + line-height: 1.3; + } + + div { + display: flex; + gap: 24px; + } + } } -.footer__top { - display: grid; - grid-template-columns: repeat(4, minmax(0, 1fr)); - gap: 32px; - margin-bottom: 32px; +@include respond($bp-xxl) { + .hero { + &__content { + margin-left: 420px; + } + + h1 { + font-size: 64px; + line-height: 1.15; + } + } } -.footer__col h4 { - font-size: 24px; - line-height: 1; - font-weight: 700; - margin-bottom: 16px; +@include respond($bp-xl) { + .container { + padding: 0 20px; + } + + .header { + &__nav { + gap: 20px; + margin-right: 20px; + } + } + + .hero { + &__content { + margin-left: 280px; + max-width: 700px; + } + + h1 { + font-size: 56px; + } + + p { + font-size: 18px; + line-height: 1.6; + } + } + + .section__head { + h2 { + font-size: 40px; + } + + p { + font-size: 24px; + } + } + + .object-card__content { + h3 { + font-size: 30px; + } + } + + .booking { + h2 { + font-size: 42px; + } + } } -.footer__col p, -.footer__col span, -.footer__col a { - display: block; - font-size: 20px; - line-height: 1; - color: $color-text-soft; +@include respond($bp-lg) { + .header { + &__inner { + min-height: 64px; + } + + &__nav { + display: none; + } + } + + .hero { + min-height: auto; + padding: 120px 0 80px; + + &__content { + margin-left: 0; + max-width: 100%; + padding-top: 0; + } + + h1 { + max-width: 640px; + font-size: 48px; + line-height: 1.15; + } + + p { + max-width: 640px; + } + + &__actions { + flex-wrap: wrap; + } + } + + .highlights__grid, + .advantages__grid, + .services__grid, + .gallery__grid, + .reviews__grid, + .stats, + .footer__top { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .object-card, + .booking__wrap { + grid-template-columns: 1fr; + gap: 24px; + } + + .object-card--reverse { + .object-card__image, + .object-card__content { + order: initial; + } + } + + .section { + padding: 72px 0; + + &__head { + margin-bottom: 40px; + } + } + + .booking__contacts { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 24px; + } + + .contacts-card { + margin-bottom: 0; + } + + .footer__bottom { + flex-direction: column; + align-items: flex-start; + } } -.footer__col p { - margin-top: 16px; - line-height: 1.4; +@include respond($bp-md) { + .container { + padding: 0 16px; + } + + .btn { + width: 100%; + + &--small { + width: auto; + } + } + + .hero { + padding-top: 108px; + + h1 { + max-width: 100%; + font-size: 40px; + } + + p { + max-width: 100%; + font-size: 16px; + line-height: 1.5; + } + + &__tags { + li { + white-space: normal; + } + } + + &__actions { + .btn--ghost { + width: 100%; + } + } + } + + .section__head { + h2 { + font-size: 34px; + } + + p { + font-size: 20px; + line-height: 1.3; + } + } + + .highlights__grid, + .advantages__grid, + .services__grid, + .gallery__grid, + .reviews__grid, + .stats, + .footer__top, + .booking__contacts { + grid-template-columns: 1fr; + } + + .feature-card h3, + .object-card__content h3, + .service-card h3, + .booking h2 { + font-size: 28px; + } + + .stats strong { + font-size: 40px; + } } -.footer__col a + a, -.footer__col span + span { - margin-top: 8px; +@include respond($bp-sm) { + .header__inner { + gap: 12px; + } + + .logo { + width: 110px; + height: 24px; + } + + .btn { + &--small { + padding: 10px 16px; + font-size: 13px; + } + } + + .hero { + padding-top: 100px; + + h1 { + font-size: 34px; + } + + &__actions { + gap: 12px; + } + } + + .section { + padding: 64px 0; + + &__head { + h2 { + font-size: 32px; + } + + p { + font-size: 18px; + } + } + } + + .info-card, + .feature-card, + .service-card, + .review-card, + .stats article, + .contacts-card, + .hours-card, + .object-card__content { + padding: 24px; + } + + .object-card__image { + min-height: 260px; + } + + .footer__bottom { + div { + flex-direction: column; + gap: 12px; + } + } } -.footer__socials { - display: flex; - gap: 12px; -} +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + animation: none !important; + transition: none !important; + scroll-behavior: auto !important; + } -.footer__socials a { - width: 40px; - height: 40px; - border-radius: 10px; - border: 1px solid $color-border; - display: inline-flex; - align-items: center; - justify-content: center; - font-size: 14px; - font-weight: 700; -} + .hero__content > * { + opacity: 1 !important; + } -.footer__bottom { - border-top: 1px solid rgba(255, 255, 255, 0.08); - padding-top: 24px; - display: flex; - align-items: center; - justify-content: space-between; -} - -.footer__bottom span, -.footer__bottom a { - font-size: 20px; - line-height: 1; - color: rgba(255, 255, 255, 0.7); -} - -.footer__bottom div { - display: flex; - gap: 24px; + .scroll-reveal { + opacity: 1 !important; + transform: none !important; + } } diff --git a/assets/scss/_mixins.scss b/assets/scss/_mixins.scss index bbd0935..4f6067c 100644 --- a/assets/scss/_mixins.scss +++ b/assets/scss/_mixins.scss @@ -12,3 +12,9 @@ border-radius: $radius-md; box-shadow: $shadow-card; } + +@mixin respond($breakpoint) { + @media only screen and (max-width: $breakpoint) { + @content; + } +} diff --git a/assets/scss/_vars.scss b/assets/scss/_vars.scss index 8e1870a..4705b97 100644 --- a/assets/scss/_vars.scss +++ b/assets/scss/_vars.scss @@ -1,6 +1,12 @@ $container: 1400px; $container-padding: 24px; +$bp-xxl: 1600px; +$bp-xl: 1280px; +$bp-lg: 1024px; +$bp-md: 768px; +$bp-sm: 520px; + $font-main: "Segoe UI", "Segoe UI Variable", "Helvetica Neue", Arial, sans-serif; $color-bg: #121212; diff --git a/index.html b/index.html index 730542c..395f71f 100644 --- a/index.html +++ b/index.html @@ -308,5 +308,7 @@ + +