/* =========================================================
   TWEETLIX — UNIVERSAL CASE CARD LAYOUT
   =========================================================
 *
 * Задача:
 *
 * - одинаковая структура карточек;
 * - разные объёмы текста не ломают сетку;
 * - CTA всегда находится снизу;
 * - длинный контент визуально ограничивается,
 *   но исходный текст WordPress не изменяется.
 */


/* =========================================================
   CARD
   ========================================================= */

.case-card {
  min-width: 0;
  height: 100%;

  display: flex;
  flex-direction: column;
}


/* =========================================================
   IMAGE
   ========================================================= */

.case-card__media {
  flex: 0 0 auto;
}


.case-card__image {
  display: block;

  width: 100%;
  height: 100%;

  object-fit: cover;
}


/* =========================================================
   BODY
   ========================================================= */

.case-card__body {
  min-width: 0;

  flex: 1;

  display: flex;
  flex-direction: column;
}


/* =========================================================
   CATEGORY
   1 LINE
   ========================================================= */

.case-card__category {
  /*
   * Резервируем одинаковую высоту
   * даже для коротких категорий.
   */
  min-height: 1.45em;

  overflow: hidden;

  display: -webkit-box;

  -webkit-box-orient: vertical;
  -webkit-line-clamp: 1;

  line-clamp: 1;
}


/* =========================================================
   TITLE
   2 LINES
   ========================================================= */

.case-card__title {
  /*
   * Используем фиксированный line-height,
   * чтобы две строки занимали
   * одинаковое пространство во всех карточках.
   */
  line-height: 1.12;

  min-height: 2.24em;
  max-height: 2.24em;

  overflow: hidden;

  display: -webkit-box;

  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;

  line-clamp: 2;
}


.case-card__title a {
  color: inherit;

  text-decoration: none;
}


/* =========================================================
   EXCERPT
   2 LINES
   ========================================================= */

.case-card__excerpt {
  line-height: 1.6;

  /*
   * Всегда резервируем место
   * ровно под две строки.
   */
  min-height: 3.2em;
  max-height: 3.2em;

  overflow: hidden;

  display: -webkit-box;

  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;

  line-clamp: 2;
}


/* =========================================================
   META
   ========================================================= */

.case-card__meta {
  /*
   * Оба столбца начинают контент
   * сверху независимо от длины текста.
   */
  align-items: start;
}


.case-card__meta-item {
  min-width: 0;
}


.case-card__meta-value {
  overflow-wrap: anywhere;

  line-height: 1.5;

  overflow: hidden;

  display: -webkit-box;

  -webkit-box-orient: vertical;
}


/* =========================================================
   CLIENT
   2 LINES
   ========================================================= */

.case-card__meta-value--client {
  -webkit-line-clamp: 2;

  line-clamp: 2;
}


/* =========================================================
   RESULT
   3 LINES
   ========================================================= */

.case-card__meta-value--result {
  /*
   * Ключевая часть выравнивания:
   *
   * даже результат в одну строку
   * резервирует пространство под три.
   */
  min-height: 4.5em;
  max-height: 4.5em;

  -webkit-line-clamp: 3;

  line-clamp: 3;
}


/* =========================================================
   CTA
   ========================================================= */

.case-card__link {
  /*
   * Ссылка всегда прижимается
   * к нижнему краю body.
   */
  margin-top: auto;
}


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 600px) {

  /*
   * На мобильном карточки идут по одной,
   * поэтому можно показать чуть больше
   * полезного текста.
   */

  .case-card__meta-value--result {
    min-height: 0;
    max-height: 6em;

    -webkit-line-clamp: 4;

    line-clamp: 4;
  }

}

/* =========================================================
   WHOLE CARD LINK
   ========================================================= */

.case-card__clickable {
  min-width: 0;
  height: 100%;
  flex: 1;

  display: flex;
  flex-direction: column;

  color: inherit;
  text-decoration: none;
}


/*
 * Не даём браузеру менять цвет
 * текста после посещения ссылки.
 */

.case-card__clickable:visited {
  color: inherit;
}


/*
 * Вся карточка визуально показывает,
 * что является интерактивной.
 */

.case-card__clickable {
  cursor: pointer;
}


/*
 * Keyboard navigation.
 */

.case-card__clickable:focus-visible {
  outline: 2px solid #bbc2ff;
  outline-offset: -2px;
}
/* =========================================================
   CARD INTERACTION
   ========================================================= */

@media (hover: hover) and (pointer: fine) {

  .case-card {
    transition:
      transform 180ms ease,
      border-color 180ms ease;
  }


  .case-card:hover {
    transform: translateY(-3px);
  }


  .case-card:hover .case-card__link {
    color: #bbc2ff;
  }


  .case-card:hover .case-card__link > span {
    transform: translate(2px, -2px);
  }

}


.case-card__link > span {
  display: inline-block;

  transition:
    transform 180ms ease;
}