/* css/components/history-page.css — Страница истории генераций /pro-history.
   Порядок подключения всех стилей задан в layout/head.php — он важен. */
/* =============================================================
   /pro-history — заменяет прежнюю боковую панель historyTab/historyPanel
   Список сгруппирован по батчам (.history-group = один клик Generate).
   ============================================================= */

/* Карточка-контейнер вокруг фильтров+действий — без неё контролы просто
   плавали голыми виджетами прямо на фоне страницы (замечание пользователя
   2026-08-12: "не в стиле сайта, не под ширину контента"). Та же визуальная
   логика, что у .history-group ниже (граница+скругление), чтобы вся
   страница читалась как набор согласованных карточек, а не разрозненные
   контролы + отдельные боксы результатов. */
.history-toolbar {
  border: 1px solid rgba(124, 92, 255, 0.15);
  border-radius: 10px;
  background: rgba(124, 92, 255, 0.04);
  padding: 16px;
  margin: 14px 0 20px;
}

.history-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 14px 20px;
  align-items: center;
}

/* Select'ы в этом фильтре — через custom-select.js (enhanceAllSelectsIn(),
   см. js/pages/pro-history.js) — единственный способ на сайте получить одинаковый
   стилизованный СПИСОК опций во всех браузерах: нативный <select>-попап
   стилизовать нельзя вообще (платформенное ограничение, не CSS-пробел),
   custom-select.js рисует свой HTML-список поверх скрытого нативного
   select. Ниже — только компактная ширина под короткие лейблы фильтров
   (Generator/Platform/Date), вместо базового button.custom-select-trigger
   {width:230px} — тот же приём, что .select-model/.thumb-categories. */
.history-filters .custom-select-wrap {
  width: auto;
}

.history-filters .custom-select-trigger {
  width: auto;
  min-width: 130px;
}

/* Тот же box-model, что .custom-select-trigger (padding/border-radius/
   font-size один в один) — иначе высота поля Search не совпадает с
   триггерами селектов рядом (замечание пользователя 2026-08-12). */
.history-search-field input {
  box-sizing: border-box;
  width: 100%;
  padding: 12px 14px;
  border-radius: 12px;
  border: 1px solid rgba(124, 92, 255, 0.2);
  background: linear-gradient(180deg, rgba(20,28,45,0.95), rgba(12,18,32,0.98));
  color: #ffffff;
  font-size: 14px;
  font-family: inherit;
  outline: none;
  transition: border-color .2s ease;
}

.history-search-field input:focus {
  border-color: var(--neon-cyan);
}

.history-filters .sel {
  margin-left: 0;
  flex: 0 1 auto;
  min-width: 0;
}

/* Колонка "лейбл сверху, поле снизу" — та же структура, что .sel у
   Generator/Platform/Date, вместо строки "Search: [поле]" вровень (из-за
   которой блок не совпадал ни по высоте, ни по расположению лейбла). */
.history-search-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
  align-items: stretch;
  flex: 0 1 auto;
  min-width: 220px;
}

.history-search-field span {
  white-space: nowrap;
  font-size: 12px;
  overflow: hidden;
  text-overflow: ellipsis;
}

.history-search-field input {
  min-width: 220px;
}

.history-page-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid rgba(124, 92, 255, 0.12);
}

/* Тот же приём, что .history-row-toggle-icon у отдельных строк — крупнее
   базового текста кнопки и вращается на 90° в раскрытом состоянии
   (#historyToggleAllBtn.is-all-expanded ставится в js/pages/pro-history.js). */
.history-toggle-all-icon {
  display: inline-block;
  font-size: 16px;
  line-height: 1;
  transition: transform .15s ease;
}

#historyToggleAllBtn.is-all-expanded .history-toggle-all-icon {
  transform: rotate(90deg);
}

.history-groups {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.history-group {
  border: 1px solid rgba(124, 92, 255, 0.15);
  border-radius: 10px;
  overflow: hidden;
}

.history-group-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  background: rgba(124, 92, 255, 0.08);
  flex-wrap: wrap;
}

