/*
Theme Name: Escort Classifieds
Theme URI: https://example.com/escort-classifieds
Author: DOS Digital Online Systems Limited
Author URI: https://example.com
Description: GDPR-compliant escorting classifieds theme with geo search, verification gating, moderation tools, and promoted listings.
Version: 1.0.5
Requires at least: 6.0
Tested up to: 6.6
Requires PHP: 8.0
Text Domain: escort-classifieds
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
*/

/* =========================
   Brand tokens
========================= */
:root{
  --ec-accent: #f5b5d1;      /* pink */
  --ec-accent-600:#e49fc0;
  --ec-accent-700:#d08aaa;

  --ec-border:#311f46;       /* deep purple borders */
  --ec-text:#111;
  --ec-muted:#6b7280;
  --ec-card-bg:#fff;
  --ec-bg:#fafafa;
  --ec-black:#000;

  --ec-radius: 1rem;
  --ec-radius-sm: .75rem;
  --ec-shadow: 0 8px 24px rgba(0,0,0,.08);

  /* Light Bootstrap bridge */
  --bs-primary: var(--ec-accent);
  --bs-link-color: var(--ec-accent);
  --bs-link-hover-color: var(--ec-accent-700);
  --bs-border-color: var(--ec-border);
  --bs-body-bg: var(--ec-bg);
  --bs-body-color: var(--ec-text);

  /* Header heights (used for spacer fallback) */
  --ec-header-h-sm: 60px;
  --ec-header-h-lg: 72px;
}

/* =========================
   Base
========================= */
html{scroll-behavior:smooth}
body{
  background:var(--ec-bg);
  color:var(--ec-text);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  margin:0;
}
img{max-width:100%;height:auto;display:block}
a{color:var(--ec-accent);text-decoration:none}
a:hover{color:var(--ec-accent-700);text-decoration:underline}

/* =========================
   Header / Navbar
========================= */
.navbar{
  background:var(--ec-black) !important;          /* true black header */
  border-bottom:1px solid var(--ec-border);
}

/* Remove any stray white strip on desktop */
@media (min-width: 992px){
  .navbar .navbar-collapse{background:transparent !important;}
  .navbar .offcanvas{display:none !important;}    /* ensure desktop never shows offcanvas bg */
}

/* Brand text/links */
.navbar .navbar-brand,
.navbar .nav-link{
  color:var(--ec-accent) !important;
}
.navbar .nav-link:hover,
.navbar .nav-link:focus{
  color:var(--ec-accent-700) !important;
}

/* Site logo size (custom logo) — unified to ~100×40 */
.custom-logo{
  max-height:40px;
  max-width:100px;
  width:auto;
  height:auto;
}
.navbar .custom-logo{
  max-height:40px;
  max-width:100px;
  width:auto !important;
  height:auto !important;
}

/* Optional: support wrapper selector used in header.php */
.site-logo img{
  max-height:40px;
  max-width:100px;
  width:auto;
  height:auto;
}

/* Toggler (hamburger) against black header */
.navbar-toggler{
  border-color: var(--ec-accent);
}
.navbar-dark .navbar-toggler-icon{
  filter: invert(1) grayscale(100%);  /* ensure visible on black */
  opacity: .9;
}

/* Mobile/collapsed menu ONLY: white panel with dark text */
@media (max-width: 991.98px){
  #ecNav, .navbar .offcanvas, .navbar-collapse{
    background:#fff !important;
    color:#111 !important;
  }
  #ecNav .offcanvas-header{border-bottom:1px solid var(--ec-border);}
  #ecNav .btn-close,
  .offcanvas .btn-close{filter: invert(0); opacity:.85;}
  #ecNav .btn-close:hover{opacity:1;}
  #ecNav .nav-link, .navbar-collapse .nav-link{color:#111 !important;}
  #ecNav .nav-link:hover, .navbar-collapse .nav-link:hover{color:var(--ec-accent-700) !important;}
}

