/*
 * Mobile content visibility fix.
 * В родительской теме блоки с data-sal скрыты через opacity:0 до инициализации JS.
 * Если основной JS-чанк не загрузился или сломался, на мобильных получается пустая страница.
 */
body.ehs-sal-fallback [data-sal|="fade"],
body.ehs-js-error [data-sal|="fade"],
body.sal-disabled [data-sal|="fade"] {
  opacity: 1 !important;
  visibility: visible !important;
}

body.ehs-sal-fallback [data-sal],
body.ehs-js-error [data-sal] {
  transform: none !important;
}

@media (max-width: 767px) {
  body.ehs-sal-fallback [data-sal],
  body.ehs-js-error [data-sal] {
    transition-delay: 0s !important;
  }

  .project-cost__grid,
  .grid,
  .swiper-container__five-block,
  .swiper-wrapper__five-block {
    min-width: 0;
  }

  img,
  video,
  iframe,
  svg {
    max-width: 100%;
  }
}


/*
 * Swiper services: иногда в родительских стилях используется кастомный cursor через url(),
 * и если файл курсора недоступен, при наведении на пункт меню услуг появляется «битая картинка».
 * Принудительно задаем стандартный указатель.
 */
.swiper-services__container a,
.swiper-services__container .swiper-slide,
.swiper-services__container .swiper-wrapper__items > li,
.swiper-services__container .swiper-wrapper__items a {
  cursor: pointer !important;
}

/* v1.0.7: отключаем счетчик слайдов в навигации блока услуг. */
.swiper-services__container .swiper-pagination__nav,
.swiper-services__container .swiper-pagination-custom {
  display: none !important;
}

/* v1.0.7: отключаем изображения у элементов (оставляем только названия). */
.swiper-services__container .swiper-slide__img,
.swiper-services__container .swiper-slide__img img,
.swiper-services__container .swiper-lazy-preloader {
  display: none !important;
}

.swiper-services__container .swiper-slide__link {
  padding-top: 0 !important;
}

/*
 * v1.0.6: Swiper services fallback.
 * Если Swiper не инициализировался, превращаем блок в горизонтальный скролл,
 * добавляем drag-to-scroll и сохраняем ховер-превью изображения.
 */
.ehs-services-fallback .swiper-wrapper {
  display: flex !important;
  flex-wrap: nowrap !important;
  overflow-x: auto !important;
  overflow-y: hidden !important;
  scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch;
  gap: 27px;
  padding-bottom: 10px;
}

.ehs-services-fallback .swiper-wrapper::-webkit-scrollbar {
  display: none;
}

.ehs-services-fallback .swiper-slide {
  flex: 0 0 auto !important;
}

.ehs-services-fallback .swiper-slide__item {
  position: relative;
}

.ehs-services-fallback .swiper-slide__link {
  position: relative;
  display: block;
}

/* Фигура с изображением в карточке. */
.ehs-services-fallback .swiper-slide__link .swiper-slide__img {
  transition: var(--transition-base);
  opacity: 0;
  visibility: hidden;
  z-index: 2;
  pointer-events: none;
}

.ehs-services-fallback .swiper-slide__link:hover .swiper-slide__img {
  opacity: 1;
  visibility: visible;
  transform: translateY(-65%);
}

.ehs-services-fallback .swiper-button-prev__services:before {
  transition: var(--transition-base);
  content: url("data:image/svg+xml;charset=utf-8,%3Csvg width='50' height='8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.995 3.437a.5.5 0 000 .707l3.182 3.182a.5.5 0 10.707-.707L2.056 3.79 4.884.962a.5.5 0 10-.707-.707L.995 3.437zm48.236-.147H1.349v1H49.23v-1z' fill='%23A3ADC1'/%3E%3C/svg%3E");
}

.ehs-services-fallback .swiper-button-prev__services:hover:before {
  content: url("data:image/svg+xml;charset=utf-8,%3Csvg width='50' height='8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.995 3.437a.5.5 0 000 .707l3.182 3.182a.5.5 0 10.707-.707L2.056 3.79 4.884.962a.5.5 0 10-.707-.707L.995 3.437zm48.236-.147H1.349v1H49.23v-1z' fill='%234FBEFD'/%3E%3C/svg%3E");
}

.ehs-services-fallback .swiper-button-next__services:before {
  transition: var(--transition-base);
  content: url("data:image/svg+xml;charset=utf-8,%3Csvg width='49' height='8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M48.783 4.144a.5.5 0 000-.707L45.6.255a.5.5 0 10-.707.707l2.828 2.828-2.828 2.829a.5.5 0 00.707.707l3.182-3.182zM.547 4.29h47.882v-1H.547v1z' fill='%23A3ADC1'/%3E%3C/svg%3E");
}

.ehs-services-fallback .swiper-button-next__services:hover:before {
  content: url("data:image/svg+xml;charset=utf-8,%3Csvg width='49' height='8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M48.783 4.144a.5.5 0 000-.707L45.6.255a.5.5 0 10-.707.707l2.828 2.828-2.828 2.829a.5.5 0 00.707.707l3.182-3.182zM.547 4.29h47.882v-1H.547v1z' fill='%234FBEFD'/%3E%3C/svg%3E");
}

/* Удобство drag-to-scroll. */
.ehs-services-fallback .swiper-wrapper.ehs-dragging {
  cursor: grabbing !important;
}


/* Mobile menu click fallback. */
.main-menu[aria-expanded="false"] {
  pointer-events: none;
}

.main-menu[aria-expanded="true"],
body.ehs-mobile-menu-open .main-menu {
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto;
}

body.ehs-mobile-menu-open .main-menu > .container {
  transform: none !important;
}

body.ehs-mobile-menu-open {
  overflow: hidden;
}

body.ehs-mobile-menu-open .sticky-header {
  transform: none !important;
}

body.ehs-mobile-menu-open .sticky-header,
body.ehs-mobile-menu-open .sticky-header.main-menu--open {
  background: #4fbefd !important;
  box-shadow: none !important;
  border-bottom: none !important;
}

body.ehs-mobile-menu-open .sticky-header__hide {
  opacity: 0 !important;
  pointer-events: none !important;
}

body.ehs-mobile-menu-open .menu-toggle {
  border-color: #fff !important;
  color: #fff !important;
}

body.ehs-mobile-menu-open .menu-toggle .burger {
  display: none !important;
}

body.ehs-mobile-menu-open .menu-toggle .cross {
  display: block !important;
}

@media (max-width: 767px) {
  .main-menu {
    z-index: 25;
    padding-top: 76px;
  }

  body.ehs-mobile-menu-open .main-menu {
    min-height: 100vh;
    min-height: 100dvh;
  }
}


/* v1.0.2: fixed viewport position for opened mobile menu.
 * В родительских стилях .main-menu имеет position: fixed, но без top/left/right/bottom.
 * Из-за этого браузер может оставлять меню в статической позиции документа: после прокрутки
 * оно открывается в верхней части страницы, а не в видимой области экрана.
 */
html.ehs-mobile-menu-open,
body.ehs-mobile-menu-open {
  overflow: hidden !important;
}

body.ehs-mobile-menu-open .main-menu {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: 100vw !important;
  height: 100vh !important;
  height: 100dvh !important;
  max-height: 100vh !important;
  max-height: 100dvh !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  z-index: 29 !important;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}

@media (max-width: 767px) {
  body.ehs-mobile-menu-open .main-menu {
    padding-top: calc(76px + env(safe-area-inset-top, 0px)) !important;
  }
}
