/**
 * home.css — картки Головної мовою дашборду ради з нової карти (map-v2).
 *
 * Та сама граматика, що в плитках старту ради й на панелі обмінів:
 *   .hm-k     мала іконка кольору картки + назва;
 *   .hm-v     одне велике число, поруч .hm-l — що воно значить і дрібно чому;
 *   картинка, що число пояснює — у кожної картки своя: кільце (Банк),
 *             стовпці (строки оренди), шкала (РРП), смуга часток (Зміни);
 *   .hm-leg   рядки-легенда: кружок зі знаком, назва з поясненням, число;
 *   .hm-next  «Далі: …» — один найважливіший крок.
 * Людина вчиться читати це один раз — на карті й тут однаково.
 *
 * Колір картки — одна змінна --accent (смужка зліва, іконка в назві);
 * кольори графіків — токени --chart-* (перевірені валідатором палітри в
 * обох темах).
 *
 * Розкладка (хто поруч із ким) — тут же, розділ «Розкладка Головної».
 * Підключати після dashboard.css: старі правила карток там ще з !important.
 */

/* ── Картка ──────────────────────────────────────────────────────────── */

body #user-dashboard-grid .dashboard-card {
  padding: 0 !important;
  background: var(--color-surface) !important;
  border: 1px solid var(--color-outline-subtle) !important;
  border-left: 3px solid var(--accent) !important;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-1) !important;
}
/* Старі кольорові смуги згори (::before з dashboard.css) — тепер смужка
   зліва, як у плиток старту ради */
body #user-dashboard-grid .dashboard-card::before { display: none !important; }
body #user-dashboard-grid .dashboard-card:hover {
  background: var(--color-surface-variant) !important;
  box-shadow: var(--shadow-2) !important;
  transform: none;
}
body #user-dashboard-grid .dashboard-card:focus-visible { outline: none; box-shadow: var(--focus-ring) !important; }
/* Великі картки — не кнопки-переходи, а зведення з власними кнопками:
   підсвітка всієї картки обіцяла б клік, якого немає */
body #user-dashboard-grid .dashboard-card:is([data-zone="land_bank"], [data-zone="dzk_changes"], [data-zone="todo"]):hover {
  background: var(--color-surface) !important;
  cursor: default;
}

/* Колір картки — як задачі на карті */
.dashboard-card[data-zone="ownership"]   { --accent: var(--color-map-mine); }
.dashboard-card[data-zone="land_bank"]   { --accent: var(--color-icon-bank); }
.dashboard-card[data-zone="rrp_dzk"]     { --accent: var(--color-tertiary); }
.dashboard-card[data-zone="resources"]   { --accent: var(--color-primary); }
.dashboard-card[data-zone="notes"]       { --accent: var(--color-notes); }
.dashboard-card[data-zone="companies"]   { --accent: var(--color-tertiary); }
.dashboard-card[data-zone="dzk_changes"] { --accent: var(--color-secondary); }
.dashboard-card[data-zone="todo"]        { --accent: var(--color-error); }

.hm {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding: var(--space-4) var(--space-5);
  min-width: 0;
}

/* ── Шапка: іконка + назва, праворуч — дія ─────────────────────────── */

.hm-top { display: flex; align-items: center; gap: var(--space-2); min-height: 28px; }
.hm-k {
  display: flex; align-items: center; gap: 6px;
  flex: 1; min-width: 0;
  font-size: var(--text-xs);
  font-weight: var(--font-semibold);
  color: var(--color-text-muted);
}
.hm-k .material-icons-round { font-size: 17px; color: var(--accent); }
.hm-go { font-size: 20px; color: var(--color-text-muted); transition: transform var(--duration-1) var(--ease-out); }
.dashboard-card:hover .hm-go { transform: translateX(2px); color: var(--color-text); }

/* Чип дати аналізу з кнопкою оновлення */
.hm-chip {
  display: inline-flex; align-items: center; gap: 4px;
  height: 26px; padding: 0 var(--space-2);
  border: 1px solid var(--color-outline-subtle);
  border-radius: var(--radius-full);
  background: transparent;
  color: var(--color-text-muted);
  font: inherit; font-size: var(--text-xs);
  cursor: pointer;
  white-space: nowrap;
}
.hm-chip .material-icons-round { font-size: 14px; }
.hm-chip:hover { color: var(--color-text); border-color: var(--color-outline); }
.hm-chip:focus-visible { outline: none; box-shadow: var(--focus-ring); }
.hm-chip.updating .ds-refresh-icon { animation: hm-spin 1s linear infinite; }
@keyframes hm-spin { to { transform: rotate(360deg); } }

