/* =========================================================
   KRG Banner Slider
   Lightweight Responsive Slider
   ========================================================= */

.krg-banner-slider {
    position: relative;
    width: 100%;
    max-width: 100%;
    overflow: hidden;
    line-height: 0;
}

/* Slider track */
.krg-banner-slider .krg-slider-track {
    position: relative;
    width: 100%;
    overflow: hidden;
    aspect-ratio: 16 / 5;
}

/* Individual slide */
.krg-banner-slider .krg-slide {
    display: block;
    position: absolute;
    inset: 0;
    width: 100%;
    margin: 0;
    padding: 0;
    opacity: 1;
    visibility: hidden;
    transform: translate3d(100%, 0, 0);
    will-change: transform;
    pointer-events: none;
    z-index: 1;
}

.krg-banner-slider .krg-slide.is-active {
    visibility: visible;
    transform: translate3d(0, 0, 0);
    pointer-events: auto;
    z-index: 2;
}

/* Temporary animation states controlled by JS */
.krg-banner-slider .krg-slide.krg-enter-from-right,
.krg-banner-slider .krg-slide.krg-enter-from-left,
.krg-banner-slider .krg-slide.krg-leave-to-left,
.krg-banner-slider .krg-slide.krg-leave-to-right {
    visibility: visible;
    pointer-events: none;
}

.krg-banner-slider .krg-slide.krg-enter-from-right {
    transform: translate3d(100%, 0, 0);
}

.krg-banner-slider .krg-slide.krg-enter-from-left {
    transform: translate3d(-100%, 0, 0);
}

.krg-banner-slider .krg-slide.krg-leave-to-left {
    transform: translate3d(-100%, 0, 0);
}

.krg-banner-slider .krg-slide.krg-leave-to-right {
    transform: translate3d(100%, 0, 0);
}

/* Full clickable banner */
.krg-banner-slider .krg-slide-link {
    display: block;
    width: 100%;
    margin: 0;
    padding: 0;
    text-decoration: none;
}

/* Picture */
.krg-banner-slider picture {
    display: block;
    width: 100%;
    margin: 0;
    padding: 0;
}

/* Banner image */
.krg-banner-slider .krg-banner-image {
    display: block;
    width: 100%;
    max-width: 100%;
    height: auto;
    margin: 0;
    padding: 0;
    border: 0;
}

/* =========================================================
   Previous / Next Navigation
   ========================================================= */

.krg-banner-slider .krg-slider-prev,
.krg-banner-slider .krg-slider-next {
    position: absolute;
    top: 50%;
    z-index: 10;

    display: flex;
    align-items: center;
    justify-content: center;

    width: 42px;
    height: 42px;
    padding: 0;
    margin: 0;

    transform: translateY(-50%);

    border: 0;
    border-radius: 50%;

    background: rgba(0, 0, 0, 0.45);
    cursor: pointer;

    line-height: 1;
    font-size: 26px;

    opacity: 0;
    transition: opacity 0.2s ease, background 0.2s ease;
}

/* Previous */
.krg-banner-slider .krg-slider-prev {
    left: 15px;
}

/* Next */
.krg-banner-slider .krg-slider-next {
    right: 15px;
}

/* Show arrows on hover/focus */
.krg-banner-slider:hover .krg-slider-prev,
.krg-banner-slider:hover .krg-slider-next,
.krg-banner-slider .krg-slider-prev:focus-visible,
.krg-banner-slider .krg-slider-next:focus-visible {
    opacity: 1;
}

.krg-banner-slider .krg-slider-prev:hover,
.krg-banner-slider .krg-slider-next:hover {
    background: rgba(0, 0, 0, 0.7);
}

/* Keyboard accessibility */
.krg-banner-slider .krg-slider-prev:focus-visible,
.krg-banner-slider .krg-slider-next:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 3px;
}

/* =========================================================
   Pagination Dots
   ========================================================= */

.krg-banner-slider .krg-slider-pagination {
    position: absolute;
    left: 50%;
    bottom: 12px;
    z-index: 10;

    display: flex;
    align-items: center;
    justify-content: center;
    gap: 7px;

    transform: translateX(-50%);
    line-height: 1;
}

.krg-banner-slider .krg-slider-dot {
    display: block;

    width: 9px;
    height: 9px;
    min-width: 9px;

    margin: 0;
    padding: 0;

    border: 0;
    border-radius: 50%;

    background: rgba(255, 255, 255, 0.6);
    cursor: pointer;

    transition: transform 0.2s ease, background 0.2s ease;
}

.krg-banner-slider .krg-slider-dot.is-active {
    background: #fff;
    transform: scale(1.25);
}

.krg-banner-slider .krg-slider-dot:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 3px;
}

/* =========================================================
   Mobile
   ========================================================= */

