/* ══════════════════════════════════════════════════════════════════════
   GEO — видимость в нейросетях (spec-geo §10, макет r2).
   Страницы: список /geo, мастер /geo/new, дашборд /geo/{pid}, ответ, настройки, лендинг гостя.
   Общие компоненты (сегменты, чипы, баннеры, модалки, KPI, выпадающие списки) — из positions.css;
   здесь — только своё. Только токены base.css, без inline-стилей.
   ══════════════════════════════════════════════════════════════════════ */

.geo-page { max-width: 1280px; }
.geo-num { font-variant-numeric: tabular-nums; }
.geo-dim { color: var(--text-dim); }
.geo-muted { color: var(--text-muted); }
.geo-nowrap { white-space: nowrap; }
.geo-strong { color: var(--text); font-weight: 600; }

/* Ширины полос — классами (без inline-стилей): .geo-w-0 … .geo-w-100, шаг 5 */
.geo-w-0 { width: 0; } .geo-w-5 { width: 5%; } .geo-w-10 { width: 10%; } .geo-w-15 { width: 15%; }
.geo-w-20 { width: 20%; } .geo-w-25 { width: 25%; } .geo-w-30 { width: 30%; } .geo-w-35 { width: 35%; }
.geo-w-40 { width: 40%; } .geo-w-45 { width: 45%; } .geo-w-50 { width: 50%; } .geo-w-55 { width: 55%; }
.geo-w-60 { width: 60%; } .geo-w-65 { width: 65%; } .geo-w-70 { width: 70%; } .geo-w-75 { width: 75%; }
.geo-w-80 { width: 80%; } .geo-w-85 { width: 85%; } .geo-w-90 { width: 90%; } .geo-w-95 { width: 95%; }
.geo-w-100 { width: 100%; }

/* Полоса-доля (доля голоса, доля ответов, расход) */
.geo-bar { position: relative; height: 8px; border-radius: 9999px; background: var(--bg-input); overflow: hidden; min-width: 80px; }
.geo-bar-fill { height: 100%; border-radius: inherit; background: var(--text-dim); transition: width var(--dur-slow) var(--ease); }
.geo-bar--own .geo-bar-fill, .geo-bar--accent .geo-bar-fill { background: var(--accent); }
.geo-bar--over .geo-bar-fill { background: var(--yellow); }
.geo-bar-row { display: grid; grid-template-columns: 48px minmax(80px, 1fr); align-items: center; gap: var(--space-sm); }
.geo-bar-row b { text-align: right; font-variant-numeric: tabular-nums; }

/* Движок: иконка (чат — ответ модели, лупа — ИИ-блок выдачи) + название */
.geo-engs { display: flex; flex-wrap: wrap; gap: var(--space-2xs); }
.geo-eng {
  display: inline-flex; align-items: center; gap: var(--space-2xs); white-space: nowrap;
  font-size: var(--fs-xs); color: var(--text-dim); padding: 2px var(--space-xs);
  border-radius: var(--radius-xs); background: var(--bg-input);
}
.geo-eng svg { flex-shrink: 0; color: var(--text-muted); }
.geo-eng--off { color: var(--text-muted); text-decoration: line-through; }

/* Метки вопросов: «без бренда», «местный», «с брендом» */
.geo-tags { display: flex; flex-wrap: wrap; gap: var(--space-2xs); margin-top: var(--space-2xs); }
.geo-tag {
  display: inline-flex; align-items: center; font-size: var(--fs-xs); line-height: 1.4;
  padding: 0 var(--space-xs); border-radius: var(--radius-xs); background: var(--bg-input); color: var(--text-dim);
}
.geo-tag--brand { background: var(--accent-glow); color: var(--text); font-weight: 600; }
.geo-tag--err { background: var(--red-bg); color: var(--red); }

.geo-help {
  display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px;
  border-radius: 50%; border: 1px solid var(--text-muted); color: var(--text-dim); font-size: 10px; font-weight: 700;
  cursor: help; flex-shrink: 0; background: transparent; padding: 0;
}
.geo-help:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

/* ── Состояние «модуль недоступен» / ошибки загрузки ─────────────────── */
.geo-state { padding: var(--space-3xl) var(--space-xl); text-align: center; }
.geo-state.card:hover { transform: none; }
.geo-state-icon {
  display: inline-flex; align-items: center; justify-content: center; width: 56px; height: 56px;
  border-radius: var(--radius); background: var(--accent-glow); color: var(--accent); margin-bottom: var(--space-lg);
}
.geo-state--warn .geo-state-icon { background: var(--yellow-bg); color: var(--yellow); }
.geo-state-title { font-family: var(--font-heading); font-size: calc(var(--fs-base) + 3px); font-weight: 700; max-width: 520px; margin: 0 auto; }
.geo-state-text { color: var(--text-dim); font-size: var(--fs-md); max-width: 560px; margin: var(--space-sm) auto 0; line-height: 1.5; }
.geo-state-actions { display: flex; gap: var(--space-sm); justify-content: center; flex-wrap: wrap; margin-top: var(--space-xl); }
.geo-state-actions .btn { min-height: 44px; }

/* ══ Список /geo ═════════════════════════════════════════════════════ */
.geo-list-tools { display: flex; align-items: center; gap: var(--space-md); margin-bottom: var(--space-md); flex-wrap: wrap; }
.geo-list-tools .pos-search { flex: 0 1 360px; }
.geo-projects td { vertical-align: middle; padding: var(--space-md); }
.geo-projects th { font-size: var(--fs-xs); padding: var(--space-md); }
.geo-projects tbody tr { cursor: pointer; }
.geo-projects :is(th, td):nth-child(n+3) { text-align: right; }
.geo-projects td:nth-child(2) { width: 260px; }
.geo-proj-name { font-weight: 600; color: var(--text); text-decoration: none; }
.geo-proj-name:hover { color: var(--accent); }
.geo-proj-sub { display: flex; align-items: center; gap: var(--space-xs); flex-wrap: wrap; font-size: var(--fs-sm); color: var(--text-dim); margin-top: 2px; }
.geo-val { font-family: var(--font-heading); font-size: var(--fs-lg); font-weight: 700; font-variant-numeric: tabular-nums; }
.geo-cell-sub { font-size: var(--fs-xs); color: var(--text-muted); margin-top: 2px; white-space: nowrap; }
.geo-cell-sub a { color: var(--accent); }
.geo-spend { display: flex; flex-direction: column; align-items: flex-end; gap: var(--space-2xs); }
.geo-spend .geo-bar { width: 126px; height: 6px; }
.geo-spend-v { white-space: nowrap; font-variant-numeric: tabular-nums; }
.geo-spend-v span { color: var(--text-dim); font-size: var(--fs-sm); }
.geo-pos-badge {
  display: inline-flex; align-items: center; gap: var(--space-2xs); font-size: var(--fs-xs); font-weight: 600;
  padding: 0 var(--space-xs); border-radius: var(--radius-xs); background: var(--bg-input); color: var(--text-dim);
}
.geo-proj-cards { display: none; flex-direction: column; gap: var(--space-md); }
.geo-proj-card { padding: var(--space-lg); cursor: pointer; }
.geo-proj-card + .geo-proj-card { margin-top: 0; }
.geo-proj-card-stats {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-md);
  margin: var(--space-md) 0; padding: var(--space-md) 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border);
}
.geo-proj-card-label { font-size: var(--fs-xs); color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; }
.geo-proj-card-foot { display: flex; justify-content: space-between; align-items: center; gap: var(--space-sm); flex-wrap: wrap; font-size: var(--fs-sm); }
.geo-proj-card .geo-engs { margin-top: var(--space-sm); }

