/* Тема default — блоки страницы.

   Счётчики, таблица-справочник, галерея, цитата, HTML-вставка, слайдер,
   партнёры, «поделиться», структура учреждения, мероприятия, вакансии,
   карта точек, капча. Последняя часть публичного слоя. */

/* ============================================================
   Блоки библиотеки: счётчики, таблица, галерея, цитата, вставка,
   слайдер, партнёры, «Поделиться», структура.
   ============================================================ */

/* --- Счётчики --- */

.counters { margin: var(--space-4) 0; }

.counters__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
    gap: var(--space-3);
}

.counters__item {
    text-align: center;
    padding: var(--space-3) var(--space-2);
    background: var(--color-bg-soft);
    border-radius: var(--radius);
}

.counters__value {
    margin: 0;
    font-size: 2.25rem;
    line-height: 1.1;
    font-weight: 700;
    color: var(--color-accent);
}

.counters__label { margin: var(--space-1) 0 0; font-weight: 500; }
.counters__note { margin: var(--space-1) 0 0; font-size: 0.875rem; color: var(--color-text-muted); }

/* --- Таблица-справочник --- */
/* Прокрутка внутри своего контейнера: широкая таблица не должна
   вызывать горизонтальную прокрутку страницы (ПП 102). */

.table-block { margin: var(--space-4) 0; }

.table-block__scroll {
    overflow-x: auto;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
}

.table-block__table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9375rem;
}

.table-block__table th,
.table-block__table td {
    padding: var(--space-1) var(--space-2);
    text-align: left;
    border-bottom: 1px solid var(--color-border);
}

.table-block__table th {
    background: var(--color-bg-soft);
    font-weight: 600;
}

/* --- Галерея --- */

.gallery { margin: var(--space-4) 0; }

.gallery__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr));
    gap: var(--space-2);
}

.gallery__figure { margin: 0; }
.gallery__image { width: 100%; height: auto; border-radius: var(--radius); }
.gallery__caption { margin-top: var(--space-1); font-size: 0.875rem; color: var(--color-text-muted); }
.gallery__empty { color: var(--color-text-muted); }

/* --- Цитата --- */

.quote {
    margin: var(--space-4) 0;
    padding: var(--space-3);
    border-left: 4px solid var(--color-accent);
    background: var(--color-bg-soft);
    border-radius: 0 var(--radius) var(--radius) 0;
}

.quote__text { margin: 0; font-size: 1.0625rem; }
.quote__author { margin-top: var(--space-2); font-size: 0.9375rem; color: var(--color-text-muted); }
.quote__role::before { content: ", "; }

/* --- HTML-вставка --- */

.html-block { margin: var(--space-4) 0; }
.html-block__body table { width: 100%; border-collapse: collapse; }
.html-block__body th,
.html-block__body td { padding: var(--space-1) var(--space-2); border: 1px solid var(--color-border); }

/* --- Слайдер --- */
/* Без скрипта все слайды видны списком: содержимое доступно всегда. */

.slider { margin: var(--space-4) 0; }
.slider__slide { margin-bottom: var(--space-3); }
.slider__image { width: 100%; height: auto; border-radius: var(--radius); }
.slider__title { margin: var(--space-2) 0 var(--space-1); }
.slider__lead { margin: 0 0 var(--space-2); color: var(--color-text-muted); }

/* Режим карусели включает только скрипт. */
.slider--enhanced .slider__slide { display: none; margin-bottom: 0; }
.slider--enhanced .slider__slide--current { display: block; }

.slider__controls {
    display: flex;
    gap: var(--space-2);
    margin-top: var(--space-2);
}

.slider__button {
    font: inherit;
    font-size: 0.9375rem;
    padding: var(--space-1) var(--space-2);
    background: transparent;
    color: var(--color-accent);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    cursor: pointer;
}

.slider__button:hover { background: var(--color-bg-soft); }

/* --- Партнёры --- */

.partners { margin: var(--space-4) 0; }

.partners__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-3);
    align-items: center;
}

.partners__logo { max-height: 3.5rem; width: auto; }

/* --- Поделиться --- */

.share { margin: var(--space-4) 0; }
.share__heading { font-size: 1rem; margin-bottom: var(--space-1); }

.share__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
}

.share__link {
    display: inline-block;
    padding: var(--space-1) var(--space-2);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    text-decoration: none;
    font-size: 0.9375rem;
}

.share__link:hover { background: var(--color-bg-soft); }

/* --- Структура учреждения --- */

