.promotions-page,
.promotion-single {
  min-height: calc(100vh - var(--header-h));
  background: #fff;
}

.promotion-single {
  background: #fff;
}

.promotion-breadcrumbs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  padding: 28px 0 0;
  gap: 8px;
  color: #718096;
  font-size: 13px;
  font-weight: 600;
}

.promotion-breadcrumbs a:hover {
  color: var(--smd-blue);
}

.promotions-page__hero {
  padding: 0 0 44px;
  border-bottom: 1px solid rgba(31, 145, 101, .1);
  background: #fff;
}

.promotions-page__hero h1 {
  margin: 54px 0 0;
  color: var(--smd-text);
  font-size: clamp(34px, 3.5vw, 50px);
  font-weight: 800;
  letter-spacing: -.045em;
  line-height: 1.02;
}

.promotions-page__hero p {
  max-width: 780px;
  margin: 18px 0 0;
  color: #5f6b7a;
  font-size: 18px;
  font-weight: 500;
  line-height: 1.65;
}

.promotions-page__catalog {
  padding: 54px 0 64px;
}

.promotions-page__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: stretch;
  gap: 24px;
}

.promotion-catalog-card {
  height: 100%;
  overflow: hidden;
  border: 1px solid #e2ebf2;
  border-radius: 22px;
  background: #fff;
  box-shadow: 0 14px 36px rgba(15, 48, 74, .07);
  transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}

.promotion-catalog-card:hover {
  border-color: rgba(31, 145, 101, .28);
  box-shadow: 0 20px 46px rgba(15, 48, 74, .13);
  transform: translateY(-3px);
}

.promotion-catalog-card__link {
  display: flex;
  height: 100%;
  flex-direction: column;
}

.promotion-catalog-card__visual {
  position: relative;
  min-height: 210px;
  overflow: hidden;
  background:
    radial-gradient(circle at 70% 20%, rgba(255, 255, 255, .48), transparent 34%),
    linear-gradient(135deg, #dff4fb, #edfbee);
}

.promotion-catalog-card__image {
  display: block;
  width: 100%;
  height: 230px;
  object-fit: cover;
  transition: transform .35s ease;
}

.promotion-catalog-card:hover .promotion-catalog-card__image {
  transform: scale(1.025);
}

.promotion-catalog-card__placeholder {
  display: flex;
  min-height: 230px;
  align-items: center;
  justify-content: center;
  color: rgba(31, 145, 101, .2);
  font-size: 110px;
  font-weight: 800;
}

.promotion-catalog-card__badge,
.promotion-single__badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 32px;
  padding: 7px 14px;
  border-radius: 999px;
  background: var(--smd-green);
  color: #fff;
  font-size: 12px;
  font-weight: 800;
  line-height: 1;
}

.promotion-catalog-card__badge {
  position: absolute;
  top: 16px;
  left: 16px;
  z-index: 2;
  box-shadow: 0 8px 18px rgba(36, 163, 74, .22);
}

.promotion-catalog-card__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  align-items: flex-start;
  padding: 24px;
}

.promotion-catalog-card__title {
  margin: 0;
  color: var(--smd-text);
  font-size: 22px;
  font-weight: 800;
  letter-spacing: -.015em;
  line-height: 1.25;
}

