/*
 * ELMI — общий файл RU / LV для Astroid 3.5.3.
 * Размещение: /media/elmi/css/elmi-site.css.
 * Основа: предоставленный elmi-site.css от 02.11.2026.
 * Пути /images/, принятые размеры, состояния ссылок и адаптивность сохранены.
 * Общие шрифты, меню и палитра настраиваются в Astroid.
 * Порядок независимых разделов намеренно сохранён ради совместимости каскада.
 */

/* 1. Приветствие: принятые размеры для ширины сайта 1140px.
   Белое поле слева входит в изображение; масштаб фотографии — 84%. */
.elmi-editorial .elmi-welcome {
  background-color: #fff;
  background-image:
    linear-gradient(rgba(255, 255, 255, .2), rgba(255, 255, 255, .2)),
  url("/images/about-us-right.jpg");
  background-position: right center;
  background-repeat: no-repeat;
  background-size: 84% auto;
  padding: 60px 0;
}

.elmi-editorial .elmi-welcome>h2,
.elmi-editorial .elmi-welcome>p {
  max-width: 52%;
}

/* 2. Услуги: фон и сетка 4 / 2 / 1. Значки — в разделе 9. */
.elmi-editorial .elmi-services {
  padding: 70px 24px 80px;
  color: #fff;
  background:
    linear-gradient(rgba(0, 0, 0, .65), rgba(0, 0, 0, .65)),
  url("/images/services-banner.jpg") center top / cover no-repeat;
  background-color: #333;
  text-align: center;
}

.elmi-editorial .elmi-services>h2 {
  margin: 0 0 36px;
  color: #fff;
}

.elmi-editorial .elmi-services-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 28px;
}

.elmi-editorial .elmi-service p {
  margin: 0;
  color: #fff;
  line-height: 1.6;
}

@media (max-width: 991.98px) {
  .elmi-editorial .elmi-services-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 575.98px) {
  .elmi-editorial .elmi-services {
    padding: 50px 20px;
  }

  .elmi-editorial .elmi-services-grid {
    grid-template-columns: 1fr;
  }
}

.elmi-editorial .elmi-service h3 {
  margin: 0 0 16px;
  color: #fff;
  font-size: 24px;
  line-height: 1.25;
}

@media (max-width: 991.98px) {
  .elmi-editorial .elmi-welcome {
    background-image: none;
    padding: 40px 0;
  }

  .elmi-editorial .elmi-welcome>h2,
  .elmi-editorial .elmi-welcome>p {
    max-width: none;
  }
}

/* Приветствие: на узких экранах фотография отключена; цвета сохранены. */
.elmi-editorial .elmi-welcome,
.elmi-editorial .elmi-welcome > p {
  color: #333333;
}

.elmi-editorial .elmi-welcome > h2 {
  color: #02aed6;
}

/* 3. Портфолио: статическая сетка как запасной вариант. */
.elmi-editorial .elmi-portfolio {
  padding: 80px 0 40px;
  background: #fff;
  color: #333;
}

.elmi-editorial .elmi-portfolio > h2 {
  margin: 0 0 12px;
  text-align: center;
  color: #333;
}

.elmi-editorial .elmi-portfolio-subtitle {
  margin: 0 0 36px;
  text-align: center;
}

.elmi-editorial .elmi-portfolio-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 28px;
}

.elmi-editorial .elmi-portfolio-grid figure {
  min-width: 0;
  margin: 0;
}

.elmi-editorial .elmi-portfolio-grid img {
  display: block;
  width: 100%;
  height: auto;
}

.elmi-editorial .elmi-portfolio-grid figcaption {
  margin-top: 14px;
  line-height: 1.4;
  text-align: center;
  overflow-wrap: break-word;
}

@media (max-width: 991.98px) {
  .elmi-editorial .elmi-portfolio {
    padding: 50px 0 30px;
  }

  .elmi-editorial .elmi-portfolio-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 575.98px) {
  .elmi-editorial .elmi-portfolio-grid {
    grid-template-columns: 1fr;
  }
}

/* 4. Автоматическое портфолио: изображение над подписью. */
.elmi-editorial .elmi-portfolio-auto .mod-articles-item-content {
  display: flex;
  flex-direction: column;
}

.elmi-editorial .elmi-portfolio-auto .mod-articles-image {
  order: 1;
  float: none;
  width: 100%;
  margin: 0;
}

.elmi-editorial .elmi-portfolio-auto .mod-articles-image img {
  display: block;
  width: 100%;
  height: auto;
}

.elmi-editorial .elmi-portfolio-auto .mod-articles-title {
  order: 2;
  margin: 14px 0 0;
  color: #333;
  font-size: 16px;
  line-height: 1.4;
  font-weight: 400;
  text-align: center;
  text-transform: none;
  overflow-wrap: break-word;
}

/* 5. Факты: сетка 4 / 2 / 1, числа 32px, отступ заголовка 24px. */
.elmi-editorial .elmi-facts {
  padding: 60px 24px;
  color: #fff;
  text-align: center;
  background: #3a6d82 url("/images/skill-back.jpg")
    center top / cover no-repeat;
}

.elmi-editorial .elmi-facts > h2 {
  margin: 0 0 24px;
  color: #fff;
}

.elmi-editorial .elmi-facts-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 28px;
}

.elmi-editorial .elmi-facts-grid strong,
.elmi-editorial .elmi-facts-grid span {
  display: block;
}

.elmi-editorial .elmi-facts-grid strong {
  margin-bottom: 10px;
  font-size: 32px;
  font-weight: 700;
  line-height: 1.2;
}

@media (max-width: 991.98px) {
  .elmi-editorial .elmi-facts-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 575.98px) {
  .elmi-editorial .elmi-facts-grid {
    grid-template-columns: 1fr;
  }
}

.elmi-editorial .elmi-facts-grid .elmi-fact-icon {
  display: block;
  width: auto;
  height: 64px;
  max-width: 100%;
  margin: 0 auto 24px;
  object-fit: contain;
}

.elmi-editorial .elmi-facts-tagline {
  margin: 0 0 70px;
  color: #fff;
  font-size: 20px;
  line-height: 1.4;
}

/* 6. Преимущества: сетка и декоративная полоса.
   Семейства заголовков наследуются из Astroid; шрифты значков не меняются. */
.elmi-editorial .elmi-benefits {
  background: #fff;
  color: #333;
}

.elmi-editorial .elmi-benefits > h2 {
  position: relative;
  margin: 0;
  padding: 40px 24px;
  background: #02aed6;
  color: #fff;
  text-align: center;
}

.elmi-editorial .elmi-benefits > h2::after {
  content: "";
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  width: 0;
  height: 0;
  border-left: 16px solid transparent;
  border-right: 16px solid transparent;
  border-top: 16px solid #02aed6;
}

.elmi-editorial .elmi-benefits-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 32px;
  padding: 60px 24px 40px;
}

.elmi-editorial .elmi-benefit {
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr);
  column-gap: 15px;
  align-content: start;
}

.elmi-editorial .elmi-benefit-icon {
  grid-column: 1;
  grid-row: 1 / 3;
  color: #02aed6;
  font-size: 28px;
  line-height: 1.2;
}

.elmi-editorial .elmi-benefit > h3 {
  grid-column: 2;
  margin: 0 0 10px;
  color: #333;
  font-size: 22px;
  line-height: 1.2;
}

.elmi-editorial .elmi-benefit > p {
  grid-column: 2;
  margin: 0;
  line-height: 1.6;
}

@media (max-width: 991.98px) {
  .elmi-editorial .elmi-benefits-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 575.98px) {
  .elmi-editorial .elmi-benefits-grid {
    grid-template-columns: 1fr;
    padding: 50px 16px 30px;
  }
}

/* 7. Отзывы: JT Carousel. Ширина логотипа остаётся настройкой модуля. */
.elmi-editorial .elmi-testimonials {
  padding: 60px 24px;
  background: #eee;
  color: #333;
}

.elmi-editorial .elmi-testimonials > h2 {
  margin: 0 0 36px;
  color: #313131;
  text-align: center;
}

.elmi-editorial .elmi-testimonials-auto {
  max-width: 900px;
  margin-inline: auto;
}

@media (max-width: 575.98px) {
  .elmi-editorial .elmi-testimonials {
    padding: 40px 16px;
  }
}

.elmi-editorial .elmi-testimonials-auto .carousel-image {
  display: block;
  float: none;
  margin: 0 auto 20px;
}

.elmi-editorial .elmi-testimonials-auto .carousel-image figure.jt-carousel-img {
  margin: 0;
}

.elmi-editorial .elmi-testimonials-auto .carousel-image img {
  display: block;
  max-width: 100%;
  height: auto;
  margin-inline: auto;
}

/* Переносы строк берутся из Item Description; HTML в описании не нужен. */
.elmi-editorial .elmi-testimonials-auto .carousel-desc > p {
  white-space: pre-line;
  overflow-wrap: break-word;
}

/* 8. Подвал: контакты, статусы партнёров и новости.
   Адаптивность сохранена; ширины колонок задаются в Layout Astroid. */
.elmi-site-footer {
  background-color: #262626;
  color: #fff;
}

.elmi-site-footer .elmi-footer-contact {
  color: #fff;
  line-height: 1.6;
}

.elmi-site-footer .elmi-footer-contact img {
  display: block;
  width: 200px;
  max-width: 100%;
  height: auto;
  margin-bottom: 20px;
}

.elmi-site-footer .elmi-footer-contact p {
  margin: 0 0 18px;
}

.elmi-site-footer .elmi-footer-contact a {
  color: #fff;
}

.elmi-site-footer .elmi-footer-contact a:hover,
.elmi-site-footer .elmi-footer-contact a:focus-visible {
  color: #02aed6;
  text-decoration: underline;
}

.elmi-site-footer .elmi-footer-contact-row {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  column-gap: 12px;
  align-items: start;
}

.elmi-site-footer .elmi-footer-contact-row
+ .elmi-footer-contact-row {
  margin-top: 18px;
}

.elmi-site-footer .elmi-footer-contact-icon {
  display: inline-block;
  width: 24px;
  color: #fff;
  font-size: 20px;
  line-height: 1.6;
  text-align: center;
}

.elmi-site-footer .elmi-footer-contact-row > div {
  min-width: 0;
  overflow-wrap: anywhere;
}

.elmi-site-footer .elmi-footer-partners > h3 {
  margin: 0 0 28px;
  color: #02aed6;
  font-size: 24px;
  line-height: 1.3;
}

.elmi-site-footer .elmi-footer-partners > img {
  display: block;
  width: 80px;
  max-width: 100%;
  height: auto;
  margin-bottom: 16px;
}

.elmi-site-footer .elmi-footer-news-title {
  margin: 0 0 28px;
  color: #02aed6;
  font-size: 24px;
  line-height: 1.3;
}

.elmi-site-footer .elmi-footer-news a {
  display: block;
  color: #fff;
  font-family: "Ubuntu", Arial, Helvetica, sans-serif;
  font-size: 16px;
  font-weight: 400;
  line-height: 1.5;
  text-transform: none;
}

/* Вложенный заголовок новости наследует типографику ссылки. */
.elmi-site-footer .elmi-footer-news a > span[itemprop="name"] {
  font-family: inherit;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
}

.elmi-site-footer .elmi-footer-news a:hover,
.elmi-site-footer .elmi-footer-news a:focus-visible {
  color: #02aed6;
  text-decoration: underline;
}

