:root {
  --ep-primary: #1F4E78;
  --ep-primary-2: #2c5f8d;
  --ep-accent: #f59e0b;
}

body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
  background: #f5f7fa;
}

.navbar { box-shadow: 0 2px 12px rgba(0,0,0,.08); }

.btn-primary { background: var(--ep-primary); border-color: var(--ep-primary); }
.btn-primary:hover { background: var(--ep-primary-2); border-color: var(--ep-primary-2); }
.btn-outline-primary { color: var(--ep-primary); border-color: var(--ep-primary); }
.btn-outline-primary:hover { background: var(--ep-primary); border-color: var(--ep-primary); }
.text-primary { color: var(--ep-primary) !important; }
.bg-ep { background: var(--ep-primary) !important; }

.card { border: 0; border-radius: 14px; box-shadow: 0 4px 20px rgba(0,0,0,.06); }
.card-header { background: #fff; border-bottom: 1px solid #eef2f7; font-weight: 600; }

.page-header { background: #fff; padding: 1.25rem 0; margin-bottom: 1.5rem; border-bottom: 1px solid #eef2f7; }
.page-header h1 { color: var(--ep-primary); margin: 0; font-size: 1.5rem; font-weight: 700; }

.stat-card { text-align:center; padding:1.1rem .75rem; }
.stat-card .num { font-size:1.9rem; font-weight:700; line-height:1; color: var(--ep-primary); }
.stat-card .lbl { font-size:.8rem; color:#6b7280; margin-top:.35rem; }

.table thead th { font-size:.8rem; text-transform:uppercase; letter-spacing:.03em; color:#6b7280; }
.table td { vertical-align: middle; }

.required-star { color:#dc2626; }

.status-badge { font-size: .72rem; padding: .3em .7em; border-radius: 999px; font-weight: 600; display:inline-block; }
.status-pending   { background:#fef3c7; color:#92400e; }
.status-approved  { background:#dcfce7; color:#14532d; }
.status-rejected  { background:#fee2e2; color:#991b1b; }
.status-cancelled { background:#e5e7eb; color:#374151; }

/* ---------- Month calendar grid ---------- */
.cal-wrap { background:#fff; border-radius:14px; box-shadow:0 4px 20px rgba(0,0,0,.06); overflow:hidden; }
.cal-grid { display:grid; grid-template-columns:repeat(7,1fr); }
.cal-head {
  background:var(--ep-primary); color:#fff; text-align:center; font-weight:600;
  font-size:.8rem; padding:.55rem .25rem; text-transform:uppercase; letter-spacing:.03em;
}
.cal-cell {
  border-right:1px solid #eef2f7; border-bottom:1px solid #eef2f7;
  min-height:118px; padding:.4rem .45rem; background:#fff; position:relative; overflow:hidden;
}
.cal-cell:nth-child(7n) { border-right:0; }
.cal-cell.other { background:#fafbfc; color:#c0c7d0; }
.cal-cell.today { background:#fff7ed; }
.cal-cell.today .cal-date { background:var(--ep-accent); color:#3b2607; }
.cal-cell.weekend { background:#f8fafc; }
.cal-date {
  display:inline-flex; align-items:center; justify-content:center;
  width:24px; height:24px; border-radius:50%; font-size:.8rem; font-weight:600; color:#374151;
}
.cal-cell.other .cal-date { color:#c0c7d0; }
.cal-event {
  display:block; font-size:.68rem; line-height:1.25; margin-top:.2rem; padding:.12rem .35rem;
  border-radius:5px; background:#e0e7ff; color:#3730a3; white-space:nowrap;
  overflow:hidden; text-overflow:ellipsis; cursor:default;
}
.cal-event .ev-time { font-weight:700; }
.cal-note {
  display:block; font-size:.66rem; line-height:1.2; margin-top:.2rem; padding:.12rem .35rem;
  border-radius:5px; background:#fef3c7; color:#92400e;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.cal-more { font-size:.64rem; color:#6b7280; margin-top:.15rem; display:block; }

@media (max-width:640px){
  .cal-cell { min-height:78px; padding:.25rem .3rem; }
  .cal-event, .cal-note { font-size:.6rem; }
  .cal-head { font-size:.65rem; }
}

/* Legend swatches */
.legend-dot { display:inline-block; width:12px; height:12px; border-radius:3px; vertical-align:middle; margin-right:.25rem; }
