.revix-carousel { --revix-gap: 12px; position: relative; margin: 32px auto; overflow: hidden; }
.revix-carousel--full { width: 100%; }
.revix-carousel--partial { max-width: 1200px; width: calc(100% - 40px); }
.revix-carousel--force-full { width: 100vw; max-width: none; margin-right: 0; margin-left: calc(50% - 50vw); }
.revix-carousel__viewport { overflow: hidden; }
.revix-carousel__track { display: flex; gap: var(--revix-gap); will-change: transform; }
.revix-carousel__slide { flex: 0 0 calc((100% - (var(--revix-gap) * 2)) / 3); margin: 0; height: clamp(210px, 31vw, 430px); overflow: hidden; border-radius: 14px; background: #182128; }
.revix-carousel[data-columns="4"] .revix-carousel__slide { flex-basis: calc((100% - (var(--revix-gap) * 3)) / 4); }
.revix-carousel__image { display: block; width: 100%; height: 100%; padding: 0; border: 0; background: transparent; cursor: zoom-in; }
.revix-carousel[data-popup="false"] .revix-carousel__image { cursor: default; }
.revix-carousel__image img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .45s ease; }
.revix-carousel__image:hover img { transform: scale(1.04); }
.revix-carousel__arrow { position: absolute; z-index: 2; top: 50%; width: 44px; height: 64px; transform: translateY(-50%); border: 0; color: #fff; background: rgb(8 18 24 / .64); font-size: 34px; line-height: 1; cursor: pointer; transition: background .2s ease; }
.revix-carousel__arrow:hover, .revix-carousel__arrow:focus-visible { background: #101a20; }
.revix-carousel__arrow--prev { left: 0; }
.revix-carousel__arrow--next { right: 0; }
.revix-lightbox { position: fixed; z-index: 999999; inset: 0; display: none; align-items: center; justify-content: center; padding: 32px; background: rgb(0 0 0 / .88); }
.revix-lightbox.is-open { display: flex; }
.revix-lightbox__image { display: block; max-width: 100%; max-height: 92vh; border-radius: 10px; object-fit: contain; }
.revix-lightbox__close { position: absolute; z-index: 2; top: 15px; right: 22px; width: 42px; height: 42px; padding: 0 0 5px; border: 1px solid rgb(255 255 255 / .45); border-radius: 50%; color: #fff; background: rgb(0 0 0 / .35); font-size: 34px; line-height: 1; cursor: pointer; }
.revix-lightbox__nav { position: absolute; z-index: 2; top: 50%; width: 52px; height: 68px; transform: translateY(-50%); border: 0; color: #fff; background: rgb(0 0 0 / .45); font-size: 38px; line-height: 1; cursor: pointer; }
.revix-lightbox__nav:hover, .revix-lightbox__nav:focus-visible, .revix-lightbox__close:hover, .revix-lightbox__close:focus-visible { background: rgb(255 255 255 / .22); outline: 2px solid #fff; outline-offset: 2px; }
.revix-lightbox__prev { left: 18px; }
.revix-lightbox__next { right: 18px; }
@media (max-width: 900px) { .revix-carousel__slide, .revix-carousel[data-columns="4"] .revix-carousel__slide { flex-basis: calc((100% - var(--revix-gap)) / 2); height: clamp(220px, 50vw, 380px); } }
@media (max-width: 640px) { .revix-carousel--partial { width: calc(100% - 24px); } .revix-carousel__slide, .revix-carousel[data-columns="4"] .revix-carousel__slide { flex-basis: 100%; height: 72vw; } .revix-carousel__arrow { width: 38px; height: 54px; } }

/* Plantilla: Destacada central */
.revix-carousel--featured .revix-carousel__viewport { overflow: hidden; }
.revix-carousel--featured .revix-carousel__track { align-items: center; }
.revix-carousel--featured .revix-carousel__slide, .revix-carousel--featured[data-columns="4"] .revix-carousel__slide { flex: 0 0 60%; height: clamp(260px, 38vw, 520px); opacity: .58; transform: scale(.88); transition: transform .42s ease, opacity .42s ease; }
.revix-carousel--featured .revix-carousel__slide.is-active { opacity: 1; transform: scale(1); }

/* Plantilla: Mosaico Masonry */
.revix-carousel--masonry { overflow: visible; }
.revix-carousel--masonry .revix-carousel__viewport { overflow: visible; }
.revix-carousel--masonry .revix-carousel__track { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-flow: dense; grid-auto-rows: 170px; gap: var(--revix-gap); }
.revix-carousel--masonry[data-columns="3"] .revix-carousel__track { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.revix-carousel--masonry .revix-carousel__slide, .revix-carousel--masonry[data-columns="4"] .revix-carousel__slide { height: auto; min-height: 0; }
.revix-carousel--masonry .revix-carousel__slide:nth-child(5n + 1) { grid-row: span 2; grid-column: span 2; }
.revix-carousel--masonry .revix-carousel__slide:nth-child(7n + 3) { grid-row: span 2; }

/* Plantilla: Cinta continua */
.revix-carousel--ribbon .revix-carousel__track { width: max-content; animation: revix-gallery-ribbon var(--revix-ribbon-duration, 28s) linear infinite; }
.revix-carousel--ribbon .revix-carousel__track:hover { animation-play-state: paused; }
.revix-carousel--ribbon .revix-carousel__slide, .revix-carousel--ribbon[data-columns="4"] .revix-carousel__slide { flex: 0 0 clamp(230px, 25vw, 390px); height: clamp(180px, 24vw, 330px); }
@keyframes revix-gallery-ribbon { to { transform: translateX(calc(-50% - (var(--revix-gap) / 2))); } }

@media (max-width: 900px) { .revix-carousel--featured .revix-carousel__slide, .revix-carousel--featured[data-columns="4"] .revix-carousel__slide { flex-basis: 76%; height: 58vw; } .revix-carousel--masonry .revix-carousel__track { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 160px; } }
@media (max-width: 640px) { .revix-carousel--featured .revix-carousel__slide, .revix-carousel--featured[data-columns="4"] .revix-carousel__slide { flex-basis: 86%; height: 68vw; } .revix-carousel--masonry .revix-carousel__track { grid-auto-rows: 130px; } .revix-carousel--ribbon .revix-carousel__slide, .revix-carousel--ribbon[data-columns="4"] .revix-carousel__slide { flex-basis: 72vw; height: 52vw; } }
