/* ══════════════════════════════════════════════════════════════════════
   ПОИСК ПО ПЕРЕПИСКЕ С АСТРОЛОГОМ — оформление

   Лупа стоит в шапке окна разговора. По нажатию шапка «переворачивается»
   в строку поиска: имя, подпись и счётчики вопросов уходят, на их место
   встаёт поле. Так сделано в Телеграме, и человек узнаёт этот жест
   без объяснений.

   Цвета — те же переменные, что у самого окна (css/qa-dialog.css).
   Своих «магических» значений тут нет: всё либо из палитры окна,
   либо запасное значение на случай, если файл окна не подключён.
   ══════════════════════════════════════════════════════════════════════ */

/* ─────────────────────────────────────────── кнопка-лупа в шапке */
.qas-open {
  flex: none;
  width: 38px; height: 38px;
  display: flex; align-items: center; justify-content: center;
  padding: 0; line-height: 0;          /* у кнопки есть свой отступ от браузера */
  border-radius: 12px; cursor: pointer;
  border: 1px solid rgba(255, 255, 255, .14);
  background: rgba(255, 255, 255, .05);
  color: var(--qad-text-dim, #A79CBA);
  transition: color .16s, border-color .16s, background .16s;
}
.qas-open:hover {
  color: var(--qad-gold-300, #F3D79A);
  border-color: rgba(232, 194, 112, .45);
  background: rgba(232, 194, 112, .10);
}
.qas-open:focus-visible { outline: 2px solid var(--qad-gold-500, #E8C270); outline-offset: 2px; }
.qas-open svg { width: 18px; height: 18px; display: block; }

/* Пока идёт поиск, старое содержимое шапки не убираем из потока (иначе
   шапка «прыгает» по высоте) — гасим его и отключаем нажатия. */
.qad-head.qas-on .qad-head-l,
.qad-head.qas-on .qad-chips,
.qad-head.qas-on .qas-open {
  opacity: 0; pointer-events: none;
  transition: opacity .14s ease;
}

/* ─────────────────────────────────────────── строка поиска */
.qas-bar {
  position: absolute; inset: 0; z-index: 2;
  display: flex; align-items: center; gap: 8px;
  padding: 0 14px;
  opacity: 0; transform: translateY(-5px); pointer-events: none;
  transition: opacity .18s ease, transform .18s ease;
}
.qad-head.qas-on .qas-bar { opacity: 1; transform: none; pointer-events: auto; }
/* Атрибут hidden должен побеждать display:flex — иначе строка живёт
   в шапке невидимой и перехватывает нажатия по счётчикам. */
.qas-bar[hidden] { display: none; }

/* ── само поле: лупа + ввод + счётчик + крестик ── */
.qas-field {
  flex: 1 1 auto; min-width: 0;
  display: flex; align-items: center; gap: 8px;
  height: 42px; padding: 0 8px 0 12px;
  border-radius: 14px;
  border: 1px solid rgba(255, 255, 255, .12);
  background: rgba(10, 8, 18, .45);
  transition: border-color .16s;
}
.qas-field:focus-within { border-color: rgba(232, 194, 112, .45); }
.qas-ico { flex: none; width: 16px; height: 16px; color: var(--qad-text-dim, #A79CBA); }

.qas-input {
  flex: 1 1 auto; min-width: 0;
  border: 0; padding: 0; background: none; outline: none;
  color: var(--qad-text-hi, #F5F1FA);
  font-family: inherit;
  /* ровно 16px, иначе iOS зумит страницу при фокусе */
  font-size: 16px; line-height: 1.3;
  -webkit-appearance: none; appearance: none;
}
.qas-input::placeholder { color: var(--qad-text-ph, #6E657F); }
/* родной крестик Safari/Chrome убираем — у нас свой, одинаковый везде */
.qas-input::-webkit-search-cancel-button,
.qas-input::-webkit-search-decoration { -webkit-appearance: none; display: none; }

/* Счётчик «3/12». Цифры моноширинные — иначе строка дёргается при
   переключении между совпадениями. */
.qas-count {
  flex: none; white-space: nowrap;
  font-size: 13px; font-variant-numeric: tabular-nums;
  color: var(--qad-text-dim, #A79CBA);
}
.qas-count.is-none { color: #F3B4AB; }
.qas-count[hidden] { display: none; }

/* Кружок «идёт поиск» — на месте счётчика, пока человек печатает. */
.qas-spin {
  flex: none; width: 15px; height: 15px; border-radius: 99px;
  border: 2px solid rgba(232, 194, 112, .25);
  border-top-color: var(--qad-gold-500, #E8C270);
  animation: qasSpin .68s linear infinite;
}
.qas-spin[hidden] { display: none; }
@keyframes qasSpin { to { transform: rotate(360deg); } }

/* Крестик внутри поля — стирает слово, поиск остаётся открытым. */
.qas-clear {
  flex: none; width: 26px; height: 26px; border: 0; border-radius: 99px;
  display: flex; align-items: center; justify-content: center; cursor: pointer;
  padding: 0; line-height: 0;
  background: rgba(255, 255, 255, .10); color: var(--qad-text-soft, #CDC5DA);
  transition: background .16s, color .16s;
}
.qas-clear:hover { background: rgba(255, 255, 255, .18); color: var(--qad-text-hi, #F5F1FA); }
.qas-clear[hidden] { display: none; }
.qas-clear svg { width: 12px; height: 12px; display: block; }

/* ── стрелки и закрытие ── */
.qas-nav, .qas-close {
  flex: none; width: 34px; height: 34px; border-radius: 11px; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  padding: 0; line-height: 0;
  border: 1px solid rgba(255, 255, 255, .12);
  background: rgba(255, 255, 255, .04);
  color: var(--qad-text-soft, #CDC5DA);
  transition: color .16s, border-color .16s, background .16s, opacity .16s;
}
.qas-nav:hover:not([disabled]), .qas-close:hover {
  color: var(--qad-gold-300, #F3D79A);
  border-color: rgba(232, 194, 112, .45);
  background: rgba(232, 194, 112, .10);
}
.qas-nav:focus-visible, .qas-close:focus-visible {
  outline: 2px solid var(--qad-gold-500, #E8C270); outline-offset: 2px;
}
/* Стрелки гаснут, когда переключать нечего, но с экрана не пропадают:
   исчезающие кнопки сдвигают строку и по ним промахиваешься пальцем. */
.qas-nav[disabled] { opacity: .3; cursor: default; }
.qas-nav svg { width: 18px; height: 18px; display: block; }
.qas-close svg { width: 16px; height: 16px; display: block; }
.qas-close { border-color: transparent; background: none; }

/* ─────────────────────────────────────────── подсветка найденного */
/* Все совпадения — сиреневые: этот цвет читается и на тёмном пузыре
   астролога, и на золотом пузыре вопроса. Золотую подсветку на золотом
   фоне не видно вовсе, поэтому золото отдано только текущему совпадению. */
mark.qas-hit {
  background: rgba(107, 60, 196, .45);
  color: inherit; border-radius: 4px; padding: 0 1px;
  box-shadow: inset 0 0 0 1px rgba(203, 182, 255, .40);
}
.qad-msg--user mark.qas-hit {
  background: rgba(60, 34, 110, .42);
  box-shadow: inset 0 0 0 1px rgba(203, 182, 255, .35);
}
/* Текущее — сплошное золото с тёмным текстом: видно с одного взгляда,
   куда именно перекинуло (то же правило, что у кнопок — js-rules §9). */
mark.qas-hit.is-current,
.qad-msg--user mark.qas-hit.is-current {
  background: linear-gradient(180deg, var(--qad-gold-200, #F6DFAA), var(--qad-gold-500, #E8C270));
  color: var(--qad-gold-ink, #2A1F0E);
  box-shadow: 0 0 0 2px rgba(232, 194, 112, .35);
  animation: qasPulse .45s ease-out;
}
@keyframes qasPulse {
  from { box-shadow: 0 0 0 7px rgba(232, 194, 112, 0); }
  to   { box-shadow: 0 0 0 2px rgba(232, 194, 112, .35); }
}

/* ─────────────────────────────────────────── адаптив */
@media (max-width: 720px) {
  .qas-open { width: 34px; height: 34px; border-radius: 11px; }
  .qas-open svg { width: 17px; height: 17px; }
  .qas-nav svg { width: 17px; height: 17px; }
  .qas-close svg { width: 15px; height: 15px; }
  .qas-bar { padding: 0 10px; gap: 6px; }
  .qas-field { height: 38px; padding: 0 6px 0 10px; gap: 6px; border-radius: 12px; }
  .qas-nav, .qas-close { width: 32px; height: 32px; border-radius: 10px; }
  .qas-count { font-size: 12.5px; }
}
@media (max-width: 390px) {
  .qas-bar { padding: 0 8px; gap: 4px; }
  .qas-nav, .qas-close { width: 30px; height: 30px; }
  .qas-field { padding-left: 9px; }
}

@media (prefers-reduced-motion: reduce) {
  .qas-bar { transition: none; }
  .qas-spin { animation-duration: 1.4s; }
  mark.qas-hit.is-current { animation: none; }
}
