:root {
  --recms-primary: #0f4c3a;
  --recms-primary-dark: #0a3327;
  --recms-accent: #d4a017;
  --recms-sidebar-w: 240px;
}

body { background-color: #f4f6f8; }

.app-navbar { background-color: var(--recms-primary-dark); }

.app-wrapper { display: flex; min-height: calc(100vh - 56px); }

.app-sidebar {
  width: var(--recms-sidebar-w);
  background: #fff;
  border-right: 1px solid #e3e6ea;
  min-height: calc(100vh - 56px);
  position: sticky;
  top: 56px;
  align-self: flex-start;
}
.app-sidebar .nav-link { color: #33404a; border-radius: .375rem; padding: .55rem .75rem; font-size: .92rem; }
.app-sidebar .nav-link:hover { background: #eef3f1; }
.app-sidebar .nav-link.active { background: var(--recms-primary); color: #fff; }
.app-sidebar .nav-section-title { font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; color: #8a97a3; margin: 1rem 0 .25rem .5rem; }

.app-main { flex: 1; min-width: 0; }

@media (max-width: 991.98px) {
  .app-sidebar { position: fixed; left: -260px; top: 56px; z-index: 1030; transition: left .2s ease; box-shadow: 2px 0 8px rgba(0,0,0,.08); }
  .app-sidebar.show { left: 0; }
}

.stat-card { border: none; border-radius: .75rem; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.stat-card .stat-value { font-size: 1.75rem; font-weight: 700; }
.stat-card .stat-icon { font-size: 1.75rem; opacity: .35; }

.badge-status-Available { background:#198754; }
.badge-status-Reserved { background:#fd7e14; }
.badge-status-Allocated { background:#0d6efd; }
.badge-status-Fully_Paid { background:#6f42c1; }
.badge-status-Under_Construction { background:#20c997; }
.badge-status-Completed { background:#0dcaf0; color:#000; }
.badge-status-Handed_Over { background:#6c757d; }

/* Estate GIS plot map */
.estate-map-wrap { position: relative; display: inline-block; max-width: 100%; }
.estate-map-wrap img { max-width: 100%; display: block; border-radius: .5rem; border: 1px solid #dee2e6; }
.plot-marker {
  position: absolute; width: 22px; height: 22px; border-radius: 50%;
  border: 2px solid #fff; box-shadow: 0 0 0 1px rgba(0,0,0,.25);
  transform: translate(-50%, -50%); cursor: pointer; display:flex; align-items:center; justify-content:center;
  font-size: .6rem; color:#fff; font-weight:700;
}

/* Kanban pipeline board */
.kanban-board { display: flex; gap: 1rem; overflow-x: auto; padding-bottom: 1rem; }
.kanban-column { flex: 0 0 270px; background: #eef1f3; border-radius: .5rem; padding: .75rem; min-height: 200px; }
.kanban-column-header { font-weight: 600; font-size: .85rem; text-transform: uppercase; color:#5a6b74; margin-bottom:.5rem; display:flex; justify-content:space-between; }
.kanban-card { background:#fff; border-radius:.5rem; padding:.65rem .75rem; margin-bottom:.6rem; box-shadow:0 1px 2px rgba(0,0,0,.08); cursor:grab; }
.kanban-card:active { cursor:grabbing; }
.kanban-card.dragging { opacity:.4; }
.kanban-column.drag-over { background:#dfe8e5; }

.login-wrap { min-height:100vh; display:flex; align-items:center; justify-content:center; background: linear-gradient(135deg, var(--recms-primary-dark), var(--recms-primary)); }
.login-card { width: 100%; max-width: 400px; border:none; border-radius:1rem; box-shadow: 0 10px 40px rgba(0,0,0,.25); }
