/* ==========================================================================
   Skeleton Loading States - Apple-style shimmer animations
   ========================================================================== */

.skeleton {
  background: linear-gradient(
    90deg,
    var(--color-background) 0%,
    var(--color-border-light) 50%,
    var(--color-background) 100%
  );
  background-size: 200% 100%;
  animation: skeleton-shimmer 1.5s ease-in-out infinite;
  border-radius: var(--radius-md);
}

@keyframes skeleton-shimmer {
  0% {
    background-position: 200% 0;
  }
  100% {
    background-position: -200% 0;
  }
}

/* Skeleton Variants */
.skeleton-text {
  height: 16px;
  border-radius: var(--radius-sm);
}

.skeleton-text-sm {
  height: 12px;
}

.skeleton-text-lg {
  height: 24px;
}

.skeleton-heading {
  height: 32px;
  width: 60%;
  border-radius: var(--radius-sm);
}

.skeleton-metric {
  height: 48px;
  width: 120px;
  border-radius: var(--radius-md);
}

.skeleton-avatar {
  width: 40px;
  height: 40px;
  border-radius: var(--radius-full);
}

.skeleton-avatar-lg {
  width: 64px;
  height: 64px;
}

.skeleton-button {
  height: 36px;
  width: 100px;
  border-radius: var(--radius-md);
}

.skeleton-card {
  height: 200px;
  border-radius: var(--radius-xl);
}

.skeleton-chart {
  height: 300px;
  border-radius: var(--radius-xl);
}

.skeleton-table-row {
  height: 48px;
  border-radius: var(--radius-sm);
}

/* Skeleton Card */
.skeleton-metric-card {
  background: var(--color-surface);
  border-radius: var(--radius-xl);
  padding: var(--space-5);
  box-shadow: var(--shadow-card);
}

.skeleton-metric-card .skeleton-icon {
  width: 40px;
  height: 40px;
  border-radius: var(--radius-md);
  margin-bottom: var(--space-4);
}

.skeleton-metric-card .skeleton-value {
  height: 36px;
  width: 80%;
  margin-bottom: var(--space-2);
}

.skeleton-metric-card .skeleton-label {
  height: 14px;
  width: 60%;
}

/* Skeleton Chart Card */
.skeleton-chart-card {
  background: var(--color-surface);
  border-radius: var(--radius-xl);
  padding: var(--space-6);
  box-shadow: var(--shadow-card);
}

.skeleton-chart-card .skeleton-header {
  display: flex;
  justify-content: space-between;
  margin-bottom: var(--space-5);
}

.skeleton-chart-card .skeleton-title {
  height: 24px;
  width: 150px;
}

.skeleton-chart-card .skeleton-controls {
  height: 32px;
  width: 200px;
}

.skeleton-chart-card .skeleton-chart-area {
  height: 250px;
  border-radius: var(--radius-lg);
}

/* Skeleton Table */
.skeleton-table {
  background: var(--color-surface);
  border-radius: var(--radius-xl);
  overflow: hidden;
  box-shadow: var(--shadow-card);
}

.skeleton-table-header {
  display: flex;
  gap: var(--space-4);
  padding: var(--space-4) var(--space-6);
  background: var(--color-background);
}

.skeleton-table-header .skeleton-cell {
  height: 16px;
  flex: 1;
}

.skeleton-table-body {
  padding: var(--space-2) var(--space-6);
}

.skeleton-table-body .skeleton-row {
  display: flex;
  gap: var(--space-4);
  padding: var(--space-4) 0;
  border-bottom: 1px solid var(--color-border-light);
}

.skeleton-table-body .skeleton-row:last-child {
  border-bottom: none;
}

.skeleton-table-body .skeleton-cell {
  height: 20px;
  flex: 1;
}

/* Hide elements while loading */
.loading .hide-while-loading {
  visibility: hidden;
}

/* Fade in when loaded */
.fade-in {
  animation: fadeIn var(--transition-slow) ease-out;
}

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

/* Staggered fade in for lists */
.stagger-fade-in > * {
  animation: fadeIn var(--transition-slow) ease-out both;
}

.stagger-fade-in > *:nth-child(1) { animation-delay: 0ms; }
.stagger-fade-in > *:nth-child(2) { animation-delay: 50ms; }
.stagger-fade-in > *:nth-child(3) { animation-delay: 100ms; }
.stagger-fade-in > *:nth-child(4) { animation-delay: 150ms; }
.stagger-fade-in > *:nth-child(5) { animation-delay: 200ms; }
.stagger-fade-in > *:nth-child(6) { animation-delay: 250ms; }
.stagger-fade-in > *:nth-child(7) { animation-delay: 300ms; }
.stagger-fade-in > *:nth-child(8) { animation-delay: 350ms; }
