/* ==========================================================================
   «Продукты и решения производственных задач» — сетка 3×3
   Макет: карточка 467×588, радиус 18, подложка тёмно-еловая.
   ========================================================================== */

.products {
  padding-block: 12.9375rem 12.5rem;
  background: var(--c-white);
  color: var(--c-spruce-deep);
}

.products__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 2.5rem;
}

.products__title b {
  display: block;
  font-weight: inherit;
  color: var(--t-spruce-30);
}

/* Ссылка на Хабр со стрелкой и линией */
.products__habr {
  flex: none;
  display: grid;
  grid-template-columns: 17.1875rem 2rem;
  align-items: start;
  gap: 1.125rem;
  padding-top: 0.25rem;
}

.products__habr-text {
  font-weight: 600;
  font-size: 1rem;
  line-height: 1.2;
  padding-bottom: 1.25rem;
  border-bottom: 1px solid currentColor;
  transition: border-color var(--dur-fast) var(--ease-out);
}

.products__habr-arrow {
  width: 2rem;
  height: 2rem;
  transform: rotate(-135deg);
  transition: transform var(--dur-base) var(--ease-out);
}

.products__habr:hover .products__habr-arrow {
  transform: rotate(-135deg) translate(0.25rem, -0.25rem);
}

.products__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--col-gap);
  margin-top: 3.375rem;
}

/* --- Карточка продукта --- */

.card {
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: 36.75rem;
  padding: 10.625rem 1.75rem 1.75rem;
  border-radius: var(--r-card);
  background: var(--c-spruce-deep);
  overflow: hidden;
  isolation: isolate;
  transition: transform var(--dur-base) var(--ease-out),
              box-shadow var(--dur-base) var(--ease-out);
}

.card:hover {
  transform: translateY(-0.375rem);
  box-shadow: 0 1.5rem 3rem -1.5rem rgba(0, 0, 0, 0.6);
}

.card__media {
  position: absolute;
  inset: 0 0 auto;
  height: 12.71875rem;
  z-index: 0;
  overflow: hidden;
}

.card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--dur-slow) var(--ease-out);
}

.card:hover .card__media img { transform: scale(1.04); }

.card__tag {
  position: relative;
  z-index: 1;
  font-weight: 500;
  font-size: 1.125rem;
  line-height: 1.125rem;
  color: var(--c-mint);
}

/* Плашка под меткой. В картинках карточек она нарисована сама, но под
   короткое слово («Разработка»): названия процессов — «Промышленная
   безопасность», «Надёжность и ремонты» — выходили на фотографию и не
   читались. Поэтому плашку рисует CSS по длине текста; она того же цвета,
   что карточка, и целиком накрывает нарисованную. */
.card__tag {
  align-self: flex-start;
  max-width: 100%;
}

.card__tag::before,
.card__tag::after {
  content: '';
  position: absolute;
  z-index: -1;
  background: var(--c-spruce-deep);
}

/* сама плашка: от левого края карточки до конца текста, вниз до края фотографии */
.card__tag::before {
  top: -1.625rem;
  bottom: -1rem;
  left: -1.75rem;
  right: -1.375rem;
  border-top-right-radius: var(--r-card);
}

/* вогнутый уголок справа внизу — как у нарисованной плашки */
.card__tag::after {
  bottom: -1rem;
  left: calc(100% + 1.375rem);
  width: var(--r-card);
  height: var(--r-card);
  background: radial-gradient(circle at 100% 0, transparent calc(var(--r-card) - 0.5px), var(--c-spruce-deep) var(--r-card));
}

.card__title {
  margin-top: 3.1875rem;
  color: var(--c-white);
}

.card__text {
  margin-top: 3.375rem;
  font-size: 1rem;
  line-height: 1.2;
  color: var(--t-white-60);
}

.card__more { margin-top: auto; padding-top: 2rem; }

/* Карточки в ряду выравниваются по строкам: метка, название, описание и
   «Подробнее» каждой карточки встают на общие линии ряда. Названия бывают
   от одной строки до трёх, и без этого описания в ряду начинались на разной
   высоте. Каждая карточка занимает четыре строки сетки и берёт их у сетки
   (subgrid), поэтому высота строки — по самому длинному названию в ряду.
   В браузерах без subgrid карточки остаются как были, просто без выравнивания. */
@media (min-width: 681px) {
  @supports (grid-template-rows: subgrid) {
    .card {
      display: grid;
      grid-row: span 4;
      grid-template-rows: subgrid;
      row-gap: 0;
    }

    .card__tag { justify-self: start; align-self: start; }
    .card__title,
    .card__text { align-self: start; }
    .card__more { align-self: end; justify-self: start; margin-top: 0; }
  }
}

@media (max-width: 1180px) {
  .products { padding-block: 6rem; }
  .products__head { flex-direction: column; gap: 1.5rem; }
  .products__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 2.5rem; }
}

/* Альбомный планшет и узкое окно ноутбука: три колонки, как на десктопе.
   В две колонки девять карточек давали четыре экрана и одинокую девятую. */
@media (min-width: 1025px) and (max-width: 1180px) {
  .products__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .card { padding-inline: 1.5rem; }
  .card__tag::before { left: -1.5rem; }
}

/* В узкой планшетной карточке самая длинная метка при 18px шире карточки */
@media (min-width: 681px) and (max-width: 1180px) {
  .card__tag { font-size: 1rem; }
}

/* Портретный планшет: две колонки, сразу видно четыре карточки, остальные
   раскрывает та же кнопка, что на телефоне (ui/products.js). Число карточек
   здесь и в скрипте должно совпадать. */
@media (min-width: 681px) and (max-width: 1024px) {
  .products__grid.is-collapsed > .card:nth-child(n + 5) { display: none; }

  .products__more {
    width: 100%;
    margin-top: 1.75rem;
    justify-content: center;
  }
}

@media (max-width: 680px) {
  .products { padding-block: 4rem; }
  .products__grid { grid-template-columns: minmax(0, 1fr); }

  /* Девять карточек в колонку — шесть экранов прокрутки. Показываем три,
     остальные раскрывает кнопка. Карточки остаются в разметке: без JS класс
     не появится и будут видны все девять. */
  .products__grid.is-collapsed > .card:nth-child(n + 4) { display: none; }

  /* Кнопка тёмная и стоит сразу под тёмной карточкой — без увеличенного
     зазора они читаются как один блок. */
  .products__more {
    width: 100%;
    margin-top: 1.75rem;
    justify-content: center;
  }
  .card { min-height: 0; padding: 9.375rem 1.5rem 1.5rem; }
  .card__media { height: 10.625rem; }
  .card__tag::before { top: -1.875rem; bottom: -2px; left: -1.5rem; }
  .card__tag::after { bottom: -2px; }
  .card__title { margin-top: 1.75rem; }
  .card__text { margin-top: 1.5rem; }
  .products__habr { grid-template-columns: minmax(0, 1fr) 2rem; }
}
