/* Catalogue components. Loaded after the shared theme; no checkout/navigation rules. */
.listing { display: grid; gap: 1rem; min-width: 0; }
.listing.products.columns { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.listing.products.rows { grid-template-columns: minmax(0, 1fr); }
.listing.categories, .listing.manufacturers { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.listing > * { min-width: 0; }
.listing h1, .listing h2, .listing h3 { padding-bottom: 0; border: 0; }
.listing .product, .listing .category, .listing .manufacturer {
  position: relative; min-width: 0; margin: 0; overflow: hidden;
  background: #fff; border: 1px solid #dce4ee; border-radius: .875rem;
  box-shadow: 0 3px 12px rgba(15,35,65,.035); transform: none;
  transition: border-color 150ms ease, box-shadow 150ms ease;
}
.listing .product .link, .listing .category .link, .listing .manufacturer .link {
  display: flex; flex-direction: column; height: 100%; min-width: 0;
  color: inherit; text-decoration: none; border-radius: inherit;
}
.listing .product .link:focus-visible, .listing .category .link:focus-visible, .listing .manufacturer .link:focus-visible {
  outline: 3px solid #1762a8; outline-offset: -3px;
}
.listing .product .image-wrapper, .listing .category .image-wrapper, .listing .manufacturer .image-wrapper {
  position: relative; display: flex; align-items: center; justify-content: center;
  width: 100%; aspect-ratio: 1; padding: 1rem; background: #fff; overflow: hidden;
}
.listing .product .image, .listing .category .image, .listing .manufacturer img {
  display: block; width: 100%; height: 100%; min-width: 0; object-fit: contain;
}
.catalog-image-fallback {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: .65rem; width: 100%; height: 100%; text-align: center; color: #596b80;
  font-size: .8rem; line-height: 1.4;
}
.catalog-image-fallback svg { flex: 0 0 auto; color: #9baabd; }
.listing .product .image-wrapper .sticker {
  position: absolute; top: .6rem; left: .6rem; width: auto; max-width: calc(100% - 1.2rem);
  margin: 0; padding: .25rem .55rem; border-radius: .4rem; transform: none;
  font-size: .72rem; font-weight: 750; line-height: 1.3; text-transform: none;
  color: #fff; background: #153c67; text-align: start;
}
.listing .product .sticker.new { background: #153c67; }
.listing .product .sticker.sale { background: #b32623; }
.listing .product .info {
  display: flex; flex-direction: column; flex: 1 1 auto; gap: .4rem;
  min-width: 0; padding: .9rem; background: #fff; text-align: start;
}
.listing .product .manufacturer-name {
  padding: 0; color: #506176; font-size: .78rem; font-weight: 650; line-height: 1.4;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; opacity: 1;
}
.listing .product .name {
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; line-clamp: 4;
  overflow: hidden; overflow-wrap: anywhere; margin: 0; padding: 0;
  min-height: 5.6em; max-height: 5.6em; color: #172b45;
  font-size: .94rem; font-weight: 680; line-height: 1.4; letter-spacing: -.012em;
}
.listing .product .description { display: none; margin: 0; padding: 0; color: #506176; font-size: .88rem; line-height: 1.5; }
.listing .product .price-wrapper {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: .2rem .5rem;
  margin-top: auto; padding: .55rem 0 0; font-size: 1.05rem; line-height: 1.35;
}
.listing .product .price, .listing .product .campaign-price { min-width: 0; max-width: 100%; color: #117b3c; font-weight: 780; white-space: normal; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
.listing .product .regular-price { min-width: 0; max-width: 100%; color: #596b80; font-size: .78rem; font-weight: 450; white-space: normal; overflow-wrap: anywhere; }
.listing .product .campaign-price { color: #aa2421; }
.listing .product .preview {
  display: none; position: absolute; top: .5rem; right: .5rem; width: 44px; height: 44px;
  align-items: center; justify-content: center; margin: 0; padding: 0;
  border: 1px solid #d6e0ec; border-radius: .6rem; background: #fff; color: #153c67;
  box-shadow: 0 2px 8px rgba(15,35,65,.06); opacity: 1; visibility: visible;
}
.listing .product .preview:focus-visible { outline: 3px solid #1762a8; outline-offset: 2px; }
.listing.rows .product .link { display: grid; grid-template-columns: 100px minmax(0, 1fr); align-items: start; }
.listing.rows .product .image-wrapper { width: 100%; padding: .75rem; }
.listing.rows .product .info { height: 100%; padding: .8rem .8rem .8rem 0; }
.listing.rows .product .name { min-height: 0; }
.listing.rows .product .price-wrapper { margin-top: .3rem; }
.listing .category .image-wrapper { aspect-ratio: 4 / 3; padding: .75rem; }
.listing .category .image { padding: 0; }
.listing .category .caption, .listing .manufacturer .caption { padding: .85rem; background: #fff; text-align: start; }
.listing .category .caption { display: flex; flex-direction: column; gap: .35rem; flex: 1; }
.listing .category .name, .listing .manufacturer .caption {
  margin: 0; padding-top: 0; padding-bottom: 0; color: #172b45; font-size: .95rem;
  font-weight: 700; line-height: 1.4; overflow-wrap: anywhere;
}
.listing .category .short-description { margin: 0; color: #506176; font-size: .8rem; line-height: 1.5; }
.listing .manufacturer .image-wrapper { aspect-ratio: 4 / 3; }
.listing .manufacturer .caption { padding: .85rem; text-align: center; }
.listing.manufacturers { grid-template-columns: repeat(auto-fit, minmax(min(100%, 150px), 1fr)); }
.catalog-page { min-width: 0; }
.catalog-intro {
  display: grid; gap: 1.2rem; min-width: 0; margin: 0 0 1rem; padding: 1.35rem;
  border: 1px solid #dce4ee; border-radius: 1rem; background: #fff;
}
.catalog-intro.has-image { grid-template-columns: 96px minmax(0, 1fr); align-items: start; }
.catalog-intro-image { display: flex; align-items: center; justify-content: center; width: 100%; aspect-ratio: 1; padding: .35rem; }
.catalog-intro-image img { display: block; width: 100%; height: 100%; object-fit: contain; }
.catalog-intro-content { min-width: 0; }
.catalog-intro .title { margin: 0; padding: 0; border: 0; font-size: clamp(1.45rem, 3vw, 2rem); font-weight: 760; line-height: 1.2; letter-spacing: -.03em; overflow-wrap: anywhere; }
.catalog-intro .description { max-width: 75ch; margin-top: .85rem; color: #40536b; font-size: .94rem; line-height: 1.65; overflow-wrap: anywhere; }
.catalog-intro .description > :first-child { margin-top: 0; }
.catalog-intro .description > :last-child { margin-bottom: 0; }
.catalog-intro .description img, .catalog-intro .description iframe { max-width: 100%; }
.manufacturer-hero.catalog-intro, .category-hero.catalog-intro { gap: 1rem; padding: .35rem 0 .6rem; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
.manufacturer-hero.catalog-intro.has-image { grid-template-columns: 120px minmax(0, 1fr); align-items: center; }
.manufacturer-hero .catalog-intro-image { width: 100%; height: 56px; aspect-ratio: auto; padding: 0; }
.manufacturer-about, .category-about { margin-top: 1rem; }
.manufacturer-about > .card-body, .category-about > .card-body { color: #40536b; line-height: 1.65; overflow-wrap: anywhere; }
.manufacturer-about .description > :first-child, .category-about .description > :first-child { margin-top: 0; }
.manufacturer-about .description > :last-child, .category-about .description > :last-child { margin-bottom: 0; }
.manufacturer-about .description img, .manufacturer-about .description iframe, .category-about .description img, .category-about .description iframe { max-width: 100%; }
.category-about-content { display: grid; gap: 1.25rem; min-width: 0; }
.category-about-content.has-image { grid-template-columns: 160px minmax(0, 1fr); align-items: start; }
.category-about-image { display: flex; align-items: center; justify-content: center; width: 100%; max-width: 160px; aspect-ratio: 1; padding: .35rem; }
.category-about-image img { display: block; width: 100%; height: 100%; object-fit: contain; }
.category-about .description { min-width: 0; }
.catalog-description > summary { min-height: 44px; list-style: none; cursor: pointer; border-radius: .3rem; }
.catalog-description > summary::-webkit-details-marker { display: none; }
.catalog-description-ellipsis, .catalog-description-less { color: #153c67; font-weight: 700; text-decoration: underline; text-underline-offset: .2em; }
.catalog-description > summary:hover :is(.catalog-description-ellipsis, .catalog-description-less) { color: #117b3c; }
.catalog-description-less { display: none; }
.catalog-description[open] > summary { min-height: 44px; display: flex; align-items: center; }
.catalog-description[open] > summary :is(.catalog-description-excerpt, .catalog-description-ellipsis, .catalog-description-more-label) { display: none; }
.catalog-description[open] > summary .catalog-description-less { display: inline; }
.catalog-description-content > :first-child { margin-top: 0; }
.catalog-description-content > :last-child { margin-bottom: 0; }
.catalog-subcategories { margin-bottom: 1.3rem; }
.catalog-subcategories > h2 { margin: 0 0 .8rem; padding: 0; border: 0; font-size: 1.1rem; font-weight: 720; }
.catalog-results-card { min-width: 0; overflow: visible; background: #fff; border: 1px solid #dce4ee; border-radius: 1rem; }
.catalog-results-card > .card-body { min-width: 0; padding: 1.25rem; }
.catalog-results-card > .card-footer { padding: .8rem 1.25rem; background: #f8fafc; border-top: 1px solid #e4eaf2; border-radius: 0 0 1rem 1rem; }
.catalog-results-summary { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: .25rem .75rem; align-items: baseline; justify-content: space-between; margin: .25rem 0 .1rem; }
.catalog-results-summary h2 { margin: 0; font-size: 1.08rem; font-weight: 720; line-height: 1.4; }
.catalog-results-summary p { margin: 0; color: #506176; font-size: .8rem; line-height: 1.5; }
.catalog-sort.btn-group { display: flex; flex-wrap: wrap; gap: .5rem; float: none; margin: 0 0 1rem; }
.catalog-sort.btn-group > .btn { float: none; flex: 0 0 auto; margin: 0; min-height: 44px; padding: .65rem .8rem; border: 1px solid #d6e0ec; border-radius: .55rem; font-size: .84rem; }
.catalog-sort.btn-group > .active { background: #153c67; color: #fff; border-color: #153c67; }
.listing .empty-results { grid-column: 1 / -1; padding: 1.5rem 1rem; border-radius: .75rem; background: #f4f7fb; color: #40536b; }
.listing .empty-results h3 { margin: 0 0 .5rem; color: #172b45; font-size: 1.1rem; line-height: 1.4; }
.listing .empty-results p { margin: 0; max-width: 65ch; }
.listing .empty-results .btn { margin-top: 1rem; min-height: 44px; }
.catalog-visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
@media (min-width: 576px) {
  .listing.products.columns { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }
  .listing.categories { grid-template-columns: repeat(auto-fill, minmax(175px, 1fr)); }
  .listing.rows .product .link { grid-template-columns: 140px minmax(0, 1fr); }
  .listing.rows .product .description { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; line-clamp: 3; max-height: 4.5em; overflow: hidden; }
  .catalog-intro.has-image { grid-template-columns: 128px minmax(0, 1fr); }
}
@media (min-width: 768px) {
  .listing .product .preview { display: inline-flex; }
  .listing .product .preview:hover { background: #f0f5fa; border-color: #93acc9; }
  .listing.rows .product .link { grid-template-columns: 160px minmax(0, 1fr); }
  .listing.rows .product .info { padding: 1rem 4rem 1rem .4rem; }
  .listing.products.columns { grid-template-columns: repeat(auto-fill, minmax(195px, 1fr)); }
  .catalog-intro.has-image { grid-template-columns: 150px minmax(0, 1fr); }
}
@media (max-width: 575px) {
  .listing { gap: .7rem; }
  .listing .product .image-wrapper, .listing .category .image-wrapper { padding: .7rem; }
  .listing .category .image-wrapper { padding: .55rem; }
  .listing .product .info, .listing .category .caption { padding: .75rem; }
  .listing .product .name { font-size: .88rem; }
  .listing .product .price-wrapper { font-size: .99rem; }
  .listing .category .name { font-size: .88rem; }
  .catalog-image-fallback { font-size: .72rem; gap: .45rem; }
  .catalog-image-fallback svg { width: 36px; height: 36px; }
  .catalog-intro { padding: 1rem; }
  .catalog-intro.has-image { grid-template-columns: minmax(0, 1fr); }
  .catalog-intro-image { width: 80px; }
  .manufacturer-hero.catalog-intro.has-image { grid-template-columns: 88px minmax(0, 1fr); }
  .manufacturer-hero .catalog-intro-image { height: 44px; }
  .category-about-content.has-image { grid-template-columns: minmax(0, 1fr); }
  .category-about-image { max-width: 120px; }
  .catalog-results-card > .card-body { padding: 1rem; }
  .catalog-results-card > .card-footer { padding-inline: 1rem; }
  .listing.rows .product .image-wrapper { padding: .65rem; }
  .listing.rows .product .info { padding: .75rem .75rem .75rem 0; }
}
@media (max-width: 340px) {
  .listing.products.columns, .listing.categories { grid-template-columns: minmax(0, 1fr); }
  .listing .product .image-wrapper { max-height: 220px; }
  .listing .product .name { min-height: 0; }
  .listing .category .image-wrapper { max-height: 160px; }
}
@media (hover: hover) {
  .listing .product:hover, .listing .category:hover, .listing .manufacturer:hover { border-color: #a5b8d0; box-shadow: 0 7px 18px rgba(15,35,65,.075); }
}
@media (prefers-reduced-motion: reduce) {
  .listing .product, .listing .category, .listing .manufacturer { transition: none; }
}