/* Перемикач «Субʼєкти / По роках» */
.hm-tabs { display: inline-flex; padding: 2px; border-radius: var(--radius-full); background: var(--color-surface-container); }
.hm-tab {
  height: 24px; padding: 0 var(--space-3);
  border: 0; border-radius: var(--radius-full);
  background: transparent; color: var(--color-text-muted);
  font: inherit; font-size: var(--text-xs); font-weight: var(--font-semibold);
  cursor: pointer;
}
.hm-tab.active { background: var(--color-surface); color: var(--color-text); box-shadow: var(--shadow-1); }
.hm-tab:focus-visible { outline: none; box-shadow: var(--focus-ring); }

/* ── Головне число ─────────────────────────────────────────────────── */

.hm-hero { display: flex; align-items: flex-end; gap: var(--space-3); flex-wrap: wrap; }
.hm-v {
  font-family: var(--font-display);
  font-size: 34px;
  font-weight: var(--font-bold);
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--color-text);
  font-variant-numeric: tabular-nums;
}
.hm-v small { font-size: 17px; font-weight: var(--font-semibold); letter-spacing: 0; color: var(--color-text-secondary); }
.hm-l {
  display: grid;
  padding-bottom: 2px;
  font-size: var(--text-sm);
  font-weight: var(--font-semibold);
  line-height: 1.25;
  color: var(--color-text);
}
.hm-l small { font-size: var(--text-xs); font-weight: var(--font-regular); color: var(--color-text-muted); }

/* ── Легенда: кружок зі знаком, назва, число ───────────────────────── */

.hm-legs { display: grid; gap: var(--space-2); }
.hm-leg { display: grid; grid-template-columns: 24px 1fr auto; gap: var(--space-2); align-items: center; }
.hm-ic {
  display: grid; place-items: center;
  width: 24px; height: 24px;
  border-radius: 50%;
  color: var(--neutral-0);
}
.hm-ic .material-icons-round { font-size: 15px; font-weight: 700; }
.hm-ic.is-own  { background: var(--color-map-mine); }
.hm-ic.is-rent { background: var(--color-secondary); }
.hm-ic.is-risk { background: var(--chart-risk); }
.hm-ic.is-opp  { background: var(--chart-opp); }
/* Вільне на карті біле — кружок теж білий, тож знак темний і є контур */
.hm-ic.is-free { background: var(--neutral-0); color: var(--color-text); box-shadow: inset 0 0 0 1.5px var(--color-outline); }
.hm-leg-l { display: grid; min-width: 0; font-size: var(--text-sm); font-weight: var(--font-semibold); line-height: 1.25; }
.hm-leg-l small { font-size: var(--text-xs); font-weight: var(--font-regular); color: var(--color-text-muted); }
.hm-leg-v { display: grid; justify-items: end; line-height: 1.2; }
.hm-leg-v b { font: var(--font-semibold) var(--text-md) var(--font-mono); font-variant-numeric: tabular-nums; }
.hm-leg-v em { font-style: normal; font-size: var(--text-xs); color: var(--color-text-muted); white-space: nowrap; }

/* ── Портфель: дві колонки зі списками ─────────────────────────────── */

.hm-cols { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-5); }
.hm-col { display: grid; gap: var(--space-2); align-content: start; min-width: 0; }
.hm-list { display: grid; gap: 2px; }
/* Рядок субʼєкта чи року: смуга під ним — частка від найбільшого */
.hm-row {
  display: flex; align-items: baseline; gap: var(--space-2);
  padding: 5px var(--space-2);
  border-radius: var(--radius-xs);
  font-size: var(--text-xs);
  background: linear-gradient(90deg, color-mix(in srgb, var(--row-c) 14%, transparent) var(--w), transparent var(--w));
}
.hm-row.is-own  { --row-c: var(--color-map-mine); }
.hm-row.is-rent { --row-c: var(--color-secondary); }
.hm-row-n { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hm-row b { font: var(--font-semibold) var(--text-xs) var(--font-mono); font-variant-numeric: tabular-nums; }
.hm-row b small { font-family: var(--font-family); font-weight: var(--font-regular); color: var(--color-text-muted); }
.hm-empty { padding: 5px var(--space-2); font-size: var(--text-xs); color: var(--color-text-muted); }
.ow-panel.hidden { display: none; }

/* ── РРП: шкала збігу й підсумок ───────────────────────────────────── */

.hm-meter { height: 6px; border-radius: var(--radius-full); background: var(--color-surface-container); overflow: hidden; }
.hm-meter-fill { height: 100%; border-radius: inherit; background: var(--accent); transition: width var(--duration-3) var(--ease-out); }
.hm-foot { display: flex; gap: var(--space-4); font-size: var(--text-xs); color: var(--color-text-muted); }
.hm-foot b { font-family: var(--font-mono); font-weight: var(--font-semibold); color: var(--color-text); font-variant-numeric: tabular-nums; }
.hm-foot-r { margin-left: auto; }

/* ── «Далі: …» ─────────────────────────────────────────────────────── */

/* Як на панелі обмінів: тонована смуга зі знаком, клік веде до кроку */
.hm-next { margin-top: auto; }
.hm-next[hidden] { display: none; }
.hm-next > :is(a, button) {
  display: flex; align-items: center; gap: var(--space-2);
  width: 100%;
  padding: var(--space-2) var(--space-3);
  border: 0;
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--color-secondary) 14%, var(--color-surface));
  color: var(--color-text);
  font: inherit; font-size: var(--text-xs); font-weight: var(--font-semibold);
  text-align: left; text-decoration: none;
  cursor: pointer;
}
.hm-next .material-icons-round { font-size: 17px; color: var(--color-secondary); }
.hm-next > :is(a, button):hover { background: color-mix(in srgb, var(--color-secondary) 22%, var(--color-surface)); }
.hm-next > :is(a, button):focus-visible { outline: none; box-shadow: var(--focus-ring); }

