/* Технология производства. Figma: Screen 3/pc 611:3889 (1920×927, top 2694),
   Screen 3/mb 611:4528 (390×1943, top 3004).
   pc: слайд-фото 611:3916 (686×927, left 261), слайд-текст 611:3891 (686×927, left 973) → gap 26. */

.tech {
  padding-top: 48px;             /* 2694 − 2646 (конец секции каталога) */
  overflow: hidden;
}

/* Блоб Ellipse 11 (611:3890): 732×839, left 947, top 54 → центр (1313, 473.5) на странице.
   SVG 1532×1639 (inset −47.68% / −54.64%), центр (766, 819.5). */
.tech__blob {
  left: 50%;
  top: -346px;                   /* 473.5 − 819.5 */
  width: 1532px;
  height: 1639px;
  margin-left: -413px;           /* (1313 − 960) − 766 */
}

.tech__slides {
  display: flex;
  gap: 26px;                     /* 973 − (261 + 686) */
}

.tech__slide {
  position: relative;
  flex: 0 0 686px;
  width: 686px;
  min-height: 927px;
  border-radius: var(--r-card);
  background: var(--white);
  overflow: hidden;
}

/* Слайд с текстом — вертикальный поток. Раньше заголовок, цепочка этапов, подзаголовок и
   base-карточки стояли каждый на своём top внутри слайда фиксированной высоты 927:
   удлинение любого текста из менеджера накладывало его на следующий блок, а пятая
   карточка легла бы поверх четвёртой. Зазоры выведены из замеров, не из координат. */
.tech__slide--text {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: 54px 54px 24px;
}

/* --- Слайд с фото (611:3916) --- */
.tech__photo {
  position: absolute;
  left: 0;
  top: 0;
  width: 686px;
  height: 926px;
  overflow: hidden;
}

/* Кроп по Figma: w 102.09%, h 100.86%, left −1.05%, top −0.86% */
.tech__photo img {
  position: absolute;
  left: -1.05%;
  top: -0.86%;
  width: 102.09%;
  height: 100.86%;
  max-width: none;
}

/* Слой затемнения rgba(0,0,0,0.2) (611:3917) */
.tech__photo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.2);
}

/* Слой 611:3918 — background blur. Figma объявляет его на весь прямоугольник 686×926,
   но собственный PNG-экспорт узла 611:3916 показывает размытие только ниже y=545
   (порядная сверка с экспортом: до 545 совпадает резкий вариант, с 546 — размытый).
   Радиус: Figma blur 10.15 = Gaussian σ 5.075, а CSS blur(R) задаёт именно σ →
   blur(5.075px) (минимум ошибки в замере: mean 0.81).

   Жёсткая граница макета снята по просьбе заказчика (2026-09-16): обрезка по y=545
   давала видимую линию поперёк снимка. Слой прижат к низу и занимает нижние 60%
   карточки, а маска гасит его сверху — размытие нарастает от нуля примерно на середине
   карточки до полного к низу. Маска работает именно с `backdrop-filter`: прозрачные
   участки маски не пропускают эффект, поэтому радиус остаётся макетным, а меняется
   доля эффекта. */
.tech__blur {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 60%;
  background: rgba(0, 0, 0, 0.01);
  backdrop-filter: blur(5.075px);
  -webkit-mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 55%);
  mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 55%);
}

/* Подложка под текстом слайда. В макете снимок тёмно-серый, и белый текст читался на
   нём сам по себе. Заказчик прислал светлый кадр (2026-09-16): контраст белого текста
   упал до 1.7:1 в среднем и 1.2:1 на бликах при норме 4.5:1 — текст пропал.
   Градиент прижат к низу и выше текста уходит в прозрачность, поэтому верх фотографии
   остаётся нетронутым. Привязка к низу, а не `top` из макета: текст прижат к низу
   карточки и растёт вверх, поэтому слой размытия с фиксированным top длинный текст
   уже не накрывал — заголовок оказывался над ним на светлом фоне.

   0.45 — минимум, проходящий обе нормы. Замер по отрендеренным пикселям под текстом,
   по самым светлым 5% фона: без подложки 1.87:1 и 2.01:1; 0.25 → 3.27 и 3.50;
   0.35 → 4.20 и 4.48 (основной текст не дотягивает); 0.45 → 5.57 и 5.90; 0.58 → 8.09
   и 8.47, но снимок уже выглядит мутным. */
