/* ═══════════════════════════════════════════
   MyEstate — Mobile-First CSS
   ═══════════════════════════════════════════ */

/* ── Variables ── */
:root {
  --primary:       #2563eb;
  --primary-d:     #1d4ed8;
  --primary-l:     #eff6ff;
  --accent:        #f59e0b;
  --success:       #10b981;
  --danger:        #ef4444;
  --warning:       #f59e0b;

  --bg:            #f8fafc;
  --bg-card:       #ffffff;
  --bg-nav:        #ffffff;
  --text:          #1e293b;
  --text-muted:    #64748b;
  --text-light:    #94a3b8;
  --border:        #e2e8f0;

  --shadow-sm:     0 1px 2px rgba(0,0,0,.06);
  --shadow:        0 1px 4px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.04);
  --shadow-md:     0 4px 12px rgba(0,0,0,.1);
  --shadow-lg:     0 8px 24px rgba(0,0,0,.12);

  --radius-sm:     6px;
  --radius:        10px;
  --radius-lg:     14px;
  --radius-xl:     20px;

  --font:          -apple-system,BlinkMacSystemFont,'Segoe UI','Inter',sans-serif;
  --dur:           .18s;

  /* Spacing scale */
  --s1: 4px; --s2: 8px; --s3: 12px; --s4: 16px;
  --s5: 20px; --s6: 24px; --s8: 32px; --s10: 40px;
}

[data-theme="dark"] {
  --bg:         #0f172a;
  --bg-card:    #1e293b;
  --bg-nav:     #1e293b;
  --text:       #f1f5f9;
  --text-muted: #94a3b8;
  --text-light: #64748b;
  --border:     #334155;
  --primary-l:  #172554;
  --shadow-sm:  0 1px 2px rgba(0,0,0,.3);
  --shadow:     0 1px 4px rgba(0,0,0,.3);
  --shadow-md:  0 4px 12px rgba(0,0,0,.4);
  --shadow-lg:  0 8px 24px rgba(0,0,0,.5);
}

/* ── Reset ── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:16px;scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.6;min-height:100vh;transition:background var(--dur),color var(--dur)}
a{color:var(--primary);text-decoration:none;transition:color var(--dur)}
a:hover{color:var(--primary-d)}
img{max-width:100%;height:auto;display:block}
button{cursor:pointer;font-family:var(--font)}
input,select,textarea{font-family:var(--font)}

/* ── Layout ── */
.container{width:100%;max-width:1280px;margin:0 auto;padding:0 var(--s4)}
@media(min-width:640px){.container{padding:0 var(--s6)}}

/* ── Navbar ── */
.navbar{
  background:var(--bg-nav);
  border-bottom:1px solid var(--border);
  position:sticky;top:0;z-index:1000;
  box-shadow:var(--shadow-sm);
  transition:background var(--dur);
}
.navbar-inner{
  display:flex;align-items:center;gap:var(--s3);
  height:56px;
}
@media(min-width:768px){.navbar-inner{height:64px;gap:var(--s4)}}

.navbar-logo{
  display:flex;align-items:center;gap:var(--s2);
  font-weight:800;font-size:1.15rem;color:var(--primary);
  flex-shrink:0;white-space:nowrap;
}
.navbar-logo svg{width:28px;height:28px}
@media(min-width:768px){.navbar-logo svg{width:32px;height:32px}.navbar-logo{font-size:1.25rem}}

/* Search bar — hidden on mobile, shown tablet+ */
.navbar-search{
  flex:1;max-width:420px;position:relative;
  display:none;
}
@media(min-width:640px){.navbar-search{display:block}}

.navbar-search input{
  width:100%;padding:9px 42px 9px 14px;
  border:1.5px solid var(--border);border-radius:50px;
  background:var(--bg);color:var(--text);font-size:.88rem;
  transition:border-color var(--dur);
}
.navbar-search input:focus{outline:none;border-color:var(--primary)}

.navbar-search-btn{
  position:absolute;right:4px;top:50%;transform:translateY(-50%);
  width:32px;height:32px;border-radius:50%;
  background:var(--primary);border:none;
  color:white;display:flex;align-items:center;justify-content:center;
  transition:background var(--dur);
}
.navbar-search-btn:hover{background:var(--primary-d)}

