/* ═══════════════════════════════════════
   Статистика: агрегаты PvP и PvE и история боёв
   ═══════════════════════════════════════ */

/*
 * Своих цветов, отступов и радиусов файл не заводит — только переменные из
 * global.css, поэтому переключатель светлой и тёмной темы работает без единой
 * правки здесь.
 */
.stats {
    max-width: 900px;
    margin: 0 auto;
    padding: var(--space-xl) var(--space-lg) var(--space-3xl);
}

.stats__header {
    margin-bottom: var(--space-2xl);
}

/* Заголовок — .page-title. */

/* Агрегаты: по карточке на вид статистики, с автопереносом на узком экране. */
.stats__aggregates {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: var(--space-lg);
    margin-bottom: var(--space-3xl);
}

/* Карточка агрегата — .paper-card (её собирает stats.js). Строка счёта —
   цифрами голосом игры; это фраза, поэтому размер секции, а не заголовка. */
.stats__card-title {
    font-size: var(--font-md);
    font-weight: 700;
    margin-bottom: var(--space-sm);
}

.stats__card-numbers {
    font-family: var(--font-display);
    font-size: var(--font-section);
    margin-bottom: var(--space-xs);
}

.stats__card-total {
    font-size: var(--font-sm);
    color: var(--text-muted);
}

.stats__section-title {
    margin-bottom: var(--space-lg);
}

.stats__battles {
    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
    list-style: none;
}

/* Колонки текста — minmax(0, …), а не 1fr: нижняя граница 1fr — самая длинная
   неразрывная строка, и награда с длинным списком образцов раздвигала карточку
   шире экрана (Safari на телефоне уменьшал всю страницу). Награда — по своей
   ширине, но не шире 40% строки, и с переносом: обычная встаёт в строку, как
   раньше, длинная переносится, а режиму и сопернику остаётся место. */
.stats__battle-link {
    display: grid;
    grid-template-columns: 110px minmax(0, 1fr) minmax(0, 1fr) auto auto fit-content(40%);
    gap: var(--space-md);
    align-items: center;
    padding: var(--space-md) var(--space-lg);
    text-decoration: none;
}

/* Строка — ссылка на бой во всю ширину (.paper-card--interactive). Исход —
   бирка со словом: победа заливкой --success, поражение — --danger,
   прерванный — --warning, ничья — бумага. */
.stats__battle-result {
    justify-self: start;
}

.stats__battle-result--win {
    background: var(--success);
    color: var(--text-on-accent);
}

.stats__battle-result--loss {
    background: var(--danger);
    color: var(--text-on-accent);
}

.stats__battle-result--aborted {
    background: var(--warning);
    color: var(--text-on-accent);
}

.stats__battle-mode,
.stats__battle-opponent {
    overflow: hidden;
    color: var(--text-primary);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.stats__battle-rounds,
.stats__battle-date,
.stats__battle-rewards {
    font-size: var(--font-sm);
    color: var(--text-muted);
}

/* Раунды и дата короткие и в строку; награда переносится. */
.stats__battle-rounds,
.stats__battle-date {
    white-space: nowrap;
}

.stats__more {
    margin-top: var(--space-lg);
}

/* На узком экране колонки схлопываются в две: строка остаётся читаемой. */
@media (max-width: 900px) {
    .stats__battle-link {
        grid-template-columns: 110px minmax(0, 1fr);
        row-gap: var(--space-xs);
    }

    .stats__battle-rewards,
    .stats__battle-date {
        grid-column: 2;
    }
}