/* ══ Мастер /geo/new и настройки ═════════════════════════════════════ */
.geo-wiz { max-width: 920px; padding-bottom: 120px; }
.geo-wiz-title { font-family: var(--font-heading); font-size: calc(var(--fs-base) + 9px); font-weight: 700; margin-bottom: var(--space-lg); }
.geo-sec { padding: var(--space-xl); margin-bottom: var(--space-lg); }
.geo-sec.card:hover { transform: none; }
/* выпадающие списки (город) не обрезаются карточкой и ложатся поверх следующей секции */
.geo-sec.card { overflow: visible; }
.geo-sec:focus-within { position: relative; z-index: 2; }
.geo-sec + .geo-sec { margin-top: 0; }
.geo-sec-head { display: flex; align-items: center; gap: var(--space-md); margin-bottom: var(--space-lg); }
.geo-sec-n {
  display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; width: 32px; height: 32px;
  border-radius: 50%; background: var(--accent-glow); color: var(--accent); font-weight: 700; font-size: var(--fs-sm);
}
.geo-sec-title { font-family: var(--font-heading); font-size: calc(var(--fs-base) + 3px); font-weight: 700; flex: 1; }
.geo-sec-aside { font-size: var(--fs-sm); color: var(--text-muted); font-variant-numeric: tabular-nums; }
.geo-row-2 { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-lg); align-items: start; }
.geo-field + .geo-field, .geo-row-2 + .geo-field, .geo-field + .geo-row-2 { margin-top: var(--space-lg); }
.geo-hint { display: flex; gap: var(--space-xs); align-items: flex-start; font-size: var(--fs-sm); color: var(--text-muted); margin-top: var(--space-xs); line-height: 1.45; }
.geo-hint svg { flex-shrink: 0; margin-top: 2px; color: var(--yellow); }
.geo-hint--plain svg { color: var(--text-muted); }
.geo-translit { display: flex; flex-wrap: wrap; gap: var(--space-xs) var(--space-lg); align-items: center; margin-top: var(--space-sm); font-size: var(--fs-sm); color: var(--text-dim); }
.geo-translit .pos-check-line { min-height: 32px; font-size: var(--fs-sm); }

/* Конкуренты: строки «название · сайт · другие написания» */
.geo-comp-head, .geo-comp-row { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr) minmax(0, 1.2fr) 40px; gap: var(--space-sm); align-items: center; }
.geo-comp-head { font-size: var(--fs-xs); color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; padding: 0 var(--space-sm) var(--space-xs); }
.geo-comp-row { padding: var(--space-sm); border-radius: var(--radius-sm); background: var(--bg-surface); }
.geo-comp-row + .geo-comp-row { margin-top: var(--space-sm); }
.geo-icon-btn {
  display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px;
  border: none; border-radius: var(--radius-sm); background: transparent; color: var(--text-dim); cursor: pointer;
  transition: background var(--dur-fast), color var(--dur-fast);
}
.geo-icon-btn:hover { background: var(--bg-input); color: var(--text); }
.geo-icon-btn--danger:hover { color: var(--red); }
.geo-icon-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.geo-actions-row { display: flex; align-items: center; gap: var(--space-md); flex-wrap: wrap; margin-top: var(--space-md); }
.geo-actions-row .btn { min-height: 40px; }

/* Вопросы: источник (вкладки-карточки) и список */
.geo-src-tabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-sm); margin-bottom: var(--space-md); }
.geo-src-tab {
  display: flex; flex-direction: column; align-items: flex-start; gap: 2px; text-align: left;
  padding: var(--space-md); border-radius: var(--radius-sm); border: 1px solid transparent; background: var(--bg-surface);
  color: var(--text); font-family: var(--font-body); cursor: pointer; min-height: 64px;
  transition: border-color var(--dur-fast), background var(--dur-fast);
}
.geo-src-tab:hover { border-color: var(--border-hover); }
.geo-src-tab.active { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 8%, var(--bg-card)); }
.geo-src-tab:disabled { cursor: not-allowed; opacity: 0.6; }
.geo-src-tab:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.geo-src-tab-t { display: flex; align-items: center; gap: var(--space-xs); font-weight: 600; font-size: var(--fs-md); }
.geo-src-tab-s { font-size: var(--fs-xs); color: var(--text-dim); }
.geo-src-panel { margin-bottom: var(--space-md); }
.geo-src-panel .pos-textarea { min-height: 140px; }
.geo-prompts { border: 1px solid var(--border); border-radius: var(--radius-sm); overflow: hidden; }
.geo-prompts-head {
  display: flex; justify-content: space-between; gap: var(--space-md); flex-wrap: wrap;
  padding: var(--space-sm) var(--space-md); background: var(--bg-surface); font-size: var(--fs-sm); color: var(--text-dim);
}
.geo-prompts-head b { color: var(--text); }
.geo-prompt { display: flex; align-items: center; gap: var(--space-sm); padding: var(--space-sm) var(--space-md); border-top: 1px solid var(--border); }
.geo-prompt-main { flex: 1; min-width: 0; }
.geo-prompt-text { font-size: var(--fs-md); overflow-wrap: anywhere; }
.geo-prompt--err { background: var(--red-bg); }
.geo-prompt--edit .form-input { width: 100%; }
.geo-prompt-acts { display: flex; gap: var(--space-2xs); flex-shrink: 0; }
.geo-prompts-foot { padding: var(--space-sm) var(--space-md); border-top: 1px solid var(--border); font-size: var(--fs-sm); display: flex; gap: var(--space-md); flex-wrap: wrap; align-items: center; }
.geo-prompts-empty { padding: var(--space-lg); text-align: center; color: var(--text-dim); font-size: var(--fs-sm); border-top: 1px solid var(--border); }

/* Движки: карточки с ценой */
.geo-engine-cards { display: flex; flex-direction: column; gap: var(--space-sm); }
.geo-engine-card { align-items: flex-start; }
.geo-engine-card .pos-check-card-t { justify-content: space-between; width: 100%; gap: var(--space-2xs) var(--space-md); flex-wrap: wrap; }
.geo-engine-card-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.geo-engine-price { font-weight: 700; white-space: nowrap; font-variant-numeric: tabular-nums; }
.geo-engine-note { display: flex; align-items: center; gap: var(--space-2xs); font-size: var(--fs-xs); color: var(--text-muted); margin-top: var(--space-2xs); }
.geo-sched { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-lg); margin-top: var(--space-lg); }
.geo-radio { display: flex; gap: var(--space-sm); align-items: center; min-height: 40px; cursor: pointer; font-size: var(--fs-md); }
.geo-radio input { accent-color: var(--accent); width: 18px; height: 18px; }
.geo-radio input:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.geo-time-input { width: 120px; margin-left: var(--space-xl); }
.geo-limit { display: flex; align-items: center; gap: var(--space-sm); }
.geo-limit .form-input { width: 160px; }

/* Смета */
.geo-calc-lines { display: flex; flex-direction: column; gap: var(--space-xs); margin-top: var(--space-md); font-size: var(--fs-sm); color: var(--text-dim); }
.geo-calc-line { display: flex; gap: var(--space-xs); align-items: flex-start; }
.geo-calc-line svg { flex-shrink: 0; margin-top: 2px; }
.geo-calc-line b { color: var(--text); }
.geo-calc-head { font-size: var(--fs-sm); color: var(--text-dim); font-variant-numeric: tabular-nums; }
.geo-calc-head b { color: var(--text); }

/* Липкий итог мастера */
.geo-sticky {
  position: fixed; left: 50%; bottom: var(--space-md); z-index: var(--z-sticky);
  width: min(864px, calc(100vw - 2 * var(--space-lg))); transform: translate(-50%, 0);
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-md); flex-wrap: wrap;
  padding: var(--space-md) var(--space-lg); border-radius: var(--radius);
  background: var(--bg-card); border: 1px solid var(--border-hover); box-shadow: var(--shadow-lg);
  transition: opacity var(--dur-mid), transform var(--dur-mid) var(--ease);
}
.geo-sticky[hidden] { display: none; }
.geo-sticky.is-off { opacity: 0; pointer-events: none; transform: translate(-50%, 12px); }
.geo-sticky-sum { font-family: var(--font-heading); font-weight: 700; font-size: var(--fs-lg); font-variant-numeric: tabular-nums; }
.geo-sticky-sub { font-size: var(--fs-xs); color: var(--text-dim); font-variant-numeric: tabular-nums; margin-top: 2px; }
.geo-sticky-acts { display: flex; gap: var(--space-sm); flex-wrap: wrap; }
.geo-sticky-acts .btn { min-height: 44px; }
.geo-save-row { display: flex; justify-content: flex-end; gap: var(--space-sm); flex-wrap: wrap; margin-top: var(--space-lg); }
.geo-save-row .btn { min-height: 44px; }
.geo-form-err { margin-bottom: var(--space-md); }