/* Dropdown */
.search-dropdown{
  position:absolute;top:calc(100% + 6px);left:0;right:0;
  background:var(--bg-card);border:1px solid var(--border);
  border-radius:var(--radius);box-shadow:var(--shadow-lg);
  z-index:9999;overflow:hidden;
}
.search-dropdown-item{
  display:flex;align-items:center;justify-content:space-between;
  padding:10px 14px;color:var(--text);gap:8px;
  transition:background var(--dur);
  border-bottom:1px solid var(--border);
}
.search-dropdown-item:last-child{border-bottom:none}
.search-dropdown-item:hover{background:var(--primary-l)}
.sdi-title{font-size:.88rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.sdi-price{font-size:.82rem;color:var(--primary);font-weight:600;white-space:nowrap}

/* Navbar right */
.navbar-nav{display:none;align-items:center;gap:var(--s2);margin-left:auto}
@media(min-width:900px){.navbar-nav{display:flex}}

.nav-link{
  padding:7px 10px;border-radius:var(--radius-sm);
  color:var(--text-muted);font-size:.88rem;font-weight:500;
  white-space:nowrap;transition:all var(--dur);
}
.nav-link:hover,.nav-link.active{color:var(--primary);background:var(--primary-l)}

/* Hamburger */
.hamburger{
  display:flex;flex-direction:column;gap:5px;
  margin-left:auto;padding:var(--s2);background:none;border:none;
}
@media(min-width:900px){.hamburger{display:none}}
.hamburger span{
  display:block;width:22px;height:2px;
  background:var(--text);border-radius:2px;
  transition:all var(--dur);
}
.hamburger[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.hamburger[aria-expanded="true"] span:nth-child(2){opacity:0}
.hamburger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* ── Mobile menu ── */
.mobile-menu{
  display:none;position:fixed;
  inset:0;top:56px;
  background:var(--bg-nav);z-index:999;
  flex-direction:column;
  overflow-y:auto;padding:var(--s4);gap:var(--s1);
  border-top:1px solid var(--border);
}
@media(min-width:768px){.mobile-menu{top:64px}}
.mobile-menu.open{display:flex}

.mobile-menu .nav-link{
  padding:14px var(--s4);border-radius:var(--radius);
  font-size:1rem;display:block;
}
.mobile-menu-divider{height:1px;background:var(--border);margin:var(--s2) 0}
.mobile-search{
  display:flex;gap:var(--s2);margin-bottom:var(--s3);
}
.mobile-search input{
  flex:1;padding:11px 14px;border:1.5px solid var(--border);
  border-radius:var(--radius);background:var(--bg);
  color:var(--text);font-size:.95rem;
}
.mobile-search button{
  padding:11px 16px;background:var(--primary);
  color:white;border:none;border-radius:var(--radius);
  font-size:.9rem;font-weight:600;
}
.mobile-lang-row{
  display:flex;align-items:center;gap:var(--s3);
  padding:var(--s3) var(--s4);
}
.mobile-lang-row select{
  border:none;background:transparent;color:var(--text-muted);
  font-size:.9rem;
}

/* Theme toggle */
.theme-toggle{
  width:44px;height:24px;border-radius:12px;
  background:var(--border);border:none;
  position:relative;flex-shrink:0;transition:background var(--dur);
}
.theme-toggle.dark{background:var(--primary)}
.theme-toggle::after{
  content:'';position:absolute;
  width:18px;height:18px;border-radius:50%;
  background:white;top:3px;left:3px;
  transition:transform var(--dur);
}
.theme-toggle.dark::after{transform:translateX(20px)}

/* Lang/currency bar */
.lang-bar{display:flex;align-items:center;gap:var(--s2)}
.lang-bar select{
  border:none;background:transparent;
  color:var(--text-muted);font-size:.82rem;padding:4px;
}

/* Notif bell */
.notif-bell{
  position:relative;width:36px;height:36px;border-radius:50%;
  border:1.5px solid var(--border);background:var(--bg-card);
  color:var(--text-muted);display:flex;align-items:center;justify-content:center;
  transition:all var(--dur);flex-shrink:0;
}
.notif-bell:hover{border-color:var(--primary);color:var(--primary)}
.notif-badge{
  position:absolute;top:-3px;right:-3px;
  min-width:16px;height:16px;padding:0 4px;
  background:var(--danger);color:white;
  border-radius:8px;font-size:.65rem;font-weight:700;
  display:none;align-items:center;justify-content:center;
}
.notif-panel{
  position:fixed;top:60px;right:var(--s4);width:280px;
  background:var(--bg-card);border:1px solid var(--border);
  border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);
  z-index:8000;overflow:hidden;display:none;
}
@media(min-width:768px){.notif-panel{position:absolute;top:calc(100% + 8px);right:0;width:300px}}
.notif-item{
  display:flex;align-items:center;gap:var(--s2);
  padding:12px var(--s4);color:var(--text);font-size:.85rem;
  border-bottom:1px solid var(--border);transition:background var(--dur);
}
.notif-item:hover{background:var(--primary-l)}

/* ── Buttons ── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:10px 20px;border-radius:var(--radius);border:none;
  font-size:.9rem;font-weight:600;
  transition:all var(--dur);text-decoration:none;white-space:nowrap;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;
}
.btn-primary{background:var(--primary);color:white}
.btn-primary:hover{background:var(--primary-d);color:white;box-shadow:var(--shadow-md)}
.btn-outline{background:transparent;border:1.5px solid var(--border);color:var(--text)}
.btn-outline:hover{border-color:var(--primary);color:var(--primary)}
.btn-success{background:var(--success);color:white}
.btn-success:hover{background:#059669;color:white}
.btn-danger{background:var(--danger);color:white}
.btn-danger:hover{background:#dc2626;color:white}
.btn-sm{padding:7px 14px;font-size:.82rem}
.btn-lg{padding:14px 28px;font-size:1rem}
.btn-block{width:100%}
.btn-icon{
  width:40px;height:40px;padding:0;border-radius:50%;
  background:transparent;border:1.5px solid var(--border);
  color:var(--text-muted);display:flex;align-items:center;justify-content:center;
}
.btn-icon:hover{color:var(--primary);border-color:var(--primary);background:var(--primary-l)}
.btn:disabled{opacity:.55;pointer-events:none}

/* ── Cards ── */
.card{
  background:var(--bg-card);border-radius:var(--radius-lg);
  border:1px solid var(--border);box-shadow:var(--shadow-sm);
  transition:background var(--dur);
}

/* ── Listing cards ── */
.grid-listings{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:var(--s3);
}
@media(min-width:640px){.grid-listings{gap:var(--s4)}}
@media(min-width:900px){.grid-listings{grid-template-columns:repeat(3,1fr)}}
@media(min-width:1200px){.grid-listings{grid-template-columns:repeat(4,1fr)}}

.listing-card{overflow:hidden;cursor:pointer;transition:transform var(--dur),box-shadow var(--dur)}
.listing-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}
.listing-card:active{transform:scale(.98)}

