.location-section {
  padding: clamp(3.5rem, 5vw, 5rem) 0;
  border-bottom: 1px solid var(--ink-950);
  background: var(--paper);
}

.location-shell {
  width: min(1800px, calc(100vw - 2rem));
}

.location-card {
  display: grid;
  grid-template-columns: minmax(0, 1.42fr) minmax(390px, 1fr);
  min-height: 700px;
  background: var(--paper);
}

.location-image {
  position: relative;
  min-height: 700px;
  margin: 0;
  overflow: hidden;
  background: #e4dfd2;
}

.location-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 900ms cubic-bezier(0.2, 0.75, 0.2, 1), filter 350ms ease;
}

.location-card:hover .location-image img {
  filter: saturate(1.06);
  transform: scale(1.018);
}

.location-details {
  display: grid;
  align-content: start;
  gap: clamp(2rem, 4vw, 3.25rem);
  padding: 0 clamp(2.5rem, 7vw, 8rem);
}

.location-kicker {
  margin: 0;
  color: var(--ink-950);
  font-family: "Bricolage Grotesque", "Avenir Next", sans-serif;
  font-size: 1rem;
  font-weight: 400;
  letter-spacing: 0;
  line-height: 1.5;
}

.location-details address {
  margin-top: 0.9rem;
  color: var(--ink-950);
  font-size: 1rem;
  font-style: normal;
  line-height: 1.5;
}

.location-contact {
  display: grid;
  justify-items: start;
  gap: 0.12rem;
}

.location-contact p {
  color: var(--ink-950);
  font-size: 1rem;
  line-height: 1.5;
}

.location-contact .location-hours { margin-bottom: 1.2rem; }
.location-contact a { border-bottom: 1px solid var(--ink-950); }

.location-links {
  display: grid;
  justify-items: start;
  gap: 1.65rem;
}

.location-links a {
  width: fit-content;
  border-bottom: 1px solid var(--ink-950);
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.35;
}

@media (max-width: 900px) {
  .location-card { grid-template-columns: 1fr; min-height: 0; }
  .location-image { min-height: min(78vh, 680px); }
  .location-details { padding: 2.5rem 0 0; }
}

@media (max-width: 560px) {
  .location-section { padding: 1rem 0 3.5rem; }
  .location-image { min-height: 430px; }
  .location-details { gap: 2rem; padding: 2rem 0 0; }
}

@media (prefers-reduced-motion: reduce) {
  .location-image img { transition: none; }
}
