@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Montserrat:wght@300;400;500;900&display=swap');
/* Inter — вариативным и локально: в CSS живут промежуточные 550 и 650, и без
   полной оси браузер округляет их вверх, отчего весь интерфейс жирнеет. */
@font-face{font-family:'Inter';src:url('fonts/Inter-Variable.ttf') format('truetype');font-weight:100 900;font-display:swap}

/* ==== КАД · «Сверено» · РАБОЧИЙ режим ====
   Витрина системы: docs/design/design-system.html. Бриф: «дс новая.md».

   ЗНАК: KAD (Montserrat Black 900) / слэш петролем (Medium 500) / analytics (Light 300).
   ЦВЕТ: петроль #1F5A5E — не фирменное пятно, а указатель: одно главное действие
     на кластер, фокус и ошибка. Потолок 2% площади. Остальное несут графит и вес.
     Красный ушёл вместе с концепцией «кирпич»: его алый у RID и наша глина расходились
     на 16° по тону, а петроль стоит от него на 170°. Волосяной штрих слэша заодно
     окреп: 7.4:1 на бумаге против 5.4 и 6.4:1 на инверсии против 3.0.
   МАТЕРИАЛ (скандинавский перенос): нейтралы тёплые — мел, лён, ясень, шов. Ни одной тени
     и ни одного глянца: глубину даёт послойность тонов и кромка 1px. Радиус один — 6px.
   ЧИСЛА: идентификаторы и хеши — IBM Plex Mono; деньги, площади, проценты — Inter
     с tabular-nums. Моно не заходит в прозу.
   ФЛАГИ: залита ровно одна группа — качество цены (хвойный / охра / глухой кармин).
     Хвойный флаг ближе всех к знаку — 60° по тону; это единственное место,
     где стоит следить, чтобы бренд не начал читаться как статус.
     Служебные состояния (матчинг, уверенность) остаются тихими пилюлями на кромке:
     если залить и их, экран становится грядкой плашек и вывод в ней теряется.
     Цвет продублирован СЛОВОМ в пилюле — для ч/б этого достаточно.
   ВЕС: Inter подключён вариативным и локально. В CSS живут промежуточные 550 и 650,
     и без полной оси браузер округляет их вверх — интерфейс жирнеет весь разом. */

:root{
  /* нейтралы: мел — карточки, лён — холст, ясень — несущие ленты, шов — границы */
  --ink:#1A1A1A;         /* графит: текст, шапки, всё несущее */
  --ink2:#3A3833;        /* тёплый второй уровень текста */
  --paper:#F3F0EB;       /* лён — фон страницы, наведение, поля */
  --card:#FAF8F5;        /* мел — карточки и панели */
  --ash:#EAE3D8;         /* ясень — шапки таблиц и ленты заверения */
  --line:#E4DFD8;        /* шов */
  --line-2:#D6CFC4;      /* шов поглубже — акцентная кромка вместо графитовой */
  --grid:#EDE8E0;        /* тонкий разделитель внутри карточки */
  --steel:#6F6B65;       /* вторичный текст, 5.0:1 на мелу — AA */
  --steel-soft:#9A958E;  /* декоративное и «закрыто», НЕ текст */
  /* петроль — указатель, не фон. Красный отдан конкуренту: его алый и наша глина
     расходились всего на 16° по тону, и знак «пах» соседом при любой светлоте. */
  --accent:#1F5A5E;      /* заливка единственного действия, слэш знака, фокус */
  --accent-2:#17474A;    /* наведение и акцент в наборе */
  /* заверение и печать — графит: второго фирменного цвета в системе нет */
  --seal:#1A1A1A;--seal-deep:#000000;
  /* флаги качества цены — сложные, приглушённые; форма метки дублирует цвет */
  --gold:#8A6A1F;--gold-ink:#8A6A1F;      /* охра — проверить */
  --raskal:#8C3A34;--raskal-ink:#8C3A34;  /* глухой кармин — выброс */
  --good:#4E6A50;--good-ink:#4E6A50;      /* хвойный — в норме */
  /* секвенциальная шкала величины: глина → графит (проверена валидатором) */
  --seq1:#B0A491;--seq2:#8E8271;--seq3:#6D6354;--seq4:#4E463A;--seq5:#2E2A22;
  --f-ui:'Inter','Segoe UI',system-ui,sans-serif;
  --f-serif:'Inter','Segoe UI',system-ui,sans-serif; /* серифа в системе нет */
  --f-mark:'Montserrat','Arial Black',sans-serif;    /* только знак */
  --mono:'IBM Plex Mono',Consolas,ui-monospace,monospace;
  --r:6px;               /* единственный радиус системы */
}
/* ═══════════════ ТЁМНАЯ ТЕМА ═══════════════
   Не инверсия. Скандинавский язык построен на дневном свете, и переворот его убивает:
   чистый чёрный холодный, а вся система тёплая. Поэтому тёмный режим набран
   ОТДЕЛЬНЫМИ ступенями из тех же материалов — морёное дерево вместо мела,
   и порядок слоёв сохранён: холст темнее панели, панель темнее ленты.

   Цвета пересчитаны, а не подобраны: дневной петроль на тёмном тонет, поэтому у режима
   свои две ступени акцента (5.9:1 и 8.0:1 к панели). Флаги подняты по светлоте,
   их текст остаётся токеном --card — он светлый днём и тёмный ночью, и потому
   правило «текст на заливке» работает в обоих режимах без развилки.
   Все 15 пар проверены: минимум 3.09:1 на декоративном, 4.5+ на любом тексте. */
:root[data-theme="dark"]{
  color-scheme:dark;     /* нативные скроллбары, выпадашки select и автозаполнение */
  --ink:#EDE8E0;         /* тёплый белёный, не чистый белый: 13.2:1 */
  --ink2:#CFC8BC;
  --paper:#1C1A16;       /* холст — морёное дерево, не чёрный */
  --card:#24211C;        /* панель */
  --ash:#2E2A23;         /* несущие ленты, шапки таблиц */
  --line:#37322B;
  --line-2:#4A443A;      /* акцентная кромка */
  --grid:#2A2721;
  --steel:#A49C90;       /* вторичный текст, 5.9:1 */
  --steel-soft:#736C62;
  --accent:#5FA8AD;      /* заливка действия: 5.9:1 к панели */
  --accent-2:#7FC2C7;    /* наведение и акцент-текст: 8.0:1 */
  --seal:#EDE8E0;--seal-deep:#FFFFFF;
  --gold:#C1A24F;--gold-ink:#C1A24F;
  --raskal:#CE7069;--raskal-ink:#CE7069;
  --good:#6E9472;--good-ink:#6E9472;
  --seq1:#5C5449;--seq2:#6F6757;--seq3:#8C8372;--seq4:#AAA18F;--seq5:#C8BFAC;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--paper);color:var(--ink);font-family:var(--f-ui);
  font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
body,button,input,select{font-variant-numeric:tabular-nums}
.mono{font-family:var(--mono)}
/* крупные величины — Inter с tabular-nums, а не шрифт знака: моно и Montserrat
   на суммах читаются хуже, чем гротеск с табличными цифрами */
.num{font-family:var(--f-ui);font-weight:650;letter-spacing:-.02em}
.lbl{font-size:11px;font-weight:600;color:var(--steel)}
a{color:inherit}
button{font-family:inherit;cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* ---- оболочка: тонкий topbar + левый sidebar + main ---- */
.shell{display:flex;flex-direction:column;height:100vh;overflow:hidden}
.topbar{flex:none;background:var(--card);color:var(--ink);border-bottom:1px solid var(--line);
  display:flex;align-items:center;gap:16px;padding:0 20px;height:54px;z-index:30}
/* знак: KAD Black 900 · слэш петролем Medium 500 · analytics Light 300 */
.brand{display:flex;align-items:baseline;font-family:var(--f-mark);line-height:1;white-space:nowrap}
.brand .logo{font-weight:900;font-size:20px;letter-spacing:-.01em;color:var(--ink);text-transform:uppercase}
.brand .blade{font-weight:500;font-size:20px;color:var(--accent);padding:0 .17em}
.brand .blade::before{content:'/'}
.brand .sub{font-weight:300;font-size:20px;color:var(--steel);letter-spacing:.01em;text-transform:lowercase}
.burger{display:none;background:none;border:none;font-size:18px;color:var(--steel);padding:4px 8px}
.topbar .spacer{margin-left:auto}
.topbar .avatar{width:30px;height:30px;border-radius:50%;background:var(--paper);border:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:11px;color:var(--steel)}
.topbar .tariff{font-size:11.5px;color:var(--steel)}
.topbar .tariff b{color:var(--ink);font-weight:650}

.body{flex:1;display:flex;min-height:0}
.sidebar{flex:none;width:230px;background:var(--card);border-right:1px solid var(--line);
  overflow-y:auto;display:flex;flex-direction:column}
.main{flex:1;overflow-y:auto;min-width:0}

/* селектор региона (тариф) */
.regsel{margin:14px 14px 6px;position:relative}
.regsel-btn{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;
  border:1px solid var(--line);background:var(--paper);border-radius:var(--r);padding:9px 11px;
  font-size:12.5px;color:var(--ink);font-weight:600;text-align:left}
.regsel-btn .rc{font-family:var(--mono);font-size:11px;color:var(--steel)}
.regsel-pop{position:absolute;z-index:40;top:44px;left:0;right:0;background:var(--card);
  border:1px solid var(--steel-soft);border-radius:var(--r);padding:6px}
.regsel-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 9px;
  border-radius:var(--r);font-size:12.5px;cursor:pointer}
.regsel-item.on{background:var(--paper);color:var(--ink);font-weight:650}
.regsel-item.lock{color:var(--steel);cursor:not-allowed}
.regsel-note{font-size:10.5px;color:var(--steel);padding:6px 9px 2px;border-top:1px solid var(--grid);margin-top:4px}

/* секции и пункты меню */
.sb-section{padding:14px 0 4px}
.sb-label{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--steel-soft);padding:0 18px 6px}
.sb-item{display:flex;align-items:center;gap:10px;padding:9px 18px;font-size:13px;font-weight:550;
  color:var(--steel);cursor:pointer;border-left:2px solid transparent}