/* ── Статус картки ─────────────────────────────────────────────────── */

/* Лише те, що вимагає уваги: «гаразд» мовчить (updateCardStatus лишає
   його порожнім), помилка й «потрібен аналіз» — видно */
.dashboard-card .ds-badge:empty,
.dashboard-card .ds-badge.ds-badge-success { display: none !important; }
.dashboard-card .ds-badge { margin: 0 var(--space-5) var(--space-4); }
/* У Банку «потрібен аналіз» уже сказано порадою «Далі» з кнопкою запуску */
.dashboard-card[data-zone="land_bank"] .ds-badge-warning { display: none !important; }

/* ── Розкладка Головної ───────────────────────────────────────────── */

/* Зверху вниз — відповідь на «як справи?»: речення-висновок, числа, дві
   половини поруч (Портфель — що в мене є, Зміни — що сталося навколо),
   унизу ряд із трьох (Що зробити, Земельний банк, РРП vs ДЗК).
   Селектор довший за старі з dashboard-material3.css і dashboard.css —
   ті з !important і з 12 колонками на широкому екрані. */
body #user-dashboard-grid.dashboard-visible.home-board {
  display: flex !important;
  flex-direction: column;
  gap: var(--space-4);
  padding: 0;
  margin: 0;
}
/* Ліворуч колонка Портфеля — росте донизу разом зі списком власників.
   Праворуч сітка у дві колонки: Зміни на всю ширину, під ними пари карток */
.home-grid { display: grid; grid-template-columns: minmax(320px, 380px) minmax(0, 1fr); gap: var(--space-4); align-items: stretch; }
.home-left { display: flex; flex-direction: column; gap: var(--space-4); min-width: 0; }
/* Картки лівої колонки не стискаються й не прокручуються: колонка росте
   донизу разом зі списком власників */
/* height: 100% — з dashboard-material3.css: у стовпчику кожна картка
   ставала заввишки з усю колонку */
.home-left > .dashboard-card { flex: 0 0 auto; height: auto; }
.home-left .pf-list { overflow: visible; }
.home-right { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-4); min-width: 0; }
.home-right > .dashboard-card, .home-left > .dashboard-card { display: flex; flex-direction: column; }
/* dashboard.css ставить Портфелю, Змінам і Банку grid-column: 1 / -1 з
   !important — тут кожна картка займає свою клітинку */
body #user-dashboard-grid :is(.home-left, .home-right) > .dashboard-card[data-zone] { grid-column: auto !important; }
body #user-dashboard-grid .home-right > .dashboard-card:is([data-zone="dzk_changes"], [data-zone="rrp_dzk"]) { grid-column: 1 / -1 !important; }
/* Праворуч лишились самі Зміни — вони беруть висоту лівої колонки
   (Портфель + справи), а стрічка прокручується всередині. contain: size —
   щоб довга стрічка не розтягувала сторінку, а заповнювала готову висоту */
.home-right > [data-zone="dzk_changes"] { contain: size; min-height: 520px; }
.home-right > [data-zone="dzk_changes"] .hm { min-height: 0; }
.home-right .chg-feed { flex: 1; min-height: 0; overflow-y: auto; scrollbar-width: thin; margin-right: calc(-1 * var(--space-2)); padding-right: var(--space-2); align-content: start; }

/* ── Земельний портфель — як головна картка застосунку ─────────────── */

