/*
 * Card Grid Layouts — Artist, Event, Press
 * Version: 1.0.0
 */

/* ------------------------------------------------------------------
   Section layout shared styles
   ------------------------------------------------------------------ */

.bp-section-footer {
    display: flex;
    justify-content: center;
    margin-top: var(--bp-space-10);
}

.bp-section-header .bp-section-sub {
    max-width: 56ch;
    margin-top: var(--bp-space-3);
    color: var(--bp-text-muted);
}

/* ------------------------------------------------------------------
   Artist Grid
   ------------------------------------------------------------------ */

.bp-artist-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--bp-space-6);
}

/* Artist Card */
.bp-artist-card {
    position: relative;
    display: flex;
    flex-direction: column;
}

.bp-artist-card__link {
    position: absolute;
    inset: 0;
    z-index: var(--bp-z-raised);
    border-radius: var(--bp-radius-md);
}

.bp-artist-card__img-wrap {
    aspect-ratio: 4 / 3;
}

.bp-artist-card__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.bp-artist-card__img-placeholder {
    width: 100%;
    height: 100%;
    background: var(--bp-black-soft);
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--bp-font-display);
    font-size: var(--bp-text-2xl);
    font-weight: 700;
    color: var(--bp-gold);
    text-transform: uppercase;
}

.bp-artist-card__badges {
    position: absolute;
    top: var(--bp-space-3);
    left: var(--bp-space-3);
    display: flex;
    flex-direction: column;
    gap: var(--bp-space-1);
    z-index: calc(var(--bp-z-raised) + 1);
}

.bp-artist-card__body {
    flex: 1;
    padding: var(--bp-space-5);
    display: flex;
    flex-direction: column;
}

.bp-artist-card__genre {
    color: var(--artist-accent, var(--bp-gold));
    margin-bottom: var(--bp-space-2);
}

.bp-artist-card__name {
    margin-bottom: var(--bp-space-2);
}

.bp-artist-card__name a {
    color: inherit;
    transition: color var(--bp-transition-fast);
    position: relative;
    z-index: calc(var(--bp-z-raised) + 2);
}

.bp-artist-card__name a:hover {
    color: var(--artist-accent, var(--bp-gold));
}

.bp-artist-card__origin {
    font-size: var(--bp-text-sm);
    color: var(--bp-text-muted);
    margin-bottom: var(--bp-space-3);
    display: flex;
    align-items: center;
    gap: var(--bp-space-1);
}

.bp-artist-card__origin::before {
    content: '📍';
    font-size: 12px;
}

.bp-artist-card__bio {
    font-size: var(--bp-text-sm);
    color: var(--bp-text-secondary);
    line-height: var(--bp-leading-relaxed);
    flex: 1;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin-bottom: var(--bp-space-4);
}

.bp-artist-card__footer {
    margin-top: auto;
}

.bp-artist-card__cta {
    font-family: var(--bp-font-body);
    font-size: var(--bp-text-sm);
    font-weight: 700;
    letter-spacing: var(--bp-tracking-wide);
    text-transform: uppercase;
    color: var(--artist-accent, var(--bp-gold));
    transition: color var(--bp-transition-fast), gap var(--bp-transition-fast);
    display: inline-flex;
    align-items: center;
    gap: var(--bp-space-1);
    position: relative;
    z-index: calc(var(--bp-z-raised) + 2);
}

.bp-artist-card__cta:hover {
    gap: var(--bp-space-2);
}

/* ------------------------------------------------------------------
   News / Press Grid
   ------------------------------------------------------------------ */

.bp-news-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--bp-space-6);
}

.bp-press-card {
    position: relative;
    display: flex;
    flex-direction: column;
}

.bp-press-card__link {
    position: absolute;
    inset: 0;
    z-index: var(--bp-z-raised);
    border-radius: var(--bp-radius-md);
}

.bp-press-card__img-wrap {
    aspect-ratio: 4 / 3;
}

.bp-press-card__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.bp-press-card__img-placeholder {
    width: 100%;
    height: 100%;
    background: linear-gradient(135deg, var(--bp-black-soft), var(--bp-black-mid));
}

.bp-press-card__body {
    flex: 1;
    padding: var(--bp-space-5);
    display: flex;
    flex-direction: column;
}