/* До 992px отделяем колонки по вертикали; до 576px значки идут в ряд. */
@media (max-width: 991.98px) {
  .elmi-site-footer .elmi-footer-partners,
  .elmi-site-footer .elmi-footer-news {
    margin-top: 32px;
  }
}

@media (max-width: 575.98px) {
  .elmi-site-footer .elmi-footer-partners {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 16px;
  }

  .elmi-site-footer .elmi-footer-partners > h3 {
    flex: 0 0 100%;
    margin: 0 0 8px;
  }

  .elmi-site-footer .elmi-footer-partners > img {
    width: 80px;
    margin: 0;
  }
}

/* 9. Значки услуг: круглая рамка, наведение и уменьшение на телефонах.
   Font Awesome сохраняет собственное семейство шрифта. */
.elmi-editorial .elmi-services .elmi-service-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 120px;
  height: 120px;
  margin: 0 auto 35px;
  border: 4px solid #fff;
  border-radius: 50%;
  color: #02aed6;
  transition: background-color .2s ease, color .2s ease;
}

.elmi-editorial .elmi-services .elmi-service-icon > i {
  font-size: 40px;
  line-height: 1;
}

.elmi-editorial .elmi-services .elmi-service:hover .elmi-service-icon {
  background-color: #02aed6;
  color: #fff;
}

@media (max-width: 575.98px) {
  .elmi-editorial .elmi-services .elmi-service-icon {
    width: 96px;
    height: 96px;
    margin-bottom: 24px;
  }

  .elmi-editorial .elmi-services .elmi-service-icon > i {
    font-size: 32px;
  }
}

/* При предпочтении уменьшенного движения отключаем цветовой переход. */
@media (prefers-reduced-motion: reduce) {
  .elmi-editorial .elmi-services .elmi-service-icon {
    transition: none;
  }
}

/* 10. О нас: обтекание фотографии; до 768px изображение над текстом. */
.elmi-about-photo {
  float: left;
  width: 38%;
  max-width: 540px;
  margin: 0 36px 28px 0;
}

.elmi-about-photo img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
}

@media (max-width: 767.98px) {
  .elmi-about-photo {
    float: none;
    width: 100%;
    margin: 0 0 28px;
  }
}

/* Текст не возвращается под фотографию; следующий блок очищает обтекание. */
.elmi-about-copy {
  display: flow-root;
}

.elmi-about-facts {
  clear: both;
  padding-top: 30px;
}

/* 11. Контакты: сетка 3 / 2 / 1 и значки рядом с заголовками. */
.elmi-contacts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 32px;
}

.elmi-contacts > section {
  min-width: 0;
  overflow-wrap: anywhere;
}

.elmi-contacts > section > h2 {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin: 0 0 20px;
  font-size: 24px;
  line-height: 1.3;
}

.elmi-contacts > section > p {
  margin: 0 0 16px;
  line-height: 1.6;
}

.elmi-contacts a {
  color: #0285a3;
  text-decoration: underline;
  text-underline-offset: 3px;
}