.sb-item:hover{background:var(--paper);color:var(--ink)}
.sb-item.on{color:var(--ink);font-weight:600;border-left-color:var(--line-2);background:var(--paper)}
.sb-item .ic{width:16px;text-align:center;flex:none;font-size:14px}
.sb-item .lock{margin-left:auto;font-size:11px;opacity:.6}
.sb-item.locked{color:var(--steel-soft)}
.sb-item.locked:hover{background:var(--paper);color:var(--steel)}
.sb-divider{height:1px;background:var(--grid);margin:8px 16px}
.sb-foot{margin-top:auto;border-top:1px solid var(--grid);padding:8px 0 10px;display:flex;flex-direction:column}

/* меню платформы (верх): что пользователь делает */
.topnav{display:flex;align-items:center;gap:2px;margin-left:22px}
.tn-item{display:flex;align-items:center;gap:7px;background:none;border:none;cursor:pointer;
  height:54px;padding:0 14px;font-size:13px;font-weight:600;color:var(--steel);
  border-bottom:2px solid transparent}
.tn-item:hover{color:var(--ink);background:var(--paper)}
.tn-item.on{color:var(--ink);font-weight:650;border-bottom-color:var(--line-2)}
.tn-item .ic{font-size:13px;opacity:.85}
.tn-item .lock{font-size:10px;opacity:.55}
.tn-item.locked{color:var(--steel-soft)}

/* профиль пользователя (шапка левого меню) */
.sb-user{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--grid)}
.sb-user .avatar{width:32px;height:32px;flex:none;border-radius:50%;background:var(--paper);
  border:1px solid var(--line);display:flex;align-items:center;justify-content:center;
  font-weight:700;font-size:11px;color:var(--steel)}
.sb-user .who{font-size:12px;min-width:0}
.sb-user .who b{display:block;color:var(--ink);font-weight:650;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px}
.sb-user .who span{color:var(--steel);font-size:10.5px}

/* сохранённые выборки */
.sb-sels{min-height:0}
.sb-cnt{display:inline-block;margin-left:5px;background:var(--paper);border:1px solid var(--line);
  border-radius:20px;padding:0 6px;font-size:9.5px;color:var(--steel);vertical-align:1px}
.sb-empty{padding:2px 18px 6px;font-size:11px;line-height:1.5;color:var(--steel-soft)}
.sb-sel{display:flex;align-items:center;border-left:2px solid transparent}
.sb-sel:hover{background:var(--paper)}
.sb-sel:hover .sb-sel-x{opacity:1}
.sb-sel-go{flex:1;min-width:0;display:flex;align-items:center;gap:8px;background:none;border:none;
  cursor:pointer;text-align:left;padding:8px 6px 8px 18px;font-size:12.5px;color:var(--steel)}
.sb-sel-go:hover{color:var(--accent-2)}
.sb-sel-go .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sb-sel-go .n{font-family:var(--mono);font-size:10px;color:var(--steel-soft);flex:none}
.sb-sel-x{opacity:0;background:none;border:none;cursor:pointer;color:var(--steel-soft);
  font-size:11px;padding:8px 12px 8px 4px}
.sb-sel-x:hover{color:var(--raskal)}

/* ---- методология: список статей (Read-режим) ---- */
.doclist{display:flex;flex-direction:column;gap:10px;max-width:900px}
.doccard{display:flex;align-items:flex-start;gap:16px;width:100%;text-align:left;cursor:pointer;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px}
.doccard:hover{border-color:var(--accent)}
.dc-num{font-family:var(--mono);font-size:12px;color:var(--steel-soft);padding-top:2px;flex:none}
.dc-body{flex:1;min-width:0}
.dc-title{font-family:var(--f-serif);font-size:16px;font-weight:700;color:var(--ink);margin-bottom:4px}
.dc-sum{font-family:var(--f-serif);font-size:13px;line-height:1.55;color:var(--steel)}
.dc-go{color:var(--steel-soft);font-size:15px;flex:none;padding-top:2px}
.doccard:hover .dc-go{color:var(--accent-2)}

/* ---- методология: тело документа (HTML из markdown) ---- */
.doc{max-width:820px}
.doc-h1{font-family:var(--f-serif);font-size:27px;font-weight:700;color:var(--ink);letter-spacing:-.005em;margin:6px 0 8px}
.doc-sum{font-family:var(--f-serif);font-size:14px;line-height:1.6;color:var(--steel);margin-bottom:22px;
  padding-bottom:18px;border-bottom:1px solid var(--grid)}
.doc-body{font-family:var(--f-serif);font-size:15px;line-height:1.72;color:var(--ink)}
.doc-body h1{font-size:23px;font-weight:700;margin:30px 0 10px}
.doc-body h2{font-size:19px;font-weight:700;margin:30px 0 10px;padding-top:14px;border-top:1px solid var(--grid)}
.doc-body h3{font-size:16px;font-weight:700;margin:22px 0 8px}
.doc-body p{margin:10px 0}
.doc-body ul,.doc-body ol{margin:10px 0;padding-left:22px}
.doc-body li{margin:5px 0}
.doc-body strong{font-weight:700;color:var(--ink)}
.doc-body a{color:var(--accent-2);text-decoration:none;border-bottom:1px solid rgba(23,71,74,.35)}
.doc-body a:hover{border-bottom-color:var(--accent-2)}
.doc-body code{font-family:var(--mono);font-size:12.5px;background:var(--paper);
  border:1px solid var(--grid);border-radius:var(--r);padding:1px 5px}
.doc-body pre{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);
  padding:14px;overflow-x:auto;margin:14px 0}
.doc-body pre code{border:none;background:none;padding:0;font-size:12px;line-height:1.6}
.doc-body blockquote{margin:14px 0;padding:12px 16px;background:var(--paper);
  border-left:1px solid var(--line-2);border-radius:0 var(--r) var(--r) 0;color:var(--steel);font-size:14px}
