/* ═══════════════════════════════════════════════
   Campus Date Picker — shared across PA module
   ═══════════════════════════════════════════════ */

/* ── Input wrapper ──────────────────────────────── */
.fp-date-wrap { position: relative; }

.fp-date-wrap .dp-input {
  padding-right: 68px !important;
  cursor: pointer !important;
  background: linear-gradient(135deg, #fafaff 0%, #fff 60%) !important;
  border: 1.5px solid #e0e7ff !important;
  border-radius: 10px !important;
  caret-color: transparent;
  color: #374151;
  font-weight: 500;
  transition: border-color .15s, box-shadow .15s, background .15s !important;
}
.fp-date-wrap .dp-input:hover,
.fp-date-wrap .dp-input:focus {
  border-color: #6366f1 !important;
  box-shadow: 0 0 0 3px rgba(99,102,241,.1) !important;
  background: #fff !important;
  outline: none;
}
.fp-date-wrap .dp-input::placeholder { color: #a5b4fc; font-weight: 400; }

/* Small variant */
.fp-date-wrap.fp-sm .dp-input {
  font-size: .8125rem;
  padding-top: .25rem !important;
  padding-bottom: .25rem !important;
  height: calc(1.5em + .5rem + 4px);
}

/* Validation error */
.form-group.has-error .dp-input,
.dp-input.is-invalid {
  border-color: #dc3545 !important;
  box-shadow: 0 0 0 3px rgba(220,53,69,.1) !important;
}

/* ── Icons ──────────────────────────────────────── */
.fp-cal-icon {
  position: absolute; right: 11px; top: 50%;
  transform: translateY(-50%);
  color: #6366f1; pointer-events: none;
  font-size: .9rem; z-index: 2;
  transition: color .14s;
}
.fp-date-wrap:hover .fp-cal-icon { color: #4f46e5; }

.fp-clear-icon {
  position: absolute; right: 34px; top: 50%;
  transform: translateY(-50%);
  width: 24px; height: 24px;
  border: 1px solid rgba(220, 38, 38, .18);
  border-radius: 8px;
  background: #fff7f7;
  color: #dc2626;
  cursor: pointer;
  font-size: 17px; line-height: 1;
  padding: 0;
  z-index: 3; display: flex; align-items: center; justify-content: center;
  box-shadow: 0 2px 7px rgba(220, 38, 38, .08);
  transition: background .14s, border-color .14s, box-shadow .14s, color .14s, transform .12s;
}
.fp-clear-icon i {
  display: block;
  line-height: 1;
}
.fp-clear-icon:hover,
.fp-clear-icon:focus-visible {
  background: #fee2e2;
  border-color: rgba(220, 38, 38, .38);
  color: #b91c1c;
  box-shadow: 0 4px 12px rgba(220, 38, 38, .16);
  outline: none;
  transform: translateY(-50%);
}

.fp-date-wrap.fp-sm .fp-cal-icon { font-size: .72rem; right: 9px; }
.fp-date-wrap.fp-sm .fp-clear-icon { right: 24px; width: 20px; height: 20px; border-radius: 7px; font-size: 14px; }
.fp-date-wrap.fp-sm .dp-input { padding-right: 54px !important; }

/* ── Popup card ─────────────────────────────────── */
.cdp-cell:disabled, .cdp-btn-nav:disabled { opacity: .28; cursor: not-allowed; box-shadow: none; }
.cdp-cell.cdp-booking-blocked { color: #b91c1c; background: #fff1f2; text-decoration: line-through; cursor: not-allowed; }
html[data-theme="dark"] .cdp-cell.cdp-booking-blocked { color: #fca5a5; background: #402235; }
.booking-availability-error { display: block; margin-top: 6px; color: #dc2626; font-size: .8rem; line-height: 1.5; }
.cdp-popup {
  position: fixed; z-index: 99999; width: 308px;
  display: flex; flex-direction: column;
  max-width: calc(100vw - 24px);
  max-height: calc(100vh - 24px);
  max-height: calc(100dvh - 24px);
  background: #fff; border-radius: 20px; overflow: hidden;
  box-shadow: 0 24px 64px rgba(79,70,229,.22), 0 4px 20px rgba(0,0,0,.08);
  opacity: 0; transform: translateY(-10px) scale(.95);
  pointer-events: none;
  transition: opacity .2s ease, transform .2s ease;
}
.cdp-popup.cdp-open { opacity: 1; transform: none; pointer-events: auto; }

/* ── Header / Nav row ───────────────────────────── */
.cdp-nav-row {
  position: relative; overflow: hidden;
  display: flex; align-items: center;
  background: linear-gradient(135deg, #3730a3 0%, #4f46e5 45%, #7c3aed 100%);
  padding: 16px 10px 14px;
}

/* decorative blobs */
.cdp-nav-row::before {
  content: ''; position: absolute;
  width: 110px; height: 110px; border-radius: 50%;
  background: rgba(255,255,255,.07);
  top: -44px; right: -18px; pointer-events: none;
}
.cdp-nav-row::after {
  content: ''; position: absolute;
  width: 70px; height: 70px; border-radius: 50%;
  background: rgba(255,255,255,.06);
  bottom: -28px; left: 24px; pointer-events: none;
}

.cdp-title {
  flex: 1; text-align: center;
  display: flex; align-items: center; justify-content: center;
  gap: 6px; position: relative; z-index: 1;
}

.cdp-month-lbl {
  color: #fff; font-weight: 800; font-size: 1.05rem;
  letter-spacing: .01em; cursor: pointer;
  padding: 3px 10px; border-radius: 10px;
  transition: background .14s;
}
.cdp-month-lbl:hover { background: rgba(255,255,255,.18); }

.cdp-yr-sep {
  color: rgba(255,255,255,.45); font-size: .85rem; font-weight: 400;
  pointer-events: none; user-select: none;
}

.cdp-year-lbl {
  color: rgba(255,255,255,.85); font-weight: 700; font-size: .82rem;
  cursor: pointer;
  background: rgba(255,255,255,.15);
  padding: 3px 10px; border-radius: 20px;
  border: 1px solid rgba(255,255,255,.2);
  transition: background .14s, color .14s;
}
.cdp-year-lbl:hover {
  background: rgba(255,255,255,.28);
  color: #fff;
}

.cdp-btn-nav {
  position: relative; z-index: 1;
  width: 32px; height: 32px; border: none;
  background: rgba(255,255,255,.15);
  backdrop-filter: blur(4px);
  color: #fff; border-radius: 10px; cursor: pointer;
  font-size: .8rem; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid rgba(255,255,255,.2);
  transition: background .14s, transform .12s;
}
.cdp-btn-nav:hover {
  background: rgba(255,255,255,.3);
  transform: scale(1.08);
}
.cdp-btn-nav:active { transform: scale(.94); }

/* ── Calendar body ──────────────────────────────── */
.cdp-body { padding: 12px 10px 6px; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
.cdp-nav-row, .cdp-footer { flex-shrink: 0; }

.cdp-weekdays { display: grid; grid-template-columns: repeat(7,1fr); margin-bottom: 4px; }
.cdp-wday {
  text-align: center; font-size: .6rem; font-weight: 800;
  color: #a5b4fc; padding: 4px 0;
  text-transform: uppercase; letter-spacing: .06em;
}
.cdp-wday:first-child, .cdp-wday:last-child { color: #fca5a5; }

.cdp-days-grid   { display: grid; grid-template-columns: repeat(7,1fr); gap: 2px; }
.cdp-months-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 6px; padding: 8px 0; }
.cdp-years-grid  { display: grid; grid-template-columns: repeat(4,1fr); gap: 6px; padding: 8px 0; }

.cdp-cell {
  border: 0; background: transparent; padding: 0; width: 100%; font-family: inherit;
  text-align: center; cursor: pointer; font-size: .82rem; font-weight: 500;
  color: #374151;
  transition: background .12s, color .12s, box-shadow .12s, transform .1s;
  user-select: none; -webkit-user-select: none;
}
.cdp-day   { height: 36px; display: flex; align-items: center; justify-content: center; border-radius: 50%; }
.cdp-month,.cdp-year { padding: 9px 4px; border-radius: 10px; font-size: .79rem; }

.cdp-weekend             { color: #ef4444; }
.cdp-other               { color: #c4b5fd !important; }
.cdp-other.cdp-weekend   { color: #fca5a5 !important; }
.cdp-cell:hover          { background: #eef2ff !important; color: #4338ca !important; }
.cdp-cell:active         { transform: scale(.82); }
.cdp-today               { background: #eef2ff; color: #4f46e5 !important; font-weight: 700; box-shadow: inset 0 0 0 2px #6366f1; }
.cdp-selected            { background: linear-gradient(135deg,#4f46e5,#7c3aed) !important; color: #fff !important; font-weight: 700 !important; box-shadow: 0 4px 12px rgba(99,102,241,.45) !important; }
.cdp-selected.cdp-today  { box-shadow: 0 4px 12px rgba(99,102,241,.45) !important; }
.cdp-day.cdp-booking-blocked, .cdp-day.cdp-booking-blocked:hover { color: #b91c1c !important; background: #fff1f2 !important; box-shadow: none !important; }
.cdp-cell:disabled:hover { background: transparent !important; box-shadow: none !important; }
html[data-theme="dark"] .cdp-day.cdp-booking-blocked, html[data-theme="dark"] .cdp-day.cdp-booking-blocked:hover { color: #fca5a5 !important; background: #402235 !important; }

/* ── Footer ─────────────────────────────────────── */
.cdp-footer {
  display: flex; gap: 6px;
  padding: 8px 10px 11px;
  border-top: 1px solid #ede9fe;
}
.cdp-btn-today, .cdp-btn-clear, .cdp-btn-ok {
  flex: 1; padding: 7px; border-radius: 10px;
  font-size: .78rem; font-weight: 600;
  cursor: pointer; transition: all .14s; font-family: inherit;
}
.cdp-btn-today, .cdp-btn-ok {
  background: linear-gradient(135deg,#4f46e5,#7c3aed);
  color: #fff; border: none;
  box-shadow: 0 2px 8px rgba(99,102,241,.35);
}
.cdp-btn-today:hover, .cdp-btn-ok:hover {
  box-shadow: 0 4px 14px rgba(99,102,241,.5);
  transform: translateY(-1px);
}
.cdp-btn-clear {
  background: #fff; color: #6b7280;
  border: 1.5px solid #e5e7eb;
}
.cdp-btn-clear:hover {
  background: #fef2f2; border-color: #ef4444; color: #ef4444;
}
