/* ========================================================= */
/* CAROUSEL GENERICO                                         */
/* ========================================================= */

.app-carousel {
    width: 100%;
    position: relative;
}

/* CONTENEDOR VISIBLE */
.app-carousel__viewport {
    position: relative;
    width: 100%;
    overflow: hidden;

    background: #ffffff;

    border-radius: 16px;

    box-shadow:
        0 2px 8px rgba(0, 0, 0, 0.08);
}

/* TRACK QUE SE DESPLAZA */
.app-carousel__track {
    display: flex;
    width: 100%;

    transition: transform 0.45s ease;
    will-change: transform;
}

/* CADA SLIDE */
.app-carousel__slide {
    flex: 0 0 100%;
    width: 100%;
    min-width: 100%;

    height: 600px;

    position: relative;
    overflow: hidden;
}

/* IMAGEN */
.app-carousel__image {
    display: block;

    width: 100%;
    height: 100%;

    object-fit: fill;

    user-select: none;
    -webkit-user-drag: none;
}

/* ========================================================= */
/* CONTROLES                                                 */
/* ========================================================= */

.app-carousel__control {
    position: absolute;
    top: 50%;

    transform: translateY(-50%);

    width: 42px;
    height: 42px;

    display: flex;
    align-items: center;
    justify-content: center;

    padding: 0;

    border: none;
    border-radius: 50%;

    background: rgba(255, 255, 255, 0.92);
    color: #333333;

    font-size: 16px;

    cursor: pointer;

    box-shadow:
        0 2px 8px rgba(0, 0, 0, 0.15);

    z-index: 2;

    transition:
        background-color 0.18s ease,
        transform 0.18s ease,
        box-shadow 0.18s ease;
}

.app-carousel__control:hover {
    background: #ffffff;

    box-shadow:
        0 4px 12px rgba(0, 0, 0, 0.18);
}

.app-carousel__control:focus {
    outline: 2px solid #3f9a6f;
    outline-offset: 2px;
}

.app-carousel__control--prev {
    left: 16px;
}

.app-carousel__control--next {
    right: 16px;
}


/* ========================================================= */
/* INDICADORES                                               */
/* ========================================================= */

.app-carousel__indicators {
    display: flex;
    align-items: center;
    justify-content: center;

    gap: 8px;

    padding-top: 12px;
}

.app-carousel__indicator {
    width: 8px;
    height: 8px;

    padding: 0;

    border: none;
    border-radius: 50%;

    background: #cfd4d1;

    cursor: pointer;

    transition:
        width 0.2s ease,
        background-color 0.2s ease;
}

.app-carousel__indicator--active {
    width: 24px;
    border-radius: 8px;

    background: #3f9a6f;
}

.app-carousel__indicator:focus {
    outline: 2px solid #3f9a6f;
    outline-offset: 2px;
}


/* ========================================================= */
/* RESPONSIVE                                                */
/* ========================================================= */

@media (max-width: 768px) {

    .app-carousel__slide {
        height: 312px;
    }

    .app-carousel__control {
        width: 38px;
        height: 38px;

        font-size: 14px;
    }

    .app-carousel__control--prev {
        left: 10px;
    }

    .app-carousel__control--next {
        right: 10px;
    }
}

@media (max-width: 480px) {

    .app-carousel__slide {
        height: 247px;
    }

    .app-carousel__control {
        width: 34px;
        height: 34px;
    }

    .app-carousel__control--prev {
        left: 8px;
    }

    .app-carousel__control--next {
        right: 8px;
    }
}


/* ========================================================= */
/* ACCESIBILIDAD                                             */
/* ========================================================= */

@media (prefers-reduced-motion: reduce) {

    .app-carousel__track {
        transition: none;
    }

    .app-carousel__control,
    .app-carousel__indicator {
        transition: none;
    }
}