/**
 * PF Filter — стили, которые поставляет плагин.
 * Вся остальная визуальная стилизация — ответственность темы/верстальщика.
 */
.pf-hidden {
	display: none !important;
}

/**
 * До инициализации плагина в этих блоках видна «голая» вёрстка шаблонов
 * (группы «Checkbox Checkbox», сортировка «Опция Опция», пагинация «1 2»).
 * Скрыты, пока скрипт не построит их и не поставит класс pf-ready.
 * visibility, а не display: место под блоки сохраняется, вёрстка не прыгает.
 */
[pf-filter="output"]:not(.pf-ready),
[pf-sort=""]:not(.pf-ready),
[pf-pagination="pages"]:not(.pf-ready),
[pf-pagination="more"]:not(.pf-ready) {
	visibility: hidden;
}

/**
 * Сообщения о состоянии («Загрузка…», «Ничего не найдено», «Ищем…»,
 * «Возможно, вы искали…») скрипты прячут при запуске, но запускаются они
 * только после загрузки всех скриптов страницы — до этого были бы видны
 * тексты-заглушки из вёрстки. Показывает их всегда только скрипт, поэтому до
 * его запуска они скрыты: pf-filter.js ставит на html класс pf-filter-ready,
 * pfs-search.js — pf-search-ready (каждый — уже спрятав свои).
 */
html:not(.pf-filter-ready):not(.pf-search-pending) [pf-list="loading"],
html:not(.pf-filter-ready) [pf-list="empty"],
html:not(.pf-search-ready):not(.pf-search-pending) [pf-search="loading"],
html:not(.pf-search-ready) [pf-search="empty"],
html:not(.pf-search-ready) [pf-search="suggest"],
html:not(.pf-search-ready) [pf-search="all"],
html.pf-search-pending [pf-search="dropdown"] [pf-search="loading"] {
	display: none !important;
}

/**
 * Страница с поисковым запросом в адресе (?q=): тема ничего не знает о
 * запросе и выводит в списке обычные карточки каталога. Пока не пришли
 * настоящие результаты, на html стоит класс pf-search-pending (его ставит
 * скрипт в head — PF_Search::print_pending_script()): список, сообщения о
 * результате и счётчик скрыты (visibility — место сохраняется, вёрстка не
 * прыгает), а индикаторы загрузки — [pf-list="loading"] и [pf-search="loading"]
 * вне окна живого поиска — видны с первой отрисовки (правило выше их не
 * прячет). Класс снимает pf-filter.js, когда пришли результаты.
 */
html.pf-search-pending [pf-list=""],
html.pf-search-pending [pf-list="count"],
html.pf-search-pending [pf-list="not-empty"] {
	visibility: hidden;
}

/* Индикатор может лежать и внутри скрытого блока (например, в not-empty). */
html.pf-search-pending [pf-list="loading"],
html.pf-search-pending [pf-search="loading"] {
	visibility: visible;
}

/**
 * Класс для скрытия элементов состояния (pf-list="loading", pf-list="empty" и т.п.).
 * Плагин сам гарантирует что элемент скрыт — не полагается на то что тема
 * пропишет для него display:none по умолчанию. Когда элемент должен появиться,
 * этот класс снимается, и элемент отображается так, как заложено в теме
 * (её собственная разметка/анимация показа — плагин её не трогает).
 */
.is-hidden {
	display: none !important;
}

/**
 * Значение группы (zero_values:'disable' в настройках группы — см.
 * PF_Attributes::ZERO_VALUES_OPTIONS), у которого нет ни одной подходящей
 * записи под текущий выбор остальных фильтров. Предустановленный внешний
 * вид на случай, если тема сама ничего для .is-disabled не задала —
 * НО не должен и не может перебить стиль темы: обёрнут в :where(), у
 * которого нулевая специфичность, поэтому ЛЮБОЕ правило темы для этого же
 * класса (даже одиночный селектор класса, без !important) побеждает
 * независимо от порядка подключения стилей.
 */
:where(.is-disabled) {
	opacity: 0.4;
	pointer-events: none;
}
