diff --git a/tradein-mvp/frontend/src/components/trade-in/v2/LocationDrawer.tsx b/tradein-mvp/frontend/src/components/trade-in/v2/LocationDrawer.tsx
index 01c3919c..5478a83b 100644
--- a/tradein-mvp/frontend/src/components/trade-in/v2/LocationDrawer.tsx
+++ b/tradein-mvp/frontend/src/components/trade-in/v2/LocationDrawer.tsx
@@ -271,7 +271,7 @@ export function LocationDrawer({ open, onClose }: LocationDrawerProps) {
color: tokens.body2,
}}
>
- Агрегируем объявления (Циан, Я.Недвижимость, Авито, N1.ru) и сделки
+ Агрегируем объявления (Циан, Я.Недвижимость, Авито, Домклик) и сделки
Росреестра по сопоставимым квартирам. Медиана{" "}
₽/м² → 3 оценки:{" "}
diff --git a/tradein-mvp/frontend/src/components/trade-in/v2/mappers.ts b/tradein-mvp/frontend/src/components/trade-in/v2/mappers.ts
index 8d251a19..d520ed2b 100644
--- a/tradein-mvp/frontend/src/components/trade-in/v2/mappers.ts
+++ b/tradein-mvp/frontend/src/components/trade-in/v2/mappers.ts
@@ -68,8 +68,8 @@ import type {
} from "./types";
import { tokens } from "./tokens";
-// Total number of source slots in the design (ЦИАН … N1.RU) — meta "N / 7".
-const TOTAL_SOURCES = 7;
+// Total number of source slots — meta "N / M". Single source of truth is
+// SOURCE_SLOTS.length (defined with the array below as TOTAL_SOURCES).
// ── Composite presentation shapes consumed by the wired components ──────────
// One `data` prop per component; each field keeps its exact ./types shape.
@@ -479,9 +479,11 @@ const SOURCE_SLOTS: ReadonlyArray<{ name: string; keys: string[] }> = [
{ name: "РОСРЕЕСТР", keys: ["rosreestr"] },
{ name: "АВИТО", keys: ["avito", "avito_imv"] },
{ name: "ДОМКЛИК", keys: ["domklik", "domclick"] },
- { name: "RESTATE", keys: ["restate"] },
- { name: "N1.RU", keys: ["n1", "n1ru"] },
];
+// #2081 round2: N1.RU + RESTATE dropped — мёртвые (всегда «нет данных», не
+// учитываем); Домклик оставлен (живой источник, реально даёт лоты). TOTAL_SOURCES
+// = единый счётчик «N / M», чтобы плитки, счётчик и текст не расходились.
+const TOTAL_SOURCES = SOURCE_SLOTS.length;
function buildSources(e: AggregatedEstimate): SourceCard[] {
const counts = new Map();
diff --git a/tradein-mvp/frontend/src/components/trade-in/v2/tokens.ts b/tradein-mvp/frontend/src/components/trade-in/v2/tokens.ts
index f937aee4..ab75bc9b 100644
--- a/tradein-mvp/frontend/src/components/trade-in/v2/tokens.ts
+++ b/tradein-mvp/frontend/src/components/trade-in/v2/tokens.ts
@@ -78,8 +78,8 @@ export const tokens = {
// Disabled / no-data source card (02 RESULT · inactive source tile, design lines 366-384)
disabledBorder: "#d8e2ec", // inactive source card edge
- disabledValue: "#c2cdd9", // greyed-out "—" count value
- disabledLabel: "#aab7c5", // greyed-out "нет данных" caption
+ disabledValue: "#656b71", // 4.61:1 — "—" no-data value (#2081 C1: was #c2cdd9 1.4:1)
+ disabledLabel: "#636b73", // 4.62:1 — "нет данных" caption (#2081 C1: was #aab7c5 1.7:1)
// Accent glow (range-marker dot halo, design lines 303/341)
accentGlow: "rgba(46,139,255,.5)",