@media (max-width: 767px) {

    .krg-banner-slider .krg-slider-prev,
    .krg-banner-slider .krg-slider-next {
        width: 34px;
        height: 34px;

        font-size: 21px;

        /* Always visible on touch/mobile */
        opacity: 1;

        background: rgba(0, 0, 0, 0.35);
    }

    .krg-banner-slider .krg-slider-prev {
        left: 8px;
    }

    .krg-banner-slider .krg-slider-next {
        right: 8px;
    }

    .krg-banner-slider .krg-slider-pagination {
        bottom: 8px;
        gap: 6px;
    }

    .krg-banner-slider .krg-slider-dot {
        width: 7px;
        height: 7px;
        min-width: 7px;
    }
}

/* =========================================================
   Accessibility - Reduced Motion
   ========================================================= */

@media (prefers-reduced-motion: reduce) {

    .krg-banner-slider *,
    .krg-banner-slider *::before,
    .krg-banner-slider *::after {
        scroll-behavior: auto !important;
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
    }
}
/* =========================================================
   Fixed responsive banner ratio
   Prevents desktop <img> intrinsic dimensions from forcing
   the wrong height after a mobile <picture> source is selected.
   Desktop: 1920x600 (16/5)
   Mobile:  500x320 / 1000x640 (25/16)
   ========================================================= */

.krg-banner-slider .krg-slide,
.krg-banner-slider .krg-slide > a,
.krg-banner-slider picture {
    width: 100%;
}

.krg-banner-slider .krg-slide,
.krg-banner-slider .krg-slide > a,
.krg-banner-slider .krg-slide picture {
    aspect-ratio: 16 / 5;
}

.krg-banner-slider .krg-banner-image {
    width: 100%;
    height: 100%;
    object-fit: fill;
}

@media (max-width: 767px) {
    .krg-banner-slider .krg-slider-track {
        aspect-ratio: 25 / 16;
    }

    .krg-banner-slider .krg-slide,
    .krg-banner-slider .krg-slide > a,
    .krg-banner-slider .krg-slide picture {
        aspect-ratio: 25 / 16;
    }
}


/* =========================================================
   KRG Banner Slider - Elementor Flow / Stacking Fix
   ========================================================= */
.elementor-widget-krg-banner-slider {
    position: relative !important;
    width: 100%;
    max-width: 100%;
    align-self: auto;
}
.elementor-widget-krg-banner-slider > .elementor-widget-container {
    position: relative;
    width: 100%;
    max-width: 100%;
    overflow: visible;
}
.elementor-widget-krg-banner-slider .krg-banner-slider {
    position: relative;
    display: block;
    width: 100%;
    max-width: 100%;
    overflow: hidden;
}
.elementor-widget-krg-banner-slider .krg-slider-track {
    position: relative;
    display: block;
    width: 100%;
    aspect-ratio: 16 / 5;
}
.elementor-widget-krg-banner-slider .krg-slide {
    overflow: hidden;
}
@media (max-width: 767px) {
    .elementor-widget-krg-banner-slider,
    .elementor-widget-krg-banner-slider > .elementor-widget-container,
    .elementor-widget-krg-banner-slider .krg-banner-slider {
        height: auto !important;
        min-height: 0 !important;
    }
    .elementor-widget-krg-banner-slider .krg-slider-track {
        width: 100%;
        height: auto !important;
        min-height: 0 !important;
        aspect-ratio: 25 / 16;
    }
}

/* =========================================================
   KRG Banner Slider - Definitive Elementor Flow Reservation
   The Elementor widget wrapper itself reserves the banner height.
   This prevents the next Elementor container (H1/features) from
   starting at the same Y position as the banner.
   ========================================================= */
.elementor-widget-krg-banner-slider {
    position: relative !important;
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    height: auto !important;
    min-height: 0 !important;
    aspect-ratio: 16 / 5 !important;
    flex: 0 0 auto !important;
    overflow: hidden !important;
}

.elementor-widget-krg-banner-slider > .elementor-widget-container {
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    min-height: 100% !important;
    overflow: hidden !important;
}

.elementor-widget-krg-banner-slider .krg-banner-slider,
.elementor-widget-krg-banner-slider .krg-slider-track {
    position: relative !important;
    display: block !important;
    width: 100% !important;
    height: 100% !important;
    min-height: 100% !important;
    aspect-ratio: auto !important;
    overflow: hidden !important;
}

/* Also works when the slider is rendered through an Elementor template/shortcode. */
.krg-banner-slider {
    aspect-ratio: 16 / 5;
}

.krg-banner-slider > .krg-slider-track {
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    aspect-ratio: auto !important;
}

@media (max-width: 767px) {
    .elementor-widget-krg-banner-slider {
        aspect-ratio: 25 / 16 !important;
    }

    .krg-banner-slider {
        aspect-ratio: 25 / 16;
    }
}
