

/* Start:/local/templates/assimettric-avl_s3/components/bitrix/news/services/style.css?179361469034292*/
/*
 * Complex-компонент bitrix:news, шаблон "services" — страница «Услуги».
 * Figma (desktop): https://www.figma.com/design/o2pxpPyVyPKWw4xNWKOeBQ/asimetrik-avl--Copy-?node-id=1144-864
 * Figma (768): node-id=1242-1432, Figma (390): node-id=1242-972
 *
 * Этот style.css лежит в папке components/bitrix/news/services/ и подключается
 * автоматически Bitrix'ом при рендере ЛЮБОГО из двух режимов компонента
 * (news.php — каталог /uslugi/, detail.php — детальная /uslugi/<code>/),
 * поэтому здесь собраны стили статичных секций ОБЕИХ страниц: uslugi-hero,
 * uslugi-system, uslugi-process, uslugi-cta (каталог) и usluga-process,
 * usluga-cta (детальная). Секции с реальными данными (uslugi-directions,
 * usluga-hero/tasks/includes, usluga-projects) — в своих собственных
 * news.list/news.detail шаблонах со своим style.css.
 */

/* ==================== uslugi-hero ==================== */

.uslugi-hero {
  position: relative;
  overflow: hidden;
  background: var(--color-panel);
  padding-top: clamp(140px, 9.5vw, 182px);
  padding-bottom: clamp(64px, 10.9vw, 209px);
}

.uslugi-hero__media {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.uslugi-hero__media-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 78% 50%;
}

.uslugi-hero__media-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, var(--color-panel) 0%, var(--color-panel) 18%, rgba(28, 31, 36, 0.75) 40%, rgba(28, 31, 36, 0.15) 58%, transparent 70%);
}

.uslugi-hero__inner {
  position: relative;
  z-index: 1;
  max-width: 1920px;
  margin: 0 auto;
  padding: 0 clamp(20px, 7.6vw, 146px);
}

.uslugi-hero__eyebrow {
  display: flex;
  align-items: center;
  gap: 16px;
  font-size: clamp(12px, 0.78vw, 15px);
  font-weight: 500;
  line-height: 1.27;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--color-white);
}

.uslugi-hero__eyebrow-line {
  width: clamp(24px, 2.3vw, 44px);
  height: 1px;
  background: var(--color-white);
  flex-shrink: 0;
}

.uslugi-hero__title {
  max-width: 761px;
  margin: clamp(24px, 3.5vw, 67px) 0 0;
  font-weight: 600;
  font-size: clamp(24px, 3.02vw, 58px);
  line-height: 1.1;
  letter-spacing: -0.017em;
  text-transform: uppercase;
  color: var(--color-white);
}

.uslugi-hero__title--muted {
  display: block;
  color: var(--color-muted);
}

.uslugi-hero__text {
  max-width: 480px;
  margin-top: 30px;
}

.uslugi-hero__divider {
  display: block;
  width: 46px;
  height: 2px;
  background: var(--color-white);
  margin-bottom: 20px;
}

.uslugi-hero__desc {
  margin: 0;
  font-size: clamp(14px, 0.78vw, 15px);
  line-height: 1.7;
  color: var(--color-white);
}

.uslugi-hero__cta {
  display: inline-flex;
  align-items: center;
  gap: clamp(20px, 2.7vw, 52px);
  margin-top: clamp(20px, 2.2vw, 42px);
  padding-bottom: clamp(6px, 0.83vw, 16px);
  border: 0;
  border-bottom: 1px solid var(--color-white-40);
  background: none;
  cursor: pointer;
  color: var(--color-white);
  text-decoration: none;
  font-family: inherit;
  font-size: clamp(12px, 0.78vw, 15px);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  transition: gap 0.25s ease, border-color 0.25s ease;
}

.uslugi-hero__cta:hover {
  gap: clamp(26px, 3.4vw, 64px);
  border-color: rgba(255, 255, 255, 0.8);
}

.uslugi-hero__cta svg {
  width: clamp(14px, 1.15vw, 22px);
  height: auto;
  flex-shrink: 0;
}

@media (min-width: 761px) and (max-width: 1024px) {
  .uslugi-hero {
    padding-top: 141px;
    padding-bottom: 80px;
  }

  .uslugi-hero__eyebrow {
    font-size: 15px;
  }

  .uslugi-hero__eyebrow-line {
    width: 30px;
  }

  .uslugi-hero__title {
    max-width: 670px;
    font-size: 48px;
  }

  .uslugi-hero__text {
    max-width: 426px;
  }

  .uslugi-hero__desc {
    font-size: 18px;
    line-height: 1.67;
  }

  .uslugi-hero__cta {
    font-size: 14px;
  }
}

@media (max-width: 760px) {
  .uslugi-hero {
    padding-top: 140px;
    padding-bottom: 56px;
  }

  .uslugi-hero__eyebrow {
    font-size: 15px;
  }

  .uslugi-hero__eyebrow-line {
    width: 30px;
  }

  .uslugi-hero__title {
    max-width: none;
    font-size: 30px;
  }

  .uslugi-hero__text {
    max-width: none;
  }

  .uslugi-hero__desc {
    font-size: 14px;
    line-height: 1.71;
  }

  .uslugi-hero__cta {
    font-size: 14px;
  }
}

/* ==================== uslugi-system ==================== */

.uslugi-system {
  /* --color-panel (тёмный), не --color-panel-alt — проверено 1:1 пиксельным
     сэмплингом скриншота Figma (node-id=1144-864): вся страница /uslugi/
     кроме футера залита одним и тем же тёмным цветом, серых секций в
     середине страницы в макете нет. Ошибка была в исходной вёрстке
     дизайна, скопирована оттуда. */
  background: var(--color-panel);
  padding: clamp(56px, 6vw, 110px) 0;
}

.uslugi-system__inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: clamp(32px, 4vw, 77px);
  max-width: 1920px;
  margin: 0 auto;
  padding: 0 clamp(20px, 7.6vw, 146px);
}

.uslugi-system__text {
  flex: 1 1 480px;
  max-width: 587px;
}

.uslugi-system__title {
  margin: 0;
  font-weight: 600;
  font-size: clamp(24px, 3.02vw, 58px);
  line-height: 1.1;
  letter-spacing: -0.017em;
  text-transform: uppercase;
  color: var(--color-white);
}

.uslugi-system__title--muted {
  color: var(--color-muted);
}

.uslugi-system__desc {
  margin-top: clamp(28px, 2.9vw, 55px);
}

.uslugi-system__divider {
  display: block;
  width: clamp(24px, 2.4vw, 46px);
  height: 1px;
  background: var(--color-white);
  margin-bottom: clamp(16px, 1.6vw, 30px);
}

.uslugi-system__desc p {
  margin: 0;
  font-size: clamp(14px, 0.83vw, 16px);
  line-height: 1.62;
  color: var(--color-white);
}

.uslugi-system__placeholder {
  flex: 1 1 600px;
  max-width: 947px;
  min-height: 380px;
  border-radius: clamp(16px, 1.6vw, 28px);
  background: #000;
}

@media (min-width: 761px) and (max-width: 1024px) {
  .uslugi-system__inner {
    flex-direction: column;
    align-items: stretch;
    padding-left: 51px;
    padding-right: 51px;
  }

  .uslugi-system__text {
    max-width: none;
  }

  .uslugi-system__title {
    font-size: 48px;
  }

  .uslugi-system__desc p {
    font-size: 16px;
  }
}