.doc-body blockquote p{margin:4px 0}
/* таблицы методологии — широкие, скроллим внутри, а не страницей; данные — мono */
.doc-body table{width:100%;border-collapse:collapse;margin:16px 0;font-size:13px;font-family:var(--f-ui);display:block;overflow-x:auto}
.doc-body thead th{text-align:left;font-size:10.5px;font-weight:650;text-transform:uppercase;
  letter-spacing:.06em;color:var(--steel);border-bottom:1px solid var(--line-2);padding:8px 12px;white-space:nowrap}
.doc-body tbody td{font-family:var(--mono);border-bottom:1px solid var(--grid);padding:9px 12px;vertical-align:top}
.doc-body tbody tr:hover{background:var(--paper)}
.doc-next{margin-top:28px;border:1px solid var(--line);background:var(--card);border-radius:var(--r);
  padding:12px 16px;font-family:var(--f-ui);font-size:13px;font-weight:650;color:var(--ink);cursor:pointer}
.doc-next:hover{border-color:var(--accent);color:var(--accent-2)}

/* сохранение выборки (панель фильтров) */
.savebtn{border:1px solid var(--line);background:var(--paper);border-radius:var(--r);height:36px;padding:0 12px;
  font-size:12px;font-weight:600;color:var(--steel);cursor:pointer}
.savebtn:hover{color:var(--accent-2);border-color:var(--accent)}
.savebtn.on{background:var(--accent);border-color:var(--accent);color:var(--card)}
.savebtn.on:disabled{opacity:.5;cursor:default}
.savebtn.ghost{background:none;border-color:transparent;color:var(--steel-soft)}
.saveform{display:flex;align-items:center;gap:6px}
.saveform input{height:36px;border:1px solid var(--accent);background:var(--card);border-radius:var(--r);
  padding:0 10px;font-size:12.5px;color:var(--ink);width:190px}
.saved-ok{align-self:center;font-size:12px;font-weight:600;color:var(--good-ink)}
.save-err{font-size:11px;color:var(--raskal)}

/* под-навигация раздела (табы вверху main) */
.subnav{display:flex;gap:2px;border-bottom:1px solid var(--line);padding:0 22px;background:var(--card)}
.subnav button{background:none;border:none;border-bottom:2px solid transparent;color:var(--steel);
  font-weight:600;font-size:13px;padding:12px 10px;margin-bottom:-1px}
.subnav button:hover{color:var(--ink)}
.subnav button.on{color:var(--ink);border-bottom-color:var(--line-2)}
.subnav .soon{font-size:9px;color:var(--steel-soft);margin-left:4px}

/* заглушка «скоро» */
.placeholder{max-width:560px;margin:60px auto;text-align:center;padding:0 22px}
.placeholder .pic{font-size:40px;margin-bottom:14px}
.placeholder h2{font-family:var(--f-serif);font-weight:700;font-size:21px;margin:0 0 8px}
.placeholder p{color:var(--steel);font-size:13.5px;line-height:1.6;margin:0 0 6px}
.placeholder .tag{display:inline-block;margin-top:14px;font-size:11.5px;font-weight:600;color:var(--accent-2);
  background:rgba(31,90,94,.08);border:1px solid rgba(31,90,94,.3);border-radius:20px;padding:6px 14px}

@media(max-width:820px){
  .sidebar{position:fixed;top:54px;bottom:0;left:0;z-index:35;transform:translateX(-100%);transition:transform .2s}
  .sidebar.open{transform:none}
  .burger{display:block}
}

.page{max-width:1240px;margin:0 auto;padding:26px 22px 70px;min-width:0}
.h2{font-family:var(--f-serif);font-weight:700;font-size:21px;margin:0 0 3px;letter-spacing:-.005em}
.sub2{color:var(--steel);font-size:13px;margin:0 0 20px}

/* ---- KPI: нейтральные; «горячая» — только левая ember-граница ---- */
.kgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}
@media(max-width:860px){.kgrid{grid-template-columns:repeat(2,1fr)}}
.ktile{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px}
.ktile .kn{font-family:var(--f-ui);font-weight:650;font-size:28px;line-height:1.1;letter-spacing:-.02em;color:var(--ink)}
.ktile.hot{border-color:var(--line-2)}
.ktile .kt{margin-top:5px;font-size:11px;font-weight:550;color:var(--steel)}

/* ---- card ---- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px 22px}
.grid2{display:grid;grid-template-columns:1.4fr 1fr;gap:16px}
/* без min-width:0 колонка раздувается под ширину своего содержимого (grid-элементы по
   умолчанию min-width:auto), и широкая таблица внутри вылезает за карточку вместо того,
   чтобы скроллиться в своём .tblwrap */
.grid2>*{min-width:0}
/* карточка сделки: слева факты (сделка/объект — компактные dl), справа проверка + кандидаты +
   первоисточник (сетка кандидатов и скриншот выигрывают от ширины) — обратная пропорция */
.grid2.rev{grid-template-columns:1fr 1.35fr}
@media(max-width:900px){.grid2{grid-template-columns:1fr}}
.cap{font-size:11px;font-weight:600;color:var(--steel);margin-bottom:12px}

/* coverage bar: нейтральные сегменты, подписи процентов внутри, зазоры 2px */
.covbar{display:flex;gap:2px;height:36px;margin:4px 0 10px}
.covbar>div{display:flex;align-items:center;justify-content:center;border-radius:var(--r);
  font-weight:600;font-size:12px;min-width:0;overflow:hidden}
.sm{background:var(--seq3);color:var(--card)}
.sr{background:var(--seq1);color:var(--ink)}
.sn{background:var(--ash);color:var(--ink2)}

/* mini bars list */
.vlist{display:flex;flex-direction:column;gap:9px}
.vrow{display:grid;grid-template-columns:1fr auto;gap:6px 14px;align-items:baseline;font-size:13px;margin-bottom:2px}
.vrow .vn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:550}
.vrow .vtrack{grid-column:1/-1;height:7px;background:var(--paper);border:1px solid var(--grid);border-radius:var(--r);overflow:hidden}
.vrow .vfill{height:100%;background:var(--seq3);border-radius:var(--r)}
.vrow .vv{font-family:var(--mono);font-size:12px;text-align:right;color:var(--steel);white-space:nowrap}
.vrow .vv b{color:var(--ink);font-weight:650}

/* ---- filters ---- */
.fpanel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;margin-bottom:14px}
.frow{display:flex;flex-wrap:wrap;gap:10px 12px;align-items:flex-end}
.frow+.frow{margin-top:12px;padding-top:12px;border-top:1px dashed var(--grid)}
.fg{display:flex;flex-direction:column;gap:4px}
.fg>label{font-size:10.5px;font-weight:600;color:var(--steel)}
.filters select,.filters input,.frow select,.frow input{font-family:inherit;font-size:13px;border:1px solid var(--line);
  background:var(--card);border-radius:var(--r);padding:8px 11px;color:var(--ink);height:36px;max-width:100%}
/* select не должен растягиваться на весь flex-ряд */
.frow select{width:auto;min-width:140px;max-width:280px}
.frow input.num{width:98px;font-family:var(--mono);font-size:13px;font-weight:400;letter-spacing:0}
.frow input.city{width:190px}
.frow input.date{font-family:var(--mono);font-size:12.5px}
.dash{color:var(--steel);align-self:center;padding:0 2px}
.count{margin-left:auto;font-size:12.5px;color:var(--steel);align-self:center}
.count b{font-family:var(--mono);color:var(--ink);font-weight:650}
.reset{border:1px solid var(--line);background:var(--paper);border-radius:var(--r);padding:8px 12px;height:36px;
  font-size:12px;font-weight:600;color:var(--steel)}
.reset:hover{color:var(--accent-2);border-color:var(--accent)}

