/* Склад: единый язык таблиц и карточка позиции.
   Порт превью редизайна (варианты: статусы A, строка реестра A, карточка B).
   Правила проекта: никаких box-shadow и градиентов; только токены темы.
   ВАЖНО: токена --muted в теме НЕТ — вторичный текст это --ink-2, подписи --ink-3.

   Переходный период: старые классы .wh-card__tbl и .wh-kpi-grid/.wh-kpi__value/.wh-kpi__label
   оставлены псевдонимами новых, чтобы разметка, которую ещё не перевёл C#, не разъезжалась. */

/* ── Единый язык таблиц (выравнен с .ov-tbl из owner-view) ───────────────── */
.wh-tbl,
.wh-card__tbl {
    width: 100%;
    border-collapse: collapse;
    font-size: 14px;
}
.wh-tbl th,
.wh-card__tbl th {
    padding: 10px 18px;
    border-bottom: 1px solid var(--line);
    background: var(--surface);
    color: var(--ink-3);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .05em;
    text-align: left;
    text-transform: uppercase;
    white-space: nowrap;
}
.wh-tbl td,
.wh-card__tbl td {
    padding: 12px 18px;
    border-bottom: 1px solid var(--line);
    color: var(--ink);
    vertical-align: middle;
}
.wh-tbl tbody tr:last-child td,
.wh-card__tbl tbody tr:last-child td { border-bottom: 0; }
.wh-tbl tbody tr { transition: background var(--motion-fast) var(--ease); }

/* компактный режим — для плотных списков (инвентаризация, отчёты) */
.wh-tbl--compact th { padding: 8px 14px; }
.wh-tbl--compact td { padding: 8px 14px; }

/* типовые ячейки */
.wh-tbl .t-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.wh-tbl .t-num.mono,
.wh-tbl td.mono { font-family: var(--font-mono); }
.wh-tbl .t-name { color: var(--ink); font-weight: 500; }
.wh-tbl .t-sub { color: var(--ink-3); font-size: 12px; font-weight: 400; }

/* строка-ссылка и «погашенные» строки (нулевая партия, деактивированная позиция) */
.wh-row { cursor: pointer; }
.wh-row:hover,
.wh-row.is-open { background: var(--primary-tint); }
.wh-muted td { color: var(--ink-3); }
.wh-muted .t-name { color: var(--ink-2); }

/* ── Карточка позиции (вариант B): шапка → метрики → блоки ───────────────── */
.wh-card {
    overflow: hidden;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
}
.wh-card__hd {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    padding: 20px 22px;
    border-bottom: 1px solid var(--line);
}
.wh-card__ttl {
    font-family: var(--font-display);
    font-size: 22px;
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: -.01em;
}
.wh-card__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 16px;
    margin-top: 8px;
    color: var(--ink-2);
    font-size: 13px;
}
.wh-card__meta span { display: inline-flex; align-items: center; gap: 6px; }
.wh-card__meta i { color: var(--ink-3); font-size: 15px; }

/* полоса ключевых чисел — то, ради чего карточка перестаёт быть формой */
.wh-metrics {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    border-bottom: 1px solid var(--line);
}
.wh-metric { padding: 15px 18px; border-right: 1px solid var(--line); }
.wh-metric:last-child { border-right: 0; }
.wh-metric__lbl {
    color: var(--ink-3);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .05em;
    text-transform: uppercase;
}
.wh-metric__val {
    margin-top: 5px;
    font-size: 22px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    line-height: 1.1;
}
.wh-metric__val small { color: var(--ink-3); font-size: 13px; font-weight: 500; }
.wh-metric.is-low .wh-metric__val { color: var(--wh-warning-ink); }
.wh-metric.is-neg { background: var(--danger-tint); }
.wh-metric.is-neg .wh-metric__val { color: var(--danger); }

/* блок карточки (партии, движения) */
.wh-block { padding: 6px 0; }
.wh-block__hd {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 22px 10px;
}
.wh-block__hd h4 {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    font-size: 14px;
    font-weight: 600;
}
.wh-block__hd i { color: var(--ink-3); font-size: 16px; }

/* действия карточки: частые / редкие / опасные разделены линиями */
.wh-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.wh-actions__grp {
    display: flex;
    gap: 8px;
    margin-right: 4px;
    padding-right: 12px;
    border-right: 1px solid var(--line);
}
.wh-actions__grp:last-child { margin-right: 0; padding-right: 0; border-right: 0; }

/* ── Вариант B: правый рельс со сводкой и действиями ─────────────────────
   Отличие от варианта A: числа и все действия уходят в липкий рельс справа,
   слева остаются шапка и таблицы во всю ширину. Опасные действия отделены. */
.wh-card__body {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 260px;
}
.wh-card__main { min-width: 0; }
/* Рельс тянется на всю высоту карточки (иначе его заливка обрывалась после кнопок,
   и низ карточки визуально сливался с белым фоном). Липкость — на внутренней обёртке,
   потому что sticky не работает на растянутом grid-элементе. Фон --surface-3, а не --surface-2:
   второй почти не отличим от белой карточки. */
.wh-card__rail {
    padding: 18px;
    background: var(--surface-3);
    border-left: 1px solid var(--line);
}
.wh-rail__inner { position: sticky; top: 12px; }
.wh-rail__metric-lbl {
    color: var(--ink-3);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .05em;
    text-transform: uppercase;
}
.wh-rail__metric-val {
    margin-top: 4px;
    font-size: 24px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    line-height: 1.1;
}
.wh-rail__metric-val small { color: var(--ink-3); font-size: 13px; font-weight: 500; }
.wh-rail__metric.is-low .wh-rail__metric-val { color: var(--wh-warning-ink); }
.wh-rail__metric.is-neg .wh-rail__metric-val { color: var(--danger); }
.wh-rail__kv {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 14px 0 16px;
    border-bottom: 1px solid var(--line);
    color: var(--ink-2);
    font-size: 13px;
}
.wh-rail__kv > div { display: flex; justify-content: space-between; gap: 10px; }
.wh-rail__kv b { color: var(--ink); font-weight: 600; font-variant-numeric: tabular-nums; }
.wh-rail__acts { display: flex; flex-direction: column; gap: 8px; margin-top: 16px; }
.wh-rail__acts .wh-btn { justify-content: center; }
.wh-rail__sep { height: 1px; margin: 4px 0; background: var(--line); }

@media (max-width: 1100px) {
    .wh-card__body { grid-template-columns: minmax(0, 1fr); }
    .wh-card__main { border-right: 0; border-bottom: 1px solid var(--line); }
    .wh-card__rail { position: static; }
}

/* ── Мелочи, общие для блоков карточки ──────────────────────────────────── */
.wh-card__delta { font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.wh-card__delta.is-in { color: var(--success); }
.wh-card__delta.is-out { color: var(--danger); }
.wh-card__dim { color: var(--ink-3); }
.wh-card__packs { margin: 2px 0 0; color: var(--ink-3); font-size: 12px; }
.wh-card__empty { padding: 14px 22px; color: var(--ink-3); font-size: 13px; }
