.nzs {
  --nzs-ratio: 16 / 9;
  --nzs-ratio-m: 4 / 5;
  --nzs-accent: #fff;
  --nzs-ink: #111;
  --nzs-line: rgba(255, 255, 255, .35);
  --nzs-speed: .8s;
  --nzs-ease: cubic-bezier(.65, 0, .15, 1);
  --nzs-ms: 5000ms;
  --nzs-gap: clamp(12px, 3vw, 40px);
  position: relative;
  overflow: hidden;
  isolation: isolate;
  outline: none;
  -webkit-tap-highlight-color: transparent;
	--nzs-radius: 16px;
  border-radius: var(--nzs-radius);
  clip-path: inset(0 round var(--nzs-radius));
}
.nzs:focus-visible { box-shadow: inset 0 0 0 2px var(--nzs-accent); }

/* ---------- Слайды ---------- */
.nzs__viewport {
  position: relative;
  aspect-ratio: var(--nzs-ratio);
  overflow: hidden;
  background: #111;
  touch-action: pan-y;
  user-select: none;
  -webkit-user-select: none;
}
@media (max-width: 767.98px) {
  .nzs__viewport { aspect-ratio: var(--nzs-ratio-m); }
}
.nzs__slide {
  position: absolute; inset: 0;
  transform: translate3d(100%, 0, 0);
  visibility: hidden;
  transition: transform var(--nzs-speed) var(--nzs-ease);
  will-change: transform;
}
.nzs__slide.is-active { transform: none; }
.nzs__slide.is-active,
.nzs__slide.is-moving { visibility: visible; }

.nzs__link, .nzs__pic { display: block; width: 100%; height: 100%; }
.nzs__pic img {
  display: block; width: 100%; height: 100%;
  object-fit: cover;
  -webkit-user-drag: none;
}
.nzs.is-dragging .nzs__viewport { cursor: grabbing; }

/* ---------- Стрелки ---------- */
.nzs__arrow {
  position: absolute; top: 50%; z-index: 2;
  width: 56px; height: 56px; margin-top: -28px; padding: 0;
  display: grid; place-items: center;
  border: 0; border-radius: 50%; background: none;
  color: var(--nzs-accent); cursor: pointer;
  filter: drop-shadow(0 1px 8px rgba(0, 0, 0, .25));
  transition: opacity .35s, transform .45s var(--nzs-ease), color .3s;
}
.nzs__arrow--prev { left: var(--nzs-gap); }
.nzs__arrow--next { right: var(--nzs-gap); }

.nzs__arrow::before,
.nzs__arrow::after {
  content: ""; position: absolute; inset: 0; border-radius: 50%;
  transition: transform .5s var(--nzs-ease), opacity .3s;
}
.nzs__arrow::before { border: 1px solid currentColor; opacity: .6; }
.nzs__arrow::after { background: var(--nzs-accent); transform: scale(0); }

.nzs__arrow svg {
  position: relative; z-index: 1;
  width: 26px; height: 14px;
  fill: none; stroke: currentColor; stroke-width: 1.4;
  transition: transform .5s var(--nzs-ease);
}
.nzs__arrow--prev svg { transform: scaleX(-1); }

.nzs__arrow:focus-visible { outline: 2px solid var(--nzs-accent); outline-offset: 4px; }

@media (hover: hover) and (pointer: fine) {
  .nzs__arrow { opacity: 0; }
  .nzs__arrow--prev { transform: translateX(-12px); }
  .nzs__arrow--next { transform: translateX(12px); }
  .nzs:hover .nzs__arrow,
  .nzs:focus-within .nzs__arrow { opacity: 1; transform: none; }

  .nzs__arrow:hover { color: var(--nzs-ink); }
  .nzs__arrow:hover::before { transform: scale(1.18); opacity: 0; }
  .nzs__arrow:hover::after { transform: scale(1); }
  .nzs__arrow--next:hover svg { transform: translateX(4px); }
  .nzs__arrow--prev:hover svg { transform: scaleX(-1) translateX(4px); }
}

@media (max-width: 767.98px) {
  .nzs__arrow { width: 40px; height: 40px; margin-top: -20px; }
  .nzs__arrow svg { width: 20px; height: 12px; }
}

/* ---------- Плашки ---------- */
.nzs__bars {
  position: absolute; z-index: 2;
  right: var(--nzs-gap);
  bottom: clamp(8px, 2.4vw, 28px);
  display: flex; gap: 8px;
  filter: drop-shadow(0 1px 6px rgba(0, 0, 0, .3));
}
.nzs__bar {
  position: relative;
  width: clamp(26px, 3.6vw, 52px); height: 24px;
  padding: 0; border: 0; background: none; cursor: pointer;
}
.nzs__bar::before,
.nzs__bar i {
  content: ""; position: absolute; left: 0; right: 0; top: 50%;
  height: 2px; margin-top: -1px; border-radius: 2px;
}
.nzs__bar::before { background: var(--nzs-line); transition: background .3s; }
.nzs__bar:hover::before { background: rgba(255, 255, 255, .65); }
.nzs__bar i { background: var(--nzs-accent); transform: scaleX(0); transform-origin: left; }
.nzs__bar.is-active i { transform: scaleX(1); }
.nzs.is-auto .nzs__bar.is-active i {
  transform: scaleX(0);
  animation: nzs-fill var(--nzs-ms) linear forwards;
}
.nzs.is-paused .nzs__bar.is-active i { animation-play-state: paused; }
.nzs__bar:focus-visible { outline: 2px solid var(--nzs-accent); outline-offset: 2px; }

@keyframes nzs-fill { to { transform: scaleX(1); } }

@media (prefers-reduced-motion: reduce) {
  .nzs { --nzs-speed: 0s; }
}
