//
// Carousel
// --------------------------------------------------

// Wrapper for the slide container and indicators
.carousel {
    position: relative;
}

.carousel-inner {
    position: relative;
    overflow: hidden;
    width: 100%;

    > .item {
        display: none;
        position: relative;
        .transition(.6s ease-in-out left);

        // Account for jankitude on images
        > img,
        > a > img {
            &:extend(.img-responsive);
            line-height: 1;
        }

        // WebKit CSS3 transforms for supported devices
        @media all and (transform-3d), (-webkit-transform-3d) {
            .transition-transform(~'0.6s ease-in-out');
            .backface-visibility(~'hidden');
            .perspective(1000px);

            &.next,
            &.active.right {
                .translate3d(100%, 0, 0);
                left: 0;
            }

            &.prev,
            &.active.left {
                .translate3d(-100%, 0, 0);
                left: 0;
            }

            &.next.left,
            &.prev.right,
            &.active {
                .translate3d(0, 0, 0);
                left: 0;
            }
        }
    }

    > .active,
    > .next,
    > .prev {
        display: block;
    }

    > .active {
        left: 0;
    }

    > .next,
    > .prev {
        position: absolute;
        top: 0;
        width: 100%;
    }

    > .next {
        left: 100%;
    }
    > .prev {
        left: -100%;
    }
    > .next.left,
    > .prev.right {
        left: 0;
    }

    > .active.left {
        left: -100%;
    }
    > .active.right {
        left: 100%;
    }

}

// Left/right controls for nav
// ---------------------------

.carousel-control {
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    width: @carousel-control-width;
    .opacity(@carousel-control-opacity);
    font-size: @carousel-control-font-size;
    color: @carousel-control-color;
    text-align: center;
    text-shadow: @carousel-text-shadow;
    // We can't have this transition here because WebKit cancels the carousel
    // animation if you trip this while in the middle of another animation.

    // Set gradients for backgrounds
    &.left {
        #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));
    }
    &.right {
        left: auto;
        right: 0;
        #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));
    }

    // Hover/focus state
    &:hover,
    &:focus {
        outline: 0;
        color: @carousel-control-color;
        text-decoration: none;
        .opacity(.9);
    }

    // Toggles
    .icon-prev,
    .icon-next,
    .glyphicon-chevron-left,
    .glyphicon-chevron-right {
        position: absolute;
        top: 50%;
        margin-top: -10px;
        z-index: 5;
        display: inline-block;
    }
    .icon-prev,
    .glyphicon-chevron-left {
        left: 50%;
        margin-left: -10px;
    }
    .icon-next,
    .glyphicon-chevron-right {
        right: 50%;
        margin-right: -10px;
    }
    .icon-prev,
    .icon-next {
        width: 20px;
        height: 20px;
        line-height: 1;
        font-family: serif;
    }

    .icon-prev {
        &:before {
            content: '\2039'; // SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)
        }
    }
    .icon-next {
        &:before {
            content: '\203a'; // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)
        }
    }
}

// Optional indicator pips
//
// Add an unordered list with the following class and add a list item for each
// slide your carousel holds.

.carousel-indicators {
    position: absolute;
    bottom: 10px;
    left: 50%;
    z-index: 15;
    width: 60%;
    margin-left: -30%;
    padding-left: 0;
    list-style: none;
    text-align: center;

    li {
        display: inline-block;
        width: 10px;
        height: 10px;
        margin: 1px;
        text-indent: -999px;
        border: 1px solid @carousel-indicator-border-color;
        border-radius: 10px;
        cursor: pointer;

        // IE8-9 hack for event handling
        //
        // Internet Explorer 8-9 does not support clicks on elements without a set
        // `background-color`. We cannot use `filter` since that's not viewed as a
        // background color by the browser. Thus, a hack is needed.
        // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer
        //
        // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we
        // set alpha transparency for the best results possible.
        background-color: #000 \9; // IE8
        background-color: rgba(0, 0, 0, 0); // IE9
    }
    .active {
        margin: 0;
        width: 12px;
        height: 12px;
        background-color: @carousel-indicator-active-bg;
    }
}

// Optional captions
// -----------------------------
// Hidden by default for smaller viewports
.carousel-caption {
    position: absolute;
    left: 15%;
    right: 15%;
    bottom: 20px;
    z-index: 10;
    padding-top: 20px;
    padding-bottom: 20px;
    color: @carousel-caption-color;
    text-align: center;
    text-shadow: @carousel-text-shadow;
    & .btn {
        text-shadow: none; // No shadow for button elements in carousel-caption
    }
}

// Scale up controls for tablets and up
@media screen and (min-width: @screen-sm-min) {

    // Scale up the controls a smidge
    .carousel-control {
        .glyphicon-chevron-left,
        .glyphicon-chevron-right,
        .icon-prev,
        .icon-next {
            width: 30px;
            height: 30px;
            margin-top: -15px;
            font-size: 30px;
        }
        .glyphicon-chevron-left,
        .icon-prev {
            margin-left: -15px;
        }
        .glyphicon-chevron-right,
        .icon-next {
            margin-right: -15px;
        }
    }

    // Show and left align the captions
    .carousel-caption {
        left: 20%;
        right: 20%;
        padding-bottom: 30px;
    }

    // Move up the indicators
    .carousel-indicators {
        bottom: 20px;
    }
}