@media (max-width: 991.98px) {
  .elmi-contacts {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 575.98px) {
  .elmi-contacts {
    grid-template-columns: 1fr;
    gap: 24px;
  }
}

.elmi-contacts > section > h2 > .elmi-contact-heading-icon {
  flex: 0 0 28px;
  color: #02aed6;
  font-size: 24px;
  line-height: inherit;
  text-align: center;
}

/* 12. Реквизиты: подпись и значение; на телефонах — одна колонка. */
.elmi-company-details {
  margin-top: 48px;
  padding-top: 32px;
  border-top: 1px solid #ddd;
}

.elmi-company-details > h2 {
  margin: 0 0 24px;
  font-size: 24px;
  line-height: 1.3;
}

.elmi-company-details > dl {
  display: grid;
  grid-template-columns: minmax(180px, 240px) minmax(0, 1fr);
  gap: 12px 24px;
  margin: 0;
}

.elmi-company-details dt,
.elmi-company-details dd {
  min-width: 0;
  margin: 0;
  overflow-wrap: anywhere;
}

.elmi-company-details dt {
  font-weight: 600;
}

@media (max-width: 575.98px) {
  .elmi-company-details > dl {
    grid-template-columns: 1fr;
    gap: 6px;
  }

  .elmi-company-details dd + dt {
    margin-top: 12px;
  }
}

/* 13. Верхняя полоса: белые контакты и языковые ссылки.
   Ubuntu 16px / 300 оставлен как совместимый CSS-override: удалять его
   до подтверждения отключения Custom Typography (.top-bars) не следует. */
.elmi-topbar .astroid-contact-info > span > i {
  color: #fff;
}

.elmi-topbar .astroid-contact-info,
.elmi-topbar .astroid-contact-info a,
.elmi-topbar .mod-languages,
.elmi-topbar .mod-languages a {
  font-family: "Ubuntu", Arial, Helvetica, sans-serif;
  font-size: 16px;
  font-weight: 300;
  line-height: 1.5;
}

.elmi-topbar .astroid-contact-info a,
.elmi-topbar .astroid-contact-info a:hover,
.elmi-topbar .astroid-contact-info a:focus-visible {
  color: #fff;
}

/* У активного языка нет подложки; состояние отмечается подчёркиванием. */
.elmi-topbar .mod-languages ul.lang-inline > li,
.elmi-topbar .mod-languages ul.lang-inline > li > a,
.elmi-topbar .mod-languages ul.lang-inline > li.lang-active,
.elmi-topbar .mod-languages ul.lang-inline > li.lang-active > a {
  background: none;
  box-shadow: none;
}

.elmi-topbar .mod-languages li > a {
  color: #fff;
  border: 0;
  box-shadow: none;
  text-decoration: none;
}

.elmi-topbar .mod-languages li.lang-active > a,
.elmi-topbar .mod-languages li > a:hover {
  color: #fff;
  text-decoration: underline;
  text-underline-offset: 4px;
}

/* Видимый фокус клавиатуры сохраняется независимо от наведения. */
.elmi-topbar a:focus-visible {
  outline: 2px solid #fff;
  outline-offset: 3px;
}

/* 14. Главный баннер: вся Hero-секция скрыта только при ширине < 576px. */
@media (max-width: 575.98px) {
  .elmi-home-hero {
    display: none;
  }
}

/* 15. Внутренние баннеры: принятое оформление без изменений.
   Эти локальные размеры не заменяют общие настройки H1–H3. */
.elmi-page-banner .astroid-banner-title,
.elmi-page-banner .astroid-banner-subtitle {
  text-align: center;
}

.elmi-page-banner .astroid-banner-title {
  margin: 0;
  font-family: "PT Sans", Arial, Helvetica, sans-serif;
  font-size: 45px;
  font-weight: 300;
  line-height: 1.2;
  text-transform: none;
  overflow-wrap: break-word;
}

.elmi-page-banner .astroid-banner-subtitle {
  display: block;
  margin-top: 15px;
  font-family: "PT Sans", Arial, Helvetica, sans-serif;
  font-size: 20px;
  font-weight: 300;
  line-height: 30px;
}

@media (max-width: 575.98px) {
  .elmi-page-banner .astroid-banner-title {
    font-size: 30px;
  }

  .elmi-page-banner .astroid-banner-subtitle {
    font-size: 17px;
    line-height: 1.5;
  }
}

/* Расширяем только внешний контейнер баннера. !important сохранён:
   он снимает ограничение Astroid max-width: 1140px !important.
   Внутренний контейнер текста остаётся в границах сайта. */
.elmi-page-banner > .container {
  width: 100%;
  max-width: none !important;
  padding-left: 0;
  padding-right: 0;
}

/* СПИСКИ ПРОГРАММ И УСЛУГ В СТИЛЕ K2.
   Сохраняем штатную сетку Joomla: две колонки на компьютере,
   одна на узком экране. Карточки растягиваются по высоте строки. */
.blogelmi-k2-list > .blog-items > .row > .blog-item {
  display: flex;
  min-width: 0;
}

/* Белая карточка с тонкой рамкой, без скруглений и тени.
   Фиксированную высоту не задаём: текст не должен обрезаться. */
.blogelmi-k2-list .blog-item > .item-content {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-width: 0;
  padding: 24px;
  border: 1px solid #ddd;
  border-radius: 0;
  background: #fff;
  box-shadow: none;
  text-align: center;
}

/* Внутренняя колонка позволяет выровнять кнопки по нижнему краю. */
.blogelmi-k2-list .item-content > .d-flex.flex-column {
  flex: 1;
  min-width: 0;
}

/* Убираем стандартные отступы и линию заголовка Astroid. */
.blogelmi-k2-list .article-title.item-title,
.blogelmi-k2-list .article-title.item-title > .page-header {
  margin: 0;
  padding: 0;
  border: 0;
}

/* Размер заголовка карточки соответствует старому K2.
   Длинные названия оставляем целиком, с переносом:
   это осознанное отличие от прежнего обрезания в одну строку. */
.blogelmi-k2-list .article-title h2 {
  margin: 0 0 18px;
  font-family: "PT Sans", Arial, Helvetica, sans-serif;
  font-size: 25px;
  font-weight: 400;
  line-height: 1.25;
  text-transform: none;
}

.blogelmi-k2-list .article-title h2 > a {
  display: block;
  color: #333;
  font: inherit;
  white-space: normal;
  overflow-wrap: break-word;
  text-decoration: none;
}

/* Фирменное выделение заголовка при наведении и фокусе. */
.blogelmi-k2-list .article-title h2 > a:hover,
.blogelmi-k2-list .article-title h2 > a:focus-visible {
  color: #0285a3;
  text-decoration: underline;
}

/* Вступление: размер из старого оформления K2.
   Содержимое и разделители абзацев этим правилом не удаляются. */
.blogelmi-k2-list .article-intro-text {
  color: #333;
  font-size: 18px;
  line-height: 1.5;
}

.blogelmi-k2-list .article-intro-text :is(p, div) {
  font-size: inherit;
  line-height: inherit;
}

/* Кнопка располагается ниже вступления.
   Автоматический верхний отступ выравнивает кнопки в одной строке. */
.blogelmi-k2-list .d-flex.flex-column > p.readmore {
  margin: auto 0 0;
  padding-top: 24px;
}

/* Оформление «Подробнее» в палитре ELMI.
   Ссылка и её доступное название остаются штатными Joomla. */
.blogelmi-k2-list p.readmore > a.as-readmore {
  display: inline-block;
  padding: 10px 22px;
  border: 1px solid #02aed6;
  border-radius: 0;
  background: transparent;
  color: #0285a3;
  font-size: 16px;
  font-weight: 400;
  line-height: 1.4;
  text-decoration: none;
  box-shadow: none;
}

.blogelmi-k2-list p.readmore > a.as-readmore:hover,
.blogelmi-k2-list p.readmore > a.as-readmore:focus-visible {
  background: #02aed6;
  color: #fff;
}

/* Видимый фокус для клавиатурной навигации по карточкам. */
.blogelmi-k2-list a:focus-visible {
  outline: 2px solid #0285a3;
  outline-offset: 3px;
}

/* Телефоны: компактнее внутренние отступы и текст.
   Количество колонок по-прежнему управляется сеткой Joomla. */
@media (max-width: 575.98px) {
  .blogelmi-k2-list .blog-item > .item-content {
    padding: 20px;
  }

  .blogelmi-k2-list .article-title h2 {
    font-size: 22px;
  }

  .blogelmi-k2-list .article-intro-text {
    font-size: 16px;
  }
}

/* ПРАВАЯ КОЛОНКА РАЗДЕЛА:
   отдельная рамка для каждого модуля, как в старом K2.
   Подсказки поиска не обрезаем через overflow: hidden. */
.elmi-section-sidebar > .sidebar-right-position.moduletable {
  margin: 0 0 20px;
  padding: 10px;
  border: 1px solid #ddd;
  border-radius: 0;
  background: #fff;
}

/* Заголовки боковых модулей.
   Размер локальный: остальные H3 сайта не изменяются. */
.elmi-section-sidebar h3.module-title {
  margin: 0 0 16px;
  padding: 0;
  color: #02aed6;
  font-family: "PT Sans", Arial, Helvetica, sans-serif;
  font-size: 22px;
  font-weight: 400;
  line-height: 1.3;
}

/* Короткая линия под названием модуля. */
.elmi-section-sidebar h3.module-title::after {
  content: "";
  display: block;
  width: 32px;
  height: 1px;
  margin-top: 8px;
  background: #02aed6;
}

/* Категории: вертикальный список без стандартных отступов. */
.elmi-section-sidebar ul.mod-menu {
  margin: 0;
  padding: 0;
  gap: 0;
  list-style: none;
}

/* Bootstrap-класс my-1 задаёт внешние отступы через !important.
   Перекрываем только эти отступы внутри бокового меню,
   чтобы разделители и активный фон образовывали единый список. */
.elmi-section-sidebar ul.mod-menu > li.nav-item {
  margin: 0 !important;
  padding: 0;
}

.elmi-section-sidebar ul.mod-menu > li.nav-item + li.nav-item {
  border-top: 1px solid #ddd;
}

/* Обычная ссылка категории. */
.elmi-section-sidebar ul.mod-menu > li.nav-item > a {
  display: block;
  padding: 9px 10px;
  color: #333;
  font-size: 16px;
  line-height: 1.4;
  text-decoration: none;
}

/* Активный раздел и его родитель на странице вложенной статьи. */
.elmi-section-sidebar ul.mod-menu > li.current > a,
.elmi-section-sidebar ul.mod-menu > li.active > a,
.elmi-section-sidebar ul.mod-menu > li > a[aria-current="page"] {
  background: #02aed6;
  color: #fff;
}

/* При наведении повторяем серое выделение старого меню ELMI. */
.elmi-section-sidebar ul.mod-menu > li.nav-item > a:hover {
  background: #6c757d;
  color: #fff;
}

/* Поиск: поле и кнопка остаются в одной строке.
   Поле может сжиматься внутри узкой правой колонки. */
.elmi-section-sidebar form.mod-finder {
  margin: 0;
}

.elmi-section-sidebar form.mod-finder .input-group {
  display: flex;
  flex-wrap: nowrap;
  align-items: stretch;
  width: 100%;
}

.elmi-section-sidebar form.mod-finder .input-group > .awesomplete {
  flex: 1 1 0;
  width: auto;
  min-width: 0;
}

/* Поле поиска: прямые углы и компактный размер.
   Скрытый label и элементы подсказок сохраняют штатное поведение. */
.elmi-section-sidebar form.mod-finder input.form-control {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  min-height: 38px;
  padding: 8px;
  border: 1px solid #ddd;
  border-radius: 0;
  font-family: inherit;
  font-size: 14px;
  line-height: 20px;
}

/* Голубая кнопка только бокового поиска.
   Кнопки других форм и страницы результатов не затрагиваются. */
.elmi-section-sidebar form.mod-finder button.btn-primary {
  flex: 0 0 auto;
  margin: 0;
  padding: 8px 10px;
  border: 1px solid #02aed6;
  border-radius: 0;
  background: #02aed6;
  color: #fff;
  font-family: inherit;
  font-size: 14px;
  line-height: 20px;
  white-space: nowrap;
}

.elmi-section-sidebar form.mod-finder button.btn-primary:hover {
  border-color: #0285a3;
  background: #0285a3;
}

/* Сохраняем видимый фокус при управлении клавиатурой. */
.elmi-section-sidebar a:focus-visible,
.elmi-section-sidebar input:focus-visible,
.elmi-section-sidebar button:focus-visible {
  outline: 2px solid #0285a3;
  outline-offset: 2px;
}

/* ХЛЕБНЫЕ КРОШКИ ELMI:
   убираем рамку и фон стандартного оформления Astroid.
   !important у padding нужен для классов Bootstrap px-3 и py-2. */
nav.mod-breadcrumbs__wrapper ol.breadcrumb {
  margin: 0;
  padding: 12px 0 !important;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  font-family: "Ubuntu", Arial, Helvetica, sans-serif;
  font-size: 0.9rem;
  line-height: 1.5;
}

/* Убираем отдельный значок местоположения.
   Саму навигацию и её доступное название сохраняем. */
nav.mod-breadcrumbs__wrapper .mod-breadcrumbs__divider {
  display: none;
}

/* Разделитель старого ELMI: вертикальная черта вместо косой.
   Первый пункт остаётся без разделителя. */
nav.mod-breadcrumbs__wrapper .breadcrumb-item + .breadcrumb-item {
  padding-left: 0;
}

nav.mod-breadcrumbs__wrapper .breadcrumb-item + .breadcrumb-item::before {
  content: "|";
  padding: 0 10px;
  color: #ccc;
  background: none;
}

/* Обычный текст пункта, который не является ссылкой. */
nav.mod-breadcrumbs__wrapper .breadcrumb-item {
  color: #333;
}

/* Ссылки: исходные голубые цвета ELMI. */
nav.mod-breadcrumbs__wrapper a.pathway,
nav.mod-breadcrumbs__wrapper a.pathway > span {
  color: #02aed6;
  text-decoration: none;
}

nav.mod-breadcrumbs__wrapper a.pathway:hover,
nav.mod-breadcrumbs__wrapper a.pathway:hover > span {
  color: #0285a3;
}

/* Видимый фокус при переходе по ссылкам клавишей Tab. */
nav.mod-breadcrumbs__wrapper a.pathway:focus-visible {
  outline: 2px solid #0285a3;
  outline-offset: 3px;
}

/* Длинные названия не создают горизонтальную прокрутку
   на телефонах. Штатный перенос списка сохраняется. */
nav.mod-breadcrumbs__wrapper .breadcrumb-item {
  min-width: 0;
  overflow-wrap: anywhere;
}

/* ПУБЛИКАЦИИ RU / LV: добавить этот фрагмент В КОНЕЦ актуального
   media/elmi/css/elmi-site.css. Не заменять существующий файл.
   В обоих пунктах меню: Page Display → Page Class = « elmi-publications»
   (первый символ — пробел). Учтены раздельный и склеенный классы Astroid.
   Только список публикаций: баннер, навигация и полная статья не затрагиваются. */

/* Типографика старого шаблона: Ubuntu, 16 px, насыщенность 300, интервал 1.5.
   Шрифт уже подключён на переданной странице; новых загрузок здесь нет. */
:is(.blog.elmi-publications,.blogelmi-publications) .com-content-category-blog__item {
  font-family: "Ubuntu", "MS Sans Serif", Geneva, sans-serif;
  font-size: 16px;
  font-weight: 300;
  line-height: 1.5;
  letter-spacing: 0;
  color: #333;
  min-width: 0;
}

/* Существующие две колонки и мобильное переключение Astroid сохраняются.
   Меняются только переменные отступов: вместо gy-5 / gx-xl-5 — 30 px.
   Приоритет нужен против адаптивных утилит Bootstrap, включая ширину XL. */
:is(.blog.elmi-publications,.blogelmi-publications) > .com-content-category-blog__items > .row {
  --bs-gutter-x: 30px !important;
  --bs-gutter-y: 30px !important;
}

/* Старая карточка com_content: рамка #ddd, прямые углы, без тени.
   Фото было ПЕРЕД .card-body: рамка охватывает фото, но отступ 20 px —
   только у текста ниже. Не добавляем одинаковую высоту карточек. */
:is(.blog.elmi-publications,.blogelmi-publications) .com-content-category-blog__item > .item-content {
  padding: 0;
  border: 1px solid #ddd;
  border-radius: 0;
  background: #fff;
  box-shadow: none;
}

:is(.blog.elmi-publications,.blogelmi-publications) .com-content-category-blog__item > .item-content > .d-flex.flex-column {
  padding: 20px;
}

/* Фото у верхнего края карточки, в естественной пропорции, без обрезки.
   Сбрасываем старый float .left только внутри этого списка. */
:is(.blog.elmi-publications,.blogelmi-publications) .item-content > figure.item-image {
  float: none !important;
  margin: 0;
  padding: 0;
  width: 100%;
  height: auto;
  max-height: none;
  aspect-ratio: auto;
  border-radius: 0;
}

:is(.blog.elmi-publications,.blogelmi-publications) .item-content > figure.item-image img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  max-height: none;
  aspect-ratio: auto;
  border-radius: 0;
}

/* Заголовок карточки: customcss параметров 24 — 20 px / 1.2;
   PT Sans и верхний регистр — старые настройки H2, не стиль полной статьи. */
:is(.blog.elmi-publications,.blogelmi-publications) .article-title.item-title .page-header {
  margin: 0;
  padding: 0;
  border: 0;
}

:is(.blog.elmi-publications,.blogelmi-publications) .article-title.item-title h2 {
  margin: 0 0 8px;
  font-family: "PT Sans", "MS Sans Serif", Geneva, sans-serif;
  font-size: 20px;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: 0;
  text-transform: uppercase;
}

/* Цвета обычных ссылок из параметров старого шаблона. */
:is(.blog.elmi-publications,.blogelmi-publications) .com-content-category-blog__item a {
  color: #02aed6;
  text-decoration: none;
}

:is(.blog.elmi-publications,.blogelmi-publications) .com-content-category-blog__item a:hover {
  color: #0285a3;
}

/* Метаданные com_content: 14 px, серый цвет, нижний отступ 10 px.
   В старом шаблоне astroid_readtime = 0: время чтения скрыто только здесь. */
:is(.blog.elmi-publications,.blogelmi-publications) dl.article-info {
  margin: 0 0 10px;
  font-size: 14px;
  line-height: 1.5;
  color: #666;
}

:is(.blog.elmi-publications,.blogelmi-publications) dl.article-info > dd {
  display: inline-block;
  margin: 0;
  padding-right: 5px;
  font-size: 14px;
}

:is(.blog.elmi-publications,.blogelmi-publications) dl.article-info :is(a,span,i) {
  color: #666;
}

:is(.blog.elmi-publications,.blogelmi-publications) dl.article-info > :is(dt.article-info-term,dd.readtime) {
  display: none;
}

/* Абзацы анонса: старый интервал 16 px. Содержимое статей не изменяется. */
:is(.blog.elmi-publications,.blogelmi-publications) .article-intro-text p {
  margin-top: 0;
  margin-bottom: 16px;
}

/* Старый native com_content использовал .btn.btn-primary.readmore-btn,
   НЕ контурную кнопку K2: белый текст, бирюзовая заливка, 10 × 20 px. */
:is(.blog.elmi-publications,.blogelmi-publications) p.readmore {
  margin: 0;
}

:is(.blog.elmi-publications,.blogelmi-publications) p.readmore > a.as-readmore {
  display: inline-block;
  padding: 10px 20px;
  border: 1px solid #02aed6;
  border-radius: 0;
  background: #02aed6;
  color: #fff;
  font-family: inherit;
  font-size: 16px;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0;
  text-transform: none;
  text-decoration: none;
  vertical-align: middle;
}

