/* Фильтры в категориях — extension/catfilter 1.0.0 */
.catfilter-head { display: flex; align-items: baseline; flex-wrap: wrap; gap: .25rem .75rem; margin-bottom: .75rem; }
.catfilter-head h1 { margin: 0; }
.catfilter-total { color: var(--bs-secondary-color, #6c757d); }

/* Left column / offcanvas */
@media (min-width: 992px) {
  .catfilter-panel { position: sticky; top: 1rem; max-height: calc(100vh - 2rem); overflow-y: auto; overscroll-behavior: contain; padding-right: .25rem; scrollbar-width: thin; }
  .catfilter-panel .offcanvas-header { display: none; }
  .catfilter-panel .offcanvas-body { padding: 0; overflow: visible; }
}
@media (max-width: 991.98px) {
  .catfilter-col { width: 0; padding: 0; flex: 0 0 0; }
  .catfilter-panel { --bs-offcanvas-width: min(92vw, 400px); }
  .catfilter-panel .offcanvas-body { padding-bottom: 5.5rem; }
  .catfilter-actions { position: fixed; left: 0; bottom: 0; width: min(92vw, 400px); padding: .75rem 1rem; background: var(--bs-body-bg, #fff); border-top: 1px solid var(--bs-border-color, #dee2e6); z-index: 2; }
}
.catfilter-form { display: flex; flex-direction: column; gap: .25rem; }
.catfilter-group { border-bottom: 1px solid var(--bs-border-color-translucent, rgba(0, 0, 0, .08)); padding: .75rem 0; }
.catfilter-group > summary { font-weight: 700; cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; margin-bottom: .5rem; }
.catfilter-group > summary::-webkit-details-marker { display: none; }
.catfilter-group > summary::after { content: ""; width: .45rem; height: .45rem; border-right: 2px solid var(--bs-secondary-color, #6c757d); border-bottom: 2px solid var(--bs-secondary-color, #6c757d); transform: rotate(45deg); margin: 0 .25rem .2rem 0; transition: transform .2s; }
.catfilter-group:not([open]) > summary { margin-bottom: 0; }
.catfilter-group:not([open]) > summary::after { transform: rotate(-45deg); margin-bottom: 0; }
.catfilter-options { display: flex; flex-direction: column; gap: .1rem; }
.catfilter-options.is-collapsible:not(.is-expanded) > .catfilter-option:nth-child(n+9) { display: none; }
.catfilter-option { display: flex; align-items: center; gap: .5rem; padding: .25rem 0; cursor: pointer; line-height: 1.25; font-size: .95rem; }
.catfilter-option .form-check-input { margin: 0; flex: 0 0 auto; }
.catfilter-label { flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; }
.catfilter-count { color: var(--bs-secondary-color, #8a9199); font-size: .8rem; }
.catfilter-option.is-empty { opacity: .45; }
@media (hover: hover) { .catfilter-option:hover .catfilter-label { color: var(--bs-primary); } }
.catfilter-more { border: 0; background: none; padding: .25rem 0 0; color: var(--bs-primary); font-size: .9rem; }
.catfilter-swatch { flex: 0 0 auto; width: 1rem; height: 1rem; border-radius: 50%; border: 1px solid rgba(0, 0, 0, .2); }
.catfilter-swatch-transparent { background: repeating-conic-gradient(#ddd 0 25%, #fff 0 50%) 50% / 8px 8px; }
.catfilter-swatch-multi { background: conic-gradient(#e63946, #f4a261, #e9c46a, #2a9d8f, #457b9d, #9d4edd, #e63946); }
.catfilter-price { display: flex; align-items: center; gap: .4rem; }
.catfilter-price .form-control { min-width: 0; }
.catfilter-dash { color: var(--bs-secondary-color, #6c757d); }
.catfilter-switch { padding: .6rem 0; }
.catfilter-switch .catfilter-label { font-weight: 700; }
.catfilter-actions { padding-top: .75rem; }
@media (min-width: 992px) {
  .js-catfilter .catfilter-apply { display: inline-block; }
  .js-catfilter .catfilter-actions .btn-primary { display: none; }
}

/* Toolbar + chips */
.catfilter-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin-bottom: .75rem; }
.catfilter-toolbar .catfilter-sort { width: auto; flex: 1 1 240px; max-width: 360px; }
.catfilter-toolbar .catfilter-limit { width: auto; flex: 0 0 auto; }
.catfilter-toolbar .catfilter-limit .form-select { width: 5.5rem; }
.catfilter-toolbar .btn-group, .catfilter-toolbar #compare-total { margin-left: auto; }
.catfilter-toolbar .btn-group + #compare-total { margin-left: 0; }
.catfilter-chips { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: 1rem; }
.catfilter-chip { display: inline-flex; align-items: center; gap: .4rem; padding: .3rem .75rem; border-radius: 2rem; background: rgba(var(--bs-primary-rgb), .1); color: var(--bs-primary); text-decoration: none; font-size: .9rem; }
.catfilter-chip:hover { background: rgba(var(--bs-primary-rgb), .2); }
.catfilter-chip-reset { background: var(--bs-tertiary-bg, #f1f3f5); color: var(--bs-body-color, #212529); }
.catfilter-empty { padding: 2rem 0; }

/* Grid with the filter column: 2 per row < 992, 3 on 992–1399, 4 from 1400 */
.catfilter-page #product-list.row:not(.product-list) > * { flex: 0 0 auto; width: 50%; }
@media (min-width: 992px) { .catfilter-page #product-list.row:not(.product-list) > * { width: 33.33333333%; } }
@media (min-width: 1400px) { .catfilter-page #product-list.row:not(.product-list) > * { width: 25%; } }

/* Бесконечная прокрутка: пагинация и выбор количества скрыты, товары догружаются */
.js-catfilter .catfilter-pagination { display: none; }
.catfilter-infinite { display: flex; flex-direction: column; align-items: center; gap: .75rem; padding: 1rem 0 .5rem; }
.catfilter-progress { color: var(--bs-secondary-color, #6c757d); font-size: .9rem; }
.catfilter-more { min-width: 12rem; }
.catfilter-done { margin: 0; color: var(--bs-secondary-color, #6c757d); font-size: .9rem; }
.catfilter-sentinel { width: 100%; height: 1px; }

/* Product cards inside the filtered listing: long names without spaces must not overflow into the next card */
.catfilter-page .product-thumb h4 { font-size: 1.05rem; line-height: 1.3; overflow-wrap: anywhere; word-break: break-word; }
@media (max-width: 767.98px) {
  .catfilter-page .product-thumb h4 { font-size: .95rem; }
  .catfilter-page .product-thumb .description p:not(.price) { display: none; }
}