@media (max-width: 760px) {
  .uslugi-system__inner {
    flex-direction: column;
    align-items: stretch;
    padding-left: 21px;
    padding-right: 21px;
  }

  .uslugi-system__text {
    max-width: none;
  }

  .uslugi-system__title {
    font-size: 30px;
  }

  .uslugi-system__desc p {
    font-size: 14px;
  }

  .uslugi-system__placeholder {
    max-width: none;
    width: 100%;
    min-height: 220px;
  }
}

/* ==================== uslugi-cta ==================== */

.uslugi-cta {
  background: var(--color-panel);
  padding: 0 0 clamp(56px, 6vw, 110px);
}

/*
 * .uslugi-cta__inner — обычный паддинг-контейнер страницы (как у всех
 * остальных секций, clamp(20px,7.6vw,146px) по бокам), а не сама карточка.
 * Раньше эти же боковые отступы отсутствовали и карточка (.uslugi-cta__banner)
 * растягивалась на все 1920px — по Figma (node-id=1144-823) карточка уже
 * (1623px на 1920px канвасе, т.е. с обычными боковыми полями страницы), как
 * у .company-cta__banner на /kompaniya/.
 */
.uslugi-cta__inner {
  max-width: 1920px;
  margin: 0 auto;
  padding: 0 clamp(20px, 7.6vw, 146px);
}

.uslugi-cta__banner {
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: clamp(24px, 3vw, 58px);
  min-height: clamp(320px, 22.24vw, 427px);
  padding: clamp(28px, 3vw, 58px) clamp(28px, 5.1vw, 99px);
  border-radius: clamp(20px, 1.8vw, 35px);
}

.uslugi-cta__media {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.uslugi-cta__media::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(17, 17, 19, 0.45) 0%, rgba(35, 39, 45, 0) 53%, rgba(35, 39, 45, 0.33) 83%);
}

.uslugi-cta__media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.uslugi-cta__text {
  position: relative;
  z-index: 1;
  max-width: 630px;
}

.uslugi-cta__title {
  margin: 0;
  font-weight: 600;
  font-size: clamp(28px, 3.02vw, 58px);
  line-height: 1.1;
  letter-spacing: -0.017em;
  text-transform: uppercase;
  color: var(--color-white);
}

.uslugi-cta__title span {
  display: block;
}

.uslugi-cta__title--muted {
  color: var(--color-muted);
}

.uslugi-cta__divider {
  display: block;
  width: 46px;
  height: 2px;
  margin: 30px 0 20px;
  background: var(--color-line-muted);
}

.uslugi-cta__desc {
  margin: 0;
  max-width: 516px;
  font-size: clamp(16px, 1.15vw, 22px);
  line-height: 1.6;
  color: var(--color-white);
}

.uslugi-cta__form {
  position: relative;
  z-index: 1;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: clamp(10px, 0.9vw, 17px);
  width: clamp(300px, 35.4vw, 679px);
  padding: clamp(22px, 2vw, 39px);
  border-radius: clamp(26px, 2.6vw, 50px);
  background: rgba(48, 52, 60, 0.83);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.uslugi-cta__form-title {
  margin: 0 0 20px;
  font-size: clamp(15px, 1.04vw, 20px);
  font-weight: 600;
  text-transform: uppercase;
  color: var(--color-white);
}

/*
 * Сетка 2×2 по Figma (node-id=1144-823): слева сверху вниз имя → тип
 * объекта → кнопка, справа телефон → текстовое поле (растянуто на высоту
 * двух левых строк). Раньше было flex-рядом (имя+телефон) + два full-width
 * поля ниже — не совпадало с макетом.
 */
.uslugi-cta__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(10px, 0.9vw, 17px);
}

.uslugi-cta__field--name { grid-column: 1; grid-row: 1; }
.uslugi-cta__field--phone { grid-column: 2; grid-row: 1; }
.uslugi-cta__field--type { grid-column: 1; grid-row: 2; }

.uslugi-cta__field--textarea {
  grid-column: 2;
  grid-row: 2 / span 2;
  display: flex;
  flex-direction: column;
}

.uslugi-cta__field {
  display: block;
  position: relative;
}

.uslugi-cta__field-label {
  position: absolute;
  left: clamp(14px, 1vw, 19px);
  top: clamp(11px, 0.9vw, 17px);
  font-size: clamp(12px, 0.73vw, 14px);
  color: var(--color-white-40);
  pointer-events: none;
  transition: opacity 0.15s ease;
}

.uslugi-cta__field input,
.uslugi-cta__field textarea {
  display: block;
  width: 100%;
  padding: clamp(20px, 1.6vw, 30px) clamp(14px, 1vw, 19px) clamp(6px, 0.5vw, 9px);
  border: 1px solid var(--color-border-muted);
  border-radius: clamp(7px, 0.59vw, 11.25px);
  background: transparent;
  color: var(--color-white);
  font-family: inherit;
  font-size: clamp(13px, 0.83vw, 15px);
  box-sizing: border-box;
}

.uslugi-cta__field input:focus,
.uslugi-cta__field textarea:focus {
  outline: none;
  border-color: var(--color-white);
}

.uslugi-cta__field input:not(:placeholder-shown) ~ .uslugi-cta__field-label,
.uslugi-cta__field input:focus ~ .uslugi-cta__field-label,
.uslugi-cta__field textarea:not(:placeholder-shown) ~ .uslugi-cta__field-label,
.uslugi-cta__field textarea:focus ~ .uslugi-cta__field-label {
  opacity: 0.6;
}

.uslugi-cta__field--textarea textarea {
  flex: 1;
  resize: none;
  padding-top: clamp(26px, 2.1vw, 40px);
}

.uslugi-cta__consent {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: clamp(11px, 0.68vw, 13px);
  line-height: 1.4;
  color: var(--color-white-60);
  cursor: pointer;
}

/*
 * Раньше был голый native-чекбокс с accent-color — на тёмном фоне непонятно,
 * отмечена галочка или нет (см. фидбек пользователя). Тот же паттерн
 * "скрытый input + своя коробка + галочка через ::after", что уже работает
 * в form.result.new/header_popup — гарантированно видимая галочка вне
 * зависимости от рендера чекбокса в конкретном браузере/ОС.
 */
.uslugi-cta__consent input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
}

.uslugi-cta__consent-box {
  flex-shrink: 0;
  width: 16px;
  height: 16px;
  margin-top: 1px;
  position: relative;
  border: 1px solid var(--color-white-40);
  border-radius: 4px;
  transition: background-color 0.2s ease, border-color 0.2s ease;
}

.uslugi-cta__consent-box::after {
  content: "";
  position: absolute;
  inset: 0;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 10' fill='none'%3E%3Cpath d='M1 5L4.5 8.5L11 1.5' stroke='%231C1F24' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center / 9px 7px;
  opacity: 0;
  transition: opacity 0.2s ease;
}

.uslugi-cta__consent input:checked ~ .uslugi-cta__consent-box {
  background-color: var(--color-white);
  border-color: var(--color-white);
}

.uslugi-cta__consent input:checked ~ .uslugi-cta__consent-box::after {
  opacity: 1;
}

.uslugi-cta__consent a {
  color: inherit;
  text-decoration: underline;
}