.bp-press-card__title {
    font-family: var(--bp-font-display);
    font-size: var(--bp-text-lg);
    font-weight: 700;
    letter-spacing: 0.01em;
    line-height: var(--bp-leading-snug);
    text-transform: uppercase;
    margin-block: var(--bp-space-2) var(--bp-space-3);
}

.bp-press-card__title a {
    color: inherit;
    transition: color var(--bp-transition-fast);
    position: relative;
    z-index: calc(var(--bp-z-raised) + 2);
}

.bp-press-card__title a:hover {
    color: var(--bp-gold);
}

.bp-press-card__excerpt {
    font-size: var(--bp-text-sm);
    color: var(--bp-text-secondary);
    line-height: var(--bp-leading-relaxed);
    flex: 1;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin-bottom: var(--bp-space-4);
}

.bp-press-card__footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: auto;
    border-top: var(--bp-border-1);
    padding-top: var(--bp-space-3);
}

.bp-press-card__date {
    font-size: var(--bp-text-xs);
    color: var(--bp-text-muted);
    font-weight: 600;
    letter-spacing: var(--bp-tracking-wide);
}

.bp-press-card__read {
    font-size: var(--bp-text-xs);
    font-weight: 700;
    letter-spacing: var(--bp-tracking-wide);
    text-transform: uppercase;
    color: var(--bp-gold);
    transition: color var(--bp-transition-fast);
    position: relative;
    z-index: calc(var(--bp-z-raised) + 2);
}

.bp-press-card__read:hover {
    color: var(--bp-gold-light);
}

/* ------------------------------------------------------------------
   Event Grid
   ------------------------------------------------------------------ */

.bp-event-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--bp-space-6);
}

.bp-event-card {
    display: flex;
    flex-direction: column;
}

.bp-event-card__img-wrap {
    position: relative;
    aspect-ratio: 3 / 4;
}

.bp-event-card__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.bp-event-card__date-badge {
    position: absolute;
    top: var(--bp-space-3);
    right: var(--bp-space-3);
    background-color: var(--bp-black);
    border: var(--bp-border-gold);
    border-radius: var(--bp-radius-sm);
    padding: var(--bp-space-2) var(--bp-space-3);
    display: flex;
    flex-direction: column;
    align-items: center;
    min-width: 64px;
}

.bp-event-card__date-mon {
    font-family: var(--bp-font-display);
    font-size: var(--bp-text-sm);
    font-weight: 700;
    color: var(--bp-gold);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    line-height: 1.2;
    text-align: center;
}

.bp-event-card__date-year {
    font-size: var(--bp-text-xs);
    color: var(--bp-text-muted);
    font-weight: 600;
}

.bp-event-card__body {
    flex: 1;
    padding: var(--bp-space-5);
    display: flex;
    flex-direction: column;
}

.bp-event-card__title {
    margin-block: var(--bp-space-2) var(--bp-space-3);
}

.bp-event-card__title a {
    color: inherit;
    transition: color var(--bp-transition-fast);
}

.bp-event-card__title a:hover {
    color: var(--bp-gold);
}

.bp-event-card__meta {
    display: flex;
    flex-direction: column;
    gap: var(--bp-space-1);
    margin-bottom: var(--bp-space-4);
    flex: 1;
}

.bp-event-card__venue,
.bp-event-card__city,
.bp-event-card__time {
    font-size: var(--bp-text-sm);
    color: var(--bp-text-secondary);
}

.bp-event-card__venue {
    font-weight: 600;
    color: var(--bp-text-primary);
}

.bp-event-card__footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: auto;
    border-top: var(--bp-border-1);
    padding-top: var(--bp-space-4);
}

.bp-event-card__price {
    font-family: var(--bp-font-body);
    font-size: var(--bp-text-sm);
    font-weight: 700;
    color: var(--bp-text-muted);
    letter-spacing: var(--bp-tracking-wide);
}

/* ------------------------------------------------------------------
   Responsive
   ------------------------------------------------------------------ */

@media (max-width: 1023px) {
    .bp-artist-grid,
    .bp-news-grid,
    .bp-event-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 599px) {
    .bp-artist-grid,
    .bp-news-grid {
        grid-template-columns: 1fr;
    }

    .bp-event-grid {
        grid-template-columns: 1fr;
    }
}
