/* Автосборка стилей доп. модулей (modules_extra) — не редактировать,
   файл перезаписывается движком. Правьте css внутри модулей. */

/* === gameshop/gameshop.css === */
/* ============================================================================
   Модуль gameshop (Игровой магазин) — витрина скинов/транспорта.
   Попадает в общий бандл модулей (files/cache/modules.css), пока модуль включён.
   ========================================================================= */

/* Вкладки категорий */
.gshop__tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px; }
.gshop__tab {
    padding: 8px 16px; border: 1px solid var(--border); border-radius: var(--radius-sm);
    background: var(--bg-elev); color: var(--text-muted); font-weight: 600; font-size: 14px;
    transition: border-color .15s, color .15s;
}
.gshop__tab:hover { color: var(--text); border-color: var(--accent); }
.gshop__tab.is-active { background: linear-gradient(135deg, var(--accent), var(--accent-strong)); color: #fff; border-color: transparent; }

/* Сетка карточек */
.gshop__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 16px; }
.gshop-card {
    position: relative; display: flex; flex-direction: column; gap: 8px;
    background: var(--bg-elev); border: 1px solid var(--border); border-radius: var(--radius);
    padding: 14px; text-align: center;
}
.gshop-card__sale {
    position: absolute; top: 10px; left: 10px; z-index: 2;
    background: var(--green); color: #fff; font-size: 12px; font-weight: 800;
    padding: 2px 8px; border-radius: 20px;
}
.gshop-card__img {
    display: flex; align-items: center; justify-content: center;
    height: 140px; background: var(--bg-card); border: 1px solid var(--border);
    border-radius: var(--radius-sm); overflow: hidden;
}
.gshop-card__img img { max-width: 100%; max-height: 100%; object-fit: contain; }
.gshop-card__noimg { font-size: 44px; opacity: .5; }
.gshop-card__name { font-weight: 700; font-size: 15px; }
.gshop-card__server { font-size: 12px; }
.gshop-card__prices { display: flex; flex-direction: column; gap: 2px; margin: 4px 0 8px; }
.gshop-card__price { font-weight: 800; font-size: 15px; color: var(--accent); }
.gshop-card__price s { font-weight: 400; font-size: 12px; }
.gshop-card__price b { font-size: 12px; }
.gshop-card__owned { cursor: default; opacity: .8; }

/* Плашка баланса монет на выбранном сервере */
.gshop-coins-bar {
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
    padding: 10px 14px; margin-bottom: 16px;
    border: 1px solid var(--border); border-radius: var(--radius-sm);
    background: var(--bg-elev); font-size: 14px;
}
.gshop-coins-bar b { color: var(--accent); }
.gshop-coins-bar--locked { border-color: var(--red); }

/* Способ оплаты в модалке: нативный radio спрятан, рисуем свою «точку» */
.gshop-pay { display: flex; flex-direction: column; gap: 8px; }
.gshop-pay__opt {
    position: relative; display: flex; align-items: center; gap: 12px;
    padding: 13px 14px; border: 1px solid var(--border); border-radius: var(--radius-sm);
    background: var(--bg-elev); cursor: pointer; font-weight: 700; font-size: 15px;
    transition: border-color .15s, box-shadow .15s;
}
.gshop-pay__opt:hover { border-color: var(--accent); }
.gshop-pay__opt input[type="radio"] {
    position: absolute; opacity: 0; width: 0; height: 0; margin: 0; pointer-events: none;
}
.gshop-pay__dot {
    width: 20px; height: 20px; flex: 0 0 auto; border-radius: 50%;
    border: 2px solid var(--border); background: var(--bg-card);
    transition: border-color .15s, background .15s, box-shadow .15s;
}
.gshop-pay__opt input:checked ~ .gshop-pay__dot {
    border-color: var(--accent); background: var(--accent);
    box-shadow: inset 0 0 0 3px var(--bg-elev);
}
.gshop-pay__opt:has(input:checked) { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent) inset; }

/* Админ-редактор товаров (таблица тарифов/цен) */
.gshop-adm-img { width: 46px; height: 46px; object-fit: contain; border: 1px solid var(--border); border-radius: 6px; background: var(--bg-elev); }

@media (max-width: 560px) {
    .gshop__grid { grid-template-columns: repeat(2, 1fr); }
}


/* === prefixes/prefixes.css === */
/* ============================================================================
   Модуль prefixes (Префиксы в чате) — витрина + превью «как в чате».
   Попадает в общий бандл модулей (files/cache/modules.css), пока модуль включён.
   ========================================================================= */

