/* ==========================================
   Venue Upcoming Events
   Everyman Racing Theme
========================================== */

.venue-upcoming-events {
  --events-primary: #184b2a;
  --events-primary-hover: #0f361e;
  --events-mustard: #e0ac36;
  --events-mustard-text: #95670a;
  --events-text: #151819;
  --events-muted: #626b70;
  --events-background: #f8f9fa;
  --events-card: #eceff0;
  --events-card-hover: #e5e9e7;
  --events-border: #dce2df;

  padding: 64px 0;
  background: var(--events-background);
  color: var(--events-text);
  font-family:
    canada-type-gibson,
    -apple-system,
    BlinkMacSystemFont,
    "Segoe UI",
    Roboto,
    "Helvetica Neue",
    Arial,
    sans-serif;
  font-size: 16px;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0.3px;
}

/* ==========================================
   Header
========================================== */

.venue-upcoming-events__header {
  max-width: 760px;
  margin-bottom: 34px;
}

.venue-upcoming-events__eyebrow {
  display: inline-block;
  margin-bottom: 12px;
  color: var(--events-primary);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 1.6px;
  line-height: 1.4;
  text-transform: uppercase;
}

.venue-upcoming-events__title {
  margin: 0 0 12px;
  color: var(--events-text);
  font-family: inherit;
  font-size: clamp(28px, 3vw, 38px);
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: 0.4px;
}

.venue-upcoming-events__description {
  margin: 0;
  color: var(--events-muted);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.65;
  letter-spacing: 0.3px;
}

/* ==========================================
   Filters
========================================== */

.venue-upcoming-events__filters {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 24px;
}

.venue-upcoming-events__filters[hidden] {
  display: none;
}

.venue-upcoming-events__filter {
  padding: 10px 18px;
  border: 1px solid var(--events-border);
  border-radius: 6px;
  background: #fff;
  color: var(--events-text);
  font-family: inherit;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: 0.4px;
  cursor: pointer;
  transition:
    background-color 0.2s ease,
    border-color 0.2s ease,
    color 0.2s ease;
}

.venue-upcoming-events__filter:hover {
  border-color: var(--events-primary);
  color: var(--events-primary);
}

.venue-upcoming-events__filter.is-active {
  padding-bottom: 8px;
  border: 1px solid var(--events-primary);
  border-bottom: 3px solid var(--events-mustard);
  background: var(--events-primary);
  color: #fff;
}

.venue-upcoming-events__filter:focus-visible,
.venue-upcoming-events__load-more:focus-visible {
  outline: 3px solid var(--events-primary);
  outline-offset: 3px;
}

/* ==========================================
   Monthly Groups
========================================== */

.venue-upcoming-events__list {
  display: flex;
  flex-direction: column;
  gap: 36px;
}

.venue-upcoming-events__month-group {
  min-width: 0;
}

.venue-upcoming-events__month-heading {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin: 0 0 18px;
  color: var(--events-text);
  font-family: inherit;
  font-size: 21px;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: 0.5px;
}

.venue-upcoming-events__month-count {
  display: inline-flex;
  align-items: center;
  padding: 5px 11px;
  border-radius: 20px;
  background: #e3e9e5;
  color: var(--events-primary);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: 0.3px;
}

/* Two-column layout */

.venue-upcoming-events__month-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

/* ==========================================
   Event Cards
========================================== */

.venue-upcoming-events__card {
  display: flex;
  align-items: center;
  min-width: 0;
  gap: 20px;
  padding: 22px 24px;
  border: 1px solid var(--events-border);
  border-radius: 14px;
  background: var(--events-card);
  box-shadow: none;
  transition:
    background-color 0.2s ease,
    border-color 0.2s ease;
}

.venue-upcoming-events__card:hover {
  background: var(--events-card-hover);
  border-color: #b7c9bd;
}

/* ==========================================
   Date Block
========================================== */

.venue-upcoming-events__date {
  display: flex;
  flex: 0 0 76px;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 82px;
  padding: 10px 6px;
  border-radius: 10px;
  background: #fff;
}

