/* ==========================================================================
   PEPTIDESTX — RESEARCH CATALOG (simplified)
   Layout only. All interactive component visuals (cards, dropdown, search
   bar, badges, empty state, skeleton, pagination) are inherited unmodified
   from the approved Design System — see cards.css, forms.css,
   tables-badges.css, states.css, navigation-elements.css.

   Simplified per approval: no sidebar filters, no mobile filter/sort
   sheets, no toolbar batch-lookup link — those elements' styles were
   removed along with the markup. Category tabs, search, sort, grid,
   empty state, and (dormant) pagination remain.
   ========================================================================== */

/* ---------------------------------------------------------------------
   1. CATALOG HEADER BAND
   --------------------------------------------------------------------- */

.catalog-header {
  background: var(--color-white);
  padding-block: var(--space-16);
  border-bottom: 1px solid var(--color-graphite-border-light);
}

.catalog-header__breadcrumbs {
  margin-bottom: var(--space-6);
}

.catalog-header__heading {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 40px;
  line-height: 44px;
  color: var(--color-obsidian);
  margin-bottom: var(--space-3);
}

.catalog-header__intro {
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 26px;
  color: var(--color-graphite-500);
  max-width: 560px;
  margin-bottom: var(--space-4);
}

.catalog-header__notice {
  font-family: var(--font-body);
  font-size: 12px;
  color: var(--color-graphite-500);
}

@media (max-width: 767px) {
  .catalog-header {
    padding-block: var(--space-10);
  }
  .catalog-header__heading {
    font-size: 30px;
    line-height: 34px;
  }
}

/* ---------------------------------------------------------------------
   2. CATEGORY TABS (pill row)
   --------------------------------------------------------------------- */

.category-nav {
  background: var(--color-white);
  padding-block: var(--space-6);
  border-bottom: 1px solid var(--color-graphite-border-light);
}

.category-nav__row {
  display: flex;
  gap: var(--space-3);
  overflow-x: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.category-nav__row::-webkit-scrollbar {
  display: none;
}

.category-nav__pill {
  flex-shrink: 0;
}

/* ---------------------------------------------------------------------
   3. TOOLBAR (search + result count + sort)
   --------------------------------------------------------------------- */

.catalog-toolbar {
  background: var(--color-white);
  padding-block: var(--space-6);
  position: sticky;
  top: var(--header-height);
  z-index: 40;
  border-bottom: 1px solid var(--color-graphite-border-light);
}

.catalog-toolbar__row {
  display: flex;
  align-items: center;
  gap: var(--space-6);
  flex-wrap: wrap;
}

.catalog-toolbar__search {
  flex: 1 1 320px;
  max-width: 400px;
}

.catalog-toolbar__spacer {
  flex: 1 1 auto;
}

.catalog-toolbar__meta {
  display: flex;
  align-items: center;
  gap: var(--space-6);
  flex-shrink: 0;
}

.catalog-toolbar__count {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 13px;
  color: var(--color-graphite-500);
  white-space: nowrap;
}

.catalog-toolbar__sort {
  width: 220px;
  flex-shrink: 0;
}

.catalog-toolbar__mobile-count {
  display: none;
}

@media (max-width: 1023px) {
  .catalog-toolbar {
    top: var(--header-height-tablet);
  }
}

@media (max-width: 767px) {
  .catalog-toolbar {
    top: var(--header-height-mobile);
    padding-block: var(--space-4);
  }

  .catalog-toolbar__row {
    flex-direction: column;
    align-items: stretch;
  }

  .catalog-toolbar__search {
    max-width: none;
  }

  .catalog-toolbar__meta {
    justify-content: space-between;
  }

  .catalog-toolbar__sort {
    width: auto;
    flex: 1;
  }

  .catalog-toolbar__mobile-count {
    display: block;
    font-family: var(--font-body);
    font-size: 13px;
    color: var(--color-graphite-500);
    margin-top: var(--space-3);
  }
}

/* ---------------------------------------------------------------------
   4. PRODUCT GRID (full-width — no sidebar in the simplified Catalog)
   --------------------------------------------------------------------- */

.catalog-body {
  background: var(--color-white);
  padding-block: var(--space-10) var(--space-24);
}

.catalog-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  column-gap: var(--space-6);
  row-gap: var(--space-10);
}

.catalog-grid > .product-card {
  width: 100%;
  min-width: 0; /* allow the card to shrink below its content's natural width */
}

@media (max-width: 1279px) {
  .catalog-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 1023px) {
  .catalog-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: var(--space-5);
    row-gap: var(--space-8);
  }
  .catalog-body {
    padding-block: var(--space-8) var(--space-16);
  }
}

@media (max-width: 767px) {
  .catalog-grid {
    grid-template-columns: minmax(0, 1fr);
    row-gap: var(--space-8);
  }
}

/* Fade transition for cards entering/exiting on sort/search/category change */
.catalog-grid.is-transitioning > * {
  animation: catalog-card-in 200ms var(--ease-out) both;
}

@keyframes catalog-card-in {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  .catalog-grid.is-transitioning > * {
    animation: none;
  }
}

/* ---------------------------------------------------------------------
   5. PAGINATION (kept, dormant at current inventory size — see catalog.js)
   --------------------------------------------------------------------- */

.catalog-pagination {
  margin-top: var(--space-16);
}

/* ---------------------------------------------------------------------
   EMPTY STATE WRAPPER
   --------------------------------------------------------------------- */

.catalog-empty {
  grid-column: 1 / -1;
}