/* ══ Дашборд /geo/{pid} ═════════════════════════════════════════════ */
.geo-head { display: flex; justify-content: space-between; align-items: flex-end; gap: var(--space-lg); flex-wrap: wrap; padding-bottom: var(--space-md); border-bottom: 1px solid var(--border); margin-bottom: var(--space-md); }
.geo-head-title { display: flex; align-items: baseline; gap: var(--space-md); flex-wrap: wrap; }
.geo-head-title h1 { font-family: var(--font-heading); font-size: calc(var(--fs-base) + 9px); font-weight: 700; overflow-wrap: anywhere; }
.geo-head-domain { font-size: var(--fs-lg); color: var(--text-dim); }
.geo-meta { display: flex; align-items: center; gap: var(--space-md); flex-wrap: wrap; margin-top: var(--space-sm); font-size: var(--fs-sm); color: var(--text-dim); }
.geo-meta-i { display: inline-flex; align-items: center; gap: var(--space-xs); }
.geo-meta-i svg { color: var(--text-muted); }
.geo-head-actions { display: flex; gap: var(--space-sm); flex-wrap: wrap; }
.geo-head-actions .btn { min-height: 40px; display: inline-flex; align-items: center; gap: var(--space-xs); }

.geo-filters { display: flex; align-items: center; gap: var(--space-sm); flex-wrap: wrap; margin-bottom: var(--space-md); }
.geo-filters-note { margin-left: auto; font-size: var(--fs-sm); color: var(--text-dim); font-variant-numeric: tabular-nums; }
.geo-dd-trigger { display: inline-flex; align-items: center; gap: var(--space-xs); min-height: 40px; }
.geo-dd-count { color: var(--text-muted); font-variant-numeric: tabular-nums; }
.geo-dd-item-n { margin-left: auto; font-size: var(--fs-xs); color: var(--text-muted); font-variant-numeric: tabular-nums; }
.geo-dd-sep { height: 1px; background: var(--border); margin: var(--space-xs) 0; }
.geo-dd-link { display: flex; align-items: center; gap: var(--space-xs); min-height: 40px; padding: 0 var(--space-sm); color: var(--accent); font-size: var(--fs-sm); font-weight: 600; text-decoration: none; border-radius: var(--radius-sm); }
.geo-dd-link:hover { background: var(--bg-card-hover); }

