/**
 * Neubas — Showcase & Video Shop
 *
 * Estilos das seções novas da home: 'showcase' e 'videoshop'.
 *
 * O deslize horizontal é feito com scroll-snap do CSS, e não com transform.
 * Assim o layout não depende de JS para funcionar: se o script falhar, o
 * carrossel ainda rola com o dedo e o conteúdo fica legível. O JS cuida
 * apenas dos controles (setas, bolinhas, play/pause).
 *
 * Não há biblioteca externa aqui de propósito: Swiper e Slick já vem presos
 * ao HTML de origem, que tem CSS utilitário próprio (Tailwind). Portar as
 * classes dela traria utilitários que não existem neste tema.
 */

/* ------------------------------------------------------------------
 * 1. TOKENS
 * ------------------------------------------------------------------ */
.neubas-showcase,
.neubas-videoshop {
  --nb-r: 20px;
  --nb-pad: clamp(16px, 4vw, 64px);
  --nb-max: 1440px;
  --nb-line: var(--zinc-200);
}

/* ------------------------------------------------------------------
 * 0. PROPORÇÕES
 *
 * São duas, e não por acaso: o banner do Showcase é 4:5 (452x563 na
 * referência) e os cartões de live shop são 9:16, que é a proporção de
 * tela de celular em que esse material é gravado.
 *
 * Estão em custom property de propósito: se o material mudar de formato,
 * ajusta-se aqui e nowhere mais. O 4:5 fica só no Showcase porque é a
 * única caixa com texto sobreposto por baixo.
 * ------------------------------------------------------------------ */
.neubas-showcase {
  --nb-showcase-ratio: 4 / 5;
}

/* Todos os cartões verticais de vídeo. */
.nb-vs-cards,
.nb-vs-tutorial,
.nb-vs-ugc {
  --nb-video-ratio: 9 / 16;
}

/* Watch é o único em paisagem: é uma vitrine, não um card de feed. */
.nb-vs-watch {
  --nb-watch-ratio: 16 / 9;
}

.nb-vs-rail,
.nb-showcase-rail,
.nb-vs-tutorial-rail,
.nb-vs-ugc-rail {
  display: flex;
  gap: 14px;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch;
  overflow-x: auto;
  scrollbar-width: none;
  padding: 2px;
}

.nb-vs-rail::-webkit-scrollbar,
.nb-showcase-rail::-webkit-scrollbar,
.nb-vs-tutorial-rail::-webkit-scrollbar,
.nb-vs-ugc-rail::-webkit-scrollbar {
  display: none;
}

.nb-vs-rail > *,
.nb-showcase-rail > *,
.nb-vs-tutorial-rail > *,
.nb-vs-ugc-rail > * {
  scroll-snap-align: start;
  flex: 0 0 auto;
}

/* Botão de play sobre o vídeo.
 *
 * Precisa ser clicável: o cartão é um <a> e, sem parar a propagação, o
 * clique iria para o produto antes de o vídeo tocar. Por isso pointer-events
 * fica ligado e quem intercepta é o JS. */
.nb-vs-play {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: rgba(0, 0, 0, .55);
  color: #fff;
  cursor: pointer;
  z-index: 3;
  opacity: 0;
  transition: opacity .2s ease, transform .2s ease, background .2s ease;
}

.nb-vs-card-stage:hover .nb-vs-play,
.nb-vs-ugc-stage:hover .nb-vs-play,
.nb-vs-tutorial-media:hover .nb-vs-play,
.nb-vs-watch-media:hover .nb-vs-play,
.nb-vs-play:focus-visible {
  opacity: 1;
}

.nb-vs-play:hover {
  background: rgba(0, 0, 0, .75);
}

.nb-vs-play .nb-icon-play,
.nb-vs-play .nb-icon-pause {
  display: block;
}

/* Enquanto toca, o botão vira pausa e fica sempre visível. */
[data-nb-player][data-playing] .nb-vs-play {
  opacity: 1;
  background: rgba(0, 0, 0, .72);
}

/* Arraste com o mouse: sem este cursor o usuário não descobre que dá
 * para arrastar, porque o trilho parece uma faixa estática. */
.nb-vs-rail,
.nb-showcase-rail,
.nb-vs-tutorial-rail,
.nb-vs-ugc-rail {
  cursor: grab;
  touch-action: pan-y;
}

.nb-vs-rail.is-grabbing,
.nb-showcase-rail.is-grabbing,
.nb-vs-tutorial-rail.is-grabbing,
.nb-vs-ugc-rail.is-grabbing {
  cursor: grabbing;
}

