@include exports("button/layout") {

    // Button
    .k-button {
        @include use-background-clip();
        @include border-radius( $button-border-radius );
        padding: $button-padding-y $button-padding-x;
        box-sizing: border-box;
        border-width: $button-border-width;
        border-style: solid;
        font-size: $font-size;
        line-height: $button-line-height;
        font-family: inherit;
        text-align: center;
        text-decoration: none;
        white-space: nowrap;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        vertical-align: middle;
        user-select: none;
        cursor: pointer;
        outline: none;
        -webkit-appearance: none;
        position: relative;

        &:disabled,
        &.k-state-disabled {
            @include disabled( $disabled-styling );
        }

        &::-moz-focus-inner {
            padding: 0;
            border: 0;
            outline: 0;
        }

        &:hover,
        &:focus {
            text-decoration: none;
            outline: 0;
        }

        .k-icon,
        .k-image,
        .k-sprite {
            color: inherit;
            align-self: center;
            position: relative;
        }


        // Button variants
        &-icontext {
            overflow: visible; // IE9

            .k-icon,
            .k-image,
            .k-sprite {
                margin: 0 ($button-padding-x / 2) 0 (-$button-padding-x / 2);
            }

            &.k-rtl,
            .k-rtl &,
            &[dir="rtl"],
            [dir="rtl"] & {
                .k-icon,
                .k-image,
                .k-sprite {
                    margin: 0 (-$button-padding-x / 2) 0 ($button-padding-x / 2);
                }
            }
        }
        &-icon {
            width: $button-calc-size;
            height: $button-calc-size;
            padding: $button-padding-y;

            .k-text,
            .k-button-text {
                display: none;
            }
        }

    }


    //DropDown Button
    .k-dropdown-button {
        &.k-state-focused,
        &:focus {
            outline: 0;
        }

        &.k-widget {
            border-radius: $border-radius;
            border-width: 0;
            display: inline-block;
        }
    }


    // Button group
    .k-button-group {
        margin: 0;
        padding: 0;
        border-width: 0;
        color: inherit;
        background-color: transparent;
        list-style: none;
        outline: 0;
        white-space: nowrap;
        display: inline-flex;
        flex-direction: row;
        vertical-align: middle;
        position: relative;

        .k-button {
            @include border-radius( 0 );
        }
        .k-button ~ .k-button {
            margin-inline-start: if( $button-border-width == 0, null, -$button-border-width );
        }

        .k-button:hover,
        .k-button.k-state-hover,
        .k-button:active,
        .k-button.k-state-active {
            z-index: 2;
        }

        .k-group-start,
        .k-button:first-child {
            @include border-left-radius( $button-border-radius );
        }
        .k-group-end,
        .k-button:last-child {
            @include border-right-radius( $button-border-radius );
        }
        .k-group-start.k-group-end,
        .k-button:first-child:last-child {
            @include border-radius( $button-border-radius );
        }

        > input[type="radio"],
        > input[type="checkbox"],
        label input[type="radio"],
        label input[type="checkbox"] {
            margin: 0;
            padding: 0;
            clip: rect(0, 0, 0, 0);
            position: absolute;
            pointer-events: none;
        }

    }

    .k-button-group-stretched {
        display: flex;

        .k-button {
            display: inline-block;
            flex: 1 1 auto;
            overflow: hidden;
            text-overflow: ellipsis;

            > .k-icon {
                vertical-align: text-bottom;
            }
        }
    }


    // Split button
    .k-split-button {
        border-width: 0;
        border-radius: 0;
        outline: 0;
        display: inline-flex;
        flex-flow: row nowrap;
        vertical-align: middle;

        .k-button {
            @include border-radius( 0 );
        }

        // .k-button
        > .k-button:first-child {
            @include border-left-radius( $button-border-radius );
        }
        > .k-split-button-arrow,
        > .k-button:last-child {
            @include border-right-radius( $button-border-radius );
            margin-inline-start: if( $button-border-width == 0, null, -$button-border-width );
            padding: $button-padding-y;
            width: auto;
            flex: none;
        }
    }


    // Flat button and bare
    .k-button-flat {
        border-color: transparent !important; // sass-lint:disable-line no-important
        color: inherit;
        background: none !important; // sass-lint:disable-line no-important
        box-shadow: none !important; // sass-lint:disable-line no-important
        transition: color .2s ease-in-out;

        &:hover,
        &.k-state-hover,
        &:active,
        &.k-state-active,
        &:hover:active,
        &:hover.k-state-active {
            color: inherit;
        }

        &::before {
            display: block;
        }
    }
    .k-button.k-flat,
    .k-button.k-bare {
        @extend .k-button-flat;
    }


    // Outline button
    .k-button-outline {
        @include box-shadow( none );
        color: inherit;
        background: none;
    }
    .k-button.k-outline {
        @extend .k-button-outline;
    }


    // RTL
    .k-rtl {

        // Button group
        .k-button-group {

            .k-button {
                @include border-radius( 0 );
            }

            .k-group-start,
            .k-button:first-child {
                @include border-right-radius( $button-border-radius );
            }
            .k-group-end,
            .k-button:last-child {
                @include border-left-radius( $button-border-radius );
            }
            .k-group-start.k-group-end,
            .k-button:first-child:last-child {
                @include border-radius( $button-border-radius );
            }

        }

        // Split button
        .k-split-button {

            .k-button {
                @include border-radius( 0 );
            }

            // k-button
            > .k-button:first-child {
                @include border-left-radius( $button-border-radius );
            }
            > .k-split-button-arrow,
            > .k-button:last-child {
                @include border-right-radius( $button-border-radius );
            }
        }
    }

}




