/* ==========================================================================
   Home Scroll Carousel — OpenCreator-style infinite scrolling rows
   Odd rows scroll left, even rows scroll right.
   Uses original post-item cards via loop/item template.
   ========================================================================== */

/* ---------- Section ---------- */
.bn-scroll-section {
  overflow: hidden;
  padding: 0 0 var(--bn-space-sm, 12px);
  /* Wave 7.3.17: scroll section is a self-contained module — its visuals
   * never leak outside (mask-image clips edges, cards are flex children).
   * `contain: layout paint` lets the browser skip both layout work and
   * paint invalidation outside the section when cards animate, matching
   * the gallery-grid pattern that's been stable since Wave 2.2. */
  contain: layout paint;
}

/* The header uses our shared rhythm container so width and padding match
   the other widgets. We keep the explicit max-width as a safety net for
   pages where home-rhythm.css hasn't loaded yet. */
.bn-scroll-section .bn-section-header {
  max-width: 1280px;
  margin: 0 auto;
  padding-left: clamp(16px, 4vw, 40px);
  padding-right: clamp(16px, 4vw, 40px);
}

/* ---------- Row ---------- */
.bn-scroll-row {
  overflow: hidden;
  margin-bottom: var(--bn-space-md, 16px);
  position: relative;

  /* Mask-image fade: lets the underlying canvas (any color, light or
     dark) show through cleanly. Replaces the old gradient pseudo-elements
     which hard-coded a background color and broke when the page bg
     varied (e.g. promo banner, theme switch transition). */
  -webkit-mask-image: linear-gradient(
    90deg,
    transparent 0,
    #000 5%,
    #000 95%,
    transparent 100%
  );
          mask-image: linear-gradient(
    90deg,
    transparent 0,
    #000 5%,
    #000 95%,
    transparent 100%
  );
}

/* ---------- Track ---------- */
.bn-scroll-track {
  display: flex;
  gap: var(--bn-space-lg, 24px);
  width: max-content;
  will-change: transform;
}

/* Left scroll (odd rows) */
.bn-scroll-left .bn-scroll-track {
  animation: bn-scroll-left var(--bn-scroll-duration, 40s) linear infinite;
}

/* Right scroll (even rows) */
.bn-scroll-right .bn-scroll-track {
  animation: bn-scroll-right var(--bn-scroll-duration, 40s) linear infinite;
}

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

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

/* Pause on hover */
.bn-scroll-row:hover .bn-scroll-track {
  animation-play-state: paused;
}

/* ---------- Card Wrapper (holds original loop/item output) ---------- */
.bn-scroll-card-wrap {
  flex: 0 0 300px;
  width: 300px;
}

/* Override Bootstrap .col inside card wrapper */
.bn-scroll-card-wrap > .col {
  width: 100%;
  max-width: 100%;
  flex: none;
  padding: 0;
}

/* Ensure card fills the wrapper */
.bn-scroll-card-wrap .post-item {
  height: 100%;
}

/* ---------- Responsive ---------- */

@media (max-width: 767.98px) {
  .bn-scroll-card-wrap {
    flex: 0 0 240px;
    width: 240px;
  }
  .bn-scroll-track {
    gap: var(--bn-space-md, 16px);
  }
  .bn-scroll-row {
    margin-bottom: var(--bn-space-sm, 12px);
    /* Tighter mask edge on small screens so we don't lose card area */
    -webkit-mask-image: linear-gradient(
      90deg,
      transparent 0,
      #000 3%,
      #000 97%,
      transparent 100%
    );
            mask-image: linear-gradient(
      90deg,
      transparent 0,
      #000 3%,
      #000 97%,
      transparent 100%
    );
  }
}

/* ---------- Reduced-motion fallback ----------
   Stop the marquee animation entirely; the row becomes a horizontally
   scrollable strip the user controls themselves. */
@media (prefers-reduced-motion: reduce) {
  .bn-scroll-left .bn-scroll-track,
  .bn-scroll-right .bn-scroll-track {
    animation: none;
    transform: none;
  }
  .bn-scroll-row {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .bn-scroll-row::-webkit-scrollbar {
    display: none;
  }
}

@media (max-width: 575.98px) {
  .bn-scroll-card-wrap {
    flex: 0 0 200px;
    width: 200px;
  }
}

/* ---------- Safeguard: static grids must never scroll ---------- */
.bn-section .posts-warp {
  animation: none !important;
  transform: none !important;
}
