/* СПУТНИК — стили: mobile-first, тёмная и светлая темы, все цвета — токены ниже.
   Текст на залитых акцентом кнопках — --on-accent. Нижний таб-бар, фиксированный топбар с прогресс-кольцом, раскрывающиеся блоки. */

/* Цвета (решение 64): тёмная тема C «ночная синяя» — по умолчанию; светлая L1 — когда
   у Telegram светлое оформление (app.js ставит data-theme на <html>), вне Telegram — по системе. */
:root {
  --bg: #0f1218;
  --fg: #e8ecf3;
  --muted: #8b95a7;
  --muted-2: #aeb7c7;
  --accent: #7b96ff;
  --accent-hover: #8fa6ff;
  --accent-soft: rgba(123,150,255,.15);
  --accent-fill: #4563e8;   /* заливка главных кнопок: белый текст читается (контраст 5) */
  --on-accent: #ffffff;
  --card: #171c25;
  --border: #283040;
  --border-strong: #36405a;
  --tab-bg: #12161d;
  --topbar-bg: rgba(15,18,24,.95);
  --progress-bg: #283040;
  --progress-fill: #7b96ff;
  --block-done: #1e2430;
  --block-done-border: #283040;
  --ok: #e8ecf3;
  --bad: #e8ecf3;
  --warn: #8b95a7;
  --dim: #8b95a7;
  --panel2: #1e2430;
  --bubble: #1e2430;
  --ph: #283040;
  --ph-fg: #5d6880;
  --focus: rgba(123,150,255,.35);
  --shadow-c: rgba(0,0,0,.45);
  --shadow: 0 -4px 24px var(--shadow-c);
  --radius: 16px;
  --tap: 44px;
  color-scheme: dark;
}
:root[data-theme="light"] {
  --bg: #f2f4f8;
  --fg: #1a1f2b;
  --muted: #667085;
  --muted-2: #4f5a6e;
  --accent: #4c6ef5;
  --accent-hover: #3f5fe0;
  --accent-soft: rgba(76,110,245,.10);
  --accent-fill: #3f5fe0;
  --on-accent: #ffffff;
  --card: #ffffff;
  --border: #dde2ec;
  --border-strong: #c5cddd;
  --tab-bg: #ffffff;
  --topbar-bg: rgba(255,255,255,.95);
  --progress-bg: #dde2ec;
  --progress-fill: #4c6ef5;
  --block-done: #e9edf4;
  --block-done-border: #dde2ec;
  --ok: #1a1f2b;
  --bad: #1a1f2b;
  --warn: #667085;
  --dim: #667085;
  --panel2: #e9edf4;
  --bubble: #e7ebf3;
  --ph: #dde2ec;
  --ph-fg: #a3adc2;
  --focus: rgba(76,110,245,.30);
  --shadow-c: rgba(26,31,43,.12);
  color-scheme: light;
}
@media (prefers-color-scheme: light) {
  :root:not([data-theme]) {
  --bg: #f2f4f8;
  --fg: #1a1f2b;
  --muted: #667085;
  --muted-2: #4f5a6e;
  --accent: #4c6ef5;
  --accent-hover: #3f5fe0;
  --accent-soft: rgba(76,110,245,.10);
  --accent-fill: #3f5fe0;
  --on-accent: #ffffff;
  --card: #ffffff;
  --border: #dde2ec;
  --border-strong: #c5cddd;
  --tab-bg: #ffffff;
  --topbar-bg: rgba(255,255,255,.95);
  --progress-bg: #dde2ec;
  --progress-fill: #4c6ef5;
  --block-done: #e9edf4;
  --block-done-border: #dde2ec;
  --ok: #1a1f2b;
  --bad: #1a1f2b;
  --warn: #667085;
  --dim: #667085;
  --panel2: #e9edf4;
  --bubble: #e7ebf3;
  --ph: #dde2ec;
  --ph-fg: #a3adc2;
  --focus: rgba(76,110,245,.30);
  --shadow-c: rgba(26,31,43,.12);
  color-scheme: light;
}
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { -webkit-text-size-adjust: 100%; }
html, body { height: 100%; }
body {
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
  background: var(--bg);
  color: var(--fg);
  font-size: 15px;
  line-height: 1.5;
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

/* === Топбар === */
.topbar {
  position: sticky;
  top: 0;
  z-index: 50;
  background: var(--topbar-bg);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--border);
  padding: 12px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.topbar-title { font-size: 17px; font-weight: 700; letter-spacing: -0.3px; }
.topbar-subtitle { font-size: 11px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.5px; }

/* === Контентная область === */
.screen {
  flex: 1;
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  padding: 0 16px 100px; /* отступ под таб-бар */
}
/* Экран прокручивается сам: блоки внутри не сжимаются под высоту окна
   (иначе в длинной переписке уезжала шапка и сплющивалось меню «+»). */
.screen > * { flex-shrink: 0; }

/* === Таб-бар === */
.tabbar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  background: var(--tab-bg);
  border-top: 1px solid var(--border);
  box-shadow: var(--shadow);
  display: flex;
  padding: 6px 8px env(safe-area-inset-bottom) 8px;
  z-index: 100;
}
.tabbar-btn {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  padding: 6px 4px;
  border: none;
  background: transparent;
  color: var(--muted);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.2px;
  text-transform: uppercase;
  cursor: pointer;
  border-radius: 10px;
  transition: color 0.15s, background 0.15s;
  position: relative;
}

  .tabbar-btn:active { background: var(--accent-soft); }
.tabbar-btn.active { color: var(--accent); }
.tabbar-btn { position: relative; }
/* Значок на «Диалогах»: новые симпатии и непрочитанные переписки */
.tab-badge { position: absolute; top: 2px; left: calc(50% + 6px); min-width: 16px; height: 16px; padding: 0 4px; border-radius: 8px; background: var(--accent); color: var(--on-accent); font-size: 10px; font-style: normal; font-weight: 700; line-height: 16px; text-align: center; letter-spacing: 0; }
.tabbar-btn svg { width: 22px; height: 22px; stroke: currentColor; fill: none; stroke-width: 2; }

  .tabbar-btn.disabled {
    color: var(--muted);
    opacity: 0.4;
    pointer-events: none;
  }

  .tabbar-btn.disabled svg {
    stroke: var(--muted);
  }

/* В открытом диалоге таб-бар скрыт — контент не должен оставлять под него пустоту */
body.no-tabbar .screen { padding-bottom: 16px; }
/* В переписке поле ввода прилипает к самому низу — без полосы сообщений под ним */
body.no-tabbar .screen:has(.d-input) { padding-bottom: 0; }

/* === ВХОД (первый экран) === */
.entry-view {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding-top: 40px;
}
.entry-title { font-size: 24px; font-weight: 700; margin-bottom: 4px; letter-spacing: -0.3px; }
.entry-subtitle { font-size: 14px; color: var(--muted); margin-bottom: 32px; }
.entry-field { background: var(--card); border: 1px solid var(--border); border-radius: 12px; padding: 16px; margin-bottom: 12px; }
.entry-field label { display: block; font-size: 13px; color: var(--muted); margin-bottom: 8px; font-weight: 500; }
.entry-field input, .entry-field select { width: 100%; background: transparent; border: none; color: var(--fg); font-size: 17px; font-weight: 500; outline: none; }
.entry-actions { display: flex; gap: 10px; margin-top: 24px; }
.btn { flex: 1; border: none; border-radius: 10px; padding: 14px; font-size: 15px; font-weight: 600; cursor: pointer; transition: background 0.15s, transform 0.05s; min-height: var(--tap); }
.btn:active { transform: scale(0.98); }
.btn-primary { background: var(--accent); color: var(--on-accent); }
.btn-primary:hover { background: var(--accent-hover); }
.btn-secondary { background: transparent; color: var(--fg); border: 1px solid var(--border); }
.btn-secondary:hover { background: var(--card); }

/* === БЛОКИ (основной вид анкеты) === */
.blocks-view { flex: 1; }

.section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 24px 0 12px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--border);
}
.section-title { font-size: 16px; font-weight: 700; }
.section-progress { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--muted); }

.anketa-cta { margin-bottom: 14px; }
.anketa-cta .btn { width: 100%; }
.anketa-cta-title { font-size: 15px; font-weight: 600; margin-bottom: 10px; }
.anketa-cta-hint { font-size: 12px; color: var(--muted); margin-top: 8px; line-height: 1.45; }

.block-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 16px;
  margin-bottom: 12px;
  transition: border-color 0.15s, background 0.15s;
}
.block-card:hover { border-color: var(--border-strong); }
.block-card.done { background: var(--block-done); border-color: var(--block-done-border); }
.block-card.locked { opacity: 0.72; }

.block-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 8px; }
.block-info { flex: 1; min-width: 0; }
.block-name { font-size: 15px; font-weight: 600; }
.block-meta { font-size: 12px; color: var(--muted); margin-top: 2px; }
.block-progress { font-size: 12px; font-weight: 600; color: var(--accent); background: var(--accent-soft); padding: 4px 10px; border-radius: 8px; white-space: nowrap; }
.block-progress.empty { color: var(--muted); background: transparent; padding: 0; }

.block-questions { display: flex; flex-direction: column; gap: 6px; font-size: 13px; color: var(--muted); max-height: 0; overflow: hidden; transition: max-height 0.3s ease, opacity 0.2s; opacity: 0; margin-top: 0; }
.block-card.expanded .block-questions { max-height: 900px; opacity: 1; margin-top: 12px; }
/* Сводка основных вопросов: поля в 2 колонки, чтобы карточка не занимала пол-экрана */
.block-questions.core-grid { display: grid; grid-template-columns: 1fr 1fr; }
.block-q.core-cell { min-width: 0; }
.block-q.core-cell .block-q-answer { white-space: normal; text-align: right; }
/* Строчка вопроса — полноценная цель нажатия: высокий тап, перенос длинного
   ответа, шеврон справа подсказывает, что строчка открывает правку вопроса */
.block-q { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; background: var(--bg); border-radius: 8px; min-height: 44px; }
.block-q.editable { cursor: pointer; }
.block-q.editable:hover { background: var(--panel2); }
.block-q.editable:active { background: var(--panel2); }
.block-q-text { flex: 1; min-width: 0; line-height: 1.4; }
.block-q-side { flex: none; display: flex; align-items: center; gap: 6px; max-width: 55%; }
.block-q-go { flex: none; color: var(--muted); font-size: 16px; line-height: 1; }
.block-locked { padding: 8px 10px; color: var(--muted); line-height: 1.4; }
.block-q-answer { font-size: 12px; color: var(--accent); background: var(--accent-soft); padding: 2px 8px; border-radius: 6px; white-space: normal; text-align: right; min-width: 0; }
.block-q-answer.empty { color: var(--muted); background: transparent; padding: 0; }
/* «Расскажите о себе» в резюме основных вопросов (команда владельца 21.10.2026) */
.block-about-label { font-size: 12px; color: var(--muted); margin-top: 12px; }
.block-about { font-size: 13px; color: var(--fg); line-height: 1.5; margin-top: 6px; padding: 10px 12px; background: var(--card); border: 1px solid var(--border); border-radius: 10px; }
.block-about.empty { color: var(--muted); border-style: dashed; }

.block-actions { display: flex; gap: 8px; margin-top: 12px; }
.block-btn { flex: 1; border: none; border-radius: 8px; padding: 10px 14px; font-size: 12px; font-weight: 600; cursor: pointer; transition: background 0.15s; min-height: var(--tap); }
.block-btn-primary { background: var(--accent); color: var(--on-accent); }
.block-btn-secondary { background: transparent; color: var(--fg); border: 1px solid var(--border); }
.block-btn-ghost { background: transparent; color: var(--muted); }

.block-toggle { background: none; border: none; color: var(--muted); font-size: 20px; cursor: pointer; padding: 4px; line-height: 1; }

/* === КВИЗ раздел === */
.quiz-topline { margin-bottom: 10px; }
.quiz-progress { margin-bottom: 10px; }
.quiz-progress-text { font-size: 12px; color: var(--muted); }
.quiz-card-title { margin: 0 0 10px; font-size: 13px; color: var(--muted); }
.quiz-card-title b { color: var(--fg); }
.quiz-question-text { margin: 0 0 14px; font-size: 18px; font-weight: 600; line-height: 1.35; }
.quiz-input { width: 100%; background: var(--card); border: 1px solid var(--border); border-radius: 10px; padding: 14px; font-size: 16px; color: var(--fg); min-height: var(--tap); }
.quiz-input:focus { outline: none; border-color: var(--accent); }
.quiz-other { margin-top: 8px; }
.quiz-section { margin-top: 24px; padding-top: 16px; border-top: 1px solid var(--border); }
.quiz-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.quiz-title { font-size: 15px; font-weight: 600; }