.listing-card-img{
  position:relative;overflow:hidden;
  height:160px;background:var(--border);
}
@media(min-width:640px){.listing-card-img{height:190px}}
@media(min-width:900px){.listing-card-img{height:200px}}

.listing-card-img img{
  width:100%;height:100%;object-fit:cover;
  transition:transform .4s ease;
}
.listing-card:hover .listing-card-img img{transform:scale(1.04)}

.listing-badge{
  position:absolute;top:8px;left:8px;
  padding:3px 9px;border-radius:50px;
  font-size:.72rem;font-weight:700;
}
.badge-sale{background:var(--primary);color:white}
.badge-rent{background:var(--success);color:white}
.badge-daily{background:var(--accent);color:white}
.badge-featured,.badge-top{background:var(--accent);color:white}
.badge-urgent{background:var(--danger);color:white}

.listing-fav{
  position:absolute;top:8px;right:8px;
  width:32px;height:32px;border-radius:50%;
  background:rgba(255,255,255,.92);border:none;
  display:flex;align-items:center;justify-content:center;
  color:var(--text-muted);transition:all var(--dur);
}
.listing-fav:hover,.listing-fav.active{color:var(--danger)}
.listing-fav.active svg{fill:var(--danger)}

.listing-card-body{padding:12px}
@media(min-width:640px){.listing-card-body{padding:var(--s4)}}