/* Темно-зелене тло в обох темах: це «обкладинка» господарства, так само
   як у застосунку. Кольори — бренду: власність бурштином, оренда білим */
body #user-dashboard-grid .dashboard-card[data-zone="ownership"],
body #user-dashboard-grid .dashboard-card[data-zone="ownership"]:hover {
  --pf-ink: var(--neutral-0);
  --pf-mute: color-mix(in srgb, var(--neutral-0) 62%, transparent);
  --pf-line: color-mix(in srgb, var(--neutral-0) 14%, transparent);
  --pf-own: var(--brand-amber);
  background:
    radial-gradient(ellipse 60% 70% at 105% 45%, color-mix(in srgb, var(--neutral-0) 6%, transparent), transparent 70%),
    linear-gradient(140deg, var(--brand-green-700), var(--brand-green-800)) !important;
  border: 0 !important;
  color: var(--pf-ink);
  box-shadow: var(--shadow-2) !important;
}
.pf { display: flex; flex-direction: column; gap: var(--space-4); flex: 1; min-height: 0; padding: var(--space-5) var(--space-6); }
.pf-top { display: flex; align-items: center; gap: var(--space-3); }
.pf-brand { color: var(--pf-ink); font-size: 15px; }
.pf-brand .pin-hole { fill: var(--brand-green-700); }
.pf-k { margin-left: auto; font-size: var(--text-xs); font-weight: var(--font-semibold); color: var(--pf-mute); }

.pf-hero { display: grid; gap: 2px; }
.pf-label { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--pf-mute); }
.pf-area {
  display: flex; align-items: baseline; gap: var(--space-2);
  font-family: var(--font-display); font-size: 48px; font-weight: var(--font-bold);
  line-height: 1.05; letter-spacing: -0.02em; font-variant-numeric: tabular-nums;
}
.pf-area small { font-size: 22px; font-weight: var(--font-semibold); color: var(--pf-mute); letter-spacing: 0; }
.pf-sub { font-size: var(--text-sm); color: var(--pf-mute); }

.pf-bar { display: flex; gap: 3px; height: 8px; border-radius: var(--radius-full); overflow: hidden; background: var(--pf-line); }
.pf-bar i { display: block; height: 100%; transition: width var(--duration-3) var(--ease-out); }
.pf-bar .is-own  { background: var(--pf-own); }
.pf-bar .is-rent { background: var(--pf-ink); }

.pf-split { display: grid; grid-template-columns: 1fr 1fr; }
.pf-col { display: grid; gap: 4px; padding-right: var(--space-4); }
.pf-col + .pf-col { padding: 0 0 0 var(--space-5); border-left: 1px solid var(--pf-line); }
.pf-col-k { display: flex; align-items: center; gap: 6px; font-size: var(--text-xs); font-weight: var(--font-semibold); color: var(--pf-mute); }
.pf-dot { width: 8px; height: 8px; border-radius: 50%; }
.pf-dot.is-own  { background: var(--pf-own); }
.pf-dot.is-rent { background: var(--pf-ink); }
.pf-col-v { display: flex; align-items: baseline; gap: 5px; font-family: var(--font-display); font-size: 26px; font-weight: var(--font-bold); line-height: 1.1; font-variant-numeric: tabular-nums; }
.pf-col-v small { font-size: var(--text-sm); color: var(--pf-mute); font-weight: var(--font-semibold); }
.pf-col-v.is-own { color: var(--pf-own); }

/* «Тримачі активів» — те, що в застосунку на звороті картки */
.pf-holders { display: flex; flex-direction: column; gap: var(--space-2); flex: 1; min-height: 0; padding-top: var(--space-4); border-top: 1px solid var(--pf-line); }
.pf-holders-k { font-size: var(--text-xs); font-weight: var(--font-bold); letter-spacing: .06em; text-transform: uppercase; color: var(--pf-mute); }
.pf-list { display: grid; align-content: start; overflow-y: auto; scrollbar-width: thin; }
.pf-h { display: grid; gap: 3px; padding: var(--space-2) 0; }
.pf-h + .pf-h { border-top: 1px solid var(--pf-line); }
.pf-h-n { display: flex; align-items: center; gap: 6px; min-width: 0; font-size: var(--text-sm); font-weight: var(--font-semibold); }
.pf-h-n .material-icons-round { font-size: 15px; color: var(--pf-mute); }
.pf-h-n > span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pf-h-l { display: flex; justify-content: space-between; gap: var(--space-3); padding-left: 21px; font-size: var(--text-xs); color: var(--pf-mute); }
.pf-h-l b { font-family: var(--font-mono); font-weight: var(--font-semibold); font-variant-numeric: tabular-nums; white-space: nowrap; }
.pf-h-l b.is-rent { color: var(--pf-ink); }
.pf-h-l b.is-own  { color: var(--pf-own); }
.pf-more {
  display: inline-flex; justify-self: start; margin-top: var(--space-1);
  padding: 0; border: 0; background: none;
  color: var(--pf-ink); font: inherit; font-size: var(--text-xs); font-weight: var(--font-semibold);
  text-decoration: underline; text-underline-offset: 3px; cursor: pointer;
}
.pf-empty { font-size: var(--text-sm); color: var(--pf-mute); }