.history-group-title strong {
  color: var(--neon-green);
  margin-right: 8px;
}

.history-group-meta {
  color: var(--neon-blue);
  font-size: 12px;
}

.history-group-actions {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}

.history-group-actions button {
  background: transparent;
  border: 1px solid rgba(124, 92, 255, 0.25);
  border-radius: 6px;
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--text-muted);
  cursor: pointer;
}

.history-group-actions button:hover {
  color: var(--neon-cyan);
  border-color: var(--neon-cyan);
}

.history-group-delete:hover {
  color: var(--neon-red) !important;
  border-color: var(--neon-red) !important;
}

.history-group-rows {
  display: flex;
  flex-direction: column;
}

/* --text-muted (не --text-dim) по всему блоку результатов — --text-dim
   читался тяжело на тёмном фоне (замечание пользователя 2026-08-12). */
.history-row {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 8px 14px;
  font-size: 12px;
  color: var(--text-muted);
  border-top: 1px solid rgba(124, 92, 255, 0.1);
}

/* Шеврон разворачивает Description/Keywords (см. .history-row-details
   ниже) — disabled и полупрозрачен, если у записи обоих полей нет
   (data-toggle-id рендерится без обработчика ценности в js/pages/pro-history.js).
   Крупнее и ярче базового — при 12px/--text-dim/opacity:0.6 его было
   практически не видно (замечание пользователя 2026-08-12). */
.history-row-toggle {
  flex-shrink: 0;
  background: transparent;
  border: none;
  color: var(--text-muted);
  cursor: pointer;
  padding: 4px;
  margin-top: -2px;
  font-size: 18px;
  line-height: 1;
}

.history-row-toggle:hover:not(:disabled) {
  color: var(--neon-cyan);
}

.history-row-toggle:disabled {
  opacity: 0.25;
  cursor: default;
}

.history-row-toggle-icon {
  display: inline-block;
  transition: transform .15s ease;
}

.history-row.is-expanded .history-row-toggle-icon {
  transform: rotate(90deg);
}

/* flex-wrap row, не column: .history-row-main/.history-row-meta должны
   остаться на ОДНОЙ строке, как в свёрнутом виде раньше (пользователь
   явно отметил, что компактный один-строчный вид "смотрится хорошо") —
   .history-row-details ниже принудительно уходит на новую строку через
   flex-basis:100%, не меняя это поведение для первых двух полей. */
.history-row-body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 12px;
}

.history-row-main {
  flex: 1 1 auto;
  min-width: 100px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.history-row-main strong {
  color: var(--neon-green);
}

.history-row-meta {
  flex-shrink: 0;
  color: var(--neon-blue);
  opacity: 0.85;
  white-space: nowrap;
}

/* display:none по умолчанию + показ ТОЛЬКО через .history-row.is-expanded
   ниже — единственный источник истины для видимости. Раньше здесь было
   безусловное display:flex, которое перебивало атрибут [hidden] (та же
   специфичность class vs attribute — при равенстве специфичности
   авторский CSS всегда побеждает встроенный UA-стиль [hidden]{display:none},
   так что раскрытие/сворачивание физически не могло работать — баг,
   найден и исправлен по замечанию пользователя 2026-08-12). Цвет текста —
   явно --text-muted (не наследуемый от .history-row --text-dim), иначе
   Description/Keywords сложно читать на тёмном фоне. */
.history-row-details {
  display: none;
  flex-basis: 100%;
  margin-top: 4px;
  padding: 8px 10px;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(124, 92, 255, 0.1);
  flex-direction: column;
  gap: 6px;
  white-space: normal;
  color: var(--text-muted);
}

.history-row.is-expanded .history-row-details {
  display: flex;
}

.history-row-detail-label {
  display: block;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--neon-blue);
  margin-bottom: 2px;
}

.history-row-delete {
  background: transparent;
  border: none;
  color: var(--text-dim);
  cursor: pointer;
  flex-shrink: 0;
  opacity: 0.6;
}

.history-row-delete:hover {
  opacity: 1;
  color: var(--neon-red);
}