.listing-price{
  font-size:1.05rem;font-weight:700;color:var(--primary);
  margin-bottom:4px;line-height:1.2;
}
@media(min-width:640px){.listing-price{font-size:1.15rem}}

.listing-title{
  font-size:.85rem;font-weight:600;color:var(--text);
  margin-bottom:6px;line-height:1.35;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
@media(min-width:640px){.listing-title{font-size:.9rem}}

.listing-meta{display:flex;flex-wrap:wrap;gap:6px;font-size:.75rem;color:var(--text-muted)}
.listing-meta-item{display:flex;align-items:center;gap:3px}
.listing-meta-item svg{width:12px;height:12px;flex-shrink:0}

.listing-footer{
  padding:10px 12px;border-top:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;
  font-size:.75rem;color:var(--text-light);
}
@media(min-width:640px){.listing-footer{padding:10px var(--s4)}}

/* ── Hero ── */
.hero{
  background:linear-gradient(135deg,#1e3a8a 0%,#2563eb 55%,#0ea5e9 100%);
  padding:var(--s10) 0;color:white;
}
@media(min-width:768px){.hero{padding:60px 0}}

.hero-title{
  font-size:clamp(1.5rem,5vw,2.8rem);
  font-weight:800;margin-bottom:var(--s2);line-height:1.2;
}
.hero-sub{font-size:.95rem;opacity:.85;margin-bottom:var(--s6)}
@media(min-width:640px){.hero-sub{font-size:1.05rem}}

/* Search box */
.search-box{
  background:var(--bg-card);border-radius:var(--radius-lg);
  padding:var(--s4);box-shadow:var(--shadow-lg);
}
.search-box-tabs{
  display:flex;gap:0;margin-bottom:var(--s4);
  border-bottom:2px solid var(--border);
}
.search-box-tab{
  padding:10px 16px;border:none;background:transparent;
  font-size:.88rem;font-weight:600;color:var(--text-muted);
  border-bottom:2px solid transparent;margin-bottom:-2px;
  cursor:pointer;font-family:var(--font);
  transition:all var(--dur);
}
.search-box-tab.active{color:var(--primary);border-bottom-color:var(--primary)}
.search-box-fields{display:flex;flex-direction:column;gap:var(--s3)}
@media(min-width:640px){.search-box-fields{flex-direction:row;flex-wrap:wrap}}

.search-box-fields select,.search-box-fields input{
  flex:1;min-width:0;padding:11px 14px;
  border:1.5px solid var(--border);border-radius:var(--radius);
  background:var(--bg);color:var(--text);font-size:.9rem;
  transition:border-color var(--dur);
}
.search-box-fields select:focus,.search-box-fields input:focus{
  outline:none;border-color:var(--primary);
}

/* ── Categories grid ── */
.categories-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:var(--s2);
}
@media(min-width:480px){.categories-grid{grid-template-columns:repeat(4,1fr)}}
@media(min-width:640px){.categories-grid{grid-template-columns:repeat(5,1fr);gap:var(--s3)}}
@media(min-width:900px){.categories-grid{grid-template-columns:repeat(8,1fr)}}

.category-card{
  display:flex;flex-direction:column;align-items:center;gap:6px;
  padding:14px 8px;border-radius:var(--radius-lg);
  background:var(--bg-card);border:1.5px solid var(--border);
  color:var(--text);text-align:center;cursor:pointer;
  transition:all var(--dur);
}
.category-card:hover{border-color:var(--primary);background:var(--primary-l);color:var(--primary)}
.category-card:active{transform:scale(.96)}
.category-card svg{width:26px;height:26px}
@media(min-width:640px){.category-card svg{width:30px;height:30px}}
.category-card span{font-size:.75rem;font-weight:600;line-height:1.2}
@media(min-width:640px){.category-card span{font-size:.82rem}}

/* ── Section ── */
.section{padding:var(--s8) 0}
@media(min-width:640px){.section{padding:48px 0}}

.section-title{
  font-size:1.2rem;font-weight:700;margin-bottom:var(--s4);
  display:flex;align-items:center;justify-content:space-between;gap:var(--s3);
}
@media(min-width:640px){.section-title{font-size:1.4rem;margin-bottom:var(--s6)}}
.section-title a{font-size:.85rem;font-weight:500;color:var(--primary);white-space:nowrap}

/* ── Forms ── */
.form-group{display:flex;flex-direction:column;gap:6px}
.form-group label{font-size:.85rem;font-weight:600;color:var(--text-muted)}

.form-control{
  width:100%;padding:11px 14px;
  border:1.5px solid var(--border);border-radius:var(--radius);
  background:var(--bg-card);color:var(--text);font-size:.95rem;
  font-family:var(--font);
  transition:border-color var(--dur),box-shadow var(--dur);
  -webkit-appearance:none;appearance:none;
}
.form-control:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.15)}
.form-control.error{border-color:var(--danger)}
textarea.form-control{min-height:110px;resize:vertical}
select.form-control{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%2364748b' d='M6 8L0 0h12z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}