/* вкладки раздела «Аналоги»: Сделки | Рыночная стоимость по решениям */
.atabs{display:flex;gap:4px;margin:-4px 0 16px;border-bottom:1px solid var(--line)}
.atab{background:none;border:none;padding:10px 16px;font-size:13.5px;font-weight:600;color:var(--steel);
  cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}
.atab:hover{color:var(--ink)}
.atab.on{color:var(--ink);font-weight:650;border-bottom-color:var(--line-2)}

/* врезка «есть решение ГБУ/суда» в карточке сделки */
.fdgko-ref:hover{border-color:var(--accent)!important;background:rgba(31,90,94,.04)}

/* multiselect */
.ms{position:relative}
.ms-btn{display:flex;align-items:center;gap:8px;height:36px;border:1px solid var(--line);background:var(--card);
  border-radius:var(--r);padding:0 11px;font-family:inherit;font-size:13px;color:var(--ink);min-width:150px;justify-content:space-between}
.ms-btn.on{border-color:var(--accent);color:var(--accent-2)}
.ms-btn .cnt{font-family:var(--mono);font-size:11px;font-weight:650;background:var(--accent);color:var(--card);border-radius:20px;padding:1px 7px}
.ms-pop{position:absolute;z-index:30;top:40px;left:0;width:340px;max-height:320px;overflow:auto;
  background:var(--card);border:1px solid var(--steel-soft);border-radius:var(--r);padding:6px}
.ms-head{display:flex;justify-content:space-between;gap:8px;padding:6px 8px 8px;border-bottom:1px solid var(--grid);margin-bottom:4px;position:sticky;top:-6px;background:var(--card)}
.ms-head button{font-size:11px;font-weight:600;border:none;background:none;color:var(--steel)}
.ms-head button.done{color:var(--accent-2);font-weight:650}
.ms-item{display:grid;grid-template-columns:18px 1fr auto;gap:9px;align-items:center;padding:7px 8px;border-radius:var(--r);cursor:pointer;font-size:13px}
.ms-item:hover{background:var(--paper)}
.ms-item input{width:15px;height:15px;accent-color:var(--accent-2)}
.ms-item .ms-n{font-family:var(--mono);font-size:11px;color:var(--steel)}

/* ---- table ---- */
.tblwrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--card);
  width:100%;min-width:0;max-width:100%}
/* липкая шапка таблицы при вертикальном скролле длинного списка */
.tblwrap.stick{max-height:calc(100vh - 240px);overflow:auto}
.tblwrap.stick table.deals th{position:sticky;top:0;z-index:1}
table.deals{border-collapse:collapse;width:100%;min-width:1080px}
/* шапка — светлый ясень с графитовым текстом и линией 2px снизу: чёрная полоса во всю
   ширину читается индустриально и спорит со скандинавским материалом */
table.deals th{font-family:var(--f-ui);font-weight:600;font-size:11px;color:var(--ink);text-align:right;
  padding:12px 10px;border-bottom:1px solid var(--line-2);white-space:nowrap;background:var(--ash)}
table.deals th.l{text-align:left}
table.deals td{font-family:var(--f-ui);font-size:13px;padding:10px 10px;text-align:right;border-bottom:1px solid var(--grid);white-space:nowrap}
table.deals td.l{text-align:left}
table.deals td.mono,table.deals th.mono{font-family:var(--mono);font-size:12px}
table.deals tbody tr{cursor:pointer}
table.deals tbody tr:hover{background:var(--paper)}
/* горячая строка — полоса ember на первой ячейке (border-collapse игнорирует border на tr) */
table.deals td:first-child{border-left:3px solid transparent}
table.deals tbody tr.hot td:first-child{border-left-color:var(--accent)}
.vri-cell{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink2)}
.rub{font-family:var(--mono);font-weight:650;font-size:13.5px}

/* ---- флаги ----
   Залита ровно ОДНА группа — качество цены. Она несёт вывод, ради которого страницу
   и открыли, и потому имеет право на цвет. Состояние матчинга и уверенность — служебное,
   они живут тихой пилюлей на тёплой кромке: если залить и их, экран превращается
   в грядку цветных плашек, а вывод в ней теряется.
   Фигур внутри нет: цвет и так продублирован СЛОВОМ в самой пилюле, а метка только
   утяжеляла — в ч/б различает подпись, а не форма квадрата. */
.pill{display:inline-flex;align-items:center;font-family:var(--f-ui);font-weight:600;
  font-size:11px;padding:4px 11px;border-radius:20px;white-space:nowrap;
  border:1px solid transparent}
.pill .d{display:none}

/* служебные состояния — тихие: заливки нет, только тёплая кромка */
.p-matched,.p-high{background:var(--card);color:var(--ink);border-color:var(--line-2)}
.p-review,.p-medium{background:var(--card);color:var(--gold-ink);border-color:var(--gold-ink)}
.p-no,.p-low{background:transparent;color:var(--steel);border-color:var(--line)}

/* качество цены — единственная залитая группа: хвойный / охра / глухой кармин */
.p-ok{background:var(--good);color:var(--card)}
.p-suspicious{background:var(--gold);color:var(--card)}
.p-outlier{background:var(--raskal);color:var(--card)}
/* выкуп в силу закона — не качество цены: нейтрально и без заливки */
.p-statutory{background:transparent;color:var(--steel);border-color:var(--line)}
/* заголовки блоков карточки сделки: сделка / наша аналитика / объект / кандидаты —
   граница снизу вместо тени, читается как раздел, а не подпись */
.blk-h{font-family:var(--f-ui);font-weight:700;font-size:13px;color:var(--ink);letter-spacing:.005em;
  margin-bottom:12px;padding-bottom:9px;border-bottom:1px solid var(--grid)}
/* наша аналитика — статус/уверенность/качество всегда видны (free-тариф тоже) */
.ana-flags{display:flex;flex-wrap:wrap;gap:8px}
.anacard .qd-wrap{margin-top:14px}
.qd-wrap{border-radius:var(--r);padding:12px 14px;background:var(--paper);border:1px solid var(--line)}
.qd-wrap.stat{background:rgba(111,107,101,.05);border-color:var(--steel-soft)}
.qd-wrap.err{background:rgba(140,58,52,.05);border-color:var(--raskal)}
.qd-ctx{font-size:11.5px;color:var(--steel);margin-bottom:6px}
.qd{font-size:12.5px;color:var(--steel);line-height:1.5}
.qd b{color:var(--ink);font-weight:650}
/* распределение качества на дашборде */
.qbar{display:flex;gap:2px;height:30px;margin:4px 0 10px}
.qbar>div{display:flex;align-items:center;justify-content:center;border-radius:var(--r);font-size:11px;font-weight:600;min-width:0;overflow:hidden;color:var(--card)}
.qbar .qok{background:var(--good)}
.qbar .qsusp{background:var(--gold)}
.qbar .qout{background:var(--raskal)}
.qbar .qstat{background:var(--steel)}
.chip{display:inline-flex;align-items:center;gap:6px;height:36px;border:1px solid var(--line);background:var(--card);
  border-radius:var(--r);padding:0 12px;font-size:12.5px;font-weight:600;color:var(--steel);cursor:pointer}
.chip.on{border-color:var(--accent);color:var(--accent-2);background:rgba(31,90,94,.06)}
.chip .box{width:14px;height:14px;border-radius:var(--r);border:1.5px solid var(--line)}
.chip.on .box{background:var(--accent-2);border-color:var(--accent-2)}

/* ссылка-кнопка внутри текста (переход к парной сделке в блоке «Единый объект»).
   Именно button, а не <a>: переход внутренний, через роутер, без адреса-приманки. */
