.carousel-section{max-width:1200px;margin:24px auto;padding:0 16px}
.carousel{position:relative;overflow:hidden;border-radius:16px}
.carousel:before,.carousel:after{content:"";position:absolute;top:0;bottom:0;width:60px;z-index:2;pointer-events:none}
.carousel:before{left:0;background:linear-gradient(to right,rgba(255,255,255,1),rgba(255,255,255,0))}
.carousel:after{right:0;background:linear-gradient(to left,rgba(255,255,255,1),rgba(255,255,255,0))}
.carousel-track{display:flex;gap:12px;will-change:transform;padding:12px}
.carousel-item{flex:0 0 auto;width:calc(100%/var(--visible,3));position:relative;border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.08);overflow:hidden;background:#000}
.carousel-item video{width:100%;height:100%;object-fit:cover;display:block}
.carousel-item .sr-title{position:absolute;left:-9999px}
.carousel-item .audio-btn{position:absolute;top:8px;left:8px;background:rgba(0,0,0,.6);color:#fff;border:none;border-radius:999px;padding:6px 8px;font-size:12px;cursor:pointer;z-index:3}
.carousel-item .audio-btn:focus{outline:2px solid #fff}
.carousel-item.error:after{content:"Video unavailable";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;background:rgba(0,0,0,.5);font-weight:700}
.carousel-controls{position:absolute;right:12px;bottom:12px;display:flex;gap:8px;z-index:3}
.carousel-btn{background:#111;color:#fff;border:none;border-radius:999px;padding:8px 12px;cursor:pointer;box-shadow:0 6px 16px rgba(0,0,0,.2)}
@media (max-width:1024px){.carousel-item{width:calc(100%/var(--visible-t,2))}}
@media (max-width:640px){.carousel-item{width:calc(100%/var(--visible-m,1))}}