/* KPI: 4 карточки, для ИИ-блоков выдачи — 5 (первая «С ИИ-ответом») */
.geo-kpis.pos-kpis { margin-bottom: var(--space-lg); }
.geo-kpis--5.pos-kpis { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.geo-kpi--cov { background: var(--bg-surface); }
.geo-kpi-ci { font-size: var(--fs-xs); color: var(--text-dim); margin-top: var(--space-2xs); font-variant-numeric: tabular-nums; }
.geo-kpi-of { font-size: var(--fs-md); color: var(--text-dim); font-weight: 600; margin-left: var(--space-2xs); }
.geo-kpi-note { font-size: var(--fs-xs); color: var(--text-muted); margin-top: var(--space-2xs); }

/* График */
.geo-chart-card { margin-bottom: var(--space-lg); }
.geo-chart-card.card:hover { transform: none; }
.geo-chart-head { display: flex; justify-content: space-between; align-items: center; gap: var(--space-md); flex-wrap: wrap; padding: var(--space-lg) var(--space-xl) 0; }
.geo-chart-title { font-family: var(--font-heading); font-size: var(--fs-xl); font-weight: 700; }
.geo-chart-controls { display: flex; gap: var(--space-sm); align-items: center; flex-wrap: wrap; }
.geo-chart-body { padding: var(--space-md) var(--space-xl) var(--space-lg); }
.geo-chart { display: grid; grid-template-columns: 40px minmax(0, 1fr); grid-template-rows: 240px auto; column-gap: var(--space-sm); }
.geo-chart-y { display: flex; flex-direction: column; justify-content: space-between; text-align: right; font-size: var(--fs-xs); color: var(--text-muted); font-variant-numeric: tabular-nums; line-height: 1; padding-top: 28px; }
.geo-chart-plot { position: relative; min-width: 0; cursor: crosshair; touch-action: pan-y; border-radius: var(--radius-xs); }
.geo-chart-plot:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.geo-chart-plot svg { display: block; width: 100%; height: 100%; overflow: visible; }
.geo-chart-x { grid-column: 2; display: flex; justify-content: space-between; font-size: var(--fs-xs); color: var(--text-muted); margin-top: var(--space-xs); font-variant-numeric: tabular-nums; }
.geo-grid-line { stroke: var(--border); stroke-width: 1; }
.geo-band { fill: color-mix(in srgb, var(--accent) 16%, transparent); stroke: none; }
.geo-line { fill: none; stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.geo-line--own { stroke: var(--accent); }
.geo-line--comp { stroke: var(--text-dim); stroke-dasharray: 6 5; stroke-width: 1.5; }
.geo-mk-line { stroke: var(--text-muted); stroke-width: 1; stroke-dasharray: 2 3; vector-effect: non-scaling-stroke; }
.geo-cross { stroke: var(--text-muted); stroke-width: 1; vector-effect: non-scaling-stroke; }
.geo-chart-dot {
  position: absolute; width: 10px; height: 10px; border-radius: 50%; pointer-events: none;
  background: var(--accent); box-shadow: 0 0 0 2px var(--bg-card); transform: translate(-50%, -50%);
}
.geo-chart-dot--hollow { background: var(--bg-card); border: 2px solid var(--accent); }
.geo-chart-dot--comp { background: var(--text-dim); width: 8px; height: 8px; }
.geo-mk {
  position: absolute; top: 0; transform: translate(-50%, 0); width: 22px; height: 22px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center; padding: 0; cursor: pointer;
  font-size: 10px; font-weight: 700; font-family: var(--font-body); color: var(--text);
  background: var(--bg-surface); border: 1px solid var(--border-hover);
}
.geo-mk:hover, .geo-mk:focus-visible, .geo-mk.active { border-color: var(--accent); color: var(--accent); outline: none; }
.geo-mk--off { color: var(--text-muted); }
.geo-chart-tip {
  position: absolute; z-index: var(--z-tooltip); max-width: 280px;
  padding: var(--space-sm) var(--space-md); border-radius: var(--radius-sm);
  background: var(--bg-surface); border: 1px solid var(--border-hover); box-shadow: var(--shadow-md);
  font-size: var(--fs-xs); color: var(--text-dim); pointer-events: none; line-height: 1.5;
}
.geo-chart-tip[hidden] { display: none; }
.geo-chart-tip-h { color: var(--text); font-weight: 600; margin-bottom: 2px; }
.geo-chart-tip-row { display: flex; justify-content: space-between; gap: var(--space-lg); }
.geo-chart-tip-row b { color: var(--text); font-size: var(--fs-sm); font-variant-numeric: tabular-nums; }
.geo-legend { display: flex; gap: var(--space-xs) var(--space-lg); flex-wrap: wrap; font-size: var(--fs-xs); color: var(--text-dim); margin-top: var(--space-md); }
.geo-legend-i { display: inline-flex; align-items: center; gap: var(--space-xs); }
.geo-legend-sw { width: 18px; height: 0; border-top: 2px solid var(--accent); }
.geo-legend-sw--band { height: 10px; border: none; border-radius: 3px; background: color-mix(in srgb, var(--accent) 30%, transparent); }
.geo-legend-sw--comp { border-top: 2px dashed var(--text-dim); }
.geo-legend-dot { width: 10px; height: 10px; border-radius: 50%; border: 2px solid var(--accent); }
.geo-legend-mk { width: 18px; height: 18px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 9px; font-weight: 700; color: var(--text); background: var(--bg-surface); border: 1px solid var(--border-hover); }
.geo-chart-empty { padding: var(--space-2xl) 0; text-align: center; color: var(--text-dim); font-size: var(--fs-sm); }

/* Вкладки дашборда */
.geo-tabs-card { margin-bottom: var(--space-lg); }
.geo-tabs-card.card:hover { transform: none; }
.geo-tabs-card.card { overflow: visible; }
.geo-tabs { display: flex; gap: var(--space-xs); padding: 0 var(--space-md); border-bottom: 1px solid var(--border); overflow-x: auto; scrollbar-width: none; }
.geo-tabs::-webkit-scrollbar { display: none; }
.geo-tab {
  border: none; background: transparent; color: var(--text-dim); font-family: var(--font-body); font-size: var(--fs-md); font-weight: 600;
  padding: var(--space-md) var(--space-md); border-bottom: 2px solid transparent; white-space: nowrap; cursor: pointer; min-height: 44px; gap: var(--space-xs);
  transition: color var(--dur-fast), border-color var(--dur-fast);
}
.geo-tab:hover { color: var(--text); }
.geo-tab.active { color: var(--accent); border-bottom-color: var(--accent); }
.geo-tab:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.geo-tab-n { color: var(--text-muted); font-weight: 500; font-variant-numeric: tabular-nums; }
.geo-panel { padding: var(--space-lg) var(--space-xl); }
.geo-panel[hidden] { display: none; }
.geo-panel--flush { padding: 0; }
.geo-panel-head { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-md); flex-wrap: wrap; }
.geo-panel-title { font-family: var(--font-heading); font-size: var(--fs-xl); font-weight: 700; }
.geo-panel-aside { font-size: var(--fs-sm); color: var(--text-dim); }
.geo-panel-sub { font-size: var(--fs-sm); color: var(--text-dim); margin: var(--space-2xs) 0 var(--space-md); line-height: 1.45; }
.geo-panel-block + .geo-panel-block { margin-top: var(--space-2xl); padding-top: var(--space-xl); border-top: 1px solid var(--border); }
.geo-panel-msg { padding: var(--space-xl); text-align: center; color: var(--text-dim); font-size: var(--fs-md); }

/* Таблица «вопрос × движок» — вложенный скролл с подгрузкой */
.geo-grid-tools { display: flex; justify-content: space-between; align-items: flex-end; gap: var(--space-md); flex-wrap: wrap; padding: var(--space-lg) var(--space-xl) var(--space-md); }
.geo-grid-note { font-size: var(--fs-sm); color: var(--text-dim); }
.geo-grid-wrap { position: relative; overflow: auto; max-height: 640px; overscroll-behavior: contain; border-top: 1px solid var(--border); transition: opacity var(--dur-fast); }
.geo-grid-wrap.is-loading { opacity: 0.6; }
.geo-grid-wrap:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.geo-grid { width: 100%; border-collapse: separate; border-spacing: 0; font-size: var(--fs-sm); }
.geo-grid th {
  position: sticky; top: 0; z-index: 2; background: var(--bg-card); text-align: center;
  font-size: var(--fs-xs); font-weight: 600; color: var(--text-dim); text-transform: uppercase; letter-spacing: 0.5px;
  padding: var(--space-sm) var(--space-md); border-bottom: 1px solid var(--border); white-space: nowrap;
}
.geo-grid th.geo-col-q { text-align: left; }
.geo-grid th .geo-eng { text-transform: none; letter-spacing: 0; background: transparent; padding: 0; }
/* height: 1px у td — чтобы height: 100% у .geo-cell считался от высоты строки и заливка закрывала всю ячейку */
.geo-grid td { padding: 0; height: 1px; border-bottom: 1px solid var(--border); vertical-align: middle; }
.geo-grid tr:last-child td { border-bottom: none; }
.geo-col-q { min-width: 320px; border-right: 1px solid var(--border); }
.geo-q { padding: var(--space-sm) var(--space-md); }
.geo-q-text { color: var(--text); font-size: var(--fs-sm); line-height: 1.4; }
.geo-q-meta { font-size: var(--fs-xs); color: var(--text-muted); margin-top: 2px; }
.geo-cell {
  position: relative; display: flex; align-items: center; justify-content: center; gap: var(--space-2xs); min-height: 52px; min-width: 150px; height: 100%; box-sizing: border-box;
  padding: var(--space-xs) var(--space-sm); color: var(--text-dim); text-decoration: none; font-size: var(--fs-sm); white-space: nowrap;
  transition: background var(--dur-fast);
}
a.geo-cell:hover { background: var(--bg-card-hover); }
a.geo-cell:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.geo-cell b { color: var(--text); font-weight: 700; }
.geo-cell svg { flex-shrink: 0; }
.geo-cell--top { background: color-mix(in srgb, var(--accent) 16%, var(--bg-card)); }
.geo-cell--mid { background: color-mix(in srgb, var(--accent) 7%, var(--bg-card)); }
a.geo-cell--top:hover { background: color-mix(in srgb, var(--accent) 22%, var(--bg-card)); }
a.geo-cell--mid:hover { background: color-mix(in srgb, var(--accent) 12%, var(--bg-card)); }
.geo-cell--na { font-size: var(--fs-xs); color: var(--text-muted); }
.geo-cell--err { font-size: var(--fs-xs); color: var(--yellow); }
.geo-ic-cite { color: var(--accent); display: inline-flex; }
.geo-ic-nosearch { color: var(--yellow); display: inline-flex; }
.geo-grid-sentinel td { height: 1px; padding: 0; border: none; }
.geo-grid-more { padding: var(--space-md); text-align: center; font-size: var(--fs-sm); color: var(--text-dim); }
.geo-grid-foot { display: flex; justify-content: space-between; align-items: center; gap: var(--space-md); flex-wrap: wrap; padding: var(--space-md) var(--space-xl); border-top: 1px solid var(--border); font-size: var(--fs-xs); color: var(--text-dim); }
.geo-grid-legend { display: flex; gap: var(--space-xs) var(--space-lg); flex-wrap: wrap; align-items: center; }
.geo-grid-legend span { display: inline-flex; align-items: center; gap: var(--space-xs); }
.geo-sw { width: 12px; height: 12px; border-radius: 3px; border: 1px solid var(--border); }
.geo-sw--top { background: color-mix(in srgb, var(--accent) 16%, var(--bg-card)); }
.geo-sw--mid { background: color-mix(in srgb, var(--accent) 7%, var(--bg-card)); }
.geo-skel-row td { padding: var(--space-md); }

/* Таблицы вкладок (конкуренты, источники, прогоны): компонент .table из base.css + модификатор .geo-tbl */
.geo-tbl { font-size: var(--fs-sm); }
.geo-tbl th { font-size: var(--fs-xs); }
.geo-tbl .geo-r { text-align: right; font-variant-numeric: tabular-nums; }
.geo-tbl .geo-ent-name { font-weight: 600; color: var(--text); }
.geo-tbl .geo-ent-sub { font-size: var(--fs-xs); color: var(--text-muted); margin-top: 2px; }
.geo-tbl tr.geo-row-own td { background: color-mix(in srgb, var(--accent) 6%, var(--bg-card)); }
.geo-tbl tr.geo-row-others td { color: var(--text-dim); }
.geo-tbl a { color: var(--accent); overflow-wrap: anywhere; }
.geo-tbl .geo-bar-cell { width: 280px; }
.geo-src-type { display: inline-flex; font-size: var(--fs-xs); font-weight: 600; padding: 1px var(--space-xs); border-radius: var(--radius-xs); background: var(--bg-input); color: var(--text-dim); white-space: nowrap; }
.geo-src-type--own { background: var(--accent-glow); color: var(--text); }
.geo-src-type--competitor { background: var(--yellow-bg); color: var(--text); }
.geo-you { display: inline-flex; align-items: center; font-size: var(--fs-xs); font-weight: 700; padding: 0 var(--space-xs); border-radius: var(--radius-xs); background: var(--accent-glow); color: var(--text); margin-left: var(--space-xs); }

/* Репутация */
.geo-rep-q { display: flex; align-items: center; gap: var(--space-sm); font-family: var(--font-heading); font-size: var(--fs-lg); font-weight: 700; margin: var(--space-lg) 0 var(--space-md); }
.geo-rep-q svg { color: var(--text-dim); flex-shrink: 0; }
.geo-rep-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: var(--space-md); }
.geo-rep-card { padding: var(--space-md) var(--space-lg); border-radius: var(--radius-sm); background: var(--bg-surface); display: flex; flex-direction: column; gap: var(--space-sm); font-size: var(--fs-sm); }
.geo-rep-card-head { display: flex; justify-content: space-between; align-items: center; gap: var(--space-sm); }
.geo-rep-card-head .geo-eng { background: transparent; padding: 0; font-size: var(--fs-sm); color: var(--text); font-weight: 600; }
.geo-rep-text { line-height: 1.55; color: var(--text); }
.geo-rep-none { color: var(--text-dim); }
.geo-rep-card a { color: var(--accent); font-size: var(--fs-sm); }
.geo-domains { display: flex; flex-wrap: wrap; gap: var(--space-2xs); }
.geo-domain { font-size: var(--fs-xs); padding: 0 var(--space-xs); border-radius: var(--radius-xs); color: var(--text-dim); }
.geo-domain--own { background: var(--accent-glow); color: var(--text); font-weight: 600; }

