/* =========================================================
   GeoDirectory restyle — non-invasive design layer.
   Targets GD's existing markup classes only; does not change
   any plugin logic, templates, shortcodes or map behavior.
   ========================================================= */

/* ---------- Archive / search results page ---------- */
.bb-gd-archive .page-title,
.bb-gd-search  .page-title,
.bb-gd-location .page-title{
  font-family: var(--bb-font-display);
  font-weight: 500;
  font-size: clamp(1.75rem, 3vw, 2.5rem);
  margin: 0 0 .25rem;
  color: var(--bb-ink);
}

/* Page wrapper background */
body.bb-gd-page{ background: var(--bb-bg); }

/* GD filter/sort bar */
.geodir-loop-actions,
.geodir-sort-by-container{
  background: var(--bb-surface);
  border: 1px solid var(--bb-line);
  border-radius: var(--bb-radius);
  padding: .75rem 1rem;
  box-shadow: var(--bb-shadow-sm);
}

/* GD category filter — turn into pills */
.geodir-category-list-view .geodir-category-list-in li a,
.gd-categories-list a,
.geodir_category_list_view a{
  display: inline-flex; align-items: center;
  padding: .55rem 1rem;
  border: 1px solid var(--bb-stone);
  border-radius: 999px;
  background: var(--bb-surface);
  color: var(--bb-ink-soft);
  font-size: .9rem; margin: .25rem;
  transition: all .2s ease;
}
.geodir-category-list-view .geodir-category-list-in li a:hover,
.gd-categories-list a:hover{
  background: var(--bb-ink); color: var(--bb-bg); border-color: var(--bb-ink);
}

/* ---------- Listing cards (gd_archive_item / loop) ---------- */
.geodir-loop-container,
.geodir-category-list-view,
.geodir_category_list_view{
  display: grid !important;
  gap: 1.25rem;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}

.geodir-post,
.geodir-loop-item,
.geodir_category_list_view li,
.gd-archive-item,
.geodir-archive-item{
  background: var(--bb-surface) !important;
  border: 1px solid var(--bb-line) !important;
  border-radius: var(--bb-radius-lg) !important;
  overflow: hidden;
  box-shadow: var(--bb-shadow-sm);
  transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease;
  list-style: none;
}
.geodir-post:hover,
.geodir-loop-item:hover,
.gd-archive-item:hover{
  transform: translateY(-3px);
  box-shadow: var(--bb-shadow);
  border-color: var(--bb-stone);
}

/* Card image */
.geodir-post .geodir-image,
.geodir-post .geodir_thumbnail,
.geodir-loop-item img{
  width: 100%; aspect-ratio: 4/3; object-fit: cover; display: block;
  border-bottom: 1px solid var(--bb-line);
}

/* Card body */
.geodir-post .geodir-entry-content,
.geodir-loop-item .geodir-entry-content{
  padding: 1.25rem 1.25rem 1.5rem;
}

/* Card title */
.geodir-post .geodir-entry-title,
.geodir-loop-item .geodir-entry-title,
.geodir-post h2,
.geodir-post h3{
  font-family: var(--bb-font-display);
  font-weight: 500;
  font-size: 1.2rem !important;
  margin: 0 0 .35rem;
  line-height: 1.25;
}
.geodir-post .geodir-entry-title a{ color: var(--bb-ink); }
.geodir-post .geodir-entry-title a:hover{ color: var(--bb-accent); }

/* Category chip on card */
.geodir-post .geodir-category,
.geodir-post .geodir-category-name,
.geodir-post .gd-badge{
  display: inline-block;
  background: var(--bb-surface-2);
  color: var(--bb-accent);
  border-radius: 999px;
  padding: .25rem .65rem;
  font-size: .75rem;
  letter-spacing: .04em;
  text-transform: uppercase;
  margin-bottom: .5rem;
}

/* Card meta rows (address, phone, hours) */
.geodir-post .geodir_post_meta,
.geodir-post .geodir-output-location,
.geodir-post .geodir-i-address,
.geodir-post .geodir-i-phone,
.geodir-post .geodir-i-website,
.geodir-post .geodir-i-time{
  color: var(--bb-ink-soft) !important;
  font-size: .9rem !important;
  margin: .25rem 0 !important;
  display: flex; align-items: center; gap: .5rem;
}
.geodir-post .geodir_post_meta i,
.geodir-post .geodir-i-address i,
.geodir-post .geodir-i-phone i{ color: var(--bb-taupe); }

/* Opening status */
.geodir-post .geodir-open-now,
.geodir-output-open-hours .gd-bh-open{
  color: #2f6f4e; font-weight: 500;
}
.geodir-post .geodir-closed-now,
.geodir-output-open-hours .gd-bh-closed{
  color: var(--bb-accent); font-weight: 500;
}

/* Card action buttons (website / phone / instagram) */
.geodir-post .geodir-output-location-actions a,
.geodir-post .geodir-i-website a,
.geodir-post .geodir-i-phone a{
  display: inline-flex; align-items: center; gap: .35rem;
  padding: .45rem .85rem;
  border: 1px solid var(--bb-stone);
  border-radius: 999px;
  background: var(--bb-surface);
  color: var(--bb-ink) !important;
  font-size: .85rem;
  margin-right: .35rem;
}
.geodir-post .geodir-output-location-actions a:hover{
  border-color: var(--bb-ink); background: var(--bb-bg);
}

