/* =============================================================================
   ТРОН — страница каталога /products (shop/products/index).
   Подключается ПОСЛЕ category.css в @push('styles') → переопределяет его.
   ============================================================================= */

/* --- Сетка товаров ---
   ВАЖНО: на странице висел display:flex, из-за чего grid-template-columns
   игнорировался. Принудительно делаем CSS-grid и задаём число колонок. */
.products-grid:not(.list-view) {
    display: grid !important;
    gap: 16px !important;
    align-items: stretch;
}
/* десктоп — 4 в ряд */
@media (min-width: 992px) {
    .products-grid:not(.list-view) { grid-template-columns: repeat(4, 1fr) !important; }
}
/* планшет — 3 в ряд */
@media (min-width: 768px) and (max-width: 991.98px) {
    .products-grid:not(.list-view) { grid-template-columns: repeat(3, 1fr) !important; }
}
/* телефон — 2 в ряд */
@media (max-width: 767.98px) {
    .products-grid:not(.list-view) { grid-template-columns: repeat(2, 1fr) !important; }
}

/* --- Сорт-бар над сеткой --- */
.products-sort {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 14px;
    padding: 12px 16px;
    margin-bottom: 16px;
    background: #fff;
    border: 1px solid #e9ecef;
    border-radius: 12px;
}
.products-sort .ps-label {
    color: #6c757d;
    font-size: 14px;
    font-weight: 600;
    margin-right: 2px;
}
.products-sort .ps-label i { color: var(--tron-blue, #2549d8); margin-right: 6px; }
.products-sort .ps-opt {
    color: #495057;
    text-decoration: none;
    font-size: 14px;
    padding: 5px 12px;
    border-radius: 8px;
    transition: all .15s ease;
    white-space: nowrap;
}
.products-sort .ps-opt:hover { color: var(--tron-blue, #2549d8); background: #f3f5fc; }
.products-sort .ps-opt.active { color: #fff; background: var(--tron-blue, #2549d8); font-weight: 600; }

/* Мобила: компактная строка чипов с горизонтальной прокруткой —
   без переноса на 3-4 строки и без подписи «Сортировать по:» */
@media (max-width: 767.98px) {
    .products-sort {
        flex-wrap: nowrap;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        gap: 6px;
        padding: 8px 10px;
    }
    .products-sort::-webkit-scrollbar { display: none; }
    .products-sort .ps-label { display: none; }
    .products-sort .ps-opt {
        flex: 0 0 auto;
        font-size: 12px;
        padding: 4px 11px;
        background: #f4f6fa;
        border-radius: 999px;
    }
    .products-sort .ps-opt.active { background: var(--tron-blue, #2549d8); }
    .products-sort .ps-opt i { font-size: .75em; margin-left: 2px; }
}

/* Стили сайдбара (.sidebar-cat, .filters-hint) вынесены в catalog-sidebar.css
   — единый глобальный источник стилей фильтр-сайдбара. */

/* ── Заголовок раздела каталога (H1) ──────────────────────────────────────
   Добавлен для SEO: до этого на категориях и в листинге H1 отсутствовал.
   Размеры подобраны так, чтобы не сдвигать существующую сетку. */
.catalog-page-head {
    margin: 0 0 18px;
}
.catalog-page-title {
    margin: 0;
    font-size: clamp(1.35rem, 1.1rem + 1vw, 1.9rem);
    font-weight: 800;
    line-height: 1.2;
    color: var(--tron-text, #2b2b2e);
    letter-spacing: -0.01em;
}
.catalog-page-sub {
    margin: 6px 0 0;
    font-size: 0.875rem;
    color: #6b7280;
}

@media (max-width: 575.98px) {
    .catalog-page-head { margin-bottom: 12px; }
    .catalog-page-sub { font-size: 0.8125rem; }
}

/* ── Карточка товара в сетке каталога (мобильный) ─────────────────────────
   Цена — чёрная, кнопка корзины сжата до иконки и стоит в одной строке
   с ценой: так карточка компактнее и в ряд помещается две. */
@media (max-width: 767.98px) {
    .products-grid .grid-template .carousel-product-footer {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 8px;
        flex-wrap: nowrap;
    }

    .products-grid .grid-template .carousel-product-price { flex: 1 1 auto; min-width: 0; }

    .products-grid .grid-template .carousel-current-price {
        color: var(--tron-text, #2b2b2e) !important;
        font-size: 17px;
        font-weight: 700;
    }

    /* Кнопка «В корзину» → квадратная иконка */
    .products-grid .grid-template .carousel-add-to-cart {
        flex: 0 0 auto !important;
        width: 40px !important;
        min-width: 40px !important;
        height: 40px !important;
        min-height: 40px !important;
        padding: 0 !important;
        border-radius: 10px !important;
        font-size: 0 !important;          /* прячем подпись, оставляя иконку */
        line-height: 0 !important;
        gap: 0 !important;
        display: inline-flex !important;
        align-items: center;
        justify-content: center;
    }
    .products-grid .grid-template .carousel-add-to-cart i {
        font-size: 15px !important;
        line-height: 1;
        margin: 0 !important;
    }
}

/* ── Переключатель «сеткой / списком»: показываем ровно один шаблон ────────
   На каждый товар в разметке выводится две карточки — grid-template и
   list-template. Скрытие делалось инлайновым style="display:none", но в
   category.css есть правила с !important, которые его перебивают: в режиме
   списка на экране оказывались обе карточки (каждая вторая «кривая»).
   Здесь явно гасим неактивный шаблон. */
.products-grid.list-view .grid-template { display: none !important; }
.products-grid:not(.list-view) .list-template { display: none !important; }

/* Карточка в режиме «списком»: у большинства позиций описания нет,
   поэтому блок не должен резервировать под себя высоту. */
.products-grid.list-view .list-product-description:empty { display: none; }
.products-grid.list-view .list-product-description {
    min-height: 0;
    margin-bottom: 8px;
}

/* ── Карточка в режиме «списком» (мобильный): компактнее ──────────────────
   Кнопка корзины — небольшая и в одной строке с ценой; убираем пустоту
   между названием и низом карточки. */
@media (max-width: 767.98px) {
    .products-grid.list-view .list-template .list-product-title {
        margin-bottom: 6px !important;
    }
    .products-grid.list-view .list-template .list-product-description {
        margin: 0 0 6px !important;
    }
    /* Блок с ценой и кнопкой — в одну строку */
    .products-grid.list-view .list-template .list-product-purchase {
        display: flex !important;
        align-items: center;
        justify-content: space-between;
        gap: 10px;
        flex-wrap: nowrap;
        margin-top: 6px;
    }
    .products-grid.list-view .list-template .list-product-price {
        flex: 1 1 auto;
        min-width: 0;
        margin: 0 !important;
    }
    .products-grid.list-view .list-template .list-current-price {
        font-size: 18px;
        font-weight: 700;
    }
    /* Кнопка «В корзину» — компактная, по содержимому */
    .products-grid.list-view .list-template .add-to-cart-btn,
    .products-grid.list-view .list-template .list-add-to-cart {
        flex: 0 0 auto !important;
        width: auto !important;
        min-width: 0 !important;
        height: 38px !important;
        min-height: 38px !important;
        padding: 0 14px !important;
        font-size: 13px !important;
        border-radius: 10px !important;
        white-space: nowrap;
    }
    /* Низ карточки не должен «распираться» пустотой */
    .products-grid.list-view .list-template .list-product-info {
        justify-content: flex-start !important;
    }
    .products-grid.list-view .list-template .list-product-footer {
        margin-top: 8px !important;
        padding-top: 8px !important;
    }
}

/* Мельче типографика карточки в режиме «списком» */
@media (max-width: 767.98px) {
    .products-grid.list-view .list-template .list-product-title,
    .products-grid.list-view .list-template .list-product-title a {
        font-size: 14px !important;
        line-height: 1.3 !important;
        font-weight: 600 !important;
    }
    .products-grid.list-view .list-template .list-product-sku,
    .products-grid.list-view .list-template .list-product-article { font-size: 11px !important; }
    .products-grid.list-view .list-template .list-product-description { font-size: 12.5px !important; }
    .products-grid.list-view .list-template .list-status-text,
    .products-grid.list-view .list-template .list-delivery-info { font-size: 12px !important; }
    .products-grid.list-view .list-template .list-current-price { font-size: 16px !important; }
    .products-grid.list-view .list-template .list-old-price { font-size: 12px !important; }
    .products-grid.list-view .list-template .list-rating-text,
    .products-grid.list-view .list-template .list-rating-stars { font-size: 11px !important; }
}

/* ── Карточка «списком»: фактические классы разметки ──────────────────────
   (.list-product-content — колонка с текстом, .list-add-to-cart-btn — кнопка) */
@media (max-width: 767.98px) {
    .products-grid.list-view .list-template .list-product-content {
        justify-content: flex-start !important;
        gap: 4px;
        padding: 10px 12px !important;
    }

    /* Заголовок: сам h3 задаёт 20px — сбрасываем и его, и вложенную ссылку */
    .products-grid.list-view .list-template h3.list-product-title,
    .products-grid.list-view .list-template h3.list-product-title a {
        font-size: 14px !important;
        line-height: 1.3 !important;
        font-weight: 600 !important;
        margin: 0 0 4px !important;
    }

    /* Цена и кнопка — в одной строке */
    .products-grid.list-view .list-template .list-product-purchase {
        display: flex !important;
        flex-direction: row !important;
        align-items: center;
        justify-content: space-between;
        gap: 10px;
        flex-wrap: nowrap;
        margin-top: 4px !important;
    }
    .products-grid.list-view .list-template .list-product-price { flex: 1 1 auto; min-width: 0; margin: 0 !important; }

    .products-grid.list-view .list-template .list-add-to-cart-btn {
        flex: 0 0 auto !important;
        width: auto !important;
        min-width: 0 !important;
        max-width: none !important;
        height: 36px !important;
        min-height: 36px !important;
        padding: 0 12px !important;
        font-size: 12.5px !important;
        border-radius: 10px !important;
        white-space: nowrap;
    }

    /* Пустоты между блоками */
    .products-grid.list-view .list-template .list-product-footer {
        margin-top: 6px !important;
        padding-top: 6px !important;
    }
    .products-grid.list-view .list-template .list-product-actions { margin: 2px 0 !important; }
    .products-grid.list-view .list-template .list-action-btn { width: 34px !important; height: 34px !important; }
}

/* Заголовок карточки «списком»: перебиваем правило с большей специфичностью
   через id контейнера (#products-container задан в разметке категории). */
@media (max-width: 767.98px) {
    #products-container.list-view .list-template h3.list-product-title,
    #products-container.list-view .list-template h3.list-product-title a,
    #products-container.list-view .list-template .list-product-title * {
        font-size: 14px !important;
        line-height: 1.3 !important;
        font-weight: 600 !important;
    }
    #products-container.list-view .list-template h3.list-product-title { margin: 0 0 4px !important; }
}

/* ── Карточка «списком»: шапка в одну строку и крупная чёрная цена ──────── */
@media (max-width: 767.98px) {
    /* Артикул, рейтинг и кнопки «в избранное / сравнить» — одной строкой */
    #products-container.list-view .list-template .list-product-header {
        display: flex !important;
        flex-direction: row !important;
        align-items: center !important;
        justify-content: space-between !important;
        gap: 8px;
        margin-bottom: 6px !important;
    }
    #products-container.list-view .list-template .list-product-meta {
        display: flex !important;
        flex-direction: row !important;
        align-items: center !important;
        gap: 10px;
        flex-wrap: wrap;
        min-width: 0;
    }
    #products-container.list-view .list-template .list-product-actions {
        display: flex !important;
        flex-direction: row !important;
        align-items: center;
        gap: 6px;
        margin: 0 !important;
        flex: 0 0 auto;
    }

    /* Цена — крупная, чёрная, по центру по вертикали относительно кнопки */
    #products-container.list-view .list-template .list-product-purchase {
        align-items: center !important;
    }
    #products-container.list-view .list-template .list-product-price {
        display: flex !important;
        flex-direction: column;
        justify-content: center;
        align-self: center;
    }
    #products-container.list-view .list-template .list-price-main {
        display: flex;
        align-items: center;
        gap: 8px;
    }
    #products-container.list-view .list-template .list-current-price {
        font-size: 22px !important;
        font-weight: 800 !important;
        color: var(--tron-text, #2b2b2e) !important;
        line-height: 1.1 !important;
    }
}

/* Плитка: цена и кнопка-иконка выровнены по центру по вертикали */
@media (max-width: 767.98px) {
    .products-grid .grid-template .carousel-product-footer {
        align-items: center !important;
    }
    .products-grid .grid-template .carousel-product-price {
        display: flex !important;
        align-items: center;
        margin: 0 !important;
        padding: 0 !important;
    }
    .products-grid .grid-template .carousel-price-wrapper {
        display: flex !important;
        align-items: center;
        gap: 6px;
        margin: 0 !important;
    }
    .products-grid .grid-template .carousel-current-price {
        line-height: 1.1 !important;
        margin: 0 !important;
    }
    .products-grid .grid-template .carousel-add-to-cart { align-self: center !important; }
}

/* Карточки видны и при недоступном localStorage или отключённом JavaScript. */
#products-container:not(.list-view) > .grid-template { display: flex !important; }
#products-container.list-view > .list-template { display: flex !important; }
