/*
 * Каталог героев (content/heroes_list.tpl.php): наборы, стихии, фильтр, сетка карточек.
 * Карточка — та же, что у «Популярных героев» на главной (.ep_pop_* в empires.css,
 * макет !-design/design-index-heroes.png); здесь только то, чем каталог отличается.
 * Статья каталога — тёмная панель, как на странице героя и в «Популярных героях».
 */

/* Тёмная статья ============================================================ */

#body section article:has(.heroes_icon, .heroes_list) {
    border: 1px solid var(--ep-line);
    background: linear-gradient(180deg, rgba(16, 33, 66, .88) 0%, rgba(10, 22, 46, .9) 100%);
    -webkit-backdrop-filter: blur(6px);
    backdrop-filter: blur(6px);
    color: var(--ep-text-inv);
}
#body section article:has(.heroes_icon, .heroes_list) h1 { color: #fff; }
#body section article:has(.heroes_icon, .heroes_list) .category_description { color: #cbd6ea; }
#body section article:has(.heroes_icon, .heroes_list) .category_description a { color: var(--ep-sky); }

/* Наборы (Сортировка / Популярные / Костюмы / Герои месяца) — вкладками ===== */

#controller_wrap:has(.heroes_icon) h1 + .content_datasets { margin-top: -6px; }
#controller_wrap:has(.heroes_icon) .content_datasets ul {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 0 0 16px;
    padding: 0;
}
#controller_wrap:has(.heroes_icon) .content_datasets ul li {
    float: none;
    height: auto;
    margin: 0;
    padding: 0;
    font-size: 14px;
    line-height: 20px;
}
#controller_wrap:has(.heroes_icon) .content_datasets ul li > a,
#controller_wrap:has(.heroes_icon) .content_datasets ul li > div {
    display: block;
    padding: 7px 14px;
    border: 1px solid var(--ep-line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .05);
    color: #cfd9ee;
    font-weight: 500;
    text-decoration: none;
}
#controller_wrap:has(.heroes_icon) .content_datasets ul li > a:hover {
    border-color: var(--ep-sky);
    background: rgba(59, 130, 246, .18);
    color: #fff;
    text-decoration: none;
}
#controller_wrap:has(.heroes_icon) .content_datasets ul li.active > a,
#controller_wrap:has(.heroes_icon) .content_datasets ul li.active > div {
    border-color: var(--ep-accent);
    background: var(--ep-accent);
    color: #fff;
}

/* Стихии — плашками с эмблемой =========================================== */

