/* Сброс, типографика, общие утилиты. */

*, *::before, *::after { box-sizing: border-box; }

html, body { margin: 0; padding: 0; }

body {
  /* Колонка на всю высоту окна: подвал прижат к низу даже на короткой
     странице, а не висит сразу под контентом. */
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  background: radial-gradient(120% 90% at 30% 20%, #21201d 0%, #131211 45%, var(--bg-deep) 100%) fixed;
  color: var(--txt);
  font-family: var(--font);
  font-size: 17px;
  line-height: 1.45;
  -webkit-font-smoothing: antialiased;
}

a { color: var(--accent); text-decoration: none; }
a:hover { color: var(--accent-hi); }
::selection { background: var(--accent); color: #fff; }

button { font-family: inherit; font-size: inherit; color: inherit; background: none; border: none; cursor: pointer; }
input { font-family: inherit; }

h1, h2, h3 { margin: 0; font-weight: 600; letter-spacing: 0.04em; }

/* --- Надписи-метки: везде моно, разрядка, капс --- */
.label {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.14em;
  color: var(--dim);
  text-transform: uppercase;
}

.section-title {
  font-size: 15px;
  letter-spacing: 0.18em;
  color: var(--muted);
  text-transform: uppercase;
}

.mono { font-family: var(--mono); }
.num  { font-family: var(--mono); font-weight: 500; }

.muted { color: var(--muted); }
.dim   { color: var(--dim); }
.ok    { color: var(--ok); }
.warn  { color: var(--warn); }
.acc   { color: var(--accent); }

.row     { display: flex; align-items: center; gap: 12px; }
.row-end { display: flex; align-items: center; gap: 12px; justify-content: space-between; }
.spacer  { flex: 1; }
.hidden  { display: none !important; }

.stack   { display: flex; flex-direction: column; gap: var(--gap); }

/* Заголовок раздела с подписью справа */
.head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 18px;
}