/* ---------- Single listing page ---------- */
.bb-gd-single .geodir-single-title,
.bb-gd-single .single-business-title,
.bb-gd-single .entry-title{
  font-family: var(--bb-font-display);
  font-size: clamp(2rem, 3.6vw, 3rem);
  font-weight: 500;
  margin: 0 0 .5rem;
}
.bb-gd-single .geodir-category-name,
.bb-gd-single .geodir-post-meta .geodir-category{
  background: var(--bb-surface-2);
  color: var(--bb-accent);
  padding: .3rem .8rem; border-radius: 999px;
  font-size: .8rem; letter-spacing: .08em; text-transform: uppercase;
}
.bb-gd-single .geodir-post-meta-container,
.bb-gd-single .geodir-single-tabs-container{
  background: var(--bb-surface);
  border: 1px solid var(--bb-line);
  border-radius: var(--bb-radius-lg);
  padding: 1.75rem;
  box-shadow: var(--bb-shadow-sm);
  margin-bottom: 1.5rem;
}
/* Tone down GD's raw tabs */
.bb-gd-single .geodir-tabs-head,
.bb-gd-single .geodir-tab-head{
  border-bottom: 1px solid var(--bb-line) !important;
  background: transparent !important;
  gap: 1.5rem;
}
.bb-gd-single .geodir-tabs-head a,
.bb-gd-single .geodir-tab-head a{
  background: transparent !important;
  border: 0 !important;
  color: var(--bb-ink-soft) !important;
  padding: .9rem 0 !important;
  font-weight: 500;
  position: relative;
}
.bb-gd-single .geodir-tabs-head a.geodir-tab-active,
.bb-gd-single .geodir-tab-head a.active{
  color: var(--bb-ink) !important;
}
.bb-gd-single .geodir-tabs-head a.geodir-tab-active::after,
.bb-gd-single .geodir-tab-head a.active::after{
  content:""; position:absolute; left:0; right:0; bottom:-1px; height:2px;
  background: var(--bb-accent);
}
/* Hide empty reviews tab when there is none */
.bb-gd-single .geodir-tab-content.geodir-empty{ display:none !important; }

/* Contact actions row (Call / Website / Directions / Instagram) */
.bb-gd-single .geodir-output-location-actions,
.bb-gd-single .geodir-action-buttons{
  display: flex; flex-wrap: wrap; gap: .6rem; margin: 1rem 0 1.5rem;
}
.bb-gd-single .geodir-output-location-actions a,
.bb-gd-single .geodir-action-buttons a{
  padding: .7rem 1.1rem !important;
  border-radius: 999px !important;
  border: 1px solid var(--bb-stone) !important;
  background: var(--bb-surface) !important;
  color: var(--bb-ink) !important;
  font-weight: 500; font-size: .9rem;
}
.bb-gd-single .geodir-output-location-actions a:first-child,
.bb-gd-single .geodir-action-buttons a.bb-primary{
  background: var(--bb-ink) !important; color: var(--bb-bg) !important;
  border-color: var(--bb-ink) !important;
}

/* ---------- Map (preserves Leaflet/OpenStreetMap output) ---------- */
.bb-gd-map,
.geodir-map-wrap,
.geodir-map-container{
  border-radius: var(--bb-radius-lg);
  overflow: hidden;
  border: 1px solid var(--bb-line);
  box-shadow: var(--bb-shadow-sm);
}
.geodir-map-wrap .leaflet-container{
  border-radius: var(--bb-radius-lg);
  font-family: var(--bb-font-body) !important;
}
/* Cleaner Leaflet popups */
.leaflet-popup-content-wrapper{
  border-radius: var(--bb-radius) !important;
  box-shadow: var(--bb-shadow) !important;
  padding: .25rem;
}
.leaflet-popup-content{ font-family: var(--bb-font-body); color: var(--bb-ink); }

/* Mobile: stack map below results */
@media (max-width: 860px){
  .geodir-loop-container-wrap .geodir-map-wrap,
  .geodir-archive-with-map .geodir-map-wrap{
    order: 2; height: 320px !important; margin-top: 1rem;
  }
  .geodir-archive-with-map .geodir-loop-container{ order: 1; }
}

/* ---------- Similar/Nearby places block (on single) ---------- */
.bb-gd-single .geodir-loop-container{ margin-top: 1rem; }

/* ---------- UsersWP / Ninja Forms light polish ---------- */
.uwp-profile-page .uwp-profile-header,
.nf-form-cont{
  background: var(--bb-surface);
  border: 1px solid var(--bb-line);
  border-radius: var(--bb-radius-lg);
  padding: 1.5rem !important;
  box-shadow: var(--bb-shadow-sm);
}
.nf-form-cont input, .nf-form-cont textarea, .nf-form-cont select{
  border-radius: 12px !important;
  border-color: var(--bb-line) !important;
}
.nf-form-cont input[type="button"], .nf-form-cont input[type="submit"]{
  background: var(--bb-ink) !important; color: var(--bb-bg) !important;
  border-radius: 999px !important; border: 0 !important; padding: .9rem 1.6rem !important;
}