/* === КВИЗ (режим по одному вопросу) — старый, пока оставлен === */
.quiz-view { flex: 1; display: flex; flex-direction: column; }
.quiz-question { flex: 1; display: flex; flex-direction: column; justify-content: center; min-height: 300px; }
.quiz-q-text { font-size: 22px; font-weight: 600; line-height: 1.3; margin-bottom: 8px; letter-spacing: -0.3px; }
.quiz-q-note { font-size: 13px; color: var(--muted); line-height: 1.5; margin-bottom: 24px; }
.quiz-options { display: flex; flex-direction: column; gap: 10px; }
.quiz-option { background: var(--card); border: 1px solid var(--border); border-radius: 12px; padding: 16px 16px; font-size: 16px; font-weight: 500; color: var(--fg); text-align: left; cursor: pointer; transition: border-color 0.15s, background 0.15s, transform 0.05s; min-height: var(--tap); }
/* hover только с мышью: на телефоне подсветка «залипала» на варианте под пальцем после автоперехода */
@media (hover: hover) { .quiz-option:hover { border-color: var(--accent); background: var(--accent-soft); } }
.quiz-option:active { transform: scale(0.98); }
.quiz-option.selected { border-color: var(--accent); background: var(--accent-soft); color: var(--accent); }
.quiz-option.multi-selected { border-color: var(--accent); background: var(--accent-soft); color: var(--fg); }
.quiz-option.selected::after, .quiz-option.multi-selected::after { content: '✓'; float: right; color: var(--accent); font-weight: 700; }
/* Галочка у выбранного, что снимается повторным нажатием: «Что вы ищете?», расширенные фильтры. */
.entry-card .goal .chip.on::before, .s-chip.on[data-x-chip]::before { content: '✓ '; color: var(--accent); font-weight: 700; }
.quiz-actions { display: flex; gap: 10px; margin-top: 24px; padding-top: 16px; border-top: 1px solid var(--border); }
.quiz-btn { flex: 1; border: none; border-radius: 10px; padding: 14px; font-size: 15px; font-weight: 600; cursor: pointer; transition: background 0.15s, transform 0.05s; min-height: var(--tap); }
.quiz-btn:active { transform: scale(0.98); }
.quiz-btn-primary { background: var(--accent); color: var(--on-accent); }
.quiz-btn-primary:hover { background: var(--accent-hover); }
.quiz-btn-secondary { background: transparent; color: var(--fg); border: 1px solid var(--border); }
.quiz-btn-secondary:hover { background: var(--card); }
.quiz-btn:disabled { opacity: 0.4; pointer-events: none; }

/* === СПИСОК (старый вид по уровням) — для совместимости === */
.level-section { margin-bottom: 24px; }
.level-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--border); }
.level-title { font-size: 16px; font-weight: 700; }
.question-row { background: var(--card); border: 1px solid var(--border); border-radius: 12px; padding: 14px 16px; margin-bottom: 8px; display: flex; flex-direction: column; gap: 10px; transition: border-color 0.15s; }
.question-row:hover { border-color: var(--border-strong); }
.question-row.answered { border-color: var(--accent); }
.question-row.required .q-label::after { content: ' *'; color: var(--accent); }
.q-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.q-label { font-size: 15px; font-weight: 500; line-height: 1.4; flex: 1; }
.q-answer { font-size: 13px; color: var(--accent); background: var(--accent-soft); padding: 4px 10px; border-radius: 8px; white-space: nowrap; flex-shrink: 0; }
.q-answer.empty { color: var(--muted); background: transparent; padding: 0; }
.q-note { font-size: 11px; color: var(--muted); line-height: 1.4; }
.q-actions { display: flex; gap: 8px; margin-top: 4px; }
.q-btn { border: none; border-radius: 8px; padding: 8px 14px; font-size: 12px; font-weight: 600; cursor: pointer; transition: background 0.15s; }
.q-btn-primary { background: var(--accent); color: var(--on-accent); }
.q-btn-secondary { background: transparent; color: var(--fg); border: 1px solid var(--border); }
.q-btn-ghost { background: transparent; color: var(--muted); }

/* === ПОИСК === */
.card { background: var(--card); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px; }
.crumbs { font-size: 12px; color: var(--muted); margin-bottom: 10px; }
.setting { margin: 14px 0 16px; }
.setting h3 { font-size: 14px; font-weight: 600; margin: 0 0 8px; }
.row { display: flex; gap: 10px; margin-top: 14px; flex-wrap: wrap; }
.select { background: var(--card); border: 1px solid var(--border); color: var(--fg); border-radius: 10px; padding: 10px 12px; font: inherit; min-height: var(--tap); }
.soft { font-size: 12px; color: var(--accent); margin: 6px 0 0; }
.restop { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.rank { font-weight: 700; color: var(--accent); font-size: 14px; min-width: 28px; }
.rname { font-weight: 600; font-size: 16px; }
.rmeta { color: var(--muted); font-size: 13px; }
.blockedrow { display: flex; gap: 12px; align-items: baseline; padding: 7px 0; border-top: 1px solid var(--border); flex-wrap: wrap; }
.blockedrow .rname { font-size: 14px; color: var(--muted); min-width: 110px; }
.reason { font-size: 12.5px; color: var(--bad); }

/* === ДИАЛОГИ === */
.reqrow, .dlgrow { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 12px 0; border-top: 1px solid var(--border); flex-wrap: wrap; }
.reqinfo { display: flex; flex-direction: column; gap: 3px; }
.reqbuts { display: flex; gap: 8px; }
.timer { font-size: 12.5px; color: var(--muted); }
.progbox { margin: 14px 0; }
.msglog { display: flex; flex-direction: column; gap: 8px; margin: 14px 0; max-height: 340px; overflow-y: auto; padding-right: 4px; }
.msg { max-width: 85%; border-radius: 12px; padding: 8px 12px; border: 1px solid var(--border); }
.msg.mine { align-self: flex-end; background: var(--accent-soft); border-color: var(--accent); }
.msg.theirs { align-self: flex-start; background: var(--card); }
.mkind { font-size: 11px; color: var(--muted); margin-bottom: 3px; }
.mtext { font-size: 14px; }
.msglog .empty { color: var(--muted); font-size: 13px; text-align: center; padding: 16px 0; }
.inputrow { display: flex; gap: 8px; margin-top: 10px; }
.inputrow .txt { flex: 1; }

/* === КНОПКИ === */
.btn { font: inherit; border-radius: 10px; padding: 10px 16px; min-height: var(--tap); cursor: pointer; border: 1px solid transparent; }
.btn-primary, .btn.primary { background: var(--accent); color: var(--on-accent); font-weight: 600; }
.btn-primary:hover, .btn.primary:hover { background: var(--accent-hover); }
.btn-secondary { background: transparent; border-color: var(--border); color: var(--fg); }
.btn-secondary:hover { background: var(--card); }
.btn-ghost, .btn.ghost { background: transparent; color: var(--muted); border: none; }
.btn-ghost:hover { color: var(--fg); }
.btn-small { padding: 8px 12px; font-size: 13px; min-height: 36px; }

/* === ЧИПЫ (фильтры) === */
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { font-size: 12.5px; border-radius: 20px; padding: 6px 12px; border: 1px solid var(--border); background: var(--card); display: flex; align-items: center; gap: 7px; }
.chip .dot { width: 8px; height: 8px; border-radius: 50%; flex: 0 0 auto; }
.chip.open { border-color: rgba(79,191,139,.5); }
.chip.open .dot { background: var(--ok); }
.chip.locked { opacity: .55; }
.chip.locked .dot { background: var(--bad); }
.chip .blk { color: var(--muted); font-size: 11px; }

/* === АВТОКОМПЛИТ ГОРОДОВ === */
.autocomplete-dropdown {
  /* в потоке, а не поверх: иначе список закрывал «Что вы ищете?» и нажатие попадало в чужой город */
  position: static; max-height: 200px; overflow-y: auto;
  border: 1px solid var(--border); background: var(--card); border-radius: 8px;
  margin-top: 4px; box-shadow: 0 4px 12px var(--shadow-c);
}
.autocomplete-item { padding: 12px 16px; cursor: pointer; color: var(--fg); border-bottom: 1px solid var(--border); transition: background-color 0.2s; display: flex; justify-content: space-between; gap: 12px; }
.autocomplete-item-region { color: var(--muted); font-size: 0.9em; white-space: nowrap; }
.autocomplete-item:last-child { border-bottom: none; }
.autocomplete-item:hover { background: var(--panel2); }
.autocomplete-item:first-child { border-radius: 8px 8px 0 0; }
.autocomplete-item:last-child { border-radius: 0 0 8px 8px; }

.city-selector { position: relative; }
.city-input-group { display: flex; gap: 8px; align-items: center; }
.city-input-group input { flex: 1; }
.city-region-line { margin-top: 4px; color: var(--muted); font-size: 0.9em; }
.city-region-line.bad { color: var(--fg); font-weight: 600; }

.city-hierarchy { background: var(--card); border: 1px solid var(--border); border-radius: 10px; padding: 16px; margin-top: 10px; position: relative; }
.hierarchy-levels { display: flex; flex-direction: column; gap: 12px; }
.hierarchy-level { display: flex; flex-direction: column; gap: 6px; }
.hierarchy-level label { font-size: 14px; color: var(--muted); font-weight: 500; }
.hierarchy-level select { background: var(--bg); border: 1px solid var(--border); border-radius: 8px; padding: 10px 12px; color: var(--fg); font-size: 15px; min-height: 44px; }
.hierarchy-level select:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 2px var(--focus); }
.hierarchy-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--border); }
.hierarchy-actions .btn { min-height: 40px; padding: 8px 16px; font-size: 14px; }

/* === ПРОФИЛЬ КАНДИДАТА === */
.profile-header { display: flex; align-items: center; gap: 14px; margin: 0 0 16px; flex-wrap: wrap; }
.profile-avatar { flex: 0 0 80px; width: 80px; height: 80px; border-radius: 16px; background: var(--card); display: flex; align-items: center; justify-content: center; font-weight: 600; color: var(--accent); font-size: 28px; text-transform: uppercase; user-select: none; }
.profile-title { flex: 1; min-width: 0; }
.profile-name { font-size: 22px; font-weight: 600; margin: 0 0 4px; }
.profile-section { background: var(--card); border: 1px solid var(--border); border-radius: 14px; padding: 14px; }
.profile-section h3 { margin: 0 0 10px; font-size: 16px; font-weight: 600; }
.profile-section p { margin: 0 0 8px; font-size: 14px; line-height: 1.5; }
.profile-actions { display: flex; gap: 10px; margin-top: 16px; flex-wrap: wrap; }

/* === ШИРОКИЙ ЭКРАН === */
@media (min-width: 640px) {
  /* Всегда 600px, как нижняя панель; полоса прокрутки не сдвигает колонку (место под неё с обеих сторон). */
  .screen { width: 100%; max-width: 600px; margin: 0 auto; scrollbar-gutter: stable both-edges; }
  .tabbar { max-width: 600px; margin: 0 auto; border-radius: 20px 20px 0 0; box-shadow: 0 -8px 32px var(--shadow-c); }
  .topbar { width: 100%; max-width: 600px; margin: 0 auto; }
  .card { padding: 20px; }
  .msg { max-width: 70%; }
}

/* === ЭКРАН ВХОДА (новый дизайн по макету) === */
.brand-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}
.brand-row .logo {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--accent);
  color: var(--on-accent);
  font-weight: 700;
  font-size: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.brand-row h1 {
  font-size: 20px;
  font-weight: 700;
  margin: 0;
  letter-spacing: -0.3px;
}
.brand-sub {
  font-size: 12px;
  color: var(--muted);
  margin: 2px 0 0;
}

.seg {
  display: flex;
  gap: 8px;
}
.seg span {
  flex: 1;
  text-align: center;
  padding: 10px 0;
  border: 1px solid var(--border);
  border-radius: 12px;
  font-size: 14px;
  font-weight: 500;
  color: var(--muted);
  cursor: pointer;
  transition: all 0.15s;
}
.seg span.on {
  background: var(--accent);
  border-color: var(--accent);
  color: var(--on-accent);
  font-weight: 600;
}
.seg span:active { transform: scale(0.98); }

.field {
  width: 100%;
  box-sizing: border-box;
  padding: 8px 12px;
  border: 1px solid var(--accent);
  border-radius: 12px;
  font-size: 15px;
  font-weight: 500;
  background: transparent;
  color: var(--fg);
  outline: none;
}
.opt { font-size: 12px; font-weight: 400; color: var(--muted); }
.about-field { resize: none; font-family: inherit; line-height: 1.4; font-weight: 400; }
.field:focus { box-shadow: 0 0 0 2px var(--focus); }
.field::placeholder { color: var(--muted); font-weight: 400; }

.region-row {
  display: flex;
  gap: 8px;
  margin-bottom: 10px;
}
.region-row .drop {
  flex: 1;
  position: relative;
}
.drop {
  border: 1px solid var(--border);
  border-radius: 12px;
  overflow: hidden;
  background: var(--card);
}
.drop-val {
  padding: 14px 16px;
  font-size: 15px;
  color: var(--muted);
  cursor: pointer;
}
.drop-val:not(:empty):first-child {
  color: var(--fg);
  background: color-mix(in srgb, var(--accent) 10%, transparent);
}

.geo {
  width: 100%;
  margin-top: 5px;
  padding: 8px 0;
  border-radius: 12px;
  background: transparent;
  color: var(--accent);
  font-size: 14px;
  font-weight: 600;
  text-align: center;
  border: 1px solid var(--accent);
  cursor: pointer;
  min-height: var(--tap);
  transition: background 0.15s, color 0.15s;
}
.geo:hover { background: color-mix(in srgb, var(--accent) 12%, transparent); }
.geo:active { background: var(--accent); color: var(--on-accent); }