.uslugi-cta__submit {
  grid-column: 1;
  grid-row: 3;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: clamp(14px, 1.15vw, 22px) clamp(16px, 1.4vw, 27px);
  border: 0;
  border-radius: clamp(8px, 0.65vw, 12.5px);
  background: var(--color-white);
  color: var(--color-panel);
  font-family: inherit;
  font-size: clamp(13px, 0.8vw, 15px);
  font-weight: 600;
  text-transform: uppercase;
  cursor: pointer;
  transition: opacity 0.2s ease;
}

.uslugi-cta__submit:hover {
  opacity: 0.85;
}

.uslugi-cta__submit svg {
  width: 20px;
  height: auto;
  flex-shrink: 0;
}

.uslugi-cta__success {
  font-size: clamp(13px, 0.83vw, 15px);
  color: var(--color-white);
}

@media (min-width: 761px) and (max-width: 1024px) {
  .uslugi-cta__inner {
    padding-left: 51px;
    padding-right: 51px;
  }

  .uslugi-cta__banner {
    flex-direction: column;
    align-items: flex-start;
    padding: 32px;
  }

  .uslugi-cta__title {
    font-size: 48px;
  }

  .uslugi-cta__desc {
    font-size: 18px;
  }

  .uslugi-cta__form {
    width: 100%;
    max-width: 500px;
  }
}

@media (max-width: 760px) {
  .uslugi-cta__inner {
    padding-left: 21px;
    padding-right: 21px;
  }

  .uslugi-cta__banner {
    flex-direction: column;
    align-items: stretch;
    min-height: auto;
    padding: 24px;
    border-radius: 27px;
  }

  .uslugi-cta__title {
    font-size: 30px;
  }

  .uslugi-cta__desc {
    font-size: 17px;
    max-width: none;
  }

  .uslugi-cta__form {
    width: 100%;
    margin-top: 24px;
  }

  .uslugi-cta__grid {
    grid-template-columns: 1fr;
  }

  .uslugi-cta__field--name { grid-column: 1; grid-row: 1; }
  .uslugi-cta__field--phone { grid-column: 1; grid-row: 2; }
  .uslugi-cta__field--type { grid-column: 1; grid-row: 3; }

  .uslugi-cta__field--textarea {
    grid-column: 1;
    grid-row: 4;
  }

  .uslugi-cta__submit {
    grid-column: 1;
    grid-row: 5;
  }
}

/* ---------- Modal (успех/ошибка отправки формы) ---------- */

.uslugi-cta__modal {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.25s ease, visibility 0.25s ease;
}

.uslugi-cta__modal.is-open {
  opacity: 1;
  visibility: visible;
}

.uslugi-cta__modal-overlay {
  position: absolute;
  inset: 0;
  background: rgba(10, 11, 13, 0.7);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}

.uslugi-cta__modal-card {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  width: 100%;
  max-width: 380px;
  padding: clamp(32px, 4vw, 48px) clamp(24px, 3vw, 40px);
  background: rgba(48, 52, 60, 0.97);
  border-radius: clamp(28px, 2.6vw, 50px);
  text-align: center;
  transform: translateY(12px) scale(0.96);
  transition: transform 0.25s ease;
}

.uslugi-cta__modal.is-open .uslugi-cta__modal-card {
  transform: translateY(0) scale(1);
}

.uslugi-cta__modal-close {
  position: absolute;
  top: 16px;
  right: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border: none;
  border-radius: 50%;
  background: transparent;
  color: var(--color-white-60);
  cursor: pointer;
  transition: background-color 0.2s ease, color 0.2s ease;
}

.uslugi-cta__modal-close:hover {
  background: rgba(255, 255, 255, 0.1);
  color: var(--color-white);
}

.uslugi-cta__modal-close svg {
  width: 16px;
  height: 16px;
}

.uslugi-cta__modal-icon svg {
  display: none;
  width: 60px;
  height: 60px;
}

.uslugi-cta__modal.is-success .uslugi-cta__modal-icon-success {
  display: block;
}

.uslugi-cta__modal.is-error .uslugi-cta__modal-icon-error {
  display: block;
}

.uslugi-cta__modal-text {
  margin: 0;
  font-size: 16px;
  line-height: 1.5;
  color: var(--color-white);
}

/* ==================== usluga-process (детальная услуги) ==================== */

.usluga-process {
  background: var(--color-panel);
  padding: clamp(56px, 6vw, 110px) 0;
}

.usluga-process__inner {
  max-width: 1920px;
  margin: 0 auto;
  padding: 0 clamp(20px, 7.6vw, 146px);
}

.usluga-process__title {
  margin: 0;
  font-weight: 600;
  font-size: clamp(24px, 3.02vw, 58px);
  line-height: 1.1;
  letter-spacing: -0.017em;
  text-transform: uppercase;
  color: var(--color-white);
}

.usluga-process__title--muted {
  color: var(--color-muted);
}

.usluga-process__steps {
  display: flex;
  align-items: flex-start;
  gap: clamp(10px, 1.2vw, 24px);
  margin-top: clamp(32px, 3.4vw, 66px);
}

/* Карточка — тот же визуальный язык и тот же hover-паттерн, что и у
   .usluga-tasks__card (см. news.detail/services/style.css): фон-подложка,
   скруглённые углы, при наведении — приподнимается и обрастает голубым
   неоновым свечением по контуру. В исходном дизайне карточек тут не было
   (просто текст в колонку), сделано по отдельному запросу пользователя
   для единообразия с блоком "задачи, которые решает система". */
.usluga-process__step {
  position: relative;
  z-index: 0;
  flex: 1 1 0;
  display: flex;
  flex-direction: column;
  padding: clamp(20px, 2vw, 38px) clamp(18px, 1.8vw, 34px);
  border-radius: clamp(15px, 1.45vw, 28px);
  background: rgba(58, 63, 72, 0.25);
  border: 1px solid transparent;
  transition: background 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease, transform 0.3s ease;
}

.usluga-process__step:hover {
  background: rgba(74, 130, 196, 0.16);
  border-color: rgba(111, 179, 255, 0.4);
  box-shadow: 0 14px 36px -12px rgba(20, 60, 110, 0.55), 0 0 28px rgba(88, 166, 255, 0.28), inset 0 0 0 1px rgba(111, 179, 255, 0.12);
  transform: translateY(-4px);
}

/* Spotlight-курсор: см. комментарий у .services__card в
   news.list/company_stages/style.css — тот же паттерн. */
.usluga-process__step::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  border-radius: inherit;
  background: radial-gradient(260px circle at var(--spot-x, 50%) var(--spot-y, 50%), rgba(111, 179, 255, 0.18), transparent 70%);
  opacity: 0;
  transition: opacity 0.35s ease;
  pointer-events: none;
}

.usluga-process__step:hover::before {
  opacity: 1;
}

.usluga-process__step-index {
  font-size: clamp(18px, 1.46vw, 28px);
  font-weight: 600;
  text-transform: uppercase;
  color: var(--color-white);
  transition: color 0.3s ease, text-shadow 0.3s ease;
}

.usluga-process__step:hover .usluga-process__step-index {
  color: #6fb3ff;
  text-shadow: 0 0 8px rgba(111, 179, 255, 0.9), 0 0 22px rgba(88, 166, 255, 0.65);
}

.usluga-process__step-title {
  margin: clamp(12px, 1.1vw, 21px) 0 0;
  font-size: clamp(16px, 1.15vw, 22px);
  font-weight: 500;
  color: var(--color-white);
}

.usluga-process__step-desc {
  margin: clamp(8px, 0.9vw, 17px) 0 0;
  font-size: clamp(13px, 0.83vw, 16px);
  line-height: 1.5;
  color: var(--color-white-60);
}