/* Arrastando, não deixa o navegador selecionar a imagem junto. */
.nb-vs-rail.is-dragging,
.nb-showcase-rail.is-dragging,
.nb-vs-tutorial-rail.is-dragging,
.nb-vs-ugc-rail.is-dragging {
  cursor: grabbing;
  user-select: none;
  scroll-snap-type: none;
}

/* ------------------------------------------------------------------
 * 1b. PAINEL DE PRODUTOS DENTRO DO CARTÃO (live shop)
 *
 * Fica dentro do palco do vídeo, cobrindo a parte de baixo, e sobe ao
 * clicar na sacola. Cada linha é um <a> próprio: funciona sem JS.
 * ------------------------------------------------------------------ */
.nb-vs-plist-wrap {
  position: absolute;
  inset: auto 0 0 0;
  z-index: 4;
  padding: 8px;
  pointer-events: none;
}

.nb-vs-plist-wrap > * {
  pointer-events: auto;
}

.nb-vs-plist-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  width: 100%;
  padding: 9px 12px;
  border: 0;
  border-radius: 12px;
  background: rgba(0, 0, 0, .72);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  text-align: left;
  backdrop-filter: blur(4px);
}

.nb-vs-plist-toggle:hover {
  background: rgba(0, 0, 0, .85);
}

.nb-vs-plist {
  position: absolute;
  inset: auto 0 0 0;
  display: none;
  max-height: 72%;
  overflow-y: auto;
  background: rgba(0, 0, 0, .82);
  border-radius: 12px;
  backdrop-filter: blur(8px);
  -webkit-overflow-scrolling: touch;
}

.nb-vs-plist[data-open] {
  display: block;
}

.nb-vs-plist-inner {
  padding: 12px 12px 14px;
}

.nb-vs-plist-head {
  margin: 0 0 8px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .75);
}

.nb-vs-plist-items {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.nb-vs-plist-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 6px;
  border-radius: 10px;
  background: rgba(255, 255, 255, .10);
  text-decoration: none;
  color: #fff;
}

.nb-vs-plist-row:hover {
  background: rgba(255, 255, 255, .20);
}

.nb-vs-plist-row img {
  width: 40px;
  height: 40px;
  flex: 0 0 auto;
  border-radius: 8px;
  object-fit: cover;
  background: rgba(255, 255, 255, .15);
}

