/**
 * Carousel Component Styles
 */

.carousel-container {
  position: relative;
  padding: var(--space-2) 0;
}

.carousel {
  position: relative;
  overflow: hidden;
  padding: var(--space-2) 0;
  /* Show 1 card + 30% on each side = 62.5% of container width per card */
  /* This means the main card takes 62.5% and we see 18.75% of cards on each side */
  width: 100%;
  max-width: 100%;
}

.carousel-track {
  display: flex;
  gap: var(--space-2);
  transition: transform 0.5s ease-in-out;
  padding: 0 18.75%; /* 30% peek divided by 2 sides, adjusted for centering */
}

.carousel-slide {
  flex: 0 0 93.75%; /* 50% wider than 62.5% */
  min-width: 280px;
}

.carousel-loading {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 400px;
}

.carousel-btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: white;
  border: none;
  border-radius: 50%;
  box-shadow: var(--shadow-lg);
  cursor: pointer;
  transition: all var(--transition-base);
  z-index: 20; /* Increased to be above mask */
  color: var(--color-dark);
}

.carousel-btn:hover {
  background-color: var(--color-primary);
  color: white;
  transform: translateY(-50%) scale(1.1);
}

.carousel-btn:disabled {
  opacity: 0.3;
  cursor: not-allowed;
}

.carousel-btn:disabled:hover {
  background-color: white;
  color: var(--color-dark);
  transform: translateY(-50%);
}

.carousel-prev {
  left: 8px;
}

.carousel-next {
  right: 8px;
}

/* Carousel Dots */
.carousel-dots {
  display: flex;
  justify-content: center;
  gap: var(--space-1);
  margin-top: var(--space-3);
}

.carousel-dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background-color: var(--color-border);
  border: none;
  cursor: pointer;
  transition: all var(--transition-base);
}

.carousel-dot:hover {
  background-color: var(--color-primary-light);
}

.carousel-dot.active {
  background-color: var(--color-primary);
  width: 32px;
  border-radius: var(--radius-full);
}

/* Auto-scroll animation */
.carousel-track.auto-scroll {
  animation: scroll 30s linear infinite;
}

@keyframes scroll {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(-50%);
  }
}

/* Responsive */
/* Medium screens - better spacing */
@media (max-width: 1366px) {
  .carousel-container {
    padding: var(--space-2) var(--space-3);
  }

  .carousel-track {
    padding: 0 10%;
  }

  .carousel-slide {
    flex: 0 0 80%;
  }

  .carousel-prev {
    left: var(--space-2);
  }

  .carousel-next {
    right: var(--space-2);
  }
}

@media (max-width: 1024px) {
  .carousel-slide {
    flex: 0 0 calc(50% - var(--space-2));
  }

  .carousel-prev {
    left: -12px;
  }

  .carousel-next {
    right: -12px;
  }
}

@media (max-width: 768px) {
  .carousel-container {
    width: 100vw;
    position: relative;
    left: 50%;
    right: 50%;
    margin-left: -50vw;
    margin-right: -50vw;
  }

  .carousel {
    width: 100%;
    padding: var(--space-2) 0;
    overflow: visible;
  }

  .carousel-slide {
    flex: 0 0 calc(100vw - 80px);
    min-width: 280px;
    max-width: 500px;
  }

  .carousel-track {
    gap: var(--space-2);
    padding: 0;
    justify-content: center;
  }

  /* Center the active card */
  .carousel-track::before,
  .carousel-track::after {
    content: '';
    flex: 0 0 40px;
  }

  .carousel-btn {
    display: none;
  }
}

/* Swipe indicator for mobile */
@media (max-width: 768px) {
  .carousel::after {
    content: '← Swipe →';
    position: absolute;
    bottom: var(--space-2);
    left: 50%;
    transform: translateX(-50%);
    font-size: var(--text-sm);
    color: var(--color-text-lighter);
    opacity: 0.7;
    animation: fadeInOut 3s ease-in-out infinite;
  }
}

@keyframes fadeInOut {
  0%, 100% {
    opacity: 0.3;
  }
  50% {
    opacity: 0.7;
  }
}
