/* Shared catalogue grid. Bootstrap 4 rows only provide vertical column
 * padding, so use grid gap instead of compensating page-specific margins. */
.apps-catalogue-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.25rem; }
.apps-catalogue-grid > .card { min-width: 0; }
.apps-catalogue-filters { flex-wrap: wrap; gap: .5rem; }
@media (max-width: 1199.98px) { .apps-catalogue-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767.98px) {
    .apps-catalogue-grid { grid-template-columns: minmax(0, 1fr); gap: 1rem; }
    .apps-catalogue-filters { display: flex; flex-wrap: nowrap; max-width: 100%; overflow-x: auto; padding-bottom: .25rem; }
    .apps-catalogue-filters .btn { flex: 0 0 auto; }
}