.small {
  font-size: 11px;
  color: var(--dim);
  margin-top: 4px;
  line-height: 1.4;
}

.cta, .cta2 {
  width: 100%;
  border: none;
  border-radius: 14px;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  min-height: 46px;
  transition: background 0.15s, transform 0.05s, color 0.15s;
}
.cta {
  background: var(--accent);
  color: var(--on-accent);
  margin-top: 12px;
}
.cta:hover { background: var(--accent-hover); }
.cta:active { transform: scale(0.98); }

.cta2 {
  background: transparent;
  color: var(--accent);
  border: 1px solid var(--accent);
  margin-top: 8px;
}
.cta2:hover { background: color-mix(in srgb, var(--accent) 12%, transparent); }
.cta2:active { background: var(--accent); color: var(--on-accent); }

/* Card для экрана входа */
#main .card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 9px;
  margin-bottom: 5px;
}
#main .card .q {
  font-size: 13px;
  font-weight: 600;
  margin: 0 0 4px;
  color: var(--fg);
}

/* === ЭКРАН 0.2 «ФОРМА ВХОДА» (макет design/0.2_entry, утверждён 23.10.2026) === */
.entry-card { padding: 12px 14px; }
.entry-card .f + .f { margin-top: 10px; }
.entry-card .q { margin: 0 0 5px; font-size: 13px; font-weight: 600; }
.entry-card .q .opt { font-weight: 400; color: var(--muted); }
.entry-card .pair { display: flex; gap: 10px; }
.entry-card .pair > .f { flex: 1; min-width: 0; margin-top: 0; }
.entry-card .pair > .f:first-child { flex: 1.25; }
.entry-card .seg { gap: 6px; }
.entry-card .seg span { padding: 9px 2px; font-size: 13px; }
.entry-card .field { border-color: var(--border); }
.entry-card .field:focus { border-color: var(--fg); }
.entry-card .field.bad { border-color: var(--fg); }
.entry-card .sub { margin: 6px 0 0; font-size: 12px; color: var(--muted); }
.entry-card .sub.err { color: var(--fg); font-weight: 600; }
.entry-card .sub[hidden] { display: none; }
.entry-card .goal { gap: 6px; }
.entry-card .goal .chip { padding: 7px 10px; font-size: 12px; cursor: pointer; color: var(--muted); }
.entry-card .goal .chip.on { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); font-weight: 600; }
.geo-chip {
  display: inline-flex; align-items: center; gap: 6px; margin-top: 8px;
  padding: 7px 12px 7px 10px; border: 1px solid var(--border); border-radius: 10px;
  background: none; color: var(--fg); font: inherit; font-size: 13px; cursor: pointer;
}
.geo-chip svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 2; }
.entry0 .actions { margin-top: 12px; }
.consent { display: flex; gap: 10px; align-items: flex-start; margin: 0 0 10px; font-size: 13px; line-height: 1.4; cursor: pointer; }
.consent .box {
  flex: none; width: 20px; height: 20px; margin-top: 1px; border: 1.5px solid var(--muted);
  border-radius: 5px; display: flex; align-items: center; justify-content: center; box-sizing: border-box;
}
.consent .box svg { width: 14px; height: 14px; fill: none; stroke: var(--on-accent); stroke-width: 3; display: none; }
.consent .box.on { background: var(--fg); border-color: var(--fg); }
.consent .box.on svg { display: block; }
.consent-link { margin: -4px 0 12px 32px; font-size: 13px; }
.consent-link a { color: var(--muted); text-decoration: underline; text-underline-offset: 2px; cursor: pointer; display: inline-block; padding: 6px 0; }
.consent a { color: var(--muted); text-decoration: underline; text-underline-offset: 2px; }
.entry0 .cta { margin-top: 0; }
.entry0 .cta:disabled { background: var(--border); color: var(--muted); cursor: default; transform: none; }
.entry0 .left { margin: 6px 0 0; text-align: center; font-size: 12px; color: var(--muted); }
.entry0 .link { display: block; margin: 8px auto 0; background: none; border: 0; color: var(--fg);
  font: inherit; font-size: 13px; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
body.no-topbar .topbar { display: none; }
body.no-topbar .entry0 { padding-top: 16px; }
.entry-card .sub + .f { margin-top: 10px; }

/* ---------- Экран 1 «Поиск» и 1.3 «Расширенные фильтры» (макеты design/1_search, design/1.3_filters) ----------
   Свои классы s-*, чтобы не пересекаться со старыми .chip / .row / .card. */
.s1 { font-size: 15px; }
.s1 .muted { color: var(--muted); }
.s-title { margin: 4px 0 12px; font-size: 19px; font-weight: 700; letter-spacing: -0.2px; }
.s-section { margin: 0; font-size: 11px; font-weight: 600; letter-spacing: 0.5px; text-transform: uppercase; color: var(--muted); }
.s-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 10px; }
.s-fold, .s-back { border: 0; background: none; color: var(--muted); font-family: inherit; font-size: 12px; cursor: pointer; padding: 0; }
.s-back { display: inline-block; margin: 6px 0 10px; font-size: 13px; }
.s-card { border: 1px solid var(--border); border-radius: var(--radius); padding: 14px; margin-bottom: 10px; background: var(--card); }
.s-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--border); }
.s-row:first-child { padding-top: 0; }
.s-row.wrap { flex-wrap: wrap; row-gap: 8px; }
.s-label { font-size: 13px; color: var(--muted); }
.s-chips { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.s-chip { padding: 7px 11px; border: 1px solid var(--border); border-radius: 10px; color: var(--muted); font-size: 13px; cursor: pointer; user-select: none; }
.s-chip.on { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); font-weight: 600; }
.s-num { width: 64px; padding: 8px 10px; border: 1px solid var(--accent); border-radius: 10px; background: none; color: var(--fg); font-family: inherit; font-size: 14px; font-weight: 600; text-align: center; }
.s-mode { display: flex; width: 100%; justify-content: flex-end; gap: 4px; margin-top: 2px; }
.s-mode > span { padding: 4px 9px; border: 1px solid var(--border); border-radius: 8px; font-size: 12px; color: var(--muted); cursor: pointer; user-select: none; }
.s-mode > .on { border-color: var(--fg); color: var(--fg); font-weight: 600; }
.s-more-row { display: flex; align-items: center; gap: 10px; margin-top: 12px; }
.s-more { flex: 1; display: flex; justify-content: space-between; align-items: center; padding: 11px 12px; border: 1px solid var(--border); border-radius: 10px; background: none; color: var(--fg); font-family: inherit; font-size: 13px; font-weight: 600; cursor: pointer; }
.s-more .muted { font-weight: 400; }
.s-more-note { margin: 6px 0 0; font-size: 11px; color: var(--muted); text-align: right; }
.s-toggle { position: relative; flex: none; width: 44px; height: 26px; border: 0; border-radius: 999px; background: var(--border); cursor: pointer; }
.s-toggle::after { content: ""; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%; background: var(--muted); transition: left 0.15s; }
.s-toggle.on { background: var(--accent); }
.s-toggle.on::after { left: 21px; background: var(--on-accent); }
.s-hint { margin: 0 0 12px; font-size: 12px; line-height: 1.45; color: var(--muted); }
.s-seen { color: var(--fg); font-weight: 600; }
.s-summary, .s-use { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.s-summary b, .s-use b { display: block; font-size: 14px; font-weight: 600; }
.s-summary small, .s-use small { display: block; margin-top: 3px; font-size: 12px; line-height: 1.4; color: var(--muted); }
.s-name { margin: 0 0 2px; font-size: 15px; font-weight: 600; }
.s-meta { margin: 0 0 10px; font-size: 13px; color: var(--muted); }
.s-mark { margin-left: 6px; padding: 2px 8px; border: 1px solid var(--border); border-radius: 999px; font-size: 11px; font-weight: 400; color: var(--muted); vertical-align: 2px; }
.s-mark.strong { border-color: var(--fg); color: var(--fg); font-weight: 600; }
.s-btn { display: inline-flex; align-items: center; justify-content: center; padding: 11px 16px; border: 1px solid var(--accent); border-radius: 14px; background: none; color: var(--accent); font-family: inherit; font-size: 14px; font-weight: 600; cursor: pointer; }
.s-btn.small { padding: 8px 12px; font-size: 13px; }
.s-btn.primary { background: var(--accent); color: var(--on-accent); }
.s-empty { text-align: center; padding: 24px 0; display: flex; flex-direction: column; gap: 10px; align-items: center; }
.s-empty .big { font-size: 16px; font-weight: 600; }
.s-bhead { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; cursor: pointer; }
.s-bname { font-size: 15px; font-weight: 600; }
.s-bmeta { margin-top: 2px; font-size: 12px; color: var(--muted); }
.s-bside { flex: none; display: flex; align-items: center; gap: 6px; font-size: 12px; }
.s-bprog { font-weight: 600; white-space: nowrap; }
.s-bprog.empty { color: var(--muted); font-weight: 400; }
.s-fbody { margin-top: 6px; }
.s-f { padding: 12px 0; border-bottom: 1px solid var(--border); }
.s-f:last-child { border-bottom: 0; padding-bottom: 0; }
.s-flabel { margin: 0 0 8px; font-size: 13px; color: var(--muted); }
.s-f .s-chip { font-size: 12px; }
.s-f .s-mode { margin-top: 8px; }
.s-fnote { margin: 8px 0 0; font-size: 12px; line-height: 1.4; color: var(--muted); }
.s-f.locked .s-btn { margin-top: 8px; }
.s-actions { display: flex; gap: 8px; margin-top: 4px; }
.s-actions .s-btn { flex: 1; }
/* Расширенные фильтры: «Показать людей» всегда под рукой внизу, листать к концу не нужно. */
.s-actions.s-stick { position: sticky; bottom: calc(env(safe-area-inset-bottom, 0px) - 46px); /* прямо над таб-баром: у .screen снизу 100px, таб-бар 54px */ z-index: 2; margin: 0 -2px; padding: 10px 2px 12px; background: var(--bg); border-top: 1px solid var(--border); }

/* ---------- 1.2, 2, 2.1, 2.2, 2.3 — симпатии и диалоги (макеты design/1.2…2.3) ---------- */
.s-btn.wide { display: flex; width: 100%; margin-top: 10px; }
.s-btn:disabled { color: var(--muted); border-color: var(--border); background: none; cursor: default; }
.s-hint.center { text-align: center; }
.d-link { display: block; margin: 14px auto 0; border: 0; background: none; color: var(--muted); font-family: inherit; font-size: 13px; text-decoration: underline; cursor: pointer; }
.d-sil { width: 100%; height: 100%; fill: var(--ph-fg); }
.d-photo { display: flex; flex-direction: column; align-items: center; padding: 24px 16px; background: var(--panel2); }
.d-photo .d-sil { width: 76px; height: 76px; border-radius: 50%; background: var(--ph); padding: 12px 10px 0; }
.d-photo p { margin: 12px 0 0; font-size: 13px; color: var(--muted); text-align: center; line-height: 1.45; }
.d-pname { margin: 14px 0 2px; }
.d-row { display: flex; justify-content: space-between; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--border); font-size: 13px; }
.d-row:last-child { border-bottom: 0; padding-bottom: 0; }
.d-row span { color: var(--muted); }
.d-row b { text-align: right; }
.s-card .s-section { margin-bottom: 6px; }
.d-incoming b { font-size: 14px; }
.d-sec { margin: 16px 0 8px; }
.d-item { display: flex; align-items: center; gap: 12px; cursor: pointer; }
.d-item.fresh { border-color: var(--fg); }
.d-ava { flex: none; display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%;
  background: var(--fg); color: var(--bg); font-weight: 700; font-size: 18px; overflow: hidden; }