/* В старом layout readmore — только текст: не наследуем декоративные
   псевдоэлементы новой ссылки Astroid (стрелку или подчёркивающую полосу). */
:is(.blog.elmi-publications,.blogelmi-publications) p.readmore > a.as-readmore::before,
:is(.blog.elmi-publications,.blogelmi-publications) p.readmore > a.as-readmore::after {
  content: none;
}

:is(.blog.elmi-publications,.blogelmi-publications) p.readmore > a.as-readmore:hover {
  background: #028fb0;
  border-color: #0285a3;
  color: #fff;
}

:is(.blog.elmi-publications,.blogelmi-publications) p.readmore > a.as-readmore:active {
  background: #0285a3;
  border-color: #017b97;
  color: #fff;
}

/* Видимый клавиатурный фокус у заголовков, категории и кнопок.
   Не отключаем системный outline для остальных состояний и страниц. */
:is(.blog.elmi-publications,.blogelmi-publications) .com-content-category-blog__item a:focus-visible {
  outline: 2px solid #0285a3;
  outline-offset: 3px;
}

/* Адаптивность: ниже 576 px не перестраиваем сетку — её ведёт Astroid.
   Длинные слова и подпись кнопки могут переноситься без выхода за карточку.
   Размеры шрифта, фото и текстовые поля 20 px сохраняются. */
@media (max-width: 575.98px) {
  :is(.blog.elmi-publications,.blogelmi-publications) .article-title.item-title h2,
  :is(.blog.elmi-publications,.blogelmi-publications) .article-intro-text {
    overflow-wrap: anywhere;
  }

  :is(.blog.elmi-publications,.blogelmi-publications) p.readmore > a.as-readmore {
    box-sizing: border-box;
    max-width: 100%;
    white-space: normal;
    overflow-wrap: anywhere;
  }
}

/* ПОЛНАЯ СТАТЬЯ ПУБЛИКАЦИЙ RU / LV.
   Добавить В КОНЕЦ актуального media/elmi/css/elmi-site.css.
   Ранее добавленный elmi-publications.css для карточек ОСТАВИТЬ.
   В переданном полном RU DOM класс меню уже унаследован корневым элементом:
   <div class="com-content-article item-page elmi-publications">.
   Поэтому не нужны body.view-article, :has(), номера материалов и URL.
   У LV используется тот же заданный Page Class: « elmi-publications».
   Без класса на самом корне полной статьи этот блок намеренно не работает.
   Баннер, хлебные крошки, карточки, остальные статьи и footer не затрагиваются. */

/* Старые params/24.json: Ubuntu 16 px / 300 / 1.5, текст #333.
   Ubuntu и PT Sans уже подключены в полученном HTML.
   Не добавляем загрузки шрифтов и не меняем общую типографику сайта. */
.com-content-article.item-page.elmi-publications {
  min-width: 0;
  font-family: "Ubuntu", "MS Sans Serif", Geneva, sans-serif;
  font-size: 16px;
  font-weight: 300;
  line-height: 1.5;
  letter-spacing: 0;
  color: #333;
}

/* Реальный заголовок — .astroid-article-title > h1, не старый item-title.
   Старый customcss: 28 px / #02aed6; параметры старого H2:
   PT Sans / 500 / 1.1, верхний регистр. Семантический H1 сохраняется. */
.com-content-article.item-page.elmi-publications .astroid-article-title {
  margin: 0;
  padding: 0;
}

.com-content-article.item-page.elmi-publications .astroid-article-title > h1 {
  margin: 0;
  padding: 0;
  font-family: "PT Sans", "MS Sans Serif", Geneva, sans-serif;
  font-size: 28px;
  font-weight: 500;
  line-height: 1.1;
  letter-spacing: 0;
  text-transform: uppercase;
  color: #02aed6;
}

/* Старый _joomla-articles.scss: до информации от заголовка — 20 px.
   Не подменяем существующие значки и не назначаем им шрифт. */
.com-content-article.item-page.elmi-publications .astroid-article-infoblock {
  margin: 20px 0 0;
  padding: 0;
}

.com-content-article.item-page.elmi-publications .astroid-article-infoblock > dl.article-info {
  margin: 0;
  padding: 0;
  font-family: inherit;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.5;
  color: #666;
}

.com-content-article.item-page.elmi-publications .astroid-article-infoblock > dl.article-info > dd {
  display: inline-block;
  margin: 0;
  padding: 0 5px 0 0;
  font-size: 14px;
  color: #666;
}

.com-content-article.item-page.elmi-publications .astroid-article-infoblock > dl.article-info a {
  color: #666;
}

/* Старое astroid_readtime = 0: скрываем только реальный dd.readtime
   и пустой служебный заголовок списка, а не весь блок категории. */
.com-content-article.item-page.elmi-publications .astroid-article-infoblock > dl.article-info > dt.article-info-term,
.com-content-article.item-page.elmi-publications .astroid-article-infoblock > dl.article-info > dd.readtime {
  display: none;
}

/* Реальный текст — .astroid-article-text, без itemprop=articleBody.
   Начало статьи сделано DIV, не P: поэтому шрифт задаём контейнеру.
   Пустые разделители, inline-оформление и содержимое не удаляем.
   От информации до текста — 16 px; у обычных P старый шаг 16 px. */
.com-content-article.item-page.elmi-publications .astroid-article-text {
  margin-top: 16px;
  font-family: "Ubuntu", "MS Sans Serif", Geneva, sans-serif;
  font-size: 16px;
  font-weight: 300;
  line-height: 1.5;
  letter-spacing: 0;
  color: #333;
}

.com-content-article.item-page.elmi-publications .astroid-article-text p {
  margin-top: 0;
  margin-bottom: 16px;
}

/* Ссылки текста: исходные цвета. Адреса галереи не меняются. */
.com-content-article.item-page.elmi-publications .astroid-article-text a {
  color: #02aed6;
}

.com-content-article.item-page.elmi-publications .astroid-article-text a:hover,
.com-content-article.item-page.elmi-publications .astroid-article-infoblock > dl.article-info a:hover {
  color: #0285a3;
}

/* Адаптивные фото: НЕ width:100%. Маленькие изображения не растягиваем,
   float и заданную ширину не сбрасываем, пропорции сохраняем без обрезки.
   Подходит и отдельному full image, если он действительно задан в Joomla.
   Intro image не вставляем. У текущего ID 51 / source 45 full image пустой:
   его не надо заполнять — две иллюстрации уже находятся внутри текста. */
.com-content-article.item-page.elmi-publications img {
  max-width: 100%;
  height: auto;
}

/* Встраивания не удаляем. Без знания пропорций iframe не задаём
   height:auto или 16:9; сохраняем исходную высоту. Не навязываем таблицам
   display:block, новую ширину и не сбрасываем их inline-оформление. */
.com-content-article.item-page.elmi-publications .astroid-article-text iframe {
  max-width: 100%;
}

/* Доступность: видимый клавиатурный фокус ссылок текста и метаданных. */
.com-content-article.item-page.elmi-publications .astroid-article-text a:focus-visible,
.com-content-article.item-page.elmi-publications .astroid-article-infoblock > dl.article-info a:focus-visible {
  outline: 2px solid #0285a3;
  outline-offset: 3px;
}

/* Адаптивность: ниже 576 px сохраняем текст 16 px и заголовок 28 px.
   Длинные слова/адреса могут переноситься. Не снимаем float, не скрываем
   содержимое, не перестраиваем галерею. Сложные фиксированные таблицы
   проверяются отдельно, а не исправляются слепым width:100% для всего. */
@media (max-width: 575.98px) {
  .com-content-article.item-page.elmi-publications .astroid-article-title > h1,
  .com-content-article.item-page.elmi-publications .astroid-article-text,
  .com-content-article.item-page.elmi-publications .astroid-article-infoblock > dl.article-info {
    overflow-wrap: anywhere;
  }
}

/*
 * ELMI — рассылка AcyMailing, версия 3: единый блок для замены.
 * Сначала сохранить резервную копию актуального общего CSS.
 * В конце media/elmi/css/elmi-site.css заменить ВЕСЬ блок рассылки версии 2:
 * от его открывающего комментария до последней закрывающей скобки
 * медиазапроса (max-width: 575px) включительно. Не добавлять поверх старого
 * блока, не заменять весь общий CSS и не подключать второй файл стилей.
 * Класс elmi-newsletter уже установлен на корневом модуле.
 * Поле E-mail выбирается внутри .acym_form независимо от обёртки label:
 * поддерживаются HTML с input внутри label и HTML с input без этой обёртки.
 * Новая DOM-разметка режима «внутри» на сайте не проверялась.
 * Проверка селекторов выполнена на двух синтетических вариантах HTML.
 * HTML, action/onclick, скрытые поля, списки и доступ Special не изменяются.
 * Шрифты используются из оформления сайта; внешние подключения не добавляются.
 */

/* Голубая полоса на всю ширину: расширяется только фон, не сам контент.
 * Родительские контейнеры и их отступы намеренно не переопределяются. */
.bottom-position.elmi-newsletter {
  position: relative;
  isolation: isolate;
  padding: 60px 0;
  color: #fff;
  font-family: "Ubuntu", sans-serif;
  font-size: 16px;
  line-height: 1.5;
}

.bottom-position.elmi-newsletter::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background: #02aed6;
  box-shadow: 0 0 0 100vmax #02aed6;
  /* Обрезается только фон: сообщения об ошибках и контуры фокуса остаются видны.
   * Тень не меняет ширину разметки и не требует 100vw или отрицательных отступов. */
  clip-path: inset(0 -100vmax);
}

/* Белый цвет сохраняется и после замены формы сообщением об успехе. */
.bottom-position.elmi-newsletter > .acym_module.elmi-newsletter-form,
.bottom-position.elmi-newsletter > .acym_module.elmi-newsletter-form > .acym_fulldiv {
  color: inherit;
}

.bottom-position.elmi-newsletter .acym_fulldiv > form {
  box-sizing: border-box;
  width: 100%;
  max-width: 950px;
  margin: 0 auto;
}

/* Сброс только геометрии существующей формы. Узкие селекторы и !important
 * защищают структуру от конкурирующих правил AcyMailing и Foundation .cell.
 * Их точный конфликт нельзя установить по одному скриншоту. */
.bottom-position.elmi-newsletter .acym_module_form,
.bottom-position.elmi-newsletter .acym_module_form > .acym_introtext,
.bottom-position.elmi-newsletter .acym_module_form > .acym_form,
.bottom-position.elmi-newsletter .acym_form > .onefield.fieldacy2.acyfield_text,
.bottom-position.elmi-newsletter .onefield.fieldacy2.acyfield_text > label.cell.margin-top-1,
.bottom-position.elmi-newsletter .acym_form input[type="email"],
.bottom-position.elmi-newsletter .acym_module_form > p.acysubbuttons,
.bottom-position.elmi-newsletter p.acysubbuttons > button.btn.btn-primary.button.subbutton {
  display: block !important;
  box-sizing: border-box !important;
  position: static !important;
  inset: auto !important;
  float: none !important;
  clear: none !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  flex: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* Явные координаты: вступление сверху, ниже поле и кнопка шириной 220px.
 * Высота строк автоматическая: сообщение об ошибке не обрезается. */
.bottom-position.elmi-newsletter .acym_module_form {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) 220px !important;
  grid-template-rows: auto auto !important;
  align-items: start !important;
  gap: 0 !important;
}