.nb-vs-plist-text {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.nb-vs-plist-name {
  font-size: 12px;
  font-weight: 500;
  line-height: 1.25;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.nb-vs-plist-price {
  font-size: 12px;
  font-weight: 700;
  color: #fff;
}

.nb-vs-plist-price del {
  font-weight: 400;
  opacity: .6;
  margin-right: 6px;
}

.nb-vs-plist-close {
  margin-top: 10px;
  width: 100%;
  padding: 8px;
  border: 0;
  border-radius: 10px;
  background: rgba(255, 255, 255, .16);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}

/* ------------------------------------------------------------------
 * 2. SHOWCASE — banner grande
 * ------------------------------------------------------------------ */
.neubas-showcase {
  background: var(--background);
  padding: 30px 0 12px;
}

.nb-showcase-rail {
  gap: 18px;
  padding-inline: var(--nb-pad);
  scroll-padding-left: var(--nb-pad);
}

.nb-showcase-slide {
  width: min(452px, 82vw);
}

.nb-showcase-link {
  position: relative;
  display: block;
  aspect-ratio: var(--nb-showcase-ratio, 4 / 5);
  border-radius: var(--nb-r);
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  isolation: isolate;
  background: var(--zinc-100);
}

.nb-showcase-media,
.nb-showcase-video,
.nb-showcase-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Escurece só embaixo, para o texto ficar legível sem apagar a foto. */
.nb-showcase-link::after {
  content: '';
  position: absolute;
  inset: auto 0 0 0;
  height: 62%;
  background: linear-gradient(to top, rgba(0, 0, 0, .78), rgba(0, 0, 0, 0));
  pointer-events: none;
  z-index: 1;
}

.nb-showcase-copy {
  position: absolute;
  inset: auto 0 0 0;
  z-index: 2;
  padding: 0 28px 34px;
  text-align: center;
  color: #fff;
}

.nb-showcase-eyebrow {
  display: block;
  font-size: 14px;
  font-weight: 500;
  opacity: .85;
  margin-bottom: 2px;
}

.nb-showcase-title {
  font-size: clamp(20px, 2.4vw, 28px);
  font-weight: 500;
  line-height: 1.12;
  margin: 0 0 2px;
  letter-spacing: -.01em;
}

.nb-showcase-sub {
  margin: 2px 0 0;
  font-size: 14px;
  font-weight: 500;
  opacity: .8;
}

.nb-showcase-product {
  margin-top: 14px;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 7px 8px 7px 14px;
  background: #fff;
  color: var(--neubas-black);
  border-radius: 999px;
  font-size: 13px;
  font-weight: 600;
}

.nb-showcase-product-price {
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
}

.nb-showcase-cta {
  padding: 5px 12px;
  background: var(--neubas-black);
  color: #fff;
  border-radius: 999px;
  font-weight: 600;
}

/* Barra inferior: setas, bolinhas e pausa */
.nb-showcase-bar {
  max-width: var(--nb-max);
  margin: 12px auto 0;
  padding-inline: var(--nb-pad);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.nb-showcase-arrows,
.nb-showcase-tools {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 9px 10px;
  border: 1px solid var(--nb-line);
  border-radius: 999px;
  background: #fff;
  color: var(--zinc-600);
}

.nb-showcase-arrow,
.nb-showcase-pause,
.nb-vs-arrow,
.nb-vs-tut-arrow,
.nb-vs-watch-arrow {
  display: grid;
  place-items: center;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  cursor: pointer;
  line-height: 0;
}

.nb-showcase-dots,
.nb-vs-dots {
  display: flex;
  align-items: center;
  gap: 7px;
}

.nb-showcase-dot,
.nb-vs-dot {
  width: 7px;
  height: 7px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: var(--zinc-300);
  cursor: pointer;
  transition: transform .2s ease, background .2s ease;
}

.nb-showcase-dot.is-active,
.nb-vs-dot.is-active {
  background: var(--neubas-black);
  transform: scale(1.25);
}

.nb-showcase-count {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 500;
  font-variant-numeric: tabular-nums;
}

.nb-showcase-count i {
  width: 2px;
  height: 10px;
  background: currentColor;
}

/* Os dois ícones de play/pause ficam no mesmo botão; o JS alterna o display. */
.nb-icon-pause,
.nb-icon-play {
  display: block;
}

.nb-showcase-pause[data-play="true"] .nb-icon-pause {
  display: none;
}

.nb-showcase-pause[data-play="true"] .nb-icon-play {
  display: block;
}

/* ------------------------------------------------------------------
 * 3. VIDEOSHOP — cabeçalho comum
 * ------------------------------------------------------------------ */
.neubas-videoshop {
  padding: clamp(40px, 5vw, 56px) 0;
}

.nb-vs-inner {
  max-width: var(--nb-max);
  margin: 0 auto;
  padding-inline: var(--nb-pad);
}

.nb-vs-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 18px;
}

.nb-vs-badge {
  display: inline-block;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--zinc-500);
  margin-bottom: 6px;
}

.nb-vs-title {
  font-size: clamp(20px, 2.2vw, 24px);
  font-weight: 500;
  margin: 0;
  letter-spacing: -.01em;
}

.nb-vs-head-simple {
  font-size: clamp(20px, 2.2vw, 24px);
  font-weight: 500;
  margin: 0 0 18px;
}

.nb-vs-head-center {
  text-align: center;
}

.nb-vs-arrows {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px;
  border: 1px solid var(--nb-line);
  border-radius: 999px;
  background: #fff;
  color: var(--zinc-600);
  flex: 0 0 auto;
}

/* Preço e desconto compartilhados */
.nb-off {
  color: var(--neubas-red);
  font-weight: 700;
  margin-right: 6px;
}

.nb-price {
  font-weight: 700;
  white-space: nowrap;
}

/* ------------------------------------------------------------------
 * 4. VIDEOSHOP / cards
 * ------------------------------------------------------------------ */
.nb-vs-cards {
  background: var(--zinc-50);
}

.nb-vs-card {
  /* 9:16 a 190px de largura dá 338px de altura. A 216px daria 384px, que
     é alto demais para a fileira: só apareceriam três e meio na tela. */
  width: 190px;
  background: #fff;
  border-radius: 10px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

/* O palco é a caixa que segura o vídeo E o painel de produtos. O painel é
 * posicionado por cima, então precisa de position:relative próprio — senão
 * grudaria no ancestral e a lista sairia do cartão. */
.nb-vs-card-stage,
.nb-vs-ugc-stage {
  position: relative;
  overflow: hidden;
  background: var(--zinc-100);
}

.nb-vs-card-media {
  position: relative;
  display: block;
  aspect-ratio: var(--nb-video-ratio, 9 / 16);
  overflow: hidden;
  background: var(--zinc-100);
}

.nb-vs-card-media video,
.nb-vs-card-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.nb-vs-card-body {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 8px 8px 14px;
  flex: 1;
}

.nb-vs-thumb {
  flex: 0 0 auto;
  width: 48px;
  height: 48px;
  border-radius: 6px;
  overflow: hidden;
  background: var(--zinc-100);
}

.nb-vs-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.nb-vs-card-text {
  min-width: 0;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
  text-decoration: none;
  color: inherit;
}

.nb-vs-brand,
.nb-vs-name,
.nb-vs-name-sub {
  display: block;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

.nb-vs-brand {
  font-size: 11px;
  font-weight: 700;
}

.nb-vs-name {
  font-size: 10px;
  font-weight: 500;
  color: var(--zinc-700);
}

.nb-vs-name-sub {
  font-size: 10px;
  color: var(--zinc-500);
}

.nb-vs-price {
  font-size: 11px;
  margin-top: 4px;
  display: flex;
  align-items: center;
  gap: 3px;
}

.nb-vs-card-text:hover .nb-vs-name {
  text-decoration: underline;
}

/* ------------------------------------------------------------------
 * 5. VIDEOSHOP / tutorial
 * ------------------------------------------------------------------ */
.nb-vs-tutorial {
  background: #fff;
}

.nb-vs-tutorial-stage {
  position: relative;
}

.nb-vs-tutorial-slide {
  width: min(240px, 68vw);
}

.nb-vs-tutorial-media {
  position: relative;
  aspect-ratio: var(--nb-video-ratio, 9 / 16);
  border-radius: var(--nb-r);
  overflow: hidden;
  background: var(--zinc-100);
}

.nb-vs-tutorial-media .nb-vs-play {
  opacity: 0;
}

.nb-vs-tutorial-media video,
.nb-vs-tutorial-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.nb-vs-mute {
  position: absolute;
  right: 10px;
  bottom: 10px;
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 50%;
  background: rgba(0, 0, 0, .5);
  color: #fff;
  cursor: pointer;
}

.nb-vs-mute.is-on {
  background: var(--neubas-green);
  color: var(--neubas-black);
}

.nb-vs-tutorial-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-top: 12px;
}

.nb-vs-tutorial-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--zinc-700);
}

