.layout__locations_grid .grid-intro-actions {
  margin: 1.6em 0;
}
.layout__locations_grid .locations-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 3.6em 2.6em;
  padding-top: 1.4em;
  padding-bottom: 5em;
  padding-left: var(--gutter);
  padding-right: var(--gutter);
}
.layout__locations_grid .location-card {
  display: flex;
  flex-direction: column;
}
.layout__locations_grid .location-card-trigger {
  display: flex;
  flex-direction: column;
  flex: 1;
  background: none;
  border: 0;
  padding: 0;
  margin: 0;
  text-align: left;
  font-family: inherit;
  color: inherit;
  cursor: pointer;
}
.layout__locations_grid .location-card-trigger .loc-media {
  position: relative;
  aspect-ratio: 4/5;
  overflow: hidden;
  margin-bottom: 1.5em;
}
.layout__locations_grid .location-card-trigger .loc-media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.6s ease;
}
.layout__locations_grid .location-card-trigger:hover .loc-media img,
.layout__locations_grid .location-card-trigger:focus-visible .loc-media img {
  transform: scale(1.045);
}
.layout__locations_grid .location-card-trigger .loc-copy {
  display: flex;
  flex-direction: column;
  flex: 1;
}
.layout__locations_grid .location-card-trigger h3 {
  font-size: 1.3rem;
  margin-bottom: 0.4em;
}
.layout__locations_grid .location-card-trigger .loc-meta {
  gap: 1em;
  margin: 0.4em 0 1.2em;
  flex-wrap: wrap;
}
.layout__locations_grid .loc-view-link {
  align-self: flex-start;
  margin-top: auto;
  position: relative;
  font-family: var(--font-sans);
  font-size: 0.675rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--ink-60);
  padding: 0.4em 0.1em;
  margin-left: -0.1em;
  margin-right: -0.1em;
  margin-bottom: -0.4em;
}
.layout__locations_grid .loc-view-link::before {
  content: "";
  position: absolute;
  left: 0.1em;
  right: 0.1em;
  bottom: 0.28em;
  height: 1px;
  background: currentColor;
  opacity: 0.3;
}
.layout__locations_grid .location-card-trigger:hover .loc-view-link,
.layout__locations_grid .location-card-trigger:focus-visible .loc-view-link {
  color: var(--ink);
}
.layout__locations_grid .loc-meta {
  display: flex;
  font-size: 0.78rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-60);
}

@media (max-width: 860px) {
  .layout__locations_grid .locations-grid {
    grid-template-columns: 1fr 1fr;
    gap: 3em 2em;
  }
}
@media (max-width: 640px) {
  .layout__locations_grid .locations-grid {
    grid-template-columns: 1fr;
    padding-bottom: 4em;
  }
}

/**
 * Location overlay — "carousel on the left, info on the right", replacing
 * the individual venue pages (The Grove / Creekside / Cottage Vineyard /
 * The Pavilion). Populated and toggled by stonehurst.js from the clicked
 * card's hidden .loc-overlay-data; markup lives once per
 * layout_locations_grid instance (see layout_locations_grid.php). The image
 * side is a one-at-a-time slideshow (.loc-carousel-track/-slide, prev/next
 * buttons, dots) — NOT a stacked vertical scroll, which is what this used
 * to be before there was more than one image per venue.
 **/
body.location-overlay-open {
  overflow: hidden;
}

.location-overlay {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
}
.location-overlay[hidden] {
  display: none;
}
.location-overlay .location-overlay-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(22, 19, 15, 0.7);
}
.location-overlay .location-overlay-panel {
  position: relative;
  z-index: 1;
  width: min(1100px, 92vw);
  max-height: 88vh;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  background: var(--paper);
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.35);
}
.location-overlay .location-overlay-close {
  position: absolute;
  top: 0.6em;
  right: 0.8em;
  z-index: 2;
  width: 2.4em;
  height: 2.4em;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(22, 19, 15, 0.55);
  color: var(--sand);
  border: 0;
  border-radius: 50%;
  font-size: 1.4rem;
  line-height: 1;
  cursor: pointer;
}
.location-overlay .location-overlay-close:hover {
  background: rgba(22, 19, 15, 0.8);
}
.location-overlay .location-overlay-scroller {
  position: relative;
  overflow: hidden;
  height: 88vh;
  background: var(--sand-dark);
}
.location-overlay .location-overlay-scroller .loc-carousel-track {
  display: flex;
  height: 100%;
  transition: transform 0.45s cubic-bezier(0.65, 0, 0.35, 1);
}
.location-overlay .location-overlay-scroller .loc-carousel-slide {
  flex: 0 0 100%;
  height: 100%;
}
.location-overlay .location-overlay-scroller .loc-carousel-slide img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.location-overlay .location-overlay-scroller .loc-carousel-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 1;
  width: 2.4em;
  height: 2.4em;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(22, 19, 15, 0.55);
  color: var(--sand);
  border: 0;
  border-radius: 50%;
  font-size: 1.3rem;
  line-height: 1;
  cursor: pointer;
}
.location-overlay .location-overlay-scroller .loc-carousel-nav:hover {
  background: rgba(22, 19, 15, 0.8);
}
.location-overlay .location-overlay-scroller .loc-carousel-nav[hidden] {
  display: none;
}
.location-overlay .location-overlay-scroller .loc-carousel-prev {
  left: 0.8em;
}
.location-overlay .location-overlay-scroller .loc-carousel-next {
  right: 0.8em;
}
.location-overlay .location-overlay-scroller .loc-carousel-dots {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 1em;
  z-index: 1;
  display: flex;
  justify-content: center;
  gap: 0.5em;
}
.location-overlay .location-overlay-scroller .loc-carousel-dots[hidden] {
  display: none;
}
.location-overlay .location-overlay-scroller .loc-carousel-dot {
  width: 0.5em;
  height: 0.5em;
  border-radius: 50%;
  padding: 0;
  border: 0;
  background: rgba(255, 255, 255, 0.5);
  cursor: pointer;
}
.location-overlay .location-overlay-scroller .loc-carousel-dot.is-active {
  background: var(--sand);
}
.location-overlay .location-overlay-info {
  padding: 3em 2.6em;
  overflow-y: auto;
  max-height: 88vh;
  display: flex;
  flex-direction: column;
}
.location-overlay .location-overlay-info .eyebrow {
  color: var(--ink-60);
  margin-bottom: 0.6em;
}
.location-overlay .location-overlay-info h3 {
  margin-bottom: 0.5em;
}
.location-overlay .location-overlay-info .loc-meta {
  gap: 1em;
  flex-wrap: wrap;
  margin-bottom: 1.4em;
}
.location-overlay .location-overlay-info p {
  color: var(--ink-60);
  margin-bottom: 2em;
}
.location-overlay .location-overlay-info .btn {
  align-self: flex-start;
}

@media (max-width: 780px) {
  .location-overlay .location-overlay-panel {
    grid-template-columns: 1fr;
    grid-template-rows: auto auto;
    width: 94vw;
    max-height: 90vh;
  }
  .location-overlay .location-overlay-scroller {
    height: 40vh;
  }
  .location-overlay .location-overlay-info {
    padding: 2em 1.6em;
    max-height: 50vh;
  }
}
@media (prefers-reduced-motion: reduce) {
  .location-overlay .loc-media img {
    transition: none;
  }
  .location-overlay .loc-carousel-track {
    transition: none;
  }
}