/* Сетка карточек */
.pfx__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 16px; }
.pfx-card {
    display: flex; flex-direction: column; gap: 8px; min-width: 0;
    background: var(--bg-elev); border: 1px solid var(--border); border-radius: var(--radius);
    padding: 14px; text-align: center;
}
.pfx-card__name { font-weight: 700; font-size: 15px; }
.pfx-card__meta { font-size: 12px; }
.pfx-card__prices { display: flex; justify-content: center; gap: 12px; margin: 4px 0 8px; }
.pfx-card__price { font-weight: 800; font-size: 15px; color: var(--accent); }
.pfx-card__price b { font-size: 12px; }
.pfx-card__owned { cursor: default; opacity: .8; }

/* Превью строки чата CS 1.6 (тёмная подложка «консоли» в обеих темах) */
.pfx-card__preview {
    display: flex; align-items: center; justify-content: center;
    padding: 14px 10px; border-radius: var(--radius-sm);
    background: #1d2330; border: 1px solid rgba(255, 255, 255, .06);
    overflow: hidden; min-width: 0;
}
/* nowrap не должен распирать карточку — длинное превью обрезается многоточием */
.pfx-chat { font-size: 13px; font-weight: 700; white-space: nowrap; color: #e8c545; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
.pfx-chat__pfx { color: #e8c545; }
.pfx-chat__pfx--green { color: #46c46e; }
.pfx-chat__pfx--team { color: #7fa8ff; }
.pfx-chat__nick { color: #7fa8ff; }
.pfx-chat__sep { color: #7fa8ff; }
.pfx-chat__msg { color: #e8c545; font-weight: 500; }

/* Способ оплаты в модалке: нативный radio спрятан, рисуем свою «точку» */
.pfx-pay { display: flex; flex-direction: column; gap: 8px; }
.pfx-pay__opt {
    position: relative; display: flex; align-items: center; gap: 12px;
    padding: 13px 14px; border: 1px solid var(--border); border-radius: var(--radius-sm);
    background: var(--bg-elev); cursor: pointer; font-weight: 700; font-size: 15px;
    transition: border-color .15s, box-shadow .15s;
}
.pfx-pay__opt:hover { border-color: var(--accent); }
.pfx-pay__opt input[type="radio"] {
    position: absolute; opacity: 0; width: 0; height: 0; margin: 0; pointer-events: none;
}
.pfx-pay__dot {
    width: 20px; height: 20px; flex: 0 0 auto; border-radius: 50%;
    border: 2px solid var(--border); background: var(--bg-card);
    transition: border-color .15s, background .15s, box-shadow .15s;
}
.pfx-pay__opt input:checked ~ .pfx-pay__dot {
    border-color: var(--accent); background: var(--accent);
    box-shadow: inset 0 0 0 3px var(--bg-elev);
}
.pfx-pay__opt:has(input:checked) { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent) inset; }

/* Мобильные: карточка с превью чата слишком широкая для двух колонок —
   на телефоне каталог идёт в одну колонку. */
@media (max-width: 560px) {
    .pfx__grid { grid-template-columns: 1fr; }
    .pfx-card { padding: 12px; }
}

/* --- «Мои префиксы»: таблица на узких экранах ---
   Шесть колонок с длинным превью префикса не помещаются в телефон, а у
   .data-table стоит overflow: hidden — правые колонки (статус и кнопка)
   обрезались. Таблица уезжает вбок внутри своей обёртки.
   Правила продублированы в модуле намеренно: он должен оставаться
   самодостаточным и не зависеть от внутренностей темы. */
.pfx .table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.pfx .table-scroll > .data-table { margin-bottom: 0; min-width: 760px; }
.pfx .table-scroll .data-table th,
.pfx .table-scroll .data-table td { white-space: nowrap; }
/* Превью префикса — единственная колонка, которой перенос нужен. */
.pfx .table-scroll .data-table td:first-child { white-space: normal; min-width: 240px; }

/* === site_stats/site_stats.css === */
/* ============================================================================
   Модуль site_stats — стили блока «Статистика».
   Подключается автоматически на всех страницах, пока модуль включён
   (админка «Модули»); main.css темы не затрагивается.
   ========================================================================= */

.site-stats { display: grid; gap: 8px 34px; font-size: 14px; }
.site-stats--h { grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-flow: column; grid-template-rows: repeat(4, auto); }
.site-stats--v { grid-template-columns: 1fr; }
.site-stats__item { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.site-stats__label { color: var(--text-muted); }
.site-stats__value { color: var(--text); font-weight: 800; }
.site-stats__today { color: var(--red); font-weight: 800; font-size: 11px; margin-left: 2px; }

@media (max-width: 760px) {
    .site-stats--h { grid-template-columns: 1fr; grid-auto-flow: row; grid-template-rows: none; }
}