.bottom-position.elmi-newsletter .acym_module_form > .acym_introtext {
  grid-column: 1 / -1 !important;
  grid-row: 1 !important;
  margin: 0 0 36px !important;
  text-align: center;
  color: #fff;
}

.bottom-position.elmi-newsletter .acym_introtext > h2 {
  margin: 0 0 32px;
  color: #fff;
  font-family: "PT Sans", sans-serif;
  font-size: 32px;
  font-weight: 700;
  line-height: 1.25;
  text-align: center;
}

.bottom-position.elmi-newsletter .acym_introtext > p {
  max-width: 900px;
  margin: 0 auto;
  color: #fff;
  font-family: "Ubuntu", sans-serif;
  font-size: 16px;
  line-height: 1.5;
  text-align: center;
}

.bottom-position.elmi-newsletter .acym_module_form > .acym_form {
  grid-column: 1 !important;
  grid-row: 2 !important;
}

/* При наличии обёртки label подпись E-mail скрыта только визуально:
 * существующая связь label/input и доступное имя сохраняются. Для HTML без
 * обёртки это правило не применяется; оформление input от label не зависит.
 * Ни скрытые inputs, ни имена полей здесь не используются. */
.bottom-position.elmi-newsletter .onefield.fieldacy2.acyfield_text > label > span.acym__users__creation__fields__title {
  display: block !important;
  position: absolute !important;
  float: none !important;
  flex: none !important;
  width: 1px !important;
  min-width: 0 !important;
  max-width: 1px !important;
  height: 1px !important;
  min-height: 0 !important;
  max-height: 1px !important;
  padding: 0 !important;
  margin: 0 !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.bottom-position.elmi-newsletter .acym_form input[type="email"] {
  height: 60px !important;
  min-height: 60px !important;
  max-height: 60px !important;
  padding: 0 18px !important;
  border: 1px solid #d6d6d6;
  border-radius: 0;
  background: #fff;
  color: #333;
  box-shadow: none;
  font-family: "Ubuntu", sans-serif;
  font-size: 16px;
  line-height: 1.5;
}

/* Ошибка остаётся в потоке под полем, без фиксированной высоты и обрезки.
 * aria-live и штатное управление видимостью AcyMailing не затрагиваются. */
.bottom-position.elmi-newsletter .onefield.fieldacy2.acyfield_text .acym__field__error__block {
  position: static !important;
  inset: auto !important;
  float: none !important;
  clear: both !important;
  box-sizing: border-box !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  color: #3b1111;
  font-size: 16px;
  line-height: 1.5;
  text-align: left;
  white-space: normal;
  overflow-wrap: anywhere;
}

.bottom-position.elmi-newsletter .acym_module_form > p.acysubbuttons {
  grid-column: 2 !important;
  grid-row: 2 !important;
  align-self: start !important;
  text-align: center;
}

/* noscript не скрывается: штатное предупреждение остаётся доступным. */
.bottom-position.elmi-newsletter p.acysubbuttons > button.btn.btn-primary.button.subbutton {
  height: 60px !important;
  min-height: 60px !important;
  max-height: 60px !important;
  padding: 0 20px !important;
  border: 0;
  border-radius: 0;
  background: #333;
  color: #fff;
  box-shadow: none;
  font-family: "Ubuntu", sans-serif;
  font-size: 16px;
  font-weight: 400;
  line-height: 1.25;
  text-transform: none;
  cursor: pointer;
}

.bottom-position.elmi-newsletter p.acysubbuttons > button.btn.btn-primary.button.subbutton:hover:not(:disabled) {
  background: #262626;
  color: #fff;
}

/* Хорошо заметный клавиатурный фокус; корень секции его не обрезает. */
.bottom-position.elmi-newsletter .acym_form input[type="email"]:focus-visible,
.bottom-position.elmi-newsletter p.acysubbuttons > button.btn.btn-primary.button.subbutton:focus-visible {
  outline: 3px solid #172e46;
  outline-offset: 3px;
}

.bottom-position.elmi-newsletter p.acysubbuttons > button.btn.btn-primary.button.subbutton:disabled {
  background: #333;
  color: #fff;
  opacity: 0.65;
  cursor: not-allowed;
}

/* Только после пользовательского взаимодействия: пустое обязательное поле
 * при первом открытии НЕ окрашивается красным. В старых браузерах остаётся
 * штатная проверка формы; обычный :invalid намеренно не используется. */
@supports selector(:user-invalid) {
  .bottom-position.elmi-newsletter .acym_form input[type="email"]:user-invalid {
    border-color: #7a1c1c;
  }
}

/* Адаптивность: до 575px включительно поле и кнопка идут друг под другом.
 * Обе строки занимают всю ширину; высота поля и кнопки остаётся 60px.
 * Родительские отступы и ширина контейнера сайта не изменяются. */
@media (max-width: 575px) {
  .bottom-position.elmi-newsletter .acym_module_form {
    grid-template-columns: minmax(0, 1fr) !important;
    grid-template-rows: auto auto auto !important;
  }

  .bottom-position.elmi-newsletter .acym_module_form > .acym_form {
    grid-column: 1 !important;
    grid-row: 2 !important;
  }

  .bottom-position.elmi-newsletter .acym_module_form > p.acysubbuttons {
    grid-column: 1 !important;
    grid-row: 3 !important;
    margin: 16px 0 0 !important;
  }
}

/* ELMI — контактная страница Joomla, добавление в КОНЕЦ media/elmi/css/elmi-site.css.
   Исходный файл не заменять. PHP, JavaScript и изменение формы не требуются.
   Область действия: класс страницы на контакте/на body ИЛИ подтверждённая
   структура com_contact с соседними .elmi-contacts + .elmi-company-details.
   Это запасной вариант для Joomla, не выводящей Page Class в корневой элемент.
   Публичная статья, меню Special и общие .elmi-contacts вне com_contact
   не затрагиваются. Для будущей LV-страницы нужна такая же структура.
   Требуется браузер с поддержкой :has() (современные Chrome, Edge, Safari, Firefox).
   Текст заголовков, контакты, реквизиты и порядок чтения остаются из HTML.
   Новый заголовок «Напишите нам» через CSS не подставляется. */

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) {
  --elmi-contact-accent: #02aed6;
  --elmi-contact-link: #0285a3;
  min-width: 0;
}

/* Широкий экран: информация 5/12, форма 7/12; убираем внешние gutters Bootstrap.
   display: contents меняет только раскладку, а не DOM и порядок табуляции. */

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) > .row {
  --bs-gutter-x: 0;
  --bs-gutter-y: 0;
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  grid-template-rows: min-content 1fr;
  align-items: start;
  gap: 16px 30px;
  margin: 0;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) > .row > .col {
  display: contents;
  flex: none;
  width: auto;
  min-width: 0;
  margin: 0;
  padding: 0;
}

/* В предоставленном DOM первая колонка содержит только служебное имя контакта
   и пустые стандартные сведения. Скрываем только эту колонку внутри scope.
   Если позднее заполнить штатные адрес/телефон Joomla в .col-md-4,
   это правило надо удалить: сейчас рабочие данные находятся в miscinfo. */

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) > .row > .col-md-4 {
  display: none;
}

/* Скрываем лишь повторный заголовок информации, определяя его по соседнему блоку.
   Заголовок формы берётся из Joomla без замены текста. */

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) > .row > .col > .contact-title-second:has(+ .com-contact__miscinfo) {
  display: none;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) > .row > .col > .com-contact__miscinfo {
  grid-column: 1;
  grid-row: 1 / 3;
  min-width: 0;
  margin: 0;
  padding: 0;
  overflow-wrap: anywhere;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) > .row > .col > .contact-title-second:has(+ .com-contact__form) {
  grid-column: 2;
  grid-row: 1;
  min-width: 0;
  margin: 0;
  padding: 0;
  color: var(--elmi-contact-accent);
  font-family: "PT Sans", Arial, Helvetica, sans-serif;
  font-size: 24px;
  font-weight: 400;
  line-height: 1.3;
  text-transform: none;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) > .row > .col > .com-contact__form {
  grid-column: 2;
  grid-row: 2;
  box-sizing: border-box;
  min-width: 0;
  margin: 0;
  padding: 20px;
  border: 1px solid #ddd;
  border-radius: 0;
  background: #f3f3f3;
  box-shadow: none;
}

/* Ссылку редактирования для авторизованного пользователя не скрываем. */

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) > .row > .col > .icons {
  grid-column: 1 / -1;
  grid-row: 3;
  justify-self: end;
  min-width: 0;
  margin: 0;
}

