/**
 * Carrossel horizontal contínuo da seção "Softwares"
 * Mantém o tamanho dos cards da grade original; a rolagem substitui
 * a necessidade de encolher os cards para caber um 5º (ou mais) produto.
 * Pausa ao passar o mouse (:hover) ou focar um card via teclado (:focus-within).
 */

.sw-marquee {
  overflow: hidden;
  position: relative;
  -webkit-mask-image: linear-gradient(to right, transparent, #000 3%, #000 97%, transparent);
  mask-image: linear-gradient(to right, transparent, #000 3%, #000 97%, transparent);
}

.sw-track {
  display: flex;
  gap: 1.5rem;
  width: max-content;
  animation: sw-scroll 48s linear infinite;
}

.sw-marquee:hover .sw-track,
.sw-marquee:focus-within .sw-track {
  animation-play-state: paused;
}

.sw-card {
  flex: 0 0 auto;
  width: 300px;
}

@media (min-width: 1024px) {
  .sw-card {
    width: 320px;
  }
}

/* O deslocamento é de -50%: o conjunto de cards é renderizado 2x,
   então na metade do trajeto a 2ª cópia está exatamente onde a 1ª começou. */
@keyframes sw-scroll {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

/* Em telas pequenas, empilha normalmente e desliga a animação */
@media (max-width: 767.98px) {
  .sw-marquee {
    overflow: visible;
    -webkit-mask-image: none;
    mask-image: none;
  }
  .sw-track {
    display: flex;
    flex-direction: column;
    width: auto;
    animation: none !important;
    transform: none !important;
  }
  .sw-card {
    width: 100%;
  }
  /* esconde a cópia duplicada usada só para o loop do carrossel */
  .sw-card[aria-hidden="true"] {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .sw-track {
    animation: none !important;
  }
}