/* Подсветка названий (страница ответа, репутация) */
.geo-hl { background: transparent; color: inherit; border-radius: 4px; padding: 0 2px; box-decoration-break: clone; -webkit-box-decoration-break: clone; }
.geo-hl--own { background: var(--accent-glow); color: var(--text); box-shadow: inset 0 -2px 0 var(--accent); font-weight: 600; }
.geo-hl--comp { background: var(--bg-input); color: var(--text); box-shadow: inset 0 -2px 0 var(--text-dim); }
.geo-hl--cand { box-shadow: inset 0 -1px 0 var(--text-muted); }
.geo-hl--unc { border-bottom: 1px dashed var(--text-dim); border-radius: 0; }

/* ══ Страница ответа ═════════════════════════════════════════════════ */
.geo-ans-h1 { font-family: var(--font-heading); font-size: calc(var(--fs-base) + 7px); font-weight: 700; line-height: 1.3; overflow-wrap: anywhere; }
.geo-ans-sum { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: var(--space-lg) 0; }
.geo-ans-sum.card:hover { transform: none; }
.geo-ans-sum > div { padding: var(--space-lg); border-right: 1px solid var(--border); min-width: 0; }
.geo-ans-sum > div:last-child { border-right: none; }
.geo-ans-sum-v { font-family: var(--font-heading); font-size: calc(var(--fs-base) + 7px); font-weight: 700; margin-top: var(--space-xs); }
.geo-ans-sum-t { font-size: var(--fs-sm); color: var(--text-dim); margin-top: var(--space-2xs); overflow-wrap: anywhere; }
.geo-ans-layout { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: var(--space-lg); align-items: start; }
.geo-ans-main { padding: var(--space-xl); }
.geo-ans-main.card:hover, .geo-ans-side .card:hover { transform: none; }
.geo-ans-side { display: flex; flex-direction: column; gap: var(--space-lg); }
.geo-ans-side .card + .card { margin-top: 0; }
.geo-side { padding: var(--space-lg); }
.geo-side-title { font-family: var(--font-heading); font-size: var(--fs-lg); font-weight: 700; }
.geo-side-sub { font-size: var(--fs-xs); color: var(--text-muted); margin: 2px 0 var(--space-md); }
.geo-side-list { list-style: none; display: flex; flex-direction: column; }
.geo-side-item { display: flex; gap: var(--space-sm); align-items: flex-start; padding: var(--space-sm) var(--space-xs); border-top: 1px solid var(--border); font-size: var(--fs-sm); }
.geo-side-item:first-child { border-top: none; }
.geo-side-item.is-own { background: var(--accent-glow); border-radius: var(--radius-sm); }
.geo-side-n { color: var(--text-muted); font-variant-numeric: tabular-nums; min-width: 18px; text-align: right; }
.geo-side-main { flex: 1; min-width: 0; }
.geo-side-url { display: block; color: var(--text-dim); font-size: var(--fs-xs); overflow-wrap: anywhere; text-decoration: none; margin-top: 2px; }
.geo-side-url:hover { color: var(--accent); }
.geo-side-name { color: var(--text); font-weight: 600; overflow-wrap: anywhere; }
.geo-side-item .btn { flex-shrink: 0; }
.geo-side-note { display: flex; gap: var(--space-xs); font-size: var(--fs-xs); color: var(--text-dim); margin-top: var(--space-md); line-height: 1.5; }
.geo-side-note svg { color: var(--yellow); flex-shrink: 0; margin-top: 2px; }

.geo-answer { font-size: var(--fs-lg); line-height: 1.7; color: var(--text); overflow-wrap: anywhere; }
.geo-answer p + p, .geo-answer p + ol, .geo-answer p + ul, .geo-answer ol + p, .geo-answer ul + p, .geo-answer table + p { margin-top: var(--space-md); }
.geo-answer h2, .geo-answer h3, .geo-answer h4 { font-family: var(--font-heading); font-weight: 700; margin: var(--space-lg) 0 var(--space-sm); }
.geo-answer h2 { font-size: var(--fs-xl); } .geo-answer h3, .geo-answer h4 { font-size: var(--fs-lg); }
.geo-answer ol, .geo-answer ul { padding-left: var(--space-xl); margin-top: var(--space-sm); }
.geo-answer li + li { margin-top: var(--space-xs); }
.geo-answer li::marker { color: var(--text-dim); font-weight: 600; }
.geo-answer a { color: var(--accent); }
.geo-answer table { border-collapse: collapse; margin-top: var(--space-md); font-size: var(--fs-sm); width: 100%; display: block; overflow-x: auto; }
.geo-answer th, .geo-answer td { border: 1px solid var(--border); padding: var(--space-xs) var(--space-sm); text-align: left; }
.geo-answer th { font-weight: 600; }
.geo-answer blockquote { margin-top: var(--space-md); padding-left: var(--space-md); border-left: 3px solid var(--border); color: var(--text-dim); }
.geo-answer code { font-size: var(--fs-sm); padding: 0 var(--space-xs); border-radius: var(--radius-xs); background: var(--bg-input); }
.geo-answer pre { margin-top: var(--space-md); padding: var(--space-sm) var(--space-md); border-radius: var(--radius-xs); background: var(--bg-input); overflow-x: auto; }
.geo-answer pre code { padding: 0; background: none; }
.geo-answer hr { margin: var(--space-lg) 0; border: 0; border-top: 1px solid var(--border); }
.geo-answer li > p + p, .geo-answer li > ul, .geo-answer li > ol { margin-top: var(--space-xs); }
.geo-answer a.geo-cite {
  display: inline-flex; align-items: center; gap: 2px; font-size: var(--fs-xs); line-height: 1.5; text-decoration: none;
  padding: 0 var(--space-xs); border-radius: var(--radius-xs); background: var(--bg-input); color: var(--text-dim); vertical-align: 1px;
}
.geo-answer a.geo-cite:hover { color: var(--text); background: var(--bg-surface); }
.geo-answer a.geo-cite.is-own { background: var(--accent-glow); color: var(--text); }
.geo-answer-legend { display: flex; gap: var(--space-xs) var(--space-lg); flex-wrap: wrap; margin-top: var(--space-xl); padding-top: var(--space-md); border-top: 1px solid var(--border); font-size: var(--fs-xs); color: var(--text-dim); }
.geo-answer-legend span { display: inline-flex; gap: var(--space-xs); align-items: center; }
.geo-disclaimer { margin-top: var(--space-2xl); font-size: var(--fs-xs); color: var(--text-muted); line-height: 1.6; max-width: 880px; }