.form-error{font-size:.8rem;color:var(--danger);display:none}
.form-error.show{display:block}

/* Filter bar */
.filter-bar{
  background:var(--bg-card);border-radius:var(--radius-lg);
  padding:var(--s4);border:1px solid var(--border);
  margin-bottom:var(--s6);
}
.filter-bar form{display:flex;flex-direction:column;gap:var(--s3)}
@media(min-width:640px){.filter-bar form{flex-direction:row;flex-wrap:wrap;align-items:flex-end}}
.filter-bar select,.filter-bar input{
  flex:1;min-width:130px;padding:9px 12px;
  border:1.5px solid var(--border);border-radius:var(--radius);
  background:var(--bg);color:var(--text);font-size:.88rem;
  -webkit-appearance:none;
}
.price-range{display:flex;gap:var(--s2);align-items:center;flex:2}
.price-range input{flex:1;min-width:80px}
.price-range span{color:var(--text-muted);flex-shrink:0;font-size:.9rem}

/* Tabs */
.tabs{display:flex;border-bottom:2px solid var(--border);margin-bottom:var(--s6);overflow-x:auto;-webkit-overflow-scrolling:touch}
.tab-btn{
  padding:10px 18px;border:none;background:transparent;
  color:var(--text-muted);font-size:.9rem;font-weight:600;
  cursor:pointer;border-bottom:2px solid transparent;
  margin-bottom:-2px;white-space:nowrap;font-family:var(--font);
  transition:all var(--dur);
}
.tab-btn.active{color:var(--primary);border-bottom-color:var(--primary)}
.tab-btn:hover{color:var(--primary)}

/* Chips */
.chips-row{display:flex;flex-wrap:wrap;gap:var(--s2);margin-bottom:var(--s4)}
.chip{
  display:inline-flex;align-items:center;gap:6px;
  padding:6px 14px;border-radius:50px;
  border:1.5px solid var(--border);font-size:.82rem;
  cursor:pointer;background:var(--bg-card);color:var(--text);
  transition:all var(--dur);
}
.chip:hover,.chip.active{border-color:var(--primary);background:var(--primary-l);color:var(--primary)}

/* ── Modals ── */
.modal-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.55);
  z-index:9000;display:none;
  align-items:flex-end;justify-content:center;
  padding:0;backdrop-filter:blur(3px);
}
@media(min-width:640px){.modal-overlay{align-items:center;padding:var(--s4)}}
.modal-overlay.open{display:flex}

.modal{
  background:var(--bg-card);width:100%;
  border-radius:var(--radius-xl) var(--radius-xl) 0 0;
  padding:var(--s6) var(--s4) calc(var(--s6) + env(safe-area-inset-bottom));
  position:relative;max-height:92vh;overflow-y:auto;
  animation:slideUp .25s ease;
}
@media(min-width:640px){
  .modal{
    border-radius:var(--radius-lg);
    max-width:440px;
    padding:var(--s8);
    max-height:90vh;
    animation:modalIn .2s ease;
  }
}

/* Handle bar for bottom sheet */
.modal::before{
  content:'';display:block;
  width:40px;height:4px;border-radius:2px;
  background:var(--border);margin:0 auto var(--s6);
}
@media(min-width:640px){.modal::before{display:none}}

@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
@keyframes modalIn{from{opacity:0;transform:scale(.95)translateY(8px)}to{opacity:1;transform:scale(1)translateY(0)}}

