/* ══════════════════════════════════════
   v2.1 UX Enhancements
══════════════════════════════════════ */

/* ── Appointment status colors ── */
.appt-status-scheduled { color: var(--primary); }
.appt-status-completed { color: var(--success); }
.appt-status-cancelled { color: var(--text-muted); }

/* ── Enhanced patient card hover ── */
.patient-card {
  transition: background var(--ease), transform var(--ease), box-shadow var(--ease);
  cursor: pointer;
}
.patient-card:hover {
  background: var(--primary-50);
  box-shadow: var(--card-shadow-hover);
}
.patient-card:active { transform: scale(.99); }

/* ── Dashboard greeting animation ── */
.dashboard-greeting-wrap {
  animation: fadeInUp 300ms var(--anim-bounce, ease) both;
}

/* ── Quick action buttons ── */
.quick-action-btn {
  transition: transform var(--ease-spring), box-shadow var(--ease);
}
.quick-action-btn:active {
  transform: scale(.95);
}

/* ── Stat card ── */
.stat-card {
  cursor: default;
  position: relative;
  overflow: hidden;
}
.stat-card::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(255,255,255,0) 0%, rgba(255,255,255,.04) 100%);
  pointer-events: none;
}

/* ── Visit card hover ── */
.visit-card {
  transition: box-shadow var(--ease), transform var(--ease);
  cursor: pointer;
}
.visit-card:hover {
  box-shadow: var(--card-shadow-hover);
}
.visit-card:active { transform: scale(.99); }

/* ── Search results dropdown ── */
.search-result-item {
  cursor: pointer;
  transition: background var(--ease);
  padding: 10px 14px;
  display: flex;
  align-items: center;
  gap: 10px;
  border-bottom: 1px solid var(--border);
}
.search-result-item:last-child { border-bottom: none; }
.search-result-item:hover { background: var(--primary-50); }

/* ── Calendar day hover ── */
.cal-day:hover { background: var(--primary-50) !important; }

/* ── Alert/pending banner ── */
[data-action="payments"] {
  transition: background var(--ease);
}
[data-action="payments"]:hover { background: var(--warning-bg) !important; filter: brightness(.97); }

/* ── Offline banner ── */
.offline-banner {
  position: fixed;
  bottom: calc(var(--bottom-nav-height) + 8px);
  left: 50%;
  transform: translateX(-50%) translateY(100px);
  background: var(--gray-800);
  color: #fff;
  padding: 10px 20px;
  border-radius: var(--radius-full);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  z-index: var(--z-toast);
  transition: transform 300ms var(--ease-spring);
  white-space: nowrap;
  box-shadow: var(--shadow-lg);
}
.offline-banner.show {
  transform: translateX(-50%) translateY(0);
}

/* ── Skeleton improved ── */
.skeleton {
  background: linear-gradient(90deg, var(--gray-100) 25%, var(--gray-200) 50%, var(--gray-100) 75%);
  background-size: 200% 100%;
  animation: shimmer 1.4s ease infinite;
  border-radius: var(--radius-sm);
}
@keyframes shimmer {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
[data-theme="dark"] .skeleton {
  background: linear-gradient(90deg, var(--gray-800) 25%, var(--gray-700) 50%, var(--gray-800) 75%);
  background-size: 200% 100%;
  animation: shimmer 1.4s ease infinite;
}

/* ── Dash visit row hover ── */
.dash-visit-row {
  cursor: pointer;
  transition: background var(--ease);
}
.dash-visit-row:hover { background: var(--primary-50); }

/* ── Filter chips scroll indicator ── */
#sv-chips {
  -webkit-overflow-scrolling: touch;
}
#sv-chips::after {
  content: '';
  flex-shrink: 0;
  width: 16px;
}

/* ── Form hint text ── */
.form-hint {
  display: block;
  font-size: 11px;
  color: var(--text-muted);
  margin-top: 4px;
}