/* ══ Лендинг /geo (гость) ═══════════════════════════════════════════ */
.glp { max-width: 1120px; }
.glp-hero { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 480px); gap: var(--space-2xl); align-items: start; margin: var(--space-lg) 0 var(--space-3xl); }
.glp-h1 { font-family: var(--font-heading); font-size: calc(var(--fs-base) + 21px); font-weight: 800; line-height: 1.15; }
.glp-lead { font-size: calc(var(--fs-base) + 2px); color: var(--text-dim); margin-top: var(--space-lg); line-height: 1.55; }
.glp-points { list-style: none; display: flex; flex-direction: column; gap: var(--space-sm); margin-top: var(--space-xl); font-size: var(--fs-md); }
.glp-points li { display: flex; gap: var(--space-sm); align-items: flex-start; }
.glp-points svg { color: var(--accent); flex-shrink: 0; margin-top: 3px; }
.glp-form { padding: var(--space-xl); }
.glp-form.card:hover { transform: none; }
.glp-form.card { overflow: visible; }
.glp-form-title { font-family: var(--font-heading); font-size: var(--fs-xl); font-weight: 700; }
.glp-form-sub { font-size: var(--fs-sm); color: var(--text-dim); margin: var(--space-2xs) 0 var(--space-lg); }
.glp-form .form-group + .form-group, .glp-form .geo-row-2 + .form-group, .glp-form .form-group + .geo-row-2 { margin-top: var(--space-md); }
.glp-form .btn-full { margin-top: var(--space-lg); min-height: 48px; }
.glp-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.glp-q-list { display: flex; flex-direction: column; gap: var(--space-xs); margin-top: var(--space-md); }
.glp-result { margin-bottom: var(--space-3xl); }
.glp-result.card:hover { transform: none; }
.glp-result-head { padding: var(--space-lg) var(--space-xl); border-bottom: 1px solid var(--border); }
.glp-result-body { padding: var(--space-lg) var(--space-xl); display: flex; flex-direction: column; gap: var(--space-md); }
.glp-cell { padding: var(--space-md); border-radius: var(--radius-sm); background: var(--bg-surface); font-size: var(--fs-sm); }
.glp-cell-q { font-weight: 600; color: var(--text); }
.glp-cell-v { margin-top: var(--space-xs); color: var(--text-dim); line-height: 1.5; }
.glp-cell-v b { color: var(--text); }
.glp-sec { margin-bottom: var(--space-3xl); }
.glp-h2 { font-family: var(--font-heading); font-size: calc(var(--fs-base) + 9px); font-weight: 700; margin-bottom: var(--space-lg); }
.glp-steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-lg); }
.glp-step { padding: var(--space-xl); }
.glp-step.card + .glp-step.card { margin-top: 0; }
.glp-step.card:hover { transform: none; }
.glp-step-n { display: inline-flex; width: 32px; height: 32px; align-items: center; justify-content: center; border-radius: 50%; background: var(--accent-glow); color: var(--accent); font-weight: 700; }
.glp-step-t { font-family: var(--font-heading); font-weight: 700; font-size: var(--fs-lg); margin: var(--space-md) 0 var(--space-xs); }
.glp-step-p { color: var(--text-dim); font-size: var(--fs-md); line-height: 1.55; }
.glp-terms { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-lg); }
.glp-prices { width: 100%; max-width: 720px; }
.glp-prices td, .glp-prices th { padding: var(--space-md); border-bottom: 1px solid var(--border); text-align: left; font-size: var(--fs-md); }
.glp-prices td:last-child, .glp-prices th:last-child { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.glp-note { color: var(--text-dim); font-size: var(--fs-sm); margin-top: var(--space-md); line-height: 1.55; max-width: 720px; }
.glp-faq { max-width: 860px; display: flex; flex-direction: column; gap: var(--space-sm); }
.glp-faq details { border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--bg-card); }
.glp-faq summary { cursor: pointer; padding: var(--space-md) var(--space-lg); font-weight: 600; min-height: 44px; list-style: none; display: flex; justify-content: space-between; gap: var(--space-md); align-items: center; }
.glp-faq summary::-webkit-details-marker { display: none; }
.glp-faq summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: var(--radius-sm); }
.glp-faq details[open] summary svg { transform: rotate(180deg); }
.glp-faq summary svg { transition: transform var(--dur-fast); color: var(--text-dim); flex-shrink: 0; }
.glp-faq-a { padding: 0 var(--space-lg) var(--space-lg); color: var(--text-dim); font-size: var(--fs-md); line-height: 1.6; }
.glp-cta { padding: var(--space-2xl); text-align: center; }
.glp-cta.card:hover { transform: none; }
.glp-cta .btn { min-height: 48px; margin-top: var(--space-lg); }