.linkish{border:none;background:none;padding:0;font:inherit;font-weight:650;
  color:var(--accent-2);cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.linkish:hover{opacity:.75}

/* pagination */
.pager{display:flex;gap:8px;align-items:center;justify-content:center;margin-top:16px}
.pager button{border:1px solid var(--line);background:var(--card);border-radius:var(--r);padding:7px 13px;font-weight:600;font-size:13px}
.pager button:disabled{opacity:.4;cursor:default}
.pager .pg{font-family:var(--mono);font-size:12.5px;color:var(--steel)}

/* ---- deal card ---- */
.back{display:inline-flex;align-items:center;gap:7px;background:none;border:none;color:var(--steel);
  font-size:12.5px;font-weight:600;padding:0;margin-bottom:14px}
.back:hover{color:var(--accent-2)}
/* два выхода назад: история браузера (главный) и именованный раздел (для прямой ссылки).
   Второй приглушён и отделён чертой — он запасной путь, а не равноправная кнопка. */
.backrow{display:flex;align-items:center;gap:14px;margin-bottom:14px;flex-wrap:wrap}
.backrow .back{margin-bottom:0}
.backrow .back.alt{color:var(--steel-soft);font-weight:550;
  border-left:1px solid var(--line);padding-left:14px}
/* подпись под героем карточки: ЧТО это за объект (тип + назначение/ВРИ) */
.hero-kind{font-family:var(--f-ui);font-size:13px;font-weight:650;color:var(--ink2);margin-top:5px}
.hero-kind .free{font-weight:400}

/* ---- кадастровый номер как ссылка на карточку объекта ----
   Пунктир, а не сплошное подчёркивание: номер прежде всего ДАННОЕ, которое читают и
   копируют, и только потом переход. Ember появляется на наведении — до него ссылка
   не должна конкурировать с ценой за внимание. */
.cadlink{border:none;background:none;padding:0;font-family:var(--mono);font-size:12px;
  font-weight:500;color:var(--ink);cursor:pointer;text-align:left;white-space:nowrap;
  border-bottom:1px dotted var(--steel-soft)}
.cadlink:hover{color:var(--accent-2);border-bottom-color:var(--accent-2);border-bottom-style:solid}
.cadlink.big{font-size:18px;font-weight:650}
td .cadlink{font-size:12px}

/* ---- карточка объекта: переход в ЕОН и обратно ----
   Блок стоит выше характеристик намеренно: если объект продавался в составе
   комплексного договора, цена его собственной строки не рыночная, и это надо
   прочитать раньше всего остального. */
.eonbar{background:var(--card);border:1px solid var(--line-2);
  border-radius:var(--r);padding:16px 18px;margin-bottom:16px}
.eonbar .eb-h{font-family:var(--f-ui);font-weight:700;font-size:13px;color:var(--ink);
  margin-bottom:6px}
.eb-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:11px 0;
  border-top:1px solid var(--grid)}
.eb-main{flex:1;min-width:220px;display:flex;flex-direction:column;gap:5px}
.eb-kind{display:flex;gap:7px;flex-wrap:wrap}
.eb-num{font-family:var(--mono);font-size:14px;font-weight:650;color:var(--ink)}
.eb-pair{font-size:12px;color:var(--steel)}
.eb-go{flex:none;border:1px solid var(--line);background:var(--paper);border-radius:var(--r);
  padding:8px 14px;font-family:var(--f-ui);font-size:12.5px;font-weight:650;color:var(--ink)}
.eb-go:hover{border-color:var(--seal);color:var(--seal)}

/* объяснение link-сопоставления: объект выбран связкой ЗУ↔ОКС, а не матчером.
   Ember-граница — тот же язык, что у блока «Объекты на участке»: и там, и здесь
   говорит связка. */
.linkmatch{background:var(--ash);border:1px solid var(--line);
  border-radius:0 var(--r) var(--r) 0;padding:11px 13px;margin-bottom:14px}
.linkmatch .lm-h{font-family:var(--f-ui);font-weight:700;font-size:12px;color:var(--ink);margin-bottom:5px}
.linkmatch .lm-t{font-size:12.5px;line-height:1.5;color:var(--steel);margin:0 0 7px}
.linkmatch .lm-t b{color:var(--ink);font-weight:650}
.linkmatch .lm-a{font-size:12px}

/* строка перехода в единый объект из карточки сделки. Не «плашка»: при своей цене
   предупреждать не о чем, а дорога ко второй половине договора нужна всегда. */
.eonline{font-size:12.5px;color:var(--ink2);background:var(--paper);border:1px solid var(--grid);
  border-radius:var(--r);padding:9px 12px;margin-bottom:14px}

/* ячейка стороны пары ЕОН: сверху код сделки, снизу кадастровый номер объекта —
   два разных перехода из одной колонки, поэтому в столбик, а не в строку */
.pair-cell{display:flex;flex-direction:column;gap:2px;align-items:flex-start}
.pair-cell .cadlink{font-size:11px;color:var(--steel)}
.pair-cell .cadlink:hover{color:var(--accent-2)}

/* строка-ссылка на решение ГБУ/суда (карточка объекта) */
.fd-row{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;
  text-align:left;background:var(--paper);border:1px solid var(--line);border-radius:var(--r);
  padding:9px 12px;margin-bottom:6px;font-family:var(--f-ui);font-size:12.5px;color:var(--ink)}
.fd-row:hover{border-color:var(--accent);background:rgba(31,90,94,.04)}
.fd-row .mono{font-family:var(--mono);font-weight:650}

/* переход к объекту по номеру (шапка) — вход в граф платформы без списка под рукой */
.objfind{position:relative;margin-left:auto}
.objfind input{width:210px;height:32px;border:1px solid var(--line);background:var(--paper);
  border-radius:var(--r);padding:0 10px;font-family:var(--mono);font-size:12px;color:var(--ink)}
.objfind input:focus{border-color:var(--accent);outline:none}
.objfind-pop{position:absolute;z-index:40;top:38px;right:0;width:320px;max-height:320px;
  overflow:auto;background:var(--card);border:1px solid var(--steel-soft);border-radius:var(--r);padding:5px}
.objfind-item{display:flex;align-items:baseline;gap:9px;width:100%;text-align:left;background:none;
  border:none;border-radius:var(--r);padding:8px 9px;font-family:var(--f-ui);font-size:12.5px;color:var(--ink)}
