.replay-nv-carousel-section {
  padding: 32px 0;
  max-width: 1200px;
  margin: 0 auto;
}
.replay-nv-carousel {
  display: flex;
  gap: 12px;
  overflow-x: auto;
  scroll-behavior: smooth;
  scrollbar-width: none;
  -ms-overflow-style: none;
  padding: 0 16px 12px;
  cursor: grab;
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: x mandatory;
}
.replay-nv-carousel::-webkit-scrollbar { display: none; }
.replay-nv-carousel:active { cursor: grabbing; }

.replay-nv-tile {
  position: relative;
  flex: 0 0 220px;
  aspect-ratio: 9 / 16;
  border-radius: 16px;
  overflow: hidden;
  background: #111;
  cursor: pointer;
  scroll-snap-align: start;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.replay-nv-tile:hover { transform: scale(1.02); box-shadow: 0 8px 28px rgba(0,0,0,0.18); }

.replay-nv-tile-video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  pointer-events: none;
}

.replay-nv-tile-open {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 56px; height: 56px;
  border-radius: 50%;
  background: rgba(0,0,0,0.55);
  border: none;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  z-index: 2;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease;
}
.replay-nv-tile-open svg { width: 22px; height: 22px; fill: #fff; margin-left: 3px; }
.replay-nv-tile.is-paused .replay-nv-tile-open,
.replay-nv-tile:hover .replay-nv-tile-open { opacity: 1; }

@media (max-width: 720px) {
  .replay-nv-tile { flex-basis: 180px; }
  .replay-nv-carousel { padding: 0 12px 12px; }
}

/* ============== MODAL ============== */
.replay-nv-modal {
  display: none;
  position: fixed; inset: 0; z-index: 10000;
  background: rgba(0,0,0,0.92);
  align-items: center; justify-content: center;
  animation: replay-nv-fadein 0.25s ease;
}
.replay-nv-modal.replay-nv-active { display: flex; }
@keyframes replay-nv-fadein { from { opacity: 0; } to { opacity: 1; } }

.replay-nv-player {
  position: relative;
  max-width: 420px; width: 92vw;
  max-height: 92vh;
  aspect-ratio: 9 / 16;
  border-radius: 18px;
  overflow: hidden;
  background: #000;
  animation: replay-nv-scalein 0.25s ease;
}
@keyframes replay-nv-scalein {
  from { transform: scale(0.92); opacity: 0; }
  to   { transform: scale(1);    opacity: 1; }
}
.replay-nv-player video {
  width: 100%; height: 100%; object-fit: cover; display: block;
  background: #000;
}
.replay-nv-modal.replay-nv-loading .replay-nv-player::after {
  content: ''; position: absolute; top: 50%; left: 50%;
  width: 36px; height: 36px; margin: -18px 0 0 -18px;
  border: 3px solid rgba(255,255,255,0.25);
  border-top-color: #fff;
  border-radius: 50%;
  animation: replay-nv-spin 0.9s linear infinite;
  z-index: 4; pointer-events: none;
}
@keyframes replay-nv-spin { to { transform: rotate(360deg); } }
.replay-nv-player-tap {
  position: absolute; inset: 0; z-index: 2; cursor: pointer;
}

.replay-nv-close {
  position: absolute; top: 12px; right: 12px;
  width: 38px; height: 38px;
  border-radius: 50%;
  background: rgba(0,0,0,0.55);
  border: none; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  z-index: 3;
  transition: background 0.2s;
}
.replay-nv-close:hover { background: rgba(0,0,0,0.75); }
.replay-nv-close svg { width: 16px; height: 16px; }

.replay-nv-mute {
  position: absolute; top: 12px; left: 12px;
  width: 38px; height: 38px;
  border-radius: 50%;
  background: rgba(0,0,0,0.55);
  border: none; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  z-index: 3;
  transition: background 0.2s;
}
.replay-nv-mute:hover { background: rgba(0,0,0,0.75); }
.replay-nv-mute svg { width: 18px; height: 18px; }
.replay-nv-modal.is-muted .replay-nv-mute svg path { d: path("M3 9v6h4l5 5V4L7 9H3z M16 9l4 4M20 9l-4 4"); }

body.replay-nv-locked { overflow: hidden; }