/* ── «Як справи» ─────────────────────────────────────────────────────── */

.home-status {
  display: flex; align-items: center; gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-lg);
  background: color-mix(in srgb, var(--st-c) 10%, var(--color-surface));
  border: 1px solid color-mix(in srgb, var(--st-c) 30%, transparent);
}
.home-status.is-ok   { --st-c: var(--color-primary); }
.home-status.is-warn { --st-c: var(--color-progress-warning); }
.home-status.is-bad  { --st-c: var(--color-error); }
.home-status.is-wait { --st-c: var(--color-text-muted); }
.home-status-ic { font-size: 28px; color: var(--st-c); }
.home-status-txt { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px var(--space-3); min-width: 0; }
.home-status-txt b { font-family: var(--font-display); font-size: var(--text-lg); font-weight: var(--font-bold); color: var(--color-text); }
#home-status-d { display: flex; flex-wrap: wrap; gap: 2px var(--space-3); font-size: var(--text-sm); color: var(--color-text-secondary); }
#home-status-d a { color: var(--color-text); text-decoration: none; border-bottom: 1px dashed color-mix(in srgb, var(--st-c) 60%, transparent); }
#home-status-d a:hover { color: var(--st-c); }
/* Причини через крапку — як речення, а не як список */
#home-status-d > * + *::before { content: '·'; margin-right: var(--space-3); color: var(--color-text-muted); }

/* grid-column з dashboard.css у стовпчику нічого не значить, а висота й
   відступи старих карток — значать */
.home-board .dashboard-card { width: 100%; min-height: 0 !important; margin: 0 !important; }

/* ── Шапка: привітання, пошук, свіжість ─────────────────────────────── */

.home-head { align-items: center; }
.home-head .page-subtitle { margin-top: 2px; }
/* Привітання не ламаємо — вужчий екран переносить пошук під нього */
.home-head .page-title { white-space: nowrap; }

.home-find {
  position: relative;
  display: flex; align-items: center; gap: var(--space-2);
  width: min(340px, 100%);
  height: 40px;
  padding: 0 var(--space-3);
  border: 1px solid var(--color-outline-subtle);
  border-radius: var(--radius-full);
  background: var(--color-surface);
  box-shadow: var(--shadow-1);
}
.home-find:focus-within { border-color: var(--color-primary); box-shadow: var(--focus-ring); }
.home-find.is-bad { border-color: var(--color-error); }
.home-find > .material-icons-round { font-size: 19px; color: var(--color-text-muted); }
.home-find input {
  flex: 1; min-width: 0;
  border: 0; outline: 0; background: transparent;
  color: var(--color-text);
  font: inherit; font-size: var(--text-sm);
  font-variant-numeric: tabular-nums;
}
.home-find input::placeholder { color: var(--color-text-muted); }
/* Підказка про формат — під полем, не зсуваючи шапку */
.home-find-err {
  position: absolute; top: calc(100% + 4px); left: var(--space-4);
  font-size: var(--text-xs); color: var(--color-error);
  white-space: nowrap; pointer-events: none;
}

/* Колір позначки — за віком даних (--fresh ставить loadFreshness) */
.home-fresh {
  display: inline-flex; align-items: center; gap: 6px;
  height: 40px; padding: 0 var(--space-3);
  border-radius: var(--radius-full);
  background: color-mix(in srgb, var(--fresh, var(--color-primary)) 12%, var(--color-surface));
  color: var(--color-text);
  font-size: var(--text-xs); font-weight: var(--font-semibold);
  text-decoration: none; white-space: nowrap;
}
.home-fresh[hidden] { display: none; }
.home-fresh .material-icons-round { font-size: 17px; color: var(--fresh, var(--color-primary)); }
.home-fresh-n { padding-left: 6px; border-left: 1px solid var(--color-outline-subtle); color: var(--color-text-muted); font-weight: var(--font-medium); }
.home-fresh:hover { background: color-mix(in srgb, var(--fresh, var(--color-primary)) 20%, var(--color-surface)); color: var(--color-text); }
.home-fresh:focus-visible { outline: none; box-shadow: var(--focus-ring); }

