.posts-section .post-card {
  scroll-snap-align: start;
  scroll-snap-stop: always;
}

/**
 * Carousel Component - Clean Architecture
 * ========================================
 * 
 * RESPONSABILIDAD:
 * - Estilos de carousel para posts
 * - Arrows de navegación
 * - Dots de navegación
 * - Scroll horizontal suave
 * 
 * REUTILIZABLE: En homepage, blog, categories
 * 
 * Clean Architecture: Component Pattern
 */

/* ==========================================================================
   CAROUSEL CONTAINER
   ========================================================================== */

.posts-section {
  --carousel-arrow-size: 48px;
  --carousel-arrow-offset: 1rem;
  --carousel-track-gutter: var(--spacing-xs);
  position: relative;
  width: 100%;
  padding: var(--spacing-xl) 0 !important;
  background: transparent;
  overflow: visible !important;
}

/* Override grid to flex SOLO para homepage carousel */
/* IMPORTANTE: Solo afecta .posts-section (homepage), NO .blog-posts-section */
.posts-section .posts-grid,
#posts-container.posts-grid {
  display: flex !important;
  justify-content: flex-start;
  align-items: start !important;
  gap: var(--spacing-lg);
  margin: 0 auto !important;
  max-width: 100%;
  min-height: 600px !important;
  padding: 0 var(--spacing-md) !important;
  overflow-x: auto;
  scroll-padding: 0 calc(var(--carousel-track-gutter) + var(--spacing-md));
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  -ms-overflow-style: none;
  padding: 0 !important;
}

/* CLEAN ARCHITECTURE: Track wrapper for ink-overflow (shadows) */
/* This is injected via JS in blog-loader.js but styled here */
.carousel-track {
  display: flex;
  gap: var(--spacing-lg);
  padding: 1.5rem 1.5rem 2rem 1.5rem;
  min-height: max-content;
  width: max-content;
}

.posts-section .posts-grid::-webkit-scrollbar {
  display: none;
}

/* Margin on flex items is removed; rely fully on container padding */
.posts-section .post-card,
#posts-container .post-card {
  margin: 0 !important;
}

/* ELIMINADO: Ancho de cards ahora en cards-unified.css */

/* ==========================================================================
   CAROUSEL ARROWS
   ========================================================================== */

.carousel-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);

  width: 48px;
  height: 48px;

  background: var(--color-background);
  border: 2px solid var(--color-border);
  border-radius: 50%;

  display: flex;
  align-items: center;
  justify-content: center;

  color: var(--color-text-primary);
  font-size: 1.25rem;

  cursor: pointer;
  transition: all 0.3s ease;
  z-index: 10;

  /* Sombra sutil */
  box-shadow: var(--shadow-subtle);
}

.carousel-arrow:hover {
  background: var(--color-primary);
  color: var(--color-text-on-primary);
  border-color: var(--color-primary);
  transform: translateY(-50%) scale(1.1);
  box-shadow: var(--shadow-medium);
}

.carousel-arrow:active {
  transform: translateY(-50%) scale(1);
}

.carousel-arrow.prev {
  left: 0;
}

.carousel-arrow.next {
  right: 0;
}

/* Disabled state */
.carousel-arrow:disabled,
.carousel-arrow.is-disabled {
  opacity: 0;
  visibility: hidden;
  cursor: not-allowed;
  pointer-events: none;
}

/* ==========================================================================
   CAROUSEL NAVIGATION DOTS
   ========================================================================== */

.carousel-nav {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: var(--spacing-sm);
  margin-top: var(--spacing-md);
  padding: 0;
}

.carousel-dot {
  width: 12px;
  height: 12px;
  background: var(--color-border);
  border: 2px solid transparent;
  border-radius: 50%;
  cursor: pointer;
  transition: all 0.3s ease;
}

.carousel-dot:hover {
  background: var(--color-text-secondary);
  transform: scale(1.1);
}

.carousel-dot.active {
  background: var(--color-primary);
  border-color: var(--color-primary);
  transform: scale(1.3);
  box-shadow: 0 0 0 3px rgba(12, 12, 12, 0.1);
}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */

@media (max-width: 1024px) {
  .posts-section {
    --carousel-arrow-size: 40px;
    --carousel-arrow-offset: var(--spacing-sm);
    padding: var(--spacing-lg) var(--spacing-md);
  }

  /* Ancho en cards-unified.css */

  .carousel-arrow {
    width: 40px;
    height: 40px;
    font-size: 1rem;
  }

  .carousel-arrow.prev {
    left: var(--spacing-sm);
  }

  .carousel-arrow.next {
    right: var(--spacing-sm);
  }
}

@media (max-width: 768px) {
  .posts-section {
    --carousel-arrow-size: 36px;
    --carousel-arrow-offset: var(--spacing-xs);
    padding: var(--spacing-md) var(--spacing-sm);
  }

  /* Ancho en cards-unified.css */

  .carousel-arrow {
    width: 36px;
    height: 36px;
    font-size: 0.875rem;
  }

  .carousel-dot {
    width: 10px;
    height: 10px;
  }
}

@media (max-width: 480px) {
  .posts-section {
    --carousel-arrow-size: 0px;
    --carousel-arrow-offset: 0px;
  }

  /* En móvil, ocultar arrows y solo usar dots */
  .carousel-arrow {
    display: none;
  }

  /* Ancho en cards-unified.css */

  .carousel-nav {
    margin-top: var(--spacing-md);
  }
}