/* COMPONENTS — Product Cards, Grids, Category Cards, Filters, Pagination */

/* ============================================================
   PRODUCTS GRID
   ============================================================ */

.products-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
}
@media (min-width: 640px) {
  .products-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 1024px) {
  .products-grid { grid-template-columns: repeat(4, 1fr); }
}

.products-grid--4 {
  grid-template-columns: repeat(2, 1fr);
}
@media (min-width: 640px) {
  .products-grid--4 { grid-template-columns: repeat(4, 1fr); }
}

/* ============================================================
   PRODUCT CARD
   ============================================================ */

.product-card {
  background: var(--color-surface);
  border-radius: var(--radius-md);
  overflow: hidden;
  transition: transform var(--transition-slow), box-shadow var(--transition-slow);
}
.product-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 32px var(--color-shadow-md);
}
.product-card-link {
  display: block;
  text-decoration: none;
  color: inherit;
}

.product-card-image {
  position: relative;
  aspect-ratio: 1;
  overflow: hidden;
  background: var(--color-bg-light);
}
.product-thumb {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--transition-slow);
}
.product-card:hover .product-thumb { transform: scale(1.04); }

.product-no-image {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  color: var(--color-border);
  background: var(--color-bg-light);
}

/* Remove overlay on hover for clean design */
.product-card-overlay {
  display: none;
}
.product-card-cta {
  display: none;
}

.product-card-info {
  padding: 12px 4px 16px;
}
.product-card-title {
  font-size: 14px;
  font-weight: 500;
  color: var(--color-text-dark);
  line-height: 1.4;
  margin-bottom: 4px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.product-card-price {
  font-size: 14px;
  color: var(--color-text-muted);
}
.price-from {
  font-size: 12px;
  color: var(--color-text-muted);
  margin-right: 2px;
}
.price-amount {
  font-weight: 600;
  color: var(--color-text-dark);
  font-size: 15px;
}
.price-request {
  font-size: 13px;
  color: var(--color-text-muted);
  font-style: italic;
}

/* ============================================================
   CATEGORIES GRID (popular categories on home)
   ============================================================ */

.categories-section { margin-bottom: var(--space-3xl); }
.categories-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-md);
}
@media (min-width: 480px) {
  .categories-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 768px) {
  .categories-grid { grid-template-columns: repeat(4, 1fr); }
}

.category-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  border-radius: var(--radius-md);
  overflow: hidden;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  text-decoration: none;
  color: var(--color-text);
  transition: transform var(--transition-slow), box-shadow var(--transition-slow), border-color var(--transition-slow);
}
.category-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 24px var(--color-shadow-md);
  border-color: var(--color-accent);
  color: var(--color-text-dark);
}
.category-card-image {
  width: 100%;
  aspect-ratio: 1;
  overflow: hidden;
  background: var(--color-bg-light);
}
.category-card-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--transition-slow);
}
.category-card:hover .category-card-image img { transform: scale(1.05); }
.category-card-placeholder {
  width: 100%;
  aspect-ratio: 1;
  background: linear-gradient(135deg, #e5e5e5, #d0d0d0);
}
.category-card-name {
  padding: 10px var(--space-md);
  font-size: 14px;
  font-weight: 600;
  text-align: center;
  width: 100%;
}

/* ============================================================
   CATEGORY FILTER (type page)
   ============================================================ */

.category-filter {
  display: flex;
  align-items: flex-start;
  gap: var(--space-md);
  margin-bottom: var(--space-xl);
  flex-wrap: wrap;
}
.filter-label {
  font-size: 14px;
  font-weight: 600;
  color: var(--color-text-muted);
  padding-top: 8px;
  white-space: nowrap;
}
.filter-tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-sm);
}
.filter-tag {
  padding: 8px 18px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-pill);
  font-size: 13px;
  font-weight: 500;
  color: var(--color-text);
  transition: all var(--transition);
  text-decoration: none;
}
.filter-tag:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  background: var(--color-surface);
}
.filter-tag.active {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: #fff;
}

/* ============================================================
   PAGINATION
   ============================================================ */

.pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: var(--space-sm);
  margin: var(--space-xl) 0;
}
.page-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  height: 40px;
  padding: 0 12px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-pill);
  background: var(--color-surface);
  color: var(--color-text);
  font-size: 14px;
  font-weight: 500;
  text-decoration: none;
  transition: all var(--transition);
}
.page-btn:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  background: var(--color-bg-light);
}
.page-current {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: #fff;
  font-weight: 700;
}
.page-current:hover {
  background: var(--color-primary);
  color: #fff;
}
.page-ellipsis { color: var(--color-text-muted); padding: 0 4px; }
