/* =========================================================
   Locations Directory — Unified Styles (Slider + Grid)
   ========================================================= */
:root {
  --locdir-gap: 24px;
  --locdir-card-radius: 14px;
  --locdir-card-shadow: 0 6px 18px rgba(0,0,0,.06);
  --locdir-border: #eee;
  --locdir-bg-chip: #f6f7f9;
  --locdir-text-muted: #666;
  --locdir-text: #111;
  --locdir-primary: #0e63ff;
}

/* Container */
.locdir {
  --gap: var(--locdir-gap);
  color: var(--locdir-text);
}

/* =========================
   Filters (chips checklist)
   ========================= */
.locdir-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin: 0 0 18px;
}

.locdir-filter {
  display: inline-flex;
  gap: 6px;
  align-items: center;
  background: var(--locdir-bg-chip);
  padding: 6px 10px;
  border-radius: 8px;
  line-height: 1.2;
  cursor: pointer;
  user-select: none;
}

.locdir-filter input[type="checkbox"] {
  accent-color: var(--locdir-primary);
  width: 16px;
  height: 16px;
  margin: 0;
}

/* =========================
   Slider (unfiltered view)
   ========================= */
.locdir-carousel-wrap {
  position: relative;
}

.locdir-nav .locdir-prev,
.locdir-nav .locdir-next {
  position: absolute;
  top: 45%;
  transform: translateY(-50%);
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: #111;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 5;
  cursor: pointer;
  opacity: .9;
  box-shadow: 0 4px 12px rgba(0,0,0,.15);
}

.locdir-prev { left: -8px; }
.locdir-next { right: -8px; }

/* Swiper pagination spacing */
.locdir .swiper-pagination {
  position: static;
  margin-top: 8px;
}

/* =========================
   Shared Card Styles
   ========================= */
.locdir-card {
  height: auto;
}

.locdir-card-inner {
  background: #fff;
  border: 1px solid var(--locdir-border);
  border-radius: var(--locdir-card-radius);
  overflow: hidden;
  box-shadow: var(--locdir-card-shadow);
  display: flex;
  flex-direction: column;
  height: 100%;
}

/* Image */
.locdir-img img {
  width: 100%;
  height: 350px;         /* default (slider) */
  object-fit: cover;
  display: block;
}

/* Meta */
.locdir-meta {
  padding: 14px;
}

.locdir-title {
  font-size: 19px;
  margin: 0 0 6px;
}

.locdir-city {
  color: var(--locdir-text-muted);
  margin-bottom: 6px;
}

.locdir-phone,
.locdir-email {
  margin-bottom: 6px;
}

.locdir-actions {
  margin-top: 10px;
}

.locdir-btn {
  display: inline-block;
  padding: 10px 14px;
  border-radius: 10px;
  background: var(--locdir-primary);
  color: #fff;
  text-decoration: none;
  font-weight: 600;
  transition: transform .12s ease, box-shadow .12s ease, opacity .12s ease;
}

.locdir-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(14,99,255,.25);
}

/* Loading state for slider wrapper */
#locdir-slides.locdir-loading {
  opacity: .5;
  pointer-events: none;
}

/* =========================
   Grid (filtered view)
   ========================= */
.locdir-grid {
  display: grid;
  gap: var(--gap, 24px);
  grid-template-columns: repeat(1, minmax(0, 1fr));
  /* Ensure grid area has top spacing similar to slider */
  margin-top: 8px;
}

/* Responsive columns */
@media (min-width: 640px) {
  .locdir-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
  .locdir-grid { grid-template-columns: repeat(3, 1fr); }
}

/* In grid mode we usually prefer a slightly shorter image */
.locdir-grid .locdir-img img {
  height: 300px;
}

/* If any Swiper class slips into grid, normalize widths */
.locdir-grid .swiper-slide {
  width: auto !important;
}

/* =========================
   Spacing Harmony / Utilities
   ========================= */
/* Give a consistent outer spacing when needed */
.locdir + .locdir,
.locdir-grid + .locdir-grid {
  margin-top: var(--gap, 24px);
}

/* Empty state */
.locdir-empty {
  padding: 24px;
  text-align: center;
  color: var(--locdir-text-muted);
  background: #fff;
  border: 1px solid var(--locdir-border);
  border-radius: var(--locdir-card-radius);
  box-shadow: var(--locdir-card-shadow);
}

/* =========================
   Optional: reduce arrow overlap on small screens
   ========================= */
@media (max-width: 480px) {
  .locdir-prev { left: 4px; }
  .locdir-next { right: 4px; }
}

/* =========================
   Optional: high-contrast focus states
   ========================= */
.locdir-filter input[type="checkbox"]:focus-visible,
.locdir-btn:focus-visible,
.locdir-nav .locdir-prev:focus-visible,
.locdir-nav .locdir-next:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 2px;
}

/* === Filtered GRID: 1 / 2 / 3 columns === */
.locdir-grid {
  display: grid;
  gap: var(--gap, 24px);
  grid-template-columns: repeat(1, minmax(0, 1fr)); /* phones */
}

/* 2-up on small tablets / large phones */
@media (min-width: 640px) {
  .locdir-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* 3-up on tablets & desktops */
@media (min-width: 900px) {
  .locdir-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* Ensure Swiper widths don't interfere in grid mode */
.locdir-grid .swiper-slide { width: auto !important; }

/* Keep card visuals consistent in grid */
.locdir-grid .locdir-card-inner {
  background:#fff; border:1px solid #eee; border-radius:14px; overflow:hidden;
  box-shadow: 0 6px 18px rgba(0,0,0,.06);
}

/* Slightly shorter images in grid so 3-up looks balanced */
.locdir-grid .locdir-img img {
  width: 100%;
  height: 300px;      /* adjust to taste */
  object-fit: cover;
  display: block;
}

@media (min-width: 1024px) {
  .locdir-grid { grid-template-columns: repeat(3, 1fr); }
}