.nb-vs-tutorial-buy {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: 700;
  text-decoration: none;
  color: var(--neubas-black);
}

.nb-vs-tutorial-buy span {
  padding: 5px 12px;
  background: var(--neubas-black);
  color: #fff;
  border-radius: 999px;
  font-weight: 600;
}

.nb-vs-tut-arrow {
  position: absolute;
  top: 44%;
  transform: translateY(-50%);
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: #fff;
  border: 1px solid var(--nb-line);
  color: var(--zinc-700);
  z-index: 3;
  box-shadow: 0 2px 10px rgba(0, 0, 0, .08);
}

.nb-vs-tut-prev { left: -8px; }
.nb-vs-tut-next { right: -8px; }

.nb-vs-dots {
  justify-content: center;
  margin-top: 20px;
}

.nb-vs-dots-center {
  justify-content: center;
}

/* ------------------------------------------------------------------
 * 6. VIDEOSHOP / watch
 * ------------------------------------------------------------------ */
.nb-vs-watch {
  background: var(--zinc-50);
}

.nb-vs-watch-stage {
  position: relative;
  overflow: hidden;
  border-radius: var(--nb-r);
}

.nb-vs-watch-slide {
  display: none;
  grid-template-columns: 1.15fr 1fr;
  background: #fff;
}

.nb-vs-watch-slide.is-active {
  display: grid;
}

.nb-vs-watch-media {
  position: relative;
  aspect-ratio: var(--nb-watch-ratio, 16 / 9);
  background: var(--neubas-black);
}

.nb-vs-watch-media video,
.nb-vs-watch-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.nb-vs-watch-panel {
  padding: clamp(20px, 3vw, 40px);
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 8px;
}

.nb-vs-watch-label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--zinc-500);
}

.nb-vs-watch-name {
  font-size: clamp(18px, 2vw, 24px);
  font-weight: 500;
  margin: 0;
}

.nb-vs-watch-sub {
  margin: 0;
  font-size: 14px;
  color: var(--zinc-600);
}

.nb-vs-watch-buy {
  margin-top: 10px;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  text-decoration: none;
  color: var(--neubas-black);
}