/* ── Адаптив ─────────────────────────────────────────────────────── */
@media (max-width: 1024px) {
  .geo-kpis--5.pos-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .geo-kpis--5 .geo-kpi--cov { grid-column: 1 / -1; border-right: none; border-bottom: 1px solid var(--border); }
  .geo-kpis--5 .pos-kpi:nth-child(3) { border-right: none; }
  .geo-kpis--5 .pos-kpi:nth-child(2), .geo-kpis--5 .pos-kpi:nth-child(3) { border-bottom: 1px solid var(--border); }
  .geo-kpis--5 .pos-kpi:nth-child(5) { border-right: none; }
  .geo-ans-layout { grid-template-columns: minmax(0, 1fr); }
  .glp-hero { grid-template-columns: minmax(0, 1fr); }
  .geo-projects td:nth-child(2) { width: auto; }
}
@media (max-width: 768px) {
  .geo-projects-wrap { display: none; }
  .geo-proj-cards { display: flex; }
  .geo-head { align-items: stretch; flex-direction: column; gap: var(--space-md); }
  .geo-head-actions { width: 100%; }
  .geo-head-actions .btn { flex: 1 1 auto; justify-content: center; min-height: 44px; }
  .geo-filters-note { margin-left: 0; width: 100%; }
  .geo-filters > .pos-seg { width: 100%; }
  .geo-filters .pos-dd, .geo-filters .pos-dd > summary { width: 100%; }
  .geo-chart-head, .geo-chart-body, .geo-grid-tools, .geo-grid-foot, .geo-panel { padding-left: var(--space-lg); padding-right: var(--space-lg); }
  .geo-chart-controls, .geo-chart-controls .pos-seg { width: 100%; }
  .geo-chart-controls .pos-seg-btn { flex: 1 1 0; }
  .geo-chart-controls .pos-dd, .geo-chart-controls .pos-dd > summary { width: 100%; }
  .geo-chart { grid-template-rows: 220px auto; }
  .geo-col-q { min-width: 156px; max-width: 164px; position: sticky; left: 0; z-index: 1; background: var(--bg-card); }
  .geo-grid th.geo-col-q { z-index: 3; }
  .geo-cell { min-width: 104px; }
  .geo-q-text { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
  .geo-grid-wrap { max-height: 560px; }
  .geo-ans-sum { grid-template-columns: minmax(0, 1fr); }
  .geo-ans-sum > div { border-right: none; border-bottom: 1px solid var(--border); }
  .geo-ans-sum > div:last-child { border-bottom: none; }
  .geo-ans-main { padding: var(--space-lg); }
  .geo-src-tabs { grid-template-columns: minmax(0, 1fr); }
  .geo-comp-head { display: none; }
  .geo-comp-row { grid-template-columns: minmax(0, 1fr) 40px; }
  .geo-comp-row > :nth-child(2), .geo-comp-row > :nth-child(3) { grid-column: 1; }
  .geo-comp-row > :nth-child(4) { grid-column: 2; grid-row: 1; }
  .geo-sched { grid-template-columns: minmax(0, 1fr); }
  .geo-sec { padding: var(--space-lg); }
  .geo-sticky { bottom: 0; width: 100vw; border-radius: var(--radius) var(--radius) 0 0; flex-direction: column; align-items: stretch; }
  .geo-sticky-acts { flex-direction: column-reverse; }
  .geo-sticky-acts .btn { width: 100%; }
  .glp-steps, .glp-terms { grid-template-columns: minmax(0, 1fr); }
  .geo-icon-btn, .geo-tab { min-height: 44px; }
  .geo-icon-btn { width: 44px; }
}
@media (max-width: 480px) {
  .geo-row-2 { grid-template-columns: minmax(0, 1fr); }
  .geo-chart { grid-template-columns: 30px minmax(0, 1fr); }
  .glp-h1 { font-size: calc(var(--fs-base) + 11px); }
  .glp-form, .glp-step { padding: var(--space-lg); }
  .geo-wiz-title, .geo-head-title h1 { font-size: calc(var(--fs-base) + 5px); }
  .geo-ans-h1 { font-size: calc(var(--fs-base) + 3px); }
  .geo-limit .form-input { width: 100%; }
}

/* Самые узкие экраны (320–360): цена движка уходит под название, сегменты метрик сжимаются */
@media (max-width: 360px) {
  .geo-chart-controls .pos-seg-btn { padding-left: var(--space-xs); padding-right: var(--space-xs); font-size: var(--fs-xs); }
}

/* hidden-атрибут сильнее display компонентов (.pos-seg, .geo-comp-row, .pos-kpis …) */
.geo-page [hidden], .glp [hidden] { display: none; }
.geo-group-input { width: 240px; max-width: 100%; }

.geo-sec .geo-field, .geo-sec .geo-sched { margin-top: var(--space-lg); }
.geo-sec .geo-src-panel + .pos-note { margin-top: var(--space-sm); }
.glp-note a, .glp-faq-a a, .geo-panel-sub a { color: var(--accent); }
.geo-chart-x--one { justify-content: center; }
.geo-proj-card .geo-cell-sub { white-space: normal; }
.geo-proj-card .geo-spend { align-items: flex-start; }
.geo-cand-acts { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: var(--space-xs); }

/* ══ Дашборд /geo/{pid}: шапка, тулбар и таблица «вопросы × даты» как у Позиций (макет-редизайн, preview.html) ══
   Компоненты — из positions.css (pos-proj-head, pos-toolbar, pos-grid, pos-bulk, pos-dd); здесь — только своё. */

/* Тулбар — отдельной карточкой под шапкой: фильтрует и график, и сводку, и таблицу.
   На компьютере липнет под шапкой проекта (правила .pos-toolbar из positions.css). */
.geo-tb.card { overflow: visible; margin-bottom: var(--space-lg); border-bottom: 1px solid var(--border); position: relative; z-index: 3; }
.geo-tb.card:hover { transform: none; }
.light .geo-tb.card { border-color: transparent; }
@media (min-width: 769px) {
  .geo-tb.pos-toolbar { position: sticky; z-index: calc(var(--z-sticky) - 2); }
}
.geo-eng-trigger .pos-engine { margin-right: var(--space-2xs); }
.pos-dd--engine .pos-dd-panel { width: 380px; max-width: calc(100vw - var(--space-2xl)); }
.geo-dd-on { margin-left: auto; color: var(--accent); display: inline-flex; flex-shrink: 0; }
.pos-engine--llm { background: var(--accent); }

/* Шапка: домен рядом с названием проекта */
.geo-proj-domain { font-size: var(--fs-lg); }

/* Сводка: значение ± погрешность, полоса интервала, дельта «в пределах погрешности» */
.geo-kv { display: flex; align-items: baseline; gap: var(--space-xs); flex-wrap: wrap; }
.geo-pm {
  font-size: var(--fs-sm); font-weight: 600; color: var(--text-dim); font-variant-numeric: tabular-nums;
  padding: 0 var(--space-xs); border-radius: var(--radius-xs); background: var(--bg-input);
}
.geo-ci { display: block; width: 100%; max-width: 180px; height: 8px; margin-top: var(--space-sm); overflow: visible; }
.geo-ci-track { fill: var(--bg-input); }
.geo-ci-band { fill: color-mix(in srgb, var(--accent) 35%, transparent); }
.geo-ci-pt { stroke: var(--accent); stroke-width: 2; vector-effect: non-scaling-stroke; }
.pos-delta.geo-delta-ns { color: var(--text-muted); }
.geo-kpi-n { font-size: var(--fs-xs); color: var(--text-muted); margin-top: var(--space-2xs); }
.geo-kpi-n b { color: var(--text-dim); font-weight: 600; }
.geo-kpis .pos-kpi-label .pos-help { margin-left: 0; }

/* График: точки на каждой дате, пояснение в легенде */
.geo-chart-dot--sm { width: 8px; height: 8px; }
.geo-legend-note { color: var(--text-muted); }

/* Вкладки в шапке карточки таблицы */
.geo-qcard .geo-tabs { padding: 0 var(--space-lg); }

/* Таблица «Вопросы × даты» */
.geo-dgrid .pos-col-kw .pos-kw-text { min-height: calc(var(--fs-sm) * 2.6 + var(--fs-xs) * 1.3); }
.geo-kw-group { display: block; font-size: var(--fs-xs); color: var(--text-muted); line-height: 1.3; overflow: hidden; text-overflow: ellipsis; }
.geo-kw-hint {
  display: flex; align-items: center; gap: var(--space-2xs); margin-top: 2px; white-space: normal;
  font-size: var(--fs-xs); line-height: 1.3; color: var(--text-dim);
}
.geo-kw-hint svg { color: var(--yellow); flex-shrink: 0; }
.geo-kw-hint a { color: var(--accent); }
.geo-row-low .pos-kw-phrase, .geo-row-off .pos-kw-phrase { color: var(--text-dim); }
.geo-kw-off { color: var(--yellow); }

/* «Устойчивость»: «3 из 7» + точки по датам (старая → новая) */
.pos-grid .geo-col-stab { width: 112px; min-width: 112px; padding: 0 var(--space-sm); }
.pos-grid thead th.geo-col-stab { padding: var(--space-sm); text-align: left; }
.geo-stab { display: flex; flex-direction: column; gap: var(--space-2xs); font-size: var(--fs-sm); color: var(--text-dim); }
.geo-stab b { color: var(--text); font-weight: 600; }
.geo-stab--zero b { color: var(--text-muted); font-weight: 500; }
.geo-dots { display: inline-flex; gap: 3px; }
.geo-dot { width: 8px; height: 8px; border-radius: 50%; border: 1.5px solid var(--text-muted); }
.geo-dot--on { background: var(--accent); border-color: var(--accent); }
.geo-dot--nb { border-style: dashed; border-color: var(--border-hover); }
@media (min-width: 769px) {
  .pos-grid .geo-col-stab {
    position: sticky; left: var(--pos-kw-w, 260px); z-index: 1; border-right: 1px solid var(--border);
    box-shadow: 4px 0 8px -6px color-mix(in srgb, var(--bg) 90%, transparent);
  }
  .light .pos-grid .geo-col-stab { box-shadow: 4px 0 8px -6px color-mix(in srgb, var(--text) 30%, transparent); }
  .pos-grid thead th.geo-col-stab { z-index: 3; }
  .pos-grid tfoot td.geo-col-stab { z-index: 2; }
}

/* Ячейки */
.geo-dgrid .pos-th-date { width: 88px; }
.geo-c-of { font-weight: 400; color: var(--text-dim); }
.geo-c-yes .pos-cell-p { color: var(--accent); display: inline-flex; }
.geo-c-cite { grid-column: 3; justify-self: start; display: inline-flex; color: var(--accent); }
.geo-c-nb { background: repeating-linear-gradient(135deg, transparent 0 5px, color-mix(in srgb, var(--border) 70%, transparent) 5px 6px); }
.geo-c-nb .pos-cell-p, .geo-c-err .pos-cell-p { font-size: var(--fs-xs); font-weight: 400; color: var(--text-muted); white-space: nowrap; }
.geo-c-err .pos-cell-p { color: var(--yellow); }
.geo-tf-v { font-variant-numeric: tabular-nums; }

/* Легенда под таблицей */
.geo-lg { display: flex; gap: var(--space-xs) var(--space-lg); flex-wrap: wrap; align-items: center; font-size: var(--fs-xs); color: var(--text-dim); }
.geo-lg-i { display: inline-flex; align-items: center; gap: var(--space-xs); }
.geo-lg-sw { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 16px; border-radius: 3px; border: 1px solid var(--border); font-size: var(--fs-xs); font-weight: 600; color: var(--text); }
.geo-lg-sw.geo-c-yes, .geo-lg-sw.geo-c-cite { color: var(--accent); }
.geo-lg-sw.pos-nf { color: var(--text-muted); }

.geo-short { display: none; }
@media (max-width: 768px) {
  .geo-qcard .geo-tabs { padding: 0 var(--space-sm); }
  .geo-dgrid .pos-th-date { width: 64px; }
  .pos-grid .geo-col-stab { width: 60px; min-width: 60px; padding: 0 var(--space-xs); }
  .pos-grid thead th.geo-col-stab { padding: var(--space-sm) var(--space-xs); }
  .geo-col-stab .pos-help { display: none; }
  .geo-stab { font-size: var(--fs-xs); }
  .geo-dots { flex-wrap: wrap; max-width: 52px; }
  .geo-long { display: none; }
  .geo-short { display: inline; }
  .geo-proj-domain { display: none; }
  .pos-cell .geo-c-cite { position: absolute; top: 2px; right: 2px; }
  .geo-tb .pos-toolbar-pickers .pos-dd--engine .pos-dd-panel { left: 0; right: auto; }
  .geo-qcard .pos-bulk .btn, .geo-qcard .pos-bulk summary { min-height: 44px; }
}
.pos-block .geo-kpis.pos-kpis { margin-bottom: 0; }
.geo-block-body[hidden] { display: none; }
.pos-dd--engine .pos-dd-meta { white-space: normal; }

/* ══ Вкладка «Источники»: домены → страницы → вопросы (geo-project.js, renderSrc) ══ */
.geo-src-head {
  display: grid; grid-template-columns: minmax(0, 1fr) 280px 72px; gap: var(--space-md);
  padding: 0 var(--space-sm) var(--space-xs) calc(20px + var(--space-md) + var(--space-sm));
  font-size: var(--fs-xs); font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; color: var(--text-muted);
}
.geo-src-head .geo-r { text-align: right; }
.geo-src-list, .geo-src-pages, .geo-src-qs { list-style: none; margin: 0; padding: 0; }
.geo-src-list { border-top: 1px solid var(--border); }
.geo-src-group + .geo-src-group { margin-top: var(--space-xl); }
.geo-src-ghead { font-family: var(--font-heading); font-size: var(--fs-md); font-weight: 700; margin: var(--space-md) 0 0; }
.geo-src-gsub { font-size: var(--fs-sm); color: var(--text-dim); margin: var(--space-2xs) 0 var(--space-sm); }
.geo-src-item { border-bottom: 1px solid var(--border); }
.geo-src-row {
  width: 100%; display: grid; grid-template-columns: 20px minmax(0, 1fr) 280px 72px; gap: var(--space-md); align-items: center;
  min-height: 52px; padding: var(--space-sm); border: 0; border-radius: var(--radius-xs); background: transparent;
  color: var(--text); font: inherit; font-size: var(--fs-sm); text-align: left; cursor: pointer;
}
.geo-src-row:hover, .geo-src-page-btn:hover { background: color-mix(in srgb, var(--bg-input) 55%, transparent); }
.geo-src-item.is-open > .geo-src-row { background: color-mix(in srgb, var(--accent) 6%, transparent); }
.geo-src-chev { display: inline-flex; color: var(--text-muted); }
.geo-src-chev svg { transform: rotate(-90deg); transition: transform var(--dur-fast) var(--ease); }
[aria-expanded="true"] > .geo-src-chev svg { transform: none; color: var(--accent); }
.geo-src-name { display: flex; flex-direction: column; gap: var(--space-2xs); min-width: 0; }
.geo-src-domain { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.geo-src-meta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2xs) var(--space-sm); font-size: var(--fs-xs); color: var(--text-muted); }
.geo-src-share .geo-bar, .geo-src-share .geo-bar-fill { display: block; }
.geo-src-n { text-align: right; font-weight: 600; font-variant-numeric: tabular-nums; }
.geo-src-detail { padding: var(--space-xs) var(--space-sm) var(--space-lg) calc(20px + var(--space-md) + var(--space-sm)); }
.geo-src-state { display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-sm); padding: var(--space-sm) 0; font-size: var(--fs-sm); color: var(--text-dim); }
.geo-src-state .pos-skel { flex: 1 1 100%; }
.geo-src-sum { display: flex; align-items: center; gap: var(--space-md); margin-bottom: var(--space-md); font-size: var(--fs-sm); color: var(--text-dim); line-height: 1.45; }
.geo-src-sum b { color: var(--text); font-weight: 600; }
.geo-spark { width: 120px; height: 32px; flex-shrink: 0; overflow: visible; }
.geo-spark-base { stroke: var(--border); stroke-width: 1; }
.geo-spark-line { fill: none; stroke: var(--accent); stroke-width: 1.5; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.geo-spark-dot { fill: var(--bg-card); stroke: var(--accent); stroke-width: 1.5; }
.geo-spark-dot--last { fill: var(--accent); }
.geo-src-pages { border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--bg-card); }
.geo-src-page + .geo-src-page { border-top: 1px solid var(--border); }
.geo-src-page-row { display: flex; align-items: center; gap: var(--space-sm); padding: var(--space-2xs) var(--space-sm) var(--space-2xs) var(--space-2xs); }
.geo-src-page-btn {
  flex: 1 1 auto; min-width: 0; display: flex; align-items: center; gap: var(--space-xs); min-height: 40px;
  padding: var(--space-2xs) var(--space-xs); border: 0; border-radius: var(--radius-xs); background: transparent;
  color: var(--text); font: inherit; font-size: var(--fs-sm); text-align: left; cursor: pointer;
}
.geo-src-url { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.geo-src-page-n { flex-shrink: 0; font-size: var(--fs-xs); color: var(--text-dim); white-space: nowrap; font-variant-numeric: tabular-nums; }
.geo-src-engs { display: flex; gap: var(--space-2xs); flex-shrink: 0; }
.geo-src-open {
  display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; width: 32px; height: 32px;
  border-radius: var(--radius-xs); color: var(--text-dim);
}
.geo-src-open:hover { color: var(--accent); background: var(--bg-input); }
.geo-src-prompts { padding: 0 var(--space-sm) var(--space-sm) calc(14px + var(--space-xs) * 2 + var(--space-2xs)); }
.geo-src-q { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-md); padding: var(--space-xs) 0; border-top: 1px dashed var(--border); font-size: var(--fs-sm); }
.geo-src-q-text { color: var(--text); text-decoration: underline; text-decoration-color: var(--text-muted); text-underline-offset: 3px; min-width: 0; overflow-wrap: anywhere; }
.geo-src-q-text:hover { color: var(--accent); text-decoration-color: currentColor; }
.geo-src-q-meta { display: flex; align-items: center; gap: var(--space-xs); flex-shrink: 0; font-size: var(--fs-xs); color: var(--text-dim); }
.geo-src-q-date { font-variant-numeric: tabular-nums; }
.geo-src-brand { display: inline-flex; align-items: center; gap: 2px; padding: 0 var(--space-xs); border-radius: var(--radius-xs); font-weight: 600; color: var(--text); white-space: nowrap; }
.geo-src-brand--yes { background: var(--accent-glow); }
.geo-src-brand--no { background: var(--yellow-bg); }
.geo-src-more { padding: var(--space-xs) var(--space-sm); font-size: var(--fs-xs); color: var(--text-muted); }
#geo-src-own > .geo-src-state, #geo-src-own > .geo-src-sum { padding-left: 0; }
@media (max-width: 768px) {
  .geo-src-head { display: none; }
  .geo-src-row { grid-template-columns: 20px minmax(0, 1fr) auto; row-gap: var(--space-xs); min-height: 56px; padding: var(--space-sm) var(--space-2xs); }
  .geo-src-share { grid-column: 2 / -1; grid-row: 2; }
  .geo-src-n { grid-column: 3; grid-row: 1; }
  .geo-src-detail { padding: var(--space-2xs) 0 var(--space-lg); }
  .geo-src-page-btn { display: grid; grid-template-columns: 14px minmax(0, 1fr); row-gap: 2px; min-height: 44px; }
  .geo-src-page-n { grid-column: 2; white-space: normal; }
  .geo-src-engs { display: none; }
  .geo-src-open { width: 44px; height: 44px; }
  .geo-src-prompts { padding: 0 var(--space-sm) var(--space-sm); }
  .geo-src-q { flex-direction: column; align-items: stretch; gap: var(--space-2xs); }
  .geo-src-q-text { min-height: 24px; }
  .geo-spark { width: 88px; }
}
.geo-src-wo { color: var(--text); font-weight: 600; }