/* ── «Що зробити» ───────────────────────────────────────────────────── */

.todo-lead { margin: calc(-1 * var(--space-2)) 0 0; font-size: var(--text-xs); color: var(--color-text-muted); }
.todo-list { display: grid; gap: var(--space-1); }
.todo-row {
  display: grid; grid-template-columns: 30px 1fr auto; align-items: center; gap: var(--space-3);
  padding: var(--space-2);
  margin: 0 calc(-1 * var(--space-2));
  border-radius: var(--radius-sm);
  color: var(--color-text); text-decoration: none;
}
.todo-row:hover { background: var(--color-surface-variant); color: var(--color-text); }
.todo-row:focus-visible { outline: none; box-shadow: var(--focus-ring); }
.todo-row.is-error   { --todo-c: var(--color-error); }
.todo-row.is-warning { --todo-c: var(--color-progress-warning); }
.todo-row.is-primary { --todo-c: var(--color-primary); }
.todo-ic {
  display: grid; place-items: center;
  width: 30px; height: 30px;
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--todo-c) 14%, transparent);
  color: var(--todo-c);
}
.todo-ic .material-icons-round { font-size: 17px; }
.todo-txt { display: grid; font-size: var(--text-sm); font-weight: var(--font-semibold); line-height: 1.3; }
.todo-txt small { font-size: var(--text-xs); font-weight: var(--font-regular); color: var(--color-text-muted); }
.todo-go { font-size: 18px; color: var(--color-text-muted); }

.todo-ok {
  display: flex; align-items: center; gap: var(--space-3);
  padding: var(--space-2) 0;
  font-size: var(--text-sm); font-weight: var(--font-semibold);
}
.todo-ok > .material-icons-round { font-size: 26px; color: var(--color-primary); }
.todo-ok small { display: block; font-size: var(--text-xs); font-weight: var(--font-regular); color: var(--color-text-muted); }

.todo-tasks { display: grid; gap: 2px; padding-top: var(--space-3); border-top: 1px solid var(--color-outline-subtle); }
.todo-tasks[hidden] { display: none; }
.todo-sub { margin-bottom: var(--space-1); font-size: var(--text-xs); font-weight: var(--font-semibold); color: var(--color-text-muted); }
.todo-task {
  display: flex; align-items: center; gap: var(--space-2);
  padding: 5px var(--space-2); margin: 0 calc(-1 * var(--space-2));
  border-radius: var(--radius-xs);
  color: var(--color-text); text-decoration: none;
  font-size: var(--text-sm);
}
.todo-task:hover { background: var(--color-surface-variant); color: var(--color-text); }
.todo-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; background: var(--color-outline); }
.todo-dot.is-error { background: var(--color-error); }
.todo-task-t { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.todo-task-d { font-size: var(--text-xs); color: var(--color-text-muted); white-space: nowrap; }
.todo-task-d.is-late { color: var(--color-error); font-weight: var(--font-semibold); }

/* ── Зміни в кадастрі: стрічка подій, як у застосунку ─────────────────── */

/* Сегменти-фільтри з лічильниками */
.chg-filters { display: flex; flex-wrap: wrap; gap: var(--space-1); }
.chg-f {
  display: inline-flex; align-items: center; gap: 5px;
  height: 30px; padding: 0 var(--space-3);
  border: 1px solid var(--color-outline-subtle);
  border-radius: var(--radius-full);
  background: var(--color-surface);
  color: var(--color-text-secondary);
  font: inherit; font-size: var(--text-xs); font-weight: var(--font-semibold);
  cursor: pointer;
}
.chg-f b { font-family: var(--font-mono); font-weight: var(--font-semibold); color: var(--color-text-muted); }
.chg-f .material-icons-round { font-size: 14px; color: var(--color-secondary); }
.chg-f:hover { border-color: var(--color-outline); color: var(--color-text); }
.chg-f:focus-visible { outline: none; box-shadow: var(--focus-ring); }
.chg-f.is-on { background: var(--color-primary); border-color: var(--color-primary); color: var(--color-on-primary); }
.chg-f.is-on b, .chg-f.is-on .material-icons-round { color: var(--color-on-primary); }

.chg-feed { display: grid; gap: var(--space-2); }

/* Подія: знак виду, хто → кому, номери ділянок, гектари, галочка */
.chg-ev {
  display: grid; grid-template-columns: 32px 1fr auto auto; gap: var(--space-3); align-items: start;
  padding: var(--space-3);
  border: 1px solid var(--color-outline-subtle);
  border-left: 3px solid var(--ev-c);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  transition: opacity var(--duration-1) var(--ease-out);
}
.chg-ev.is-transfer  { --ev-c: var(--color-tertiary); }
.chg-ev.is-new_rent  { --ev-c: var(--color-primary); }
.chg-ev.is-lost_rent { --ev-c: var(--color-error); }
/* Ваша подія — бурштином, як у застосунку, і з легкою підкладкою */
.chg-ev.is-own { --ev-c: var(--color-secondary); background: color-mix(in srgb, var(--color-secondary) 6%, var(--color-surface)); }
/* Переглянуте не зникає, а тьмяніє — до нього можна повернутись */
.chg-ev.is-read { opacity: .55; }
.chg-ev.is-read:hover { opacity: 1; }

.chg-ev-ic {
  display: grid; place-items: center;
  width: 32px; height: 32px;
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--ev-c) 14%, transparent);
  color: var(--ev-c);
}
.chg-ev-ic .material-icons-round { font-size: 18px; }
.chg-ev-body { display: grid; gap: 4px; min-width: 0; }
.chg-ev-head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }
.chg-ev-t { font-size: var(--text-xs); font-weight: var(--font-semibold); color: var(--color-text-muted); }
.chg-own {
  display: inline-flex; align-items: center; gap: 2px;
  padding: 0 7px; border-radius: var(--radius-full);
  background: color-mix(in srgb, var(--color-secondary) 18%, transparent);
  color: var(--color-secondary-900);
  font-size: 11px; font-weight: var(--font-bold);
}
.chg-own .material-icons-round { font-size: 12px; color: var(--color-secondary); }
.chg-council { font-size: 11px; color: var(--color-text-muted); }
.chg-who { display: flex; flex-wrap: wrap; align-items: center; gap: 4px var(--space-2); font-size: var(--text-sm); line-height: 1.3; }
.chg-from { color: var(--color-text-secondary); }
.chg-to { font-weight: var(--font-semibold); color: var(--color-text); }
.chg-arrow { font-size: 16px; color: var(--color-text-muted); }