@include exports( "button/layout/overlay" ) {

    // Button overlay
    .k-button-overlay {
        @include border-radius(inherit);
        content: "";
        background: currentColor;
        opacity: 0;
        display: none;
        pointer-events: none;
        position: absolute;
        left: -$button-border-width;
        right: -$button-border-width;
        top: -$button-border-width;
        bottom: -$button-border-width;
        z-index: 0;
        transition: opacity .2s ease-in-out;
    }


    .k-button {

        &::before {
            @extend .k-button-overlay;
        }

        // Hovered state
        &:hover,
        &.k-state-hover {
            &::before {
                @include opacity( $flat-button-hover-opacity );
            }
        }

        // Focused state
        &:focus,
        &.k-state-focused {
            &::before {
                @include opacity( $flat-button-focused-opacity );
            }
        }
        &.k-no-focus:not(:hover),
        &.k-no-focus:not(.k-state-hover) {
            &::before {
                @include opacity( 0 );
            }
        }

        // Pressed state
        &:active,
        &.k-state-active {
            &::before {
                @include opacity( $flat-button-active-opacity );
            }
        }

        // Selected state
        &.k-state-selected {
            &::before {
                @include opacity( $flat-button-selected-opacity );
            }
        }
    }

}




@include exports( "button/layout/focus-ring" ) {

    .k-button {

        &::after {
            @include border-radius( $button-border-radius );
            content: "";
            opacity: 0;
            display: none;
            pointer-events: none;
            position: absolute;
            left: -$button-border-width;
            right: -$button-border-width;
            top: -$button-border-width;
            bottom: -$button-border-width;
            z-index: 0;
            transition: opacity .2s ease-in-out;
        }
    }
}




@include exports( "button/ie-compat" ) {

    .k-ie9,
    .k-ie10 {

        .k-button[disabled]:hover,
        .k-button[disabled]:focus,
        .k-button.k-state-disabled:hover,
        .k-button.k-state-disabled:focus {
            @include disabled-legacy-ie( $disabled-styling );
        }

    }

    .k-ie {

        .k-button,
        .k-button-group {
            display: inline-block;
        }
    }

}
