/* Skeleton loaders */
.nv-skel {
  position: relative;
  overflow: hidden;
  background: #e8eef3;
  border-radius: 12px;
}

.nv-skel::after {
  content: "";
  position: absolute;
  inset: 0;
  transform: translateX(-100%);
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.55), transparent);
  animation: nv-skel 1.2s ease-in-out infinite;
}

@keyframes nv-skel {
  100% { transform: translateX(100%); }
}

.nv-skel--text { height: 14px; width: 70%; margin: 8px 0; }
.nv-skel--title { height: 22px; width: 55%; margin: 10px 0; }
.nv-skel--btn { height: 48px; border-radius: 999px; }
.nv-skel--card { height: 280px; border-radius: 24px; }
.nv-skel--avatar { width: 36px; height: 36px; border-radius: 50%; }
.nv-skel--media { aspect-ratio: 4/3; border-radius: 16px 16px 0 0; }
.nv-skel--field { height: 52px; border-radius: 12px; margin-bottom: 12px; }

.nv-booking.is-skeleton .nv-booking__body-real { display: none; }
.nv-booking:not(.is-skeleton) .nv-booking__skeleton { display: none; }

.nv-courses.is-skeleton .nv-course-card--live { display: none; }
.nv-courses:not(.is-skeleton) .nv-course-card--skel { display: none; }

.nv-upcoming.is-skeleton .nv-upcoming__live { display: none; }
.nv-upcoming:not(.is-skeleton) .nv-upcoming__skel { display: none; }

@media (prefers-reduced-motion: reduce) {
  .nv-skel::after { animation: none; }
}
