/* ========================================================
   App.css — Sistema de Alocação de Recursos
   ======================================================== */

/* ── Layout do container de páginas ── */
#page-container {
  min-height: calc(100vh - 120px);
  padding: 20px;
  animation: fadeInPage 0.25s ease;
}

@keyframes fadeInPage {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ── Cards e títulos de seção ── */
.page-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 24px;
  flex-wrap: wrap;
  gap: 12px;
}

.page-header h4 {
  margin: 0;
  font-weight: 700;
  color: #1a2035;
}

/* ── Tabelas responsivas ── */
.table-responsive {
  border-radius: 6px;
  overflow: hidden;
}

.table thead th {
  background-color: #f5f6fa;
  border-top: none;
  font-size: 0.78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: #8d9498;
  white-space: nowrap;
}

.table tbody tr:hover {
  background-color: #f8f9fc;
}

/* ── Badges de status ── */
.badge {
  font-size: 0.72rem;
  padding: 4px 8px;
  font-weight: 600;
  border-radius: 20px;
}

/* ── Formulários em modal ── */
.modal-header {
  background: linear-gradient(135deg, #1572e8 0%, #6861ce 100%);
  color: #fff;
}

.modal-header .modal-title { color: #fff; font-weight: 700; }
.modal-header .close       { color: #fff; opacity: 0.85; }

/* ── Cards de sumário (wallet / dashboard) ── */
.stat-card {
  border-radius: 10px;
  padding: 24px;
  color: #fff;
  display: flex;
  align-items: center;
  gap: 16px;
}

.stat-card .stat-icon {
  font-size: 2.4rem;
  opacity: 0.85;
}

.stat-card .stat-label { font-size: 0.8rem; opacity: 0.85; margin-bottom: 2px; }
.stat-card .stat-value { font-size: 1.6rem; font-weight: 700; }

.stat-card.bg-primary { background: linear-gradient(135deg, #1572e8, #06a3da); }
.stat-card.bg-success { background: linear-gradient(135deg, #31ce36, #0fa958); }
.stat-card.bg-warning { background: linear-gradient(135deg, #ffad46, #ff6b0f); }
.stat-card.bg-info    { background: linear-gradient(135deg, #48abf7, #6861ce); }

/* ── Filtros de pesquisa ── */
.filter-bar {
  background: #f8f9fc;
  border-radius: 8px;
  padding: 16px;
  margin-bottom: 20px;
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: flex-end;
}

.filter-bar .form-group {
  margin-bottom: 0;
  flex: 1;
  min-width: 160px;
}

.filter-bar label {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  color: #8d9498;
  margin-bottom: 4px;
}

/* ── Paginação ── */
.pagination-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 16px;
  font-size: 0.85rem;
  color: #6c757d;
}

/* ── Items de booking ── */
.booking-items-table th,
.booking-items-table td {
  font-size: 0.82rem;
}

/* ── Empty state ── */
.empty-state {
  text-align: center;
  padding: 48px 24px;
  color: #adb5bd;
}

.empty-state i { font-size: 3rem; margin-bottom: 12px; display: block; }
.empty-state p { margin: 0; font-size: 0.95rem; }

/* ── Sidebar: itens ativos ── */
.nav-item.active > a,
.nav-item.active > a i {
  color: #1572e8 !important;
  font-weight: 600;
}

/* ── Loader inline ── */
.spinner-border-sm { width: 1rem; height: 1rem; }
