diff --git a/frontend/src/components/site-finder/analysis/Section3SettingsAndCompetitors.tsx b/frontend/src/components/site-finder/analysis/Section3SettingsAndCompetitors.tsx index 151341ef..4390e44b 100644 --- a/frontend/src/components/site-finder/analysis/Section3SettingsAndCompetitors.tsx +++ b/frontend/src/components/site-finder/analysis/Section3SettingsAndCompetitors.tsx @@ -384,7 +384,10 @@ function buildVerdict(data: ParcelAnalysis): string | null { } if (parts.length === 0) return null; - return `${parts.join("; ")}.`; + // Точку в конце добавляем только если последняя часть ею не кончается — + // иначе «…цены за период +1,3 п.п.» + «.» = «п.п..» (двойная точка). + const sentence = parts.join("; "); + return sentence.endsWith(".") ? sentence : `${sentence}.`; } function Section33MarketSales({ data }: { data: ParcelAnalysis }) { @@ -456,6 +459,11 @@ function Section33MarketSales({ data }: { data: ParcelAnalysis }) { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(280px, 1fr))", gap: 16, + // alignItems: start — иначе grid растягивает короткие колонки + // (Темп продаж / Динамика цен) до высоты самой высокой (Будущее + // предложение) → пустота под карточками («уплыло»). С start каждая + // колонка по своей высоте, выровнены по верху. + alignItems: "start", }} > {hasVelocity && (