.objfind-item:hover{background:var(--paper)}
.objfind-item .cn{font-family:var(--mono);font-size:12px;font-weight:600;flex:none}
.objfind-item .ds{color:var(--steel);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.objfind-empty{padding:10px;font-size:12px;color:var(--steel)}
.cardhead{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.cardhead .uid{font-family:var(--mono);font-size:12.5px;color:var(--steel)}
.cardhead h1{font-family:var(--f-ui);font-weight:650;font-size:30px;margin:2px 0 0;line-height:1.1;letter-spacing:-.02em}
/* герой карточки сделки — идентификатор, не число: моно по правилу нотации */
.cardhead h1.uid-hero{font-family:var(--mono);font-weight:600;font-size:22px;letter-spacing:0}
.kv{display:grid;grid-template-columns:auto 1fr;gap:9px 16px;font-size:13.5px}
.kv dt{font-family:var(--f-ui);font-size:11px;font-weight:600;color:var(--steel);white-space:nowrap;padding-top:2px}
.kv dd{margin:0;font-weight:550}
.kv dd.big{font-family:var(--mono);font-weight:650;font-size:17px}
.bignum{font-weight:650;font-size:22px;color:var(--ink)}
.obj{border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;background:var(--card)}
.obj.matched{border-color:var(--line-2)}

/* первоисточник (платная зона) — светлая карточка, ember только в бейдже */
.prov{background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:var(--r);padding:20px 22px;position:relative;overflow:hidden}
.prov h3{font-family:var(--f-ui);font-weight:650;color:var(--ink);font-size:14px;margin:0 0 4px;display:flex;align-items:center;gap:8px}
.prov .lock{font-family:var(--f-ui);font-size:11px;font-weight:600;background:rgba(31,90,94,.12);color:var(--accent-2);padding:2px 9px;border-radius:20px}
.prov .pdesc{font-family:var(--f-ui);font-size:12.5px;color:var(--steel);margin:0 0 16px}
.prov .kv dt{color:var(--steel)}.prov .kv dd{color:var(--ink)}
/* реальный скриншот + пакет-доказательство (блок «Первоисточник») */
.shot-cap{font-family:var(--f-ui);font-size:10.5px;font-weight:600;color:var(--steel);margin-bottom:8px}
.shot-real{margin-top:16px;border-top:1px solid var(--grid);padding-top:14px}
.shot-img{width:100%;border-radius:var(--r);border:1px solid var(--line);display:block;background:#fff}
.dl-btn{display:inline-block;margin-top:8px;font-family:var(--f-ui);font-size:11.5px;font-weight:600;color:var(--steel);
  border:1px solid var(--line);border-radius:var(--r);padding:5px 10px;text-decoration:none}
.dl-btn:hover{border-color:var(--seal);color:var(--seal)}
.report{margin-top:16px;border-top:1px solid var(--grid);padding-top:14px}
.report-txt{font-family:var(--f-ui);font-size:12.5px;color:var(--ink2);line-height:1.55;margin:0 0 10px;background:var(--paper);
  border:1px solid var(--grid);border-radius:var(--r);padding:11px 13px}
.copybtn{font-family:var(--f-ui);font-size:12px;font-weight:600;background:var(--ink2);color:var(--card);border:none;border-radius:var(--r);padding:7px 14px}
.copybtn:hover{background:var(--ink)}
.livelink{color:var(--accent-2);font-family:var(--mono);font-size:12px;text-decoration:none;word-break:break-all}
.livelink:hover{text-decoration:underline}

/* карточки кандидатов */
.cand-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin-top:12px}
.cand{border:1px solid var(--line);border-radius:var(--r);padding:12px 13px;background:var(--card)}
.cand.chosen{border-color:var(--line-2);background:var(--paper)}
.cand-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:9px}
.cand-head .mono{font-family:var(--mono);font-size:12.5px;font-weight:600;letter-spacing:-.01em}
.cand-kv{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;margin:0;font-size:12px}
.cand-kv dt{font-family:var(--f-ui);font-size:10px;font-weight:600;color:var(--steel);padding-top:1px}
.cand-kv dd{margin:0;color:var(--ink2)}
.mkbtn{font-family:var(--f-ui);font-size:11px;font-weight:600;border:1px solid var(--line);background:var(--paper);
  border-radius:var(--r);padding:4px 9px;color:var(--steel);white-space:nowrap}
.mkbtn:hover{border-color:var(--accent);color:var(--accent-2)}
.cand-more{font-size:12px;color:var(--steel);margin-top:10px}

/* ---- экран входа ---- */
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--paper);padding:20px}
.login-card{width:100%;max-width:360px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  padding:28px 26px;display:flex;flex-direction:column;gap:12px}
.login-card h1{font-family:var(--f-serif);font-weight:700;font-size:21px;margin:2px 0 8px;text-align:center}
.login-card label{display:flex;flex-direction:column;gap:5px;font-family:var(--f-ui);font-size:11px;font-weight:600;color:var(--steel)}
.login-card input{font-family:var(--mono);font-size:14px;border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;color:var(--ink)}
/* select оформляем заодно с input: раньше его в карточке не было, и системный
   вид выпадающего списка выбивался бы из формы. Фон задаётся явно — иначе в
   тёмной теме поле остаётся белым (color-scheme помогает не во всех браузерах). */
.login-card select{font-family:var(--f-ui);font-size:13.5px;border:1px solid var(--line);
  border-radius:var(--r);padding:10px 12px;color:var(--ink);background:var(--card)}
.login-card select:focus{outline:none;border-color:var(--accent)}
/* Предупреждение «данных пока нет» — спокойное, а не тревожное: это не ошибка
   человека и не сбой, а честное описание положения дел. Поэтому охра, не кармин. */
.login-wait{background:rgba(138,106,31,.08);border:1px solid rgba(138,106,31,.3);
  color:var(--gold-ink);border-radius:var(--r);padding:9px 11px;
  font-family:var(--f-ui);font-size:12px;line-height:1.55}
.login-btn{margin-top:6px;font-family:var(--f-ui);background:var(--ink2);color:var(--card);border:none;border-radius:var(--r);padding:11px;font-weight:600;font-size:14px}
.login-btn:hover{background:var(--ink)}
.login-btn:disabled{opacity:.6}
.login-err{background:rgba(140,58,52,.08);border:1px solid rgba(140,58,52,.3);color:var(--raskal-ink);border-radius:var(--r);padding:8px 11px;font-family:var(--f-ui);font-size:12.5px}
.login-demo{margin-top:8px;padding-top:12px;border-top:1px solid var(--grid);font-family:var(--f-ui);font-size:11.5px;color:var(--steel);line-height:1.7}
.login-demo b{color:var(--ink)}

/* ---- вкладки «Вход / Регистрация» ---- */
/* Две вкладки вместо ссылки «нет аккаунта?»: обе двери видны сразу, и человек
   с лендинга не ищет, куда нажать. Переключение не перезагружает страницу —
   введённые email и пароль сохраняются при переходе между вкладками. */
/* Переключатель темы виден и ДО входа: человек, которому светло или темно
   неудобно, не должен сначала логиниться, чтобы это исправить. */
.login-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.login-back{font-family:var(--f-ui);font-size:11.5px;font-weight:600;
  color:var(--steel);text-decoration:none}
.login-back:hover{color:var(--ink)}
.login-tabs{display:flex;gap:4px;background:var(--paper);border:1px solid var(--line);
  border-radius:var(--r);padding:3px;margin-bottom:6px}
.login-tab{flex:1;background:none;border:none;border-radius:calc(var(--r) - 2px);
  padding:8px 10px;font-family:var(--f-ui);font-size:13px;font-weight:600;
  color:var(--steel);cursor:pointer}
.login-tab:hover{color:var(--ink)}
.login-tab.is-on{background:var(--card);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.06)}
.login-opt{font-weight:400;color:var(--steel-soft);text-transform:none}
/* Что именно даёт бесплатный тариф — прямо под кнопкой. Обещание с лендинга
   («без карты») должно подтверждаться в момент, когда человек его принимает,
   а не остаться на предыдущей странице. */
.login-note{font-family:var(--f-ui);font-size:11.5px;line-height:1.6;color:var(--steel);
  background:var(--paper);border:1px solid var(--grid);border-radius:var(--r);padding:9px 11px}

/* ---- выход, замок значения, стена первоисточника (free-тариф) ---- */
.themebtn{background:none;border:1px solid var(--line);border-radius:var(--r);width:32px;height:32px;
  flex:none;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--steel);margin-left:10px}
.themebtn:hover{border-color:var(--line-2);color:var(--ink)}
.logout{background:none;border:1px solid var(--line);border-radius:var(--r);padding:6px 12px;font-family:var(--f-ui);font-size:12px;font-weight:600;color:var(--steel)}
.logout:hover{border-color:var(--accent);color:var(--accent-2)}
.lockv{color:var(--steel-soft);font-weight:600;font-size:12.5px;white-space:nowrap}
.prov-wall{margin-top:18px;border:1px dashed var(--line);border-radius:var(--r);padding:26px 20px;text-align:center;background:var(--paper)}
.prov-wall .wall-lock{font-size:32px;margin-bottom:10px}
.prov-wall .wall-text{font-family:var(--f-ui);font-size:13px;color:var(--steel);line-height:1.6;margin:0 0 16px}
.prov-wall .wall-text b{color:var(--ink)}
.prov-wall .wall-btn{background:var(--accent);color:var(--card);border:none;border-radius:var(--r);padding:11px 20px;font-family:var(--f-ui);font-weight:600;font-size:13.5px}
.prov-wall .wall-btn:hover{background:var(--accent-2)}

.loading{padding:60px;text-align:center;color:var(--steel);font-size:13px}
.err{background:rgba(140,58,52,.08);border:1px solid rgba(140,58,52,.3);color:var(--raskal-ink);border-radius:var(--r);padding:16px 18px;font-family:var(--f-ui);font-size:13px}
.hint{font-family:var(--f-ui);font-size:12px;color:var(--steel);margin-top:10px}
.free{font-family:var(--f-ui);font-size:11px;color:var(--steel)}

