/* ============================================================
   ui.css — единообразие элементов и мобильная упаковка
   Подключается ПОСЛЕДНИМ, чтобы перекрывать базовые стили страниц
   ============================================================ */

/* ----- Центрирование контента на широких экранах ----- */
.page,
.admin-page {
    max-width: 1080px;
    margin: 0 auto;
}

/* ----- Единый заголовок страниц (вместо инлайн-стилей) ----- */
.page-title {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.page-title-text {
    font-weight: 400;
    color: var(--cream);
    letter-spacing: 1px;
    border-left: 4px solid var(--accent);
    padding-left: 16px;
    margin: 0;
}

.page-title-hint {
    color: var(--text-ghost-2);
    font-size: 0.9rem;
}

/* ----- МОБИЛЬНАЯ УПАКОВКА ----- */

/* Планшеты и узкие окна */
@media (max-width: 768px) {
    .main {
        padding: 16px;
    }
    .card {
        padding: 16px 18px;
        border-radius: var(--radius-md);
    }
    .card-title {
        font-size: 1.5rem;
    }
}

/* ----- МОБИЛЬНАЯ «ШТОРКА»: шапка уезжает вверх при прокрутке,
        на её месте остаётся липкий заголовок контента ----- */
@media (max-width: 768px) {
    .header {
        transform: translateY(0);
        transition: transform 0.32s ease;
    }

    body.header-hidden .header {
        transform: translateY(-100%);
    }

    /* Фон страницы совпадает с фоном липкого заголовка —
       даже при малейшей погрешности замера высоты шапки
       зазор между верхом окна и заголовком не виден */
    body.header-hidden {
        background-color: var(--bg-main);
    }

    .main {
        transition: margin-top 0.32s ease;
    }

    body.header-hidden .main {
        margin-top: calc(-1 * var(--header-h, 140px));
    }

    /* Липкие заголовки: всегда закреплены, встают на место шапки */
    .page-title {
        position: sticky;
        top: 0;
        z-index: 60;
        background: var(--bg-main);
        border-bottom: 1px solid var(--border);
        padding: 10px 2px;
        margin-bottom: 12px;
    }

    .page-sticky {
        position: sticky;
        top: 0;
        z-index: 60;
        background: var(--bg-main);
        border-bottom: 1px solid var(--border);
        padding: 10px 2px 8px;
        margin-bottom: 12px;
    }

    .page-sticky .page-title {
        position: static;
        background: none;
        border-bottom: none;
        padding: 0;
        margin-bottom: 8px;
    }

    .page-sticky .filter-area {
        margin-bottom: 0;
    }

    .feedback-breadcrumbs {
        position: sticky;
        top: 0;
        z-index: 60;
        background: var(--bg-main);
        border-bottom: 1px solid var(--border);
    }
}

/* Телефоны: минимум отступов, больше текста на экран */
@media (max-width: 480px) {
    .main {
        padding: 12px 10px;
    }
    .card {
        padding: 14px 14px;
        border-left-width: 3px;
    }
    .news-item,
    .faq-item,
    .chat-item,
    .kill-item {
        padding: 12px 14px;
        border-left-width: 4px;
    }
    .player-row {
        padding: 10px 12px;
    }
    .feedback-request-item {
        padding: 10px 12px;
    }
    .feedback-card,
    .feedback-detail-info,
    .feedback-reply-card {
        padding: 12px 14px;
        border-left-width: 3px;
    }
    .filter-area,
    .players-filter-area {
        padding: 4px 10px;
        margin-bottom: 14px;
    }
    .filter-area input,
    .players-filter-area input {
        padding: 8px 0;
        font-size: 0.92rem;
    }
    .news-item .news-date {
        font-size: 1rem;
        line-height: 1.6;
    }
    .news-item .news-title {
        font-size: 1.1rem;
    }
    .faq-item .faq-title {
        font-size: 1rem;
    }
    .page-title {
        margin-bottom: 12px;
    }
    .page-title-hint {
        font-size: 0.75rem;
    }
}
