/* ============================================================================
   PAGE FAMILY: catalog list pages (B3 shell) — STRUCTURE tier — from the 3 global files, original order
   Migrated 2026-07-05. Scope: every rule scoped to catalog-list-page /
   artwork-list-page / artist-list-page / article-list-page / museum-list-page
   (all four list templates carry `catalog-list-page artwork-list-page
   <type>-list-page`; these scopes render nowhere else).
   Includes the legacy-alias card rules that only serve article legacy cards on
   list pages (A1z bookkeeping: they now live here, delete with A1b).
   PHASE-A FIDELITY: verbatim relocation (incl. legacy !important); tokenization
   is a recorded follow-up. Do not edit without re-running the harness diff.
   ============================================================================ */
.search_sec.catalog-list-page .custom_search .article-list-card .article-list-card__meta h2 {
    margin-top: 0;
    margin-bottom: 0;
}

.search_sec.catalog-list-page .custom_search .article-list-card .article-list-card__meta h2,
.search_sec.catalog-list-page .custom_search .article-list-card .article-list-card__meta h2 a,
.search_sec.catalog-list-page .custom_search .article-list-card .article-list-card__meta span,
.search_sec.catalog-list-page .custom_search .article-list-card .article-list-card__meta span a {
    font-size: 14px;
    line-height: 1.35;
}

.artwork-list-page .custom_search .article-list-card .article-list-card__body {
    margin-top: 8px;
    height: auto;
}

.article-list-page .custom_search .article-list-card .article-list-card__body {
    margin-top: 0;
}

.search_sec.article-list-page .article-list-grid .article-list-card__content p.catalog-card-meta-description {
    display: block;
    -webkit-line-clamp: unset;
    line-clamp: unset;
    -webkit-box-orient: unset;
    overflow: visible;
    text-overflow: unset;
    max-height: none;
}

.search_sec.catalog-list-page .custom_search > .col-md-12,
.search_sec.artwork-list-page .custom_search > .col-md-12 {
    position: relative;
    z-index: 0;
}

.article-list-page .article-list-grid .article-list-card,
.search_sec.article-list-page .article-list-grid .article-list-card {
    overflow: visible; /* hover extends below card; image zoom clipped by __media */
    position: relative;
    padding: 0; /* reset global .article-list-card 25px 15px inset so hover matches card width */
}

.article-list-page .article-list-grid .article-list-card:hover,
.search_sec.article-list-page .article-list-grid .article-list-card:hover {
    z-index: 20; /* paint hover panel above cards in the row below */
}

.article-list-page .article-list-grid .article-list-card__inner,
.search_sec.article-list-page .article-list-grid .article-list-card__inner {
    position: static;
}

.article-list-page .article-list-grid .article-list-card__hover,
.search_sec.article-list-page .article-list-grid .article-list-card__hover {
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    margin: 0;
    padding: 0;
    border-bottom: 0;
    box-sizing: border-box;
    z-index: 1;
}

/* ---- vertical row gutter (2026-07-07 fix) ----
   Bootstrap's `.row` defaults `--bs-gutter-y` to 0, so wrapped grid rows had
   zero vertical breathing room between them (only the horizontal --bs-gutter-x
   gutter was ever set) — the artwork-catalog-card grid on artist/artwork/museum
   list pages had cards in row N+1 visually touching row N. The article grid
   already got a per-brand --bs-gutter-y (see page-catalog-list--<brand>.css);
   this restores the same vertical spacing here as the shared default for every
   list type. :not(.article-list-grid) avoids overriding those per-brand values
   (this selector is more specific than theirs and would otherwise win). */
.search_sec.catalog-list-page .custom_search:not(.article-list-grid) > .row {
    --bs-gutter-y: 1.5rem;
}

