/* Раскладка. Колонки и плитки собираются CSS Grid — по умолчанию и всегда;
   flex остаётся только для одномерных строк (подпись + кнопка), где сетка
   ничего не добавляет, зато добавляет код. */

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

body {
  margin: 0;
  background: var(--color-bg);
  color: var(--color-text);
  font-family: var(--font-body);
  font-size: var(--text-base);
  line-height: 1.5;
}

/* Каркас страницы: шапка и содержимое — две строки сетки. */
.site {
  display: grid;
  grid-template-rows: auto 1fr;
  min-height: 100vh;
}

.site-head {
  display: flex; /* одномерная строка: бренд слева, учётка справа */
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-3) var(--space-5);
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-border);
}

.page {
  display: grid;
  justify-items: center;
  align-content: start;
  gap: var(--space-5);
  padding: var(--space-6) var(--space-5);
}

/* Панель — рабочая область страницы. */
.panel {
  display: grid;
  gap: var(--space-4);
  justify-items: start;
  width: 100%;
  max-width: var(--container-max);
}

/* Плитки: сами решают, сколько их в ряду, по доступной ширине — фиксированных
   колонок нет, поэтому на телефоне они встают в один столбец без медиазапросов. */
.cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: var(--space-4);
  width: 100%;
}

/* Форма: поля друг под другом — одна колонка сетки. */
.form {
  display: grid;
  gap: var(--space-4);
  width: 100%;
}

.field {
  display: grid;
  gap: var(--space-1);
}

/* Чекбокс с подписью — одномерная строка. */
.check {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-sm);
  color: var(--color-text-soft);
}

/* Строка учётной записи в шапке — тоже одномерная: имя и кнопка. */
.site-user {
  display: flex;
  align-items: center;
  gap: var(--space-3);
}

@media (max-width: 640px) {
  .site-head {
    flex-wrap: wrap;
  }
}
