/* Catalogue — public vibeWidgets storefront.
   Tokens and the 3-6-9 spacing rule per css-guidelines.md. Mounted into the
   landing overlay's Catalogue tab (see landing.css for the shell/pane sizing). */

.catalogue-toolbar {
  display: flex;
  align-items: center;
  gap: var(--space-12);
  padding-bottom: var(--space-12);
}

.catalogue-search {
  flex: 1;
  min-width: 0;
  padding: var(--space-9) var(--space-12);
  font-size: var(--font-12);
  color: var(--text-primary);
  background: var(--space-opacity-60);
  border: 2px solid var(--blue-opacity-30);
  border-radius: var(--space-9);
}

.catalogue-search:focus {
  outline: none;
  border-color: var(--blue-electric);
  box-shadow: 0 0 var(--space-12) var(--blue-opacity-40);
}

.catalogue-count {
  flex: none;
  font-size: var(--font-12);
  color: var(--text-secondary);
  white-space: nowrap;
}

.catalogue-list {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding-right: var(--space-6);
}

.catalogue-empty {
  padding: var(--space-36) var(--space-18);
  font-size: var(--font-12);
  color: var(--text-muted);
  text-align: center;
}

.catalogue-empty-error {
  color: var(--warning-orange);
  line-height: 1.6;
}

/* --- storefront cards --- */

.storefront-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: var(--space-18);
}

.storefront-card {
  display: flex;
  flex-direction: column;
  padding: var(--space-18);
  background: var(--space-opacity-40);
  border: 2px solid var(--blue-opacity-20);
  border-radius: var(--space-12);
  transition: all var(--timing-fast) var(--easing-standard);
}

.storefront-card:hover {
  border-color: var(--blue-opacity-50);
  box-shadow: 0 0 var(--space-18) var(--blue-opacity-15);
}

.storefront-card-head {
  display: flex;
  align-items: flex-start;
  gap: var(--space-12);
}

.storefront-icon {
  flex: none;
  font-size: var(--font-24);
  line-height: 1;
}

.storefront-card-title {
  min-width: 0;
  flex: 1;
}

.storefront-card-title h3 {
  font-size: var(--font-15);
  color: var(--text-primary);
  overflow-wrap: anywhere;
}

.storefront-price {
  display: inline-block;
  margin-top: var(--space-3);
  font-size: var(--font-9);
  font-weight: 600;
  color: var(--green-ghost);
}

.storefront-price-contact {
  color: var(--text-muted);
  font-weight: 400;
}

.storefront-summary {
  margin-top: var(--space-9);
  font-size: var(--font-12);
  line-height: 1.6;
  color: var(--text-secondary);
}

.storefront-features {
  margin-top: var(--space-9);
  padding-left: var(--space-18);
  font-size: var(--font-9);
  line-height: 1.6;
  color: var(--text-secondary);
}

.storefront-chip-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-6);
  margin-top: var(--space-9);
}

.storefront-chip-label {
  font-size: var(--font-9);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-muted);
}

.storefront-chip-placement {
  border-color: var(--cyan-bright);
  color: var(--cyan-bright);
}

.storefront-chip-integration {
  border-color: var(--purple-bright);
  color: var(--purple-bright);
}

.storefront-screenshots {
  display: flex;
  gap: var(--space-6);
  margin-top: var(--space-12);
  overflow-x: auto;
}

.storefront-screenshot {
  flex: none;
  width: 120px;
  height: 80px;
  object-fit: cover;
  border-radius: var(--space-6);
  border: 1px solid var(--blue-opacity-20);
}

.storefront-card-actions {
  display: flex;
  margin-top: var(--space-12);
  padding-top: var(--space-12);
  border-top: 2px solid var(--blue-opacity-15);
}

.storefront-purchase-btn,
.storefront-owned-btn {
  width: 100%;
  justify-content: center;
}

.storefront-contact-line {
  margin-top: var(--space-9);
  font-size: var(--font-9);
  color: var(--text-muted);
  text-align: center;
}

.storefront-contact-line a {
  color: var(--cyan-bright);
}
