:root{
    --bs-primary:#2E7D32;
    --bs-primary-rgb:46,125,50;
    --brand:#2E7D32;
    --brand-dark:#256b29;
}

body{
    background:#f8fafc;
    font-family:'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    --bs-body-font-family:'Roboto', sans-serif;
}
h1,h2,h3,h4,h5,h6,.navbar-brand,.btn{ font-family:'Roboto', sans-serif; }

/* ---- Brand colour overrides for Bootstrap ---- */
.btn-primary{ background:var(--brand); border-color:var(--brand); }
.btn-primary:hover,.btn-primary:focus{ background:var(--brand-dark); border-color:var(--brand-dark); }
.text-primary{ color:var(--brand) !important; }
.bg-primary{ background:var(--brand) !important; }
.btn-outline-primary{ color:var(--brand); border-color:var(--brand); }
.btn-outline-primary:hover{ background:var(--brand); border-color:var(--brand); }
.link-primary,.text-success{ color:var(--brand) !important; }
.form-control:focus,.form-select:focus{
    border-color:var(--brand);
    box-shadow:0 0 0 .2rem rgba(var(--bs-primary-rgb),.2);
}
::placeholder{ color:#adb5bd !important; opacity:1; }
:-ms-input-placeholder{ color:#adb5bd !important; }
::-ms-input-placeholder{ color:#adb5bd !important; }
.page-link{ color:var(--brand); }
.page-item.active .page-link{ background:var(--brand); border-color:var(--brand); }

.navbar-brand img{ height:42px; }

/* ---- Hero ---- */
.hero{
    background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,.6)),
        url('https://images.unsplash.com/photo-1560518883-ce09059eeffa');
    background-size:cover;
    background-position:center;
    min-height:420px;
    color:#fff;
}
.hero-sm{ min-height:300px; }
@media (max-width:767.98px){
    .hero{ min-height:360px; }
}

.search-box{
    background:#fff;
    padding:25px;
    border-radius:15px;
    box-shadow:0 10px 30px rgba(0,0,0,.15);
}

/* ---- Property cards ---- */
.property-card{ transition:.3s; border:none; overflow:hidden; }
.property-card:hover{ transform:translateY(-8px); }
.property-card img{ height:230px; object-fit:cover; }

.city-card{ position:relative; overflow:hidden; border-radius:15px; }
.city-card img{ height:220px; object-fit:cover; width:100%; }
.city-overlay{
    position:absolute; inset:0;
    background:rgba(0,0,0,.45);
    display:flex; align-items:center; justify-content:center;
    color:#fff; font-size:24px; font-weight:700;
}

.feature-box{ background:#fff; border-radius:15px; padding:30px; text-align:center; height:100%; }
.cta{ background:#388E3C; color:#fff; padding:80px 0; }

/* ---- Home: Property Type / Popular Locations box ---- */
.type-box{
    background:#fff; border-radius:18px; padding:32px;
    border:1.5px solid rgba(var(--bs-primary-rgb),.25);
}
.type-box .type-name{ font-size:.95rem; }
@media (max-width:767.98px){
    .type-box{ padding:20px; }
    .type-box .type-name{ font-size:.8rem; }
}

.popular-location-link{
    display:block; padding:5px 8px; border-radius:8px;
    transition:.15s; font-weight:400; font-size:.85rem;
}
.popular-location-link:hover{ background:#f1f5f9; color:var(--brand)!important; }

/* ---- Home: Promotional banner ---- */
.promo-banner{
    background:#eaf6ec;
    color:#1c3d1e; border-radius:18px; padding:32px;
    border:1.5px solid rgba(var(--bs-primary-rgb),.25);
}
.promo-banner .bi{ color:var(--brand); }

footer{ background:#111827; color:#fff; }
footer a{ text-decoration:none; }
footer a:hover{ text-decoration:underline; }

.badge-featured{ position:absolute; top:15px; left:15px; z-index:2; }

/* ---- Property post form: slightly lighter field labels ---- */
#listingForm .form-label{ color:#6c757d; font-weight:500; }

/* ---- Gallery ---- */
.gallery-thumb{ height:90px; object-fit:cover; cursor:pointer; border-radius:8px; }
.detail-main-img{ width:100%; height:420px; object-fit:cover; border-radius:12px; }

/* ---- Rendered listing description (WYSIWYG output) ---- */
.listing-description{ line-height:1.7; }
.listing-description p{ margin-bottom:.75rem; }
.listing-description ul,.listing-description ol{ padding-left:1.5rem; margin-bottom:.75rem; }
.listing-description h2,.listing-description h3,.listing-description h4{ font-weight:700; margin-top:1rem; }
.listing-description blockquote{ border-left:4px solid var(--brand); padding-left:1rem; color:#555; margin:1rem 0; }

/* ---- Amenity chips ---- */
.amenity-chip{
    display:inline-flex; align-items:center; gap:8px;
    background:#f1f5f9; border-radius:30px; padding:8px 16px; margin:4px;
}

/* ---- Auth card ---- */
.auth-wrap{ min-height:calc(100vh - 140px); display:flex; align-items:center; }
.auth-card{ border:none; border-radius:16px; box-shadow:0 10px 40px rgba(0,0,0,.08); }

/* =========================================================
   Admin panel (left sidebar)
   ========================================================= */
.admin-body{ background:#f1f5f9; }
.admin-sidebar{
    width:250px; min-height:100vh; background:#111827; color:#cbd5e1;
    position:fixed; top:0; left:0; display:flex; flex-direction:column;
    transition:transform .25s ease; z-index:1040;
}
.admin-sidebar .brand{ padding:20px; border-bottom:1px solid rgba(255,255,255,.08); }
.admin-sidebar .brand img{ height:36px; }
.admin-sidebar a.nav-link{
    color:#cbd5e1; padding:12px 20px; border-radius:0; display:flex; align-items:center; gap:10px;
}
.admin-sidebar a.nav-link:hover{ background:rgba(255,255,255,.06); color:#fff; }
.admin-sidebar a.nav-link.active{ background:var(--brand); color:#fff; }
.admin-content{ margin-left:250px; padding:24px; }
.admin-topbar{
    background:#fff; border-radius:12px; padding:14px 20px; margin-bottom:24px;
    display:flex; align-items:center; justify-content:space-between;
    box-shadow:0 2px 8px rgba(0,0,0,.04);
}
.stat-tile{ border:none; border-radius:14px; box-shadow:0 2px 10px rgba(0,0,0,.05); }
.sidebar-backdrop{
    position:fixed; inset:0; background:rgba(0,0,0,.4); z-index:1035; display:none;
}
@media (max-width:991.98px){
    .admin-sidebar{ transform:translateX(-100%); }
    .admin-sidebar.show{ transform:translateX(0); }
    .admin-content{ margin-left:0; }
    .sidebar-backdrop.show{ display:block; }
}