/* Вкладки («Вопросы · Конкуренты · Источники · Репутация · Сборы») липнут под тулбаром; плавающая шапка дат
   и высота таблицы учитывают их высоту (--geo-tabs-h, замер в geo-table.js). Карточка вкладок — не ниже экрана
   под липкими полосами: короткая вкладка («Сборы» из 4 строк) не укорачивает страницу, переключение не прыгает. */
.geo-page { --geo-tabs-h: 0px; }
@media (min-width: 769px) {
  .geo-qcard .geo-tabs {
    position: sticky; top: calc(var(--header-h) + var(--pos-bar-h) + var(--pos-toolbar-h, 0px)); z-index: calc(var(--z-sticky) - 3);
    background: var(--bg-card); border-radius: var(--radius) var(--radius) 0 0;
  }
  .geo-page .pos-grid-float { top: calc(var(--header-h) + var(--pos-bar-h) + var(--pos-toolbar-h, 0px) + var(--geo-tabs-h)); }
  .geo-page .pos-grid-wrap { max-height: max(360px, calc(100vh - var(--header-h) - var(--pos-bar-h) - var(--pos-toolbar-h, 0px) - var(--geo-tabs-h) - var(--space-sm))); }
  .geo-qcard { min-height: calc(100vh - var(--header-h) - var(--pos-bar-h) - var(--pos-toolbar-h, 0px) - var(--space-sm)); }
}
