gendesign/frontend/public/index.html
lekss361 6d9eddc8e9 chore: refresh preview pages + add tradein landing
Заменяем устаревшие preview-странички (старая landing.html из PR #279) на
новый набор из аудита gendsgn.ru:

- public/analytics.html (44KB)
- public/developers.html (37KB)
- public/index.html (30KB)
- public/landing.html (41KB, replaces PR #279 version)
- public/site-finder.html (31KB)
- public/site-finder-analysis.html (86KB)
- public/tradein.html (85KB) — новая страничка trade-in

Все 7 файлов self-contained HTML (inline assets) → доступны после deploy
по URL https://gendsgn.ru/<filename>.html. Не пересекаются с Next.js
routes (расширение .html — public/ wins).
2026-05-17 15:37:28 +03:00

571 lines
29 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>gendsgn — превью нового сайта</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet" />
<style>
:root {
/* surface */
--bg-app: #F6F7F9;
--bg-card: #FFFFFF;
--bg-card-alt: #FAFBFC;
--bg-headline: #0F172A;
/* borders */
--border-soft: #EEF0F3;
--border-card: #E6E8EC;
--border-strong: #D1D5DB;
/* text */
--fg-primary: #111111;
--fg-secondary: #5B6066;
--fg-tertiary: #73767E;
--fg-on-dark: #E2E8F0;
--fg-on-dark-muted: #94A3B8;
/* brand */
--accent: #1D4ED8;
--accent-hover: #1E40AF;
--accent-soft: #DBEAFE;
--accent-2: #F2994A;
/* semantic */
--success: #0A7A3A;
--success-soft: #DCFCE7;
--warn: #9A6700;
--warn-soft: #FEF3C7;
--danger: #B3261E;
--danger-soft: #FEE2E2;
/* viz */
--viz-1: #1D4ED8;
--viz-2: #0EA5E9;
--viz-3: #14B8A6;
--viz-4: #F59E0B;
--viz-5: #8B5CF6;
font-variant-numeric: tabular-nums;
font-feature-settings: "tnum";
}
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; }
body {
background: var(--bg-app);
color: var(--fg-primary);
font: 14px/1.5 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
font-variant-numeric: tabular-nums;
font-feature-settings: "tnum";
}
a { color: var(--accent); text-decoration: none; }
a:hover { color: var(--accent-hover); }
ul { margin: 0; padding: 0; list-style: none; }
h1, h2, h3, h4 { margin: 0; font-weight: 600; text-align: left; }
/* preview nav (formerly dev-nav) */
.dev-nav {
position: sticky; top: 0; z-index: 100;
display: flex; align-items: center; gap: 18px;
padding: 0 20px; height: 38px;
background: var(--bg-headline); color: #fff;
border-bottom: 1px solid rgba(255,255,255,0.06);
font: 12px/1 'Inter', system-ui, sans-serif;
}
.dev-nav .dev-label {
color: rgba(255,255,255,0.65); letter-spacing: 0.04em; text-transform: uppercase; font-size: 10.5px;
display: inline-flex; align-items: center; gap: 8px;
}
.dev-nav .dev-label::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--accent-2); }
.dev-nav .dev-tabs { display: inline-flex; gap: 2px; align-items: center; }
.dev-nav .dev-tabs a {
padding: 6px 10px; border-radius: 6px;
color: rgba(255,255,255,0.72); font-size: 12px; letter-spacing: 0.01em;
transition: background .15s, color .15s;
}
.dev-nav .dev-tabs a:hover { color: #fff; background: rgba(255,255,255,0.08); }
.dev-nav .dev-tabs a[aria-current="page"] { color: var(--bg-headline); background: var(--accent-2); font-weight: 600; }
@media print { .dev-nav { display: none !important; } }
@media (max-width: 720px) {
.dev-nav { gap: 12px; padding: 0 12px; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.dev-nav .dev-label { display: none; }
}
/* topbar */
.topbar {
background: var(--bg-card);
border-bottom: 1px solid var(--border-card);
}
.topbar-inner {
max-width: 1280px; margin: 0 auto; padding: 16px 24px;
display: flex; align-items: center; justify-content: space-between;
}
.brand { display: inline-flex; align-items: center; gap: 8px; color: var(--fg-primary); font-weight: 700; letter-spacing: -0.01em; font-size: 16px; }
.brand-mark { width: 24px; height: 24px; border-radius: 6px; background: linear-gradient(135deg, var(--accent), #2563EB); display: inline-block; }
.topbar-meta { display: inline-flex; gap: 18px; align-items: center; color: var(--fg-secondary); font-size: 12px; }
.topbar-meta b { color: var(--fg-primary); font-weight: 600; }
.topbar-meta .dot { width: 4px; height: 4px; border-radius: 50%; background: var(--border-strong); display: inline-block; }
/* main layout */
main { max-width: 1280px; margin: 0 auto; padding: 32px 24px 64px; }
.lede { margin-bottom: 28px; max-width: 880px; }
.eyebrow {
display: inline-block;
font: 500 11px/1 'Inter', system-ui, sans-serif;
letter-spacing: 0.06em; text-transform: uppercase;
color: var(--accent); margin-bottom: 12px;
}
h1 { font-size: 30px; line-height: 1.15; letter-spacing: -0.015em; margin-bottom: 12px; }
.deck { font-size: 16px; line-height: 1.55; color: var(--fg-secondary); max-width: 760px; }
.meta {
margin-top: 20px;
display: flex; flex-wrap: wrap; gap: 0;
border: 1px solid var(--border-card); border-radius: 12px;
background: var(--bg-card); overflow: hidden;
}
.meta li {
flex: 1 1 0; min-width: 140px;
padding: 14px 18px;
border-right: 1px solid var(--border-card);
font-size: 12px; color: var(--fg-secondary);
}
.meta li:last-child { border-right: 0; }
.meta li b { display: block; font-size: 18px; font-weight: 600; color: var(--fg-primary); letter-spacing: -0.01em; margin-bottom: 2px; }
/* cards grid */
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
margin-top: 24px;
}
.card {
display: flex; flex-direction: column;
background: var(--bg-card);
border: 1px solid var(--border-card);
border-radius: 12px; overflow: hidden;
color: inherit; transition: border-color .15s, transform .15s, box-shadow .15s;
}
.card:hover { border-color: var(--accent); transform: translateY(-1px); box-shadow: 0 8px 20px -8px rgba(15,23,42,0.08); }
.card:hover .card-link { color: var(--accent-hover); }
.card:hover .card-link::after { transform: translateX(2px); }
.card.featured { grid-column: span 2; }
.card.featured .thumb { height: 220px; }
.thumb {
height: 160px;
border-bottom: 1px solid var(--border-card);
background: var(--bg-card-alt);
position: relative; overflow: hidden;
}
.thumb svg { display: block; width: 100%; height: 100%; }
.card-body { padding: 20px 22px 22px; display: flex; flex-direction: column; flex: 1; }
.card-eyebrow {
display: inline-block; font: 500 10px/1 'Inter', system-ui, sans-serif;
letter-spacing: 0.08em; text-transform: uppercase;
color: var(--fg-tertiary);
margin-bottom: 8px;
}
.card h3 { font-size: 18px; line-height: 1.25; letter-spacing: -0.01em; margin-bottom: 8px; }
.card .card-lede { color: var(--fg-secondary); font-size: 13.5px; line-height: 1.5; flex: 1; }
.card-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.card-tag {
font: 500 10.5px/1 'Inter', system-ui, sans-serif;
letter-spacing: 0.02em; color: var(--fg-secondary);
background: var(--bg-card-alt);
border: 1px solid var(--border-card);
padding: 4px 8px; border-radius: 6px;
}
.card-link {
margin-top: 14px; font-size: 13px; font-weight: 600; color: var(--accent);
display: inline-flex; align-items: center; gap: 6px;
}
.card-link::after { content: '→'; transition: transform .15s; }
/* note */
.note {
margin-top: 28px;
border: 1px solid var(--warn);
background: var(--warn-soft);
border-radius: 12px;
padding: 16px 20px;
display: grid; grid-template-columns: 22px 1fr; gap: 12px; align-items: start;
font-size: 13px; color: var(--fg-primary);
}
.note svg { width: 18px; height: 18px; color: var(--warn); margin-top: 1px; }
.note b { font-weight: 600; }
.note p { margin: 0; }
/* footer */
footer {
max-width: 1280px; margin: 0 auto; padding: 24px;
color: var(--fg-tertiary); font-size: 12px;
border-top: 1px solid var(--border-card);
display: flex; flex-wrap: wrap; gap: 16px; align-items: center; justify-content: space-between;
}
/* thumb illustrations — abstract page hints */
.t-landing { background: linear-gradient(180deg, #FFFFFF 0%, #F6F7F9 100%); }
.t-analytics { background: #FAFBFC; }
.t-developers { background: #FAFBFC; }
.t-sf-landing { background: linear-gradient(180deg, #F6F7F9, #EEF0F3); }
.t-sf-analysis { background: var(--bg-headline); }
@media (max-width: 1100px) {
.grid { grid-template-columns: repeat(2, 1fr); }
.card.featured { grid-column: span 2; }
}
@media (max-width: 640px) {
main { padding: 20px 16px 48px; }
.grid { grid-template-columns: 1fr; gap: 12px; }
.card.featured { grid-column: span 1; }
.card.featured .thumb { height: 160px; }
h1 { font-size: 24px; }
.meta li { flex: 1 1 50%; border-right: 0; border-bottom: 1px solid var(--border-card); }
.meta li:nth-last-child(-n+1) { border-bottom: 0; }
.topbar-inner { padding: 12px 16px; }
.topbar-meta { font-size: 11px; gap: 10px; }
}
</style>
</head>
<body>
<aside class="dev-nav" aria-label="Preview navigation">
<span class="dev-label">Превью · gendsgn</span>
<nav class="dev-tabs" aria-label="Превью страницы">
<a href="index.html" aria-current="page">обзор</a>
<a href="landing.html">лендинг</a>
<a href="analytics.html">/analytics</a>
<a href="developers.html">/developers</a>
<a href="site-finder.html">/site-finder</a>
<a href="site-finder-analysis.html">/site-finder/анализ</a>
</nav>
</aside>
<header class="topbar">
<div class="topbar-inner">
<a href="index.html" class="brand"><span class="brand-mark" aria-hidden="true"></span> gendsgn</a>
<div class="topbar-meta">
<span>обзор макетов</span>
<span class="dot" aria-hidden="true"></span>
<span><b>5</b> экранов</span>
<span class="dot" aria-hidden="true"></span>
<span>UI brief · v1</span>
</div>
</div>
</header>
<main>
<section class="lede">
<span class="eyebrow">Превью нового сайта</span>
<h1>Фасад для пилотных девелоперов</h1>
<p class="deck">Маркетинговый лендинг и четыре продуктовых экрана: рыночная аналитика по Свердловской области, топ-15 девелоперов с velocity-картой, поиск участка по кадастру и детальный анализ с sidebar-навигацией. Сделано по UI brief — Inter, tabular-nums, density-first как DOM.РФ / Bloomberg.</p>
<ul class="meta">
<li><b>5</b>экранов</li>
<li><b>Inter</b>tabular numerics</li>
<li><b>1280 px</b>desktop · до 412 px responsive</li>
<li><b>v1</b>UI brief · черновик</li>
</ul>
</section>
<section class="grid">
<!-- Card 1 — Landing (featured, спанит на 2 колонки) -->
<a class="card featured" href="landing.html">
<div class="thumb t-landing">
<svg viewBox="0 0 720 220" preserveAspectRatio="xMidYMid slice" xmlns="http://www.w3.org/2000/svg">
<!-- top nav -->
<rect x="0" y="0" width="720" height="32" fill="#FFFFFF"/>
<rect x="0" y="31" width="720" height="1" fill="#E6E8EC"/>
<rect x="24" y="11" width="60" height="10" rx="2" fill="#111111"/>
<rect x="540" y="11" width="44" height="10" rx="2" fill="#E6E8EC"/>
<rect x="600" y="11" width="44" height="10" rx="2" fill="#E6E8EC"/>
<rect x="654" y="9" width="48" height="14" rx="3" fill="#1D4ED8"/>
<!-- hero text -->
<rect x="40" y="56" width="60" height="9" rx="2" fill="#F2994A"/>
<rect x="40" y="76" width="380" height="20" rx="2" fill="#0F172A"/>
<rect x="40" y="102" width="320" height="20" rx="2" fill="#0F172A"/>
<rect x="40" y="136" width="280" height="9" rx="2" fill="#73767E"/>
<rect x="40" y="152" width="240" height="9" rx="2" fill="#73767E"/>
<rect x="40" y="180" width="100" height="22" rx="4" fill="#1D4ED8"/>
<rect x="148" y="180" width="80" height="22" rx="4" fill="#FFFFFF" stroke="#E6E8EC"/>
<!-- hero illustration -->
<rect x="460" y="56" width="232" height="146" rx="10" fill="#FFFFFF" stroke="#E6E8EC"/>
<!-- paradox bars -->
<rect x="478" y="78" width="36" height="10" rx="2" fill="#5B6066"/>
<rect x="478" y="94" width="200" height="12" rx="2" fill="#EEF0F3"/>
<rect x="478" y="94" width="84" height="12" rx="2" fill="#5B6066"/>
<rect x="478" y="118" width="36" height="10" rx="2" fill="#0A7A3A"/>
<rect x="478" y="134" width="200" height="12" rx="2" fill="#DCFCE7"/>
<rect x="478" y="134" width="156" height="12" rx="2" fill="#0A7A3A"/>
<rect x="478" y="160" width="160" height="9" rx="2" fill="#E6E8EC"/>
<rect x="478" y="176" width="120" height="9" rx="2" fill="#E6E8EC"/>
</svg>
</div>
<div class="card-body">
<span class="card-eyebrow">Маркетинговый лендинг</span>
<h3>Лендинг для пилотных девелоперов</h3>
<p class="card-lede">Hero «Спрос смещается быстрее, чем ваш портфель», парадокс «что строят / что продают» по 5 сегментам, три продуктовых модуля, прайс 30 тыс ₽/мес с честным дисклеймером pre-revenue, FAQ.</p>
<div class="card-tags">
<span class="card-tag">Hero + parados</span>
<span class="card-tag">3 product cards</span>
<span class="card-tag">Pricing</span>
<span class="card-tag">FAQ</span>
</div>
<span class="card-link">Открыть превью</span>
</div>
</a>
<!-- Card 2 — Analytics -->
<a class="card" href="analytics.html">
<div class="thumb t-analytics">
<svg viewBox="0 0 360 160" preserveAspectRatio="xMidYMid slice" xmlns="http://www.w3.org/2000/svg">
<!-- headline-bar -->
<rect x="16" y="16" width="328" height="22" rx="4" fill="#0F172A"/>
<rect x="24" y="22" width="36" height="10" rx="2" fill="#F2994A"/>
<rect x="68" y="23" width="220" height="8" rx="2" fill="#E2E8F0"/>
<!-- kpi row -->
<rect x="16" y="46" width="78" height="36" rx="6" fill="#FFFFFF" stroke="#E6E8EC"/>
<rect x="98" y="46" width="78" height="36" rx="6" fill="#FFFFFF" stroke="#E6E8EC"/>
<rect x="180" y="46" width="78" height="36" rx="6" fill="#FFFFFF" stroke="#E6E8EC"/>
<rect x="262" y="46" width="82" height="36" rx="6" fill="#FFFFFF" stroke="#E6E8EC"/>
<rect x="20" y="52" width="32" height="5" rx="1" fill="#73767E"/>
<rect x="102" y="52" width="32" height="5" rx="1" fill="#73767E"/>
<rect x="184" y="52" width="32" height="5" rx="1" fill="#73767E"/>
<rect x="266" y="52" width="32" height="5" rx="1" fill="#73767E"/>
<rect x="20" y="62" width="48" height="12" rx="2" fill="#111111"/>
<rect x="102" y="62" width="42" height="12" rx="2" fill="#111111"/>
<rect x="184" y="62" width="44" height="12" rx="2" fill="#111111"/>
<rect x="266" y="62" width="50" height="12" rx="2" fill="#111111"/>
<!-- map -->
<rect x="16" y="90" width="328" height="58" rx="6" fill="#FAFBFC" stroke="#E6E8EC"/>
<path d="M 60 132 Q 120 100 180 116 T 320 122" stroke="#D1D5DB" stroke-width="1" fill="none"/>
<circle cx="80" cy="118" r="5" fill="#B3261E"/>
<circle cx="120" cy="106" r="6" fill="#F59E0B"/>
<circle cx="156" cy="122" r="4" fill="#0EA5E9"/>
<circle cx="190" cy="112" r="7" fill="#1D4ED8"/>
<circle cx="226" cy="118" r="5" fill="#14B8A6"/>
<circle cx="262" cy="108" r="6" fill="#1D4ED8"/>
<circle cx="296" cy="122" r="4" fill="#0EA5E9"/>
<circle cx="328" cy="116" r="5" fill="#B3261E"/>
</svg>
</div>
<div class="card-body">
<span class="card-eyebrow">Продуктовый экран</span>
<h3>/analytics — Свердловский рынок</h3>
<p class="card-lede">Headline-вердикт о дефиците 80+ м², 4 KPI выше fold, карта новостроек по sold %, парадокс портфеля vs реальные сделки, treemap районов.</p>
<div class="card-tags">
<span class="card-tag">Headline-bar</span>
<span class="card-tag">Карта</span>
<span class="card-tag">Treemap</span>
</div>
<span class="card-link">Открыть превью</span>
</div>
</a>
<!-- Card 3 — Developers -->
<a class="card" href="developers.html">
<div class="thumb t-developers">
<svg viewBox="0 0 360 160" preserveAspectRatio="xMidYMid slice" xmlns="http://www.w3.org/2000/svg">
<!-- KPI row -->
<rect x="16" y="16" width="78" height="34" rx="6" fill="#FFFFFF" stroke="#E6E8EC"/>
<rect x="98" y="16" width="78" height="34" rx="6" fill="#FFFFFF" stroke="#E6E8EC"/>
<rect x="180" y="16" width="78" height="34" rx="6" fill="#FFFFFF" stroke="#E6E8EC"/>
<rect x="262" y="16" width="82" height="34" rx="6" fill="#FFFFFF" stroke="#E6E8EC"/>
<rect x="20" y="22" width="30" height="5" rx="1" fill="#73767E"/>
<rect x="20" y="32" width="44" height="11" rx="2" fill="#111111"/>
<rect x="102" y="22" width="32" height="5" rx="1" fill="#73767E"/>
<rect x="102" y="32" width="42" height="11" rx="2" fill="#111111"/>
<rect x="184" y="22" width="28" height="5" rx="1" fill="#73767E"/>
<rect x="184" y="32" width="40" height="11" rx="2" fill="#0A7A3A"/>
<rect x="266" y="22" width="34" height="5" rx="1" fill="#73767E"/>
<rect x="266" y="32" width="48" height="11" rx="2" fill="#111111"/>
<!-- leaderboard table -->
<rect x="16" y="58" width="200" height="90" rx="6" fill="#FFFFFF" stroke="#E6E8EC"/>
<rect x="16" y="58" width="200" height="14" rx="6" fill="#FAFBFC"/>
<line x1="16" y1="72" x2="216" y2="72" stroke="#E6E8EC" stroke-width="1"/>
<line x1="16" y1="90" x2="216" y2="90" stroke="#EEF0F3" stroke-width="1"/>
<line x1="16" y1="108" x2="216" y2="108" stroke="#EEF0F3" stroke-width="1"/>
<line x1="16" y1="126" x2="216" y2="126" stroke="#EEF0F3" stroke-width="1"/>
<rect x="24" y="63" width="42" height="6" rx="1" fill="#73767E"/>
<rect x="120" y="63" width="42" height="6" rx="1" fill="#73767E"/>
<rect x="172" y="63" width="32" height="6" rx="1" fill="#73767E"/>
<rect x="24" y="78" width="64" height="8" rx="1" fill="#111111"/>
<rect x="120" y="79" width="36" height="6" rx="1" fill="#5B6066"/>
<rect x="172" y="79" width="28" height="6" rx="1" fill="#5B6066"/>
<rect x="24" y="96" width="58" height="8" rx="1" fill="#111111"/>
<rect x="120" y="97" width="36" height="6" rx="1" fill="#5B6066"/>
<rect x="172" y="97" width="28" height="6" rx="1" fill="#5B6066"/>
<rect x="24" y="114" width="68" height="8" rx="1" fill="#111111"/>
<rect x="120" y="115" width="36" height="6" rx="1" fill="#5B6066"/>
<rect x="172" y="115" width="28" height="6" rx="1" fill="#5B6066"/>
<rect x="24" y="132" width="54" height="8" rx="1" fill="#111111"/>
<rect x="120" y="133" width="36" height="6" rx="1" fill="#5B6066"/>
<rect x="172" y="133" width="28" height="6" rx="1" fill="#5B6066"/>
<!-- velocity scatter -->
<rect x="222" y="58" width="122" height="90" rx="6" fill="#FFFFFF" stroke="#E6E8EC"/>
<line x1="234" y1="138" x2="334" y2="138" stroke="#D1D5DB" stroke-width="1"/>
<line x1="234" y1="138" x2="234" y2="68" stroke="#D1D5DB" stroke-width="1"/>
<circle cx="248" cy="120" r="3" fill="#5B6066"/>
<circle cx="262" cy="108" r="4" fill="#5B6066"/>
<circle cx="278" cy="98" r="3" fill="#0EA5E9"/>
<circle cx="294" cy="86" r="5" fill="#1D4ED8"/>
<circle cx="306" cy="106" r="3" fill="#F59E0B"/>
<circle cx="318" cy="116" r="4" fill="#5B6066"/>
<circle cx="328" cy="92" r="3" fill="#14B8A6"/>
</svg>
</div>
<div class="card-body">
<span class="card-eyebrow">Продуктовый экран</span>
<h3>/developers — Топ-15 девелоперов</h3>
<p class="card-lede">Search + leaderboard на 15 девелоперов, scatter «Velocity vs объём» с осями (X: тыс м², Y: Δ sold % за 14 мес), сравнение PRINZIP с топ-2 за 14 месяцев.</p>
<div class="card-tags">
<span class="card-tag">Leaderboard</span>
<span class="card-tag">Scatter</span>
<span class="card-tag">Export CSV</span>
</div>
<span class="card-link">Открыть превью</span>
</div>
</a>
<!-- Card 4 — Site Finder Landing -->
<a class="card" href="site-finder.html">
<div class="thumb t-sf-landing">
<svg viewBox="0 0 360 160" preserveAspectRatio="xMidYMid slice" xmlns="http://www.w3.org/2000/svg">
<!-- map background -->
<rect x="0" y="0" width="360" height="160" fill="#F6F7F9"/>
<!-- river -->
<path d="M 0 90 Q 80 60 160 100 T 360 90" stroke="#DBEAFE" stroke-width="14" fill="none"/>
<!-- streets grid -->
<g stroke="#EEF0F3" stroke-width="1">
<line x1="0" y1="40" x2="360" y2="40"/>
<line x1="0" y1="120" x2="360" y2="120"/>
<line x1="80" y1="0" x2="80" y2="160"/>
<line x1="220" y1="0" x2="220" y2="160"/>
<line x1="290" y1="0" x2="290" y2="160"/>
</g>
<!-- input card (floating) -->
<rect x="16" y="16" width="160" height="58" rx="8" fill="#FFFFFF" stroke="#E6E8EC"/>
<rect x="26" y="24" width="42" height="6" rx="1" fill="#73767E"/>
<rect x="26" y="36" width="120" height="20" rx="4" fill="#FAFBFC" stroke="#E6E8EC"/>
<rect x="32" y="42" width="74" height="6" rx="1" fill="#111111"/>
<rect x="26" y="62" width="48" height="8" rx="2" fill="#1D4ED8"/>
<!-- selected parcel highlight -->
<rect x="218" y="92" width="52" height="44" rx="4" fill="#DBEAFE" stroke="#1D4ED8" stroke-dasharray="3 3" stroke-width="1.5"/>
<!-- pins -->
<circle cx="120" cy="60" r="5" fill="#5B6066"/>
<circle cx="170" cy="30" r="5" fill="#0A7A3A"/>
<circle cx="250" cy="50" r="5" fill="#F59E0B"/>
<circle cx="310" cy="80" r="5" fill="#5B6066"/>
<circle cx="200" cy="140" r="5" fill="#B3261E"/>
<circle cx="120" cy="130" r="5" fill="#0EA5E9"/>
<!-- selected card (floating right) -->
<rect x="200" y="16" width="144" height="62" rx="8" fill="#FFFFFF" stroke="#E6E8EC"/>
<rect x="210" y="24" width="44" height="6" rx="1" fill="#F2994A"/>
<rect x="210" y="34" width="90" height="9" rx="2" fill="#111111"/>
<rect x="210" y="50" width="60" height="6" rx="1" fill="#73767E"/>
<rect x="210" y="60" width="40" height="6" rx="1" fill="#73767E"/>
<rect x="278" y="58" width="56" height="14" rx="3" fill="#1D4ED8"/>
</svg>
</div>
<div class="card-body">
<span class="card-eyebrow">Site Finder · Screen 1</span>
<h3>/site-finder — карта-first entry</h3>
<p class="card-lede">Полноэкранная SVG-карта Екатеринбурга, поле кадастра с примером формата, недавние участки, sticky-карточка выбранного парцела с 7 параметрами и кнопками «Карточка ЕГРН» + «Анализ».</p>
<div class="card-tags">
<span class="card-tag">Карта-first</span>
<span class="card-tag">Кадастр</span>
</div>
<span class="card-link">Открыть превью</span>
</div>
</a>
<!-- Card 5 — Site Finder Analysis -->
<a class="card" href="site-finder-analysis.html">
<div class="thumb t-sf-analysis">
<svg viewBox="0 0 360 160" preserveAspectRatio="xMidYMid slice" xmlns="http://www.w3.org/2000/svg">
<!-- top bar -->
<rect x="0" y="0" width="360" height="22" fill="#0F172A"/>
<rect x="12" y="8" width="44" height="7" rx="1" fill="#94A3B8"/>
<rect x="68" y="8" width="120" height="7" rx="1" fill="#E2E8F0"/>
<!-- sidebar -->
<rect x="0" y="22" width="92" height="138" fill="#FFFFFF"/>
<line x1="92" y1="22" x2="92" y2="160" stroke="#E6E8EC"/>
<rect x="10" y="34" width="20" height="6" rx="1" fill="#5B6066"/>
<!-- 5 sidebar items, item 3 active -->
<rect x="8" y="48" width="76" height="14" rx="4" fill="#FAFBFC"/>
<circle cx="14" cy="55" r="2" fill="#73767E"/>
<rect x="22" y="52" width="52" height="6" rx="1" fill="#5B6066"/>
<rect x="8" y="64" width="76" height="14" rx="4" fill="#FAFBFC"/>
<circle cx="14" cy="71" r="2" fill="#73767E"/>
<rect x="22" y="68" width="46" height="6" rx="1" fill="#5B6066"/>
<rect x="8" y="80" width="76" height="14" rx="4" fill="#DBEAFE"/>
<circle cx="14" cy="87" r="2" fill="#1D4ED8"/>
<rect x="22" y="84" width="56" height="6" rx="1" fill="#1D4ED8"/>
<rect x="8" y="96" width="76" height="14" rx="4" fill="#FAFBFC"/>
<circle cx="14" cy="103" r="2" fill="#73767E"/>
<rect x="22" y="100" width="48" height="6" rx="1" fill="#5B6066"/>
<rect x="8" y="112" width="76" height="14" rx="4" fill="#FAFBFC"/>
<circle cx="14" cy="119" r="2" fill="#73767E"/>
<rect x="22" y="116" width="50" height="6" rx="1" fill="#5B6066"/>
<!-- main pane -->
<rect x="92" y="22" width="268" height="138" fill="#F6F7F9"/>
<!-- headline -->
<rect x="104" y="34" width="244" height="22" rx="4" fill="#0F172A"/>
<rect x="112" y="40" width="32" height="10" rx="2" fill="#F2994A"/>
<rect x="150" y="41" width="148" height="8" rx="2" fill="#E2E8F0"/>
<!-- 4 settings -->
<rect x="104" y="62" width="58" height="16" rx="4" fill="#FFFFFF" stroke="#E6E8EC"/>
<rect x="166" y="62" width="58" height="16" rx="4" fill="#FFFFFF" stroke="#E6E8EC"/>
<rect x="228" y="62" width="58" height="16" rx="4" fill="#FFFFFF" stroke="#E6E8EC"/>
<rect x="290" y="62" width="58" height="16" rx="4" fill="#FFFFFF" stroke="#E6E8EC"/>
<!-- planning previews -->
<rect x="104" y="86" width="58" height="40" rx="4" fill="#FFFFFF" stroke="#E6E8EC"/>
<rect x="110" y="92" width="46" height="20" rx="2" fill="#FAFBFC"/>
<rect x="166" y="86" width="58" height="40" rx="4" fill="#FFFFFF" stroke="#1D4ED8"/>
<rect x="172" y="92" width="46" height="20" rx="2" fill="#DBEAFE"/>
<rect x="228" y="86" width="58" height="40" rx="4" fill="#FFFFFF" stroke="#E6E8EC"/>
<rect x="234" y="92" width="46" height="20" rx="2" fill="#FAFBFC"/>
<rect x="290" y="86" width="58" height="40" rx="4" fill="#FFFFFF" stroke="#E6E8EC"/>
<rect x="296" y="92" width="46" height="20" rx="2" fill="#FAFBFC"/>
<!-- recommendation bar -->
<rect x="104" y="132" width="244" height="20" rx="4" fill="#0F172A"/>
<rect x="112" y="138" width="120" height="8" rx="2" fill="#E2E8F0"/>
<rect x="284" y="135" width="58" height="14" rx="3" fill="#F2994A"/>
</svg>
</div>
<div class="card-body">
<span class="card-eyebrow">Site Finder · Screen 2&nbsp;+&nbsp;3</span>
<h3>/site-finder/анализ — sidebar на 5 разделов</h3>
<p class="card-lede">Sidebar: Инфо / Сети 11,5 км / Продажи конкурентов (3.1/3.2/3.3) / Оценка / Атмосфера. Раздел 3 — 8-секционный модуль с 4 настройками и 4 выводами (планировки с превью, остатки, ассортимент vs скорость, рекомендация).</p>
<div class="card-tags">
<span class="card-tag">Sidebar nav</span>
<span class="card-tag">8-секц. модуль</span>
<span class="card-tag">JS pane-switch</span>
</div>
<span class="card-link">Открыть превью</span>
</div>
</a>
</section>
<aside class="note" role="note">
<svg viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/>
<line x1="12" y1="9" x2="12" y2="13"/>
<line x1="12" y1="17" x2="12.01" y2="17"/>
</svg>
<p><b>Все цифры — иллюстративные.</b> KPI, имена девелоперов, цены м², проценты sold, координаты пинов и кадастровые номера синтезированы под Свердловскую область для презентации макетов. Реальные fixtures из DOM.РФ / Rosreestr / Yandex Realty подключаются на этапе интеграции с продакшн-API.</p>
</aside>
</main>
<footer>
<span>gendsgn · превью v1 · собрано из UI brief</span>
<span>5 экранов · Inter + tabular-nums · brief HEX-палитра</span>
</footer>
</body>
</html>