.promotion-catalog-card__description {
  display: -webkit-box;
  margin: 12px 0 0;
  overflow: hidden;
  color: #64748b;
  font-size: 15px;
  font-weight: 500;
  line-height: 1.55;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

.promotion-catalog-card__prices {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  margin-top: 20px;
  gap: 10px;
}

.promotion-catalog-card__price {
  color: #24a34a;
  font-size: 25px;
  font-weight: 900;
  line-height: 1;
}

.promotion-catalog-card__old-price {
  color: #94a3b8;
  font-size: 15px;
  font-weight: 700;
  text-decoration: line-through;
}

.promotion-catalog-card__dates {
  margin-top: 10px;
  color: #718096;
  font-size: 12px;
  font-weight: 700;
}

.promotion-catalog-card__button {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  justify-content: center;
  margin-top: auto;
  padding: 12px 22px;
  border-radius: 999px;
  background: var(--smd-green);
  color: #fff;
  font-size: 14px;
  font-weight: 800;
  box-shadow: 0 10px 22px rgba(98, 207, 103, .2);
}

.promotion-catalog-card__description + .promotion-catalog-card__button,
.promotion-catalog-card__dates + .promotion-catalog-card__button,
.promotion-catalog-card__prices + .promotion-catalog-card__button {
  margin-top: 22px;
}

.promotions-page__empty {
  min-height: 180px;
  margin: 0;
  padding: 54px 30px;
  border: 1px dashed #cddde8;
  border-radius: 22px;
  background: #fff;
  color: #64748b;
  font-size: 17px;
  font-weight: 600;
  text-align: center;
}

.promotion-booking {
  padding: 0 0 48px;
}

.promotion-booking__card {
  display: flex;
  min-height: 190px;
  align-items: center;
  justify-content: space-between;
  padding: 36px 42px;
  gap: 34px;
  overflow: hidden;
  border-radius: 24px;
  background:
    radial-gradient(circle at 92% 4%, rgba(255, 255, 255, .2), transparent 30%),
    linear-gradient(135deg, var(--promotion-booking-one), var(--promotion-booking-two));
  box-shadow: 0 20px 44px rgba(15, 48, 74, .15);
}

.promotion-booking__copy {
  max-width: 760px;
}

.promotion-booking h2 {
  margin: 0;
  color: #fff;
  font-size: 30px;
  font-weight: 800;
  line-height: 1.2;
}

.promotion-booking p {
  margin: 12px 0 0;
  color: rgba(255, 255, 255, .88);
  font-size: 16px;
  font-weight: 500;
  line-height: 1.55;
}

.promotion-booking__button {
  display: inline-flex;
  min-width: 176px;
  min-height: 52px;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  padding: 14px 28px;
  border-radius: 999px;
  background: var(--promotion-booking-button);
  color: #fff;
  font-size: 15px;
  font-weight: 800;
  box-shadow: 0 12px 28px rgba(15, 48, 74, .18);
  transition: transform .2s ease, box-shadow .2s ease;
}

.promotion-booking__button:hover {
  color: #fff;
  box-shadow: 0 16px 34px rgba(15, 48, 74, .25);
  transform: translateY(-2px);
}

.promotion-single {
  padding: 0 0 48px;
}

.promotion-single__layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 340px;
  align-items: start;
  padding: 46px 0 64px;
  gap: 38px;
}

.promotion-single__layout--wide {
  grid-template-columns: minmax(0, 1040px);
  justify-content: center;
}

.promotion-single__main {
  min-width: 0;
}

.promotion-single__hero {
  width: calc(100% - 64px);
  overflow: hidden;
  margin: 0 auto 28px;
  border: 1px solid #e3edf3;
  border-radius: 14px;
  background: #edf6fa;
  box-shadow: 0 12px 30px rgba(15, 48, 74, .06);
  aspect-ratio: 2.85 / 1;
}

.promotion-single__hero-image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.promotion-single__body {
  width: calc(100% - 64px);
  margin: 0 auto;
}

.promotion-single__header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  margin-bottom: 22px;
  gap: 12px 14px;
}

.promotion-single__header .promotion-single__badge {
  flex: 0 0 auto;
}

.promotion-single h1 {
  flex: 1 1 580px;
  margin: 0;
  color: var(--smd-text);
  font-size: clamp(32px, 3.1vw, 44px);
  font-weight: 800;
  letter-spacing: -.03em;
  line-height: 1.12;
}

.promotion-single__intro {
  max-width: 840px;
  margin-top: 30px;
  color: #566477;
  font-size: 18px;
  font-weight: 500;
  line-height: 1.65;
}

.promotion-single__offer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 0 26px;
  gap: 34px;
  border-bottom: 1px solid #e5edf4;
}

.promotion-single__offer-details {
  min-width: 0;
}

.promotion-single__prices {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 16px 34px;
}

.promotion-single__price-item {
  display: grid;
  align-content: end;
  gap: 5px;
}