/* ---- Корректировки: коэффициенты для матрицы оценщика ---- */
.h3{font-family:var(--f-serif);font-size:16px;font-weight:700;margin:28px 0 8px}
.note{background:rgba(31,90,94,.05);border:1px solid rgba(31,90,94,.25);border-radius:var(--r);
      padding:12px 14px;font-family:var(--f-ui);font-size:12.5px;color:var(--ink2);line-height:1.5;margin:0 0 14px}
.segbar{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 8px}

/* формула: три сомножителя, которые оценщик перемножает сам */
.adj-formula{display:flex;flex-wrap:wrap;align-items:center;gap:10px;background:var(--card);
      border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;margin:0 0 20px}
.adj-formula .af-t{font-family:var(--f-ui);font-size:12px;color:var(--steel)}
.adj-formula .af-op{color:var(--steel-soft);font-size:14px}
.adj-formula .af-x{display:flex;flex-direction:column;gap:2px}
.adj-formula .af-x b{font-family:var(--mono);font-size:13px;white-space:nowrap}
.adj-formula .af-x span{font-family:var(--f-ui);font-size:10.5px;color:var(--steel);text-transform:uppercase;letter-spacing:.06em}

/* коэффициент площади крупно — с интервалом и объёмом выборки */
.kbox{display:flex;flex-wrap:wrap;align-items:baseline;gap:16px;background:var(--card);
      border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;margin:0 0 10px}
.kbox .kb-v{font-size:22px;font-weight:600;font-family:var(--mono)}
.kbox .kb-ci{font-size:12px;color:var(--steel);font-family:var(--mono)}
.kbox .kb-n{font-family:var(--f-ui);font-size:12px;color:var(--steel);margin-left:auto}

/* район, где сырая медиана врёт сильно: подсветить — это и есть двойной счёт площади */
table.deals td.bias-hot{color:var(--accent-2);font-weight:600}

/* ---- График динамики: одна серия, полоса доверия, курсор с подсказкой ---- */
.chart{position:relative;background:var(--card);border:1px solid var(--line);border-radius:var(--r);
       padding:10px 6px 4px;margin:0 0 14px}
.chart svg{display:block;width:100%;height:auto}

/* сетка и оси — на тон от подложки, сплошные: пунктир читался бы как «порог» */
.ch-grid{stroke:var(--grid);stroke-width:1}
.ch-ytick{fill:var(--steel);font-family:var(--mono);font-size:10px;text-anchor:end;font-variant-numeric:tabular-nums}
.ch-xtick{fill:var(--steel);font-family:var(--mono);font-size:10px}

/* Ряд ведёт графит, а не акцент: в этой палитре цвет не различает ряды (замер —
   приглушённые тона дают ΔE 2.3 при протанопии), поэтому идентичность несут положение
   и вес. Кирпич остаётся ровно на маркере последней точки — на одном выводе. */
.ch-band{fill:var(--ink);fill-opacity:.07;stroke:none}
.ch-line{fill:none;stroke:var(--ink);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
/* кольцо цветом подложки, а не обводка: маркер не «обведён», а отделён от полосы */
.ch-dot{fill:var(--accent);stroke:var(--card);stroke-width:2}
.ch-cross{stroke:var(--steel-soft);stroke-width:1}
/* значение — текстовым токеном: цвет серии несёт маркер, а не цифра */
.ch-end{fill:var(--ink);font-family:var(--mono);font-size:11px;font-weight:600;font-variant-numeric:tabular-nums}

.ch-tip{position:absolute;top:14px;transform:translateX(-50%);pointer-events:none;
        background:var(--ink);color:var(--card);border-radius:var(--r);padding:8px 10px;white-space:nowrap;z-index:2}
.ch-tip .ct-q{font-family:var(--f-ui);font-size:10px;opacity:.65;text-transform:uppercase;letter-spacing:.06em}
.ch-tip .ct-v{font-family:var(--mono);font-size:14px;font-weight:600;margin-top:2px;font-variant-numeric:tabular-nums}
.ch-tip .ct-ci,.ch-tip .ct-n{font-family:var(--mono);font-size:11px;opacity:.75;font-variant-numeric:tabular-nums}
/* абзац внутри пояснительной плашки: плашка держит несколько предложений подряд */
.note .np{margin:0 0 6px}
.note .np:last-child{margin-bottom:0}

/* ---- Фильтр ВРИ по сегментам + селектор населённого пункта ---- */
.ms-pop.wide{width:380px}
.seg-grp{border-bottom:1px solid var(--grid)}
.seg-grp:last-child{border-bottom:none}
.seg-hd{display:flex;align-items:center}
.seg-hd .ms-item.seg{flex:1;font-weight:600}
.seg-hd .ms-item.seg .seg-nm{color:var(--ink)}
.seg-ex{width:26px;height:30px;border:none;background:none;color:var(--steel);cursor:pointer;font-size:11px;flex:none}
.ms-item.sub{margin-left:14px;font-size:12.5px;color:var(--steel)}
.ms-item.sub span:first-of-type{color:var(--ink)}
select.place{height:36px;border:1px solid var(--line);border-radius:var(--r);background:var(--card);
  padding:0 10px;font-family:inherit;font-size:13px;min-width:220px;max-width:280px}

/* CTA в карточке: скачать официальное резюме проверки (настоящий PDF с сервера) — бордо,
   т.к. это путь к заверению/печати. Сам документ рисует backend/app/summary_pdf.py (ReportLab). */
.kr-cta-wrap{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px}
.kr-cta{background:var(--accent);color:var(--card);border:none;border-radius:var(--r);padding:11px 18px;
  font-family:var(--f-ui);font-weight:600;font-size:13px}
.kr-cta:hover{background:var(--accent-2)}
.kr-cta-cap{font-family:var(--f-ui);font-size:11.5px;color:var(--steel)}

/* ================= ДЕЛА =================
   Дело — рабочее место оценщика: объект, отобранные аналоги, отклонённые с причиной.
   Визуально это ТАБЛИЦА и КАРТОЧКА, а не новый жанр: те же ленты, тот же ясень,
   те же пилюли. Петроль тут ровно в одном месте — «завести дело». */

/* статусы дела: залитых нет, различает подпись и кромка */
.cs-draft{background:var(--card);color:var(--steel);border-color:var(--line-2)}
.cs-sub{background:var(--card);color:var(--gold-ink);border-color:var(--gold-ink)}
.cs-def{background:var(--good);color:var(--card)}
.cs-rej{background:transparent;color:var(--raskal-ink);border-color:var(--raskal-ink)}

/* шапка списка дел: заголовок слева, заведение нового справа */
.pagehead{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;
  flex-wrap:wrap;margin-bottom:20px}
.pagehead h1{font-family:var(--f-ui);font-weight:650;font-size:28px;margin:0 0 6px;letter-spacing:-.02em}
.pagehead .sub{max-width:62ch;font-size:13px;line-height:1.55;color:var(--steel);margin:0}
.case-new{display:flex;gap:8px;align-items:center}
.case-new input{height:36px;min-width:230px;border:1px solid var(--line-2);background:var(--card);
  border-radius:var(--r);padding:0 11px;font-family:var(--f-ui);font-size:13px;color:var(--ink)}
.case-new input:focus{border-color:var(--accent);outline:none}
.cases-t tbody tr{cursor:pointer}

/* карточка дела */
.case-status{display:flex;align-items:center;gap:10px;margin-left:auto}
.case-status select{height:32px;border:1px solid var(--line-2);background:var(--card);border-radius:var(--r);
  padding:0 8px;font-family:var(--f-ui);font-size:12.5px;color:var(--ink)}
.case-grp{margin-bottom:16px}
.case-act{white-space:nowrap}
.case-act button{border:1px solid var(--line-2);background:var(--card);border-radius:var(--r);
  padding:4px 9px;margin-right:5px;font-family:var(--f-ui);font-size:11.5px;color:var(--ink2)}
.case-act button:hover{border-color:var(--accent);color:var(--accent-2)}
.case-act button.x{color:var(--steel-soft);padding:4px 7px}
.case-act button.x:hover{color:var(--raskal-ink);border-color:var(--raskal-ink)}

/* строка ввода причины — раскрывается прямо под аналогом */
.reason-row td{background:var(--paper);border-top:1px solid var(--line)}
.reason-row form{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:4px 0 2px}
.reason-row .lbl{font-family:var(--f-ui);font-size:12px;font-weight:600;color:var(--ink2)}
.reason-row input{flex:1;min-width:280px;height:34px;border:1px solid var(--accent);background:var(--card);
  border-radius:var(--r);padding:0 11px;font-family:var(--f-ui);font-size:13px;color:var(--ink)}
.reason-row .hint{font-family:var(--f-ui);font-size:11.5px;color:var(--steel);padding:2px 0 6px}

.case-note{width:100%;border:1px solid var(--line-2);background:var(--card);border-radius:var(--r);
  padding:10px 12px;font-family:var(--f-ui);font-size:13px;line-height:1.5;color:var(--ink);resize:vertical}
.case-note:focus{border-color:var(--accent);outline:none}

/* журнал дела: время — моно, событие — подпись, кто — тихо справа */
.case-log{display:flex;flex-direction:column;gap:7px;max-height:280px;overflow-y:auto}
.case-log .ev{display:grid;grid-template-columns:118px 96px 1fr auto;gap:10px;align-items:baseline;
  font-family:var(--f-ui);font-size:12px;padding-bottom:6px;border-bottom:1px solid var(--grid)}
.case-log .ev .t{color:var(--steel);font-size:11.5px}
.case-log .ev .k{font-weight:600;color:var(--ink2)}
.case-log .ev .p{color:var(--steel);font-size:11.5px;overflow:hidden;text-overflow:ellipsis}
.case-log .ev .u{color:var(--steel-soft);font-size:11px}

/* кнопка «в дело» и её поповер */
.addcase{position:relative;display:inline-block}
.ac-btn{border:1px solid var(--line-2);background:var(--card);border-radius:var(--r);
  padding:6px 11px;font-family:var(--f-ui);font-weight:600;font-size:12px;color:var(--ink2);white-space:nowrap}
.ac-btn:hover{border-color:var(--accent);color:var(--accent-2)}
.ac-btn.ok{border-color:var(--good);color:var(--good-ink)}
.addcase.sm .ac-btn{padding:3px 8px;font-size:11px}
.ac-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:40;width:290px;background:var(--card);
  border:1px solid var(--line-2);border-radius:var(--r);box-shadow:0 10px 28px rgba(26,26,26,.13);padding:12px}