.usluga-process__arrow {
  flex: 0 0 auto;
  align-self: center;
  margin-top: clamp(4px, 0.5vw, 10px);
  display: flex;
  width: clamp(8px, 0.7vw, 14px);
  color: var(--color-white-40);
}

.usluga-process__arrow svg {
  width: 100%;
  height: auto;
}

/*
 * На планшете/мобильном карточный вид (см. комментарий у .usluga-process__step
 * выше) не нужен — по фидбеку пользователя возвращаем оригинальный вид из
 * дизайна: карточки на всю ширину, центрированный текст, без фона/рамки,
 * стрелки между шагами (повёрнуты на 90°, т.к. раскладка теперь вертикальная).
 */
@media (min-width: 761px) and (max-width: 1024px) {
  .usluga-process__inner {
    padding-left: 51px;
    padding-right: 51px;
  }

  .usluga-process__title {
    font-size: 40px;
    text-align: center;
  }

  .usluga-process__steps {
    flex-direction: column;
    align-items: center;
    gap: 0;
  }

  .usluga-process__step {
    width: 100%;
    max-width: 520px;
    align-items: center;
    text-align: center;
    padding: 24px 0;
    background: none;
    border-color: transparent;
  }

  .usluga-process__step:hover {
    background: none;
    border-color: transparent;
    box-shadow: none;
    transform: none;
  }

  .usluga-process__arrow {
    display: flex;
    align-self: center;
    width: 14px;
    margin: 2px 0;
    transform: rotate(90deg);
  }
}

@media (max-width: 760px) {
  .usluga-process__inner {
    padding-left: 21px;
    padding-right: 21px;
  }

  .usluga-process__title {
    font-size: 26px;
    text-align: center;
  }

  .usluga-process__steps {
    flex-direction: column;
    align-items: center;
    gap: 0;
  }

  .usluga-process__step {
    width: 100%;
    max-width: 340px;
    align-items: center;
    text-align: center;
    padding: 18px 0;
    background: none;
    border-color: transparent;
  }

  .usluga-process__step:hover {
    background: none;
    border-color: transparent;
    box-shadow: none;
    transform: none;
  }

  .usluga-process__step-title {
    font-size: 18px;
  }

  .usluga-process__step-desc {
    font-size: 14px;
  }

  .usluga-process__arrow {
    display: flex;
    align-self: center;
    width: 12px;
    margin: 2px 0;
    transform: rotate(90deg);
  }
}

/* ==================== usluga-cta (детальная услуги) ==================== */

.usluga-cta {
  background: var(--color-panel);
  padding: 0 0 clamp(56px, 6vw, 110px);
}

/* .usluga-cta__inner — паддинг-контейнер страницы, см. комментарий у
   .uslugi-cta__inner выше. */
.usluga-cta__inner {
  max-width: 1920px;
  margin: 0 auto;
  padding: 0 clamp(20px, 7.6vw, 146px);
}

.usluga-cta__banner {
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: clamp(24px, 3vw, 58px);
  min-height: clamp(320px, 22.24vw, 427px);
  padding: clamp(28px, 3vw, 58px) clamp(28px, 5.1vw, 99px);
  border-radius: clamp(20px, 1.8vw, 35px);
}

.usluga-cta__media {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.usluga-cta__media::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(17, 17, 19, 0.45) 0%, rgba(35, 39, 45, 0) 53%, rgba(35, 39, 45, 0.33) 83%);
}

.usluga-cta__media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.usluga-cta__text {
  position: relative;
  z-index: 1;
  max-width: 630px;
}

.usluga-cta__title {
  margin: 0;
  font-weight: 600;
  font-size: clamp(28px, 3.02vw, 58px);
  line-height: 1.1;
  letter-spacing: -0.017em;
  text-transform: uppercase;
  color: var(--color-white);
}

.usluga-cta__title > span {
  display: block;
}

.usluga-cta__title--muted {
  color: var(--color-muted);
}

.usluga-cta__title--accent {
  color: var(--color-white);
}

.usluga-cta__divider {
  display: block;
  width: 46px;
  height: 2px;
  margin: 30px 0 20px;
  background: var(--color-line-muted);
}

.usluga-cta__desc {
  margin: 0;
  max-width: 516px;
  font-size: clamp(16px, 1.15vw, 22px);
  line-height: 1.6;
  color: var(--color-white);
}

.usluga-cta__form {
  position: relative;
  z-index: 1;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: clamp(10px, 0.9vw, 17px);
  width: clamp(300px, 35.4vw, 679px);
  padding: clamp(22px, 2vw, 39px);
  border-radius: clamp(26px, 2.6vw, 50px);
  background: rgba(48, 52, 60, 0.83);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.usluga-cta__form-title {
  margin: 0;
  font-size: clamp(15px, 1.04vw, 20px);
  font-weight: 600;
  text-transform: uppercase;
  color: var(--color-white);
}

/* Сетка 2×2 — см. комментарий у .uslugi-cta__grid выше, тот же макет. */
.usluga-cta__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(10px, 0.9vw, 17px);
}

.usluga-cta__field--name { grid-column: 1; grid-row: 1; }
.usluga-cta__field--phone { grid-column: 2; grid-row: 1; }
.usluga-cta__field--type { grid-column: 1; grid-row: 2; }

.usluga-cta__field--textarea {
  grid-column: 2;
  grid-row: 2 / span 2;
  display: flex;
  flex-direction: column;
}

.usluga-cta__field {
  display: block;
  position: relative;
}

.usluga-cta__field-label {
  position: absolute;
  left: clamp(14px, 1vw, 19px);
  top: clamp(11px, 0.9vw, 17px);
  font-size: clamp(12px, 0.73vw, 14px);
  color: var(--color-white-40);
  pointer-events: none;
  transition: opacity 0.15s ease;
}

.usluga-cta__field input,
.usluga-cta__field textarea {
  display: block;
  width: 100%;
  padding: clamp(20px, 1.6vw, 30px) clamp(14px, 1vw, 19px) clamp(6px, 0.5vw, 9px);
  border: 1px solid var(--color-border-muted);
  border-radius: clamp(7px, 0.59vw, 11.25px);
  background: transparent;
  color: var(--color-white);
  font-family: inherit;
  font-size: clamp(13px, 0.83vw, 15px);
  box-sizing: border-box;
}

.usluga-cta__field input:focus,
.usluga-cta__field textarea:focus {
  outline: none;
  border-color: var(--color-white);
}

.usluga-cta__field input:not(:placeholder-shown) ~ .usluga-cta__field-label,
.usluga-cta__field input:focus ~ .usluga-cta__field-label,
.usluga-cta__field textarea:not(:placeholder-shown) ~ .usluga-cta__field-label,
.usluga-cta__field textarea:focus ~ .usluga-cta__field-label {
  opacity: 0.6;
}

.usluga-cta__field--textarea textarea {
  flex: 1;
  resize: none;
  padding-top: clamp(26px, 2.1vw, 40px);
}

.usluga-cta__consent {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: clamp(11px, 0.68vw, 13px);
  line-height: 1.4;
  color: var(--color-white-60);
  cursor: pointer;
}

/* см. комментарий у .uslugi-cta__consent — тот же паттерн видимой галочки */
.usluga-cta__consent input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
}