.tech__slide--photo::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  border-radius: var(--r-card);
  background: linear-gradient(
    to bottom,
    rgba(46, 123, 176, 0) 12%,
    rgba(46, 123, 176, 0.225) 46%,
    rgba(46, 123, 176, 0.225) 100%
  );
}

/* Текст-блок слайда с фото. Слайд — flex-колонка с прижатым к низу текстом: раньше блок
   стоял на top 549 внутри слайда высотой 927, и длинная легенда уезжала за границу
   карточки вместо того, чтобы её растянуть.
   Отступ снизу равен левому (54px): в макете блок выступал за карточку на 47px
   (`margin-bottom: -47px`), и на коротком макетном тексте это не бросалось в глаза,
   а клиентская легенда упиралась в `overflow: hidden` и обрезалась на середине строки. */
.tech__slide--photo {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 0 54px 54px;
}

.tech__intro {
  position: relative;
  z-index: 1;
  width: 307px;
}

.tech__intro-title,
.tech__intro-text,
.tech__lead-title,
.tech__lead-text {
  margin: 0;
  padding: 10px;
}

.tech__intro-title {
  font-weight: 700;
  font-size: 36px;
  line-height: normal;
  color: var(--white);
}

.tech__intro-text {
  font-weight: 400;
  font-size: 18px;
  line-height: 24px;
  color: var(--white);
}

/* Слайдер слайда с фото: 10×74 @ left 640, центр по вертикали */
.tech__slider {
  position: absolute;
  left: 640px;
  top: calc(50% - 0.5px);
  width: 10px;
  height: 74px;
  transform: translateY(-50%);
}

.tech__slider img {
  position: absolute;
  left: -32px;
  top: 32px;
  width: 74px;
  height: 10px;
  max-width: none;
  transform: rotate(90deg);
}

/* --- Слайд с текстом (611:3891 в pc, 611:4530 в mb) --- */
/* Тексты слайда различаются между pc и mb — держим оба варианта и переключаем */
.tech__lead-title--mb,
.tech__lead-text--mb,
.tech__subtitle--mb {
  display: none;
}
/* Заголовок: блок 482 в потоке слайда (отступ 54 даёт padding слайда) */
.tech__lead {
  width: 482px;
}

.tech__lead-title {
  font-weight: 700;
  font-size: 36px;
  line-height: normal;
  color: var(--black);
}

.tech__lead-text {
  width: 500px;
  font-weight: 400;
  font-size: 18px;
  line-height: 24px;
  color: var(--black);
}

/* Цепочка этапов. Четыре шага стояли каждый на своём left/top, поэтому переименование
   этапа из менеджера ломало цепочку: стрелка оставалась на месте, текст съезжал под неё.
   Теперь это сетка 2×2, в которой стрелка живёт в ячейке рядом со своим этапом.
   Колонки 182/37/32/222: ширина этапа, стрелка, зазор до второй пары. */
.tech__chain {
  display: flex;
  flex-direction: column;
  gap: 20px;                     /* 350 − (306 + 24) */
  margin: 32px 0 0 10px;         /* этапы на 306 при низе лида 274; лид имеет padding 10 */
}

.tech__chain-row {
  display: flex;
  align-items: center;
  gap: 16px;                     /* стрелка на 262 при этапе 64…246 */
}

.tech__step {
  margin: 0;
  font-size: 18px;
  line-height: 24px;
  white-space: nowrap;
}

/* Стрелки цепочки: 37×8 (SVG с полем под обводку) */
.tech__arrow {
  width: 37px;
  height: 8px;
}

/* Подзаголовок: Rubik Bold 18px, 4 строки. Зазор до цепочки 26 (448 − 422). */
.tech__subtitle {
  width: 479px;
  margin: 26px 0 0 10px;
  font-weight: 700;
  font-size: 18px;
  line-height: 21px;
  color: var(--black);
}