/* Header CTA (Submit Listing) — pink base → white on hover */
.navbar .menu-item .btn,
.navbar .menu-item .btn-primary,
.navbar .menu-item .btn-success,
.navbar .btn-cta{
  background: var(--ec-accent) !important;
  color:#000 !important;
  border:1px solid var(--ec-border) !important;
  border-radius: var(--ec-radius-sm);
  transition: all .2s ease-in-out;
}
.navbar .menu-item .btn:hover,
.navbar .menu-item .btn:focus,
.navbar .btn-cta:hover,
.navbar .btn-cta:focus{
  background:#fff !important;
  color:#000 !important;
  border-color: var(--ec-border) !important;
}

/* =========================
   FIXED HEADER SUPPORT (offset)
   - header uses .fixed-top in header.php
   - spacer div (.ec-header-spacer) prevents content from hiding under header
========================= */

/* Ensure fixed header stays on top across themes/plugins */
.ec-navbar.fixed-top{
  position: fixed;
  top: 0;
  left: 0; right: 0;
  z-index: 1030; /* aligns with Bootstrap */
}

/* Default spacer height (JS in header adjusts precisely on load/resize) */
.ec-header-spacer{
  display:block;
  height: var(--ec-header-h-lg);
}
@media (max-width: 991.98px){
  .ec-header-spacer{ height: var(--ec-header-h-sm); }
}

/* WordPress admin bar compatibility */
.admin-bar .ec-navbar.fixed-top{ top:32px; }
@media (max-width: 782px){
  .admin-bar .ec-navbar.fixed-top{ top:46px; }
}

/* =========================
   Footer
========================= */
footer, .site-footer, #site-footer{
  background:#000 !important;                     /* enforce true black (not #212529) */
  color:#fff !important;
  border-top:1px solid var(--ec-border);
}
footer a, .site-footer a, #site-footer a{
  color:var(--ec-accent) !important;
}
footer a:hover, .site-footer a:hover, #site-footer a:hover{
  color:var(--ec-accent-700) !important;
  opacity:.9;
}

/* =========================
   Buttons (global)
========================= */
.btn, .btn-primary, .btn-success{
  background:#000 !important;                     /* black base */
  border:1px solid var(--ec-border) !important;
  color:#fff !important;
  border-radius: var(--ec-radius-sm);
  box-shadow:none !important;
  transition: all .2s ease-in-out;
}
.btn:hover, .btn-primary:hover, .btn-success:hover{
  background:#fff !important;                     /* white on hover */
  border-color: var(--ec-accent) !important;      /* pink border on hover */
  color:#000 !important;
}
.btn-outline-primary{
  color:#000 !important;
  border:1px solid var(--ec-border) !important;
  background:transparent !important;
}
.btn-outline-primary:hover{
  background:var(--ec-accent) !important;
  color:#000 !important;
  border-color:var(--ec-accent) !important;
}

/* =========================
   Forms
========================= */
.form-control, .form-select{
  border-radius: var(--ec-radius-sm);
  border:1px solid var(--ec-border);
  background:#fff;
  color:#111;
}
.form-control:focus, .form-select:focus{
  border-color: var(--ec-accent);
  box-shadow: 0 0 0 .2rem rgba(245,181,209,.25);
}

/* Search form wrapper */
#listing-search-form{
  background:#fff;
  border:1px solid var(--ec-border);
  border-radius: var(--ec-radius);
  padding:1rem;
  box-shadow: var(--ec-shadow);
}
#listing-search-form .btn{height:48px}