.usluga-cta__consent-box {
  flex-shrink: 0;
  width: 16px;
  height: 16px;
  position: relative;
  border: 1px solid var(--color-white-40);
  border-radius: 4px;
  transition: background-color 0.2s ease, border-color 0.2s ease;
}

.usluga-cta__consent-box::after {
  content: "";
  position: absolute;
  inset: 0;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 10' fill='none'%3E%3Cpath d='M1 5L4.5 8.5L11 1.5' stroke='%231C1F24' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center / 9px 7px;
  opacity: 0;
  transition: opacity 0.2s ease;
}

.usluga-cta__consent input:checked ~ .usluga-cta__consent-box {
  background-color: var(--color-white);
  border-color: var(--color-white);
}

.usluga-cta__consent input:checked ~ .usluga-cta__consent-box::after {
  opacity: 1;
}

.usluga-cta__consent a {
  color: inherit;
  text-decoration: underline;
}

.usluga-cta__submit {
  grid-column: 1;
  grid-row: 3;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: clamp(14px, 1.15vw, 22px) clamp(16px, 1.4vw, 27px);
  border: 0;
  border-radius: clamp(8px, 0.65vw, 12.5px);
  background: var(--color-white);
  color: var(--color-panel);
  font-family: inherit;
  font-size: clamp(13px, 0.8vw, 15px);
  font-weight: 600;
  text-transform: uppercase;
  cursor: pointer;
  transition: opacity 0.2s ease;
}

.usluga-cta__submit:hover {
  opacity: 0.85;
}

.usluga-cta__submit svg {
  width: 20px;
  height: auto;
  flex-shrink: 0;
}

.usluga-cta__success {
  font-size: clamp(13px, 0.83vw, 15px);
  color: var(--color-white);
}

@media (min-width: 761px) and (max-width: 1024px) {
  .usluga-cta__inner {
    padding-left: 51px;
    padding-right: 51px;
  }

  .usluga-cta__banner {
    flex-direction: column;
    align-items: flex-start;
    padding: 32px;
  }

  .usluga-cta__title {
    font-size: 48px;
  }

  .usluga-cta__desc {
    font-size: 18px;
  }

  .usluga-cta__form {
    width: 100%;
    max-width: 500px;
  }
}

@media (max-width: 760px) {
  .usluga-cta__inner {
    padding-left: 21px;
    padding-right: 21px;
  }

  .usluga-cta__banner {
    flex-direction: column;
    align-items: stretch;
    min-height: auto;
    padding: 24px;
    border-radius: 27px;
  }

  .usluga-cta__title {
    font-size: 30px;
  }

  .usluga-cta__desc {
    font-size: 17px;
    max-width: none;
  }

  .usluga-cta__form {
    width: 100%;
    margin-top: 24px;
  }

  .usluga-cta__grid {
    grid-template-columns: 1fr;
  }

  .usluga-cta__field--name { grid-column: 1; grid-row: 1; }
  .usluga-cta__field--phone { grid-column: 1; grid-row: 2; }
  .usluga-cta__field--type { grid-column: 1; grid-row: 3; }

  .usluga-cta__field--textarea {
    grid-column: 1;
    grid-row: 4;
  }

  .usluga-cta__submit {
    grid-column: 1;
    grid-row: 5;
  }
}

/* ---------- Modal (успех/ошибка отправки формы) ---------- */

.usluga-cta__modal {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.25s ease, visibility 0.25s ease;
}

.usluga-cta__modal.is-open {
  opacity: 1;
  visibility: visible;
}

.usluga-cta__modal-overlay {
  position: absolute;
  inset: 0;
  background: rgba(10, 11, 13, 0.7);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}

.usluga-cta__modal-card {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  width: 100%;
  max-width: 380px;
  padding: clamp(32px, 4vw, 48px) clamp(24px, 3vw, 40px);
  background: rgba(48, 52, 60, 0.97);
  border-radius: clamp(28px, 2.6vw, 50px);
  text-align: center;
  transform: translateY(12px) scale(0.96);
  transition: transform 0.25s ease;
}

.usluga-cta__modal.is-open .usluga-cta__modal-card {
  transform: translateY(0) scale(1);
}

.usluga-cta__modal-close {
  position: absolute;
  top: 16px;
  right: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border: none;
  border-radius: 50%;
  background: transparent;
  color: var(--color-white-60);
  cursor: pointer;
  transition: background-color 0.2s ease, color 0.2s ease;
}

.usluga-cta__modal-close:hover {
  background: rgba(255, 255, 255, 0.1);
  color: var(--color-white);
}

.usluga-cta__modal-close svg {
  width: 16px;
  height: 16px;
}

.usluga-cta__modal-icon svg {
  display: none;
  width: 60px;
  height: 60px;
}

.usluga-cta__modal.is-success .usluga-cta__modal-icon-success {
  display: block;
}

.usluga-cta__modal.is-error .usluga-cta__modal-icon-error {
  display: block;
}

.usluga-cta__modal-text {
  margin: 0;
  font-size: 16px;
  line-height: 1.5;
  color: var(--color-white);
}

/* End */


/* Start:/local/templates/assimettric-avl_s3/components/bitrix/news.list/services_directions/style.css?179361469122441*/
/*
 * Block: uslugi-directions (страница «Услуги» — «Направления комплексных решений»)
 * news.list-компонент — карточки направлений из IBLOCK_ID=13 (реальные 10
 * услуг). Последние 2 карточки — широкие (--wide), как в дизайне (карточки
 * 09/10 занимают 2 колонки), независимо от того, какая именно услуга там
 * окажется по сортировке.
 * Figma (desktop): https://www.figma.com/design/o2pxpPyVyPKWw4xNWKOeBQ/asimetrik-avl--Copy-?node-id=1144-864
 */

.uslugi-directions {
  /* --color-panel-alt (серый) — по явному решению пользователя, сознательно
     отступая от текущего Figma-макета (там этот блок залит тем же тёмным
     цветом, что и вся страница) — блок с карточками услуг должен выделяться
     серым. */
  background: var(--color-panel-alt);
  padding: clamp(56px, 6vw, 110px) 0;
}

.uslugi-directions__inner {
  max-width: 1920px;
  margin: 0 auto;
  padding: 0 clamp(20px, 7.6vw, 146px);
}

.uslugi-directions__header {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: clamp(24px, 3vw, 58px);
}

/*
 * На "средних" desktop-ширинах (~1000-1200px) title+desc всё ещё вместе
 * шире контейнера впритык — flex-wrap:wrap переносил описание на новую
 * строку (фидбек пользователя, скриншот). На этих ширинах места достаточно,
 * чтобы оба поместились в ряд, если не переносить — запрещаем перенос
 * начиная с планшетного брейкпоинта проекта (1025px), ниже — обычное
 * поведение (стек в столбик), как и было.
 */
@media (min-width: 1025px) {
  .uslugi-directions__header {
    flex-wrap: nowrap;
  }

  .uslugi-directions__title {
    min-width: 0;
    flex-shrink: 1;
  }

  .uslugi-directions__desc {
    flex-shrink: 0;
  }

  /* На десктопе (title/desc в ряд) разделитель между ними смотрелся бы
     лишней палочкой посреди строки — он нужен только когда заголовок и
     описание стоят друг под другом (см. ниже, ≤1024px). */
  .uslugi-directions__divider {
    display: none;
  }
}

/*
 * ≤1024px: header идёт в столбик (унаследованный flex-wrap:wrap). По
 * макету здесь должны быть: разделитель под заголовком (как в остальных
 * блоках сайта, напр. .uslugi-hero__divider) и описание на всю ширину
 * блока, а не суженное до flex-basis 486px (фидбек пользователя,
 * скриншот).
 */