.modal-close{
  position:absolute;top:var(--s4);right:var(--s4);
  width:32px;height:32px;border-radius:50%;
  border:none;background:var(--border);
  color:var(--text);display:flex;align-items:center;justify-content:center;
  font-size:1rem;transition:all var(--dur);
}
.modal-close:hover{background:var(--danger);color:white}
.modal-title{font-size:1.15rem;font-weight:700;margin-bottom:var(--s6)}

/* OTP inputs */
.otp-inputs{display:flex;gap:var(--s2);justify-content:center;margin:var(--s5) 0}
.otp-input{
  width:46px;height:54px;text-align:center;
  font-size:1.4rem;font-weight:700;
  border:2px solid var(--border);border-radius:var(--radius);
  background:var(--bg-card);color:var(--text);
  transition:border-color var(--dur);
  -webkit-appearance:none;
}
@media(min-width:400px){.otp-input{width:50px;height:58px}}
.otp-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.15)}

/* ── Alerts ── */
.alert{padding:12px var(--s4);border-radius:var(--radius);font-size:.9rem;margin-bottom:var(--s4)}
.alert-success{background:#d1fae5;color:#065f46;border:1px solid #6ee7b7}
.alert-error{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5}
.alert-warning{background:#fef3c7;color:#92400e;border:1px solid #fcd34d}
.alert-info{background:#dbeafe;color:#1e40af;border:1px solid #93c5fd}
[data-theme="dark"] .alert-success{background:#064e3b;color:#6ee7b7}
[data-theme="dark"] .alert-error{background:#7f1d1d;color:#fca5a5}
[data-theme="dark"] .alert-warning{background:#78350f;color:#fcd34d}
[data-theme="dark"] .alert-info{background:#1e3a5f;color:#93c5fd}

/* ── Upload zone ── */
.upload-zone{
  border:2px dashed var(--border);border-radius:var(--radius-lg);
  padding:var(--s8) var(--s5);text-align:center;cursor:pointer;
  color:var(--text-muted);transition:all var(--dur);
}
.upload-zone:hover,.upload-zone.dragging{border-color:var(--primary);background:var(--primary-l);color:var(--primary)}
.upload-zone svg{width:40px;height:40px;margin:0 auto var(--s3)}
.image-preview-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:var(--s2);margin-top:var(--s4)}
.image-preview-item{position:relative;aspect-ratio:1;border-radius:var(--radius);overflow:hidden;border:2px solid var(--border)}
.image-preview-item img{width:100%;height:100%;object-fit:cover}
.remove-img{
  position:absolute;top:4px;right:4px;
  width:22px;height:22px;border-radius:50%;
  background:var(--danger);color:white;border:none;
  display:flex;align-items:center;justify-content:center;
  font-size:.72rem;
}

/* ── Gallery ── */
.img-main{width:100%;height:240px;object-fit:cover;border-radius:var(--radius-lg)}
@media(min-width:640px){.img-main{height:360px}}
@media(min-width:900px){.img-main{height:420px}}
.img-thumbs{display:flex;gap:var(--s2);margin-top:var(--s2);overflow-x:auto;padding-bottom:4px}
.img-thumb{
  width:68px;height:52px;object-fit:cover;border-radius:var(--radius-sm);
  cursor:pointer;opacity:.7;flex-shrink:0;
  border:2px solid transparent;transition:all var(--dur);
}
@media(min-width:640px){.img-thumb{width:80px;height:60px}}
.img-thumb.active,.img-thumb:hover{opacity:1;border-color:var(--primary)}

/* ── Listing detail ── */
.listing-detail-price{font-size:1.6rem;font-weight:800;color:var(--primary)}
@media(min-width:640px){.listing-detail-price{font-size:2rem}}
.listing-attrs{display:grid;grid-template-columns:1fr 1fr;gap:var(--s3)}
@media(min-width:640px){.listing-attrs{grid-template-columns:repeat(3,1fr)}}
.listing-attr-label{font-size:.78rem;color:var(--text-muted)}
.listing-attr-value{font-weight:600;font-size:.9rem}

/* Detail layout */
.listing-detail-layout{display:flex;flex-direction:column;gap:var(--s5)}
@media(min-width:900px){.listing-detail-layout{display:grid;grid-template-columns:1fr 300px;gap:var(--s8)}}

/* Contact card — sticky on desktop */
.contact-card-sticky{position:relative}
@media(min-width:900px){.contact-card-sticky{position:sticky;top:80px}}

/* ── Pagination ── */
.pagination{display:flex;gap:6px;justify-content:center;margin-top:var(--s8);flex-wrap:wrap}
.page-btn{
  min-width:40px;height:40px;padding:0 12px;
  border-radius:var(--radius);border:1.5px solid var(--border);
  background:var(--bg-card);color:var(--text);
  font-weight:600;font-size:.88rem;display:flex;align-items:center;justify-content:center;
  text-decoration:none;transition:all var(--dur);
}
.page-btn:hover,.page-btn.active{background:var(--primary);border-color:var(--primary);color:white}

/* ── Badges ── */
.badge{
  display:inline-flex;align-items:center;padding:3px 10px;
  border-radius:50px;font-size:.78rem;font-weight:600;
}
.badge-pending{background:#fef3c7;color:#92400e}
.badge-active{background:#d1fae5;color:#065f46}
.badge-rejected{background:#fee2e2;color:#991b1b}
.badge-closed{background:#f1f5f9;color:#64748b}
[data-theme="dark"] .badge-pending{background:#78350f;color:#fcd34d}
[data-theme="dark"] .badge-active{background:#064e3b;color:#6ee7b7}
[data-theme="dark"] .badge-rejected{background:#7f1d1d;color:#fca5a5}
[data-theme="dark"] .badge-closed{background:#1e293b;color:#94a3b8}

/* ── Toast ── */
.toast-container{
  position:fixed;bottom:var(--s4);left:var(--s4);right:var(--s4);
  z-index:9999;display:flex;flex-direction:column;gap:var(--s2);
  pointer-events:none;
}
@media(min-width:640px){
  .toast-container{left:auto;right:var(--s5);width:auto;min-width:240px}
}
.toast{
  background:var(--bg-card);border:1px solid var(--border);
  border-radius:var(--radius);padding:12px 16px;
  box-shadow:var(--shadow-lg);font-size:.88rem;
  animation:toastIn .25s ease;pointer-events:all;
}
@keyframes toastIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.toast-success{border-left:4px solid var(--success)}
.toast-error{border-left:4px solid var(--danger)}
.toast-info{border-left:4px solid var(--primary)}
.toast-warning{border-left:4px solid var(--warning)}

/* ── Compare bar ── */
.compare-bar{
  position:fixed;bottom:0;left:0;right:0;
  background:var(--bg-card);border-top:1px solid var(--border);
  padding:12px var(--s4) calc(12px + env(safe-area-inset-bottom));
  display:flex;align-items:center;justify-content:space-between;
  gap:var(--s3);z-index:8000;box-shadow:var(--shadow-lg);
  font-size:.9rem;font-weight:600;
}

/* ── Empty state ── */
.empty-state{text-align:center;padding:60px var(--s5);color:var(--text-muted)}
.empty-state svg{width:64px;height:64px;margin:0 auto var(--s4);opacity:.3}
.empty-state h3{font-size:1.1rem;font-weight:600;color:var(--text);margin-bottom:var(--s2)}

/* ── Loader / Skeleton ── */
.loader{
  width:32px;height:32px;border:3px solid var(--border);
  border-top-color:var(--primary);border-radius:50%;
  animation:spin .8s linear infinite;margin:0 auto;
}
@keyframes spin{to{transform:rotate(360deg)}}

.skeleton{
  background:linear-gradient(90deg,var(--border) 25%,var(--bg) 50%,var(--border) 75%);
  background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:var(--radius-sm);
}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* ── Footer ── */
.footer{background:#1e293b;color:#94a3b8;padding:48px 0 var(--s8)}
.footer-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s6) var(--s8);margin-bottom:var(--s8)}
@media(min-width:640px){.footer-grid{grid-template-columns:repeat(4,1fr)}}
.footer-title{color:white;font-weight:700;margin-bottom:var(--s4);font-size:.95rem}
.footer-links{display:flex;flex-direction:column;gap:var(--s2)}
.footer-links a{color:#94a3b8;font-size:.85rem;transition:color var(--dur)}
.footer-links a:hover{color:white}
.footer-bottom{
  border-top:1px solid #334155;padding-top:var(--s5);
  display:flex;align-items:center;justify-content:space-between;
  flex-wrap:wrap;gap:var(--s3);font-size:.82rem;
}

/* ── Admin layout ── */
.admin-layout{display:flex;min-height:100vh}
.admin-sidebar{
  width:240px;flex-shrink:0;
  background:var(--bg-card);border-right:1px solid var(--border);
  padding:var(--s5) var(--s3);
  position:sticky;top:0;height:100vh;overflow-y:auto;
  display:none;
}
@media(min-width:900px){.admin-sidebar{display:flex;flex-direction:column}}

.admin-content{flex:1;min-width:0;padding:var(--s4);overflow:hidden}
@media(min-width:640px){.admin-content{padding:var(--s6) var(--s8)}}

.admin-header{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:var(--s6);flex-wrap:wrap;gap:var(--s3);
}
.admin-title{font-size:1.4rem;font-weight:700}

/* Admin mobile top bar */
.admin-topbar{
  display:flex;align-items:center;gap:var(--s3);
  padding:var(--s3) var(--s4);background:var(--bg-card);
  border-bottom:1px solid var(--border);
  position:sticky;top:0;z-index:100;
}
@media(min-width:900px){.admin-topbar{display:none}}

/* Sidebar links */
.sidebar{display:flex;flex-direction:column;gap:2px}
.sidebar-link{
  display:flex;align-items:center;gap:var(--s3);
  padding:10px 14px;border-radius:var(--radius);
  color:var(--text-muted);font-weight:500;font-size:.88rem;
  transition:all var(--dur);white-space:nowrap;
}
.sidebar-link:hover,.sidebar-link.active{background:var(--primary-l);color:var(--primary)}
.sidebar-link svg{width:18px;height:18px;flex-shrink:0}
.sidebar-section-label{
  font-size:.7rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.07em;color:var(--text-light);
  padding:14px 14px 6px;
}

/* Admin mobile drawer */
.admin-drawer{
  position:fixed;inset:0;z-index:9000;
  display:none;
}
.admin-drawer.open{display:block}
.admin-drawer-backdrop{
  position:absolute;inset:0;background:rgba(0,0,0,.5);
}
.admin-drawer-panel{
  position:absolute;left:0;top:0;bottom:0;width:260px;
  background:var(--bg-card);padding:var(--s5) var(--s3);
  overflow-y:auto;animation:drawerIn .2s ease;
}
@keyframes drawerIn{from{transform:translateX(-100%)}to{transform:translateX(0)}}

/* Stat cards */
.stat-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--s3);margin-bottom:var(--s6)}
@media(min-width:640px){.stat-cards{grid-template-columns:repeat(3,1fr);gap:var(--s4)}}
@media(min-width:1024px){.stat-cards{grid-template-columns:repeat(4,1fr)}}
.stat-card{padding:var(--s4) var(--s5);border-radius:var(--radius-lg);background:var(--bg-card);border:1px solid var(--border)}
.stat-card-value{font-size:1.75rem;font-weight:800;color:var(--primary);line-height:1}
.stat-card-label{color:var(--text-muted);font-size:.82rem;margin-top:4px}

/* Table */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse;font-size:.88rem}
th,td{padding:11px 14px;text-align:left;border-bottom:1px solid var(--border)}
th{font-weight:600;color:var(--text-muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;background:var(--bg);white-space:nowrap}
tr:hover td{background:var(--primary-l)}

/* ── Map placeholder ── */
.map-placeholder{
  width:100%;height:200px;background:var(--border);
  border-radius:var(--radius-lg);display:flex;
  align-items:center;justify-content:center;
  color:var(--text-muted);font-size:.9rem;
}
@media(min-width:640px){.map-placeholder{height:240px}}

/* ── Utility ── */
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.text-muted{color:var(--text-muted)}
.text-primary{color:var(--primary)}
.mt-auto{margin-top:auto}

/* ── Safe area (iPhone notch) ── */
.navbar-inner{padding-left:max(var(--s4),env(safe-area-inset-left));padding-right:max(var(--s4),env(safe-area-inset-right))}
