/* ═══ Tienda WCoin (R-44) ═════════════════════════════════════════════
   Maqueta: maquetas/r30/d-mix/tienda.html. Saldo y precios en dorado
   (valioso), las compras sin reclamar en naranja (lo tuyo pendiente), "Te
   faltan" en rojo (no alcanza). Los "Comprar" de las tarjetas son
   secundarios: el único dorado es el de la hoja de confirmación.
   Mobile-first. */

/* ── Saldo ────────────────────────────────────────────────────────── */
.shop-balance {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--space-sm);
  margin-bottom: var(--space-md);
}
.shop-balance__label {
  color: var(--color-text-muted);
  font-family: var(--font-body);
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-semibold);
}
.shop-balance__amount {
  color: var(--color-valuable);
  font-family: var(--font-display);
  font-size: var(--font-size-heading-md);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-tight);
}

/* ── Compras sin reclamar ─────────────────────────────────────────── */
.shop-pending { margin-bottom: var(--space-md); }
.shop-pending__list {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-xs);
  margin-top: var(--space-sm);
}
.shop-pending__item {
  display: flex;
  align-items: center;
  gap: var(--space-2xs);
  color: var(--color-text);
  font-size: var(--font-size-sm);
}
.shop-pending__icon {
  width: var(--shop-pending-icon-size);
  height: var(--shop-pending-icon-size);
  object-fit: contain;
}

/* ── Catálogo ─────────────────────────────────────────────────────── */
.shop-catalog__tabs { margin-bottom: var(--space-md); }
.shop-category + .shop-category { margin-top: var(--space-xl); }
.shop-category__title { margin-bottom: var(--space-sm); }

.shop-catalog__items {
  display: grid;
  gap: var(--space-md);
}
@media (min-width: 700px) {
  .shop-catalog__items { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 1100px) {
  .shop-catalog__items { grid-template-columns: 1fr 1fr 1fr; }
}

/* Tarjeta de un ítem: el botón queda abajo aunque las descripciones midan distinto */
.shop-item {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  height: 100%;
}
.shop-item__icon-box {
  display: grid;
  place-items: center;
  width: var(--shop-item-icon-size);
  height: var(--shop-item-icon-size);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface-sunken);
}
.shop-item__icon {
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
}
.shop-item__description {
  padding-left: var(--space-md);
  color: var(--color-text-muted);
  font-size: var(--font-size-sm);
  line-height: var(--line-height-body);
  list-style: disc;
}
.shop-item__variants { margin-top: var(--space-2xs); }
.shop-item__price {
  margin-top: auto;
  padding-top: var(--space-xs);
  color: var(--color-valuable);
  font-family: var(--font-display);
  font-size: var(--font-size-heading-sm);
  font-weight: var(--font-weight-bold);
}
.shop-item__shortfall {
  color: var(--color-danger);
  font-size: var(--font-size-sm);
}