.venue-upcoming-events__day {
  color: var(--events-text);
  font-family: inherit;
  font-size: 32px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.5px;
}

.venue-upcoming-events__month {
  margin-top: 7px;
  color: var(--events-mustard-text);
  font-size: 13px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: 1px;
  text-transform: uppercase;
}

/* ==========================================
   Event Details
========================================== */

.venue-upcoming-events__details {
  flex: 1;
  min-width: 0;
}

.venue-upcoming-events__name {
  margin: 0 0 8px;
  color: var(--events-text);
  font-family: inherit;
  font-size: 19px;
  font-weight: 600;
  line-height: 1.35;
  letter-spacing: 0.4px;
}

.venue-upcoming-events__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 18px;
  color: var(--events-muted);
  font-size: 15px;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0.3px;
}

/* Prominent event time */

.venue-upcoming-events__time {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--events-primary);
  font-size: 17px;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: 0.4px;
}

.venue-upcoming-events__time svg {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  color: var(--events-mustard);
  stroke: currentColor;
}

.venue-upcoming-events__venue-label {
  display: block;
  margin-top: 8px;
  color: var(--events-muted);
  font-size: 14px;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0.3px;
}

/* Legacy calendar icon */

.venue-upcoming-events__card-icon {
  display: none;
}

/* ==========================================
   Load More
========================================== */

.venue-upcoming-events__footer {
  display: flex;
  justify-content: center;
  margin-top: 30px;
}

.venue-upcoming-events__load-more {
  padding: 13px 28px;
  border: 1px solid var(--events-primary);
  border-radius: 6px;
  background: transparent;
  color: var(--events-primary);
  font-family: inherit;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: 0.4px;
  cursor: pointer;
  transition:
    background-color 0.2s ease,
    color 0.2s ease;
}

.venue-upcoming-events__load-more:hover {
  background: var(--events-primary);
  color: #fff;
}

.venue-upcoming-events__load-more[hidden] {
  display: none;
}

/* ==========================================
   Loading, Empty and Error States
========================================== */

.venue-upcoming-events__empty,
.venue-upcoming-events__error,
.venue-upcoming-events__loading {
  padding: 32px 20px;
  border: 1px solid var(--events-border);
  border-radius: 10px;
  background: #fff;
  color: var(--events-muted);
  font-size: 15px;
  line-height: 1.5;
  letter-spacing: 0.3px;
  text-align: center;
}

/* ==========================================
   What3Words Images
========================================== */

.venue-what3words img {
  max-width: 100%;
  height: auto;
}

/* ==========================================
   Responsive
========================================== */

@media (max-width: 767px) {
  .venue-upcoming-events {
    padding: 44px 0;
  }

  .venue-upcoming-events__header {
    margin-bottom: 26px;
  }

  .venue-upcoming-events__description {
    font-size: 15px;
  }

  .venue-upcoming-events__filters {
    flex-wrap: nowrap;
    overflow-x: auto;
    padding-bottom: 8px;
    scrollbar-width: thin;
  }

  .venue-upcoming-events__filter {
    flex-shrink: 0;
    white-space: nowrap;
  }

  .venue-upcoming-events__list {
    gap: 28px;
  }

  .venue-upcoming-events__month-heading {
    margin-bottom: 14px;
    font-size: 18px;
  }

  .venue-upcoming-events__month-grid {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  .venue-upcoming-events__card {
    gap: 14px;
    padding: 16px;
    border-radius: 12px;
  }

  .venue-upcoming-events__date {
    flex-basis: 66px;
    min-height: 74px;
  }

  .venue-upcoming-events__day {
    font-size: 27px;
  }

  .venue-upcoming-events__name {
    font-size: 17px;
  }

  .venue-upcoming-events__meta {
    font-size: 14px;
  }

  .venue-upcoming-events__time {
    font-size: 16px;
  }

  .venue-upcoming-events__venue-label {
    font-size: 13px;
  }
}

/* ==========================================
   Reduced Motion
========================================== */

@media (prefers-reduced-motion: reduce) {
  .venue-upcoming-events__card,
  .venue-upcoming-events__filter,
  .venue-upcoming-events__load-more {
    transition: none;
  }
}