.d-ava.soft { background: var(--bubble); color: var(--fg); }
.d-ava.big { width: 36px; height: 36px; font-size: 16px; }
.d-ava .d-sil { background: var(--ph); padding: 6px 4px 0; fill: var(--ph-fg); }
.d-main { flex: 1; min-width: 0; }
.d-main b { display: block; font-size: 15px; font-weight: 600; }
.d-main small { display: block; margin-top: 2px; font-size: 13px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.d-top { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.d-top span { flex: none; font-size: 11px; color: var(--muted); }
.d-dot { flex: none; width: 7px; height: 7px; border-radius: 50%; background: var(--fg); }

.d-thread { display: flex; flex-direction: column; flex-shrink: 0; min-height: calc(100vh - 20px); }
.d-head { display: flex; align-items: center; gap: 10px; padding: 12px 0; border-bottom: 1px solid var(--border); position: sticky; top: 0; background: var(--bg); z-index: 2; }
.d-head .d-link { margin: 0; }
.d-round { flex: none; width: 36px; height: 36px; border: 1px solid var(--border); border-radius: 50%; background: none; color: var(--fg); font-size: 20px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.d-round svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.d-log { flex: 1; padding: 12px 0; }
.d-sys { margin: 8px auto; padding: 6px 12px; width: fit-content; max-width: 90%; border: 1px solid var(--border); border-radius: 999px; font-size: 12px; color: var(--muted); text-align: center; }
.d-msg { display: flex; align-items: flex-end; gap: 6px; margin: 8px 0; }
.d-msg.mine { flex-direction: row-reverse; }
.d-bubble { max-width: 72%; padding: 9px 12px; border-radius: 16px; font-size: 14px; line-height: 1.4; background: var(--bubble); white-space: pre-wrap; word-break: break-word; }
.d-msg.mine .d-bubble { background: var(--accent); color: var(--on-accent); }
.d-time { font-size: 10px; color: var(--muted); }
.d-mini { flex: none; width: 24px; height: 24px; border-radius: 50%; background: var(--bubble); font-size: 11px; font-weight: 700; display: flex; align-items: center; justify-content: center; }
.d-pic { width: 150px; height: 180px; border-radius: 14px; border: 1px solid var(--border); background: var(--ph); overflow: hidden; padding: 30px 20px 0; }
.d-pic .d-sil { fill: var(--ph-fg); }
.d-offer { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 14px; border-color: var(--fg); }
.d-menu { flex-shrink: 0; margin: 0 0 8px; width: 75%; border: 1px solid var(--border); border-radius: 14px; background: var(--panel2); overflow: hidden; }
.d-menu button { display: block; width: 100%; padding: 12px 14px; border: 0; border-bottom: 1px solid var(--border); background: none; color: var(--fg); text-align: left; font-family: inherit; cursor: pointer; }
.d-menu button:last-child { border-bottom: 0; }
.d-menu b { display: block; font-size: 14px; }
.d-menu small { display: block; margin-top: 2px; font-size: 12px; color: var(--muted); }
.d-input { display: flex; align-items: center; gap: 8px; padding: 10px 0 14px; border-top: 1px solid var(--border); position: sticky; bottom: 0; background: var(--bg); }
.d-field { flex: 1; display: flex; align-items: center; border: 1px solid var(--fg); border-radius: 999px; padding: 3px 3px 3px 14px; }
.d-field input { flex: 1; min-width: 0; border: 0; background: none; color: var(--fg); font-family: inherit; font-size: 14px; outline: none; }
.d-send { flex: none; width: 32px; height: 32px; border: 0; border-radius: 50%; background: var(--accent); color: var(--on-accent); font-size: 16px; cursor: pointer; }
.d-shade { position: fixed; inset: 0; background: rgba(0,0,0,0.6); z-index: 20; }
.d-sheet { position: fixed; left: 0; right: 0; bottom: 0; max-width: 520px; margin: 0 auto; padding: 18px 16px 22px; background: var(--panel2); border-radius: 20px 20px 0 0; z-index: 21; }
.d-sheet h2 { margin: 0 0 6px; font-size: 17px; }
.d-opt { display: flex; align-items: center; gap: 12px; margin-top: 10px; padding: 12px; border: 1px solid var(--border); border-radius: 12px; cursor: pointer; }
.d-opt.on { border-color: var(--fg); }
.d-opt.plain { border: 0; padding: 12px 0 0; align-items: flex-start; }
.d-opt b { display: block; font-size: 14px; font-weight: 600; }
.d-opt small { display: block; margin-top: 2px; font-size: 12px; color: var(--muted); line-height: 1.4; }
.d-opt .box, .d-report .box { flex: none; width: 20px; height: 20px; border: 1.5px solid var(--muted); border-radius: 5px; position: relative; }
.d-opt .box.on { border-color: var(--fg); }
.d-opt .box.on::after { content: ""; position: absolute; inset: 4px; border-radius: 2px; background: var(--fg); }
.d-phone, .d-details { width: 100%; margin-top: 10px; padding: 11px 12px; border: 1px solid var(--border); border-radius: 12px; background: none; color: var(--fg); font-family: inherit; font-size: 14px; resize: none; }
.d-match { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 80vh; padding: 0 12px; text-align: center; }
.d-match h1 { margin: 18px 0 6px; font-size: 24px; }
.d-pair { display: flex; }
.d-circle { width: 90px; height: 90px; border-radius: 50%; border: 3px solid var(--bg); background: var(--ph); overflow: hidden; padding: 16px 12px 0; }
.d-circle + .d-circle { margin-left: -14px; }
.d-rhead { display: flex; align-items: center; gap: 12px; margin: 10px 0 12px; }
.d-rhead .s-title { margin: 0; }
.d-quote { font-size: 14px; }
.d-quote small { display: block; margin-top: 4px; font-size: 12px; color: var(--muted); }

/* ---------- 4, 4.2, 4.3 — настройки (макеты design/4_settings, 4.2_invites, 4.3_blacklist) ---------- */
.g-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; padding: 10px 0; border: 0; border-bottom: 1px solid var(--border); background: none; color: var(--fg); font-family: inherit; font-size: 15px; text-align: left; }
.g-row:last-child { border-bottom: 0; padding-bottom: 0; }
.g-row small { display: block; margin-top: 3px; font-size: 12px; color: var(--muted); line-height: 1.4; }
.g-link { cursor: pointer; }
.g-link span:first-child { flex: 1; }
.g-link.dim span:first-child { color: var(--muted); }
.g-val { font-size: 13px; color: var(--muted); }
.g-arrow { color: var(--muted); }
.g-invite { text-align: center; }
.g-qr { width: 150px; height: 150px; margin: 6px auto 10px; padding: 6px; background: #fff; border-radius: 12px; }
.g-qr svg { width: 100%; height: 100%; display: block; }
.g-code { font: 700 18px ui-monospace, Menlo, Consolas, monospace; letter-spacing: 2px; margin-bottom: 6px; }
.g-person { padding: 10px 0; border-bottom: 1px solid var(--border); }
.g-person:last-child { border-bottom: 0; padding-bottom: 0; }
.g-person.row { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.g-person b { display: block; font-size: 15px; }
.g-person small { display: block; margin-top: 2px; font-size: 12px; color: var(--muted); }

/* 0.2 после правки владельца 23.10.2026: просторнее, всё на всю ширину */
.entry-card { padding: 16px; }
.entry-card .f + .f, .entry-card .sub + .f { margin-top: 18px; }
.entry-card .q { margin: 0 0 8px; font-size: 14px; }
.entry-card .seg span { padding: 12px 2px; font-size: 14px; }
.entry-card .goal { flex-direction: column; gap: 8px; }
.entry-card .goal .chip { padding: 12px 14px; font-size: 14px; border-radius: 12px; color: var(--fg); }
.entry-card .goal .chip.on { color: var(--fg); }
.entry-card .geo-chip { display: flex; width: 100%; justify-content: center; gap: 8px; margin-top: 10px; padding: 12px; font-size: 14px; }

/* ---------- Фото (карточка в анкете и обмен в диалоге, решение 52) ---------- */
.photo-card .photo-row { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 10px; }
.photo-card .photo-thumb { width: 72px; height: 88px; padding: 0; border-radius: 10px; border: 1px solid var(--border);
  background: var(--ph); overflow: hidden; cursor: pointer; }
.photo-card .photo-add { width: 72px; height: 88px; border-radius: 10px; border: 1px dashed var(--border);
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
  font-size: 11px; color: var(--muted); cursor: pointer; text-align: center; }
.photo-card .photo-add span { font-size: 20px; line-height: 1; color: var(--fg); }
.photo-card .hint { margin: 0; font-size: 13px; color: var(--muted); }
.photo-img, .d-ava-img, .d-pic-img { display: block; width: 100%; height: 100%; object-fit: cover; box-shadow: 0 0 0 1px var(--border); }
.ph-wait { display: block; width: 100%; height: 100%; background: var(--ph); }
.d-ava .d-ava-img { border-radius: 50%; }
.d-pics { display: flex; gap: 6px; overflow-x: auto; max-width: 260px; }
.d-pics .d-pic-img, .d-pics .ph-wait { flex: none; width: 120px; height: 150px; border-radius: 14px; border: 1px solid var(--border); cursor: zoom-in; }
.photo-view { position: fixed; inset: 0; z-index: 1000; background: rgba(0,0,0,.92); display: flex; align-items: center; justify-content: center; cursor: zoom-out; }
.photo-view img { max-width: 100%; max-height: 100%; object-fit: contain; }

/* Карточка в выдаче и «Вам симпатия» нажимается целиком (доработка 7) */
.s-tap { display: flex; align-items: center; gap: 12px; cursor: pointer; }
.s-tap:focus-visible { outline: 2px solid var(--fg); outline-offset: 2px; }
.s-tap-body { flex: 1; min-width: 0; }
.s-tap .s-meta { margin-bottom: 0; }
.s-go { color: var(--muted); font-size: 22px; line-height: 1; }
.s-facts { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.s-facts span { padding: 3px 9px; border-radius: 999px; background: var(--panel2); font-size: 12px; color: var(--fg); }

/* Счёт внутри блока анкеты «1 из 4» + полоска (доработка 8) */
.quiz-block-progress { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.quiz-block-progress .quiz-progress-text { color: var(--fg); font-weight: 600; }
.quiz-bar { height: 4px; margin: 6px 0 12px; border-radius: 2px; background: var(--panel2); overflow: hidden; }
.quiz-bar i { display: block; height: 100%; background: var(--fg); transition: width .25s ease; }
@media (prefers-reduced-motion: reduce) { .quiz-bar i { transition: none; } }

/* «Основные вопросы» в анкете (решение 59): строка-сводка или форма входа */
.core-head { display: flex; justify-content: space-between; align-items: baseline; margin: 4px 0 8px; }
.core-title { font-size: 12px; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.core-summary { margin-bottom: 14px; }
.core-summary .s-go { font-size: 14px; }
.core-form { margin-bottom: 14px; }
.core-form .entry-card { margin: 0; }

/* «Расскажите о себе» — отдельная карточка в анкете (решение 60); пустая — пунктир, как «Добавить фото» */
.about-card { margin-bottom: 14px; }
.about-card .about-field { margin-top: 10px; width: 100%; resize: vertical; }
.about-card.empty .about-field { border-style: dashed; }
.about-summary { margin-bottom: 14px; }
.about-summary .s-go { font-size: 14px; }
.about-summary.empty { border-style: dashed; }
.about-preview { font-weight: 400; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.about-card .hint { margin: 6px 0 0; font-size: 12px; color: var(--muted); }

/* Одна белая кнопка на экране анкеты — «Продолжить заполнение»; у блоков «Заполнить» контурная,
   «Править» — тихая ссылка (быстрая правка до нового стиля, 23.10) */
.block-btn-secondary:hover { border-color: var(--fg); }
.block-btn-ghost { flex: none; min-height: 0; padding: 4px 0; font-weight: 500; text-decoration: underline; text-underline-offset: 3px; }
.quiz-topline .s-back { margin: 0; }

/* «Вам симпатия» полоской (решение 65) */
.lk-head { display: flex; align-items: center; justify-content: space-between; margin: 16px 0 8px; }
.lk-head .d-sec { margin: 0; }
.lk-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--accent); vertical-align: middle; margin-left: 4px; }
.lk-strip { display: flex; gap: 14px; overflow-x: auto; margin: 0 -16px; padding: 4px 16px 10px; scrollbar-width: none; }
.lk-strip::-webkit-scrollbar { display: none; }
.lk { flex: none; width: 64px; display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 0; border: 0; background: none; color: var(--fg); font: inherit; cursor: pointer; }
.lk-ava { position: relative; width: 58px; height: 58px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 20px; background: var(--panel2); color: var(--fg); box-shadow: 0 0 0 2px var(--bg), 0 0 0 3px var(--border); }
.lk.new .lk-ava { box-shadow: 0 0 0 2px var(--bg), 0 0 0 4px var(--accent); }
.lk-ava .lk-dot { position: absolute; top: 0; right: 0; width: 12px; height: 12px; margin: 0; border: 2px solid var(--bg); }
.lk small { max-width: 64px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11.5px; line-height: 1.2; }
.lk small i { font-style: normal; color: var(--muted); }
.lk-toast { position: fixed; top: calc(10px + env(safe-area-inset-top, 0px)); left: 50%; transform: translateX(-50%); z-index: 50; display: flex; align-items: center; gap: 10px; width: calc(100% - 32px); max-width: 420px; padding: 10px 14px; border: 1px solid var(--accent); border-radius: 16px; background: var(--card); color: var(--fg); font: inherit; text-align: left; box-shadow: 0 8px 24px var(--shadow-c); cursor: pointer; animation: lk-in .25s ease-out; }
.lk-toast .lk-ava { width: 40px; height: 40px; font-size: 16px; box-shadow: 0 0 0 2px var(--accent); }
.lk-toast b { display: block; font-size: 14px; }
.lk-toast small { display: block; color: var(--muted); font-size: 13px; }
@keyframes lk-in { from { opacity: 0; transform: translate(-50%, -8px); } to { opacity: 1; transform: translate(-50%, 0); } }
@media (prefers-reduced-motion: reduce) { .lk-toast { animation: none; } }

/* Шапка вопроса: круглая «‹» · название блока · «1 из 4» (решение 66) */
.quiz-head { display: flex; align-items: center; gap: 12px; margin: 12px 0 10px; }
.quiz-head b { flex: 1; min-width: 0; font-size: 16px; }
.quiz-head .quiz-progress-text { color: var(--fg); font-weight: 600; font-size: 13px; white-space: nowrap; }

/* Контакты (решение 69): ссылка в шапке диалога, окно «Контакты», пометка на плашке */
.d-contacts-link { padding: 0; border: 0; background: none; color: var(--accent); font: inherit; cursor: pointer; }
.d-grow { flex: 1; min-width: 0; }
.d-offer-note { display: block; margin-top: 4px; font-size: 12px; color: var(--muted); }
.d-given { margin-top: 14px; }

/* Подтверждённый номер (решение 72) */
.s-ok { color: var(--accent); }
.s-ok-line { margin: 4px 0 0; font-size: 13px; color: var(--accent); }
.g-hint { margin: 8px 0 0; }

/* 0.1 Приветствие (решение 73) */
.w01 { display: flex; flex-direction: column; gap: 14px; padding: 16px 0 20px; }
.w-title { margin: 6px 0 0; font-size: 26px; line-height: 1.2; font-weight: 700; text-wrap: balance; }
.w-title span { color: var(--muted); }
.w-sub { margin: 0; color: var(--muted); font-size: 14px; line-height: 1.45; }
.w-steps { display: grid; gap: 12px; padding: 14px; }
.w-step { display: flex; gap: 12px; align-items: flex-start; }
.w-step b { flex: none; width: 26px; height: 26px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 13px; background: var(--accent-soft); color: var(--accent); }
.w-step.done b { background: var(--accent); color: var(--on-accent); }
.w-step strong { display: block; font-size: 14px; }
.w-step small { display: block; margin-top: 2px; font-size: 12.5px; color: var(--muted); line-height: 1.35; }
.w-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.w-chips span { font-size: 12.5px; padding: 6px 12px; border: 1px solid var(--border); border-radius: 999px; color: var(--muted); }
.w-note { margin: -4px 0 0; text-align: center; font-size: 12.5px; color: var(--muted); }

/* === Новый вид (решение 75, проба на «Настройках»): шкала 24 / 16 / 14 / 13, строки 48 px,
   нажатия не меньше 44 px. Когда понравится — переносим на остальные экраны. === */
.v2 { font-size: 16px; }
.v2-title { margin: 8px 0 14px; font-size: 24px; font-weight: 700; line-height: 1.15; letter-spacing: -0.3px; }
.v2-sec { margin: 18px 2px 8px; font-size: 14px; font-weight: 600; color: var(--muted); }
.v2-list { background: var(--card); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
.v2-list .g-row { min-height: 48px; padding: 8px 14px; font-size: 16px; }
.v2-list .g-row:last-child { padding-bottom: 8px; }
.v2-list .g-val { font-size: 14px; }
.v2-list .g-arrow { font-size: 18px; }
.v2-list .s-toggle { width: 51px; height: 31px; }
.v2-list .s-toggle::after { width: 25px; height: 25px; }
.v2-list .s-toggle.on::after { left: 23px; }
.v2-hint { margin: 8px 2px 0; font-size: 13px; line-height: 1.45; color: var(--muted); }
.v2-btn { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 48px; margin-top: 24px; border: 1px solid var(--border); border-radius: 14px; background: var(--card); color: var(--fg); font-family: inherit; font-size: 16px; font-weight: 600; cursor: pointer; }
.v2-btn:active { background: var(--panel2); }
.v2-btn.primary { border-color: transparent; background: var(--accent-fill); color: #fff; }
.v2-btn.primary:active { filter: brightness(1.1); }

/* «Ваша анкета» в новом виде (решение 75). */
.v2-progress { background: var(--card); border: 1px solid var(--border); border-radius: var(--radius); padding: 14px; margin-bottom: 18px; }
.v2-progress-top { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; font-size: 16px; }
.v2-progress-top span { font-size: 14px; color: var(--muted); }
.v2-bar { height: 8px; margin: 10px 0 2px; border-radius: 4px; background: var(--progress-bg); overflow: hidden; }
.v2-bar i { display: block; height: 100%; background: var(--progress-fill); border-radius: 4px; }
.v2-progress .v2-btn { margin-top: 12px; }
.v2-anketa .core-head { align-items: center; margin: 4px 2px 8px; }
.v2-anketa .core-title { font-size: 14px; font-weight: 600; letter-spacing: 0; text-transform: none; }
.v2-anketa .s-fold { min-height: 44px; padding: 0 2px; font-size: 14px; }
.v2-anketa .s-name { font-size: 16px; }
.v2-anketa .s-meta { font-size: 14px; }
.v2-anketa .about-summary .s-meta { margin: 0; }
.v2-anketa .card.photo-card { padding: 14px; margin-bottom: 18px; }
.v2-anketa .block-name { font-size: 16px; }
.v2-anketa .block-meta { font-size: 14px; }
.v2-anketa .photo-card .hint { font-size: 13px; }
.v2-anketa .photo-card .photo-add { font-size: 13px; }
.v2-anketa .block-card { padding: 14px; margin-bottom: 10px; cursor: pointer; }
.v2-anketa .block-header { margin-bottom: 0; min-height: 44px; }
.v2-anketa .block-progress { font-size: 14px; }
.v2-anketa .block-toggle { min-width: 44px; min-height: 44px; font-size: 16px; }
.v2-anketa .block-questions { font-size: 15px; gap: 6px; }
.v2-anketa .block-q { min-height: 48px; padding: 10px 12px; }
.v2-anketa .block-q-text { color: var(--fg); }
.v2-anketa .block-q-answer { font-size: 14px; }
.v2-anketa .block-actions:empty, .v2-anketa .block-card:not(.expanded) .block-actions { display: none; } /* свёрнутый блок — одна строка */
.v2-anketa .block-btn { min-height: 44px; font-size: 15px; font-weight: 600; border-radius: 12px; }

/* «Поиск» и «Фильтры» в новом виде (решение 75). */
.v2-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 8px 0 12px; }
.v2-head .v2-title { margin: 0; }
.v2-icon { position: relative; flex: none; width: 44px; height: 44px; display: grid; place-items: center; border: 1px solid var(--border); border-radius: 12px; background: var(--card); color: var(--fg); cursor: pointer; }
.v2-icon svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.v2-dot { position: absolute; top: -6px; right: -6px; min-width: 20px; height: 20px; padding: 0 5px; border-radius: 10px; background: var(--accent-fill); color: #fff; font-size: 12px; font-weight: 700; display: grid; place-items: center; }
.v2-sum { display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%; min-height: 48px; margin-bottom: 14px; padding: 0 14px; border: 1px solid var(--border); border-radius: 12px; background: var(--card); color: var(--fg); font-family: inherit; font-size: 15px; font-weight: 600; text-align: left; cursor: pointer; }
.v2-go { color: var(--muted); font-size: 20px; line-height: 1; }
.v2-search .s-card.s-tap { padding: 14px; margin-bottom: 10px; }
.v2-search .s-name { font-size: 18px; font-weight: 700; margin-bottom: 2px; }
.v2-search .s-meta { font-size: 14px; }
.v2-search .s-facts span, .v2-search .s-fact { font-size: 14px; }
.v2-search .s-mark { font-size: 13px; }
.v2-search .s-empty .v2-btn { margin-top: 10px; }
.v2-search .note { font-size: 13px; }
.v2 .s-back { display: inline-flex; align-items: center; min-height: 44px; margin: 0; font-size: 15px; }
.v2-filters .v2-title { margin-top: 0; }
.v2-filters .s-label { font-size: 15px; }
.v2-filters .s-chip { min-height: 40px; display: inline-flex; align-items: center; font-size: 15px; }
.v2-filters .s-num { min-height: 40px; font-size: 16px; }
.v2-filters .s-mode span { min-height: 36px; display: inline-flex; align-items: center; font-size: 14px; }
.v2-filters .s-bname { font-size: 16px; }
.v2-filters .s-bmeta, .v2-filters .s-bprog { font-size: 14px; }
.v2-filters .s-bhead { min-height: 44px; }
.v2-filters .s-flabel { font-size: 15px; }
.v2-filters .s-fnote { font-size: 13px; }
.v2-filters .s-use b { font-size: 16px; }
.v2-filters .s-use small { font-size: 13px; }
.v2-hint.top { margin: 0 2px 10px; }
.v2-filters .s-stick .v2-btn { margin-top: 0; flex: 1; }

/* Анкета человека в новом виде (решение 75). */
.v2-bar-row { position: relative; display: flex; align-items: center; justify-content: space-between; }
.v2-more { font-size: 20px; line-height: 1; }
.v2-menu { position: absolute; right: 0; top: 50px; z-index: 5; min-width: 200px; background: var(--card); border: 1px solid var(--border-strong); border-radius: 14px; box-shadow: 0 12px 30px var(--shadow-c); overflow: hidden; }
.v2-menu button { display: flex; align-items: center; width: 100%; min-height: 48px; padding: 0 14px; border: 0; background: none; color: var(--fg); font-family: inherit; font-size: 16px; text-align: left; cursor: pointer; }
.v2-menu .bad { color: #e5484d; }
.v2-pava { width: 112px; height: 112px; margin: 6px auto 0; border-radius: 50%; background: var(--panel2); display: grid; place-items: center; overflow: hidden; }
.v2-pava .d-sil { width: 64px; height: 64px; fill: var(--ph-fg); }
.v2-pava-note { margin: 8px 0 0; text-align: center; font-size: 13px; color: var(--muted); }
.v2-pname { margin: 12px 0 2px; text-align: center; }
.v2-pmeta { margin: 0; text-align: center; font-size: 14px; color: var(--muted); }
.v2-pmeta.s-ok-line { color: var(--accent); margin-top: 4px; }
.v2-profile .v2-list .d-row { min-height: 48px; align-items: center; padding: 10px 14px; font-size: 16px; }
.v2-profile .v2-list .d-row:last-child { padding-bottom: 10px; }
.v2-profile .v2-list .d-row span { font-size: 15px; }
.v2-profile .v2-list .d-row b { font-weight: 500; }
.v2-profile .v2-list .d-row.d-text { flex-direction: column; align-items: stretch; gap: 4px; }
.v2-profile .v2-list .d-row.d-text b { text-align: left; white-space: pre-line; overflow-wrap: anywhere; }
.v2-profile .note { margin-top: 14px; font-size: 13px; }
.v2-foot { flex-wrap: wrap; margin-top: 18px; }
.v2-foot .v2-btn { flex: 1; margin-top: 0; }
.v2-foot .v2-btn:disabled { color: var(--muted); cursor: default; }
.v2-pass { flex-basis: 100%; min-height: 40px; border: 0; background: none; color: var(--muted); font-family: inherit; font-size: 14px; cursor: pointer; }
.v2-foot-note { flex-basis: 100%; margin: 0 0 2px; font-size: 15px; font-weight: 600; text-align: center; }
/* Короткая анкета — кнопка всё равно внизу над вкладками (как у длинной, где она прилипает). */
.v2-profile { flex: 1 0 auto; display: flex; flex-direction: column; margin-bottom: -46px; }
.v2-profile .v2-foot { margin-top: auto; padding-top: 18px; }
.v2-profile > .v2-hint { text-align: center; margin-top: 10px; }
.v2-sum { padding-block: 8px; }
.v2-sum-t { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.v2-sum-t b { font-weight: 600; }
.v2-sum-t small { font-size: 14px; font-weight: 400; color: var(--muted); }

/* === Общие правила нового вида (решение 75) — для экранов, которые ещё не переделаны отдельно:
   залитые кнопки читаемым синим, нажатия от 44 px, мелкий текст не меньше 13 px. === */
.btn.primary, .btn-primary, .s-btn.primary, .quiz-btn-primary, .cta, .block-btn-primary, .d-send { background: var(--accent-fill); color: #fff; }
.btn.primary:hover, .btn-primary:hover, .quiz-btn-primary:hover, .cta:hover { background: var(--accent-fill); filter: brightness(1.08); }
.d-msg.mine .d-bubble { background: var(--accent-fill); color: #fff; }
.w-step.done b { background: var(--accent-fill); color: #fff; }
.s-section { font-size: 14px; letter-spacing: 0; text-transform: none; }
.s-fold, .s-back { display: inline-flex; align-items: center; min-height: 44px; font-size: 14px; }
.s-back { font-size: 15px; margin: 0; }
.s-toggle { width: 51px; height: 31px; }
.s-toggle::after { width: 25px; height: 25px; }
.s-toggle.on::after { left: 23px; }
.s-btn { min-height: 44px; font-size: 15px; }
.s-btn.small { min-height: 40px; font-size: 14px; }
.s-hint { font-size: 13px; }
.quiz-btn { min-height: 48px; font-size: 16px; }
.d-round { width: 44px; height: 44px; }
/* Диалоги и переписка */
.d-sec { margin: 18px 0 8px; }
.lk small { font-size: 13px; max-width: 72px; }
.d-main b { font-size: 16px; }
.d-main small { font-size: 14px; }
.d-top span { font-size: 13px; }
.d-sys { border: 0; padding: 2px 8px; font-size: 13px; }
.d-bubble { font-size: 16px; }
.d-time { font-size: 12px; }
.d-mini { font-size: 12px; }
.d-offer { font-size: 15px; }
.d-menu { width: 85%; }
.d-menu button { min-height: 52px; }
.d-menu b { font-size: 16px; }
.d-menu small { font-size: 13px; }
.d-field { padding: 2px 2px 2px 16px; }
.d-field input { font-size: 16px; min-height: 40px; }
.d-send { width: 44px; height: 44px; font-size: 18px; }
.d-contacts-link { padding: 10px 6px; margin: -10px -6px; font-size: 14px; }
.d-sheet h2 { font-size: 18px; }
.d-opt { min-height: 52px; }
.d-opt b { font-size: 16px; }
.d-opt small { font-size: 13px; }
.d-phone, .d-details { font-size: 16px; }
.d-quote { font-size: 15px; }
.d-hmenu { position: relative; flex: none; }
.d-hmenu .v2-menu { top: 50px; }
/* Вход и приветствие */
.brand-sub { font-size: 13px; }
.field { min-height: 48px; font-size: 16px; }
.opt { font-size: 13px; }
.consent { font-size: 14px; }
.entry0 .left { font-size: 13px; }
.w-step strong { font-size: 15px; }
.w-step small, .w-chips span, .w-note { font-size: 14px; }
/* Приглашения */
.g-person b { font-size: 16px; }
.g-person small { font-size: 13px; }
.v2-quiet { margin-top: 28px; background: none; color: var(--muted); font-weight: 500; }
.v2-hint.center { text-align: center; }
.d-field { border-color: var(--border-strong); }

/* Без своей полоски сверху (решение 75): отступ сверху у экрана, вкладки — обычными буквами. */
body.no-topbar .screen { padding-top: 8px; }
.tabbar-btn { font-size: 12px; font-weight: 500; letter-spacing: 0; text-transform: none; }
.tabbar-btn.active { font-weight: 600; }
.d-head { top: -8px; }
/* «Диалоги» в новом виде (решение 75). */
.v2-dialogs .v2-title { margin-bottom: 4px; }
.v2-chats .d-item { min-height: 72px; padding: 10px 14px; border-bottom: 1px solid var(--border); }
.v2-chats .d-item:last-child { border-bottom: 0; }
.v2-chats .d-item:active { background: var(--panel2); }
.v2-chats .d-ava { width: 52px; height: 52px; font-size: 20px; }
.v2-chats .d-item.fresh small { color: var(--accent); }
.d-count { flex: none; min-width: 22px; height: 22px; padding: 0 6px; border-radius: 11px; background: var(--accent-fill); color: #fff; font-size: 12px; font-style: normal; font-weight: 700; display: grid; place-items: center; }
.v2-dialogs .lk { width: 76px; }
.v2-dialogs .lk-ava { width: 62px; height: 62px; font-size: 22px; }
.v2-dialogs .lk small { font-size: 14px; max-width: 76px; }
/* Диалог в новом виде (решение 75). */
.d-day { padding: 4px 10px; border-radius: 10px; background: var(--card); }
.d-sys-link { display: block; margin-top: -4px; padding: 10px 12px; border: 0; background: none; color: var(--accent); font-family: inherit; font-size: 14px; cursor: pointer; }
.d-offer { flex-direction: column; align-items: stretch; gap: 10px; padding: 12px 14px; border-color: var(--border-strong); }
.d-offer .s-btn { width: 100%; min-height: 44px; font-size: 15px; }
.d-head .d-ava.big { width: 40px; height: 40px; }
.d-head .d-main b { font-size: 17px; }
.d-field { min-width: 0; }

/* Проверка механик 24.10: неактивная залитая кнопка не должна выглядеть активной,
   галочка «Заблокировать» — как галочка, напоминание о паузе в поиске. */
.s-btn.primary:disabled, .v2-btn.primary:disabled { background: var(--border); color: var(--muted); border-color: transparent; }
.d-opt .box.on, .d-report .box.on { background: var(--accent-fill); border-color: var(--accent-fill); }
.d-opt .box.on::after, .d-report .box.on::after { content: ""; position: absolute; inset: auto; left: 6px; top: 2px; width: 5px; height: 10px;
  border: solid #fff; border-width: 0 2px 2px 0; border-radius: 0; background: none; transform: rotate(45deg); }
.seg span.on { background: var(--accent-fill); border-color: var(--accent-fill); color: #fff; }
.v2-pause { display: block; width: 100%; text-align: left; margin: 10px 0 0; padding: 12px 14px; min-height: 44px;
  border: 1px solid var(--accent); border-radius: 14px; background: none; color: var(--fg); font-size: 14px; font-weight: 500; line-height: 1.35; font-family: inherit; }
/* «Основные вопросы» и «О себе» — карточками как блоки анкеты (24.10). */
.v2-anketa .fold-card { cursor: default; }
.fold-card .block-header { cursor: pointer; }
.fold-card .block-meta { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fold-card .block-info { min-width: 0; flex: 1; }
.fold-card .core-form { margin: 12px 0 0; }
#main .v2-anketa .fold-card .core-form .entry-card { border: 0; padding: 0; background: none; box-shadow: none; }
.fold-card.about-card .about-field { margin-top: 12px; }
.fold-card.about-card .hint { font-size: 13px; }
.v2-anketa .block-toggle { display: inline-flex; align-items: center; justify-content: center; vertical-align: middle; font-family: inherit; font-size: 14px; color: var(--muted); padding: 0; }
#main .v2-anketa .photo-card { padding: 14px; margin-bottom: 10px; }

/* Экран 1.3 «Фильтры» (макет design/_proposals/filters_v2.html, 24.10). */
.f-head { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.f-head .v2-title { margin: 0; flex: 1; }
.f-close { flex: none; background: none; border: 0; padding: 8px 0 8px 12px; min-height: 44px; color: var(--muted); font: inherit; font-size: 15px; cursor: pointer; }
.f-card { display: flex; flex-direction: column; gap: 10px; padding: 14px; }
.f-lbl { margin: 0 0 -2px; font-size: 14px; font-weight: 600; color: var(--muted); }
.f-div { height: 1px; background: var(--border); margin: 4px -14px; }
.f-seg { display: flex; gap: 3px; padding: 3px; border-radius: 12px; background: var(--bg); }
.f-seg > span { flex: 1; min-height: 42px; display: flex; align-items: center; justify-content: center; border-radius: 10px;
  font-size: 15px; color: var(--muted); cursor: pointer; user-select: none; }
.f-seg > span.on { background: var(--accent-fill); color: #fff; font-weight: 600; }
.f-seg.small > span { min-height: 38px; font-size: 14px; }
.f-seg.small > span.on { background: var(--accent-soft); color: var(--fg); box-shadow: inset 0 0 0 1px var(--accent); }
.f-hint { margin: -4px 2px 0; font-size: 13px; color: var(--muted); line-height: 1.35; }
.f-age { display: flex; align-items: center; gap: 10px; }
.v2-filters .s-num { width: 84px; height: 44px; font-size: 17px; border-color: var(--border-strong); background: var(--bg); }
.f-radio { display: flex; flex-direction: column; border: 1px solid var(--border); border-radius: 12px; overflow: hidden; }
.f-radio > span { min-height: 46px; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 0 12px;
  border-bottom: 1px solid var(--border); font-size: 15px; cursor: pointer; user-select: none; }
.f-radio > span:last-child { border-bottom: 0; }
.f-radio i { box-sizing: border-box; width: 20px; height: 20px; border-radius: 50%; border: 2px solid var(--muted); flex: none; }
.f-radio > span.on i { border: 6px solid var(--accent-fill); background: #fff; }
.f-sw { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.f-sw b { display: block; font-size: 16px; }
.f-sw small { display: block; font-size: 13px; color: var(--muted); margin-top: 2px; }
.f-list { display: flex; flex-direction: column; border: 1px solid var(--border); border-radius: 12px; overflow: hidden; }
.f-list.off { opacity: .45; }
.f-li { min-height: 48px; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 0 12px;
  border: 0; border-bottom: 1px solid var(--border); background: none; color: var(--fg); font-family: inherit; font-size: 16px; text-align: left; cursor: pointer; }
.f-li:last-child { border-bottom: 0; }
.f-v { color: var(--muted); font-size: 15px; white-space: nowrap; }
.f-v.on { color: var(--accent); font-weight: 600; }
.f-reset { align-self: flex-start; min-height: 44px; padding: 0 2px; border: 0; background: none; color: var(--muted);
  font-family: inherit; font-size: 14px; cursor: pointer; }
.f-fs { gap: 0; padding-block: 4px; }
.f-fs .s-f { display: flex; flex-direction: column; gap: 10px; padding: 12px 0; border-bottom: 1px solid var(--border); }
.f-fs .s-f:last-child { border-bottom: 0; }
.f-fs .s-flabel { margin: 0; font-size: 15px; font-weight: 600; color: var(--fg); }
.f-fs .s-chip { min-height: 38px; display: inline-flex; align-items: center; font-size: 14px; }
.f-lock { margin-top: 12px; padding: 14px; border-radius: 14px; background: var(--card); border: 1px dashed var(--border-strong);
  display: flex; flex-direction: column; gap: 10px; }
.f-lock p { margin: 0; font-size: 14px; color: var(--muted); line-height: 1.4; }
.f-lock b { color: var(--fg); }
.v2-filters .s-actions.s-stick .v2-btn { flex: 1; }
.v2-filters { flex: 1 0 auto; display: flex; flex-direction: column; margin-bottom: -46px; }
.v2-filters > .s-actions.s-stick { margin-top: auto; }
.f-lock .v2-btn { margin: 0; }
.v2-sum { justify-content: flex-start; }
.v2-sum .v2-sum-t { flex: 1; }
.v2-sum-ic { position: relative; flex: none; width: 40px; height: 40px; display: grid; place-items: center; border-radius: 10px; background: var(--accent-soft); color: var(--accent); }
.v2-sum-ic svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.v2-sum-ic .v2-dot { position: absolute; top: -5px; right: -5px; }
/* Фильтры в виде анкеты (макет filters_v3.html): «Основные» и блоки сворачиваются, как карточки анкеты. */
.v2-filters .f-card { margin-bottom: 10px; }
.f-fold { gap: 10px; }
.f-bh { display: flex; align-items: center; gap: 10px; min-height: 44px; cursor: pointer; user-select: none; }
.f-bi { flex: 1; min-width: 0; }
.f-bn { font-size: 16px; font-weight: 600; }
.f-bm { font-size: 14px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 2px; }
.f-bp { font-size: 14px; font-weight: 600; color: var(--muted); white-space: nowrap; }
.f-bp.on { color: var(--accent); background: var(--accent-soft); padding: 4px 10px; border-radius: 8px; }
.f-ar { width: 24px; text-align: center; font-size: 14px; color: var(--muted); flex: none; }
.v2-filters .f-sw { flex-direction: row; align-items: center; }
.f-blocks.off { opacity: .45; }
.f-fold .f-fs { display: flex; flex-direction: column; border-top: 1px solid var(--border); }
.f-fold .f-fs .s-f { display: flex; flex-direction: column; gap: 10px; padding: 12px 0; border-bottom: 1px solid var(--border); }
.f-fold .f-fs .s-f:last-child { border-bottom: 0; padding-bottom: 2px; }
.f-fold .f-lock { margin-top: 0; background: var(--bg); }
.v2-filters > .v2-hint { margin: 2px 2px 0; }
/* Шапка карточки фильтров — настоящая кнопка, справа «Развернуть ▼ / Свернуть ▲» словами (24.10). */
button.f-bh { width: 100%; padding: 0; border: 0; background: none; color: var(--fg); font-family: inherit; text-align: left; }
.f-bi { display: flex; flex-direction: column; }
.f-tg { flex: none; font-size: 14px; color: var(--muted); white-space: nowrap; }
.f-fold-btn { align-self: stretch; min-height: 44px; border: 0; border-top: 1px solid var(--border); margin: 0 -14px -14px; background: none;
  color: var(--muted); font-family: inherit; font-size: 14px; cursor: pointer; }
.f-fold .f-fs { border-top: 1px solid var(--border); }
/* Блок фильтров — строки как вопросы в анкете, закрытые с замочком (24.10). */
.f-rows { display: flex; flex-direction: column; gap: 6px; }
.v2-filters .block-q { min-height: 48px; padding: 10px 12px; border-radius: 12px; font-size: 15px; }
.v2-filters .block-q-text { color: var(--fg); }
.v2-filters .block-q-answer { font-size: 14px; }
.v2-filters .block-q.open { border-radius: 12px 12px 0 0; box-shadow: inset 0 0 0 1px var(--accent); }
.v2-filters .block-q.f-locked .block-q-text { color: var(--muted); }
.f-lk { font-size: 14px; opacity: .8; }
.f-qbody { margin-top: -6px; padding: 12px; border-radius: 0 0 12px 12px; background: var(--bg); box-shadow: inset 0 0 0 1px var(--accent);
  display: flex; flex-direction: column; gap: 10px; }

/* Фильтр: подпись над вариантами, отступ у галочки */
.f-lead { margin:0; font-size:14px; color:var(--muted); }
.s-chip.on[data-x-chip]::before { margin-right:2px; }

/* Сводка фильтров: «Строго» / «Желательно» — заголовок, строка, метки (вариант A) */
.f-sum { display:flex; flex-direction:column; gap:14px; margin:14px 2px 0; }
.f-sum-row b { display:block; font-size:14px; color:var(--fg); }
.f-sum-row small { display:block; margin:1px 0 6px; font-size:13px; color:var(--muted); }
.f-sum-chips { display:flex; flex-wrap:wrap; gap:6px; }
.f-sum-chips span { font-size:13px; padding:4px 10px; border-radius:999px; background:var(--accent-soft); color:var(--accent); }
.f-sum-chips.soft span { background:transparent; box-shadow:inset 0 0 0 1px var(--border-strong); color:var(--fg); }

/* Согласие и политика (app/legal.js) */
.lg-tabs { margin: 8px 0 14px; }
.lg .s-title { font-size: 20px; line-height: 1.3; }
.lg-body { font-size: 14px; line-height: 1.55; color: var(--fg); }
.lg-body p, .lg-body ol, .lg-body ul { margin: 0 0 12px; }
.lg-body ol, .lg-body ul { padding-left: 20px; }
.lg-body li { margin-bottom: 8px; }
.lg-body h3 { font-size: 16px; margin: 18px 0 8px; }
.lg-meta { color: var(--muted); font-size: 13px; }
.lg-rows { display: flex; flex-direction: column; gap: 8px; margin-bottom: 12px; }
.lg-row { display: flex; flex-direction: column; gap: 2px; padding: 10px 12px; border-radius: 12px; background: var(--card); border: 1px solid var(--border); }
.lg-row span { color: var(--muted); font-size: 13px; }

/* Разбор конкурентов 25.10: просмотренные анкеты, «У вас совпало», «Вы встретились?» */
.s-card.s-seen .s-name, .s-card.s-seen .s-facts { opacity: .62; }
.d-common { margin: 14px auto 6px; max-width: 340px; text-align: center; }
.d-common p { margin: 0 0 2px; font-size: 13px; color: var(--muted); }
.d-common .s-facts { justify-content: center; }
.d-common .s-facts span { font-size: 13px; }
.d-met-btns { display: flex; gap: 8px; }
.d-met-btns .s-btn { flex: 1; }
.v2-self { margin-top: -2px; }

/* Голосовые и фото в переписке (решение 84, макет design/_proposals/voice_exchange.html) */
.d-bar { margin: 0; padding: 8px 0 12px; border-top: 0; align-items: flex-end; }
.d-bar > * { flex: none; }
.d-bar #chatInput { flex: 1; min-width: 0; min-height: 44px; padding: 0 14px; border: 1px solid var(--border-strong); border-radius: 22px;
  background: var(--card); color: var(--fg); font-family: inherit; font-size: 16px; outline: none; }
.d-bar .d-round { width: 44px; height: 44px; }
.d-round svg { width: 20px; height: 20px; }
.d-round svg.fill, .d-play svg.fill { fill: currentColor; stroke: none; }
.d-mic.off { color: var(--muted); }
.d-mic.ring { box-shadow: 0 0 0 2px var(--accent); border-color: var(--accent); }
.d-send2 { background: var(--accent-fill); border-color: var(--accent-fill); color: #fff; }
.d-bar:not(.typing) [data-d-send], .d-bar.typing [data-d-mic] { display: none; }
.d-bar.rec .d-recline { flex: 1; display: flex; align-items: center; gap: 8px; min-width: 0; min-height: 44px; padding: 0 12px;
  border: 1px solid var(--border-strong); border-radius: 22px; }
.d-recline b { font-variant-numeric: tabular-nums; } .d-recline small { color: var(--muted); }
.d-dot { width: 10px; height: 10px; border-radius: 50%; background: #ff6b6b; animation: d-blink 1s infinite; }
@keyframes d-blink { 50% { opacity: .3; } }
.d-rec-mic { background: #ff6b6b; border-color: #ff6b6b; color: #fff; }
.d-voice { display: flex; align-items: center; gap: 10px; min-width: 200px; white-space: normal; }
.d-play { flex: none; width: 34px; height: 34px; border: 0; border-radius: 50%; background: var(--accent-fill); color: #fff;
  display: grid; place-items: center; cursor: pointer; }
.d-msg.mine .d-play { background: rgba(255,255,255,.22); }
.d-play svg { width: 14px; height: 14px; }
.d-wave { flex: 1; display: flex; align-items: center; gap: 2px; height: 26px; }
.d-wave i { display: block; width: 3px; border-radius: 2px; background: currentColor; opacity: .7; }
.d-dur { font-size: 13px; opacity: .85; font-variant-numeric: tabular-nums; }
.d-picmsg { padding: 4px; }
.d-picmsg img { display: block; max-width: 220px; max-height: 280px; border-radius: 12px; cursor: zoom-in; }
.d-picmsg .ph-wait { display: block; width: 200px; height: 150px; border-radius: 12px; }
.d-offer-btns { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.d-offer-btns > :only-child { grid-column: 1 / -1; }
.d-menu .locked b { color: var(--muted); }
.d-lock::before { content: "🔒 "; }
.d-menu-row { display: block; padding: 12px 14px; min-height: 52px; border-bottom: 1px solid var(--border); cursor: pointer; }
.d-menu-row b { display: block; font-size: 16px; } .d-menu-row small { display: block; margin-top: 2px; font-size: 13px; color: var(--muted); }
.d-menu button[disabled] { cursor: default; }

/* Решение 85: «Вам симпатия» карточками и фраза к симпатии (макет design/_proposals/likes_cards.html) */
.v2-dialogs .lk.lk-card { position: relative; width: 236px; flex: none; display: grid; gap: 6px; align-items: start; justify-items: stretch;
  padding: 12px 14px; text-align: left; background: var(--card); border: 1px solid var(--border); border-radius: 14px; }
.v2-dialogs .lk.lk-card.new { border-color: var(--accent); }
.lk-card .lk-top { display: flex; gap: 10px; align-items: center; min-width: 0; }
.v2-dialogs .lk-card .lk-ava { width: 40px; height: 40px; font-size: 16px; flex: none; box-shadow: none; }
.v2-dialogs .lk-card.new .lk-ava { box-shadow: 0 0 0 2px var(--accent); }
.lk-card .lk-who { display: grid; min-width: 0; }
.lk-card .lk-who b { font-size: 16px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.v2-dialogs .lk-card .lk-who small { max-width: none; font-size: 13px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lk-card > .lk-dot { position: absolute; top: 10px; right: 10px; margin: 0; }
.lk-note { font-size: 14px; line-height: 1.35; background: var(--panel2); border-radius: 10px; padding: 7px 10px;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; }
.lk-note.empty { background: none; padding: 0 0 0 2px; color: var(--muted); font-size: 13px; }
.lk-note-field { flex-basis: 100%; display: flex; align-items: center; gap: 8px; border: 1px solid var(--border); background: var(--card);
  border-radius: 12px; padding: 0 12px; }
.lk-note-field input { flex: 1; min-width: 0; border: 0; background: none; color: var(--fg); font: inherit; font-size: 16px; padding: 11px 0; outline: none; }
.lk-note-field input::placeholder { color: var(--muted); }
.lk-note-field:focus-within { border-color: var(--accent); }
.lk-note-field i { font-style: normal; font-size: 12px; color: var(--muted); }
.lk-note-bubble { flex-basis: 100%; margin: 0 0 4px; background: var(--panel2); border-radius: 12px 12px 12px 4px; padding: 9px 12px;
  font-size: 15px; overflow-wrap: anywhere; }
.d-demo-note { color: var(--muted); font-size: 13px; text-align: right; max-width: 120px; }
/* Удалить своё сообщение (владелец 25.10) */
.d-msg.mine[data-d-own] .d-bubble { cursor: pointer; }
/* Меню сообщения: столбик-карточка у пузыря, как в Telegram (владелец 03.11: в строку не влезало на телефоне) */
.d-msg-menu { display: flex; flex-direction: column; align-self: flex-end; width: 200px; max-width: 70%; margin: -2px 0 8px auto; border: 1px solid var(--border); border-radius: 14px; background: var(--card); overflow: hidden; box-shadow: 0 6px 20px rgba(0,0,0,.18); }
.d-msg-menu button { min-height: 44px; padding: 0 16px; border: 0; border-bottom: 1px solid var(--border); border-radius: 0; background: none; color: var(--fg); font: inherit; font-size: 15px; text-align: left; cursor: pointer; }
.d-msg-menu button:last-child { border-bottom: 0; color: var(--muted); }
.d-msg-menu button.bad { color: #e5484d; }
.d-msg-menu.theirs { align-self: flex-start; margin-left: 0; margin-right: auto; }
/* Проверка 25.10: textarea по умолчанию брала моноширинный шрифт браузера; метка «Взаимная симпатия» рвалась на узком экране */
textarea { font: inherit; }
.s-mark { white-space: nowrap; display: inline-block; }
.photo-view::after { content: "×"; position: fixed; top: calc(10px + env(safe-area-inset-top, 0px)); right: 18px; font-size: 34px; line-height: 1; color: #fff; opacity: .8; }
.d-match .d-link { min-height: 44px; padding: 0 20px; }
.photo-card.fold-card { margin-bottom: 14px; }

/* === Шрифты первого экрана и входа — вариант A (макет design/_proposals/fonts_v1.html, владелец 25.10.2026):
   тот же шрифт, крупнее и светлее; второстепенный текст --muted-2; приветствие и вход без общей рамки. === */
.brand-row { gap: 12px; }
.brand-row .logo { width: 40px; height: 40px; font-size: 18px; background: var(--accent-fill); color: #fff; }
.brand-row h1 { font-size: 18px; letter-spacing: 0; }
.brand-sub { font-size: 14px; color: var(--muted-2); }
.w01 { gap: 0; padding: 20px 0 24px; }
.w-title { margin: 26px 0 12px; font-size: 28px; line-height: 1.15; font-weight: 800; letter-spacing: -.01em; }
.w-title span { color: var(--accent); }
.w-sub { margin: 0 0 24px; font-size: 16px; line-height: 1.5; color: var(--muted-2); }
.s-card.w-steps { gap: 18px; padding: 0; margin: 0 0 24px; background: none; border: 0; }
.w-step { gap: 14px; }
.w-step b { width: 32px; height: 32px; font-size: 15px; }
.w-step strong { font-size: 16px; line-height: 1.3; }
.w-step small { margin-top: 3px; font-size: 15px; line-height: 1.45; color: var(--muted-2); }
.w-step.done strong { padding-top: 6px; }
.w-chips { margin: 0 0 22px; }
.w-chips span { font-size: 14px; padding: 7px 13px; border: 0; background: var(--panel2); color: var(--muted-2); }
.w01 .s-btn.primary.wide { min-height: 52px; font-size: 16px; font-weight: 700; border-radius: 16px; }
.w-note { margin: 12px 0 0; font-size: 14px; line-height: 1.4; color: var(--muted-2); }
.entry0 .brand-row { margin-bottom: 22px; }
#main .card.entry-card { padding: 0; background: none; border: 0; margin-bottom: 8px; }
.entry-card .f + .f, .entry-card .sub + .f { margin-top: 22px; }
#main .card.entry-card .q { margin: 0 0 8px; font-size: 16px; font-weight: 600; }
.entry-card .q .opt { font-size: 15px; }
.entry-card .field { min-height: 52px; font-size: 16px; border-radius: 14px; background: var(--card); }
.entry-card .seg { gap: 10px; }
.entry-card .seg span { min-height: 52px; padding: 0 4px; display: flex; align-items: center; justify-content: center; font-size: 16px; border-radius: 14px; }
.entry-card .sub { margin: 8px 0 0; font-size: 14px; color: var(--muted-2); }
.entry-card .geo-chip { display: flex; width: 100%; justify-content: center; min-height: 48px; margin-top: 10px; border-style: dashed; border-radius: 14px; color: var(--accent); font-size: 15px; }
.entry-card .goal { gap: 10px; }
.entry-card .goal .chip { min-height: 52px; padding: 0 16px; font-size: 16px; border-radius: 14px; }
.consent { margin: 14px 0 6px; font-size: 15px; }
.consent .box { width: 24px; height: 24px; border-width: 2px; border-radius: 7px; }
.consent-link { margin: 0 0 14px 34px; font-size: 14px; }
.consent-link a { color: var(--accent); }
.entry0 .cta { min-height: 52px; font-size: 16px; font-weight: 700; border-radius: 16px; }
.entry0 .cta:disabled { background: var(--panel2); }
.entry0 .left { margin-top: 10px; font-size: 14px; color: var(--muted-2); }
/* Логотип «Двое на орбите» (design/logo/) вместо буквы «С»; приветствие на всю высоту — кнопка внизу (владелец 25.10.2026) */
.brand-row img.logo { display: block; width: 48px; height: 48px; border-radius: 50%; background: #0f1218; object-fit: cover; box-shadow: 0 0 0 1px var(--border); }
.w01 { flex: 1 0 auto; }
.w-chips { margin-top: auto; }

/* Свободная высота делится между двумя пружинами (над заголовком и над чипами), без vh: в Telegram vh бывает больше
   видимой части, и подпись внизу обрезалась (владелец 25.10). */
.w-title { margin-top: auto; padding-top: 20px; }
.w-sub { margin-bottom: 20px; }
.s-card.w-steps { gap: 16px; margin-bottom: 20px; }
.w-step small { line-height: 1.4; }
.w-chips { margin-bottom: 18px; }
.w01 { padding-bottom: calc(20px + env(safe-area-inset-bottom, 0px)); }
/* Доводка 0.1 по макету design/_proposals/welcome_polish.html (владелец 25.10.2026): логотип без круга, цифры в кольцах,
   «Без свайпов…» строкой текста, «Начать» без обводки. */
.brand-row svg.logo { display: block; flex: none; width: 52px; height: 52px; color: var(--fg); background: none; border-radius: 0; box-shadow: none; }
.w-step b { width: 30px; height: 30px; background: transparent; border: 2px solid var(--accent); color: var(--accent); box-sizing: border-box; }
.w-step.done b { background: var(--accent-fill); border-color: var(--accent-fill); color: #fff; }
p.w-chips { display: block; margin-left: 0; margin-right: 0; font-size: 15px; color: var(--muted-2); text-align: center; }
.w01 .s-btn.primary.wide { border: 0; }
.w-steps + .s-btn { margin-top: auto; }
/* Экран входа по макету design/_proposals/entry_polish.html (владелец 25.10.2026): свой заголовок, подписи 20,
   «Мужской / Женский» цветом текста, фокус синим, «Что вы ищете?» таблетками; геопозиция — в пунктирной рамке, как была. */
.e-head { margin: 8px 0 26px; }
.e-head h1 { margin: 0; font-size: 28px; line-height: 1.15; font-weight: 800; letter-spacing: -.01em; text-wrap: balance; }
.e-head p { margin: 8px 0 0; font-size: 16px; line-height: 1.4; color: var(--muted-2); }
.entry-card .f + .f, .entry-card .sub + .f { margin-top: 30px; }
#main .card.entry-card .q { margin: 0 0 12px; font-size: 20px; font-weight: 700; letter-spacing: -.01em; }
.entry-card .q .opt { font-size: 16px; font-weight: 400; letter-spacing: 0; color: var(--muted); }
.entry-card .field { border-width: 1.5px; }
.entry-card .field:focus { border-color: var(--accent); box-shadow: 0 0 0 4px var(--accent-soft); outline: none; }
.entry-card .seg span { color: var(--fg); font-size: 17px; border-width: 1.5px; }
.entry-card .goal { flex-direction: row; flex-wrap: wrap; gap: 8px; }
.entry-card .goal .chip { flex: 0 0 auto; min-height: 46px; padding: 0 18px; border-radius: 999px; font-size: 16px; }
.entry-card .seg span.on { color: #fff; }
.entry0 .consent { margin-top: 26px; }
/* Приветствие просторнее (владелец 26.10.2026: «сильно скомпоновано, место есть»): больше межстрочного и отступов
   между шагами; лишняя высота по-прежнему уходит в пружины, на коротких экранах ничего не обрезается. */
.w-title { line-height: 1.25; }
.w-sub { line-height: 1.65; margin-bottom: 32px; }
.s-card.w-steps { gap: 30px; margin-bottom: 28px; }
.w-step strong { line-height: 1.4; }
.w-step small { margin-top: 8px; line-height: 1.65; }

/* Ключ входа (решение 89): 0.1 «У меня уже есть профиль», лист «Вход по ключу», 0.3, 4.5, плашка о входе. */
.kx-have { align-self: center; margin-top: 2px; padding: 8px 12px; border: 0; background: none; color: var(--accent); font-family: inherit; font-size: 15px; font-weight: 600; cursor: pointer; }
.kx-sub { margin: -6px 2px 14px; font-size: 14px; line-height: 1.45; color: var(--muted); }
.kx-card { text-align: center; padding: 18px 16px; }
.kx-qr { width: 200px; height: 200px; margin: 0 auto 12px; padding: 8px; }
.kx-code { font-size: 22px; letter-spacing: 2px; margin: 2px 0 6px; }
.kx-two { display: flex; gap: 10px; margin-top: 12px; }
.kx-two .s-btn { flex: 1; min-height: var(--tap); }
.kx-next { margin-top: 18px; min-height: var(--tap); }
.kx-acts { margin-top: 16px; }
.kx-sheet .kx-lab { display: block; margin: 14px 2px 6px; font-size: 13px; color: var(--muted); }
.kx-input { width: 100%; box-sizing: border-box; padding: 13px 14px; border: 1px solid var(--border-strong); border-radius: 12px; background: var(--card); color: var(--fg);
  font: 600 20px ui-monospace, Menlo, Consolas, monospace; letter-spacing: 2px; text-transform: uppercase; }
.kx-input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--focus); }
.kx-err { margin: 8px 2px 0; font-size: 13px; color: #ff8a8a; line-height: 1.4; }
.kx-notice { display: flex; align-items: flex-start; gap: 10px; margin: 0 0 12px; padding: 12px 14px; border: 1px solid var(--accent); border-radius: 14px; background: var(--accent-soft); font-size: 14px; line-height: 1.45; }
.kx-notice > span { flex: 1; }
.kx-link { padding: 0; border: 0; background: none; color: var(--accent); font: inherit; font-weight: 600; cursor: pointer; }
.kx-x { padding: 0 2px; border: 0; background: none; color: var(--muted); font-size: 15px; cursor: pointer; }
.e-back { margin: 0 0 4px; font-size: 15px; min-height: 44px; }
.kx-pic { cursor: pointer; min-height: var(--tap); box-sizing: border-box; }

/* Галочки «отправлено / прочитано» у своих сообщений */
.d-ticks { width: 15px; height: 11px; margin-left: 3px; vertical-align: -1px; fill: none; stroke: var(--muted); stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.d-ticks.read { stroke: var(--accent); }

/* Перемотка голосового: полоска нажимается и протягивается, пройденное — ярче */
.d-wave { cursor: pointer; touch-action: none; }
.d-wave i { opacity: .45; transition: opacity .1s; }
.d-wave i.on { opacity: 1; }

/* Ответ на сообщение: цитата в пузыре, полоска над полем ввода, свайп влево */
.d-msg { touch-action: pan-y; transition: transform .15s; }
.d-msg.d-swiped .d-bubble { box-shadow: 0 0 0 2px var(--accent); }
.d-msg.d-flash .d-bubble { box-shadow: 0 0 0 3px var(--accent); transition: box-shadow .3s; }
.d-bubble[data-has-rq].d-voice { flex-wrap: wrap; }
.d-rq { display: block; width: 100%; flex: 1 0 100%; margin: 0 0 6px; padding: 4px 8px; border: 0; border-left: 3px solid currentColor;
  border-radius: 6px; background: rgba(127,127,127,.14); color: inherit; font: inherit; text-align: left; cursor: pointer; }
.d-rq b { display: block; font-size: 13px; }
.d-rq span { display: block; font-size: 13px; opacity: .85; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 240px; }
.d-msg.theirs .d-rq { border-left-color: var(--accent); }
.d-bar.has-rq { flex-wrap: wrap; }
.d-bar > .d-rqbar { flex: 1 0 100%; display: flex; align-items: center; gap: 10px; padding: 6px 4px 6px 12px; margin-bottom: 2px;
  border-left: 3px solid var(--accent); border-radius: 8px; background: var(--card); }
.d-rqbar > div { flex: 1; min-width: 0; }
.d-rqbar b { display: block; font-size: 13px; color: var(--accent); }
.d-rqbar span { display: block; font-size: 14px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.d-rqx { width: 36px; height: 36px; flex: none; border: 0; background: none; color: var(--muted); cursor: pointer; }
.d-rqx svg { width: 18px; height: 18px; }
.d-rqx svg { fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }

/* Шапка переписки: фото и имя открывают анкету */
.d-hprof { padding: 0; border: 0; cursor: pointer; font: inherit; }
.d-hname { display: block; padding: 0; border: 0; background: none; color: inherit; font: inherit; text-align: left; cursor: pointer; }

/* Анкета собеседника после обмена фото */
.v2-pphotos { display: flex; gap: 8px; overflow-x: auto; margin: 6px 0 0; }
.v2-pphotos .d-pic-img { flex: none; width: 150px; height: 190px; border-radius: 16px; cursor: zoom-in; }
.v2-pphotos:has(> :only-child) { justify-content: center; }

/* Поле ввода растёт до 5 строк */
.d-bar textarea#chatInput { display: block; resize: none; height: 44px; max-height: 124px; padding: 11px 14px; line-height: 20px; overflow-y: auto; }
/* Стрелка «вниз» над полем ввода */
.d-bar > .d-down { position: absolute; right: 0; bottom: calc(100% + 10px); width: 44px; height: 44px; border-radius: 50%;
  border: 1px solid var(--border); background: var(--card); color: var(--fg); display: grid; place-items: center; cursor: pointer;
  box-shadow: 0 2px 10px rgba(0,0,0,.15); }
.d-bar > .d-down[hidden] { display: none; }
.d-down svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.d-down-n { position: absolute; top: -8px; left: 50%; transform: translateX(-50%); min-width: 20px; height: 20px; padding: 0 6px;
  border-radius: 10px; background: var(--accent); color: #fff; font-size: 12px; font-style: normal; line-height: 20px; text-align: center; }
.d-down-n[hidden] { display: none; }
/* Полоска цитаты не шире экрана: длинный текст обрезается многоточием (владелец 03.11, телефон) */
.d-bar > .d-rqbar { min-width: 0; max-width: 100%; box-sizing: border-box; overflow: hidden; }
.d-rq { min-width: 0; max-width: 100%; box-sizing: border-box; overflow: hidden; }
.d-rq span { max-width: 100%; }

/* === Живое фото и жалоба на фото (решения 90 и 81, макеты design/_proposals/live_photo_v1, trust_v1) === */
.lv-rule { margin-top: 6px; }
.lv-col { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; max-width: 78%; }
.lv-live img { display: block; width: 200px; max-width: 100%; aspect-ratio: 3 / 4; object-fit: cover; border-radius: 14px; cursor: zoom-in; }
.lv-live .ph-wait { display: block; width: 200px; aspect-ratio: 3 / 4; border-radius: 14px; }
.lv-label { margin: 0; font-size: 13px; color: var(--fg); }
.lv-gal { margin: 0; font-size: 12px; color: var(--muted); }
.lv-none { width: 200px; max-width: 100%; padding: 22px 14px; border-radius: 14px; border: 1px solid var(--border); background: var(--panel2); color: var(--muted); font-size: 13px; text-align: center; }
.lv-sheet .lv-check { display: flex; gap: 12px; align-items: flex-start; width: 100%; text-align: left; background: none; border: 0; border-bottom: 1px solid var(--border); padding: 12px 0; color: var(--fg); font: inherit; cursor: pointer; }
.lv-sheet .lv-check.lv-fixed { cursor: default; margin-bottom: 12px; }
.lv-sheet .lv-check b { display: block; }
.lv-sheet .lv-check small { display: block; color: var(--muted); font-size: 13px; margin-top: 2px; }
.lv-box { flex: none; width: 22px; height: 22px; border-radius: 6px; border: 2px solid var(--accent); color: var(--accent); font-size: 14px; line-height: 18px; text-align: center; }
.lv-cam { position: fixed; inset: 0; z-index: 1001; background: #000; color: #fff; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.lv-top { position: absolute; top: calc(10px + env(safe-area-inset-top, 0px)); left: 12px; right: 12px; display: flex; align-items: center; gap: 12px; font-size: 15px; z-index: 2; }
.lv-top button { background: none; border: 0; color: #fff; font-size: 22px; min-width: 44px; min-height: 44px; cursor: pointer; }
.lv-video, .lv-shot { width: 100%; max-height: 70vh; object-fit: cover; }
.lv-video { transform: scaleX(-1); }   /* как в зеркале — привычно для фронтальной камеры; сам снимок не зеркальный */
.lv-frame { position: relative; width: 100%; }
.lv-frame .lv-video { display: block; }
.lv-oval { position: absolute; top: 50%; left: 50%; height: 80%; aspect-ratio: 4 / 5; transform: translate(-50%, -50%); border: 2px dashed rgba(255,255,255,.55); border-radius: 50%; pointer-events: none; }
.lv-hint { margin: 14px 16px 0; color: #ddd; font-size: 13px; text-align: center; }
.lv-shutter { margin-top: 18px; width: 68px; height: 68px; border-radius: 50%; background: #fff; border: 5px solid #888; cursor: pointer; }
.lv-btns { display: flex; gap: 10px; width: 100%; padding: 16px; box-sizing: border-box; }
.lv-btns .s-btn { flex: 1; }
.lv-report { position: fixed; left: 16px; right: 16px; bottom: calc(20px + env(safe-area-inset-bottom, 0px)); min-height: 48px; border-radius: 12px; border: 1px solid rgba(255,255,255,.25); background: rgba(20,20,20,.85); color: #ff8a8a; font: inherit; font-size: 15px; cursor: pointer; }
.lv-col.lv-mine { align-items: flex-end; }
.lv-mine-pic { display: block; }