@media (max-width: 1024px) {
  .uslugi-directions__divider {
    display: block;
    width: 46px;
    height: 2px;
    background: var(--color-white);
    margin: 30px 0 20px;
  }

  .uslugi-directions__desc {
    flex: 1 1 100%;
    width: 100%;
  }
}

.uslugi-directions__title {
  flex: 1 1 480px;
  max-width: 850px;
  margin: 0;
  font-weight: 600;
  font-size: clamp(24px, 3.02vw, 58px);
  line-height: 1.1;
  letter-spacing: -0.017em;
  text-transform: uppercase;
  color: var(--color-white);
}

.uslugi-directions__title span {
  display: block;
}

.uslugi-directions__title--muted {
  color: var(--color-muted);
}

.uslugi-directions__desc {
  flex: 0 1 486px;
  margin: 0;
  font-size: clamp(14px, 0.83vw, 16px);
  line-height: 1.62;
  color: var(--color-white);
}

@media (min-width: 1025px) {
  .uslugi-directions__desc {
    margin-top: clamp(6px, 0.7vw, 13px);
  }
}

.uslugi-directions__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: clamp(16px, 1.7vw, 33px);
  margin-top: clamp(32px, 3.4vw, 66px);
}

/* Виден только на мобилке (≤639px), см. медиа-блок ниже — там же горизонтальный
   скролл у .uslugi-directions__grid, для которого этот индикатор и нужен. */
.uslugi-directions__scrollbar {
  display: none;
}

.uslugi-directions__card--wide {
  grid-column: span 2;
}

.uslugi-directions__card {
  position: relative;
  display: block;
  overflow: hidden;
  /* Высота увеличена (469.9 → 485) под 3-строчное описание по макету:
     .card-num/.card-body заякорены сверху (top:), .card-arrow — снизу
     (bottom:), оба в фиксированных px/vw, не зависящих от высоты
     карточки — поэтому просто более высокая карточка отодвигает низ-
     заякоренную стрелку вниз и освобождает место под 3-ю строку текста. */
  aspect-ratio: 381 / 485;
  border-radius: clamp(20px, 1.76vw, 34px);
  background: var(--color-card);
  color: inherit;
  text-decoration: none;
  border: 1px solid transparent;
  transition: transform 0.35s ease, border-color 0.35s ease, filter 0.35s ease;
}

/*
 * Тот же лёгкий неоновый hover, что и у .proekty-catalog__card на странице
 * «Проекты» (news.list/projects_catalog/style.css) — по запросу пользователя.
 * filter: drop-shadow, а не box-shadow — у карточки overflow:hidden
 * (обрезает фото по скруглённым углам), которое обрезало бы обычную тень
 * (drop-shadow не подчиняется overflow того же элемента).
 */
.uslugi-directions__card:hover {
  border-color: rgba(111, 179, 255, 0.55);
  filter: drop-shadow(0 0 10px rgba(88, 166, 255, 0.25));
  transform: translateY(-6px);
}

/* Spotlight-курсор поверх фото — у карточки overflow:hidden, поэтому
   градиент сам клипуется по скруглению без доп. усилий (в отличие от
   box-shadow, тут это не проблема: свечение не выходит за пределы inset:0).
   z-index:1, как у затемняющего ::after — ложится в тот же слой. */
.uslugi-directions__card::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: radial-gradient(220px circle at var(--spot-x, 50%) var(--spot-y, 50%), rgba(111, 179, 255, 0.22), transparent 70%);
  opacity: 0;
  transition: opacity 0.35s ease;
  pointer-events: none;
}

.uslugi-directions__card:hover::before {
  opacity: 1;
}

.uslugi-directions__card--wide {
  /* Тот же +15px по высоте, что и у обычных карточек, для одинаковой
     высоты ряда (масштабировано под удвоенную ширину: 795/470 → 795/485). */
  aspect-ratio: 795 / 485;
}

.uslugi-directions__card-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
  transition: transform 0.5s ease;
}

.uslugi-directions__card:hover .uslugi-directions__card-img {
  transform: scale(1.06);
}

.uslugi-directions__card::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 53%;
  background: linear-gradient(to top, var(--color-panel) 0%, var(--color-panel) 45%, transparent 100%);
  z-index: 1;
}

.uslugi-directions__card-num {
  position: absolute;
  z-index: 2;
  left: clamp(14px, 1.35vw, 26px);
  top: clamp(107px, 11.9vw, 228px);
  font-size: clamp(16px, 1.46vw, 28px);
  font-weight: 500;
  line-height: 1.34;
  text-transform: uppercase;
  color: var(--color-white);
}

.uslugi-directions__card--wide .uslugi-directions__card-num {
  font-size: clamp(18px, 1.54vw, 30px);
  font-weight: 600;
  top: clamp(150px, 14.5vw, 278px);
}

.uslugi-directions__card-body {
  position: absolute;
  z-index: 2;
  left: clamp(14px, 1.35vw, 26px);
  right: clamp(58px, 4.9vw, 94px);
  top: clamp(131px, 14.5vw, 279px);
  display: flex;
  flex-direction: column;
  gap: clamp(6px, 0.5vw, 10px);
}

.uslugi-directions__card--wide .uslugi-directions__card-body {
  top: clamp(155px, 17.1vw, 329px);
  right: clamp(80px, 6.5vw, 125px);
}

/*
 * line-clamp:2 + фиксированная height:2.6em (2 строки × line-height 1.3) —
 * у карточек с более длинным названием (2 строки вместо 1) весь текстовый
 * блок становился выше и снова заезжал на стрелку. Резервируем высоту под
 * 2 строки ВСЕГДА (не только как потолок для длинных), тогда однострочные
 * названия оставляют пустое место снизу вместо того, чтобы сдвигать текст
 * описания выше — высота блока одинаковая у всех карточек независимо от
 * длины названия.
 */
.uslugi-directions__card-title {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  height: 2.6em;
  font-size: clamp(14px, 1.04vw, 20px);
  font-weight: 500;
  line-height: 1.3;
  color: var(--color-white);
}

.uslugi-directions__card--wide .uslugi-directions__card-title {
  /* Название на широких карточках короче и естественно укладывается в
     1 строку — фиксированный резерв под 2 строки (height:2.6em у базового
     .uslugi-directions__card-title) здесь не нужен и только отодвигал
     текст описания ближе к стрелке. line-clamp:2 остаётся как потолок на
     случай длинного названия, просто без принудительной высоты. */
  height: auto;
  font-size: clamp(15px, 0.94vw, 18px);
  font-weight: 600;
  text-transform: uppercase;
}

/*
 * .uslugi-directions__card-arrow стоит на фиксированной позиции от низа
 * карточки, а высота текста раньше не ограничивалась — у карточек с более
 * длинным описанием текст заезжал в зону стрелки и обрезался ею (фидбог
 * пользователя, скриншот). line-clamp:2 — единая высота текста у всех
 * карточек независимо от длины реального описания, с многоточием у длинных.
 */
.uslugi-directions__card-text {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  overflow: hidden;
  font-size: clamp(12px, 0.78vw, 15px);
  line-height: 1.47;
  color: var(--color-white-60);
}

.uslugi-directions__card-text p {
  margin: 0;
}