.chg-cads { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 2px; }
.chg-cad {
  display: inline-flex; align-items: center; gap: 2px;
  padding: 1px 6px;
  border-radius: var(--radius-xs);
  background: var(--color-surface-container);
  color: var(--color-text-secondary);
  font: var(--font-medium) 11px var(--font-mono);
  text-decoration: none;
}
.chg-cad .material-icons-round { font-size: 12px; color: var(--color-primary); }
.chg-cad:hover { background: var(--color-primary-50); color: var(--color-primary-900); }
.chg-cads-more {
  border: 0; background: none; padding: 1px 4px;
  color: var(--color-primary); font: inherit; font-size: 11px; font-weight: var(--font-semibold);
  cursor: pointer;
}

.chg-ev-ha { padding-top: 2px; font: var(--font-semibold) var(--text-sm) var(--font-mono); color: var(--ev-c); white-space: nowrap; font-variant-numeric: tabular-nums; }
.chg-read {
  display: grid; place-items: center;
  width: 28px; height: 28px; margin: -2px -4px 0 0;
  border: 0; border-radius: 50%;
  background: none;
  color: var(--color-text-disabled);
  cursor: pointer;
}
.chg-read .material-icons-round { font-size: 20px; }
.chg-read:hover { background: var(--color-surface-variant); color: var(--color-primary); }
.chg-read[aria-pressed="true"] { color: var(--color-primary); }
.chg-read:focus-visible { outline: none; box-shadow: var(--focus-ring); }

/* Нові ділянки */
.chg-parcel {
  display: flex; align-items: flex-start; gap: var(--space-3);
  padding: var(--space-2) 0;
  border-bottom: 1px solid var(--color-outline-subtle);
}
.chg-parcel:last-of-type { border-bottom: 0; }
.chg-parcel-main { display: grid; gap: 2px; flex: 1; min-width: 0; justify-items: start; }
.chg-parcel-who { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); }
.chg-parcel-rent { font-size: var(--text-xs); color: var(--color-text-muted); }
.chg-parcel-rent.is-free { color: var(--color-primary); font-weight: var(--font-semibold); }
.chg-parcel-ha { font: var(--font-semibold) var(--text-sm) var(--font-mono); white-space: nowrap; }

.chg-more {
  justify-self: start;
  border: 0; background: none; padding: var(--space-1) 0;
  color: var(--color-primary); font: inherit; font-size: var(--text-sm); font-weight: var(--font-semibold);
  cursor: pointer;
}
.chg-more:hover { text-decoration: underline; }

/* ── Інфографіка ───────────────────────────────────────────────────── */