/* Слева — компактные блоки вместо общей трёхколоночной сетки.
   Порядок «офис → консультации → часы → реквизиты» сохранён из HTML.
   Чтобы реквизиты читались первыми, перенесите секцию в редакторе; CSS order не нужен. */

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__miscinfo > .elmi-contacts {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) !important;
  gap: 24px;
  margin: 0;
  padding: 0;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__miscinfo > .elmi-contacts > section {
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__miscinfo > .elmi-contacts > section > h2,
:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__miscinfo > .elmi-company-details > h2 {
  display: block;
  margin: 0 0 12px;
  padding: 0;
  color: var(--elmi-contact-accent);
  font-family: "PT Sans", Arial, Helvetica, sans-serif;
  font-size: 22px;
  font-weight: 400;
  line-height: 1.3;
  text-transform: none;
}

/* Убираем только декоративные значки контактных заголовков, не значки ошибок/капчи. */

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__miscinfo .elmi-contacts > section > h2 > .elmi-contact-heading-icon {
  display: none;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__miscinfo .elmi-contacts > section > p {
  margin: 0 0 10px;
  line-height: 1.6;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__miscinfo .elmi-contacts > section > p:last-child {
  margin-bottom: 0;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__miscinfo a {
  color: var(--elmi-contact-link);
  overflow-wrap: anywhere;
  text-decoration: underline;
  text-underline-offset: 3px;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__miscinfo > .elmi-company-details {
  margin: 28px 0 0;
  padding: 24px 0 0;
  border-top: 1px solid #ddd;
}

/* Реквизиты в узкой колонке: подпись и значение друг под другом, без фиксированной ширины. */

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__miscinfo > .elmi-company-details > dl {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 4px;
  margin: 0;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__miscinfo .elmi-company-details dt,
:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__miscinfo .elmi-company-details dd {
  float: none;
  width: auto;
  min-width: 0;
  margin: 0;
  overflow-wrap: anywhere;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__miscinfo .elmi-company-details dt {
  font-weight: 600;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__miscinfo .elmi-company-details dd + dt {
  margin-top: 12px;
}

/* Форма: имя и email в один ряд; тема, сообщение и прочие группы — на всю ширину.
   Поля определяем по фактическим id, без зависимости от nth-child. */

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form {
  min-width: 0;
  margin: 0;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form > fieldset {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}

/* Легенда остаётся доступной скринридеру, но не дублирует видимый заголовок формы. */

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form > fieldset > legend {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form .control-group {
  display: block;
  min-width: 0;
  margin: 0;
  padding: 0;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form > fieldset > .control-group {
  grid-column: 1 / -1;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form > fieldset > .control-group:has(#jform_contact_name),
:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form > fieldset > .control-group:has(#jform_contact_email) {
  grid-column: auto;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form .control-label {
  float: none;
  width: auto;
  min-width: 0;
  margin: 0 0 6px;
  padding: 0;
  text-align: start;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form .controls {
  float: none;
  width: auto;
  min-width: 0;
  margin: 0;
  padding: 0;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form label {
  max-width: 100%;
  margin-bottom: 0;
  font-weight: 400;
  overflow-wrap: anywhere;
}

/* Не затрагиваем checkbox, скрытые поля, CSRF и внутреннюю разметку ALTCHA.
   Состояния ошибок Joomla и HTML-атрибуты required/disabled остаются действующими. */

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form input[type="text"],
:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form input[type="email"],
:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form textarea {
  box-sizing: border-box;
  display: block;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  margin: 0;
  padding: 9px 11px;
  border: 1px solid #c7c7c7;
  border-radius: 0;
  background-color: #fff;
  color: #333;
  font: inherit;
  font-size: 16px;
  line-height: 1.4;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form input[type="text"],
:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form input[type="email"] {
  min-height: 42px;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form textarea {
  min-height: 160px;
  resize: vertical;
}

/* Явное состояние фокуса для работы с клавиатуры. */

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form input[type="text"]:focus,
:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form input[type="email"]:focus,
:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form textarea:focus {
  border-color: var(--elmi-contact-link);
  outline: 2px solid var(--elmi-contact-link);
  outline-offset: 2px;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form input[aria-invalid="true"],
:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form textarea[aria-invalid="true"],
:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form input.invalid,
:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form textarea.invalid {
  border-color: #b42318;
}

/* Капча и отправка в текущем DOM находятся ПОСЛЕ fieldset: отступы задаём отдельно.
   Ничего не обрезаем через overflow:hidden и не масштабируем виджет transform. */

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form > .control-group {
  margin-top: 18px;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form altcha-widget {
  display: block;
  max-width: 100%;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form button[type="submit"],
:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form input[type="submit"] {
  box-sizing: border-box;
  display: block;
  width: 100%;
  min-height: 44px;
  margin: 0;
  padding: 11px 18px;
  border: 1px solid var(--elmi-contact-accent);
  border-radius: 0;
  background: var(--elmi-contact-accent);
  color: #fff;
  font: inherit;
  font-size: 16px;
  font-weight: 600;
  line-height: 1.4;
  white-space: normal;
  cursor: pointer;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form button[type="submit"]:hover:not(:disabled),
:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form input[type="submit"]:hover:not(:disabled) {
  border-color: #027c98;
  background: #027c98;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form button[type="submit"]:focus-visible,
:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form input[type="submit"]:focus-visible,
:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__miscinfo a:focus-visible {
  outline: 2px solid #025b70;
  outline-offset: 3px;
}

:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form button[type="submit"]:disabled,
:is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form input[type="submit"]:disabled {
  opacity: .6;
  cursor: not-allowed;
}

/* Планшеты и телефоны: сначала сведения, затем заголовок и форма.
   Перестановки содержимого внутри сведений нет. */

@media (max-width: 991.98px) {
  :is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) > .row {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: auto;
    gap: 20px;
  }
  :is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) > .row > .col > .com-contact__miscinfo {
    grid-column: 1;
    grid-row: 1;
  }
  :is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) > .row > .col > .contact-title-second:has(+ .com-contact__form) {
    grid-column: 1;
    grid-row: 2;
    margin-top: 8px;
  }
  :is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) > .row > .col > .com-contact__form {
    grid-column: 1;
    grid-row: 3;
  }
  :is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) > .row > .col > .icons {
    grid-column: 1;
    grid-row: 4;
  }
}

/* Узкие телефоны: имя и email тоже располагаются друг под другом. */

@media (max-width: 575.98px) {
  :is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form > fieldset {
    grid-template-columns: minmax(0, 1fr);
  }
  :is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form > fieldset > .control-group:has(#jform_contact_name),
  :is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) .com-contact__form #contact-form > fieldset > .control-group:has(#jform_contact_email) {
    grid-column: 1 / -1;
  }
  :is(.com-contact.contact.elmi-contact-page, body.elmi-contact-page .com-contact.contact, .com-contact.contact:has(> .row > .col > .com-contact__miscinfo > .elmi-contacts + .elmi-company-details)) > .row > .col > .com-contact__form {
    padding: 16px;
  }
}

/* О НАС: этим фрагментом заменить предыдущий фрагмент из
   elmi-about-description-append.css в действующем elmi-site.css.
   Не заменять весь elmi-site.css и не добавлять обе версии одновременно.
   Правила действуют только внутри материала с .elmi-about-copy.
   Модули фактов и подписки, их содержимое и назначения не меняются. */

/* Убираем внутренние верхние отступы только у материала «О нас».
   Хлебные крошки, баннер и общий контейнер страницы не затрагиваем. */
.com-content-article:has(.elmi-about-copy) {
  margin-top: 0;
  padding-top: 0;
}
.com-content-article:has(.elmi-about-copy) > .astroid-section {
  margin-top: 0;
  padding-top: 0;
}

/* Две равные колонки; вместо прежних 70px оставляем сверху 24px. */
.com-content-article:has(.elmi-about-copy) > .astroid-section > .astroid-row > .astroid-column {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  column-gap: 30px;
  align-content: start;
  margin-top: 0;
  padding-top: 24px;
}

/* Текст и существующий блок фактов участвуют в общей сетке. */
.com-content-article:has(.elmi-about-copy) .astroid-article-text {
  display: contents;
}

/* Верх фотографии совпадает с верхом заголовка, без центрирования. */
.com-content-article:has(.elmi-about-copy) .astroid-article-full-image {
  grid-column: 1;
  grid-row: 1 / span 2;
  align-self: start;
  min-width: 0;
  margin: 0;
  padding: 0;
}
.com-content-article:has(.elmi-about-copy) .elmi-about-photo {
  float: none;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
}
.com-content-article:has(.elmi-about-copy) .elmi-about-photo img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
}

/* В сохранённом материале заголовок — h1, а не h2.
   Компактный размер задан явно, чтобы не наследовать крупный заголовок шаблона. */
.com-content-article:has(.elmi-about-copy) .astroid-article-title {
  grid-column: 2;
  grid-row: 1;
  align-self: start;
  min-width: 0;
  margin: 0;
  padding: 0;
}
.com-content-article:has(.elmi-about-copy) .astroid-article-title h1 {
  margin: 0 0 20px;
  font-family: "PT Sans", Arial, Helvetica, sans-serif;
  font-size: 28px;
  font-weight: 400;
  line-height: 1.2;
  color: #02aed6;
  text-transform: none;
}

/* Абзацы сохраняются справа; используем уже подключённые шрифты. */
.com-content-article:has(.elmi-about-copy) .elmi-about-copy {
  grid-column: 2;
  grid-row: 2;
  min-width: 0;
  font-family: Ubuntu, sans-serif;
  font-size: 16px;
  font-weight: 300;
  color: #333;
}
.com-content-article:has(.elmi-about-copy) .elmi-about-copy p {
  margin: 0 0 1em;
}
.com-content-article:has(.elmi-about-copy) .elmi-about-copy p:last-child {
  margin-bottom: 0;
}

/* Факты остаются ниже описания на всю ширину.
   Оформление, фон, цифры и типографику внутри модуля не переопределяем. */
.com-content-article:has(.elmi-about-copy) .elmi-about-facts {
  grid-column: 1 / -1;
  grid-row: 3;
  min-width: 0;
  clear: both;
  margin-top: 70px;
  padding-top: 0;
}

/* Планшеты и телефоны: верхний отступ 16px вместо прежних 50px. */
@media (max-width: 991.98px) {
  .com-content-article:has(.elmi-about-copy) > .astroid-section > .astroid-row > .astroid-column {
    padding-top: 16px;
  }
  .com-content-article:has(.elmi-about-copy) .elmi-about-facts {
    margin-top: 50px;
  }
}

/* Телефоны: фото, заголовок, описание и факты в одной колонке.
   Изображение сохраняет пропорции, обрезки и фиксированной высоты нет. */
@media (max-width: 767.98px) {
  .com-content-article:has(.elmi-about-copy) > .astroid-section > .astroid-row > .astroid-column {
    grid-template-columns: minmax(0, 1fr);
    column-gap: 0;
  }
  .com-content-article:has(.elmi-about-copy) .astroid-article-full-image {
    grid-column: 1;
    grid-row: 1;
    margin-bottom: 28px;
  }
  .com-content-article:has(.elmi-about-copy) .astroid-article-title {
    grid-column: 1;
    grid-row: 2;
  }
  .com-content-article:has(.elmi-about-copy) .elmi-about-copy {
    grid-column: 1;
    grid-row: 3;
  }
  .com-content-article:has(.elmi-about-copy) .elmi-about-facts {
    grid-column: 1;
    grid-row: 4;
  }
}

/* О НАС (RU): добавить после действующих правил описания в elmi-site.css.
   Обе исходные кнопки — primary: бирюзовый фон и белый текст.
   Правила действуют только внутри .elmi-about-copy; факты не меняются. */
.elmi-about-copy > .elmi-about-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin: 24px 0 0;
  padding: 0;
  min-width: 0;
  max-width: 100%;
}

/* Собственные классы без .btn: не используем оформление кнопок Astroid. */
.elmi-about-copy > .elmi-about-actions > a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  min-width: 0;
  max-width: 100%;
  margin: 0;
  padding: 10px 20px;
  border: 1px solid #02aed6;
  border-radius: 0;
  background: #02aed6;
  color: #fff;
  font-family: Ubuntu, sans-serif;
  font-size: 16px;
  font-weight: 400;
  line-height: 1.5;
  text-align: center;
  text-decoration: none;
  text-transform: none;
  white-space: normal;
  overflow-wrap: anywhere;
  box-shadow: none;
}

/* Посещённая ссылка сохраняет белый текст; наведение затемняет кнопку. */
.elmi-about-copy > .elmi-about-actions > a:visited {
  color: #fff;
}
.elmi-about-copy > .elmi-about-actions > a:hover {
  border-color: #0285a3;
  background: #0285a3;
  color: #fff;
  text-decoration: none;
}

/* Видимый фокус клавиатуры; на телефоне кнопки переносятся без обрезки. */
.elmi-about-copy > .elmi-about-actions > a:focus-visible {
  outline: 2px solid #0285a3;
  outline-offset: 3px;
}

/* О НАС: добавить один раз ПОСЛЕ действующих правил elmi-about-description-v2.css.
   Это дополнение, а не замена основного CSS.
   В материале: .elmi-about-copy, затем .elmi-about-team, затем .elmi-about-facts.
   Существующее display: contents у .astroid-article-text сохраняется.
   Меняем только размещение обёрток; настройки и внутренности JT Carousel не трогаем. */

/* Компьютеры и планшеты: команда занимает обе колонки перед фактами. */
.com-content-article:has(.elmi-about-copy) .astroid-column:has(> .astroid-article-text > .elmi-about-copy) > .astroid-article-text > .elmi-about-team {
  grid-column: 1 / -1;
  grid-row: 3;
  min-width: 0;
  width: 100%;
  box-sizing: border-box;
}

/* Сдвигаем факты только там, где действительно добавлена команда.
   Страницы без .elmi-about-team сохраняют прежнее расположение фактов. */
.com-content-article:has(.elmi-about-copy) .astroid-column:has(> .astroid-article-text > .elmi-about-copy) > .astroid-article-text:has(> .elmi-about-team) > .elmi-about-facts {
  grid-row: 4;
}

/* Телефоны: сохраняем порог одной колонки из v2 — 767.98px.
   Порядок: фото, заголовок, описание, команда, факты.
   Отступы секции и оформление модулей остаются из действующего CSS. */
@media (max-width: 767.98px) {
  .com-content-article:has(.elmi-about-copy) .astroid-column:has(> .astroid-article-text > .elmi-about-copy) > .astroid-article-text > .elmi-about-team {
    grid-row: 4;
  }
  .com-content-article:has(.elmi-about-copy) .astroid-column:has(> .astroid-article-text > .elmi-about-copy) > .astroid-article-text:has(> .elmi-about-team) > .elmi-about-facts {
    grid-row: 5;
  }
}

/* КОМАНДА: добавить один раз в конец действующего общего CSS.
   elmi-about-team-layout.css оставить без изменений: он отвечает за сетку.
   Область действия — только .elmi-about-team; номер модуля RU/LV не важен.
   Шрифты Ubuntu и PT Sans должны уже загружаться шаблоном сайта. */

/* Снимаем фактическую рамку 4px из inline-стиля JT Carousel.
   !important нужен именно для перекрытия этой inline-рамки.
   Размеры слайдов, трансформации и обёртки tiny-slider не меняем. */
.elmi-about-team .carousel-image {
  border: 0 !important;
  max-width: 100%;
  margin-inline: auto;
}

/* У figure убираем стандартный отступ; фотография остаётся целиком,
   без фиксированной высоты, обрезки и растягивания до высоты карточки. */
.elmi-about-team .carousel-image > figure.jt-carousel-img {
  margin: 0;
}

/* Адаптивность на всех экранах: не шире 300px и доступной ширины блока.
   Отдельный мобильный порог не нужен: высота меняется пропорционально. */
.elmi-about-team .carousel-image img {
  display: block;
  width: 100%;
  max-width: 300px;
  height: auto;
  margin-inline: auto;
}

/* Имя сотрудника: без изменения заголовков материала и других модулей. */
.elmi-about-team .carousel-title h4 {
  margin: 12px 0 8px;
  font-family: "PT Sans", sans-serif;
  font-size: 20px;
  font-weight: 400;
  line-height: 1.3;
  text-align: center;
}

/* JT выводит должность и биографию одним p с настоящими переводами строк.
   pre-line сохраняет эти строки и пустые строки между абзацами;
   HTML и полный текст биографии не изменяются и не сокращаются. */
.elmi-about-team .carousel-desc > p {
  margin: 0 0 16px;
  font-family: "Ubuntu", sans-serif;
  font-size: 16px;
  font-weight: 300;
  font-style: normal;
  line-height: 1.5;
  text-align: left;
  white-space: pre-line;
}

/* Выделяем первую видимую строку первого p — короткую должность.
   Это не отдельное поле: длинная должность при переносе будет выделена
   только в первой визуальной строке. Исходный текст доступен целиком. */
.elmi-about-team .carousel-desc > p:first-child::first-line {
  color: #02aed6;
  font-weight: 500;
}

/* Ссылки href="/" этот файл не исправляет и не блокирует.
   Их корректный вывод — отдельная задача шаблона/настроек JT Carousel.
   Не добавляем заголовок секции, тени, равные высоты и социальные иконки. */
   
   /* НОВОСТИ RU / LV: добавить содержимое один раз В КОНЕЦ актуального
   media/elmi/css/elmi-site.css. Не заменять существующий файл.
   В поле «Класс страницы» обоих пунктов меню новостей добавить elmi-news
   через пробел; если поле пустое — « elmi-news» с пробелом в начале.
   Учтены раздельный и склеенный классы корня блога Astroid.
   Только оформление списка: сетка, изображения, отступы раздела, баннер,
   хлебные крошки и полные статьи остаются без изменений.
   Селекторы сверены с переданным исходником блога публикаций Astroid Three;
   текущая разметка новостей на сервере не проверена. */

/* Основной текст: уже подключённый Ubuntu, без новой загрузки шрифтов. */
:is(.blog.elmi-news, .blogelmi-news) .com-content-category-blog__item,
:is(.blog.elmi-news, .blogelmi-news) .article-intro-text {
  font-family: "Ubuntu", "MS Sans Serif", Geneva, sans-serif;
  font-size: 16px;
  font-weight: 300;
  line-height: 1.5;
  letter-spacing: 0;
  color: #333;
}

:is(.blog.elmi-news, .blogelmi-news) .article-intro-text p {
  font-family: inherit;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
  color: inherit;
}

/* Заголовки новостей: PT Sans, обычное начертание, исходный регистр текста.
   Размер не меняет семантику заголовка и не затрагивает заголовок баннера. */
:is(.blog.elmi-news, .blogelmi-news) .article-title.item-title h2 {
  font-family: "PT Sans", "MS Sans Serif", Geneva, sans-serif;
  font-size: 28px;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: 0;
  text-transform: none;
  color: #02aed6;
}

:is(.blog.elmi-news, .blogelmi-news) .article-title.item-title h2 a {
  font-family: inherit;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  color: #02aed6;
  text-decoration: none;
}

:is(.blog.elmi-news, .blogelmi-news) .article-title.item-title h2 a:hover {
  color: #0285a3;
}

/* Метаданные остаются на своих местах: серый текст, бирюзовые значки.
   Категорию, даты и время чтения не скрываем. Шрифт значков не подменяем. */
:is(.blog.elmi-news, .blogelmi-news) dl.article-info,
:is(.blog.elmi-news, .blogelmi-news) dl.article-info > dd {
  font-family: "Ubuntu", "MS Sans Serif", Geneva, sans-serif;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.5;
  color: #666;
}

:is(.blog.elmi-news, .blogelmi-news) dl.article-info a {
  color: #666;
  text-decoration: none;
}

:is(.blog.elmi-news, .blogelmi-news) dl.article-info a:hover {
  color: #0285a3;
}

:is(.blog.elmi-news, .blogelmi-news) dl.article-info > dd > :is(i, span[class^="icon-"], span[class*=" icon-"]) {
  color: #02aed6;
}

/* Подробнее: залитая кнопка в стиле публикаций, без смены адреса и текста.
   Убираем только декоративные псевдоэлементы ссылки Astroid. */
:is(.blog.elmi-news, .blogelmi-news) p.readmore > a.as-readmore {
  display: inline-block;
  box-sizing: border-box;
  max-width: 100%;
  padding: 10px 20px;
  border: 1px solid #02aed6;
  border-radius: 0;
  background: #02aed6;
  color: #fff;
  font-family: "Ubuntu", "MS Sans Serif", Geneva, sans-serif;
  font-size: 16px;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0;
  text-transform: none;
  text-decoration: none;
  vertical-align: middle;
  white-space: normal;
}

:is(.blog.elmi-news, .blogelmi-news) p.readmore > a.as-readmore::before,
:is(.blog.elmi-news, .blogelmi-news) p.readmore > a.as-readmore::after {
  content: none;
}

:is(.blog.elmi-news, .blogelmi-news) p.readmore > a.as-readmore:hover,
:is(.blog.elmi-news, .blogelmi-news) p.readmore > a.as-readmore:active {
  background: #0285a3;
  border-color: #0285a3;
  color: #fff;
}

/* Видимый клавиатурный фокус: не отключаем системную обводку вне списка. */
:is(.blog.elmi-news, .blogelmi-news) .article-title.item-title h2 a:focus-visible,
:is(.blog.elmi-news, .blogelmi-news) dl.article-info a:focus-visible,
:is(.blog.elmi-news, .blogelmi-news) p.readmore > a.as-readmore:focus-visible {
  outline: 2px solid #0285a3;
  outline-offset: 3px;
}

/* Адаптивность: на узком экране разрешаем перенос длинных слов и подписи
   кнопки. Размеры шрифтов, число колонок и отступы списка не меняем. */
@media (max-width: 575.98px) {
  :is(.blog.elmi-news, .blogelmi-news) .article-title.item-title h2,
  :is(.blog.elmi-news, .blogelmi-news) .article-intro-text,
  :is(.blog.elmi-news, .blogelmi-news) p.readmore > a.as-readmore {
    overflow-wrap: anywhere;
  }
}

/* ПОЛНАЯ НОВОСТЬ RU / LV — дополнение к оформлению списка.
   Добавить содержимое один раз В КОНЕЦ актуального media/elmi/css/elmi-site.css.
   Существующий блок elmi-news.css оставить; весь файл сайта не заменять.
   Используется уже заданный класс меню elmi-news для обоих языков.
   В локальном исходнике полной публикации Astroid Three проверены:
   .com-content-article.item-page.elmi-publications,
   .astroid-article-title > h1, .astroid-article-infoblock > dl.article-info
   и .astroid-article-text. Класс меню передаётся корню полной статьи.
   Старый локальный шаблон склеивает item-page с pageclass_sfx, поэтому
   предусмотрен также .item-pageelmi-news при отсутствии начального пробела.
   Полный исходник именно новости RU / LV и результат на сервере не проверены.
   Без elmi-news на корне полной статьи этот блок намеренно не действует.
   Список новостей, баннер, шапка, подвал, хлебные крошки и сетка не меняются. */

/* Заголовок полной новости: обычный PT Sans, исходный регистр, бирюзовый.
   Шрифты уже подключены сайтом; новых загрузок и замены значков нет.
   Длинные слова переносятся и на широком, и на узком экране. */
:is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-title > h1 {
  font-family: "PT Sans", "MS Sans Serif", Geneva, sans-serif;
  font-size: 28px;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: 0;
  text-transform: none;
  color: #02aed6;
  white-space: normal;
  overflow-wrap: anywhere;
}

/* Основной текст: оформление задаётся реальному контейнеру Astroid.
   Не применяем сброс ко всем вложенным элементам: strong, b и авторские
   выделения внутри текста сохраняются. Пустые разделители не удаляем. */
:is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-text {
  font-family: "Ubuntu", "MS Sans Serif", Geneva, sans-serif;
  font-size: 16px;
  font-weight: 300;
  line-height: 1.5;
  letter-spacing: 0;
  color: #333;
}

:is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-text p {
  font-family: inherit;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
  color: inherit;
}

/* Подзаголовки только внутри текста новости: умеренная иерархия.
   Вложенное авторское жирное выделение не снимаем; заголовки других
   разделов, модулей и баннера этими селекторами не затрагиваются. */
:is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-text :is(h2, h3, h4, h5, h6) {
  font-family: "PT Sans", "MS Sans Serif", Geneva, sans-serif;
  font-weight: 400;
  line-height: 1.3;
  letter-spacing: 0;
  text-transform: none;
  color: #02aed6;
  overflow-wrap: anywhere;
}

:is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-text h2 {
  font-size: 24px;
}

:is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-text h3 {
  font-size: 22px;
}

:is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-text h4 {
  font-size: 20px;
}

:is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-text h5 {
  font-size: 18px;
}

:is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-text h6 {
  font-size: 16px;
}

/* Метаданные: серый текст 14 px; категорию, даты и время чтения оставляем.
   Семейство шрифта назначается списку и dd, но не самим значкам. */
:is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-infoblock > dl.article-info,
:is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-infoblock > dl.article-info > dd {
  font-family: "Ubuntu", "MS Sans Serif", Geneva, sans-serif;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.5;
  color: #666;
}

:is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-infoblock > dl.article-info a {
  color: #666;
}

/* В проверенном исходнике значки — span.icon-folder-open и i.far.fa-clock.
   Меняем только цвет, не font-family, начертание или содержимое значков.
   Тот же вариант icon-* охватывает значки даты в списке метаданных. */
:is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-infoblock > dl.article-info > dd > :is(i, span[class^="icon-"], span[class*=" icon-"]) {
  color: #02aed6;
}

/* Ссылки текста и состояния наведения в принятой палитре сайта. */
:is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-text a {
  color: #02aed6;
}

:is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-text a:hover,
:is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-infoblock > dl.article-info a:hover {
  color: #0285a3;
}

/* Видимый фокус для клавиатуры, только у ссылок текста и метаданных. */
:is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-text a:focus-visible,
:is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-infoblock > dl.article-info a:focus-visible {
  outline: 2px solid #0285a3;
  outline-offset: 3px;
}

/* Адаптивность: сохраняем основной текст 16 px и заголовок 28 px.
   На узких экранах разрешаем перенос длинных адресов и метаданных,
   не меняя ширину колонок, изображения, таблицы и расположение блоков. */
@media (max-width: 575.98px) {
  :is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-text,
  :is(.item-page.elmi-news, .item-pageelmi-news) .astroid-article-infoblock > dl.article-info {
    overflow-wrap: anywhere;
  }
}

/* Главная RU: дополнение к актуальному CSS, не замена общего файла.
   Селекторы ссылок действуют только на классы из подготовленного HTML. */
.elmi-editorial .elmi-welcome .elmi-welcome-more {
  display: inline-block;
  padding: 10px 20px;
  border: 0;
  border-radius: 0;
  background-color: #02aed6;
  color: #fff;
  font-family: "Ubuntu", Arial, Helvetica, sans-serif;
  font-size: 16px;
  font-weight: 400;
  line-height: 1.5;
  text-decoration: none;
}

.elmi-editorial .elmi-welcome .elmi-welcome-more:hover,
.elmi-editorial .elmi-welcome .elmi-welcome-more:focus-visible {
  background-color: #0285a3;
  color: #fff;
  text-decoration: none;
}

/* Ссылка сохраняет существующие цвет и типографику заголовка. */
.elmi-editorial .elmi-services .elmi-service h3 > .elmi-service-heading-link {
  color: inherit;
  font: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  text-decoration: none;
}

.elmi-editorial .elmi-services .elmi-service h3 > .elmi-service-heading-link:hover {
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* Сохраняем круглый div и его фон/цвет из действующего CSS.
   Ссылка наследует цвет значка: белый не задаётся на белом фоне.
   При наведении на саму ссылку применяется тёмно-голубой цвет. */
.elmi-editorial .elmi-services .elmi-service-icon > .elmi-service-icon-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  border-radius: inherit;
  color: inherit;
  text-decoration: none;
}

.elmi-editorial .elmi-services .elmi-service-icon > .elmi-service-icon-link:hover {
  color: #0285a3;
}

/* После добавления ссылки значок уже не прямой потомок div.
   Восстанавливаем только прежние размеры, не меняя шрифт Font Awesome. */
.elmi-editorial .elmi-services .elmi-service-icon > .elmi-service-icon-link > i {
  color: inherit;
  font-size: 40px;
  line-height: 1;
}

/* Видимый клавиатурный фокус не зависит от состояния наведения. */
.elmi-editorial .elmi-welcome .elmi-welcome-more:focus-visible,
.elmi-editorial .elmi-services .elmi-service-heading-link:focus-visible,
.elmi-editorial .elmi-services .elmi-service-icon-link:focus-visible {
  outline: 2px solid #0285a3;
  outline-offset: 4px;
}

/* Телефоны: сохраняем прежний размер значка внутри неизменённого круга. */
@media (max-width: 575.98px) {
  .elmi-editorial .elmi-services .elmi-service-icon > .elmi-service-icon-link > i {
    font-size: 32px;
  }
}

/* Единый главный заголовок статьи Astroid RU / LV.
   ЗАМЕНА последнего блока в актуальном media/elmi/css/elmi-site.css:
   от комментария «Единый главный заголовок статьи Astroid RU / LV»
   до его последней закрывающей скобки включительно (в переданном файле
   этот блок заканчивается в конце файла). Не добавлять обе версии подряд.
   Это только фрагмент: весь общий CSS сайта НЕ заменять.

   DevTools подтвердил .astroid-article-title > h1 и корень статьи
   .com-content-article.item-pageelmi-k2-list: item-page склеен с суффиксом.
   Основной селектор не зависит от этого суффикса и работает для RU / LV.
   Правило шаблона .astroid-framework h1 имеет специфичность (0,1,1),
   как прежний .astroid-article-title > h1, и перекрывает его по каскаду.
   Префикс .astroid-framework повышает специфичность до (0,2,1):
   подтверждённое правило шаблона перекрывается без !important и без ID.

   Второй селектор нужен для существующего более специфичного оформления
   полной публикации: префикс повышает его специфичность до (0,5,1).
   Меняем только типографику главных H1 статей Astroid; баннеры, внутренние
   H5, боковые модули, карточки, отступы и сетку не переопределяем.
   PT Sans уже подключён сайтом; новых загрузок шрифтов нет. */
.astroid-framework .astroid-article-title > h1,
.astroid-framework .com-content-article.item-page.elmi-publications .astroid-article-title > h1 {
  font-family: "PT Sans", "MS Sans Serif", Geneva, sans-serif;
  font-size: 28px;
  font-weight: 400;
  font-style: normal;
  line-height: 1.2;
  letter-spacing: normal;
  text-transform: none;
  color: #02aed6;
  /* На узких экранах сохраняем 28 px и разрешаем перенос длинных слов. */
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: normal;
}

/* ELMI — компактная шапка RU/LV.
   Добавить ОДИН РАЗ в конец media/elmi/css/elmi-site.css, не заменяя файл.
   Селекторы сверены с сохранённым HTML Astroid Three и экспортами RU/LV.
   В Header Section задан лишний внешний padding 15px сверху и снизу.
   Убираем только этот слой: внутренние отступы header и размеры логотипов
   остаются штатными. Фиксированную высоту не задаём: текст не обрезается.
   ID одинаков в обоих предоставленных стилях; класс повышает приоритет
   над генерируемым правилом по ID, которое подключается после общего CSS. */
#hs-1529472563843.astroid-header-section {
  padding-top: 0;
  padding-bottom: 0;
}

/* Языковой модуль занимает ширину своей колонки и выравнивается вправо.
   Ниже 992px колонка уже имеет ширину 12/12; контакты и сетку не меняем.
   Правило действует только в верхней полосе, а не в подвале или меню. */
.elmi-topbar .mod-languages {
  display: flex;
  justify-content: flex-end;
  width: 100%;
}

/* Один промежуток между LV и RU вместо суммы отступов списка и ссылок.
   Высота бирюзовой полосы, порядок языков и подчёркивание сохраняются. */
.elmi-topbar .mod-languages ul.lang-inline {
  display: flex;
  flex-wrap: nowrap;
  justify-content: flex-end;
  align-items: center;
  gap: 12px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.elmi-topbar .mod-languages ul.lang-inline > li {
  margin: 0;
  padding: 0;
}

.elmi-topbar .mod-languages ul.lang-inline > li > a {
  padding: 0;
  white-space: nowrap;
}

/* Только кнопки открытия мобильного меню в обычной и липкой шапке.
   Делаем толще линии, а не текст меню. Штатные анимации и трансформации
   не заменяем; кнопку закрытия внутри выдвижной панели не затрагиваем. */
:is(#astroid-header, #astroid-sticky-header) .header-mobilemenu-trigger .inner,
:is(#astroid-header, #astroid-sticky-header) .header-mobilemenu-trigger .inner::before,
:is(#astroid-header, #astroid-sticky-header) .header-mobilemenu-trigger .inner::after {
  height: 3px;
  background-color: #292e31;
}

:is(#astroid-header, #astroid-sticky-header) .header-mobilemenu-trigger .inner {
  margin-top: -1.5px;
}

/* Мобильный режим и планшеты: breakpoint lg = 992px в обоих экспортах.
   Увеличиваем область нажатия до 44px, не увеличивая сам рисунок.
   Симметричный правый распорный блок сохраняет центрирование логотипа. */
@media (max-width: 991.98px) {
  :is(#astroid-header, #astroid-sticky-header) .header-mobilemenu-trigger > button.button {
    min-width: 44px;
    min-height: 44px;
  }

  #astroid-header > .d-flex > .min-w-30,
  #astroid-sticky-header > .container > .astroid-header > .min-w-30 {
    min-width: 44px;
  }
}

/* ELMI — компактный основной подвал, общие правила RU / LV.
   Добавить ОДИН РАЗ в конец текущего media/elmi/css/elmi-site.css.
   Не заменять весь файл. Шапка, подписка, copyright и число новостей не меняются.
   ID основной строки одинаков в двух экспортированных стилях Astroid.
   Класс секции повышает специфичность относительно штатного правила #ar-…;
   !important и фиксированная высота не нужны. */

/* В Layout у этой строки было 90px сверху и 50px снизу.
   Соседняя строка copyright с собственными отступами остаётся нетронутой. */
.elmi-site-footer #ar-941582093674805 {
  padding-top: 48px;
  padding-bottom: 16px;
}

.elmi-site-footer #ar-941582093674805 > .astroid-column {
  min-width: 0;
}

/* Уплотняем контакты, сохраняя естественные переносы новых строк сайта/Facebook. */
.elmi-site-footer .elmi-footer-contact img {
  max-width: 100%;
  height: auto;
  margin-bottom: 16px;
}

.elmi-site-footer .elmi-footer-contact-row {
  column-gap: 10px;
}

.elmi-site-footer .elmi-footer-contact-row + .elmi-footer-contact-row {
  margin-top: 8px;
}

.elmi-site-footer .elmi-footer-contact-row > div {
  min-width: 0;
  overflow-wrap: anywhere;
}

.elmi-site-footer .elmi-footer-partners > h3 {
  margin-bottom: 20px;
}

.elmi-site-footer .elmi-footer-partners > img {
  max-width: 100%;
  height: auto;
  margin-bottom: 12px;
}

.elmi-site-footer .elmi-footer-partners > img:last-child {
  margin-bottom: 0;
}

/* elmi-footer-news-title стоит на ОБЁРТКЕ модуля, а не на самом h3. */
.elmi-site-footer .elmi-footer-news.elmi-footer-news-title {
  margin-bottom: 0;
}

.elmi-site-footer .elmi-footer-news > .module-title {
  margin: 0 0 20px;
  color: #02aed6;
  font-size: 24px;
  line-height: 1.3;
}

.elmi-site-footer .elmi-footer-news > .mod-articles {
  margin-bottom: 0;
}

.elmi-site-footer .elmi-footer-news a {
  overflow-wrap: anywhere;
}

/* До 992px штатные колонки идут одна под другой; уменьшаем промежутки. */
@media (max-width: 991.98px) {
  .elmi-site-footer #ar-941582093674805 {
    padding-top: 28px;
    padding-bottom: 12px;
  }

  .elmi-site-footer .elmi-footer-partners,
  .elmi-site-footer .elmi-footer-news {
    margin-top: 24px;
  }
}

/* На узком экране партнёры остаются в ряд с переносом, без растяжения значков. */
@media (max-width: 575.98px) {
  .elmi-site-footer .elmi-footer-partners {
    gap: 12px;
  }

  .elmi-site-footer .elmi-footer-partners > h3 {
    margin: 0;
  }

  .elmi-site-footer .elmi-footer-partners > img {
    flex: 0 0 auto;
    margin: 0;
  }
}