.uslugi-directions__card-arrow {
  position: absolute;
  z-index: 2;
  right: clamp(14px, 1.35vw, 26px);
  bottom: clamp(17px, 1.35vw, 24px);
  display: flex;
  width: clamp(28px, 2.08vw, 40px);
  height: clamp(28px, 2.08vw, 40px);
  color: var(--color-white);
  transition: transform 0.25s ease;
}

.uslugi-directions__card-arrow svg {
  width: 100%;
  height: 100%;
}

.uslugi-directions__card-arrow svg rect {
  transition: opacity 0.25s ease;
}

.uslugi-directions__card:hover .uslugi-directions__card-arrow {
  transform: translate(3px, -3px);
}

.uslugi-directions__card:hover .uslugi-directions__card-arrow svg rect {
  opacity: 1;
}

/*
 * top-позиционирование num/body рассчитано под desktop-пропорции карточки
 * (clamp упирается в минимум уже на ноутбучных ширинах) — на планшете/
 * мобильном карточки гораздо выше относительно ширины, и текст оказывался
 * примерно по центру фото, там, где ещё нет затемнения от ::after (низ 53%
 * карточки). На этих брейкпоинтах переключаем num+body с независимого
 * top/bottom-позиционирования на общий bottom-анкорнутый flex-контейнер
 * (.card-content) — так они всегда стоят друг над другом естественным
 * потоком, независимо от длины текста, и остаются в затемнённой зоне —
 * по фидбеку пользователя.
 */
@media (max-width: 1024px) {
  .uslugi-directions__card-content {
    position: absolute;
    z-index: 2;
    left: 14px;
    right: 14px;
    /* выше стрелки-уголка (bottom 17px + высота 28px + зазор) — на полной
       ширине карточки текст и стрелка стоят друг над другом, не рядом */
    bottom: 56px;
    display: flex;
    flex-direction: column;
    gap: 6px;
  }

  .uslugi-directions__card-num,
  .uslugi-directions__card-body {
    position: static;
  }
}

/*
 * Порог перехода на сетку 2 колонки — по фидбеку пользователя, не совпадает
 * с общими типографическими брейкпоинтами блока (761/760 — см. ниже): при
 * 2 колонках раньше 600-640px карточка на реальном узком телефоне сжималась
 * до ~180px, читать её нельзя. До 640px — 1 колонка (карточка на всю
 * ширину, как в исходном дизайне), с 640 до 1024 — 2 колонки, max-width
 * 300px на карточку (широкие карточки 09/10 занимают обе колонки).
 */
@media (min-width: 640px) and (max-width: 1024px) {
  .uslugi-directions__grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .uslugi-directions__card {
    max-width: 300px;
  }

  .uslugi-directions__card--wide {
    max-width: none;
  }
}

/*
 * gap уменьшен до 12px только в этом узком диапазоне (640-760px, тот же
 * порог, что и у общих mobile-стилей блока ниже) — при 2 колонках на этих
 * ширинах базовый clamp(16px,1.7vw,33px) был всё ещё многовато для узкой
 * карточки. На ≤639px (гориз. скролл) gap не используется — там отступ
 * между карточками через margin-right (см. выше), на 761-1024 (планшет)
 * gap не трогаем — там базовый clamp уже даёт разумное значение.
 */
@media (min-width: 640px) and (max-width: 760px) {
  .uslugi-directions__grid {
    gap: 12px;
  }
}

/*
 * По макету на мобилке карточки — горизонтальный скролл в один ряд, а не
 * "стопка" на всю ширину (фидбек пользователя). display:flex + overflow-x:
 * auto + scroll-snap, тот же паттерн, что уже использовался для мобильных
 * пилюль-фильтров на /portfolio/ (до перехода на select) — простое и
 * надёжное решение без подключения слайдер-библиотеки ради одного блока
 * без остальной механики свайпера (стрелки/точки/autoplay) тут не нужны.
 */
@media (max-width: 639px) {
  /*
   * padding-left/right на самом .uslugi-directions__grid (overflow-x:auto +
   * display:flex) НЕ создаёт отступ перед первой карточкой — известная
   * особенность Chrome/WebKit: leading-padding скролл-контейнера с flex не
   * резервирует видимое место в состоянии scrollLeft:0 (реально проверено
   * через getBoundingClientRect — карточка вплотную к краю экрана несмотря
   * на paddingLeft:21px в computed style). Обходной приём — тот же, что
   * применяют для этого известного бага повсеместно: "спейсер" за счёт
   * ::before/::after самого flex-контейнера (генерируемый контент тоже
   * становится flex-item'ом и получает реальное место в раскладке, в
   * отличие от padding). gap тут не используется (не совместим со
   * спейсерами без лишнего зазора по краям) — отступ между карточками
   * через margin-right на самих карточках.
   */
  .uslugi-directions__grid {
    display: flex;
    grid-template-columns: none;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    /* gap:0 — базовый clamp(16px,1.7vw,33px) у .uslugi-directions__grid
       (для grid-раскладки на десктопе/планшете) работает и для flex тоже;
       отступ между карточками здесь через margin-right на самих карточках
       (см. ниже), gap не нужен и без обнуления складывался поверх spacer'а
       ::before, сдвигая первую карточку дальше нужных 21px. */
    gap: 0;
    margin-left: -21px;
    margin-right: -21px;
    scrollbar-width: none;
  }

  .uslugi-directions__grid::-webkit-scrollbar {
    display: none;
  }

  /*
   * scroll-snap-align:start ОБЯЗАТЕЛЕН и на спейсере — без него
   * scroll-snap-type:mandatory на контейнере считает спейсер невалидной
   * точкой прилипания и молча доскралливает до первой карточки ещё ДО
   * первой отрисовки (проверено: без этого правила первая карточка
   * рендерится вплотную к краю экрана, спейсер просто "проскроллен" в
   * исходном состоянии, хотя его собственный размер в layout корректен).
   */
  .uslugi-directions__grid::before,
  .uslugi-directions__grid::after {
    content: '';
    flex: 0 0 21px;
    scroll-snap-align: start;
  }

  .uslugi-directions__card--wide,
  .uslugi-directions__card {
    flex: 0 0 auto;
    width: 300px;
    aspect-ratio: 348 / 429;
    max-width: none;
    margin-right: 12px;
    scroll-snap-align: start;
  }

  .uslugi-directions__card:last-child {
    margin-right: 0;
  }

  /*
   * В горизонтальном скролле карточки справа изначально стоят за пределами
   * видимой области по горизонтали — анимация появления [data-reveal]
   * (сдвиг+прозрачность до пересечения с viewport) на мобилке смотрелась
   * рвано/непредсказуемо при горизontal-скролле (карточки то появлялись
   * с задержкой, то дёргались). По фидбеку пользователя — на мобилке
   * убрать анимацию у карточек этого блока, показывать сразу.
   */
  .uslugi-directions__card--wide[data-reveal],
  .uslugi-directions__card[data-reveal] {
    opacity: 1;
    transform: none;
    transition: none;
  }

  /*
   * Кастомный индикатор скролла — нативный scrollbar у .uslugi-directions__grid
   * скрыт (см. выше), поэтому без этого элемента непонятно, что карточки
   * можно проскроллить вбок (фидбек пользователя). Ширина/позиция "бегунка"
   * считаются в script.js (data-directions-scrollbar-thumb) по
   * scrollLeft/scrollWidth скролл-контейнера.
   */
  .uslugi-directions__scrollbar {
    display: block;
    position: relative;
    height: 3px;
    margin-top: 20px;
    border-radius: 999px;
    background: var(--color-card);
    overflow: hidden;
  }

  .uslugi-directions__scrollbar-thumb {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    border-radius: inherit;
    background: var(--color-white-60);
  }
}