.promotion-single__price-label {
  color: #64748b;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.2;
}

.promotion-single__price {
  color: #24a34a;
  font-size: 34px;
  font-weight: 900;
  line-height: 1;
}

.promotion-single__old-price {
  color: #8b9aad;
  font-size: 19px;
  font-weight: 700;
  line-height: 1;
  text-decoration: line-through;
}

.promotion-single__dates {
  margin-top: 6px;
  color: #64748b;
  font-size: 13px;
  font-weight: 700;
}

.promotion-single__button {
  display: inline-flex;
  min-width: 190px;
  min-height: 50px;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  padding: 13px 26px;
  border-radius: 999px;
  background: var(--smd-green);
  color: #fff;
  font-size: 15px;
  font-weight: 800;
  box-shadow: 0 12px 26px rgba(98, 207, 103, .24);
}

.promotion-single__content {
  margin-top: 28px;
  color: #435166;
  font-size: 17px;
  line-height: 1.72;
}

.promotion-single__content > :first-child {
  margin-top: 0;
}

.promotion-single__content > :last-child {
  margin-bottom: 0;
}

.promotion-single__content h2,
.promotion-single__content h3 {
  margin: 1.35em 0 .55em;
  color: var(--smd-text);
  font-weight: 800;
  line-height: 1.25;
}

.promotion-single__content h2 {
  font-size: 27px;
}

.promotion-single__content h3 {
  font-size: 21px;
}

.promotion-single__content ul,
.promotion-single__content ol {
  padding-left: 22px;
}

.promotion-single__sidebar {
  position: static;
}

.promotion-single__sidebar > h2 {
  margin: 0 0 20px;
  color: var(--smd-text);
  font-size: 29px;
  font-weight: 800;
  letter-spacing: -.02em;
  line-height: 1.15;
}

.promotion-single__sidebar-list {
  display: grid;
  gap: 16px;
}

.promotion-single__sidebar-empty {
  margin: 0;
  padding: 22px;
  border: 1px solid #e3edf3;
  border-radius: 16px;
  background: #f8fbfd;
  color: #718096;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.55;
}

.promotion-catalog-card--compact {
  border-radius: 16px;
}

.promotion-catalog-card--compact .promotion-catalog-card__visual {
  min-height: 135px;
}

.promotion-catalog-card--compact .promotion-catalog-card__image,
.promotion-catalog-card--compact .promotion-catalog-card__placeholder {
  height: 155px;
  min-height: 155px;
}

.promotion-catalog-card--compact .promotion-catalog-card__badge {
  top: 10px;
  left: 10px;
  min-height: 27px;
  padding: 5px 10px;
  font-size: 10px;
}

.promotion-catalog-card--compact .promotion-catalog-card__body {
  padding: 16px 18px 18px;
}

.promotion-catalog-card--compact .promotion-catalog-card__title {
  font-size: 16px;
  line-height: 1.4;
}

@media (max-width: 1100px) {
  .promotions-page__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .promotion-single__layout {
    grid-template-columns: minmax(0, 1fr) 300px;
    gap: 28px;
  }
}

@media (max-width: 820px) {
  .promotion-single__layout {
    grid-template-columns: 1fr;
  }

  .promotion-single__sidebar-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 700px) {
  .promotions-page__hero {
    padding-bottom: 34px;
  }

  .promotions-page__hero p {
    font-size: 16px;
  }

  .promotions-page__catalog {
    padding: 38px 0 48px;
  }

  .promotions-page__grid,
  .promotion-single__sidebar-list {
    grid-template-columns: 1fr;
  }

  .promotion-booking__card,
  .promotion-single__offer {
    flex-direction: column;
    align-items: stretch;
  }

  .promotion-booking__card {
    padding: 28px 24px;
  }

  .promotion-booking h2 {
    font-size: 24px;
  }

  .promotion-single__main {
    padding: 0;
  }

  .promotion-single__hero {
    width: 100%;
    border-radius: 16px;
    aspect-ratio: 16 / 10;
  }

  .promotion-single__body {
    width: 100%;
  }

  .promotion-single__button {
    width: 100%;
  }
}