.structure { margin: var(--space-4) 0; }

.structure__list {
    list-style: none;
    margin: 0;
    padding-left: 0;
}

.structure__list .structure__list {
    padding-left: var(--space-4);
    border-left: 2px solid var(--color-border);
    margin-top: var(--space-1);
}

.structure__item { padding: var(--space-1) 0; }
.structure__name { font-weight: 500; }
.structure__head { display: block; font-size: 0.9375rem; color: var(--color-text-muted); }

/* --- Мероприятия --- */

.events { margin: var(--space-4) 0; }
.events__group { margin: var(--space-3) 0 var(--space-1); font-size: 1.0625rem; }

.events__list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.events__item {
    padding: var(--space-2) 0;
    border-bottom: 1px solid var(--color-border);
}

/* Прошедшие приглушены, но остаются читаемыми: контраст не ниже AA. */
.events__item--past { color: var(--color-text-muted); }

.events__date { margin: 0 0 var(--space-1); font-size: 0.875rem; color: var(--color-text-muted); }
.events__time { margin-left: var(--space-1); }
.events__title { margin: 0 0 var(--space-1); font-size: 1.0625rem; }
.events__place, .events__speakers { margin: 0; font-size: 0.9375rem; }
.events__text { margin: var(--space-1) 0 0; }
.events__text > :first-child { margin-top: 0; }
.events__text > :last-child { margin-bottom: 0; }
.events__empty { color: var(--color-text-muted); }

/* --- Вакансии --- */

.vacancies { margin: var(--space-4) 0; }

.vacancies__list { list-style: none; margin: 0; padding: 0; }

.vacancies__item {
    padding: var(--space-3) 0;
    border-bottom: 1px solid var(--color-border);
}

.vacancies__title { margin: 0 0 var(--space-1); font-size: 1.125rem; }
.vacancies__dept, .vacancies__salary { margin: 0 0 var(--space-1); font-size: 0.9375rem; }
.vacancies__salary { font-weight: 600; }
.vacancies__text { margin-bottom: var(--space-2); }
.vacancies__empty { color: var(--color-text-muted); }

/* Форма отклика в details: не занимает место, пока не нужна, и работает
   без JS. */
.vacancies__summary {
    cursor: pointer;
    font-weight: 500;
    color: var(--color-accent);
    padding: var(--space-1) 0;
}

.vacancies__respond form { margin-top: var(--space-2); max-width: 32rem; }

/* --- Карта точек: картинка со ссылкой, а не сценарий (T-15, 2.5) --- */
/* Живой JS API официально требует unsafe-eval; снимать защиту со всего сайта
   ради одной картинки мы не будем. Оформление рассчитано на <img>, который
   до согласия категории «Карты» не имеет src вовсе. */

.branches__map {
    position: relative;
    margin: 0;
    /* Место под карту занято ДО согласия и до загрузки: плашка и картинка
       одного размера, поэтому страница не прыгает под курсором. */
    aspect-ratio: 4 / 3;
    max-height: 420px;
    border-radius: var(--radius);
    overflow: hidden;
    background: var(--color-bg-soft);
}

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

.branches__map-image[hidden] {
    display: none;
}

/* Плашка на месте карты: объясняет, почему картинки нет, и предлагает
   показать её один раз — не включая категорию навсегда. */
.branches__map-gate {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    height: 100%;
    padding: var(--space-2);
    text-align: center;
}

.branches__map-gate[hidden] {
    display: none;
}

.branches__map-note {
    margin: 0;
    max-width: 34rem;
    font-size: 0.9375rem;
    color: var(--color-text-muted);
}

.branches__map-button {
    font: inherit;
    font-weight: 600;
    min-height: 2.75rem;
    padding: var(--space-1) var(--space-3);
    background: var(--color-accent);
    color: #fff;
    border: 2px solid var(--color-accent);
    border-radius: var(--radius);
    cursor: pointer;
}

.branches__map-button:hover {
    background: var(--color-accent-dark);
}

/* Ссылка в приложение карт: задача «как проехать» решается там, где её и
   решают, — в картах на телефоне. Видна всегда, согласие ей не нужно:
   пока по ней не щёлкнули, ни одного обращения к чужому домену. */
.branches__map-figure {
    margin: 0 0 var(--space-4);
}

.branches__map-caption {
    margin-top: var(--space-1);
    font-size: 0.9375rem;
}

/* --- Капча в форме --- */

.form-block__captcha {
    margin-bottom: var(--space-3);
}