@media (min-width: 761px) and (max-width: 1024px) {
  .uslugi-directions__inner {
    padding-left: 51px;
    padding-right: 51px;
  }

  .uslugi-directions__title {
    font-size: 48px;
  }

  .uslugi-directions__desc {
    font-size: 16px;
  }
}

@media (max-width: 760px) {
  .uslugi-directions__inner {
    padding-left: 21px;
    padding-right: 21px;
  }

  .uslugi-directions__title {
    font-size: 30px;
  }

  .uslugi-directions__desc {
    font-size: 14px;
  }

  .uslugi-directions__card-title {
    font-size: 16px;
  }

  .uslugi-directions__card-text {
    font-size: 13px;
  }
}

/* End */


/* Start:/local/templates/assimettric-avl_s3/components/bitrix/news.list/uslugi_process/style.css?17936146915975*/
.uslugi-process {
  background: var(--color-panel);
  padding: clamp(56px, 6vw, 110px) 0;
}

.uslugi-process__inner {
  display: flex;
  flex-wrap: wrap;
  gap: clamp(24px, 3vw, 58px);
  max-width: 1920px;
  margin: 0 auto;
  padding: 0 clamp(20px, 7.6vw, 146px);
}

.uslugi-process__eyebrow {
  flex: 0 0 auto;
  max-width: 215px;
  font-size: clamp(16px, 1.25vw, 24px);
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: -0.02em;
  text-transform: uppercase;
  color: var(--color-white);
}

.uslugi-process__steps {
  flex: 1 1 700px;
  display: flex;
  align-items: stretch;
  gap: clamp(10px, 1.2vw, 24px);
}

.uslugi-process__step {
  position: relative;
  z-index: 0;
  flex: 1 1 0;
  display: flex;
  flex-direction: column;
  padding: clamp(18px, 1.9vw, 36px) clamp(16px, 1.8vw, 35px);
  border-radius: clamp(20px, 2.1vw, 40px);
  background: transparent;
  border: 1px solid transparent;
  transition: background-color 0.3s ease, border-color 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease;
}

/* Spotlight-курсор: см. комментарий у .services__card в
   news.list/company_stages/style.css — тот же паттерн. */
.uslugi-process__step::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  border-radius: inherit;
  background: radial-gradient(260px circle at var(--spot-x, 50%) var(--spot-y, 50%), rgba(111, 179, 255, 0.16), transparent 70%);
  opacity: 0;
  transition: opacity 0.35s ease;
  pointer-events: none;
}

.uslugi-process__step:hover::before {
  opacity: 1;
}

.uslugi-process__step--active {
  background: var(--color-card);
}

/* Лёгкая неоновая подсветка — единый по сайту рецепт (см. память
   "Neon hover intensity"): тонкий glow вместо плоской тёмной тени, работает
   и поверх активного (--active) шага. */
.uslugi-process__step:hover {
  background: rgba(74, 130, 196, 0.1);
  border-color: rgba(111, 179, 255, 0.55);
  box-shadow: 0 0 14px rgba(88, 166, 255, 0.22);
  transform: translateY(-4px);
}

.uslugi-process__step-index {
  font-size: clamp(18px, 1.46vw, 28px);
  font-weight: 600;
  text-transform: uppercase;
  color: var(--color-white);
  transition: color 0.3s ease, text-shadow 0.3s ease;
}

.uslugi-process__step:hover .uslugi-process__step-index {
  color: #6fb3ff;
  text-shadow: 0 0 6px rgba(111, 179, 255, 0.6);
}

.uslugi-process__step-title {
  margin: clamp(12px, 1.1vw, 21px) 0 0;
  font-size: clamp(15px, 1.04vw, 20px);
  font-weight: 500;
  color: var(--color-white);
}

.uslugi-process__step-desc {
  margin: clamp(6px, 0.75vw, 14px) 0 0;
  font-size: clamp(13px, 0.83vw, 16px);
  line-height: 1.43;
  color: var(--color-white-60);
}

.uslugi-process__arrow {
  flex: 0 0 auto;
  align-self: center;
  display: flex;
  width: clamp(8px, 0.7vw, 14px);
  color: var(--color-white-40);
}

.uslugi-process__arrow svg {
  width: 100%;
  height: auto;
}

/*
 * На планшете/мобильном в макете (node-id=1273-1236) — не сетка карточек,
 * а простой центрированный список: эйбрау становится крупным заголовком
 * на всю ширину, шаги — без фона/карточек, друг под другом, разделены
 * стрелками (повёрнуты на 90°, т.к. раскладка вертикальная). По фидбеку
 * пользователя — тот же паттерн, что и в usluga-process (детальная услуги).
 */
@media (min-width: 761px) and (max-width: 1024px) {
  .uslugi-process__inner {
    flex-direction: column;
    align-items: center;
    padding-left: 51px;
    padding-right: 51px;
  }

  .uslugi-process__eyebrow {
    max-width: none;
    width: 100%;
    text-align: center;
    font-size: 40px;
    line-height: 1.2;
  }

  .uslugi-process__steps {
    flex-direction: column;
    align-items: center;
    gap: 24px;
  }

  .uslugi-process__step {
    width: 100%;
    max-width: 480px;
    align-items: center;
    text-align: center;
    background: none;
  }

  .uslugi-process__step--active {
    background: none;
  }

  .uslugi-process__step:hover {
    background: none;
    border-color: transparent;
    box-shadow: none;
    transform: none;
  }

  .uslugi-process__step-index {
    font-size: 28px;
  }

  .uslugi-process__step-title {
    font-size: 24px;
  }

  .uslugi-process__step-desc {
    font-size: 18px;
  }

  .uslugi-process__arrow {
    display: flex;
    align-self: center;
    width: 14px;
    transform: rotate(90deg);
  }
}

@media (max-width: 760px) {
  .uslugi-process__inner {
    flex-direction: column;
    align-items: center;
    padding-left: 21px;
    padding-right: 21px;
  }

  .uslugi-process__eyebrow {
    max-width: none;
    width: 100%;
    text-align: center;
    font-size: 30px;
    line-height: 1.27;
    letter-spacing: -1px;
  }

  .uslugi-process__steps {
    flex-direction: column;
    align-items: center;
    gap: 24px;
  }

  .uslugi-process__step {
    width: 100%;
    max-width: 340px;
    align-items: center;
    text-align: center;
    background: none;
  }

  .uslugi-process__step--active {
    background: none;
  }

  .uslugi-process__step:hover {
    background: none;
    border-color: transparent;
    box-shadow: none;
    transform: none;
  }

  .uslugi-process__step-index {
    font-size: 28px;
  }

  .uslugi-process__step-title {
    font-size: 24px;
  }

  .uslugi-process__step-desc {
    font-size: 18px;
  }

  .uslugi-process__arrow {
    display: flex;
    align-self: center;
    width: 14px;
    transform: rotate(90deg);
  }
}

/* End */
/* /local/templates/assimettric-avl_s3/components/bitrix/news/services/style.css?179361469034292 */
/* /local/templates/assimettric-avl_s3/components/bitrix/news.list/services_directions/style.css?179361469122441 */
/* /local/templates/assimettric-avl_s3/components/bitrix/news.list/uslugi_process/style.css?17936146915975 */
