.nxb-banner-carousel { position: relative; overflow: hidden; background: var(--nxb-colour-ink); }
.nxb-banner-carousel__viewport { display: grid; }
.nxb-banner-carousel__slide { grid-area: 1/1; visibility: hidden; opacity: 0; pointer-events: none; transition: opacity .45s ease; }
.nxb-banner-carousel__slide.is-active { visibility: visible; opacity: 1; pointer-events: auto; }
.nxb-banner-carousel__controls { position: absolute; z-index: 5; right: var(--nxb-gutter); bottom: 1.25rem; display: flex; align-items: center; gap: .5rem; }
.nxb-banner-carousel__controls button { min-width: 2.75rem; min-height: 2.75rem; padding: .45rem .7rem; border: 1px solid rgba(255,255,255,.65); border-radius: 50%; color: #fff; background: rgba(0,0,0,.55); cursor: pointer; }
.nxb-banner-carousel__dots { display: flex; gap: .35rem; }
.nxb-banner-carousel__dots button { min-width: .8rem; min-height: .8rem; padding: 0; border-radius: 50%; }
.nxb-banner-carousel__dots button[aria-current="true"] { border-color: var(--nxb-colour-brand-bright); background: var(--nxb-colour-brand-bright); }
@media (prefers-reduced-motion: reduce) { .nxb-banner-carousel__slide { transition: none; } }