.ac-h{font-family:var(--f-ui);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--steel);margin-bottom:8px}
.ac-empty{font-family:var(--f-ui);font-size:12.5px;color:var(--steel);padding:4px 0 8px}
.ac-list{display:flex;flex-direction:column;gap:2px;max-height:210px;overflow-y:auto;margin-bottom:9px}
.ac-item{display:flex;justify-content:space-between;gap:10px;align-items:center;width:100%;
  border:none;background:transparent;border-radius:var(--r);padding:7px 8px;text-align:left;
  font-family:var(--f-ui);font-size:13px;color:var(--ink)}
.ac-item:hover{background:var(--paper);color:var(--accent-2)}
.ac-item .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ac-item .n{font-family:var(--mono);font-size:11.5px;color:var(--steel)}
.ac-new{display:flex;gap:6px;border-top:1px solid var(--grid);padding-top:9px}
.ac-new input{flex:1;min-width:0;height:32px;border:1px solid var(--line-2);background:var(--card);
  border-radius:var(--r);padding:0 9px;font-family:var(--f-ui);font-size:12.5px;color:var(--ink)}
.ac-new input:focus{border-color:var(--accent);outline:none}
.ac-new button{background:var(--accent);color:var(--card);border:none;border-radius:var(--r);
  padding:0 12px;font-family:var(--f-ui);font-weight:600;font-size:12px}
.ac-new button:hover{background:var(--accent-2)}
.ac-new button:disabled{background:var(--line-2);color:var(--steel)}
.ac-err{font-family:var(--f-ui);font-size:11.5px;color:var(--raskal-ink);padding-top:7px}

/* шапка дела: объект, дата оценки и цель правятся на месте — они нужны в отчёте */
.case-meta{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;margin-top:8px}
.case-meta label{display:flex;flex-direction:column;gap:3px;font-family:var(--f-ui);
  font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--steel)}
.case-meta input,.case-meta select{height:32px;border:1px solid var(--line-2);background:var(--card);
  border-radius:var(--r);padding:0 9px;font-family:var(--f-ui);font-size:13px;
  font-weight:400;letter-spacing:0;text-transform:none;color:var(--ink)}
.case-meta input.mono{font-family:var(--mono);min-width:210px}
.case-meta input:focus,.case-meta select:focus{border-color:var(--accent);outline:none}
.case-meta .go-obj{padding-bottom:7px}
.case-status .lbl{font-family:var(--f-ui);font-size:10.5px;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;color:var(--steel)}
.case-status select.cs-def{border-color:var(--good-ink);color:var(--good-ink)}
.case-status select.cs-sub{border-color:var(--gold-ink);color:var(--gold-ink)}
.case-status select.cs-rej{border-color:var(--raskal-ink);color:var(--raskal-ink)}

/* причина — текст, а не ярлык: переносится и занимает столько, сколько нужно */
/* 🔴 селектор должен быть НЕ слабее `table.deals td` (white-space:nowrap),
   иначе перенос не применяется и длинная причина растягивает таблицу */
table.deals td.reason-cell{white-space:normal;min-width:150px;max-width:210px;
  line-height:1.4;font-size:12.5px}
/* в карточке дела таблица живёт в узкой колонке — общий минимум поиска ей не нужен */
.case-grp table.deals{min-width:0}

/* ---- рабочий контур дела: активное дело, отметки, пачка ---- */
/* активное дело в меню — точка перед именем и тёплая подложка: контекст должен
   быть виден, но не кричать */
.sb-sel.active{background:var(--paper);border-radius:var(--r)}
.sb-sel.active .sb-sel-go .nm{color:var(--accent-2);font-weight:600}

/* галочки отбора */
table.deals th.chk,table.deals td.chk{width:34px;padding-left:12px;padding-right:0}
table.deals td.chk input,table.deals th.chk input{width:15px;height:15px;accent-color:var(--accent);cursor:pointer}
table.deals tbody tr.checked{background:var(--paper)}
table.deals tbody tr.checked td{border-bottom-color:var(--line-2)}

/* панель «отмечено N» рядом с сохранением выборки */
.bulkbar{display:inline-flex;align-items:center;gap:8px;padding-left:10px;margin-left:2px;
  border-left:1px solid var(--line-2)}
.bulkbar .n{font-family:var(--f-ui);font-size:12px;font-weight:600;color:var(--accent-2)}

/* стрелка «другое дело» вплотную к основной кнопке */
.ac-more{border:1px solid var(--line-2);border-left:none;background:var(--card);
  border-radius:0 var(--r) var(--r) 0;padding:6px 7px;font-size:11px;color:var(--steel)}
.ac-more:hover{border-color:var(--accent);color:var(--accent-2)}
.addcase .ac-btn{border-radius:var(--r)}
.addcase:has(.ac-more) .ac-btn{border-radius:var(--r) 0 0 var(--r)}
.ac-item.on{background:var(--paper);color:var(--accent-2);font-weight:600}

/* поиски, привязанные к делу */
.case-searches{display:flex;flex-wrap:wrap;gap:8px}
.cs-item{display:inline-flex;align-items:center;gap:9px;border:1px solid var(--line-2);
  background:var(--card);border-radius:var(--r);padding:7px 11px;font-family:var(--f-ui);
  font-size:12.5px;color:var(--ink)}
.cs-item:hover{border-color:var(--accent);color:var(--accent-2)}
.cs-item .n{font-family:var(--mono);font-size:11.5px;color:var(--steel)}
.cs-item .dt{font-size:11px;color:var(--steel-soft)}