/* Зміни: смуга видів і підписи з числами під нею */
.chg-mix { display: grid; gap: var(--space-2); }
.chg-mix:empty { display: none; }
.chg-mix-bar { display: flex; gap: 2px; height: 12px; border-radius: var(--radius-full); overflow: hidden; }
.chg-mix-bar i { display: block; min-width: 4px; }
.chg-mix-leg { display: flex; flex-wrap: wrap; gap: 4px var(--space-4); font-size: var(--text-xs); color: var(--color-text-secondary); }
.chg-mix-leg span { display: inline-flex; align-items: center; gap: 6px; }
.chg-mix-leg i { width: 10px; height: 10px; border-radius: 3px; }
.chg-mix-leg b { font-family: var(--font-mono); color: var(--color-text); }

/* Земельний банк: кільце ліворуч, легенда праворуч */
/* Кільце над легендою: у половині правої частини поруч їм тісно */
.bk-viz { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-4); justify-items: center; }
.bk-viz .hm-legs { justify-self: stretch; }
.bk-donut { position: relative; width: 132px; height: 132px; }
.bk-donut svg { display: block; }
.bk-center { position: absolute; inset: 0; display: grid; place-content: center; text-align: center; }
.bk-center b { font-family: var(--font-display); font-size: 26px; font-weight: var(--font-bold); line-height: 1; font-variant-numeric: tabular-nums; }
.bk-center small { font-size: var(--text-xs); color: var(--color-text-muted); }
.bk-sub { font-size: var(--text-xs); color: var(--color-text-muted); }

/* Строки оренди: легенда над стовпцями */
.cl-legend { display: flex; flex-wrap: wrap; gap: 4px var(--space-4); font-size: var(--text-xs); color: var(--color-text-secondary); }
.cl-legend span { display: inline-flex; align-items: center; gap: 6px; }
.cl-legend i { width: 10px; height: 10px; border-radius: 3px; }
.cl-chart { margin-top: auto; }
.cl-svg { display: block; width: 100%; height: auto; overflow: visible; }
.cl-axis { stroke: var(--color-outline); stroke-width: 1; }
.cl-x { font: var(--font-medium) 11px var(--font-family); fill: var(--color-text-muted); }
.cl-peak { font: var(--font-semibold) 11px var(--font-mono); fill: var(--color-text); }
.cl-svg path:hover { opacity: .8; }

/* РРП: шкала ліворуч, три факти праворуч */
.rr-viz { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--space-5); align-items: center; }
.rr-gauge { position: relative; width: 150px; }
.rr-gauge svg { display: block; }
.rr-center { position: absolute; left: 0; right: 0; bottom: 2px; display: grid; justify-items: center; }
.rr-center b { font-family: var(--font-display); font-size: 26px; font-weight: var(--font-bold); line-height: 1; }
.rr-center small { font-size: 11px; color: var(--color-text-muted); }
.rr-facts { display: grid; gap: var(--space-2); }
.rr-fact { display: grid; grid-template-columns: auto 1fr; align-items: baseline; gap: var(--space-2); font-size: var(--text-sm); }
.rr-fact b { font-family: var(--font-mono); font-weight: var(--font-semibold); font-variant-numeric: tabular-nums; }
.rr-fact span { display: grid; color: var(--color-text-secondary); }
.rr-fact small { font-size: var(--text-xs); color: var(--color-text-muted); }

.dashboard-card[data-zone="lease"] { --accent: var(--chart-risk); }
body #user-dashboard-grid .dashboard-card[data-zone="lease"]:hover { background: var(--color-surface) !important; cursor: default; }

/* Вужче за 1180 px колонка Портфеля забирає забагато — Портфель угорі на
   всю ширину, картки під ним */
@media (max-width: 1180px) {
  .home-grid { grid-template-columns: minmax(0, 1fr); }
  .home-right > [data-zone="dzk_changes"] { contain: none; min-height: 0; }
  .home-right .chg-feed { max-height: 520px; }
}
/* …а Портфель і «Що зробити» — поруч, щоб не тягнулись на всю ширину */
@media (max-width: 1180px) and (min-width: 769px) {
  .home-left { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
}

/* ── Телефон ───────────────────────────────────────────────────────── */

@media (max-width: 768px) {
  .home-right { grid-template-columns: minmax(0, 1fr); }
  .rr-viz { grid-template-columns: minmax(0, 1fr); justify-items: center; }
  .home-find { width: 100%; }
  .hm { padding: var(--space-3) var(--space-4); gap: var(--space-2); }
  .hm-v { font-size: 28px; }
  .hm-cols { grid-template-columns: 1fr; gap: var(--space-3); }
}

@media (prefers-reduced-motion: reduce) {
  .hm-chip.updating .ds-refresh-icon { animation: none; }
}