/* Base-карточки (стиль в css/base-card.css): сетка 2×2. Раньше каждая стояла на своих
   left/top с жёсткой высотой, пятая легла бы поверх четвёртой, а удлинение текста
   пробивало карточку. Колонки по 277 с шагом 301 → gap 24; строки выравниваются по
   высокой карточке в ряду, поэтому высоты не задаются. */
.tech__bases {
  display: flex;
  align-items: flex-start;
  gap: 24px;                     /* 355 − (54 + 277) */
  margin-top: 18px;              /* 502 − 484 (низ подзаголовка) */
}

/* Колонки независимы: правая пара в макете стоит на 501, левая на 502, и шаг внутри
   колонок разный (24 слева, 24 справа при разной высоте карточек). */
.tech__bases-col {
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.tech__bases-col:last-child {
  margin-top: -1px;              /* правая пара в макете на 501 против 502 у левой */
}

/* Высоты карточек в макете разные (174/193/156/174): низ карточки не прилегает к тексту.
   Задаём min-height — контент выше растянет карточку, а не пробьёт её. */
.tech__base--1 { min-height: 174px; }
.tech__base--2 { min-height: 193px; }
.tech__base--3 { min-height: 156px; }
.tech__base--4 { min-height: 174px; }

/* Зазор между карточками в колонке: 700 − (502 + 174) = 24 слева, 681 − (501 + 156) = 24 справа */

/* Зазор заголовок→текст различается по карточкам: у 3-й и 4-й он 28 против базовых 9.
   Это зазор, а не координата: удлинение заголовка отодвигает текст. */
.tech__base--3 .base__text,
.tech__base--4 .base__text { margin-top: 28px; }

/* Кнопка калькулятора после блока (заказчик 2026-09-14). Отдельная полоса под слайдами:
   в макете её нет, геометрия взята из кита — .btn-basket с брендовым фоном, как у кнопки
   каталога в корзине. Полоса возможна только потому, что секция теперь в потоке. */
.tech__cta {
  display: flex;
  justify-content: center;
  margin-top: 48px;
}

.tech__cta-btn {
  padding: 16px 24px;
  background: var(--brand);
  font-size: 16px;
  color: var(--white);
}

.tech__cta-btn:hover,
.tech__cta-btn:focus-visible {
  background: var(--brand);
  color: var(--white);
  opacity: 0.85;
}

/* Иконка в кнопке уже белая — инверсия кита её бы съела */
.tech__cta-btn:hover img,
.tech__cta-btn:focus-visible img {
  filter: none;
}

@media (max-width: 1199px) {
  /* Screen 3/mb: слайд-фото 362×545 top 50, слайд-текст 362×1216 top 613 → gap 18 */
  .tech {
    padding-top: 50px;           /* слайд-фото 611:4555 стоит на y=50 внутри Screen 3/mb */
  }

  /* Блоб Ellipse 11 mb (611:4529): 390×832 повёрнут на 90° → визуально 832×390,
     центр (585, 987) внутри секции. Экспорт узла — SVG 1632×1190 уже в повёрнутой
     ориентации (ellipse rx 416 ry 195, поле 400 под blur 200), центр (816, 595).
     Тот же ассет использует «Обратите внимание» mb (611:4576). */
  .tech__blob {
    top: 392px;                  /* 987 − 595 */
    width: 1632px;
    height: 1190px;
    margin-left: -426px;         /* 585 − 195 − 816 */
  }

  .tech__slides {
    flex-direction: column;
    gap: 18px;                   /* 613 − (50 + 545) */
  }

  .tech__slide {
    flex: 0 0 auto;
    width: 100%;
  }

  /* Отступ снизу равен левому: 26px слайда + 10px элемента = 36px с каждой стороны. */
  .tech__slide--photo { min-height: 545px; padding: 0 26px 26px; }
  .tech__slide--text { min-height: 1216px; padding: 54px 26px 24px; }

  .tech__photo {
    width: 100%;
    height: 926px;
  }

  /* Слой 611:4557 (blur) объявлен на весь слайд (0..545), но в экспорте узла 611:4555
     размытие начинается ровно от текстового блока 611:4558 (y=265): построчная TV
     по полосе x 250..340 даёт 1.0–1.9 до строки 266 и 0.3–0.9 с 267.
     Та же логика, что в pc (611:3918): слой стоит под текстом, а не на всей карточке. */
  /* Кроп фото mb: w 115.38%, h 60.15%, left −7.62%, top −0.71% */
  .tech__photo img {
    left: -7.62%;
    top: -0.71%;
    width: 115.38%;
    height: 60.15%;
  }

  /* Текст-блок mb: 307 в потоке; отступ снизу даёт padding слайда */
  .tech__intro {
    width: 307px;
  }

  .tech__intro-title { font-size: 28px; }
  .tech__intro-text { font-size: 14px; }

  /* Слайдер mb: 74×10 @ left 36, top 234 — горизонтальный */
  .tech__slider {
    left: 36px;
    top: 234px;
    width: 74px;
    height: 10px;
    transform: none;
  }

  .tech__slider img {
    position: static;
    transform: none;
  }

  /* Слайд с текстом: заголовок блок left 26, top 54 */
  .tech__lead {
    width: 307px;
  }

  .tech__lead-title--pc,
  .tech__lead-text--pc,
  .tech__subtitle--pc {
    display: none;
  }

  .tech__lead-title--mb,
  .tech__lead-text--mb {
    display: block;
  }

  .tech__subtitle--mb {
    display: block;
  }

  .tech__lead-title { font-size: 28px; }

  .tech__lead-text {
    width: 100%;
    font-size: 14px;
  }

  /* Этапы mb: 14px, первые два в две строки с width */
  .tech__step {
    font-size: 14px;
    white-space: normal;
  }

  /* mb: колонки 81/58/118 — ширины из макета, стрелка первой пары длиннее (58 против 37) */
  /* В макете цепочка стоит на 298, а текст лида кончается на 304: слои перекрывались.
     Тянем цепочку на фактический низ лида — 6px сдвига вниз против макета, зато
     удлинение лида больше не загоняет текст под цепочку. */
  .tech__chain {
    gap: 27px;                   /* 361 − (298 + 36) */
    margin: 0 0 0 10px;          /* этапы на 36 при padding слайда 26 */
  }

  /* Ширины этапов из макета: первая пара переносится в две строки, вторая в одну.
     Задаём элементам, а зазор до стрелки — gap ряда. */
  .tech__chain-row {
    gap: 14px;                   /* стрелка на 131 при этапе 36…117 */
  }

  .tech__step--1 { width: 81px; }
  .tech__step--2 { width: 118px; }
  .tech__step--3 { width: 101px; }
  .tech__step--4 { width: 116px; }

  .tech__step--1,
  .tech__step--2 { line-height: 18px; }

  /* Стрелки в макете подняты над центром строки: 303 при строке 298…334, 371 при 361…385.
     Сдвиг задан относительно центра ряда — на поток не влияет. */
  .tech__arrow--1 { position: relative; top: -15px; }
  .tech__arrow--2 { position: relative; top: -4px; }

  .tech__arrow--1 { width: 58px; }

  /* Стрелка второй пары: поток ставит её на 151, макет даёт 152 — сдвиг не нужен. */

  /* Подзаголовок mb: left 36, top 425, width 199, 18px/22 */
  .tech__subtitle {
    width: 199px;
    margin: 30px 0 0 10px;       /* подзаголовок на 36 при padding слайда 26 */
    line-height: 22px;
    white-space: normal;
  }

  /* На mb секция в макете кончалась ровно там, где начинается следующая, поэтому
     добавленная кнопка прижималась к ней вплотную — нужен свой отступ снизу. */
  .tech__cta {
    margin: 30px 0 40px;
  }

  /* Base-карточки mb: одна колонка, порядок макета 1 → 3 → 2 → 4. Зазоры 10.
     Колонки распускаются в общий поток через display: contents, порядок — order. */
  .tech__bases {
    flex-direction: column;
    gap: 10px;
    margin: 20px 0 0 10px;       /* карточки на 36 при padding слайда 26 */
  }

  .tech__bases-col {
    display: contents;
  }

  .tech__bases-col:last-child {
    margin-top: 0;
  }

  .tech__base--1 { order: 1; }
  .tech__base--3 { order: 2; }
  .tech__base--2 { order: 3; }
  .tech__base--4 { order: 4; }
}