/* Watch com vários produtos: lista fixa no painel, sem clique extra. */
.nb-vs-watch-list {
  margin-top: 10px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  max-height: 220px;
  overflow-y: auto;
}

.nb-vs-watch-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px;
  border: 1px solid var(--nb-line);
  border-radius: 12px;
  text-decoration: none;
  color: var(--neubas-black);
}

.nb-vs-watch-row:hover {
  border-color: var(--zinc-400);
}

.nb-vs-watch-row img {
  width: 44px;
  height: 44px;
  flex: 0 0 auto;
  border-radius: 8px;
  object-fit: cover;
  background: var(--zinc-100);
}

.nb-vs-watch-row-text {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.nb-vs-watch-row-name {
  font-size: 13px;
  line-height: 1.25;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

.nb-vs-watch-price {
  font-size: 18px;
  font-weight: 700;
}

.nb-vs-watch-cta {
  padding: 10px 20px;
  background: var(--neubas-black);
  color: #fff;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 600;
}

.nb-vs-watch-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: rgba(0, 0, 0, .10);
  color: #fff;
  z-index: 3;
  transition: background .2s ease;
}

.nb-vs-watch-arrow:hover {
  background: rgba(0, 0, 0, .55);
}

.nb-vs-watch-prev { left: 14px; }
.nb-vs-watch-next { right: 14px; }

/* ------------------------------------------------------------------
 * 7. VIDEOSHOP / ugc
 * ------------------------------------------------------------------ */
.nb-vs-ugc {
  background: var(--neubas-purple);
  color: #fff;
}

.nb-vs-ugc-copy {
  min-width: 0;
}

.nb-vs-ugc-grid {
  display: grid;
  grid-template-columns: minmax(220px, 300px) 1fr;
  gap: clamp(20px, 4vw, 56px);
  align-items: center;
}

.nb-vs-ugc-title {
  font-size: clamp(22px, 2.6vw, 30px);
  font-weight: 500;
  margin: 0 0 10px;
  line-height: 1.08;
}

.nb-vs-ugc-desc {
  font-size: 14px;
  line-height: 1.5;
  opacity: .85;
  margin: 0 0 18px;
}

.nb-vs-ugc-cta {
  display: inline-block;
  padding: 11px 22px;
  background: #fff;
  color: var(--neubas-black);
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .06em;
  text-decoration: none;
  text-transform: uppercase;
}

.nb-vs-ugc-card {
  width: min(210px, 62vw);
}

.nb-vs-ugc-stage {
  border-radius: var(--nb-r);
}

.nb-vs-ugc-media {
  position: relative;
  display: block;
  aspect-ratio: var(--nb-video-ratio, 9 / 16);
  border-radius: var(--nb-r);
  overflow: hidden;
  background: rgba(0, 0, 0, .2);
}

.nb-vs-ugc-media video,
.nb-vs-ugc-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.nb-vs-ugc-label {
  display: block;
  margin-top: 10px;
  font-size: 12px;
  font-weight: 600;
  opacity: .9;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

/* ------------------------------------------------------------------
 * 8. RESPONSIVO
 * ------------------------------------------------------------------ */
@media (max-width: 860px) {
  .nb-vs-watch-slide.is-active {
    grid-template-columns: 1fr;
  }

  .nb-vs-ugc-grid {
    grid-template-columns: 1fr;
  }

  .nb-showcase-copy {
    padding: 0 18px 20px;
  }

  .nb-vs-tut-prev { left: 0; }
  .nb-vs-tut-next { right: 0; }
}

@media (max-width: 520px) {
  .nb-vs-card {
    width: 158px;
  }

  .nb-vs-tutorial-slide {
    width: min(200px, 62vw);
  }

  /* No celular não há hover: o botão de play precisa ficar sempre visível,
   * senão não há como abrir o vídeo. */
  .nb-vs-play {
    opacity: 1;
  }
}

/* ------------------------------------------------------------------
 * 9. RESPEITA QUEM NÃO QUER MOVIMENTO
 *
 * Um autoplay de vídeo é mais invasivo que uma animação: pisca e mexe sem
 * pausa. Quem pede para reduzir movimento não deve ter isso imposto.
 * ------------------------------------------------------------------ */
@media (prefers-reduced-motion: reduce) {
  .nb-vs-rail,
  .nb-showcase-rail,
  .nb-vs-tutorial-rail,
  .nb-vs-ugc-rail {
    scroll-behavior: auto;
  }

  .nb-showcase-dot,
  .nb-vs-dot {
    transition: none;
  }
}