/* Product grid and card (storefront) */

.product-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-5);
}
@media (min-width: 520px) { .product-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 900px) { .product-grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1100px) { .product-grid { grid-template-columns: repeat(4, 1fr); } }

.product-card {
    position: relative;
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    overflow: hidden;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.product-card:hover,
.product-card:focus-within { border-color: var(--color-primary); box-shadow: var(--shadow-md); }

.product-card__media {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    aspect-ratio: 4 / 3;
    background: var(--color-primary-soft);
    color: var(--color-primary);
}
.product-card__media img { width: 100%; height: 100%; object-fit: cover; }
.product-card__placeholder { width: 48px; height: 48px; opacity: 0.7; }

.product-card__badges {
    position: absolute;
    top: var(--space-3);
    left: var(--space-3);
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-1);
}

.product-card__body {
    display: flex;
    flex-direction: column;
    flex: 1;
    gap: var(--space-1);
    padding: var(--space-4);
}
.product-card__category { font-size: var(--text-sm); color: var(--color-text-muted); }
.product-card__title { font-size: var(--text-lg); line-height: 1.3; font-weight: 700; }

/* The title link covers the whole card so the entire card is clickable */
.product-card__link { color: var(--color-text); text-decoration: none; }
.product-card__link::after { content: ""; position: absolute; inset: 0; }
.product-card__link:hover { color: var(--color-primary); }
.product-card__link:focus-visible { outline: none; }
.product-card__link:focus-visible::after { outline: 3px solid var(--color-primary); outline-offset: -3px; border-radius: var(--radius-lg); }

.product-card__desc {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    font-size: var(--text-sm);
    color: var(--color-text-muted);
}

.product-card__price {
    display: flex;
    align-items: baseline;
    gap: var(--space-2);
    margin-top: auto;
    padding-top: var(--space-3);
}
.price { font-size: var(--text-lg); font-weight: 800; }
.price--free { color: var(--color-success); }
.price--old { font-size: var(--text-sm); font-weight: 400; color: var(--color-text-muted); }