.content_categories:has(.heroes_icon) {
    margin: 0 0 12px;
    padding: 0;
    border: 0;
    background: none;
}
.content_categories ul.heroes_icon {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.content_categories ul.heroes_icon li {
    --e: #a052e6;
    height: auto;
    margin: 0;
    padding: 0;
    background: none;
    font-size: 15px;
    line-height: 20px;
}
.content_categories ul.heroes_icon li.ogon      { --e: #e0352b; }
.content_categories ul.heroes_icon li.svjatynja { --e: #f0a52a; }
.content_categories ul.heroes_icon li.tma       { --e: #a052e6; }
.content_categories ul.heroes_icon li.priroda   { --e: #3cb043; }
.content_categories ul.heroes_icon li.lyod      { --e: #2f8be6; }
.content_categories ul.heroes_icon li a {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 7px 16px 7px 10px;
    border: 1px solid color-mix(in srgb, var(--e) 55%, transparent);
    border-radius: 999px;
    background: linear-gradient(180deg, #13284f, #0c1a36);
    color: #e8eefc;
    font-weight: 500;
    text-decoration: none;
}
.content_categories ul.heroes_icon li a::before {
    content: '';
    flex: 0 0 22px;
    height: 22px;
    background: url("/static/images/heroes/el/purple.webp") no-repeat center / contain;
    filter: drop-shadow(0 0 3px var(--e));
}
.content_categories ul.heroes_icon li.ogon a::before      { background-image: url("/static/images/heroes/el/red.webp"); }
.content_categories ul.heroes_icon li.svjatynja a::before { background-image: url("/static/images/heroes/el/yellow.webp"); }
.content_categories ul.heroes_icon li.priroda a::before   { background-image: url("/static/images/heroes/el/green.webp"); }
.content_categories ul.heroes_icon li.lyod a::before      { background-image: url("/static/images/heroes/el/blue.webp"); }
.content_categories ul.heroes_icon li a:hover,
.content_categories ul.heroes_icon li.active a {
    border-color: var(--e);
    box-shadow: 0 0 10px -2px var(--e);
    color: #fff;
}

/* Фильтр ================================================================== */

/*
 * Разметка — стандартная ui/filter-panel (поля float по 49%). Здесь она перестроена сеткой
 * и сгруппирована через order: списки → умения (мультивыбор) → даты и костюм → флажки-тумблеры
 * → «Тип умения» кнопками на всю ширину. Списки — плагин chosen, их тоже перекрашиваем.
 */
.heroes-filter {
    --f-bg:    rgba(7, 16, 36, .55);
    --f-line:  rgba(126, 162, 230, .28);
    --f-focus: var(--ep-sky);
}
.content_categories:has(.heroes_icon) + .filter-panel { margin-top: 0; }
.heroes-filter.filter-panel {
    margin: 0 0 18px;
    border: 1px solid var(--ep-line);
    border-radius: 10px;
    background: rgba(255, 255, 255, .04);
    color: var(--ep-text-inv);
}

/* «Показать фильтр» / «Закрыть» */
.heroes-filter .filter-link a {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    border-radius: 10px;
    color: #dbe7ff;
    font-weight: 500;
    text-decoration: none;
}
.heroes-filter .filter-link a:hover { background: rgba(59, 130, 246, .12); color: #fff; }
.heroes-filter .filter-link a span {
    padding-left: 24px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2360a5fa'%3E%3Cpath d='M3 5h18l-7 8.500V20l-4-2v-4.500z'/%3E%3C/svg%3E") no-repeat left center / 18px;
}
.heroes-filter .filter-container { padding: 18px 20px 20px; }
.heroes-filter .filter-close { top: 14px; right: 16px; font-size: 13px; line-height: 20px; }
.heroes-filter .filter-close a { color: var(--ep-muted-inv); text-decoration: none; }
.heroes-filter .filter-close a::after { content: ' \2715'; }
.heroes-filter .filter-close a:hover { color: #fff; }

/* Сетка полей */
.heroes-filter .fields {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px 16px;
    padding-top: 24px;
}
.heroes-filter .fields .field,
.heroes-filter .fields .field:nth-child(odd),
.heroes-filter .fields .field:nth-child(even) {
    float: none;
    width: auto;
    min-height: 0;
    margin: 0;
}
.heroes-filter .fields .title {
    margin-bottom: 6px;
    color: var(--ep-muted-inv);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: .04em;
    text-transform: uppercase;
    text-shadow: none;
}

.heroes-filter .f_title         { order: 0; }
.heroes-filter .ft_list         { order: 1; }
.heroes-filter .ft_listbitmask  { order: 2; }
.heroes-filter .f_month,
.heroes-filter .f_cost_class    { order: 3; }
.heroes-filter .ft_checkbox     { order: 4; }
.heroes-filter .f_skill         { order: 5; grid-column: 1 / -1; }

/* Текстовые поля и даты */
.heroes-filter input.input,
.heroes-filter input.form-control,
.heroes-filter select {
    box-sizing: border-box;
    width: 100%;
    height: 36px;
    margin: 0;
    padding: 0 10px;
    border: 1px solid var(--f-line);
    border-radius: 8px;
    background: var(--f-bg);
    color: var(--ep-text-inv);
    font-size: 14px;
    box-shadow: none;
}
.heroes-filter input.form-control::placeholder { color: #7f90b0; }
.heroes-filter input.form-control:focus,
.heroes-filter select:focus { border-color: var(--f-focus); outline: none; box-shadow: 0 0 0 3px rgba(96, 165, 250, .2); }

/* Месяц героя: «от [ ] до [ ]» в одну строку */
.heroes-filter .f_month .value {
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--ep-muted-inv);
    font-size: 13px;
}
.heroes-filter .f_month input.form-control { flex: 1 1 0; min-width: 0; width: auto; }

/* Флажки (Актуальность, Костюм, Не введён в игру) — тумблером рядом с подписью */
.heroes-filter .ft_checkbox {
    display: flex;
    flex-direction: row-reverse;
    justify-content: flex-end;
    align-items: center;
    gap: 10px;
    align-self: end;
    min-height: 36px;
    cursor: pointer; /* щелчок по подписи тоже переключает флажок — скрипт в content/heroes_list */
    user-select: none;
}
.heroes-filter .ft_checkbox .title { margin: 0; color: var(--ep-text-inv); font-size: 14px; letter-spacing: 0; text-transform: none; }
.heroes-filter .ft_checkbox:hover .title { color: #fff; }
.heroes-filter .ft_checkbox input[type=checkbox] {
    -webkit-appearance: none;
    appearance: none;
    position: relative;
    flex: 0 0 38px;
    width: 38px;
    height: 22px;
    margin: 0;
    border: 0;
    border-radius: 11px;
    background: #4a5d82;
    cursor: pointer;
    transition: background .15s;
}
.heroes-filter .ft_checkbox input[type=checkbox]::after {
    content: '';
    position: absolute;
    top: 3px;
    left: 3px;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .5);
    transition: transform .15s;
}
.heroes-filter .ft_checkbox input[type=checkbox]:checked { background: var(--ep-accent-hi); }
.heroes-filter .ft_checkbox input[type=checkbox]:checked::after { transform: translateX(16px); }
.heroes-filter .ft_checkbox input[type=checkbox]:focus-visible { outline: 2px solid var(--f-focus); outline-offset: 2px; }

/* Тип умения — кнопки-переключатели */
.heroes-filter .f_skill { padding-top: 14px; border-top: 1px solid var(--ep-line); }
.heroes-filter .input_checkbox_list {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    overflow: visible;
}
.heroes-filter .input_checkbox_list label {
    position: relative;
    float: none;
    display: inline-flex;
    margin: 0;
    padding: 0;
    color: inherit;
    font-size: 13px;
}
/* Порядок: сходные рядом, пары «↑ / ↓» друг за другом. Значения (номера битов поля skill) менять нельзя —
   на них завязаны сохранённые данные героев, поэтому сортируем только отображение */
.heroes-filter .input_checkbox_list label:has(input[value="1"])  { order: 1; }  /* Одна цель */
.heroes-filter .input_checkbox_list label:has(input[value="2"])  { order: 2; }  /* Цель и соседи */
.heroes-filter .input_checkbox_list label:has(input[value="3"])  { order: 3; }  /* Все враги */
.heroes-filter .input_checkbox_list label:has(input[value="4"])  { order: 4; }  /* Случайные цели */
.heroes-filter .input_checkbox_list label:has(input[value="6"])  { order: 5; }  /* Доп. урон */
.heroes-filter .input_checkbox_list label:has(input[value="5"])  { order: 6; }  /* Урон со временем */
.heroes-filter .input_checkbox_list label:has(input[value="7"])  { order: 7; }  /* Обход защиты */
.heroes-filter .input_checkbox_list label:has(input[value="27"]) { order: 8; }  /* Вампиризм */
.heroes-filter .input_checkbox_list label:has(input[value="29"]) { order: 9; }  /* Паразит */
.heroes-filter .input_checkbox_list label:has(input[value="9"])  { order: 10; } /* Атака ↑ */
.heroes-filter .input_checkbox_list label:has(input[value="16"]) { order: 11; } /* Атака ↓ */
.heroes-filter .input_checkbox_list label:has(input[value="10"]) { order: 12; } /* Защита ↑ */
.heroes-filter .input_checkbox_list label:has(input[value="17"]) { order: 13; } /* Защита ↓ */
.heroes-filter .input_checkbox_list label:has(input[value="14"]) { order: 14; } /* Мана ↑ */
.heroes-filter .input_checkbox_list label:has(input[value="19"]) { order: 15; } /* Мана ↓ */
.heroes-filter .input_checkbox_list label:has(input[value="25"]) { order: 16; } /* Лечение */
.heroes-filter .input_checkbox_list label:has(input[value="20"]) { order: 17; } /* Лечение ↓ */
.heroes-filter .input_checkbox_list label:has(input[value="8"])  { order: 18; } /* Шанс крита ↑ */
.heroes-filter .input_checkbox_list label:has(input[value="18"]) { order: 19; } /* Точность ↓ */
.heroes-filter .input_checkbox_list label:has(input[value="11"]) { order: 20; } /* Снижение урона */
.heroes-filter .input_checkbox_list label:has(input[value="12"]) { order: 21; } /* Контратака */
.heroes-filter .input_checkbox_list label:has(input[value="13"]) { order: 22; } /* Насмешка */
.heroes-filter .input_checkbox_list label:has(input[value="26"]) { order: 23; } /* Воскрешение */
.heroes-filter .input_checkbox_list label:has(input[value="24"]) { order: 24; } /* Очищение недугов */
.heroes-filter .input_checkbox_list label:has(input[value="15"]) { order: 25; } /* Иммунитет к недугам */
.heroes-filter .input_checkbox_list label:has(input[value="23"]) { order: 26; } /* Снятие усилений */
.heroes-filter .input_checkbox_list label:has(input[value="21"]) { order: 27; } /* Иммунитет к усилениям */
.heroes-filter .input_checkbox_list label:has(input[value="22"]) { order: 28; } /* Безумие */
.heroes-filter .input_checkbox_list label:has(input[value="28"]) { order: 29; } /* Прислужники */
.heroes-filter .input_checkbox_list label:has(input[value="30"]) { order: 30; } /* Против прислужников */
.heroes-filter .input_checkbox_list label:has(input[value="31"]) { order: 31; } /* Связь стихий */

.heroes-filter .input_checkbox_list input {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
    margin: 0;
}
.heroes-filter .input_checkbox_list label span {
    padding: 5px 11px;
    border: 1px solid var(--f-line);
    border-radius: 999px;
    background: var(--f-bg);
    color: #cfd9ee;
    line-height: 18px;
    cursor: pointer;
    user-select: none;
}
.heroes-filter .input_checkbox_list label:hover span { border-color: var(--ep-sky); color: #fff; }
.heroes-filter .input_checkbox_list input:checked + span { border-color: var(--ep-accent); background: var(--ep-accent); color: #fff; }
.heroes-filter .input_checkbox_list input:focus-visible + span { outline: 2px solid var(--f-focus); outline-offset: 2px; }

/* chosen: одиночный и множественный выбор */
.heroes-filter .chosen-container { font-size: 14px; }
.heroes-filter .chosen-container-single .chosen-single,
.heroes-filter .chosen-container-multi .chosen-choices {
    box-sizing: border-box;
    min-height: 36px;
    border: 1px solid var(--f-line);
    border-radius: 8px;
    background: var(--f-bg);
    box-shadow: none;
    color: var(--ep-text-inv);
}
.heroes-filter .chosen-container-single .chosen-single { height: 36px; padding: 0 0 0 10px; line-height: 34px; }
.heroes-filter .chosen-container-single .chosen-default,
.heroes-filter .chosen-container-multi .chosen-choices li.search-field input[type=text] { color: #7f90b0; }
.heroes-filter .chosen-container-single .chosen-single div { right: 4px; }
.heroes-filter .chosen-container-single .chosen-single div b { filter: invert(1) brightness(1.4); background-position-y: 7px; }
.heroes-filter .chosen-container-single .chosen-single abbr { top: 11px; filter: invert(1); }
.heroes-filter .chosen-container-multi .chosen-choices { padding: 3px 6px; }
.heroes-filter .chosen-container-multi .chosen-choices li.search-field input[type=text] {
    height: 28px;
    margin: 0;
    padding: 0 4px;
    font-family: inherit;
    font-size: 14px;
}
.heroes-filter .chosen-container-multi .chosen-choices li.search-choice {
    margin: 3px 4px 3px 0;
    padding: 4px 22px 4px 8px;
    border: 0;
    border-radius: 6px;
    background: var(--ep-accent);
    box-shadow: none;
    color: #fff;
    line-height: 16px;
}
.heroes-filter .chosen-container-multi .chosen-choices li.search-choice .search-choice-close { top: 5px; right: 4px; filter: invert(1); }
.heroes-filter .chosen-container-active .chosen-single,
.heroes-filter .chosen-container-active .chosen-choices { border-color: var(--f-focus); box-shadow: 0 0 0 3px rgba(96, 165, 250, .2); }
.heroes-filter .chosen-container-active.chosen-with-drop .chosen-single { border-radius: 8px 8px 0 0; background: var(--f-bg); }
.heroes-filter .chosen-container .chosen-drop {
    margin-top: -1px;
    border: 1px solid var(--f-focus);
    border-top: 0;
    border-radius: 0 0 8px 8px;
    background: #0e1c38;
    box-shadow: 0 10px 24px rgba(0, 0, 0, .45);
}
.heroes-filter .chosen-container-multi .chosen-drop { margin-top: 2px; border-top: 1px solid var(--f-focus); border-radius: 8px; }
.heroes-filter .chosen-container .chosen-search input[type=text] {
    border: 1px solid var(--f-line);
    border-radius: 6px;
    background-color: var(--f-bg);
    color: var(--ep-text-inv);
}
.heroes-filter .chosen-container .chosen-results { color: #cfd9ee; color-scheme: dark; }
.heroes-filter .chosen-container .chosen-results li { padding: 7px 10px; line-height: 18px; }
.heroes-filter .chosen-container .chosen-results li.highlighted { background: var(--ep-accent); color: #fff; }
.heroes-filter .chosen-container .chosen-results li.result-selected { color: var(--ep-sky); }
.heroes-filter .chosen-container .chosen-results li.no-results { background: none; color: var(--ep-muted-inv); }

/* Кнопки */
.heroes-filter .buttons {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 16px;
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid var(--ep-line);
}
.heroes-filter .buttons .button-submit {
    float: none;
    padding: 9px 22px;
    border: 0;
    border-radius: 8px;
    background: var(--ep-accent);
    color: #fff;
    font-size: 14px;
    font-weight: 500;
}
.heroes-filter .buttons .button-submit:hover { background: var(--ep-accent-hi); }
.heroes-filter .buttons .link { float: none; height: auto; margin: 0; line-height: 20px; color: var(--ep-muted-inv); }
.heroes-filter .buttons .link a { color: var(--ep-sky); }
.heroes-filter .buttons .link a:hover { color: #fff; }

@media screen and (max-width: 900px) {
    .heroes-filter .fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media screen and (max-width: 560px) {
    .heroes-filter .fields { grid-template-columns: 1fr; }
    .heroes-filter .filter-container { padding: 14px; }
}

/* Сетка карточек ========================================================== */

.heroes_list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(136px, 1fr));
    gap: 18px 14px;
    margin-bottom: 16px;
}
.heroes_list .ep_pop_photo { text-decoration: none; }

.heroes_list .ep_pop_info { flex: 1 1 auto; }
.heroes_list a.ep_pop_name {
    display: block;
    color: #fff;
    text-decoration: none;
}
.heroes_list a.ep_pop_name:hover { color: var(--e-hi); }

/* «ГМ (июнь 2017)», «Герой ивента» */
.heroes_note {
    margin-top: 3px;
    color: #cbd6ea;
    font-size: 12px;
    line-height: 16px;
}
.heroes_note a { color: var(--e-hi); text-decoration: none; }
.heroes_note a:hover { color: #fff; text-decoration: underline; }

/* Кнопка сравнения: id «add,…» — добавить, «del,…» — уже в сравнении */
.heroes_list a.heroes_cmp {
    display: block;
    margin-top: auto;
    padding: 4px 6px;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 6px;
    background: rgba(255, 255, 255, .06);
    color: #dbe7ff;
    font-size: 12px;
    line-height: 16px;
    text-align: center;
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.heroes_list .ep_pop_stars + a.heroes_cmp,
.heroes_list .heroes_note + a.heroes_cmp { margin-top: 8px; }
.heroes_list a.heroes_cmp:hover { border-color: var(--e-hi); background: color-mix(in srgb, var(--e) 35%, transparent); color: #fff; }
.heroes_list a.heroes_cmp[id^="del,"] { border-color: var(--e); background: var(--e); color: #fff; }

/* Подсказка у кнопки сравнения: под кнопкой и без событий мыши — иначе, оказавшись
   под курсором, она вызывает mouseleave у кнопки, прячется и снова появляется (мигает) */
.tooltip-block {
    position: absolute;
    pointer-events: none;
    z-index: 400;
    display: none;
    width: 160px;
    padding: 6px 9px;
    border: 1px solid var(--ep-line);
    border-radius: 6px;
    background: #0e1c38;
    box-shadow: 0 6px 16px rgba(0, 0, 0, .35);
    color: #dbe7ff;
    font-size: 11px;
    line-height: 14px;
}

/* Подгрузка при прокрутке и пагинация ===================================== */

.heroes_more {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    margin: 10px 0 20px;
    color: var(--ep-muted-inv);
    font-size: 14px;
}
.heroes_more[hidden], .heroes_more_btn[hidden] { display: none; }
.heroes_more_btn {
    display: inline-block;
    padding: 8px 20px;
    border-radius: 8px;
    background: var(--ep-accent);
    color: #fff;
    font-size: 14px;
    font-weight: 500;
    text-decoration: none;
    cursor: pointer;
}
.heroes_more_btn:hover { background: var(--ep-accent-hi); color: #fff; text-decoration: none; }
.heroes_scroll .heroes_pager { display: none; }

@media screen and (max-width: 480px) {
    .heroes_list { grid-template-columns: repeat(auto-fill, minmax(112px, 1fr)); gap: 12px 10px; }
    .heroes_list .ep_pop_info { padding: 7px 8px; }
    .content_categories ul.heroes_icon li a { padding: 6px 12px 6px 8px; font-size: 14px; }
}