/* =========================
   Cards
========================= */
.escort-listing-card,
.card.escort-listing-card,
.card.h-100{
  border:1px solid var(--ec-border);
  border-radius: var(--ec-radius);
  background:var(--ec-card-bg);
  box-shadow:var(--ec-shadow);
  overflow:hidden;
  transition: transform .15s ease, box-shadow .15s ease;
}
.escort-listing-card:hover{
  transform: translateY(-2px);
  box-shadow: 0 12px 30px rgba(0,0,0,.12);
}
.escort-listing-card .card-img-top,
.card .card-img-top{
  object-fit:cover;
  height:220px;
}
.card-title{font-weight:700}
.card-location{color:var(--ec-muted);font-size:.9rem;margin-bottom:.25rem}
.card-excerpt{color:#333}

/* Badges */
.badge.bg-warning{
  background:#fff3cd !important;
  color:#8a6d3b !important;
  border:1px solid #ffe69c;
}
.badge-ec{
  display:inline-block;
  padding:.35rem .6rem;
  font-size:.8rem;
  border-radius:999px;
  background:var(--ec-accent);
  color:#111;
}

/* =========================
   Sections / Alerts
========================= */
h2.h5{font-weight:700}
.alert-info{
  border-radius: var(--ec-radius-sm);
  border:1px solid var(--ec-border);
}

/* Post-it notice box (home) */
.ec-compliance{
  background:#fff9c4;
  color:#000;
  border:1px solid #e6d86b;
  border-radius:6px;
  padding:1rem 1.25rem;
  box-shadow: 0 8px 18px rgba(0,0,0,.08), 0 2px 0 #e6d86b inset;
  transform: rotate(-0.4deg);
}
.ec-compliance h2{font-size:1.05rem;font-weight:700;margin-bottom:.25rem}

/* =========================
   Pagination
========================= */
.page-numbers{
  display:inline-block;
  padding:.5rem .75rem;
  border:1px solid var(--ec-border);
  border-radius: var(--ec-radius-sm);
  margin:.15rem;
  background:#fff;
  color:#333;
}
.page-numbers.current{
  background:#000;
  color:#fff;
  border-color:#000;
}
.page-numbers:hover{
  background:#f7f2f6;
  text-decoration:none;
}

/* =========================
   Utilities
========================= */
.rounded-4{border-radius: var(--ec-radius) !important}
.shadow-soft{box-shadow: var(--ec-shadow)}
.text-accent{color: var(--ec-accent) !important}
.border-ec{border-color: var(--ec-border) !important}
.bg-black{background:#000 !important;color:#fff !important}

/* =========================
   Mobile tweaks
========================= */
@media (max-width:575.98px){
  .escort-listing-card .card-img-top{height:180px}
  #listing-search-form{padding:.75rem}
}

/* ===== Fixed header offset (CSS-only) ===== */
/* Stop using the spacer height if it exists */
.ec-header-spacer{ height:0 !important; }

/* Give the whole page a top padding equal to the header height */
body { padding-top: var(--ec-header-h-lg); }
@media (max-width: 991.98px){
  body { padding-top: var(--ec-header-h-sm); }
}

/* WordPress admin bar compensation (so it never overlaps) */
.admin-bar body { padding-top: calc(var(--ec-header-h-lg) + 32px); }
@media (max-width: 782px){
  .admin-bar body { padding-top: calc(var(--ec-header-h-sm) + 46px); }
}

/* Make in-page anchor jumps land below the fixed header */
[id] { scroll-margin-top: var(--ec-header-h-lg); }
@media (max-width: 991.98px){
  [id] { scroll-margin-top: var(--ec-header-h-sm); }
}

/* ===== Force footer to true black (override Bootstrap) ===== */
footer, .site-footer, #site-footer {
  /* make any Bootstrap dark backgrounds resolve to pure black */
  --bs-dark-rgb: 0,0,0;
  --bs-bg-opacity: 1;

  background: #000 !important;
  background-color: #000 !important;
  color: #fff !important;
}

/* if .bg-dark or .text-bg-dark are applied on/inside the footer, override them */
footer.bg-dark,
.site-footer.bg-dark,
#site-footer.bg-dark,
footer .bg-dark,
.site-footer .bg-dark,
#site-footer .bg-dark,
footer.text-bg-dark,
.site-footer.text-bg-dark,
#site-footer.text-bg-dark,
footer .text-bg-dark,
.site-footer .text-bg-dark,
#site-footer .text-bg-dark {
  --bs-dark-rgb: 0,0,0;
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;
  color: #fff !important;
}

/* ensure nested containers don’t reintroduce a tinted background */
footer .container,
footer .row,
footer .widget,
footer .wp-block-group {
  background: transparent !important;
}

/* keep your brand link color */
footer a, .site-footer a, #site-footer a {
  color: var(--ec-accent) !important;
}
footer a:hover, .site-footer a:hover, #site-footer a:hover {
  color: var(--ec-accent-700) !important;
}
