/* =============================================================================
   FM · Utilities — короткие хелперы. Только то, что реально используется.
   Если хелпер нужен в третий раз в одном месте — это повод сделать компонент.
   ========================================================================== */

/* Раскладка */
.row      { display: flex; align-items: center; gap: var(--fm-space-3); }
.row--top { align-items: flex-start; }
.row--between { justify-content: space-between; }
.row--wrap    { flex-wrap: wrap; }
.col      { display: flex; flex-direction: column; gap: var(--fm-space-3); }
.col--tight { gap: var(--fm-space-2); }
.col--loose { gap: var(--fm-space-5); }
.spacer   { margin-left: auto; }
.min-0    { min-width: 0; }
.flex-1   { flex: 1 1 auto; min-width: 0; }
.flex-none{ flex: none; }

/* Отступы */
.mt-1{margin-top:var(--fm-space-1)} .mt-2{margin-top:var(--fm-space-2)}
.mt-3{margin-top:var(--fm-space-3)} .mt-4{margin-top:var(--fm-space-4)}
.mt-5{margin-top:var(--fm-space-5)} .mt-6{margin-top:var(--fm-space-6)}
.mb-1{margin-bottom:var(--fm-space-1)} .mb-2{margin-bottom:var(--fm-space-2)}
.mb-3{margin-bottom:var(--fm-space-3)} .mb-4{margin-bottom:var(--fm-space-4)}
.mb-5{margin-bottom:var(--fm-space-5)} .mb-6{margin-bottom:var(--fm-space-6)}

/* Текст */
.t-display { font-family: var(--fm-font-display); font-weight: 700; letter-spacing: var(--fm-tr-title); }
.t-strong  { font-weight: 600; color: var(--fm-text); }
.t-muted   { color: var(--fm-text-3); }
.t-mute-2  { color: var(--fm-text-2); }
.t-sm      { font-size: var(--fm-fs-sm); }
.t-xs      { font-size: var(--fm-fs-xs); }
.t-right   { text-align: right; }
.t-center  { text-align: center; }
.t-nowrap  { white-space: nowrap; }
.t-truncate{ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
/* Текстовые сигналы. Оба семейства читаемы на светлом фоне:
   петроль 11:1, глубокий вермильон 6.4:1. Яркий #F0703A сюда не ставится. */
.t-ok      { color: var(--fm-brand); }
.t-warn    { color: var(--fm-accent-deep); }
.t-danger  { color: var(--fm-accent); font-weight: 600; }
.t-brand   { color: var(--fm-brand); }
.t-accent  { color: var(--fm-accent-deep); }

/* Надзаголовок моно-капсом — фирменный приём FM */
.eyebrow {
  display: inline-flex; align-items: center; gap: 7px;
  font-family: var(--fm-font-mono); font-weight: 500; font-size: var(--fm-fs-label);
  letter-spacing: var(--fm-tr-label); text-transform: uppercase; color: var(--fm-text-3);
}
/* С ромбом: ставится перед заголовками разделов внутри карточек */
.eyebrow--pip::before {
  content: ''; width: 6px; height: 6px; flex: none;
  background: var(--fm-accent-bright); border-radius: 1px; transform: rotate(45deg);
}

/* Диагональная штриховка «внимание»: просроченное, заблокированное */
.hatch { background-image: var(--fm-hatch); }

.divider { height: 1px; background: var(--fm-border-soft); border: 0; margin: var(--fm-space-4) 0; }

.hide { display: none !important; }
@media (max-width: 820px) { .hide-sm { display: none !important; } }
@media (min-width: 821px) { .only-sm { display: none !important; } }

.scroll-y { overflow-y: auto; }
.scroll-x { overflow-x: auto; }
