Files
AR 15 M4 25552690c6 Add app roadmap and strategy pages; link from Tweaks
- public/roadmap.html — карта развития приложения по фазам (0/1/1.5/2)
- public/strategy.html — полный текст концепции развития (встреча 23 апр 2026)
- Tweaks panel: секция «Документы» со ссылкой на карту развития
- Roadmap: кнопка «Концепция развития» ведёт на strategy.html

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 19:59:00 +05:00

1480 lines
71 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.0">
<title>Карта приложения — Клиника Оленевой</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=PT+Sans:wght@400;700&family=PT+Sans+Narrow:wght@400;700&display=swap" rel="stylesheet">
<style>
:root {
--teal: #166B63;
--teal-dark: #0F4A44;
--teal-50: #E3F4F2;
--teal-100: #C7E8E4;
--teal-200: #9BD6CE;
--warm-50: #FDF8EE;
--warm-100: #F5EDDF;
--warm-200: #E8DCC5;
--accent: #E04E44;
--fg-1: #1F2A37;
--fg-2: #3E4C5D;
--fg-3: #5A6B7B;
--fg-4: #8596A8;
--border: #E4EAF2;
--border-soft: #EEF2F7;
/* phase tints */
--p0: #6B7A8C; /* существует */
--p0bg: #F0F3F7;
--p1: #166B63; /* фаза 1 */
--p1bg: #E3F4F2;
--p15: #C77A4C; /* фаза 1.5 */
--p15bg:#FBEFE4;
--p2A: #2E9B6B; /* группа A */
--p2Abg:#E4F4EC;
--p2B: #3C6EA8; /* группа B */
--p2Bbg:#E4EDF8;
--p2C: #B63D35; /* группа C */
--p2Cbg:#FBE4E4;
--p2D: #8B5BA9; /* группа D */
--p2Dbg:#F1E7F8;
--skip: #B0BAC7;
--skipbg:#F4F6FA;
--font-sans: 'PT Sans', system-ui, sans-serif;
--font-display: 'PT Sans Narrow', 'PT Sans', system-ui, sans-serif;
}
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
font-family: var(--font-sans);
color: var(--fg-1);
background:
radial-gradient(1200px 600px at 0% 0%, var(--warm-100) 0%, transparent 55%),
radial-gradient(1000px 500px at 100% 100%, var(--teal-50) 0%, transparent 50%),
#F7F9FC;
min-height: 100vh;
-webkit-font-smoothing: antialiased;
}
.wrap {
max-width: 1480px;
margin: 0 auto;
padding: 32px 32px 60px;
}
/* ---------- Top bar ---------- */
.topbar {
display: flex;
align-items: flex-end;
justify-content: space-between;
gap: 24px;
margin-bottom: 28px;
}
.topbar h1 {
font-family: var(--font-display);
font-weight: 700;
font-size: 56px;
line-height: 1;
margin: 0 0 6px;
letter-spacing: -0.5px;
}
.topbar .lede {
font-size: 16px;
color: var(--fg-3);
max-width: 640px;
line-height: 1.5;
}
.topbar .meta {
text-align: right;
font-size: 12px;
color: var(--fg-4);
line-height: 1.6;
}
.topbar .meta b { color: var(--fg-2); display: block; font-weight: 700; font-size: 13px; }
.topbar .meta a {
display: inline-flex; align-items: center; gap: 6px;
margin-top: 8px;
padding: 8px 14px;
background: var(--teal);
color: #fff;
text-decoration: none;
border-radius: 999px;
font-size: 13px;
font-weight: 700;
}
.topbar .meta a:hover { background: var(--teal-dark); }
/* ---------- Legend ---------- */
.legend {
display: flex;
flex-wrap: wrap;
gap: 8px;
background: #fff;
border: 1px solid var(--border);
border-radius: 14px;
padding: 12px 14px;
margin-bottom: 32px;
font-size: 12.5px;
}
.legend-item {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 5px 10px 5px 6px;
border-radius: 999px;
font-weight: 600;
}
.legend-item .dot {
width: 9px; height: 9px; border-radius: 999px; display: inline-block;
}
.legend-item .num {
font-family: var(--font-display);
font-weight: 700;
font-size: 15px;
margin-right: 2px;
width: 18px; height: 18px;
display: inline-flex; align-items: center; justify-content: center;
border-radius: 999px;
background: rgba(255,255,255,0.6);
color: inherit;
}
/* ---------- Phase rows ---------- */
.phase {
margin-bottom: 28px;
background: #fff;
border-radius: 22px;
border: 1px solid var(--border);
overflow: hidden;
}
.phase-head {
display: flex;
align-items: center;
gap: 16px;
padding: 18px 22px 14px;
border-bottom: 1px solid var(--border-soft);
}
.phase-num {
font-family: var(--font-display);
font-weight: 700;
font-size: 32px;
width: 56px;
height: 56px;
border-radius: 16px;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
letter-spacing: -1px;
}
.phase-title {
font-size: 22px;
font-weight: 700;
margin: 0 0 2px;
}
.phase-sub {
font-size: 13px;
color: var(--fg-3);
margin: 0;
max-width: 720px;
line-height: 1.45;
}
.phase-aside {
margin-left: auto;
display: flex;
gap: 22px;
text-align: right;
flex-shrink: 0;
}
.phase-aside .stat {
font-size: 11px;
color: var(--fg-4);
text-transform: uppercase;
letter-spacing: .6px;
font-weight: 700;
}
.phase-aside .stat-v {
font-family: var(--font-display);
font-size: 24px;
font-weight: 700;
color: var(--fg-1);
letter-spacing: -.5px;
margin-top: 2px;
}
.phase-body {
padding: 18px 22px 22px;
}
/* Group within phase 2 */
.group {
margin-bottom: 18px;
}
.group:last-child { margin-bottom: 0; }
.group-head {
display: flex;
align-items: baseline;
gap: 10px;
margin-bottom: 10px;
}
.group-letter {
font-family: var(--font-display);
font-weight: 700;
font-size: 20px;
width: 28px; height: 28px;
display: inline-flex; align-items: center; justify-content: center;
border-radius: 8px;
color: #fff;
}
.group-name {
font-size: 15px;
font-weight: 700;
color: var(--fg-1);
}
.group-meta {
font-size: 12px;
color: var(--fg-4);
margin-left: auto;
}
/* Cards grid */
.cards {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(232px, 1fr));
gap: 12px;
}
.card {
background: #fff;
border: 1px solid var(--border);
border-radius: 14px;
padding: 0;
overflow: hidden;
transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
cursor: pointer;
text-decoration: none;
color: inherit;
display: flex;
flex-direction: column;
}
.card:hover {
transform: translateY(-2px);
box-shadow: 0 12px 30px rgba(15,30,40,.10);
border-color: var(--teal-200);
}
.card-existing { background: #fff; }
.card-future { background: #FCFDFE; border-style: dashed; }
.card-skip { opacity: .55; cursor: default; }
.card-skip:hover { transform: none; box-shadow: none; border-color: var(--border); }
/* mini phone preview */
.mini {
position: relative;
height: 150px;
margin: 10px 10px 0;
border-radius: 12px;
overflow: hidden;
background: #F7F9FC;
border: 1px solid var(--border-soft);
}
.mini-future {
background: repeating-linear-gradient(45deg, #FAFBFD, #FAFBFD 8px, #F2F5F9 8px, #F2F5F9 16px);
}
.mini .mini-status {
height: 14px;
background: rgba(0,0,0,0.04);
}
.mini .mini-content {
padding: 8px 10px;
display: flex;
flex-direction: column;
gap: 4px;
}
.mini .mini-bar {
height: 6px;
border-radius: 3px;
background: #E4EAF2;
}
.mini .mini-bar.solid { background: var(--teal); }
.mini .mini-bar.warm { background: var(--warm-200); }
.mini .mini-bar.short { width: 60%; }
.mini .mini-bar.med { width: 80%; }
.mini-title {
position: absolute;
bottom: 8px; left: 10px; right: 10px;
font-family: var(--font-display);
font-weight: 700;
font-size: 18px;
color: var(--fg-1);
line-height: 1.1;
letter-spacing: -.3px;
text-shadow: 0 1px 0 rgba(255,255,255,.5);
}
.mini-future .mini-title { color: var(--fg-3); }
.card-body {
padding: 12px 14px 14px;
}
.card-name {
font-size: 14px;
font-weight: 700;
margin: 0 0 4px;
line-height: 1.25;
}
.card-desc {
font-size: 12px;
color: var(--fg-3);
line-height: 1.45;
margin: 0 0 8px;
}
.card-tags {
display: flex;
flex-wrap: wrap;
gap: 4px;
}
.tag {
font-size: 10.5px;
padding: 2px 7px;
border-radius: 999px;
background: var(--p0bg);
color: var(--p0);
font-weight: 700;
text-transform: uppercase;
letter-spacing: .3px;
}
.tag.live { background: var(--p0bg); color: var(--p0); }
.tag.p1 { background: var(--p1bg); color: var(--p1); }
.tag.p15 { background: var(--p15bg); color: var(--p15); }
.tag.a { background: var(--p2Abg); color: var(--p2A); }
.tag.b { background: var(--p2Bbg); color: var(--p2B); }
.tag.c { background: var(--p2Cbg); color: var(--p2C); }
.tag.d { background: var(--p2Dbg); color: var(--p2D); }
.tag.skip { background: var(--skipbg);color: var(--skip); }
/* Card status corner */
.card-status {
position: absolute;
top: 8px; right: 8px;
font-size: 10px;
font-weight: 700;
padding: 3px 8px;
border-radius: 999px;
background: rgba(255,255,255,0.92);
backdrop-filter: blur(4px);
box-shadow: 0 1px 3px rgba(0,0,0,.06);
text-transform: uppercase;
letter-spacing: .4px;
}
/* Segments table */
.segments {
margin-top: 36px;
background: #fff;
border: 1px solid var(--border);
border-radius: 22px;
overflow: hidden;
}
.seg-head {
padding: 18px 22px 14px;
border-bottom: 1px solid var(--border-soft);
}
.seg-head h2 {
font-family: var(--font-display);
font-size: 28px;
margin: 0 0 4px;
font-weight: 700;
letter-spacing: -.5px;
}
.seg-head p {
font-size: 13px;
color: var(--fg-3);
margin: 0;
max-width: 720px;
line-height: 1.5;
}
.seg-table {
width: 100%;
border-collapse: collapse;
font-size: 13px;
}
.seg-table th {
text-align: left;
padding: 12px 18px;
background: var(--border-soft);
font-size: 11px;
text-transform: uppercase;
letter-spacing: .5px;
color: var(--fg-4);
font-weight: 700;
border-bottom: 1px solid var(--border);
}
.seg-table th:first-child { padding-left: 22px; }
.seg-table th:last-child { padding-right: 22px; text-align: right; }
.seg-table td {
padding: 12px 18px;
border-bottom: 1px solid var(--border-soft);
vertical-align: top;
}
.seg-table td:first-child { padding-left: 22px; }
.seg-table td:last-child { padding-right: 22px; text-align: right; }
.seg-table tr:last-child td { border-bottom: 0; }
.seg-num {
font-family: var(--font-display);
font-weight: 700;
font-size: 16px;
color: var(--fg-3);
width: 28px;
display: inline-block;
}
.seg-name { font-weight: 700; color: var(--fg-1); }
.seg-rev {
font-family: var(--font-display);
font-weight: 700;
font-size: 17px;
color: var(--teal);
}
.seg-job { color: var(--fg-3); font-size: 12.5px; }
.prio {
display: inline-flex;
align-items: center;
gap: 6px;
font-weight: 700;
font-size: 12px;
padding: 4px 10px;
border-radius: 999px;
}
.prio.high { background: var(--teal-50); color: var(--teal-dark); }
.prio.mid { background: var(--warm-100); color: #8B6334; }
.prio.low { background: var(--skipbg); color: var(--skip); }
/* Phase 2 grid: groups side by side */
.groups-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(440px, 1fr));
gap: 18px;
}
.group-block {
border: 1px solid var(--border);
border-radius: 16px;
padding: 14px 16px;
background: #FCFDFE;
}
/* Footnotes */
.foot {
margin-top: 32px;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 14px;
}
.foot-card {
background: #fff;
border: 1px solid var(--border);
border-radius: 14px;
padding: 14px 16px;
}
.foot-card .ti {
font-size: 11px;
font-weight: 700;
color: var(--fg-4);
text-transform: uppercase;
letter-spacing: .5px;
margin-bottom: 6px;
}
.foot-card .vl {
font-family: var(--font-display);
font-weight: 700;
font-size: 22px;
letter-spacing: -.4px;
margin-bottom: 4px;
}
.foot-card .ds {
font-size: 12px;
color: var(--fg-3);
line-height: 1.5;
}
/* ---------- Compact mini icon variants ---------- */
.mi-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 6px; padding: 12px 10px 0; }
.mi-tile { aspect-ratio: 1; border-radius: 8px; background: var(--teal-50); }
.mi-tile.warm { background: var(--warm-100); }
.mi-tile.med { background: var(--teal-100); }
.mi-list { padding: 12px 10px 0; display: flex; flex-direction: column; gap: 5px; }
.mi-list-row { height: 22px; border-radius: 6px; background: #F0F3F7; display: flex; align-items: center; gap: 6px; padding: 0 8px; }
.mi-list-row .av { width: 14px; height: 14px; border-radius: 999px; background: var(--teal-100); flex-shrink: 0; }
.mi-list-row .ln { flex: 1; height: 4px; background: #DCE2EA; border-radius: 2px; }
.mi-meds { padding: 12px 10px 0; display: flex; flex-direction: column; gap: 6px; }
.mi-pill-row { display: flex; align-items: center; gap: 6px; padding: 4px 6px; background: var(--warm-100); border-radius: 8px; }
.mi-pill { width: 14px; height: 14px; border-radius: 4px; background: var(--accent); flex-shrink: 0; }
.mi-pill.b { background: var(--teal); }
.mi-pill.c { background: #C77A4C; }
.mi-pill-row .ln { flex: 1; height: 3px; background: rgba(0,0,0,.1); border-radius: 2px; }
.mi-chart { padding: 12px 10px 0; }
.mi-chart svg { width: 100%; display: block; }
.mi-chat { padding: 12px 10px 0; display: flex; flex-direction: column; gap: 4px; }
.mi-bubble { max-width: 80%; height: 8px; border-radius: 4px 4px 4px 1px; background: #fff; border: 1px solid var(--border); }
.mi-bubble.me { align-self: flex-end; background: var(--teal); border: 0; border-radius: 4px 4px 1px 4px; }
.mi-bubble.ai { background: linear-gradient(90deg, var(--p15), var(--p15bg)); border: 0; }
.mi-cal {
padding: 12px 10px 0;
display: grid;
grid-template-columns: repeat(7,1fr);
gap: 3px;
}
.mi-cal-d { aspect-ratio: 1; border-radius: 4px; background: #F0F3F7; }
.mi-cal-d.on { background: var(--teal); }
.mi-cal-d.miss { background: var(--accent); opacity: .5; }
.mi-cal-d.today { background: var(--warm-200); }
/* dependency arrow row */
.deps {
margin-top: 18px;
padding: 14px 16px;
border-radius: 12px;
background: var(--warm-50);
border: 1px dashed var(--warm-200);
font-size: 12.5px;
color: var(--fg-2);
line-height: 1.5;
}
.deps b { color: var(--teal-dark); }
.deps .arrow { color: var(--p15); font-weight: 700; }
</style>
</head>
<body>
<div class="wrap">
<div class="topbar">
<div>
<h1>Карта развития приложения</h1>
<div class="lede">
Все экраны прототипа разложены по фазам стратегии 23 апр 2026. Видно — что работает сегодня, что добавляем в Фазу 1, что строим под сегменты в Фазе 2.
</div>
</div>
<div class="meta">
<b>Клиника Оленевой · Мобильное приложение</b>
Стратегия от 23 апр 2026 · версия 1
<br>
<a href="index.html">↗ Открыть прототип</a>
<a href="/strategy.html" style="margin-top: 6px; background: var(--teal-50); color: var(--teal-dark); border: 1px solid var(--teal-100);">📋 Концепция развития</a>
</div>
</div>
<div class="legend">
<span class="legend-item" style="background: var(--p0bg); color: var(--p0);">
<span class="num" style="background: var(--p0); color: #fff;">0</span>
Сейчас в прототипе
</span>
<span class="legend-item" style="background: var(--p1bg); color: var(--p1);">
<span class="num" style="background: var(--p1); color: #fff;">1</span>
Фаза 1 · Транзакционная база
</span>
<span class="legend-item" style="background: var(--p15bg); color: var(--p15);">
<span class="num" style="background: var(--p15); color: #fff;">1.5</span>
Фаза 1.5 · Коммуникация
</span>
<span class="legend-item" style="background: var(--p2Abg); color: var(--p2A);">
<span class="num" style="background: var(--p2A); color: #fff;">A</span>
Самопомощь хроников
</span>
<span class="legend-item" style="background: var(--p2Cbg); color: var(--p2C);">
<span class="num" style="background: var(--p2C); color: #fff;">C</span>
Пред-оп подготовка
</span>
<span class="legend-item" style="background: var(--p2Bbg); color: var(--p2B);">
<span class="num" style="background: var(--p2B); color: #fff;">B</span>
Сурдология
</span>
<span class="legend-item" style="background: var(--p2Dbg); color: var(--p2D);">
<span class="num" style="background: var(--p2D); color: #fff;">D</span>
АСИТ + астма
</span>
<span class="legend-item" style="background: var(--skipbg); color: var(--skip);">
<span class="num" style="background: var(--skip); color: #fff;"></span>
Не делаем
</span>
</div>
<!-- ============== Phase 0: Сейчас в прототипе ============== -->
<div class="phase">
<div class="phase-head">
<div class="phase-num" style="background: var(--p0bg); color: var(--p0);">0</div>
<div>
<h2 class="phase-title">Сейчас в прототипе</h2>
<p class="phase-sub">16 экранов: транзакционное ядро (запись + ближайший приём + врачи) и базовая идентификация. Точка отсчёта.</p>
</div>
<div class="phase-aside">
<div><div class="stat">Экранов</div><div class="stat-v">16</div></div>
<div><div class="stat">Покрытие</div><div class="stat-v">~30%</div></div>
</div>
</div>
<div class="phase-body">
<div class="cards">
<a class="card card-existing" href="index.html">
<div class="mini">
<div class="mini-status"></div>
<div class="mi-grid"><div class="mi-tile warm"></div><div class="mi-tile"></div><div class="mi-tile med"></div><div class="mi-tile"></div><div class="mi-tile med"></div><div class="mi-tile warm"></div></div>
<span class="card-status"></span>
</div>
<div class="card-body">
<h3 class="card-name">Главная</h3>
<p class="card-desc">Запись CTA, специализации, ближайший приём. Витрина услуг.</p>
<div class="card-tags"><span class="tag live">в проде</span></div>
</div>
</a>
<a class="card card-existing" href="index.html">
<div class="mini">
<div class="mini-status"></div>
<div class="mi-list"><div class="mi-list-row"><span class="av"></span><span class="ln"></span></div><div class="mi-list-row"><span class="av"></span><span class="ln"></span></div><div class="mi-list-row"><span class="av"></span><span class="ln"></span></div><div class="mi-list-row"><span class="av"></span><span class="ln"></span></div></div>
<span class="card-status"></span>
</div>
<div class="card-body">
<h3 class="card-name">Врачи + карточка</h3>
<p class="card-desc">Каталог, фильтры, рейтинги, расписание, отзывы.</p>
<div class="card-tags"><span class="tag live">в проде</span></div>
</div>
</a>
<a class="card card-existing" href="index.html">
<div class="mini">
<div class="mini-status"></div>
<div class="mi-list"><div class="mi-list-row" style="background: var(--teal-50)"><span class="av"></span><span class="ln" style="background: var(--teal-200)"></span></div><div class="mi-list-row"><span class="av"></span><span class="ln"></span></div><div class="mi-list-row"><span class="av"></span><span class="ln"></span></div><div class="mi-list-row"><span class="av"></span><span class="ln"></span></div></div>
<span class="card-status"></span>
</div>
<div class="card-body">
<h3 class="card-name">Запись на приём</h3>
<p class="card-desc">4-шаговый флоу: специализация → врач → время → подтверждение.</p>
<div class="card-tags"><span class="tag live">в проде</span></div>
</div>
</a>
<a class="card card-existing" href="index.html">
<div class="mini">
<div class="mini-status"></div>
<div class="mi-list"><div class="mi-list-row" style="background: var(--warm-100)"><span class="av" style="background: var(--accent)"></span><span class="ln"></span></div><div class="mi-list-row"><span class="av"></span><span class="ln"></span></div></div>
<span class="card-status"></span>
</div>
<div class="card-body">
<h3 class="card-name">Мои приёмы</h3>
<p class="card-desc">Предстоящие и прошедшие. Деталь приёма с заключением.</p>
<div class="card-tags"><span class="tag live">в проде</span></div>
</div>
</a>
<a class="card card-existing" href="index.html">
<div class="mini">
<div class="mini-status"></div>
<div class="mi-chat"><div class="mi-bubble"></div><div class="mi-bubble me"></div><div class="mi-bubble"></div><div class="mi-bubble me" style="width:50%"></div></div>
<span class="card-status"></span>
</div>
<div class="card-body">
<h3 class="card-name">Чат с оператором</h3>
<p class="card-desc">Один универсальный чат — справки, переносы, расписание.</p>
<div class="card-tags"><span class="tag live">в проде</span></div>
</div>
</a>
<a class="card card-existing" href="index.html">
<div class="mini">
<div class="mini-status"></div>
<div style="padding: 14px 10px 0; display:flex; flex-direction:column; align-items:center; gap:8px;">
<div style="width:40px; height:40px; border-radius:999px; background: var(--warm-100);"></div>
<div style="height:6px; width:60%; background: #E4EAF2; border-radius: 3px;"></div>
<div style="height:4px; width:80%; background: #EEF2F7; border-radius: 2px;"></div>
</div>
<span class="card-status"></span>
</div>
<div class="card-body">
<h3 class="card-name">Профиль + QR + семья</h3>
<p class="card-desc">Идентификация, QR пациента, члены семьи, бонусы.</p>
<div class="card-tags"><span class="tag live">в проде</span></div>
</div>
</a>
<a class="card card-existing" href="index.html">
<div class="mini">
<div class="mini-status"></div>
<div class="mi-chart">
<svg viewBox="0 0 100 60">
<rect x="0" y="10" width="100" height="20" fill="#E8F5EE" opacity=".6"/>
<polyline points="5,15 25,18 45,22 65,30 85,42 95,48" fill="none" stroke="var(--accent)" stroke-width="1.5"/>
<polyline points="5,12 25,15 45,18 65,25 85,32 95,38" fill="none" stroke="var(--p2B)" stroke-width="1.5" stroke-dasharray="2 2"/>
</svg>
</div>
<span class="card-status"></span>
</div>
<div class="card-body">
<h3 class="card-name">Аудиограмма</h3>
<p class="card-desc">Тест слуха + просмотр готового результата.</p>
<div class="card-tags"><span class="tag live">в проде</span></div>
</div>
</a>
<a class="card card-existing" href="index.html">
<div class="mini">
<div class="mini-status"></div>
<div style="padding: 12px 10px 0;">
<div style="height:8px; background: var(--teal); border-radius: 4px; width: 45%; margin-bottom: 8px;"></div>
<div style="height:6px; background: var(--border); border-radius: 3px; margin-bottom: 4px;"></div>
<div style="height:6px; background: var(--border); border-radius: 3px; margin-bottom: 4px; width:70%"></div>
<div style="height:6px; background: var(--border); border-radius: 3px; width: 50%;"></div>
</div>
<span class="card-status"></span>
</div>
<div class="card-body">
<h3 class="card-name">Восстановление</h3>
<p class="card-desc">Прототип бегунка после операции — таймлайн, лекарства.</p>
<div class="card-tags"><span class="tag live">основа для C</span></div>
</div>
</a>
</div>
</div>
</div>
<!-- ============== Phase 1: Транзакционная база ============== -->
<div class="phase">
<div class="phase-head">
<div class="phase-num" style="background: var(--p1bg); color: var(--p1);">1</div>
<div>
<h2 class="phase-title">Транзакционная база</h2>
<p class="phase-sub">Ради чего пациент <em>не удалит приложение между визитами</em>. Детерминированные функции — без LLM, без живого диалога с врачом. Минимум юридических и регламентных рисков.</p>
</div>
<div class="phase-aside">
<div><div class="stat">Новых экранов</div><div class="stat-v">+8</div></div>
<div><div class="stat">Охват</div><div class="stat-v">100%</div></div>
</div>
</div>
<div class="phase-body">
<div class="cards">
<div class="card card-future">
<div class="mini mini-future">
<div class="mini-status"></div>
<div style="padding: 12px 10px 0;">
<div style="height: 8px; background: var(--p1); border-radius: 4px; width: 70%; margin-bottom: 8px;"></div>
<div class="mi-pill-row" style="background: var(--p1bg)"><span class="mi-pill b"></span><span class="ln"></span></div>
<div class="mi-pill-row" style="background: var(--p1bg); margin-top:4px"><span class="mi-pill b"></span><span class="ln"></span></div>
<div class="mi-pill-row" style="background: var(--warm-50); margin-top:4px"><span class="mi-pill" style="background: var(--p2A)"></span><span class="ln"></span></div>
</div>
<span class="card-status" style="background: var(--p1); color: #fff;">★ Фундамент</span>
</div>
<div class="card-body">
<h3 class="card-name">План лечения с приёма</h3>
<p class="card-desc">Главный новый объект. Диагноз, препараты с расписанием, процедуры, контрольный приём, запись в 1 клик.</p>
<div class="card-tags"><span class="tag p1">фаза 1</span><span class="tag">источник правды</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future">
<div class="mini-status"></div>
<div class="mi-meds">
<div class="mi-pill-row"><span class="mi-pill"></span><span class="ln"></span><span style="font-size:9px; color: var(--p1); font-weight:700">8:00</span></div>
<div class="mi-pill-row"><span class="mi-pill b"></span><span class="ln"></span><span style="font-size:9px; color: var(--p1); font-weight:700">13:00</span></div>
<div class="mi-pill-row"><span class="mi-pill c"></span><span class="ln"></span><span style="font-size:9px; color: var(--p1); font-weight:700">20:00</span></div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Карточка препарата</h3>
<p class="card-desc">Детали назначения: дозировка, дни, что осталось, инструкция, побочки.</p>
<div class="card-tags"><span class="tag p1">фаза 1</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future">
<div class="mini-status"></div>
<div class="mi-list">
<div class="mi-list-row" style="background: var(--p2Abg)"><span class="av" style="background: var(--p2A)"></span><span class="ln" style="background: var(--p2A); opacity: .4"></span></div>
<div class="mi-list-row" style="background: var(--p2Abg)"><span class="av" style="background: var(--p2A)"></span><span class="ln" style="background: var(--p2A); opacity: .4"></span></div>
<div class="mi-list-row" style="background: var(--warm-100)"><span class="av" style="background: var(--p2C)"></span><span class="ln" style="background: var(--p2C); opacity: .4"></span></div>
<div class="mi-list-row" style="background: var(--p1bg)"><span class="av" style="background: var(--p1)"></span><span class="ln" style="background: var(--p1); opacity: .4"></span></div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Медкарта со «срок годности»</h3>
<p class="card-desc">Анализы, аудиограммы, снимки + статус «годен до». Критично для пред-опа.</p>
<div class="card-tags"><span class="tag p1">фаза 1</span><span class="tag">расширение</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future">
<div class="mini-status"></div>
<div style="padding: 14px 10px 0; display:flex; flex-direction:column; gap:8px;">
<div style="background:#fff; border-radius: 8px; padding: 8px; border: 1px solid var(--border);">
<div style="height:5px; background: var(--p1); border-radius: 2px; width: 60%; margin-bottom: 4px;"></div>
<div style="height:4px; background: var(--border); border-radius: 2px; width: 80%;"></div>
</div>
<div style="background: var(--p1); color:#fff; height: 22px; border-radius: 8px; display:flex; align-items:center; justify-content:center; font-size:9px; font-weight:700;">ЗАКАЗАТЬ</div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Заказ справок</h3>
<p class="card-desc">Справка ФНС, выписки, счета. 1 клик. Готовая в приложении.</p>
<div class="card-tags"><span class="tag p1">фаза 1</span><span class="tag">retention-якорь</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future">
<div class="mini-status"></div>
<div style="padding: 12px 10px 0;">
<div style="background: var(--p1bg); border-radius: 10px; padding: 8px;">
<div style="height:5px; background: var(--p1); border-radius: 2px; width: 80%; margin-bottom: 4px;"></div>
<div style="height:4px; background: var(--p1); opacity:.5; border-radius: 2px; width: 60%;"></div>
</div>
<div style="display: flex; gap:4px; margin-top:8px">
<div style="flex:1; height: 18px; background: var(--p1); border-radius: 6px;"></div>
<div style="flex:1; height: 18px; background: var(--p1bg); border-radius: 6px; border: 1px solid var(--p1)"></div>
</div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Главная: «эпизод лечения»</h3>
<p class="card-desc">Альтернативная главная для повторных. Активный диагноз, день курса, что делать сегодня.</p>
<div class="card-tags"><span class="tag p1">фаза 1</span><span class="tag">переосмысление</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future">
<div class="mini-status"></div>
<div style="padding: 12px 10px 0;">
<div style="height: 5px; background: var(--p1); border-radius: 2px; width: 50%; margin-bottom:6px"></div>
<div style="height: 4px; background: var(--border); border-radius: 2px; width: 80%; margin-bottom:4px"></div>
<div style="height: 4px; background: var(--border); border-radius: 2px; width: 70%; margin-bottom:8px"></div>
<div style="display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 4px;">
<div style="height: 22px; background: var(--p1bg); border-radius: 6px;"></div>
<div style="height: 22px; background: var(--p1bg); border-radius: 6px;"></div>
<div style="height: 22px; background: var(--p1bg); border-radius: 6px;"></div>
</div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Чек-лист подготовки к приёму</h3>
<p class="card-desc">Не забыть карту/анализы, маршрут до кабинета, тригеры 24ч/2ч/15мин.</p>
<div class="card-tags"><span class="tag p1">усиление</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future">
<div class="mini-status"></div>
<div style="padding: 12px 10px 0;">
<div style="height: 5px; background: var(--p1); border-radius: 2px; width: 60%; margin-bottom:8px"></div>
<div style="display: flex; align-items: center; gap: 8px; margin-bottom: 6px;">
<div style="width:12px; height:12px; border-radius: 999px; background: var(--p2A);"></div>
<div style="flex:1; height: 4px; background: var(--p2A); border-radius: 2px;"></div>
<div style="width:12px; height:12px; border-radius: 999px; background: var(--p2A);"></div>
<div style="flex:1; height: 4px; background: var(--p2A); border-radius: 2px;"></div>
<div style="width:12px; height:12px; border-radius: 999px; background: var(--border-soft); border: 1.5px solid var(--p1)"></div>
</div>
<div style="height: 4px; background: var(--border); border-radius: 2px; margin-top: 6px;"></div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Эпизод лечения</h3>
<p class="card-desc">Сводка: первичный → процедуры → контроль. Видна траектория.</p>
<div class="card-tags"><span class="tag p1">фаза 1</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future">
<div class="mini-status"></div>
<div style="padding: 12px 10px 0;">
<div style="display:flex; gap:6px; margin-bottom: 6px;">
<div style="flex:1; height: 32px; background: #fff; border-radius: 6px; border: 1px solid var(--border);"></div>
<div style="flex:1; height: 32px; background: #fff; border-radius: 6px; border: 1px solid var(--border);"></div>
</div>
<div style="height: 5px; background: var(--p1); border-radius: 2px; width: 70%; margin-bottom:4px"></div>
<div style="height: 4px; background: var(--border); border-radius: 2px; width: 80%;"></div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Семейный профиль (расширение)</h3>
<p class="card-desc">Переключение между профилями ребёнка/пожилого. Критично для аденоидов и ЧБД.</p>
<div class="card-tags"><span class="tag p1">усиление</span></div>
</div>
</div>
</div>
<div class="deps">
<b>Зависимость:</b> структурированные назначения от МИС. Если API отдаёт препарат + дозу + курс — план собирается автоматически. Если только PDF — врач заполняет в виджете шаблонами по нозологиям. <span class="arrow"></span> Решение определяет сроки Фазы 1.
</div>
</div>
</div>
<!-- ============== Phase 1.5: Коммуникация ============== -->
<div class="phase">
<div class="phase-head">
<div class="phase-num" style="background: var(--p15bg); color: var(--p15);">1.5</div>
<div>
<h2 class="phase-title">Коммуникационная надстройка</h2>
<p class="phase-sub">Живой и AI-диалог по поводу лечения. Поверх стабильной Фазы 1. Требует регламентов SLA, безопасности и отдельной выкладки — поэтому отделено от Фазы 1.</p>
</div>
<div class="phase-aside">
<div><div class="stat">Новых экранов</div><div class="stat-v">+4</div></div>
</div>
</div>
<div class="phase-body">
<div class="cards">
<div class="card card-future">
<div class="mini mini-future">
<div class="mini-status"></div>
<div class="mi-chat" style="padding-top:14px">
<div class="mi-bubble"></div>
<div class="mi-bubble" style="width:60%"></div>
<div class="mi-bubble me" style="background: var(--p15)"></div>
<div class="mi-bubble" style="width:80%"></div>
</div>
<span class="card-status" style="background: var(--p15); color:#fff;">SLA</span>
</div>
<div class="card-body">
<h3 class="card-name">Чат с медицинским консьержем</h3>
<p class="card-desc">Дежурный врач/фельдшер по протоколам. 80% рутины, эскалация лечащему. Не прямой чат с врачом.</p>
<div class="card-tags"><span class="tag p15">фаза 1.5</span><span class="tag">регламент</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future">
<div class="mini-status"></div>
<div class="mi-chat" style="padding-top:14px">
<div class="mi-bubble"></div>
<div class="mi-bubble ai" style="width:80%"></div>
<div class="mi-bubble ai" style="width:65%"></div>
<div class="mi-bubble me" style="background: var(--p15)"></div>
</div>
<span class="card-status" style="background: var(--p15); color:#fff;">Shadow</span>
</div>
<div class="card-body">
<h3 class="card-name">AI-помощник (RAG)</h3>
<p class="card-desc">Знает базу знаний клиники, план лечения. Сначала shadow-mode под валидацией консьержа.</p>
<div class="card-tags"><span class="tag p15">фаза 1.5</span><span class="tag">риск</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future">
<div class="mini-status"></div>
<div style="padding: 12px 10px 0;">
<div style="display:flex; gap: 6px; margin-bottom: 6px;">
<div style="flex:1; height: 30px; background: var(--p1bg); border-radius: 8px;"></div>
<div style="flex:1; height: 30px; background: var(--p15bg); border-radius: 8px;"></div>
</div>
<div style="height: 4px; background: var(--border); border-radius: 2px; margin-bottom: 4px"></div>
<div style="height: 4px; background: var(--border); border-radius: 2px; width: 70%"></div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Маршрутизатор каналов</h3>
<p class="card-desc">Куда писать: оператор, консьерж или AI. Без когнитивной нагрузки на пациента.</p>
<div class="card-tags"><span class="tag p15">UX-вызов</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future">
<div class="mini-status"></div>
<div style="padding: 14px 10px 0;">
<div style="height: 5px; background: var(--p15); border-radius: 2px; width: 50%; margin-bottom:6px"></div>
<div style="height: 4px; background: var(--border); border-radius: 2px; margin-bottom:4px"></div>
<div style="height: 4px; background: var(--border); border-radius: 2px; width: 70%; margin-bottom:8px"></div>
<div style="display: flex; gap: 4px;">
<div style="flex:1; height: 6px; background: var(--p2A); border-radius: 3px;"></div>
<div style="flex:1; height: 6px; background: var(--warm-200); border-radius: 3px;"></div>
<div style="flex:1; height: 6px; background: var(--p2C); border-radius: 3px;"></div>
</div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Триаж тревожности</h3>
<p class="card-desc">«Норма / срочно / неотложно» — AI оценивает и эскалирует к консьержу или 112.</p>
<div class="card-tags"><span class="tag p15">безопасность</span></div>
</div>
</div>
</div>
</div>
</div>
<!-- ============== Phase 2: Сегментные модули ============== -->
<div class="phase">
<div class="phase-head">
<div class="phase-num" style="background: linear-gradient(135deg, var(--p2A), var(--p2C), var(--p2B), var(--p2D)); color: #fff;">2</div>
<div>
<h2 class="phase-title">Сегментные модули</h2>
<p class="phase-sub">Углубление по приоритетным группам сегментов. Порядок запуска: <b>A → C → B → D</b>. Каждый модуль опирается на план лечения и медкарту из Фазы 1.</p>
</div>
<div class="phase-aside">
<div><div class="stat">Групп</div><div class="stat-v">4</div></div>
<div><div class="stat">Новых экранов</div><div class="stat-v">~25</div></div>
</div>
</div>
<div class="phase-body">
<div class="groups-grid">
<!-- Group A -->
<div class="group-block" style="background: linear-gradient(180deg, var(--p2Abg) 0%, #fff 60%);">
<div class="group-head">
<span class="group-letter" style="background: var(--p2A);">A</span>
<span class="group-name">Самопомощь хроников</span>
<span class="group-meta">первый запуск · охват ~тысячи в мес.</span>
</div>
<p style="font-size: 12.5px; color: var(--fg-3); margin: 0 0 12px; line-height: 1.5;">
Промывания, полоскания, ингаляции. Видео-библиотека техник + ежедневный трекер + дневник симптомов в связке. Главный мотиватор — «промываю 5 дней, насморк уменьшился с 4 до 2».
</p>
<div class="cards" style="grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));">
<div class="card card-future">
<div class="mini mini-future" style="height: 110px;">
<div style="padding: 12px 10px 0; display: grid; grid-template-columns: 1fr 1fr; gap: 6px;">
<div style="aspect-ratio: 1; background: var(--p2A); border-radius: 8px; position:relative;"><div style="position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:#fff;"></div></div>
<div style="aspect-ratio: 1; background: var(--p2Abg); border-radius: 8px;"></div>
<div style="aspect-ratio: 1; background: var(--p2Abg); border-radius: 8px;"></div>
<div style="aspect-ratio: 1; background: var(--p2Abg); border-radius: 8px;"></div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Библиотека техник</h3>
<p class="card-desc">10–15 видео-инструкций: промывание, полоскание, ингаляция.</p>
<div class="card-tags"><span class="tag a">A</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future" style="height: 110px;">
<div class="mi-cal">
<div class="mi-cal-d on"></div><div class="mi-cal-d on"></div><div class="mi-cal-d on"></div><div class="mi-cal-d miss"></div><div class="mi-cal-d on"></div><div class="mi-cal-d on"></div><div class="mi-cal-d on"></div>
<div class="mi-cal-d on"></div><div class="mi-cal-d on"></div><div class="mi-cal-d on"></div><div class="mi-cal-d on"></div><div class="mi-cal-d miss"></div><div class="mi-cal-d on"></div><div class="mi-cal-d today"></div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Трекер комплаенса</h3>
<p class="card-desc">Ежедневные отметки, стрики, сводка для врача.</p>
<div class="card-tags"><span class="tag a">A</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future" style="height: 110px;">
<div style="padding: 14px 10px 0;">
<svg viewBox="0 0 100 50" style="width:100%;">
<polyline points="0,5 15,8 30,12 45,18 60,28 75,35 90,42 100,46" fill="none" stroke="var(--p2A)" stroke-width="2"/>
<circle cx="100" cy="46" r="3" fill="var(--p2A)"/>
</svg>
<div style="display: flex; justify-content: space-between; margin-top:4px;">
<span style="font-size:10px; color: var(--fg-4); font-weight:700">Симптом 4</span>
<span style="font-size:10px; color: var(--p2A); font-weight:700">→ 2</span>
</div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Дневник симптомов</h3>
<p class="card-desc">Видна динамика — главный мотиватор продолжать.</p>
<div class="card-tags"><span class="tag a">A</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future" style="height: 110px;">
<div style="padding: 12px 10px 0;">
<div style="background: var(--p2A); color:#fff; padding: 6px 8px; border-radius: 8px; font-size: 10px; font-weight:700; margin-bottom: 6px;">8:00 — Промыть нос</div>
<div style="background: var(--p2Abg); padding: 6px 8px; border-radius: 8px; font-size: 9px; color: var(--p2A); margin-bottom: 4px;">13:00 Ингаляция</div>
<div style="background: var(--p2Abg); padding: 6px 8px; border-radius: 8px; font-size: 9px; color: var(--p2A);">20:00 Полоскание</div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Расписание дня</h3>
<p class="card-desc">Утро/день/вечер из плана. Уведомления.</p>
<div class="card-tags"><span class="tag a">A</span></div>
</div>
</div>
</div>
</div>
<!-- Group C -->
<div class="group-block" style="background: linear-gradient(180deg, var(--p2Cbg) 0%, #fff 60%);">
<div class="group-head">
<span class="group-letter" style="background: var(--p2C);">C</span>
<span class="group-name">Пред-операционная подготовка</span>
<span class="group-meta">3 сегмента одним модулем · ~50 млн</span>
</div>
<p style="font-size: 12.5px; color: var(--fg-3); margin: 0 0 12px; line-height: 1.5;">
Закрывает FESS, аденоиды, вазотомию. Две половины: <b>сомневающиеся</b> после пред-оп приёма и <b>решившиеся</b> в 6-недельной подготовке. У нас уже есть прототип «Восстановление» — это вторая половина.
</p>
<div class="cards" style="grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));">
<div class="card card-future">
<div class="mini mini-future" style="height: 110px;">
<div style="padding: 12px 10px 0;">
<div style="height: 5px; background: var(--p2C); border-radius: 2px; width: 60%; margin-bottom: 6px;"></div>
<div style="display:flex; flex-direction:column; gap:4px;">
<div style="height: 16px; background: var(--p2Cbg); border-radius: 6px;"></div>
<div style="height: 16px; background: var(--p2Cbg); border-radius: 6px;"></div>
</div>
<div style="background: var(--p2C); color:#fff; height: 18px; border-radius: 6px; margin-top: 6px; display:flex; align-items:center; justify-content:center; font-size:9px; font-weight:700;">РЕШИТЬСЯ</div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Сомневающийся пациент</h3>
<p class="card-desc">Кейсы, метод (FESS/лазер), цена/рассрочка, чат с хирургом.</p>
<div class="card-tags"><span class="tag c">C</span><span class="tag">возврат</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future" style="height: 110px;">
<div style="padding: 12px 10px 0;">
<div style="display:flex; align-items:center; gap: 4px; margin-bottom: 6px;">
<div style="width:10px; height:10px; border-radius:999px; background: var(--p2C);"></div>
<div style="flex:1; height: 3px; background: var(--p2C); opacity: .5;"></div>
<div style="width:10px; height:10px; border-radius:999px; background: var(--p2C);"></div>
<div style="flex:1; height: 3px; background: var(--p2C); opacity: .5;"></div>
<div style="width:10px; height:10px; border-radius:999px; background: var(--p2C); opacity: .3;"></div>
</div>
<div style="height: 4px; background: var(--border); border-radius: 2px; margin-bottom: 4px;"></div>
<div style="height: 4px; background: var(--border); border-radius: 2px; width: 70%;"></div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Бегунок 6 недель</h3>
<p class="card-desc">Чек-листы, анализы (срок годности!), запись на операцию.</p>
<div class="card-tags"><span class="tag c">C</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future" style="height: 110px;">
<div style="padding: 14px 10px 0;">
<div style="background: var(--p2C); color: #fff; height: 28px; border-radius: 8px; display:flex; align-items:center; justify-content:center; font-size:10px; font-weight:700; margin-bottom: 6px;">ДЕНЬ ОПЕРАЦИИ</div>
<div style="height: 4px; background: var(--border); border-radius: 2px; margin-bottom: 3px;"></div>
<div style="height: 4px; background: var(--border); border-radius: 2px; width: 80%;"></div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Чек-лист дня операции</h3>
<p class="card-desc">Что взять, во сколько, голод, маршрут, контакт.</p>
<div class="card-tags"><span class="tag c">C</span></div>
</div>
</div>
<div class="card card-existing">
<div class="mini">
<div style="padding: 12px 10px 0;">
<div style="height: 8px; background: var(--p1); border-radius: 4px; width: 45%; margin-bottom: 6px;"></div>
<div style="height: 4px; background: var(--border); border-radius: 2px; margin-bottom: 4px;"></div>
<div style="height: 4px; background: var(--border); border-radius: 2px; width: 70%;"></div>
</div>
<span class="card-status">✓ есть</span>
</div>
<div class="card-body">
<h3 class="card-name">Восстановление (есть)</h3>
<p class="card-desc">Уже в прототипе — основа второй половины Группы C.</p>
<div class="card-tags"><span class="tag c">C</span><span class="tag live">в проде</span></div>
</div>
</div>
</div>
</div>
<!-- Group B -->
<div class="group-block" style="background: linear-gradient(180deg, var(--p2Bbg) 0%, #fff 60%);">
<div class="group-head">
<span class="group-letter" style="background: var(--p2B);">B</span>
<span class="group-name">Сурдология</span>
<span class="group-meta">пожизненный LTV · самый нестандартный UX</span>
</div>
<p style="font-size: 12.5px; color: var(--fg-3); margin: 0 0 12px; line-height: 1.5;">
Возврат после демо (2–3 мес «уходят думать») + обслуживание после покупки. Каталог как маркетплейс, аудио-демо, паспорт аппарата, шеринг с близким, сервисный календарь.
</p>
<div class="cards" style="grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));">
<div class="card card-future">
<div class="mini mini-future" style="height: 110px;">
<div style="padding: 12px 10px 0; display: grid; grid-template-columns: 1fr 1fr; gap: 6px;">
<div style="aspect-ratio: 1; background: var(--p2Bbg); border-radius: 10px; display:flex; align-items:center; justify-content:center; font-size:18px;">🦻</div>
<div style="aspect-ratio: 1; background: var(--p2Bbg); border-radius: 10px;"></div>
<div style="aspect-ratio: 1; background: var(--p2Bbg); border-radius: 10px;"></div>
<div style="aspect-ratio: 1; background: var(--p2Bbg); border-radius: 10px;"></div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Каталог аппаратов</h3>
<p class="card-desc">Маркетплейс моделей с калькулятором, рассрочкой, шерингом.</p>
<div class="card-tags"><span class="tag b">B</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future" style="height: 110px;">
<div style="padding: 14px 10px 0; display:flex; flex-direction: column; align-items: center;">
<div style="display:flex; align-items: end; gap:3px; height: 40px;">
<div style="width:6px; height:30%; background: var(--p2B); border-radius: 2px;"></div>
<div style="width:6px; height:50%; background: var(--p2B); border-radius: 2px;"></div>
<div style="width:6px; height:80%; background: var(--p2B); border-radius: 2px;"></div>
<div style="width:6px; height:60%; background: var(--p2B); border-radius: 2px;"></div>
<div style="width:6px; height:40%; background: var(--p2B); border-radius: 2px;"></div>
</div>
<div style="font-size: 9px; color: var(--p2B); font-weight:700; margin-top: 4px;">Слышу с аппаратом</div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Аудио-демо</h3>
<p class="card-desc">Сравнение «без аппарата / с аппаратом» в наушниках. На любом устройстве.</p>
<div class="card-tags"><span class="tag b">B</span><span class="tag">конверсия</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future" style="height: 110px;">
<div style="padding: 12px 10px 0;">
<div style="background: var(--p2B); color: #fff; padding: 8px; border-radius: 10px; margin-bottom: 4px;">
<div style="font-size: 8px; opacity: .7; font-weight:700">МОЯ МОДЕЛЬ</div>
<div style="font-size: 11px; font-weight:700; margin-top:2px;">Phonak Audéo</div>
</div>
<div style="height: 4px; background: var(--border); border-radius: 2px; margin-bottom: 4px;"></div>
<div style="height: 4px; background: var(--border); border-radius: 2px; width: 70%;"></div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Паспорт аппарата</h3>
<p class="card-desc">Сервисный календарь, расходники, калибровка раз в год.</p>
<div class="card-tags"><span class="tag b">B</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future" style="height: 110px;">
<div style="padding: 12px 10px 0;">
<div style="height: 5px; background: var(--p2B); border-radius: 2px; width: 50%; margin-bottom: 6px;"></div>
<div class="mi-list-row" style="background: var(--p2Bbg)"><span class="av" style="background: var(--p2B)"></span><span class="ln" style="background: var(--p2B); opacity: .4"></span></div>
<div class="mi-list-row" style="background: var(--p2Bbg); margin-top:4px"><span class="av" style="background: var(--p2B)"></span><span class="ln" style="background: var(--p2B); opacity: .4"></span></div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Дневник адаптации</h3>
<p class="card-desc">Первые 90 дней с аппаратом — сложности, успехи, советы.</p>
<div class="card-tags"><span class="tag b">B</span></div>
</div>
</div>
</div>
</div>
<!-- Group D -->
<div class="group-block" style="background: linear-gradient(180deg, var(--p2Dbg) 0%, #fff 60%);">
<div class="group-head">
<span class="group-letter" style="background: var(--p2D);">D</span>
<span class="group-name">АСИТ + контроль астмы</span>
<span class="group-meta">самая высокая ответственность · с верификацией</span>
</div>
<p style="font-size: 12.5px; color: var(--fg-3); margin: 0 0 12px; line-height: 1.5;">
Курс 3–5 лет: «не начал», «бросил в первые месяцы». Ежедневный дневник симптомов, пыльцевой календарь, навигатор побочки. Без верификации аллерголога не запускаем.
</p>
<div class="cards" style="grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));">
<div class="card card-future">
<div class="mini mini-future" style="height: 110px;">
<div style="padding: 12px 10px 0;">
<div style="display: flex; align-items: end; gap: 2px; height: 50px;">
<div style="flex:1; height: 30%; background: var(--p2D); border-radius: 2px;"></div>
<div style="flex:1; height: 50%; background: var(--p2D); border-radius: 2px;"></div>
<div style="flex:1; height: 80%; background: var(--p2D); border-radius: 2px;"></div>
<div style="flex:1; height: 100%; background: var(--p2D); border-radius: 2px;"></div>
<div style="flex:1; height: 70%; background: var(--p2D); border-radius: 2px;"></div>
<div style="flex:1; height: 40%; background: var(--p2D); border-radius: 2px;"></div>
<div style="flex:1; height: 25%; background: var(--p2D); border-radius: 2px;"></div>
</div>
<div style="font-size:9px; color: var(--p2D); font-weight:700; margin-top: 4px;">Берёза · пик 18 апр</div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Пыльцевой календарь</h3>
<p class="card-desc">Прогноз концентрации аллергена на неделю вперёд.</p>
<div class="card-tags"><span class="tag d">D</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future" style="height: 110px;">
<div style="padding: 14px 10px 0;">
<div style="display: flex; gap: 3px; margin-bottom: 8px;">
<div style="flex:1; height: 6px; background: var(--p2A); border-radius: 3px;"></div>
<div style="flex:1; height: 6px; background: var(--warm-200); border-radius: 3px;"></div>
<div style="flex:1; height: 6px; background: #E8E8F0; border-radius: 3px;"></div>
<div style="flex:1; height: 6px; background: #E8E8F0; border-radius: 3px;"></div>
</div>
<div style="height: 4px; background: var(--border); border-radius: 2px; margin-bottom: 4px;"></div>
<div style="height: 4px; background: var(--border); border-radius: 2px; width: 70%;"></div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Дневник симптомов АСИТ</h3>
<p class="card-desc">Чихание, заложенность, глаза. Видит аллерголог перед визитом.</p>
<div class="card-tags"><span class="tag d">D</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future" style="height: 110px;">
<div style="padding: 12px 10px 0;">
<div style="background: var(--p2D); color: #fff; padding: 6px 8px; border-radius: 8px; font-size: 10px; font-weight:700; margin-bottom: 4px;">⚠ Зуд во рту?</div>
<div style="background: var(--p2Dbg); padding: 4px 8px; border-radius: 6px; height: 14px; margin-bottom: 3px;"></div>
<div style="background: var(--p2Dbg); padding: 4px 8px; border-radius: 6px; height: 14px; width: 70%;"></div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Навигатор побочки</h3>
<p class="card-desc">Зуд, отёк — норма / осторожно / срочно. Удерживает на курсе.</p>
<div class="card-tags"><span class="tag d">D</span></div>
</div>
</div>
<div class="card card-future">
<div class="mini mini-future" style="height: 110px;">
<div style="padding: 12px 10px 0;">
<div style="display:flex; align-items: center; gap: 4px;">
<div style="width:10px; height:10px; border-radius:999px; background: var(--p2D);"></div>
<div style="flex:1; height: 3px; background: var(--p2D); opacity: .5;"></div>
<div style="width:10px; height:10px; border-radius:999px; background: var(--p2D); opacity: .5;"></div>
</div>
<div style="font-size:9px; color: var(--p2D); font-weight:700; margin-top:6px;">Год 1 из 5</div>
<div style="height: 4px; background: var(--border); border-radius: 2px; margin-top: 4px;"></div>
</div>
</div>
<div class="card-body">
<h3 class="card-name">Дорожная карта 5 лет</h3>
<p class="card-desc">Видеть длинный путь — главный мотив не бросить.</p>
<div class="card-tags"><span class="tag d">D</span></div>
</div>
</div>
</div>
</div>
</div>
<div class="deps">
<b>Зависимости:</b> все 4 группы используют <b>план лечения</b> и <b>медкарту</b> из Фазы 1 как источник правды. Группа D дополнительно требует верификации контента аллергологом и добавления его в каталог врачей. <span class="arrow"></span> Без Фазы 1 модули не строятся.
</div>
</div>
</div>
<!-- ============== Сегменты ============== -->
<div class="segments">
<div class="seg-head">
<h2>10 сегментов сквозь призму приложения</h2>
<p>Бизнес-сегментация клиники наложена на фазы. Видно, какой модуль закрывает какие сегменты и где у нас «не делаем».</p>
</div>
<table class="seg-table">
<thead>
<tr>
<th>Сегмент</th>
<th>Главная работа в App (повторный)</th>
<th>Группа</th>
<th>Выручка / год</th>
<th>Приоритет</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="seg-num">1</span><span class="seg-name">Заблокированный нос (FESS)</span></td>
<td class="seg-job">Пред-оп бегунок · восстановление · контроль 3/6/12 мес</td>
<td><span class="tag c">C</span></td>
<td><span class="seg-rev">~30 млн</span></td>
<td><span class="prio high">● высокий</span></td>
</tr>
<tr>
<td><span class="seg-num">2</span><span class="seg-name">Амбулаторный поток</span></td>
<td class="seg-job">План лечения · процедуры самопомощи · дневник</td>
<td><span class="tag p1">1</span> <span class="tag a">A</span></td>
<td><span class="seg-rev">~120 млн</span></td>
<td><span class="prio high">● высший</span></td>
</tr>
<tr>
<td><span class="seg-num">3</span><span class="seg-name">Дети + аденоиды</span></td>
<td class="seg-job">Семейный профиль · подготовка ребёнка · детский бегунок</td>
<td><span class="tag c">C</span></td>
<td><span class="seg-rev">~25 млн</span></td>
<td><span class="prio high">● высокий</span></td>
</tr>
<tr>
<td><span class="seg-num">4</span><span class="seg-name">Сурдология</span></td>
<td class="seg-job">Каталог · аудио-демо · паспорт аппарата · сервис</td>
<td><span class="tag b">B</span></td>
<td><span class="seg-rev">~20 млн</span></td>
<td><span class="prio high">● высокий</span></td>
</tr>
<tr>
<td><span class="seg-num">5</span><span class="seg-name">Сложные хроники + ЧБД</span></td>
<td class="seg-job">Самопомощь · АСИТ-трекер · семейный профиль</td>
<td><span class="tag a">A</span> <span class="tag d">D</span></td>
<td><span class="seg-rev">часть 120 млн</span></td>
<td><span class="prio high">● высокий</span></td>
</tr>
<tr>
<td><span class="seg-num">6</span><span class="seg-name">Зависимость от капель</span></td>
<td class="seg-job">Возврат сомневающихся · компактный бегунок · восстановление</td>
<td><span class="tag c">C</span></td>
<td><span class="seg-rev">часть хирургии</span></td>
<td><span class="prio high">● высокий</span></td>
</tr>
<tr>
<td><span class="seg-num">7</span><span class="seg-name">Пульмонология</span></td>
<td class="seg-job">Дневник астмы · ингаляторы · триггеры</td>
<td><span class="tag d">D</span></td>
<td><span class="seg-rev">средний</span></td>
<td><span class="prio mid">◐ средний</span></td>
</tr>
<tr>
<td><span class="seg-num">8</span><span class="seg-name">Социальные храпуны</span></td>
<td class="seg-job">Образовательный контент · СИПАП-трекер</td>
<td><span class="tag skip"></span></td>
<td><span class="seg-rev">низкий</span></td>
<td><span class="prio low">○ низкий</span></td>
</tr>
<tr>
<td><span class="seg-num">9</span><span class="seg-name">Фониатрия</span></td>
<td class="seg-job">Срочная запись (короткое окно)</td>
<td><span class="tag skip"></span></td>
<td><span class="seg-rev">очень низкий</span></td>
<td><span class="prio low">○ низкий</span></td>
</tr>
<tr>
<td><span class="seg-num">10</span><span class="seg-name">Check-up + Второе мнение</span></td>
<td class="seg-job">Разовая услуга · бренд Оленевой</td>
<td><span class="tag skip"></span></td>
<td><span class="seg-rev">единичный</span></td>
<td><span class="prio low">○ низкий</span></td>
</tr>
</tbody>
</table>
</div>
<!-- ============== Footnotes ============== -->
<div class="foot">
<div class="foot-card">
<div class="ti">Принцип</div>
<div class="vl">Удержание, не привлечение</div>
<div class="ds">Первичных приводит сайт и реклама. Приложение — инструмент углубления для повторных. 2 из 3 пациентов клиники — повторные.</div>
</div>
<div class="foot-card">
<div class="ti">Дизайн-сдвиг</div>
<div class="vl">Из «витрины» в «эпизод лечения»</div>
<div class="ds">Главная сейчас построена для первичного. Нужна альтернативная главная: активный диагноз, день курса, что делать сегодня.</div>
</div>
<div class="foot-card">
<div class="ti">Что не делаем</div>
<div class="vl">Отдельные «первичные» модули</div>
<div class="ds">Базовый минимум (запись, цены, врачи) уже работает. Специализированных первичных потоков под каждый сегмент строить не нужно.</div>
</div>
<div class="foot-card">
<div class="ti">Исключения</div>
<div class="vl">Пациент уходит думать</div>
<div class="ds">Сурдология (2–3 мес до покупки), хирургия (решение об операции), АСИТ (3–5 лет курса) — там «первичный в App» ≠ «первый визит».</div>
</div>
</div>
</div>
</body>
</html>