/* Атрибут hidden всегда скрывает элемент — даже с утилитами .d-flex/.d-block (у них !important). */
[hidden]{display:none!important}
/* Остаточные стили поверх Tabler (assets/vendor/tabler-core) — только то,
   для чего в Tabler нет готового класса. Подключается после tabler.min.css. */

/* IBM Plex Sans/Mono из docs/chertyozh-geo-mvp.html, самоxостинг (latin+cyrillic,
   без latin-ext/vietnamese/greek/cyrillic-ext — приложение русско-английское). */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("vendor/fonts/ibmplexmono-400-cyrillic.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("vendor/fonts/ibmplexmono-400-latin.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("vendor/fonts/ibmplexmono-500-cyrillic.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("vendor/fonts/ibmplexmono-500-latin.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("vendor/fonts/ibmplexmono-600-cyrillic.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("vendor/fonts/ibmplexmono-600-latin.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("vendor/fonts/ibmplexsans-400-cyrillic.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("vendor/fonts/ibmplexsans-400-latin.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("vendor/fonts/ibmplexsans-500-cyrillic.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("vendor/fonts/ibmplexsans-500-latin.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("vendor/fonts/ibmplexsans-600-cyrillic.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("vendor/fonts/ibmplexsans-600-latin.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("vendor/fonts/ibmplexsans-700-cyrillic.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("vendor/fonts/ibmplexsans-700-latin.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Фирменный акцент из docs/chertyozh-geo-mvp.html (--accent/--good/--warn).
   Переопределяем только базовые переменные — производные (-lt, -fg, -subtle,
   -text-emphasis...) Tabler сам пересчитывает через color-mix(). Шрифтовые
   переменные тоже даём через них — Tabler ссылается на них во всех своих
   компонентах (кнопки, формы, код), переопределять каждый селектор не нужно. */
:root{
  --tblr-primary:#1F6F78;
  --tblr-success:#2F7A57;
  --tblr-warning:#9A5B12;
  --tblr-font-sans-serif:"IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;
  --tblr-font-monospace:"IBM Plex Mono", ui-monospace, "SF Mono", monospace;
}

.form-honeypot{position:absolute;left:-9999px;top:-9999px}

.star-btn{background:none;border:0;padding:0 4px;cursor:pointer;font-size:1rem;color:var(--tblr-border-color);line-height:1}
.star-btn.active,.star-btn:hover{color:var(--tblr-yellow)}

th a.sort-link{color:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:3px}
th a.sort-link:hover{text-decoration:underline}
.sort-arrow{font-size:.7em;opacity:.6}

.search-box{max-width:260px}
.resp-preview{max-width:420px}

tr.row-hidden{display:none}

/* =====================================================================
   Редизайн под dashboard_clone.html («ГЕОранк»-палитра): синий акцент,
   более крупный радиус скругления карточек, Inter поверх IBM Plex Sans
   (самохостинг остаётся фолбэком — если Google Fonts недоступен/заблокирован,
   всё равно рендерится знакомый самохостинг-шрифт, а не системный дефолт).
   Переопределяем только переменные Tabler — компоненты (карточки, бейджи,
   кнопки, сайдбар) сами пересчитываются через var(), второй раз их стили
   не дублируем. Старую палитру (--tblr-primary:#1F6F78 и т.д.) выше не
   трогаем построчно, а перебиваем ниже — так книзу диффа виден именно
   осознанный редизайн, а не правка исходных значений. */
:root{
  --tblr-primary:#2563eb;            /* blue-600 — акцент dashboard_clone.html */
  --tblr-success:#10b981;            /* emerald-500 — дельта-бейджи "+N" */
  --tblr-warning:#f59e0b;            /* amber-500 — напр. карточка "Тональность" */
  --tblr-font-sans-serif:"Inter","IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;

  --tblr-card-border-color:var(--tblr-gray-100);
}

/* Внешний @import Google Fonts убран (B22): он стоял не первым правилом и
   потому всё равно игнорировался браузерами, а при блокировке CDN давал 404.
   Inter подключится локальными @font-face, когда файлы появятся в
   assets/vendor/fonts/; до тех пор работает IBM Plex Sans из того же каталога. */

/* --tblr-card-border-radius/--tblr-navbar-active-* заданы у Tabler не только
   на :root, а ещё раз локально на самих компонентах (.card{--tblr-card-
   border-radius:...} и т.п.) — при равной специфичности выигрывает порядок
   в исходном CSS Tabler, не наш :root ниже по файлу. Поэтому здесь — прямые
   правила на сами классы, не переменные; так гарантированно рисуется поверх. */
.card{
  border-radius:.75rem;              /* rounded-xl (12px), как в dashboard_clone.html */
}

/* Сайдбар: скруглённые "таблетки" пунктов меню с отступом от края,
   активный — заливка primary/8% + синий текст вместо чёрного (тот же приём,
   что bg-blue-50/text-blue-600 в dashboard_clone.html). Секции
   ("Дашборд"/"Аналитика"/"Управление") — мелкий серый uppercase-лейбл. */
.navbar-vertical .nav-link{
  border-radius:.5rem;
  font-weight:500;
  margin:1px .5rem;
}
.navbar-vertical .nav-link.active,
.navbar-vertical .nav-link.active .nav-link-icon,
.navbar-vertical .nav-link.active .nav-link-title{
  color:#2563eb;
}
.navbar-vertical .nav-link.active{
  background-color:rgba(37,99,235,.08);
  font-weight:600;
  border-inline-start-color:transparent;
}
.navbar-vertical .nav-section-title{
  font-size:.6875rem;
  font-weight:600;
  letter-spacing:.04em;
  text-transform:uppercase;
  color:var(--tblr-gray-400);
  padding:1rem 1.25rem .375rem;
}

/* Карточки чуть просторнее и с тем же мягким тенями, что уже задавал Tabler
   (--tblr-shadow-card совпадает по силе с shadow-sm из dashboard_clone.html —
   трогать не нужно), только заголовок карточки — чуть крупнее/жирнее текст,
   как card-title в референсе. */
.card-title{
  font-weight:600;
}

/* Кнопки — тот же радиус, что и у карточек/полей ввода (rounded-lg),
   Tabler по умолчанию берёт --tblr-border-radius (6px) — этого недостаточно
   для визуального единства с более крупным радиусом карточек выше. */
.btn, .form-control, .form-select{
  border-radius:.5rem;
}

/* Таблицы: приглушаем горизонтальные линии и добавляем hover — тот же эффект
   разрежённости/воздуха, что у таблиц-каталогов в dashboard_clone.html. */
.table thead th{
  font-size:.6875rem;
  font-weight:600;
  letter-spacing:.03em;
  text-transform:uppercase;
  color:var(--tblr-gray-400);
  border-bottom-width:1px;
}
.table-hover>tbody>tr:hover>*{
  --tblr-table-bg-type:var(--tblr-gray-50);
}

/* KPI-карточки — прямой перенос анатомии карточек из dashboard_clone.html
   (мелкий серый лейбл + иконка сверху, крупное число + цветная дельта снизу),
   не просто перекраска Tabler-компонента: такого компонента в Tabler нет,
   единственный способ получить тот же результат — свой класс. Используется
   пока только на "Позициях" (positions.php, ряд по текущей выборке), но
   класс общий — при желании переиспользуется и на project.php. */
.kpi-row{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));
  gap:1rem;
  margin-bottom:1rem;
}
.kpi-card{
  background:#fff;
  border:1px solid var(--tblr-gray-100);
  border-radius:.75rem;
  box-shadow:var(--tblr-shadow-card);
  padding:1.125rem 1.25rem;
}
.kpi-card__top{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  margin-bottom:.625rem;
}
.kpi-card__label{
  font-size:.8125rem;
  font-weight:500;
  color:var(--tblr-gray-500);
}
.kpi-card__icon{
  color:var(--tblr-gray-400);
  font-size:1.1rem;
  line-height:1;
}
.kpi-card__bottom{
  display:flex;
  align-items:baseline;
  gap:.5rem;
  flex-wrap:wrap;
}
.kpi-card__value{
  font-size:1.75rem;
  font-weight:700;
  color:var(--tblr-gray-800, #1f2937);
  line-height:1;
}
.kpi-card__value--text{
  font-size:1.125rem;
}
.kpi-card__sub{
  font-size:.8125rem;
  color:var(--tblr-gray-500);
  margin-left:auto;
}
.kpi-card__delta{
  font-size:.8125rem;
  font-weight:600;
}
.kpi-card__delta.up{color:var(--tblr-success)}
.kpi-card__delta.down{color:var(--tblr-danger)}
.kpi-card__delta.flat{color:var(--tblr-gray-400)}

/* Сегментированный переключатель — тот же приём, что и период
   Неделя/Месяц/Квартал/Год в dashboard_clone.html: серая "таблетка"-трек,
   активный пункт — белая подложка с тенью. Переиспользуем для переключателя
   режима графика (Анализ бренда/сайта/ответов) вместо квадратного btn-group. */
.segmented{
  display:inline-flex;
  background:var(--tblr-gray-50);
  border:1px solid var(--tblr-gray-100);
  border-radius:.625rem;
  padding:3px;
  gap:2px;
}
.segmented a, .segmented button{
  border:0;
  background:transparent;
  padding:.3rem .75rem;
  border-radius:.4375rem;
  font-size:.8125rem;
  font-weight:500;
  color:var(--tblr-gray-500);
  text-decoration:none;
  cursor:pointer;
  white-space:nowrap;
}
.segmented a:hover, .segmented button:hover{
  color:var(--tblr-gray-800, #1f2937);
}
.segmented a.active, .segmented button.active{
  background:#fff;
  color:var(--tblr-gray-800, #1f2937);
  box-shadow:var(--tblr-shadow-card);
}

/* ТЗ_Раздел_Источники.md FR2-SRC-007 — "Настроить таблицу" (адаптивные
   колонки + закреплённая шапка), подтверждено живьём дважды (Конкуренты и
   Источники) — общий паттерн, не только для sources.php. */
.table-sticky-head thead th{
  position:sticky;
  top:0;
  background:var(--tblr-card-bg, #fff);
  z-index:1;
}
@media (max-width: 900px){
  .table-adaptive-cols [data-adaptive-hide]{
    display:none;
  }
}

/* Вариант KPI-карточки с трендом+спарклайном (project.php: "Общая видимость",
   "Share of Voice" и т.д.) — та же "коробка" .kpi-card, что и на positions.php,
   только нижняя часть врозь: слева число+тренд, справа мини-график. */
.kpi-card__bottom--split{
  justify-content:space-between;
  align-items:center;
}
.kpi-card__trend{
  font-size:.8125rem;
  font-weight:600;
  margin-top:.125rem;
}
.kpi-card__help{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:14px;
  height:14px;
  border-radius:50%;
  background:var(--tblr-gray-100);
  color:var(--tblr-gray-500);
  font-size:.625rem;
  text-decoration:none;
  vertical-align:middle;
  margin-left:.125rem;
}
.kpi-card__spark{
  flex-shrink:0;
  opacity:.9;
}

/* Пронумерованная цветная бейдж-легенда — прямой перенос паттерна
   "Упоминания по моделям"/"Доля голоса" из dashboard_clone.html (квадратный
   бейдж с номером вместо маленькой точки перед подписью). */
.legend-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:.5rem;
}
.legend-row:last-child{margin-bottom:0}
.legend-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:20px;
  height:20px;
  border-radius:6px;
  color:#fff;
  font-size:.625rem;
  font-weight:700;
  flex-shrink:0;
}
.legend-label{
  display:flex;
  align-items:center;
  gap:.5rem;
  font-size:.8125rem;
  color:var(--tblr-gray-600, #4b5563);
}

/* =====================================================================
   План v2, этап Э1 — тема §2.1 и компоненты §2.2 (public/includes/ui.php).
   Inter — самохостинг (переменный шрифт, 400–700, латиница + кириллица),
   переменные Tabler переопределены под dashboard_clone.html. */
@font-face{font-family:'Inter';font-style:normal;font-weight:400 700;font-display:swap;src:url("vendor/fonts/inter-cyrillic.woff2") format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Inter';font-style:normal;font-weight:400 700;font-display:swap;src:url("vendor/fonts/inter-latin.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{
  --tblr-font-sans-serif:"Inter",ui-sans-serif,system-ui,sans-serif;
  --tblr-body-bg:#f8fafc;
  --tblr-body-color:#1f2937;
  --tblr-secondary:#6b7280;
  --tblr-muted:#9ca3af;
  --tblr-primary:#2563eb;
  --tblr-primary-rgb:37,99,235;
  --tblr-success:#10b981;
  --tblr-danger:#f43f5e;
  --tblr-warning:#f59e0b;
  --tblr-border-color:#f3f4f6;
  --tblr-card-border-color:#f3f4f6;
  --tblr-border-radius:12px;
  --tblr-card-cap-bg:transparent;
  --geo-card-shadow:0 1px 2px rgba(15,23,42,.05);
  --geo-nav-active-bg:#eff6ff;
  --geo-bar-track:#f3f4f6;
  --geo-bar-fill:#2563eb;
}
body{background:var(--tblr-body-bg)}
.card{box-shadow:var(--geo-card-shadow);border-width:1px;border-radius:12px}
.card-body{padding:20px}
.container-xl{max-width:1440px;padding-left:24px;padding-right:24px}
.page-title{font-size:1.5rem;font-weight:700;color:#1f2937}
.delta-up{color:var(--tblr-success)} .delta-down{color:var(--tblr-danger)} .delta-zero{color:#9ca3af}
.geo-delta{font-size:13px;font-weight:500;white-space:nowrap}

/* --- сайдбар (§2.2.1) --- */
.navbar-vertical.geo-sidebar{width:256px;background:#fff;border-right:1px solid #e5e7eb}
/* Аудит В3-3: на телефоне и планшете меню проекта — полоса во всю ширину (было 256 px и серый край справа). */
@media (max-width:991.98px){.navbar-vertical.geo-sidebar{width:100%;border-right:0;border-bottom:1px solid #e5e7eb}}
.navbar-vertical.geo-sidebar .navbar-brand{padding:0}
.geo-sidebar__logo{display:flex;align-items:center;gap:8px;font-weight:700;font-size:17px;letter-spacing:-.01em;color:#1f2937;padding:0 20px;height:56px;border-bottom:1px solid #f3f4f6}
.geo-sidebar__logo-mark{display:grid;grid-template-columns:8px 8px;gap:2px}
.geo-sidebar__logo-mark i{width:8px;height:8px;background:#1f2937;display:block}
.geo-sidebar__logo-mark i:last-child{background:#9ca3af}
.geo-project-switch{padding:12px 12px 4px}
.geo-project-switch__btn{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:1px solid #e5e7eb;border-radius:10px;background:#fff;color:#1f2937;font-weight:600;font-size:14px;text-decoration:none}
.geo-project-switch__btn:hover{background:#f8fafc;color:#1f2937}
.geo-project-switch__name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.geo-project-switch__menu{width:calc(256px - 24px);max-height:60vh;overflow:auto}
.geo-project-switch__menu .dropdown-item{white-space:normal;font-size:13px}
.navbar-vertical.geo-sidebar .navbar-nav{padding:4px 8px}
.navbar-vertical.geo-sidebar .nav-section-title{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#9ca3af;font-weight:600;padding:14px 12px 6px}
.navbar-vertical.geo-sidebar .nav-link{border-radius:8px;margin:1px 0;padding:8px 12px;font-weight:500;color:#4b5563;font-size:14px}
.navbar-vertical.geo-sidebar .nav-link .nav-link-icon{width:20px;margin-right:12px;color:inherit}
.navbar-vertical.geo-sidebar .nav-link:hover{background:#f9fafb;color:#1f2937}
.navbar-vertical.geo-sidebar .nav-link.active,.navbar-vertical.geo-sidebar .nav-link.active .nav-link-icon,.navbar-vertical.geo-sidebar .nav-link.active .nav-link-title{background:var(--geo-nav-active-bg);color:var(--tblr-primary);border-radius:8px;border-inline-start-color:transparent}
.geo-nav-badge{margin-left:auto;font-size:10px;font-weight:700;padding:1px 8px;border-radius:999px;line-height:16px}
.geo-nav-badge--beta{background:#374151;color:#fff}
.geo-nav-badge--new{background:#d1fae5;color:#047857}
.geo-sidebar__bottom{margin-top:auto;padding:12px;border-top:1px solid #f3f4f6}
.geo-sidebar__user{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:13px;color:#4b5563}
.geo-sidebar__avatar{width:32px;height:32px;border-radius:50%;background:#eff6ff;color:#2563eb;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;flex-shrink:0}
.geo-sidebar__email{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.geo-sidebar__logout{color:#9ca3af;background:none;border:0;padding:4px;cursor:pointer}
.geo-sidebar__logout:hover{color:#f43f5e}
@media (min-width:992px){.navbar-vertical.geo-sidebar .navbar-collapse{display:flex!important;flex-direction:column;flex:1}}

/* --- шапка страницы (§2.3 п.1) --- */
.geo-page-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.geo-page-head h1,.geo-page-head h2{margin:0;font-size:24px;font-weight:700;color:#1f2937}
.geo-page-head__actions{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.geo-page-head__meta{font-size:13px;color:#6b7280}
.geo-help{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;border:1px solid #d1d5db;color:#9ca3af;font-size:10px;font-weight:600;text-decoration:none;vertical-align:middle;margin-left:2px}
.geo-help:hover{color:#4b5563;border-color:#9ca3af}

/* --- панель управления (§2.2.2) --- */
.geo-controls{margin-bottom:16px}
.geo-controls__row{display:flex;align-items:center;gap:14px;padding:6px 14px;min-height:48px;flex-wrap:wrap}
.geo-controls__icon{border:0;background:none;color:#9ca3af;padding:6px;border-radius:8px;cursor:pointer;line-height:1;font-size:16px}
.geo-controls__icon:hover,.geo-controls__icon.active{color:#2563eb;background:#eff6ff}
.geo-controls__link{color:#4b5563;font-size:13px;text-decoration:none;white-space:nowrap;display:inline-flex;align-items:center;gap:4px}
.geo-controls__link:hover{color:#1f2937}
.geo-controls__link .ti{color:#9ca3af;font-size:12px}
.geo-controls__field{display:flex;align-items:center;gap:6px;font-size:13px;color:#4b5563}
.geo-controls__select{border:0;background:transparent;font:inherit;font-size:13px;color:#1f2937;font-weight:500;cursor:pointer;max-width:260px;padding:2px 0}
.geo-controls__right{margin-left:auto;display:flex;align-items:center;gap:8px}
.geo-controls__extra[hidden]{display:none}
.geo-controls__extra{display:flex;gap:10px;flex-wrap:wrap;align-items:end;padding:10px 14px 12px;border-top:1px solid #f3f4f6}
.geo-controls__extra label.form-label{margin-bottom:2px;font-size:12px;color:#6b7280}
.geo-controls__providers{min-width:260px;max-height:70vh;overflow:auto}
.segmented{display:inline-flex;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:3px;gap:2px}
.segmented button,.segmented a{border:0;background:transparent;color:#6b7280;font-size:13px;font-weight:500;padding:5px 12px;border-radius:6px;cursor:pointer;text-decoration:none;line-height:1.3}
.segmented button.active,.segmented a.active{background:#fff;color:#1f2937;box-shadow:0 1px 2px rgba(15,23,42,.08)}
.segmented-sm button{padding:3px 8px;font-size:12px}
.geo-filter-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.geo-filter-chip{display:inline-flex;align-items:center;gap:6px;background:#eff6ff;color:#1d4ed8;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:500}
.geo-filter-chip a{color:#1d4ed8;text-decoration:none;font-size:14px;line-height:1}

/* --- KPI (§2.2.3) --- */
.geo-kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px}
/* Аудит В2-13: пять карточек (Сводка ПРО) — в один ряд, а не 4 + одна «Тональность» во втором. */
@media (min-width:1200px){.geo-kpi-row:has(> :nth-child(5)):not(:has(> :nth-child(6))){grid-template-columns:repeat(5,1fr)}}
@media (max-width:1199px){.geo-kpi-row{grid-template-columns:repeat(2,1fr)}}
@media (max-width:575px){.geo-kpi-row{grid-template-columns:1fr}}
.geo-kpi{padding:20px;display:flex;flex-direction:column;min-height:112px}
.geo-kpi__top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}
.geo-kpi__title{font-size:13px;font-weight:500;color:#6b7280}
.geo-kpi__open{color:#9ca3af;font-size:14px;line-height:1}
.geo-kpi__open:hover{color:#2563eb}
.geo-kpi__bottom{display:flex;justify-content:space-between;align-items:baseline;margin-top:auto;gap:8px}
.geo-kpi__main{display:flex;align-items:baseline;gap:8px}
.geo-kpi__value{font-size:30px;font-weight:700;color:#1f2937;line-height:1.1}
.geo-kpi__value--amber{color:#f59e0b}
.geo-kpi__pct{font-size:13px;color:#6b7280;display:flex;gap:4px;align-items:baseline}
.geo-kpi__pct .geo-delta{font-size:12px}
.geo-kpi__note{font-size:12px;color:#9ca3af}

/* --- виджет (§2.2.4) --- */
.geo-widget{height:100%}
.geo-widget__head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:16px}
.geo-widget__title{margin:0;font-size:15px;font-weight:600;color:#1f2937}
.geo-widget__tools{display:flex;align-items:center;gap:8px}
.geo-widget__kebab{color:#9ca3af;font-size:16px;line-height:1;padding:2px}
.geo-widget__kebab:hover{color:#4b5563}
.geo-grid{display:grid;gap:16px;margin-bottom:16px}
.geo-grid--2{grid-template-columns:repeat(2,1fr)}
.geo-grid--3{grid-template-columns:repeat(3,1fr)}
@media (max-width:1199px){.geo-grid--3{grid-template-columns:repeat(2,1fr)}}
@media (max-width:767px){.geo-grid--2,.geo-grid--3{grid-template-columns:1fr}}

/* --- сетка виджетов с ручной перестановкой, §6.10: 6 колонок, каждый виджет
   занимает 2/3/6 колонок (треть/половина/во всю ширину), порядок задаётся
   инлайновым style="order" из сохранённой position (project_widget_settings) --- */
.geo-widgets{display:grid;grid-template-columns:repeat(6,1fr);gap:16px;margin-bottom:16px}
.geo-widgets>.geo-w-third{grid-column:span 2}
.geo-widgets>.geo-w-half{grid-column:span 3}
.geo-widgets>.geo-w-full{grid-column:span 6}
@media (max-width:1199px){.geo-widgets>.geo-w-third{grid-column:span 3}}
@media (max-width:767px){.geo-widgets{grid-template-columns:1fr}.geo-widgets>*{grid-column:1/-1!important}}

/* --- список виджетов в ⚙ с перетаскиванием (§6.10) --- */
.geo-widget-order-list{list-style:none;margin:0;padding:0;max-height:360px;overflow-y:auto}
.geo-widget-order-item{display:flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;cursor:default}
.geo-widget-order-item:hover{background:#f3f4f6}
.geo-widget-order-item.is-dragging{opacity:.4}
.geo-widget-order-item.is-dragover{box-shadow:inset 0 2px 0 #1F6F78}
.geo-widget-order-item__handle{cursor:grab;color:#9ca3af}
.geo-widget-order-item__handle:active{cursor:grabbing}
.geo-widget-order-item label{display:flex;align-items:center;gap:8px;margin:0;flex:1;cursor:pointer}

/* --- донат (§2.2.5) --- */
.geo-donut{display:flex;gap:24px;align-items:center}
.geo-donut__legend{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px;font-size:13px}
.geo-donut__row{display:flex;align-items:center;gap:8px;color:#4b5563;text-decoration:none}
a.geo-donut__row:hover .geo-donut__label{color:#2563eb}
.geo-donut__num{width:20px;height:20px;border-radius:5px;color:#fff;font-size:10px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.geo-donut__label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.geo-donut__value{font-weight:600;color:#1f2937}
.geo-donut__delta{width:44px;text-align:right;font-size:12px}
.geo-donut__chart{position:relative;width:224px;height:224px;flex-shrink:0}
.geo-donut__center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}
.geo-donut__center-value{font-size:30px;font-weight:700;color:#1f2937;line-height:1}
.geo-donut__center-delta{font-size:13px;margin-top:2px}
@media (max-width:575px){.geo-donut{flex-direction:column}.geo-donut__chart{width:180px;height:180px}}
.geo-badge-emu{font-size:10px;color:#9ca3af;border:1px solid #e5e7eb;border-radius:4px;padding:0 4px;vertical-align:middle}

/* --- полосы (§2.2.6) --- */
.geo-hbars{display:flex;flex-direction:column;gap:14px}
.geo-hbars__row{display:flex;align-items:center;font-size:13px;color:#4b5563;text-decoration:none;gap:8px}
a.geo-hbars__row:hover .geo-hbars__label{color:#2563eb}
.geo-hbars__row--own .geo-hbars__label,.geo-hbars__row--own .geo-hbars__value{font-weight:600;color:#1f2937}
.geo-hbars__label{width:33%;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0}
.geo-hbars__label small{display:block;font-size:12px;color:#9ca3af}
.geo-hbars__track{flex:1;height:10px;background:var(--geo-bar-track);border-radius:999px;overflow:hidden}
.geo-hbars__fill{display:block;height:100%;background:var(--geo-bar-fill);border-radius:999px}
.geo-hbars__value{width:17%;min-width:64px;text-align:right;white-space:nowrap;font-weight:500;color:#374151}
.geo-hbars__value .geo-delta{font-size:12px;margin-left:4px}

/* --- радар (§2.2.7) --- */
.geo-radar{display:flex;flex-direction:column;height:100%}
.geo-radar__legend{display:flex;gap:16px;font-size:12px;color:#6b7280;margin-bottom:8px}
.geo-radar__legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px}
.geo-radar__chart{position:relative;min-height:220px;flex:1}

/* --- линия динамики --- */
.geo-line{position:relative;height:260px}

/* --- пустое состояние (§2.2.12) --- */
.geo-empty{text-align:center;padding:24px 12px;color:#6b7280}
.geo-empty__icon{font-size:48px;color:#d1d5db;line-height:1}
.geo-empty__title{font-size:15px;font-weight:600;color:#374151;margin-top:8px}
.geo-empty__text{font-size:13px;margin-top:4px}

/* --- баннер (§2.2.10) --- */
.geo-banner{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:12px;margin-bottom:16px;font-size:14px;border:1px solid}
.geo-banner--warning{background:#fffbeb;border-color:#fde68a;color:#78350f}
.geo-banner--info{background:#eff6ff;border-color:#bfdbfe;color:#1e3a8a}
.geo-banner--error{background:#fff1f2;border-color:#fecdd3;color:#881337}
.geo-banner--success{background:#ecfdf5;border-color:#a7f3d0;color:#064e3b}
.geo-banner__icon{font-size:20px;flex-shrink:0}
.geo-banner__text{flex:1}
.geo-banner__action{flex-shrink:0}
.geo-banner__close{font-size:10px}

/* --- чип модели (§2.2.14), место (§2.2.15), тональность --- */
.geo-chip{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#374151;border:1px solid #e5e7eb;border-radius:999px;padding:2px 10px 2px 8px;background:#fff;white-space:nowrap}
.geo-chip--sm{font-size:12px;padding:1px 8px 1px 6px}
.geo-chip--selected{border-color:var(--chip-color);box-shadow:inset 0 0 0 1px var(--chip-color)}
.geo-chip--emu{border-style:dashed;color:#6b7280}
.geo-chip__dot{width:8px;height:8px;border-radius:50%;background:var(--chip-color);flex-shrink:0}
.geo-rank{display:inline-block;font-size:12px;font-weight:600;border-radius:6px;padding:2px 8px;white-space:nowrap}
.geo-rank--good{background:#dcfce7;color:#166534}
.geo-rank--mid{background:#fef9c3;color:#854d0e}
.geo-rank--bad{background:#fee2e2;color:#991b1b}
.geo-rank--missing{background:#fee2e2;color:#991b1b}
.geo-rank--none{background:#f3f4f6;color:#6b7280;font-weight:500}
.geo-rank--rare{background:#f3f4f6;color:#4b5563}
.geo-sent{display:inline-block;font-size:12px;font-weight:500;border-radius:6px;padding:2px 8px;white-space:nowrap}
.geo-sent--pos{background:#dcfce7;color:#166534}
.geo-sent--neu{background:#f3f4f6;color:#4b5563}
.geo-sent--neg{background:#fee2e2;color:#991b1b}
.geo-sent--none{background:#f9fafb;color:#9ca3af}
/* План доработок B6: тональность числом 0–10 */
.geo-score{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:22px;padding:0 6px;border-radius:11px;font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;color:#fff;vertical-align:middle}
.geo-score--pos{background:#16a34a}
.geo-score--neu{background:#f59f00}
.geo-score--neg{background:#dc2626}
.geo-score--approx{opacity:.55}
.geo-yesno{display:inline-block;font-size:12px;font-weight:600;border-radius:6px;padding:2px 8px}
.geo-yesno--yes{background:#dcfce7;color:#166534}
.geo-yesno--no{background:#f3f4f6;color:#6b7280}

/* --- таблица данных (§2.2.8) --- */
.geo-table thead th{position:sticky;top:0;background:#fff;z-index:1}
.geo-table tbody tr[data-drawer-href]{cursor:pointer}
.geo-table tbody tr[data-drawer-href]:hover>*{background:#f8fafc}
.geo-table .geo-cell-query{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.geo-table .geo-cell-query small{display:block;color:#9ca3af;font-size:12px}
/* Аудит В2-12: пояснения не растягиваются на всю ширину монитора — строку легче дочитать. */
.geo-prose{max-width:80ch}
/* Команда UX, A-34: «бесплатно» — читаемый зелёный (было около 2,5:1). */
.geo-free{color:#047857;font-weight:500}
/* Аудит В3-6: выпадающий список не шире контейнера — длинные названия интентов растягивали Сводку на телефоне до 529 px. */
.form-select{max-width:100%}
/* В3-6: блоки действий в шапке карточки (Конкуренты: «Объединить в…», «N / стр.») не шире карточки — иначе
   длинное название конкурента в списке растягивало страницу на телефоне до 609 px. */
.card-header>.ms-auto,.card-header>.d-flex{min-width:0;max-width:100%}
/* Плашки в полях (алиасы, домены): длинный текст переносится, а не уходит за край (Настройки — 503 px). */
.geo-chips .geo-chip{white-space:normal}
/* Аудит В2-11: адрес в <code> внутри мелкого текста был 10,5 px. */
.small code,small code{font-size:1em}
.geo-table .geo-cell-answer{max-width:360px;color:#6b7280;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Аудит В2-2: плотная таблица (интенты) — уже поля ячеек, чтобы на 1366 помещались все цифры. */
.geo-table--compact>:not(caption)>*>*{padding-left:.5rem;padding-right:.5rem}
.geo-table-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;flex-wrap:wrap;border-top:1px solid #f3f4f6}
/* Мобильная доводка (Э5): .pagination — flex без wrap по умолчанию
   (Bootstrap), при большом числе страниц ("1 2 3 … 25") не помещается в 375px и
   вместо переноса на вторую строку выталкивает всю страницу в горизонтальный
   скролл — .geo-table-footer сам flex-wrap уже ставил, но не помогало, пока
   .pagination внутри него тоже не научится переноситься. */
@media (max-width:480px){
  .geo-table-footer .pagination{flex-wrap:wrap;row-gap:4px}
  .geo-table-footer .pagination .page-link{padding:4px 8px;font-size:13px}
}
.geo-sources-cell{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:#4b5563}
.geo-sources-cell img{width:16px;height:16px;border-radius:3px}

/* --- drawer (§2.2.9) --- */
.geo-drawer{position:fixed;inset:0;z-index:1055;visibility:hidden;pointer-events:none}
.geo-drawer.is-open{visibility:visible;pointer-events:auto}
.geo-drawer__backdrop{position:absolute;inset:0;background:rgba(15,23,42,.35);opacity:0;transition:opacity .2s}
.geo-drawer.is-open .geo-drawer__backdrop{opacity:1}
.geo-drawer__panel{position:absolute;top:0;right:0;bottom:0;width:720px;max-width:100%;background:#fff;box-shadow:-8px 0 24px rgba(15,23,42,.12);display:flex;flex-direction:column;transform:translateX(100%);transition:transform .25s ease}
.geo-drawer.is-open .geo-drawer__panel{transform:none}
.geo-drawer__head{display:flex;align-items:center;gap:10px;padding:14px 20px;border-bottom:1px solid #f3f4f6}
.geo-drawer__title{margin:0;font-size:16px;font-weight:600;flex:1}
.geo-drawer__head-tools{display:flex;gap:6px}
.geo-drawer__body{flex:1;overflow:auto;padding:20px}
.geo-drawer__loading{color:#9ca3af;text-align:center;padding:40px}
body.geo-drawer-open{overflow:hidden}
.geo-section{border:1px solid #f3f4f6;border-radius:10px;margin-bottom:12px}
.geo-section>summary{list-style:none;cursor:pointer;padding:10px 14px;font-weight:600;font-size:14px;display:flex;align-items:center;gap:8px}
.geo-section>summary::-webkit-details-marker{display:none}
.geo-section>summary::after{content:"\203A";margin-left:auto;color:#9ca3af;transform:rotate(90deg);transition:transform .15s}
.geo-section[open]>summary::after{transform:rotate(-90deg)}
.geo-section__body{padding:0 14px 14px}
.geo-meta{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 16px;font-size:13px;margin-bottom:12px}
.geo-meta dt{color:#9ca3af;font-weight:500;font-size:12px}
.geo-meta dd{margin:0;color:#1f2937}
.geo-answer-text{font-size:14px;line-height:1.6;color:#1f2937;overflow-wrap:anywhere}
.geo-answer-text mark{padding:0 2px;border-radius:3px;background:transparent}
.geo-answer-text mark.geo-mark-own{color:#1d4ed8;font-weight:600;background:#dbeafe}
.geo-answer-text mark.geo-mark-comp{color:#c2410c;font-weight:600;background:#ffedd5}
.geo-answer-text mark.geo-mark-found{border-bottom:1px dashed #9ca3af;font-weight:500}
.geo-answer-text mark.geo-mark-domain{text-decoration:underline;text-decoration-color:#9ca3af}
.geo-query-box{background:#f8fafc;border-radius:10px;padding:10px 14px;font-size:14px;color:#374151;margin-bottom:12px}
.geo-quote{font-size:12px;color:#6b7280;background:#f9fafb;border-left:3px solid #e5e7eb;padding:6px 10px;border-radius:0 6px 6px 0;margin-top:6px}
.geo-toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);background:#1f2937;color:#fff;padding:10px 16px;border-radius:10px;font-size:13px;opacity:0;transition:all .25s;z-index:1060}
.geo-toast.is-visible{opacity:1;transform:translate(-50%,0)}
.geo-toast--error{background:#be123c}

/* --- список задач/событий --- */
.geo-next{display:flex;flex-direction:column;gap:10px}
.geo-next__item{display:flex;gap:10px;align-items:flex-start;font-size:14px;padding:10px 12px;border-radius:10px;background:#f8fafc}
.geo-next__item i{color:#f59e0b;margin-top:2px}
.geo-next__item.is-critical i{color:#f43f5e}

/* --- Э2: панель массовых действий (§2.2.8), карточки режима генерации --- */
.geo-bulk-bar{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);z-index:1040;display:flex;align-items:center;gap:10px;background:#1f2937;color:#fff;padding:10px 16px;border-radius:12px;box-shadow:0 8px 24px rgba(15,23,42,.25);font-size:13px}
.geo-bulk-bar[hidden]{display:none}
.geo-bulk-bar .btn-outline-secondary{color:#e5e7eb;border-color:#4b5563}
.geo-bulk-bar .btn-outline-secondary:hover{background:#374151;color:#fff}
.gen-mode{cursor:pointer;border-width:2px}
.gen-mode.border-primary{background:#eff6ff}

/* --- интерактивный гид (§4.9/§6.16) --- */
.geo-tour-panel{position:fixed;right:20px;bottom:20px;width:320px;max-width:calc(100vw - 32px);background:#fff;border-radius:12px;box-shadow:0 12px 32px rgba(15,23,42,.25);padding:16px;z-index:1050;border:1px solid #e5e7eb}
.geo-tour-panel__progress{font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}
.geo-tour-panel__title{font-size:15px;font-weight:600;color:#1f2937;margin-bottom:6px}
.geo-tour-panel__text{font-size:13px;color:#4b5563;line-height:1.5;margin-bottom:12px}
.geo-tour-panel__actions{display:flex;align-items:center;gap:8px}
.geo-tour-panel__spacer{flex:1}
/* План доработок E1: поля-чипы */
.geo-chips{display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-height:36px;height:auto;padding:4px 6px;cursor:text}
.geo-chips--sm{min-height:30px;padding:2px 4px}
.geo-chips__list{display:contents}
.geo-chip{display:inline-flex;align-items:center;gap:2px;background:#eff6ff;color:#1e3a8a;border:1px solid #bfdbfe;border-radius:6px;padding:1px 4px 1px 8px;font-size:13px;line-height:20px;max-width:100%;overflow-wrap:anywhere}
.geo-chip__x{border:0;background:transparent;color:#64748b;font-size:15px;line-height:1;padding:0 4px;cursor:pointer;border-radius:4px}
.geo-chip__x:hover{background:#dbeafe;color:#b91c1c}
.geo-chips__entry{flex:1 1 120px;min-width:100px;border:0;outline:0;padding:2px 4px;font-size:14px;background:transparent}
.geo-chips__add{border:1px solid #bfdbfe;background:#fff;color:#2563eb;border-radius:6px;width:26px;height:24px;line-height:20px;font-weight:600;cursor:pointer;padding:0}
.geo-chips__add:hover{background:#eff6ff}
/* План доработок E5: блок кода с кнопкой копирования */
.geo-code{border:1px solid #e2e8f0;border-radius:8px;overflow:hidden;background:#0f172a}
.geo-code__head{display:flex;justify-content:space-between;align-items:center;padding:4px 8px;background:#1e293b;color:#94a3b8;font-size:12px}
.geo-code__head .btn{color:#bfdbfe}
.geo-code__body{margin:0;padding:10px 12px;color:#e2e8f0;font-size:12px;line-height:1.5;max-height:360px;overflow:auto;white-space:pre}
.geo-guide-btn{display:inline-flex;align-items:center;gap:4px;margin-left:10px;padding:2px 10px;border:1px solid #bfdbfe;border-radius:999px;background:#eff6ff;color:#1d4ed8;font-size:12px;font-weight:500;vertical-align:middle;cursor:pointer;line-height:20px}
.geo-guide-btn:hover{background:#dbeafe}
.geo-guide-btn .ti{font-size:15px}
.geo-guide-btn--new{animation:geo-guide-pulse 1.8s ease-out 3}
@keyframes geo-guide-pulse{0%{box-shadow:0 0 0 0 rgba(37,99,235,.45)}100%{box-shadow:0 0 0 10px rgba(37,99,235,0)}}
.geo-tour-highlight{outline:3px solid #2563eb;outline-offset:3px;border-radius:6px;position:relative;z-index:1045}
[data-weekdays] label.active{background:#2563eb;color:#fff;border-color:#2563eb}

/* --- источники ответа: нумерованный список + сноски [n] в тексте --- */
.geo-src-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}
.geo-src{display:flex;align-items:flex-start;gap:8px;padding:6px 8px;border-radius:8px;border:1px solid #eef0f3;scroll-margin-top:80px}
.geo-src--own{background:#ecfdf5;border-color:#a7f3d0}
.geo-src:target{outline:2px solid #6366f1;outline-offset:1px}
.geo-src__num{flex:0 0 auto;min-width:22px;height:22px;border-radius:6px;background:#eef2ff;color:#3730a3;font-size:12px;font-weight:600;display:inline-flex;align-items:center;justify-content:center}
.geo-src__icon{margin-top:3px;flex-shrink:0}
.geo-src__body{display:flex;flex-direction:column;min-width:0}
.geo-src__title{font-size:13px;font-weight:500;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}
.geo-src__domain{font-size:12px;color:#6b7280}
.geo-src-list--muted .geo-src{opacity:.85;background:#fafafa}
.geo-src-list--muted .geo-src--own{background:#ecfdf5;opacity:1}
.geo-cite a{font-size:11px;font-weight:600;padding:0 4px;margin-left:1px;border-radius:4px;background:#eef2ff;color:#3730a3;text-decoration:none}
.geo-cite a:hover{background:#c7d2fe}

/* --- «Какие нейросети ссылаются на источники» (Источники → Обзор) --- */
.geo-cov{display:flex;flex-direction:column;gap:10px}
.geo-cov__row{display:grid;grid-template-columns:minmax(150px,200px) 1fr 42px;grid-template-areas:"name bar val" "name note note";column-gap:10px;row-gap:2px;align-items:center}
.geo-cov__name{grid-area:name;min-width:0}
.geo-cov__bar{grid-area:bar;height:8px;border-radius:4px;background:#f1f5f9;overflow:hidden}
.geo-cov__bar span{display:block;height:100%;border-radius:4px}
.geo-cov__val{grid-area:val;text-align:right;font-weight:600;font-size:13px}
.geo-cov__note{grid-area:note;font-size:12px;color:#6b7280}
@media (max-width:575px){.geo-cov__row{grid-template-columns:1fr 42px;grid-template-areas:"name val" "bar bar" "note note"}}

/* --- Баланс (billing.php) --- */
.geo-balance__value{font-size:34px;font-weight:700;line-height:1.1;letter-spacing:-.5px;margin-bottom:4px}
.geo-balance--empty .geo-balance__value{color:#dc2626}
.geo-balance-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:#ecfdf5;color:#065f46;font-size:13px;font-weight:600;text-decoration:none;white-space:nowrap}
.geo-balance-pill:hover{background:#d1fae5;color:#064e3b}
.geo-balance-pill--low{background:#fffbeb;color:#92400e}
.geo-balance-pill--empty{background:#fef2f2;color:#b91c1c}

/* --- ответ нейросети в Markdown (план доработок A2) --- */
.geo-answer-text p{margin:0 0 .6em}
.geo-answer-text h3,.geo-answer-text h4,.geo-answer-text h5,.geo-answer-text h6{font-weight:600;line-height:1.35;margin:1em 0 .4em}
.geo-answer-text h3{font-size:17px}.geo-answer-text h4{font-size:15.5px}.geo-answer-text h5,.geo-answer-text h6{font-size:14.5px}
.geo-answer-text > :first-child{margin-top:0}
.geo-answer-text ul,.geo-answer-text ol{margin:0 0 .6em;padding-left:1.4em}
.geo-answer-text li{margin:.15em 0}
.geo-answer-text li > ul,.geo-answer-text li > ol{margin:.2em 0}
.geo-answer-text blockquote{margin:0 0 .6em;padding:.3em .8em;border-left:3px solid #cbd5e1;color:#475569;background:#f8fafc}
.geo-answer-text hr{margin:.9em 0;border:0;border-top:1px solid #e5e7eb}
.geo-answer-text code{font-size:12.5px;padding:1px 4px;border-radius:4px;background:#f1f5f9}
.geo-answer-text a{word-break:break-all}
.geo-md-table{overflow-x:auto;margin:0 0 .8em}
.geo-md-table table{border-collapse:collapse;font-size:13px;min-width:60%}
.geo-md-table th,.geo-md-table td{border:1px solid #e5e7eb;padding:4px 8px;vertical-align:top;text-align:left}
.geo-md-table th{background:#f8fafc;font-weight:600}

/* Источники → динамика (B1): у категорий нет своей дельты */
.geo-dyn .geo-donut__delta{display:none}
.geo-dyn a.geo-donut__row{cursor:pointer}
.geo-dyn .geo-donut{gap:14px}
.geo-dyn .geo-donut__chart{width:128px;height:128px}
.geo-dyn .geo-donut__center-value{font-size:22px}
.geo-dyn .geo-donut__legend{gap:6px;font-size:12.5px}
.geo-dyn .geo-donut__num{width:16px;height:16px;font-size:9px}
@media (min-width:992px) and (max-width:1199px){.geo-dyn .geo-donut{flex-direction:column-reverse;align-items:stretch}.geo-dyn .geo-donut__chart{align-self:center}}
/* Логотип neurochecker (шапка и боковая панель): знак + надпись шрифтом сайта. */
.geo-logo{display:inline-flex;align-items:center;gap:9px;line-height:1}
.geo-logo__mark{width:28px;height:28px;flex:none;display:block}
.geo-logo__text{font-size:19px;font-weight:500;letter-spacing:-.02em;color:var(--tblr-primary)}
.geo-logo__text b{font-weight:800;color:#1f2937}

/* Сводка стандартного режима — «один экран» (план «Стандартный и ПРО-режим», П2) */
.geo-std.page-body{margin-top:16px;margin-bottom:16px}
.geo-std-head{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;margin-bottom:10px}
.geo-std-head__title{margin:0;font-size:22px;font-weight:700;color:#1f2937;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.geo-std-head__title .geo-page-head__meta{font-weight:400}
.geo-std-head__actions{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.geo-std-chip{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#4b5563;border:1px solid #e5e7eb;border-radius:999px;padding:4px 10px;text-decoration:none;max-width:320px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.geo-std-chip:hover{color:#2563eb;border-color:#93c5fd;text-decoration:none}
.geo-std-chip__dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.geo-std-verdict{display:flex;gap:10px;align-items:flex-start;font-size:15px;font-weight:500;color:#1f2937;margin-bottom:10px}
.geo-std-place--leader{color:#2fb344}.geo-std-place--contender{color:#e67700}.geo-std-place--lagging{color:#d63939}
.geo-std-verdict__dot{width:10px;height:10px;border-radius:50%;margin-top:6px;flex-shrink:0}
.geo-std .geo-kpi-row{gap:12px;margin-bottom:12px}
.geo-std .geo-kpi{min-height:96px;padding:12px 16px}
.geo-std .geo-kpi__top{margin-bottom:4px}
.geo-std .geo-kpi__value{font-size:26px}
.geo-std .geo-kpi__bottom{flex-direction:column;align-items:flex-start;gap:2px}
.geo-std .geo-kpi__pct{font-size:12px;line-height:1.3}
.geo-std-grid{display:grid;grid-template-columns:2fr 1fr;gap:12px;margin-bottom:12px}
.geo-std-grid--3{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:0}
.geo-std-grid>.card{margin:0;min-width:0}
.geo-std .card-body{padding:12px 16px}
.geo-std .geo-line{height:180px}
.geo-std .geo-hbars{gap:8px}
.geo-std .geo-hbars__label{width:38%}
.geo-std-block-title{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#6b7280;margin-bottom:10px}
.geo-std-legend{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:6px;font-size:12px;color:#4b5563}
.geo-std-legend span{display:inline-flex;align-items:center;gap:5px}
.geo-std-legend i{display:inline-block;width:14px;height:3px;border-radius:2px}
.geo-std-placeholder{height:180px;display:flex;align-items:center;justify-content:center;text-align:center;color:#6b7280;background:#f9fafb;border-radius:8px;padding:16px}
.geo-std-clamp{font-size:13px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.geo-std-step{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.geo-std-missed{display:block;padding:5px 0;border-bottom:1px solid #f3f4f6;text-decoration:none;color:inherit}
.geo-std-missed:last-child{border-bottom:0}
.geo-std-missed:hover .geo-std-missed__text{color:#2563eb}
.geo-std-missed__text{display:block;font-size:13px;color:#1f2937;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.geo-std-missed__meta{display:block;font-size:12px;color:#d63939}
@media (max-width:991px){.geo-std-grid,.geo-std-grid--3{grid-template-columns:minmax(0,1fr)}.geo-std-head__actions{margin-left:0}}

/* Карта пути клиента 16.10.2026, Р16: «Ответы» на телефоне — карточки вместо таблицы шириной 1100 px
   (запрос и текст ответа были в конце горизонтальной прокрутки). */
@media (max-width:767px){
  .geo-answers-wrap{overflow:visible}
  .geo-answers-table,.geo-answers-table tbody{display:block}
  .geo-answers-table thead{display:none}
  .geo-answers-table tbody tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;grid-template-areas:"model model date menu" "query query query query" "answer answer answer answer" "brand rank tone tone";gap:4px 10px;padding:12px 14px;border-bottom:1px solid #eef0f3;align-items:center}
  .geo-answers-table tbody td{display:block;border:0;padding:0;max-width:none;min-width:0;white-space:normal}
  .geo-answers-table .geo-a-model{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .geo-answers-table .geo-a-model{grid-area:model}
  .geo-answers-table .geo-a-date{grid-area:date;text-align:right}
  .geo-answers-table .geo-a-menu{grid-area:menu;min-width:24px;text-align:right}
  .geo-answers-table .geo-a-src{display:none}
  .geo-answers-table .geo-cell-query{grid-area:query;white-space:normal;font-weight:600;color:#1f2937;max-width:none}
  .geo-answers-table .geo-cell-answer{grid-area:answer;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-width:none}
  .geo-answers-table .geo-a-brand{grid-area:brand}
  .geo-answers-table .geo-a-rank{grid-area:rank}
  .geo-answers-table .geo-a-tone{grid-area:tone;overflow:hidden;white-space:nowrap}
  .geo-answers-table .geo-a-tone .geo-sent{max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
  .geo-answers-table td[data-label]::before{content:attr(data-label) " ";font-size:11px;color:#9ca3af;margin-right:4px}
}
/* Р15: Сводка стандартного режима на телефоне — сначала «Зовут конкурентов, не вас» (главное действие), потом остальное. */
@media (max-width:991px){
  .geo-std-blocks{display:flex;flex-direction:column;gap:12px}
  .geo-std-blocks>.geo-std-grid{display:contents}
  /* Команда UX, B-01: «Что сделать» — сразу после карточек цифр (было последним), потом «Зовут конкурентов». */
  .geo-std-b-insight{order:1}.geo-std-b-missed{order:2}.geo-std-b-comp{order:3}.geo-std-b-prov{order:4}.geo-std-b-chart{order:5}
}
/* Р16: на телефоне главные цифры — по две в ряд (раньше четыре карточки во всю ширину отодвигали содержимое на 2–3 экран). */
@media (max-width:575px){
  .geo-kpi-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .geo-kpi{padding:12px;min-height:0}
  .geo-kpi__value{font-size:22px;white-space:nowrap}
  .geo-kpi__main{flex-wrap:wrap;column-gap:6px;row-gap:0}
  .geo-kpi__title{font-size:12px}
  .geo-kpi__bottom{flex-direction:column;align-items:flex-start;gap:2px}
}
/* Р17: «Что сделать» на Сводке стандарта — подсказки раскрываются по нажатию, в закрытом виде по строке. */
.geo-std-advice{border-bottom:1px solid #f3f4f6;padding:4px 0}
.geo-std-advice:last-of-type{border-bottom:0}
.geo-std-advice summary{display:flex;gap:6px;align-items:flex-start;cursor:pointer;list-style:none;font-size:13px;font-weight:500;color:#1f2937}
.geo-std-advice summary::-webkit-details-marker{display:none}
.geo-std-advice summary span{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.geo-std-advice[open] summary span{-webkit-line-clamp:unset}
.geo-std-advice summary i{margin-top:2px;flex-shrink:0}
.geo-std-advice__text{font-size:12px;color:#4b5563;padding:4px 0 4px 20px}
.geo-std-advice--ai summary{color:#6b21a8;font-weight:400}
.geo-answer-advice{background:#fffbeb;border:1px solid #fde68a;border-radius:8px;padding:10px 12px;margin:0 0 12px;font-size:13px;color:#374151}
.geo-answer-advice ul{padding-left:18px}

/* Аудит 17.10.2026, В1-10: заголовки таблиц — 12 px (были 11 px заглавными, на телефоне на грани читаемости). */
.table thead th{font-size:12px}

/* Аудит 17.10.2026, В1-6: плашка с кнопкой на узком экране — кнопка с новой строки, а не за краем экрана. */
@media (max-width:575px){
  .geo-banner{flex-wrap:wrap}
  .geo-banner__text{flex:1 1 calc(100% - 64px);min-width:0}
  .geo-banner__action{order:3;flex-basis:100%}
  .geo-banner__action .btn{width:100%}
}

/* Аудит 17.10.2026, В1-9: на телефоне всё, что нажимают пальцем, — не меньше 40 px (было 14–28 px).
   Мелкие значки («?», стрелка «открыть», «⋮») визуально не меняются — растёт невидимая область нажатия. */
@media (max-width:767px){
  .btn,.btn-sm,.segmented a,.segmented button,.geo-controls__icon,.geo-balance-pill{min-height:40px}
  .segmented a,.segmented button{display:inline-flex;align-items:center;justify-content:center}
  .btn-sm{padding-top:8px;padding-bottom:8px}
  .geo-controls__link{min-height:40px}
  .geo-controls__icon{min-width:40px;display:inline-flex;align-items:center;justify-content:center}
  .geo-help,.geo-kpi__open,.geo-widget__kebab,.geo-chip__x,.star-btn{position:relative}
  .geo-help::after,.geo-kpi__open::after,.geo-widget__kebab::after,.geo-chip__x::after,.star-btn::after{content:"";position:absolute;left:50%;top:50%;width:40px;height:40px;transform:translate(-50%,-50%)}
  .page-pretitle a,.geo-std-chip,.geo-guide-btn{display:inline-flex;align-items:center;min-height:40px}
  .form-check:not(.form-switch) > .form-check-input[type=checkbox],.table .form-check-input[type=checkbox]{width:22px;height:22px}
  .page-link{min-width:40px;min-height:40px;display:inline-flex;align-items:center;justify-content:center}
  .btn-icon{min-width:40px}
  .table thead th a{display:inline-flex;align-items:center;min-height:32px}
  .geo-chips{min-height:44px}
  .geo-chips input{min-height:32px}
  .geo-chips__add{min-width:36px;min-height:36px}
  summary{min-height:40px;display:flex;align-items:center}
  .geo-std-advice summary{align-items:flex-start;padding:10px 0}
  .geo-std-advice__text a{display:inline-block;padding:8px 0}
  a.geo-donut__row{min-height:36px}
  .form-help{position:relative}
  .form-help::after{content:"";position:absolute;left:50%;top:50%;width:40px;height:40px;transform:translate(-50%,-50%)}
  /* Кнопки и ссылки-значки (только иконка внутри) — та же невидимая область 40×40; выпадающие меню не трогаем (их ::after — стрелка). */
  a:has(> .ti:only-child):not(.dropdown-toggle),button:has(> .ti:only-child):not(.dropdown-toggle){position:relative}
  a:has(> .ti:only-child):not(.dropdown-toggle)::after,button:has(> .ti:only-child):not(.dropdown-toggle)::after{content:"";position:absolute;left:50%;top:50%;width:40px;height:40px;transform:translate(-50%,-50%)}
  input[type=file].form-control{min-height:40px}
  /* Поле с плашками (написания бренда, конкуренты) и кнопка рядом: на телефоне кнопка — под полем, иначе поле сжималось до 90 px. */
  .input-group:has(> .geo-chips){flex-wrap:wrap;gap:6px}
  .input-group > .geo-chips{flex:1 1 100%;border-radius:6px !important}
  .input-group:has(> .geo-chips) > .btn{flex:1 1 100%;border-radius:6px !important;margin-left:0 !important}
}


/* ============ Команда UX, пакет 3 (17.10.2026): общие стили и телефон ============ */
/* A-01: рамки полей заметны (общий светлый цвет границ остаётся у карточек и таблиц); фокус — синий. */
.form-control,.form-select{border-color:#c4cad3}
.form-control:hover,.form-select:hover{border-color:#9ca3af}
.form-control:focus,.form-select:focus,.geo-chips:focus-within{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.15)}
/* A-02: галочки квадратные (скругление 12 px делало их кружками, похожими на «выбери одно»); переключатели — овальные. */
.form-check-input[type=checkbox]{border-radius:4px;border-color:#9ca3af}
.form-switch .form-check-input[type=checkbox]{border-radius:2em}
.form-check-input[type=radio]{border-color:#9ca3af}
/* B-12, D-06, C-45: кнопки в строках не сжимаются и не вылезают из рамки — строки переносятся. */
.d-flex>.btn,.btn-list>.btn,.card-actions>.btn{flex-shrink:0}
.card-header{flex-wrap:wrap;row-gap:8px}
@media (max-width:575.98px){
  .card-header .card-actions{margin-left:0}
  .page-header .col-auto.ms-auto{margin-left:0!important;width:100%}
  .page-header .col-auto.ms-auto .btn-list,.page-header .col-auto.ms-auto>.d-flex,.page-header .col-auto.ms-auto.d-flex{flex-wrap:wrap}
  /* D-06: главная кнопка шапки (Контент-план: «Добавить материал») — во всю ширину, остальные — рядом в строку. */
  .page-header .col-auto.ms-auto.d-flex>.btn-primary{flex:1 1 100%}
}
/* D-55: длинное название проекта над заголовком сжимается с многоточием, а не растягивает страницу. */
.page-header .row>.col-auto:has(> .page-pretitle){min-width:0;max-width:100%;flex-shrink:1}
/* A-40: голубые плашки — тёмный текст. */
.alert-info{--tblr-alert-color:#1e3a8a;color:#1e3a8a}
/* B-47, A-54, C-66: контраст подписей и цветного текста — не ниже нормы. */
.text-success{color:#15803d!important}
.text-warning{color:#b45309!important}
.text-secondary,.text-muted{color:#6b7280!important}
.navbar-vertical .nav-section-title,.table thead th{color:#6b7280}
/* D-56, C-68, B-48, B-28: вкладки и нумерация страниц на телефоне — одной строкой с прокруткой, а не в 2–3 строки. */
@media (max-width:767.98px){
  .nav-tabs,.card-header-tabs{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
  .nav-tabs::-webkit-scrollbar{display:none}
  .nav-tabs .nav-link{white-space:nowrap}
  .geo-table-footer>.d-flex,.geo-table-footer>div{min-width:0;max-width:100%}
  .geo-table-footer .pagination{flex-wrap:nowrap;overflow-x:auto;max-width:100%;min-width:0}
}
/* C-05: подписи полос — в две строки (было одинаковое «где сделать …»); полный текст — в подсказке. */
.geo-hbars__label{white-space:normal}
.geo-hbars__text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.25}
/* C-40: изменение у полосы не вылезает за край карточки — переносится под значение. */
.geo-hbars__value{white-space:normal;line-height:1.2}
.geo-hbars__value .geo-delta{display:inline-block;white-space:nowrap}
/* A-39: узкие страницы (вход, восстановление пароля) не прилипают к краю телефона. */
@media (max-width:575.98px){.container-tight{padding-left:16px;padding-right:16px}}
/* D-55: название проекта над заголовком — спокойная серая строка, а не самый громкий текст. */
.page-pretitle{text-transform:none;letter-spacing:0;font-size:13px;font-weight:400;color:#6b7280;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.page-pretitle a{color:#6b7280}
/* D-68: без пульсаций и анимаций для тех, кто их отключил в системе. */
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* A-07, B-05: на телефоне список проектов и таблица запросов — карточки; главная цифра (видимость) видна сразу,
   а не за правым краем таблицы. */
@media (max-width:767.98px){
  .geo-projects-table,.geo-projects-table tbody,.geo-queries-table,.geo-queries-table tbody{display:block}
  .geo-projects-table thead,.geo-queries-table thead{display:none}
  .geo-projects-table tbody td,.geo-queries-table tbody td{display:block;border:0;padding:0;min-width:0;max-width:none!important;white-space:normal}
  .geo-projects-table tbody tr{display:grid;grid-template-columns:1fr 1fr;grid-template-areas:"name name" "vis count" "refresh refresh";gap:6px 12px;padding:12px 14px;border-bottom:1px solid #eef0f3}
  .geo-projects-table .geo-p-name{grid-area:name;font-weight:600}
  .geo-projects-table .geo-p-vis{grid-area:vis;font-size:1.15rem}
  .geo-projects-table .geo-p-count{grid-area:count;align-self:center;color:#6b7280}
  .geo-projects-table .geo-p-refresh{grid-area:refresh}
  .geo-projects-table .geo-p-refresh .refresh-form,.geo-projects-table .geo-p-refresh .refresh-form .btn,.geo-projects-table .geo-p-refresh>.btn{display:block;width:100%}
  .geo-projects-table .geo-p-folder{display:none}
  .geo-queries-table tbody tr{display:grid;grid-template-columns:28px minmax(0,1fr) minmax(0,1fr) auto;grid-template-areas:"check text text menu" "check vis rank runs";gap:6px 10px;padding:12px 14px;border-bottom:1px solid #eef0f3;align-items:center}
  .geo-queries-table .geo-q-check{grid-area:check;align-self:start}
  .geo-queries-table .geo-q-text{grid-area:text;font-weight:600}
  .geo-queries-table .geo-q-vis{grid-area:vis;text-align:left!important}
  .geo-queries-table .geo-q-rank{grid-area:rank}
  .geo-queries-table .geo-q-runs{grid-area:runs;text-align:right!important}
  .geo-queries-table .geo-q-menu{grid-area:menu;align-self:start}
  .geo-queries-table .geo-q-date{display:none}
  .geo-projects-table td[data-label]::before,.geo-queries-table td[data-label]::before{content:attr(data-label) " ";display:block;font-size:12px;font-weight:400;color:#6b7280}
  .geo-queries-table .geo-q-runs::before{display:inline!important}
}
/* B-33: свой бренд выделен среди конкурентов в полосах (синий, «вы»), чужие — спокойные. */
.geo-hbars:has(.geo-hbars__row--own) .geo-hbars__fill{background:#cbd5e1}
.geo-hbars .geo-hbars__row--own .geo-hbars__fill{background:#2563eb}
.geo-hbars__row--own .geo-hbars__text::after{content:" · вы";color:#2563eb;font-weight:600}

/* B-23: шапка Сводки стандарта на телефоне — компактно: заголовок, строка «бренд · обновлено», период и автосбор
   одной строкой, кнопка «Собрать» во всю ширину — вывод виден без прокрутки. */
@media (max-width:575.98px){
  .geo-std-head{gap:6px 8px}
  .geo-std-head__title{width:100%;font-size:20px;row-gap:2px}
  .geo-std-head__title .geo-page-head__meta{width:100%;font-size:12px}
  .geo-std-head__title .geo-guide-btn{order:1}
  .geo-std-head__title .geo-page-head__meta{order:2}
  .geo-std-head__actions{display:contents}
  .geo-std-head__actions>.btn-primary{flex:1 1 auto}
}

/* C-42: оценка тональности на Сводке — цвет по значению. */
.geo-kpi__value--good{color:#15803d}
.geo-kpi__value--bad{color:#b91c1c}
.geo-kpi__value--amber{color:#b45309}

/* Команда UX, A-37: кнопка «показать пароль». */
.geo-pass{position:relative}
.geo-pass>input{padding-right:44px}
.geo-pass__btn{position:absolute;right:2px;top:50%;transform:translateY(-50%);width:40px;height:38px;border:0;background:transparent;color:#6b7280;border-radius:6px}
.geo-pass__btn:hover{color:#1f2937}

/* ============ Команда UX, пакет 6 (17.10.2026) ============ */
/* B-15: быстрые фильтры со счётчиками */
.geo-quick-chips{display:flex;flex-wrap:wrap;gap:8px}
.geo-quick-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid #d1d5db;border-radius:999px;background:#fff;color:#1f2937;font-size:14px;text-decoration:none;min-height:36px}
.geo-quick-chip:hover{border-color:#2563eb;text-decoration:none}
.geo-quick-chip.active{background:#2563eb;border-color:#2563eb;color:#fff}
.geo-quick-chip__n{font-weight:600;color:#6b7280}
.geo-quick-chip.active .geo-quick-chip__n{color:#dbeafe}
/* B-14, C-10: запрос и под ним фрагмент ответа — одной колонкой, текст переносится, не обрезается на 1366 */
.geo-table .geo-cell-qa{min-width:280px;max-width:560px;white-space:normal}
.geo-qa__q{font-weight:600;color:#1f2937;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.geo-qa__a{font-size:13px;color:#4b5563;margin-top:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.geo-qa__name{color:#b45309}
.geo-answers-table .geo-sources-cell{max-width:150px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
@media (max-width:1439.98px){.geo-answers-table .geo-sources-cell .geo-src-domain{display:none}}
@media (max-width:767px){
  .geo-answers-table tbody tr{grid-template-areas:"model model date menu" "qa qa qa qa" "brand rank tone tone"}
  .geo-answers-table .geo-cell-qa{grid-area:qa;max-width:none;min-width:0}
}

/* B-55: цитата нейросети на Сводке */
.geo-std-quote blockquote{margin:0;padding:8px 12px;border-left:3px solid #2563eb;background:#f8fafc;font-size:15px;line-height:1.5}

/* B-44: строки «Мой сайт в ответах» — счётчик у верхнего края, не по центру длинного заголовка */
.geo-src--own{align-items:flex-start}

/* B-29: полоска видимости в таблице запросов; ниже 20 % — красным */
.geo-q-bar{display:inline-block;width:48px;height:6px;border-radius:3px;background:#eef0f3;margin-right:8px;vertical-align:middle;overflow:hidden}
.geo-q-bar>span{display:block;height:100%;border-radius:3px}
@media (max-width:767.98px){.geo-q-bar{display:none}}

/* C-63: подсветка брендов — не только в карточке ответа, но и в таблицах, фрагментах и цитатах */
.geo-cell-answer mark,.geo-qa__a mark,.geo-std-quote mark{padding:0 2px;border-radius:3px;background:transparent}
.geo-cell-answer mark.geo-mark-own,.geo-qa__a mark.geo-mark-own,.geo-std-quote mark.geo-mark-own{color:#1d4ed8;font-weight:600;background:#dbeafe}
.geo-cell-answer mark.geo-mark-comp,.geo-qa__a mark.geo-mark-comp,.geo-std-quote mark.geo-mark-comp{color:#c2410c;font-weight:600;background:#ffedd5}
.geo-cell-answer mark.geo-mark-domain,.geo-qa__a mark.geo-mark-domain{text-decoration:underline;text-decoration-color:#9ca3af}
/* C-04: строка, где бренд пропал, — красная полоса слева; появился — зелёная */
.geo-compare-table tr.geo-cmp--lost>td:first-child{box-shadow:inset 3px 0 0 #d63939}
.geo-compare-table tr.geo-cmp--gained>td:first-child{box-shadow:inset 3px 0 0 #2fb344}

/* C-22: список «с прошлого сбора» */
.geo-change-list li{padding:3px 0;font-size:14px}

/* D-11: плашка гостя — внутри страницы (не под боковым меню), спокойная; вход — серой ссылкой */
.geo-guest-bar{background:#eff6ff;color:#1e3a8a;padding:8px 16px;font-size:14px;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px}
/* Аудит В72-1: пример отчёта с главной — заметная плашка с кнопкой заявки */
.geo-guest-bar--demo{background:#fef9c3;color:#1f2937;padding:10px 16px}
@media (min-width:992px){.geo-sidebar~.geo-guest-bar{margin-left:256px}}
/* D-11: у гостя по ссылке плашка уже говорит «отчёт» — значки «Только просмотр» и «Гид» лишние */
body:has(.geo-guest-bar) .geo-readonly-badge,body:has(.geo-guest-bar) .geo-guide-btn{display:none!important}

/* C-23: чипы нейросетей в виде «По запросам» — назвали ✓ / не назвали ✗ */
.geo-pchip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:12px;border:1px solid #e5e7eb;text-decoration:none;color:#374151;white-space:nowrap}
.geo-pchip:hover{text-decoration:none;border-color:#9ca3af}
.geo-pchip__dot{width:8px;height:8px;border-radius:50%;background:var(--chip-color,#9ca3af)}
.geo-pchip--yes{background:#ecfdf3;border-color:#bbf7d0;color:#15803d}
.geo-pchip--no{background:#fef2f2;border-color:#fecaca;color:#b91c1c}

/* ============ Аудит, волна 4 (17.10.2026) ============ */
/* В4-8: число в карточке не рвётся на «1» / «278» */
.geo-kpi__value{white-space:nowrap}
/* В4-9: подпись «из N ответов (x %)» и изменение — переносятся внутри карточки */
.geo-kpi__pct{flex-wrap:wrap;min-width:0}
.geo-kpi__pct .geo-delta{white-space:nowrap}
@media (max-width:575.98px){.geo-kpi__main .geo-delta{display:block;white-space:normal;font-size:12px}}
/* В4-7: длинная кнопка с периодом — переносится на телефоне */
@media (max-width:575.98px){#rep-submit{white-space:normal;width:100%}}
/* В4-4, В4-5, В4-6: новые таблицы на телефоне — карточками, без обрезки справа */
@media (max-width:767.98px){
  .geo-pgrid-table,.geo-pgrid-table tbody,.geo-vs-table,.geo-vs-table tbody,.geo-compare-table,.geo-compare-table tbody{display:block}
  .geo-pgrid-table thead,.geo-vs-table thead,.geo-compare-table thead{display:none}
  .geo-pgrid-table tbody td,.geo-vs-table tbody td,.geo-compare-table tbody td{display:block;border:0;padding:0;max-width:none!important;min-width:0!important;white-space:normal;text-align:left!important}
  .geo-pgrid-table tbody tr{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"q q" "chips chips" "res link" "rival rival";gap:6px 10px;padding:12px 14px;border-bottom:1px solid #eef0f3}
  .geo-pgrid-table .pg-q{grid-area:q;font-weight:600}
  .geo-pgrid-table .pg-chips{grid-area:chips}
  .geo-pgrid-table .pg-res{grid-area:res}
  .geo-pgrid-table .pg-link{grid-area:link;text-align:right!important}
  .geo-pgrid-table .pg-rival{grid-area:rival}
  .geo-vs-table tbody tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-areas:"q q q" "own comp res" "link link link";gap:6px 10px;padding:12px 14px;border-bottom:1px solid #eef0f3;align-items:center}
  .geo-vs-table .vs-q{grid-area:q;font-weight:600}
  .geo-vs-table .vs-own{grid-area:own}.geo-vs-table .vs-comp{grid-area:comp}.geo-vs-table .vs-res{grid-area:res}.geo-vs-table .vs-link{grid-area:link}
  .geo-compare-table tbody tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"q q" "r1 r2" "a2 a2";gap:6px 10px;padding:12px 14px;border-bottom:1px solid #eef0f3}
  .geo-compare-table .cmp-q{grid-area:q;font-weight:600}
  .geo-compare-table .cmp-r1{grid-area:r1}.geo-compare-table .cmp-r2{grid-area:r2}
  .geo-compare-table .cmp-a1{display:none}
  .geo-compare-table .cmp-a2{grid-area:a2}
  .geo-compare-table .cmp-a2 .geo-cell-answer{max-width:none!important}
  .geo-pgrid-table td[data-label]::before,.geo-vs-table td[data-label]::before,.geo-compare-table td[data-label]::before{content:attr(data-label);display:block;font-size:12px;color:#6b7280}
}
/* В4-3/В4-5 после проверки: карточка гостевой ссылки и итог «Вы против» на телефоне */
@media (max-width:575.98px){
  [id^=guest-link-] .input-group{flex-wrap:wrap}
  [id^=guest-link-] .input-group>input[data-guest-url]{flex:1 1 100%;width:100%;border-radius:6px!important;margin-bottom:6px}
  [id^=guest-link-] .input-group>.btn{flex:1 1 auto;border-radius:6px!important}
  [id^=guest-link-] select,[id^=guest-link-] input[name=name]{max-width:100%;width:100%!important}
  [id^=guest-link-] form{max-width:100%}
}
@media (max-width:767.98px){.geo-vs-table .vs-res .badge{white-space:normal;text-align:left}}

/* ============ Аудит, волна 5 (17.10.2026) ============ */
/* В5-3: «Перейти к содержимому» — видна только при фокусе с клавиатуры */
.geo-skip-link{position:absolute;left:8px;top:-60px;z-index:2000;background:#1d4ed8;color:#fff;padding:8px 14px;border-radius:6px;font-weight:600;text-decoration:none;transition:none}
.geo-skip-link:focus{top:8px;color:#fff;outline:3px solid #93c5fd}
#geo-main:focus{outline:none}
/* В5-5: заметное кольцо фокуса — только при навигации с клавиатуры */
a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:not([tabindex="-1"]):focus-visible,.btn:focus-visible,.form-check-input:focus-visible,.nav-link:focus-visible{outline:3px solid #2563eb!important;outline-offset:2px;box-shadow:0 0 0 5px rgba(37,99,235,.18)!important}
/* В6-5: те же области нажатия на любом сенсорном экране — планшет и телефон, повёрнутый горизонтально,
   шире 767 px и раньше получали «компьютерные» 14–28 px. */
@media (pointer:coarse) and (min-width:768px){
  .btn,.btn-sm,.segmented a,.segmented button,.geo-controls__icon,.geo-balance-pill{min-height:40px}
  .segmented a,.segmented button{display:inline-flex;align-items:center;justify-content:center}
  .btn-sm{padding-top:8px;padding-bottom:8px}
  .geo-controls__link{min-height:40px}
  .geo-controls__icon{min-width:40px;display:inline-flex;align-items:center;justify-content:center}
  .geo-help,.geo-kpi__open,.geo-widget__kebab,.geo-chip__x,.star-btn{position:relative}
  .geo-help::after,.geo-kpi__open::after,.geo-widget__kebab::after,.geo-chip__x::after,.star-btn::after{content:"";position:absolute;left:50%;top:50%;width:40px;height:40px;transform:translate(-50%,-50%)}
  .page-pretitle a,.geo-std-chip,.geo-guide-btn{display:inline-flex;align-items:center;min-height:40px}
  .form-check:not(.form-switch) > .form-check-input[type=checkbox],.table .form-check-input[type=checkbox]{width:22px;height:22px}
  .page-link{min-width:40px;min-height:40px;display:inline-flex;align-items:center;justify-content:center}
  .btn-icon{min-width:40px}
  .table thead th a{display:inline-flex;align-items:center;min-height:32px}
  .geo-chips{min-height:44px}
  .geo-chips input{min-height:32px}
  .geo-chips__add{min-width:36px;min-height:36px}
  summary{min-height:40px;display:flex;align-items:center}
  .geo-std-advice summary{align-items:flex-start;padding:10px 0}
  .geo-std-advice__text a{display:inline-block;padding:8px 0}
  a.geo-donut__row{min-height:36px}
  .form-help{position:relative}
  .form-help::after{content:"";position:absolute;left:50%;top:50%;width:40px;height:40px;transform:translate(-50%,-50%)}
  /* Кнопки и ссылки-значки (только иконка внутри) — та же невидимая область 40×40; выпадающие меню не трогаем (их ::after — стрелка). */
  a:has(> .ti:only-child):not(.dropdown-toggle),button:has(> .ti:only-child):not(.dropdown-toggle){position:relative}
  a:has(> .ti:only-child):not(.dropdown-toggle)::after,button:has(> .ti:only-child):not(.dropdown-toggle)::after{content:"";position:absolute;left:50%;top:50%;width:40px;height:40px;transform:translate(-50%,-50%)}
  input[type=file].form-control{min-height:40px}
}
/* В6-6: длинный заголовок колонки переносится, а не раздвигает таблицу шире экрана ноутбука */
.geo-table thead th.geo-th-wrap{white-space:normal;min-width:96px;max-width:130px;line-height:1.25}
/* В7-2: в архивном проекте кнопки сбора не показываем (сервер всё равно откажет) */
.geo-archived [data-geo-limits],.geo-archived .refresh-form{display:none!important}

/* Аудит В27-1 (18.10.2026): контраст текста не ниже 4,5:1 (WCAG AA). Цвета те же по смыслу, только темнее. */
:root{
  --tblr-danger:#dc2626;
  --tblr-success:#047857;
  --tblr-muted:#6b7280;
  --tblr-secondary:#4b5563;
  --tblr-link-color:#1d4ed8;
  --tblr-link-color-rgb:29,78,216;
  --tblr-link-hover-color:#1e40af;
  --tblr-link-hover-color-rgb:30,64,175;
}
.navbar-vertical.geo-sidebar .nav-section-title,.delta-zero,.geo-help,.geo-kpi__note,.geo-hbars__label small,
.geo-table .geo-cell-query small,.geo-meta dt,.geo-tour-panel__progress,.geo-sent--none,.geo-badge-emu,.geo-drawer__loading{color:#6b7280}
.geo-help{border-color:#9ca3af}
.geo-yesno--no{color:#4b5563}
.geo-score--pos{background:#15803d}
.geo-score--neu{color:#1f2937}
.bg-red-lt,.bg-danger-lt{color:#991b1b!important}
.bg-green-lt,.bg-success-lt{color:#166534!important}
.bg-secondary-lt{color:#374151!important}
.bg-yellow-lt,.bg-warning-lt{color:#854d0e!important}
.bg-orange-lt{color:#9a3412!important}
.bg-blue-lt,.bg-azure-lt,.bg-primary-lt{color:#1e40af!important}
.bg-purple-lt{color:#6b21a8!important}
.bg-teal-lt,.bg-cyan-lt{color:#115e59!important}
/* Аудит В27-3: ссылка внутри текста отличается не только цветом */
:is(p,li,.form-hint,.form-check-label,.alert,small,.small,label,.text-secondary,.card-subtitle) a:not(.btn):not(.badge):not(.dropdown-item):not(.nav-link):not(.geo-help):not(.geo-pchip):not(.page-link):not(.list-group-item):not(.geo-sidebar a){text-decoration:underline;text-underline-offset:2px}
/* Аудит В27-2: рамка фокуса у строк ответов и прокручиваемых таблиц */
tr[data-drawer-href]:focus-visible,.table-responsive:focus-visible,[data-bs-toggle="tooltip"][tabindex]:focus-visible{outline:2px solid #2563eb;outline-offset:-2px}
.geo-controls__icon{color:#6b7280}
.geo-rank--none{color:#4b5563}
.geo-std-place--leader{color:#15803d}.geo-std-place--contender{color:#b45309}.geo-std-place--lagging{color:#b91c1c}
.geo-quick-chip.active .geo-quick-chip__n{color:#fff}
.btn-link{--tblr-btn-color:#1d4ed8;--tblr-btn-hover-color:#1e40af;--tblr-btn-active-color:#1e40af}
.alert-warning{--tblr-alert-color:#92400e}
.alert-danger{--tblr-alert-color:#991b1b}
.alert-success{--tblr-alert-color:#166534}
.alert-info{--tblr-alert-color:#1e40af}
.btn.btn-link{color:#1d4ed8}.btn.btn-link:hover{color:#1e40af}
.steps .step-item,.steps .step-item.active~.step-item{color:#6b7280}
.text-azure{color:#0369a1!important}.text-orange{color:#c2410c!important}.text-green{color:#15803d!important}
.text-red{color:#b91c1c!important}.text-yellow{color:#a16207!important}.text-blue{color:#1d4ed8!important}.text-purple{color:#7e22ce!important}

/* Аудит В33-1 (18.10.2026): на телефоне ссылка «← Проект» в заголовке была inline-flex — обрезка «…» родителя не
   работала, длинное название выходило за экран (в Safari — прокрутка всей страницы вбок). Блочная обрезка, 40 px. */
@media (max-width:767px){
  .page-pretitle a{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:top;line-height:40px;min-height:40px}
  /* Аудит В33-3: поля меньше 16 px iPhone увеличивает при нажатии — и маленькие (-sm) тоже */
  .form-control,.form-select,.form-control-sm,.form-select-sm{font-size:16px}
  /* Safari считает в ширину страницы самый длинный вариант списка (имена конкурентов) — список не шире блока */
  .form-select{max-width:100%;overflow:hidden;text-overflow:ellipsis}
}
/* Аудит В33-2: цвета текста Tabler заданы через color-mix() (Safari 16.2+) — в старом Safari красный и зелёный
   пропадали. Простые цвета (те же, что в В27-1) работают везде. */
.text-danger{color:#dc2626!important}.text-success{color:#047857!important}.text-warning{color:#b45309!important}
.text-info{color:#0369a1!important}.text-primary{color:#2563eb!important}
.text-secondary{color:#4b5563!important}.text-muted{color:#6b7280!important}

/* Логотипы нейросетей в плашках (18.10.2026, ProviderLogos): белый фон, значок 14 px, мягкая обводка цветом нейросети
   (задаётся в style). Своё правило с двумя классами — иначе плашку перекрашивает .geo-chip поля с тегами (голубой фон). */
.geo-chip.geo-provider{background:#fff;color:#1f2937;border:1px solid #e5e7eb;border-radius:999px;padding:2px 10px 2px 7px;gap:6px;line-height:20px}
.geo-chip.geo-provider.geo-chip--sm{padding:1px 8px 1px 6px;font-size:12px}
.geo-chip.geo-provider.geo-chip--selected{box-shadow:inset 0 0 0 1px var(--chip-color)}
.geo-plogo{width:14px;height:14px;flex-shrink:0;display:inline-block;vertical-align:-2px}
.geo-plogo--letter{border-radius:50%;color:#fff;font-size:9px;font-weight:700;line-height:14px;text-align:center}
.geo-pchip .geo-plogo{width:12px;height:12px}
.geo-pchip .geo-plogo--letter{font-size:8px;line-height:12px}

/* Аудит В38-1 (18.10.2026): ссылки в тексте совета на главном экране — подчёркнуты (1,12:1 без подчёркивания);
   жёлтые кнопки — тёмный текст (белый на жёлтом 2:1), контурные — тёмно-жёлтые. */
.geo-std-advice__text a{text-decoration:underline;text-underline-offset:2px}
.btn-warning{--tblr-btn-color:#1f2937;--tblr-btn-hover-color:#111827;--tblr-btn-active-color:#111827;color:#1f2937}
.btn-outline-warning{--tblr-btn-color:#92400e;--tblr-btn-border-color:#d97706;--tblr-btn-hover-color:#1f2937;color:#92400e;border-color:#d97706}
/* Аудит В41-2: домен-ссылка рядом с текстом в ячейке («40 стр.») — подчёркнута, иначе по цвету почти не отличается (2,19 : 1) */
.geo-domain-link{text-decoration:underline;text-underline-offset:2px}
/* Аудит В68-3 (20.10.2026): Tabler задаёт «тёмный» оттенок кнопок полупрозрачным (color-mix … transparent 20%) — при наведении
   кнопка СВЕТЛЕЕТ, белый текст на синем 3,47 : 1. Настоящие тёмные оттенки (простые цвета — работают и в старом Safari). */
:root{--tblr-primary-darken:#1d4ed8;--tblr-blue-darken:#1d4ed8;--tblr-success-darken:#047857;--tblr-green-darken:#047857;
  --tblr-danger-darken:#be123c;--tblr-red-darken:#b91c1c;--tblr-warning-darken:#d97706;--tblr-yellow-darken:#d97706;
  --tblr-info-darken:#0369a1;--tblr-azure-darken:#0369a1;--tblr-secondary-darken:#374151}
/* Аудит В68-1: переключатель видов («Список ответов · По запросам · По повторам») на телефоне переносится, а не растягивает страницу */
@media (max-width:575px){.segmented{flex-wrap:wrap;max-width:100%}}
/* Аудит В69-2 (20.10.2026): печать страницы (Ctrl+P → PDF). Графики оставались шириной экрана, широкие таблицы обрезались
   справа (в «Ответах» пропадали запрос и текст ответа), на бумагу шли кнопки. */
@media print{
  .table-responsive,.geo-table-wrap{overflow:visible!important;max-height:none!important}
  .table{width:100%!important;table-layout:auto!important;font-size:10px}
  .table th,.table td{white-space:normal!important;min-width:0!important;max-width:none!important;padding:4px 6px!important}
  canvas{max-width:100%!important;height:auto!important}
  .btn,.btn-group,.dropdown-menu,.modal,.geo-drawer,.toast-container,.geo-tour,.geo-tour-panel{display:none!important}
  /* 23.10.2026, волна 83 (В83-31): панель гида называется .geo-tour-panel (класса .geo-tour нет) — печаталась поверх страницы; подсветку шага тоже убираем */
  .geo-tour-highlight{outline:none!important}
  .card{box-shadow:none!important}
  /* вёрстка как на компьютере (браузер уменьшит её до ширины листа): в ширину A4 виджеты в две колонки не помещаются */
  body{background:#fff!important;min-width:1200px}
}
/* Аудит В69-3: режим высокой контрастности Windows убирает фоны и тени — выбранный пункт отмечаем рамкой системного цвета. */
@media (forced-colors:active){
  .segmented a.active,.segmented button.active,.navbar-vertical.geo-sidebar .nav-link.active,.nav-tabs .nav-link.active{outline:2px solid Highlight;outline-offset:-2px}
}
/* Простой режим, макет v5 (21.10.2026): Сводка — больше воздуха, ширина ограничена, конкуренты в своих цветах,
   подробности строки — при наведении/фокусе (на телефоне — по нажатию, класс .on). */
.geo-std>.container-xl{max-width:1200px}
.geo-std-head{margin-bottom:18px;align-items:flex-start}
.geo-std-head__main{min-width:0}
.geo-std-head__main .geo-std-head__title{font-size:22px;font-weight:600}
.geo-std-head__meta{font-size:13px;color:#4b5563;margin-top:4px}
.geo-s5-card{padding:22px 24px;margin-bottom:16px;border-radius:14px}
.geo-s5-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:16px}
.geo-s5-head h2{font-size:15px;font-weight:600;margin:0;color:#1f2937}
.geo-s5-mute{font-size:12.5px;color:#4b5563}
.geo-s5-mute-lg{font-size:14px;color:#4b5563}
.geo-s5-top{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:20px 36px;align-items:center}
.geo-s5-ring{display:flex;gap:18px;align-items:center}
.geo-s5-ring svg{flex-shrink:0}
.geo-s5-ring__num{font-size:30px;font-weight:600;fill:#1f2937}
.geo-s5-ring__of{font-size:12px;fill:#4b5563}
.geo-s5-place{font-size:22px;font-weight:600;margin:6px 0 10px;color:#1f2937}
.geo-s5-place--sm{font-size:14px;font-weight:400}
/* 23.10.2026, волна 83 (В83-34): без nowrap — в узкой колонке кольца «↑ больше, чем в прошлый раз (29)» уходило под список конкурентов */
.geo-s5-pill{display:inline-block;font-size:12.5px;background:#f3f4f6;color:#4b5563;padding:3px 10px;border-radius:999px;white-space:normal;max-width:100%;overflow-wrap:anywhere}
.geo-s5-pill--up{background:#dcfce7;color:#166534}
.geo-s5-pill--down{background:#fef3c7;color:#92400e}
.geo-s5-dot{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:7px;vertical-align:1px;flex-shrink:0}
.geo-s5-row{display:grid;grid-template-columns:minmax(80px,110px) minmax(0,1fr) 28px;gap:10px;align-items:center;padding:7px 8px;margin:0 -8px;border-radius:8px;font-size:14px;color:#1f2937;text-decoration:none}
.geo-s5-row:hover,.geo-s5-row:focus{background:#f3f4f6;color:#1f2937;text-decoration:none}
.geo-s5-row--own,.geo-s5-row--own:hover,.geo-s5-row--own:focus{background:#eff6ff}
.geo-s5-row--own .geo-s5-row__name,.geo-s5-row--own .geo-s5-row__num{font-weight:600}
.geo-s5-row__name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.geo-s5-row__num{text-align:right;font-variant-numeric:tabular-nums}
.geo-s5-bar{display:block;height:8px;background:#f1f5f9;border-radius:4px;overflow:hidden}
.geo-s5-bar>i{display:block;height:100%;border-radius:0 4px 4px 0}
.geo-s5-bar--thin{height:6px}
.geo-s5-det{display:none;grid-column:1/-1;font-size:12.5px;color:#4b5563;line-height:1.5;margin-top:4px}
.geo-s5-task.on .geo-s5-det{display:block}
.geo-s5-brands__foot{display:flex;justify-content:space-between;margin-top:8px}
.geo-s5-brands__foot a{color:#4b5563}
.geo-s5-tonebar{display:flex;height:8px;border-radius:4px;overflow:hidden;gap:3px;margin-bottom:12px}
.geo-s5-tonelist{display:flex;gap:6px 20px;flex-wrap:wrap;font-size:13px}
.geo-s5-tonelist a{color:#1f2937;text-decoration:none}
.geo-s5-tonelist a:hover{text-decoration:underline}
.geo-s5-tonelist b{font-weight:600;font-size:16px;margin-left:2px}
.geo-s5-tone__hint{margin-top:16px;line-height:1.5}
.geo-s5-pair{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:16px;margin-bottom:16px}
.geo-s5-pair>.geo-s5-card{margin:0;min-width:0}
.geo-s5-task{display:flex;gap:12px;align-items:center;padding:10px 8px;margin:0 -8px;border-radius:8px;font-size:14px;cursor:pointer}
.geo-s5-task:hover,.geo-s5-task:focus,.geo-s5-task.on{background:#f3f4f6;outline:none}
.geo-s5-task:focus-visible{outline:2px solid #2563eb;outline-offset:-2px}
.geo-s5-task__icon{width:34px;height:34px;border-radius:9px;background:#eff6ff;color:#2563eb;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:18px}
.geo-s5-task__body{flex:1;min-width:0}
.geo-s5-task form{margin:0}
.geo-s5-task .geo-s5-det a{text-decoration:underline;text-underline-offset:2px}
.geo-s5-more-advice{margin-top:6px;font-size:13px}
.geo-s5-more-advice summary{color:#2563eb;cursor:pointer;padding:4px 0}
.geo-s5-done{margin-top:12px;padding-top:12px;border-top:1px solid #e5e7eb;font-size:12.5px;color:#4b5563;display:grid;gap:4px}
.geo-s5-q{display:block;padding:10px 8px;margin:0 -8px;border-radius:8px;color:#1f2937;text-decoration:none}
.geo-s5-q:hover,.geo-s5-q:focus{background:#f3f4f6;color:#1f2937;text-decoration:none}
.geo-s5-q.lit{background:#fff1e6}
.geo-s5-q__line{display:flex;justify-content:space-between;gap:12px;font-size:14px;margin-bottom:7px}
.geo-s5-q__text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.geo-s5-q__num{white-space:nowrap}
.geo-s5-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px}
.geo-s5-tile{display:flex;flex-direction:column;gap:6px;border-radius:10px;padding:12px 14px;background:#f8fafc;color:#1f2937;text-decoration:none}
.geo-s5-tile:hover{background:#f1f5f9;color:#1f2937;text-decoration:none}
.geo-s5-tile__num{font-size:20px;font-weight:600}
.geo-s5-details{margin-top:4px}
.geo-s5-details>summary{display:flex;width:max-content;max-width:100%;margin:4px auto 0;list-style:none;white-space:normal}
.geo-s5-details>summary::-webkit-details-marker{display:none}
.geo-s5-details[open]>summary .ti-chevron-down{transform:rotate(180deg)}
.geo-s5-details__body{margin-top:20px}
@media (max-width:575px){.geo-s5-card{padding:18px 16px}.geo-s5-place{font-size:19px}.geo-s5-q__text{white-space:normal}.geo-s5-pill{white-space:normal}}
/* 23.10.2026, волна 83 (В83-31): display:block у вложенного блока закрытый <details> не раскрывает — раскрываем само
   содержимое details (Chrome 131+); для остальных браузеров details открывает скрипт на beforeprint (dashboard_standard.php). */
@media print{.geo-s5-details__body{display:block}.geo-s5-details::details-content{content-visibility:visible;display:block}}
/* Аудит В76 (21.10.2026): выбор проверки и периода на первом экране, строки без ссылки (гость), телефон без наведения. */
.geo-s5-datebtn{border:0;background:none;padding:0 2px;color:#1d4ed8;font:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:2px;border-bottom:1px dashed #93c5fd;border-radius:0}
.geo-s5-datebtn:hover,.geo-s5-datebtn:focus-visible{color:#1e40af;border-bottom-style:solid}
.geo-s5-datebtn .ti{font-size:14px}
.geo-s5-head .geo-s5-period,.geo-s5-tone .geo-s5-period{font-size:12.5px}
.geo-s5-head h2 .geo-help{margin-left:4px;vertical-align:1px}
.geo-s5-dd-num{color:#4b5563;font-variant-numeric:tabular-nums}
.dropdown-item.active .geo-s5-dd-num{color:inherit}
.geo-s5-range{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-end;padding:4px 12px 6px;min-width:240px}
.geo-s5-range label{font-size:12.5px;color:#4b5563;display:flex;flex-direction:column;gap:2px;flex:1 1 100px}
div.geo-s5-row,div.geo-s5-q,div.geo-s5-tile{cursor:default}
.geo-s5-tone__item{color:#1f2937;text-decoration:none}
a.geo-s5-tone__item:hover{text-decoration:underline;color:#1f2937}
.geo-s5-nocomp{font-size:14px;color:#4b5563;line-height:1.5;padding:8px 0}
.geo-s5-nocomp a{text-decoration:underline;text-underline-offset:2px}
.geo-s5-dup{margin:8px 0 0;font-size:12.5px;color:#4b5563;background:#fffbeb;border-radius:8px;padding:6px 10px}
.geo-s5-dup .btn-link{font-size:12.5px;text-decoration:underline;text-underline-offset:2px}
/* телефон и планшет: наведения нет — короткие подробности своей строки и вопросов видны сразу */
/* 21.10.2026 (замечание владельца): ничего не раскрывается при наведении — подробности строк в «?», задача — по нажатию */
.geo-s5-row{grid-template-columns:minmax(80px,110px) minmax(0,1fr) 28px 18px;cursor:default}
.geo-s5-row__name a,.geo-s5-q__text a{color:inherit;text-decoration:none}
.geo-s5-row__name a:hover,.geo-s5-q__text a:hover{text-decoration:underline}
.geo-s5-row__help .geo-help,.geo-s5-q__num .geo-help{margin:0}
.geo-s5-q{cursor:default}
.geo-s5-task{cursor:default}
.geo-s5-task__toggle{border:0;background:none;padding:0;text-align:left;font:inherit;color:inherit;cursor:pointer}
.geo-s5-task__toggle .ti{font-size:14px;color:#4b5563;transition:transform .15s}
.geo-s5-task.on .geo-s5-task__toggle .ti{transform:rotate(180deg)}
.geo-s5-task__toggle:hover{text-decoration:underline}
/* 21.10.2026 (замечание владельца): выбор нейросетей — кружок не сжимается, когда у названия две метки и строка переносится;
   пустой кружок виден (рамка 4,8 : 1, было почти белое на белом). */
.form-selectgroup-check{flex-shrink:0}
.form-selectgroup-input:not(:checked)+.form-selectgroup-label .form-selectgroup-check{border-color:#6b7280}
#wiz-providers .form-selectgroup-label .flex-fill .badge{white-space:nowrap}
/* 22.10.2026: шаг «Запросы» мастера — два явных пути (подобрать через ИИ / вписать самим) */
.geo-q-ai{background:#f8fafc;border:1px solid #e5e7eb;border-radius:10px;padding:14px 16px}
.geo-q-or{display:flex;align-items:center;gap:10px}
.geo-q-or::before,.geo-q-or::after{content:"";flex:1;border-top:1px solid #e5e7eb}
/* 22.10.2026: настройки проекта — «Как ещё пишут конкурентов» */
.geo-ca-list{max-height:420px;overflow:auto;border:1px solid #e5e7eb;border-radius:8px;padding:6px 10px}
.geo-ca-row{display:grid;grid-template-columns:minmax(110px,180px) minmax(0,1fr);gap:10px;align-items:start;padding:6px 0;border-bottom:1px solid #f1f5f9}
.geo-ca-row:last-child{border-bottom:0}
.geo-ca-name{font-size:13px;padding-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0}
@media (max-width:575px){.geo-ca-row{grid-template-columns:1fr;gap:2px}}
.geo-ca-line{display:flex;align-items:center;gap:8px;margin-bottom:4px;flex-wrap:wrap}
.geo-ca-lbl{font-size:12.5px;color:#4b5563;width:120px;flex-shrink:0}
@media (max-width:575px){.geo-ca-lbl{width:auto}}

/* 22.10.2026: мастер — «Ещё нейросети» заметной кнопкой */
.geo-wiz-more > summary { list-style: none; display: flex; align-items: center; min-width: 0; }
.geo-wiz-more > summary::-webkit-details-marker { display: none; }
.geo-wiz-more > summary .text-truncate { min-width: 0; }
.geo-wiz-more[open] .geo-wiz-more__icon { transform: rotate(180deg); }

/* 22.10.2026: баннер «Собираем данные…» — признаки жизни */
.geo-collect-live { color: var(--tblr-body-color); }
.geo-collect-live__pulse { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--tblr-success, #2fb344); margin-right: 6px; vertical-align: middle; animation: geo-pulse 1.4s ease-in-out infinite; }
@keyframes geo-pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: .35; transform: scale(.7); } }
.geo-collect-prov { display: flex; flex-wrap: wrap; gap: 6px; }
.geo-collect-prov__item { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 999px; background: var(--tblr-bg-surface, #fff); border: 1px solid var(--tblr-border-color); font-size: .8125rem; }
.geo-collect-prov__item.is-done { opacity: .75; }
.geo-collect-prov__item b { font-weight: 600; }
.geo-spin { display: inline-block; animation: geo-spin 1s linear infinite; }
@keyframes geo-spin { to { transform: rotate(360deg); } }
.geo-progress-live { background-image: linear-gradient(45deg, rgba(255,255,255,.25) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.25) 50%, rgba(255,255,255,.25) 75%, transparent 75%, transparent); background-size: 1rem 1rem; animation: geo-stripes 1s linear infinite; transition: width .6s ease; }
@keyframes geo-stripes { from { background-position: 1rem 0; } to { background-position: 0 0; } }
@media (prefers-reduced-motion: reduce) { .geo-collect-live__pulse, .geo-spin, .geo-progress-live { animation: none; } }

/* 22.10.2026, волна 80: длинное название проекта на телефоне не раздвигает меню (горизонтальная прокрутка на 390px) */
.geo-project-switch, .geo-project-switch .dropdown { min-width: 0; max-width: 100%; }
@media (max-width: 991.98px) { .navbar-vertical .navbar-collapse { min-width: 0; max-width: 100%; } }

/* 28.10.2026, план vs brandfound (П4.2): «По запросам» — колонки-нейросети, «2/3» с заливкой по доле */
.bf-heat{display:inline-block;min-width:44px;padding:3px 8px;border-radius:6px;font-size:13px;font-weight:600;text-decoration:none;white-space:nowrap;border:1px solid transparent}
.bf-heat:hover{text-decoration:none;border-color:#6b7280}
.bf-heat:focus-visible{outline:2px solid #1d4ed8;outline-offset:2px}
.bf-heat--0{background:#fef2f2;color:#b91c1c}
.bf-heat--1{background:#f0fdf4;color:#166534;border-color:#bbf7d0}
.bf-heat--2{background:#bbf7d0;color:#14532d}
.bf-heat--3{background:#4ade80;color:#14532d}
.bf-heat--4{background:#15803d;color:#fff}
.bf-pg-head{font-weight:500;vertical-align:bottom}
.bf-pg-head .geo-plogo{display:block;margin:0 auto 2px}
.bf-pg-head__name{display:block;font-size:11px;line-height:1.2;max-width:90px;margin:0 auto;white-space:normal;text-transform:none}
.bf-pg-cell__name{display:none}
.bf-lottery{font-weight:500;cursor:help}
@media (max-width:767.98px){
  .bf-pgrid tbody tr{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
  .bf-pgrid .pg-q{flex:1 1 100%}
  .bf-pgrid .bf-pg-cell{flex:0 0 auto}
  .bf-pgrid .bf-pg-cell[data-empty]{display:none!important}
  .bf-pgrid .bf-pg-cell__name{display:inline;font-weight:400;margin-right:4px}
  .bf-pgrid .pg-res{flex:1 1 auto;margin-top:4px}
  .bf-pgrid .pg-link{flex:0 0 auto;margin-top:4px}
  .bf-pgrid .pg-rival{flex:1 1 100%}
}
/* П4.1, П4.3: вкладка «Негатив» — доля негатива по нейросетям и типам, площадки негатива */
.bf-neg-bar{display:inline-block;width:60px;height:6px;border-radius:3px;background:#eef0f3;vertical-align:middle;margin-right:6px;overflow:hidden}
.bf-neg-bar>span{display:block;height:100%;background:#dc2626}
.bf-neg-facet__on td{background:#fff7ed}
.bf-neg-facet__on td:first-child{box-shadow:inset 3px 0 0 #c2410c;font-weight:600}
.bf-neg-dom__more>summary{cursor:pointer;color:#1d4ed8;font-size:13px}
.bf-neg-dom__item{padding:8px 0;border-top:1px solid #eef0f3}
.bf-neg-dom__item:first-child{border-top:0}
/* П4.4: «Источники» → «Домены», доля ответов каждой нейросети с доменом */
.bf-share{display:inline-block;min-width:40px;padding:1px 6px;border-radius:4px;font-size:12.5px;white-space:nowrap}
.bf-share--1{background:#eff6ff;color:#1e3a8a}
.bf-share--2{background:#dbeafe;color:#1e3a8a}
.bf-share--3{background:#93c5fd;color:#1e3a8a}
.bf-share--4{background:#1d4ed8;color:#fff}

/* 28.10.2026, план vs brandfound (П1 / КБ-0): «Карта бренда» */
.bfm-summary { white-space: normal; line-height: 1.55; max-width: 72ch; }
.bfm-table .bfm-section-row td { background: var(--tblr-bg-surface-secondary, #f6f8fb); padding-top: .5rem; padding-bottom: .5rem; }
.bfm-meta { display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: center; margin-top: 2px; font-size: .8125rem; color: #4b5563; }
.bfm-meta a { color: inherit; text-decoration: underline; text-underline-offset: 2px; overflow-wrap: anywhere; }
.bfm-section-select { width: auto; max-width: 100%; }
.bfm-grow { flex: 1 1 220px; min-width: 0; }
.bfm-knowledge-head { font-size: 1rem; }
.bfm-silent li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 8px; padding: 6px 0; border-bottom: 1px solid var(--tblr-border-color); }
.bfm-silent li:last-child { border-bottom: 0; }
.bfm-silent li > span { min-width: 0; overflow-wrap: anywhere; }
.bfm-draft-item { display: flex; gap: 8px; align-items: flex-start; margin-bottom: 8px; }
.bfm-draft-form { min-height: 0; max-height: 100%; }
.bf-src-dom{min-width:230px;white-space:nowrap}

/* 28.10.2026, проверка партии 1 (план vs brandfound): длинная подпись KPI («из 10 · нейтрально» + дельта) сжимала блок до 0 и вылезала за экран на 1366 — переносим строку */
.geo-kpi__bottom{flex-wrap:wrap}

/* 28.10.2026, план vs brandfound (П1): «Карта бренда» на телефоне — строка карточкой, без прокрутки таблицы вбок. */
@media (max-width: 575.98px) {
  .bfm-table thead { display: none; }
  .bfm-table tr { display: flex; flex-wrap: wrap; align-items: center; gap: 0 12px; border-bottom: 1px solid var(--tblr-border-color, #e6e7e9); }
  .bfm-table td { display: block; border: 0 !important; padding-top: .35rem; padding-bottom: .35rem; }
  .bfm-table tr > td:first-child { flex: 1 1 100%; }
  .bfm-table td.text-end { text-align: left !important; }
  .bfm-table td[data-label]::before { content: attr(data-label) ": "; color: #4b5563; font-size: .8125rem; }
  .bfm-table td[data-label] .small { display: inline; margin-left: 4px; }
  .bfm-table tr > td:last-child:not(:first-child):not([data-label]):not(.bfm-nocheck) { margin-left: auto; }
}

/* 28.10.2026, план vs brandfound (П1.5): мастер, шаг 2 — блок «Что нейросети должны знать о вас». */
.bf2wiz-map { border: 1px solid var(--tblr-border-color); border-radius: var(--tblr-border-radius); padding: .75rem 1rem; }
.bf2wiz-map .form-check-label, .bf2wiz-map textarea { overflow-wrap: anywhere; }
.bf2wiz-map__item { margin-bottom: .35rem; }

/* 28.10.2026, план vs brandfound (П7.2–П7.6): контент-план — идеи недели, план статьи, проверка цитирования, эффект по запросам. */
.cp7-idea__text{flex:1 1 320px;min-width:0}
.cp7-why{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;max-width:280px}
.cp7-outline .badge,.cp7-sim .badge{white-space:normal;text-align:left}
.cp7-outline .cp7-q{max-width:100%;overflow-wrap:anywhere}
.cp7-sim__q{min-width:180px;overflow-wrap:anywhere}
.cp7-eq summary{cursor:pointer;color:var(--tblr-primary,#1d4ed8)}
.cp7-eq ul{max-width:340px;overflow-wrap:anywhere}
.cp7-draft-footer{flex-wrap:wrap;gap:.5rem}
.cp7-draft-footer>*{margin:0}
@media (max-width:575.98px){.cp7-draft-footer .btn{flex:1 1 100%}}
/* 28.10.2026, план vs brandfound (П3.1): точка отсчёта — длинные списки тем прокручиваются внутри колонки */
.bf2c-checks{max-height:16rem;overflow-y:auto;padding-right:4px}
.bf2c-checks .form-check-label{overflow-wrap:anywhere}

/* 28.10.2026, план vs brandfound (П2): карта бренда — выгрузка, подтверждение, «нейросети говорят о вас», аудит бренда */
.bfm2-export .btn { white-space: nowrap; }
.bfm2-product-filter { width: auto; max-width: 220px; }
.bfm2-confirm .form-check-label { font-size: .8125rem; }
.bfm2-claim { overflow-wrap: anywhere; }
.bfm2-more > summary { cursor: pointer; list-style: none; }
.bfm2-was { overflow-wrap: anywhere; }
.bfm2-audit-item { padding: 8px 0; border-bottom: 1px solid var(--tblr-border-color); }
.bfm2-audit-item:last-of-type { border-bottom: 0; }
.bfm2-audit-text { overflow-wrap: anywhere; }
