/**
 * Creates a visual theme for a Tab
 *
 * @param {string} $ui
 * The name of the UI being created. Can not included spaces or special punctuation
 * (used in CSS class names).
 *
 * @param {color} [$ui-background-color=$tab-base-color]
 * The background-color of Tabs
 *
 * @param {color} [$ui-background-color-over=$tab-base-color-over]
 * The background-color of hovered Tabs
 *
 * @param {color} [$ui-background-color-active=$tab-base-color-active]
 * The background-color of the active Tab
 *
 * @param {color} [$ui-background-color-disabled=$tab-base-color-disabled]
 * The background-color of disabled Tabs
 *
 * @param {list} [$ui-border-radius=$tab-border-radius]
 * The border-radius of Tabs
 *
 * @param {number} [$ui-border-width=$tab-border-width]
 * The border-width of Tabs
 *
 * @param {number/list} [$ui-margin=$tab-margin]
 * The border-width of Tabs
 *
 * @param {number/list} [$ui-padding=$tab-padding]
 * The padding of Tabs
 *
 * @param {number/list} [$ui-text-padding=$tab-text-padding]
 * The padding of the Tab's text element
 *
 * @param {color} [$ui-border-color=$tab-border-color]
 * The border-color of Tabs
 *
 * @param {color} [$ui-border-color-over=$tab-border-color-over]
 * The border-color of hovered Tabs
 *
 * @param {color} [$ui-border-color-active=$tab-border-color-active]
 * The border-color of the active Tab
 *
 * @param {color} [$ui-border-color-disabled=$tab-border-color-disabled]
 * The border-color of disabled Tabs
 *
 * @param {string} [$ui-cursor=$tab-cursor]
 * The Tab cursor
 *
 * @param {string} [$ui-cursor-disabled=$tab-cursor-disabled]
 * The cursor of disabled Tabs
 *
 * @param {number} [$ui-font-size=$tab-font-size]
 * The font-size of Tabs
 *
 * @param {number} [$ui-font-size-over=$tab-font-size-over]
 * The font-size of hovered Tabs
 *
 * @param {number} [$ui-font-size-active=$tab-font-size-active]
 * The font-size of the active Tab
 *
 * @param {number} [$ui-font-size-disabled=$tab-font-size-disabled]
 * The font-size of disabled Tabs
 *
 * @param {string} [$ui-font-weight=$tab-font-weight]
 * The font-weight of Tabs
 *
 * @param {string} [$ui-font-weight-over=$tab-font-weight-over]
 * The font-weight of hovered Tabs
 *
 * @param {string} [$ui-font-weight-active=$tab-font-weight-active]
 * The font-weight of the active Tab
 *
 * @param {string} [$ui-font-weight-disabled=$tab-font-weight-disabled]
 * The font-weight of disabled Tabs
 *
 * @param {string} [$ui-font-family=$tab-font-family]
 * The font-family of Tabs
 *
 * @param {string} [$ui-font-family-over=$tab-font-family-over]
 * The font-family of hovered Tabs
 *
 * @param {string} [$ui-font-family-active=$tab-font-family-active]
 * The font-family of the active Tab
 *
 * @param {string} [$ui-font-family-disabled=$tab-font-family-disabled]
 * The font-family of disabled Tabs
 *
 * @param {number} [$ui-line-height=$tab-line-height]
 * The line-height of Tabs
 *
 * @param {color} [$ui-color=$tab-color]
 * The text color of Tabs
 *
 * @param {color} [$ui-color-over=$tab-color-over]
 * The text color of hovered Tabs
 *
 * @param {color} [$ui-color-active=$tab-color-active]
 * The text color of the active Tab
 *
 * @param {color} [$ui-color-disabled=$tab-color-disabled]
 * The text color of disabled Tabs
 *
 * @param {string/list} [$ui-background-gradient=$tab-background-gradient]
 * The background-gradient for Tabs. Can be either the name of a predefined gradient
 * or a list of color stops. Used as the `$type` parameter for 
 * {@link Global_CSS#background-gradient}.
 *
 * @param {string/list} [$ui-background-gradient-over=$tab-background-gradient-over]
 * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient
 * or a list of color stops. Used as the `$type` parameter for 
 * {@link Global_CSS#background-gradient}.
 *
 * @param {string/list} [$ui-background-gradient-active=$tab-background-gradient-active]
 * The background-gradient for the active Tab. Can be either the name of a predefined gradient
 * or a list of color stops. Used as the `$type` parameter for 
 * {@link Global_CSS#background-gradient}.
 *
 * @param {string/list} [$ui-background-gradient-disabled=$tab-background-gradient-disabled]
 * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient
 * or a list of color stops. Used as the `$type` parameter for 
 * {@link Global_CSS#background-gradient}.
 *
 * @param {number} [$ui-inner-border-width=$tab-inner-border-width]
 * The inner border-width of Tabs
 *
 * @param {color} [$ui-inner-border-color=$tab-inner-border-color]
 * The inner border-color of Tabs
 *
 * @param {number} [$ui-icon-width=$tab-icon-width]
 * The width of the Tab close icon
 *
 * @param {number} [$ui-icon-height=$tab-icon-height]
 * The height of the Tab close icon
 *
 * @param {number} [$ui-icon-spacing=$tab-icon-spacing]
 * the space in between the text and the close button
 *
 * @param {list} [$ui-icon-background-position=$tab-icon-background-position]
 * The background-position of Tab icons
 *
 * @param {color} [$ui-glyph-color=$tab-glyph-color]
 * The color of Tab glyph icons
 *
 * @param {color} [$ui-glyph-color-over=$tab-glyph-color-over]
 * The color of a Tab glyph icon when the Tab is hovered
 *
 * @param {color} [$ui-glyph-color-active=$tab-glyph-color-active]
 * The color of a Tab glyph icon when the Tab is active
 *
 * @param {color} [$ui-glyph-color-disabled=$tab-glyph-color-disabled]
 * The color of a Tab glyph icon when the Tab is disabled
 *
 * @param {number} [$ui-glyph-opacity=$tab-glyph-opacity]
 * The opacity of a Tab glyph icon
 *
 * @param {number} [$ui-glyph-opacity-disabled=$tab-glyph-opacity-disabled]
 * The opacity of a Tab glyph icon when the Tab is disabled
 *
 * @param {number} [$ui-opacity-disabled=$tab-opacity-disabled]
 * opacity to apply to the tab's main element when the tab is disabled
 *
 * @param {number} [$ui-text-opacity-disabled=$tab-text-opacity-disabled]
 * opacity to apply to the tab's text element when the tab is disabled
 *
 * @param {number} [$ui-icon-opacity-disabled=$tab-icon-opacity-disabled]
 * opacity to apply to the tab's icon element when the tab is disabled
 *
 * @param {number} [$ui-closable-icon-width=$tab-closable-icon-width]
 * The width of the Tab close icon
 *
 * @param {number} [$ui-closable-icon-height=$tab-closable-icon-height]
 * The height of the Tab close icon
 *
 * @param {number} [$ui-closable-icon-top=$tab-closable-icon-top]
 * The distance to offset the Tab close icon from the top of the tab
 *
 * @param {number} [$ui-closable-icon-right=$tab-closable-icon-right]
 * The distance to offset the Tab close icon from the right of the tab
 *
 * @param {number} [$ui-closable-icon-spacing=$tab-closable-icon-spacing]
 * The space in between the text and the close button
 *
 * @param {color} [$ui-border-bottom-color=$tabbar-strip-border-color]
 * The bottom border color of inactive tabs.
 *
 * @member Ext.tab.Tab
 */ 
@mixin extjs-tab-ui(
    $ui,
    
    $ui-background-color: $tab-base-color,
    $ui-background-color-over: $tab-base-color-over,
    $ui-background-color-active: $tab-base-color-active,
    $ui-background-color-disabled: $tab-base-color-disabled,
    $ui-border-radius: $tab-border-radius,
    $ui-border-width: $tab-border-width,
    $ui-margin: $tab-margin,
    $ui-padding: $tab-padding,
    $ui-text-padding: $tab-text-padding,
    $ui-border-color: $tab-border-color,
    $ui-border-color-over: $tab-border-color-over,
    $ui-border-color-active: $tab-border-color-active,
    $ui-border-color-disabled: $tab-border-color-disabled,
    $ui-cursor: $tab-cursor,
    $ui-cursor-disabled: $tab-cursor-disabled,
    $ui-font-size: $tab-font-size,
    $ui-font-size-over: $tab-font-size-over,
    $ui-font-size-active: $tab-font-size-active,
    $ui-font-size-disabled: $tab-font-size-disabled,
    $ui-font-weight: $tab-font-weight,
    $ui-font-weight-over: $tab-font-weight-over,
    $ui-font-weight-active: $tab-font-weight-active,
    $ui-font-weight-disabled: $tab-font-weight-disabled,
    $ui-font-family: $tab-font-family,
    $ui-font-family-over: $tab-font-family-over,
    $ui-font-family-active: $tab-font-family-active,
    $ui-font-family-disabled: $tab-font-family-disabled,
    $ui-line-height: $tab-line-height,
    $ui-color: $tab-color,
    $ui-color-over: $tab-color-over,
    $ui-color-active: $tab-color-active,
    $ui-color-disabled: $tab-color-disabled,
    $ui-background-gradient: $tab-background-gradient,
    $ui-background-gradient-over: $tab-background-gradient-over,
    $ui-background-gradient-active: $tab-background-gradient-active,
    $ui-background-gradient-disabled: $tab-background-gradient-disabled,

    $ui-inner-border-width: $tab-inner-border-width,
    $ui-inner-border-color: $tab-inner-border-color,

    $ui-icon-width: $tab-icon-width,
    $ui-icon-height: $tab-icon-height,
    $ui-icon-spacing: $tab-icon-spacing,
    $ui-icon-background-position: $tab-icon-background-position,

    $ui-glyph-color: $tab-glyph-color,
    $ui-glyph-color-over: $tab-glyph-color-over,
    $ui-glyph-color-active: $tab-glyph-color-active,
    $ui-glyph-color-disabled: $tab-glyph-color-disabled,
    $ui-glyph-opacity: $tab-glyph-opacity,
    $ui-glyph-opacity-disabled: $tab-glyph-opacity-disabled,

    $ui-opacity-disabled: $tab-opacity-disabled,
    $ui-text-opacity-disabled: $tab-text-opacity-disabled,
    $ui-icon-opacity-disabled: $tab-icon-opacity-disabled,

    $ui-closable-icon-width: $tab-closable-icon-width,
    $ui-closable-icon-height: $tab-closable-icon-height,
    $ui-closable-icon-top: $tab-closable-icon-top,
    $ui-closable-icon-right: $tab-closable-icon-right,
    $ui-closable-icon-spacing: $tab-closable-icon-spacing,
    
    $ui-border-bottom-color: $tabbar-strip-border-color
) {
    $frame-border-width: $ui-border-width $ui-border-width 0 $ui-border-width;
    @include x-frame(
        $cls: 'tab',
        $ui: $ui + '-top',
        $border-radius: $ui-border-radius,
        $border-width: $frame-border-width,
        $background-color: $ui-background-color,
        $background-gradient: $ui-background-gradient,
        $background-direction: top,
        $padding: $ui-padding,
        $table: true
    );

    @include x-frame(
        $cls: 'tab',
        $ui: $ui + '-bottom',
        $border-radius: rotate180($ui-border-radius),
        $border-width: rotate180($frame-border-width),
        $background-color: $ui-background-color,
        $background-gradient: $ui-background-gradient,
        $background-direction: bottom,
        $padding: $ui-padding,
        $table: true
    );

    @include x-frame(
        $cls: 'tab',
        $ui: $ui + '-left',
        $border-radius: $ui-border-radius,
        $border-width: $frame-border-width,
        $background-color: $ui-background-color,
        $background-gradient: $ui-background-gradient,
        $background-direction: top,
        $padding: $ui-padding,
        $table: true,
        $img-ui: $ui + '-top'
    );

    @include x-frame(
        $cls: 'tab',
        $ui: $ui + '-right',
        $border-radius: $ui-border-radius,
        $border-width: $frame-border-width,
        $background-color: $ui-background-color,
        $background-gradient: $ui-background-gradient,
        $background-direction: top,
        $padding: $ui-padding,
        $table: true,
        $img-ui: $ui + '-top'
    );

    .#{$prefix}tab-#{$ui} {
        border-color: $ui-border-color;
        margin: $ui-margin;
        @if not is-null($ui-cursor) { cursor: $ui-cursor; }

        .#{$prefix}tab-inner {
            font-size: $ui-font-size;
            font-weight: $ui-font-weight;
            font-family: $ui-font-family;
            color: $ui-color;
            line-height: $ui-line-height;
            @if $ui-text-padding != 0 {
                padding: $ui-text-padding;
            }
        }
        .#{$prefix}tab-icon-el {
            width: $ui-icon-width;
            height: $ui-icon-height;
            line-height: $ui-icon-height;
            background-position: $ui-icon-background-position;
        }

        .#{$prefix}tab-glyph {
            font-size: $ui-icon-height;
            color: $ui-glyph-color;
            @if $ui-glyph-opacity != 1 {
                // do not use the opacity mixin because we do not want IE's filter version of
                // opacity to be included.  We emulate the opacity setting in IE8m by mixing
                // the icon color into the background color. (see below)
                opacity: $ui-glyph-opacity;
            }
            // In IE8 and below when a glyph contains partially transparent pixels, we 
            // can't apply an opacity filter to the glyph element, because IE8m will render
            //  the partially transparent pixels of the glyph as black. To work around this,
            // we emulate the approximate color that the glyph would have if it had opacity
            // applied by mixing the glyph color with the tab's background-color.
            @if $include-ie {
                .#{$prefix}ie8m & {
                    color: mix($ui-glyph-color, $ui-background-color, $ui-glyph-opacity * 100);
                }
            }
        }

        @if $include-ie {
            // EXTJSIV-8765: vertical tabs get shifted to the left when focused.  To work
            // around this, we move the left padding to the tab-button el.
            .#{$prefix}strict .#{$prefix}ie9 .#{$prefix}tab-bar-vertical & {
                padding-left: 0;

                .#{$prefix}tab-button {
                    padding-left: left($ui-padding);
                }

                .#{$prefix}tab-icon-el {
                    left: left($ui-padding);
                }
            }
        }
    }

    .#{$prefix}tab-#{$ui}-icon {
        .#{$prefix}tab-inner {
            // even though there is no text we set a width and padding as buttons shrink-wrap around this element
            width: $ui-icon-width;
        }
    }

    @if $include-rtl {
        .#{$prefix}rtl.#{$prefix}tab-#{$ui} {
            margin: rtl($ui-margin);            
        }
    }

    @if $include-rtl {
        .#{$prefix}rtl.#{$prefix}tab-#{$ui} {
            margin: rtl($ui-margin);
        }
    }

    .#{$prefix}tab-#{$ui}-left {
        margin: rtl($ui-margin);
    }

    @if $include-rtl {
        .#{$prefix}rtl.#{$prefix}tab-#{$ui}-left {
            margin: $ui-margin;
        }
    }

    .#{$prefix}tab-#{$ui}-top,
    .#{$prefix}tab-#{$ui}-left,
    .#{$prefix}tab-#{$ui}-right {
        border-bottom: $ui-border-width solid $ui-border-bottom-color;

        @if not is-null($ui-background-gradient) {
            @include background-gradient($ui-background-color, $ui-background-gradient, top);
        
            @if $include-slicer-gradient {
                .#{$prefix}nlg & {
                    background-image: slicer-background-image(tab-#{$ui}-top, 'tab/tab-#{$ui}-top-bg');
                }
            }
        }

        @if $ui-inner-border-width != 0 {
            @include inner-border(
                $width: $ui-inner-border-width,
                $color: $ui-inner-border-color
            );
        }
    }

    .#{$prefix}tab-#{$ui}-bottom {
        border-top: $ui-border-width solid $ui-border-bottom-color;

        @if not is-null($ui-background-gradient) {
            @include background-gradient($ui-background-color, $ui-background-gradient, bottom);
        
            @if $include-slicer-gradient {
                .#{$prefix}nlg & {
                    background-image: slicer-background-image(tab-#{$ui}-bottom, 'tab/tab-#{$ui}-bottom-bg');
                }
            }
        }

        @if $ui-inner-border-width != 0 {
            @include inner-border(
                $width: flip-vertical($ui-inner-border-width),
                $color: $ui-inner-border-color
            );
        }
    }

    .#{$prefix}tab-#{$ui}-left {
        @include rotate-element($angle: 270);

        @if $tab-left-rotate-direction == 'right' {
            .#{$prefix}tab-wrap {
                @include rotate-element($angle: 180);
            }
        }
    }

    @if $include-rtl {
        .#{$prefix}rtl.#{$prefix}tab-#{$ui}-left {
            @include rotate-element($angle: 90);
        }
    }

    .#{$prefix}tab-#{$ui}-right {
        @include rotate-element($angle: 90);

        @if $tab-right-rotate-direction == 'left' {
            .#{$prefix}tab-wrap {
                @include rotate-element($angle: 180);
            }
        }
    }

    @if $include-rtl {
        .#{$prefix}rtl.#{$prefix}tab-#{$ui}-right {
            @include rotate-element($angle: 270);
        }
    }

    .#{$prefix}tab-#{$ui}-icon-text-left {
        .#{$prefix}tab-inner {
            padding-left: $ui-icon-width + $ui-icon-spacing + left($ui-text-padding);
        }
    }

    @if $include-rtl {
        .#{$prefix}rtl.#{$prefix}tab-#{$ui}-icon-text-left {
            .#{$prefix}tab-inner {
                padding-left: 0;
                padding-right: $ui-icon-width + $ui-icon-spacing + left($ui-text-padding);
            }
        }
    }

    .#{$prefix}tab-#{$ui}-over {
        @if $ui-border-color-over != $ui-border-color {
            border-color: $ui-border-color-over;
        }

        @if $ui-background-color-over != $ui-background-color {
            background-color: $ui-background-color-over;
        }

        .#{$prefix}tab-inner {
            @if $ui-color-over != $ui-color {
                color: $ui-color-over;
            }
            @if $ui-font-weight-over != $ui-font-weight {
                font-weight: $ui-font-weight-over;
            }
            @if $ui-font-size-over != $ui-font-size {
                font-size: $ui-font-size-over;
            }
            @if $ui-font-family-over != $ui-font-family {
                font-family: $ui-font-family-over;
            }
        }

        .#{$prefix}tab-glyph {
            color: $ui-glyph-color-over;
            // In IE8 and below when a glyph contains partially transparent pixels, we 
            // can't apply an opacity filter to the glyph element, because IE8m will render
            //  the partially transparent pixels of the glyph as black. To work around this,
            // we emulate the approximate color that the glyph would have if it had opacity
            // applied by mixing the glyph color with the tab's background-color.
            .#{$prefix}ie8m & {
                color: mix($ui-glyph-color-over, $ui-background-color-over, $ui-glyph-opacity * 100);
            }
        }
    }

    @if not is-null($ui-background-gradient-over) {
        .#{$prefix}tab-#{$ui}-top-over,
        .#{$prefix}tab-#{$ui}-left-over,
        .#{$prefix}tab-#{$ui}-right-over {
            @include background-gradient($ui-background-color-over, $ui-background-gradient-over, top);
        
            @if $include-slicer-gradient {
                .#{$prefix}nlg & {
                    background-image: slicer-background-image(tab-#{$ui}-top-over, 'tab/tab-#{$ui}-top-over-bg');
                }
            }
        }
        .#{$prefix}tab-#{$ui}-bottom-over {
            @include background-gradient($ui-background-color-over, $ui-background-gradient-over, bottom);

            @if $include-slicer-gradient {
                .#{$prefix}nlg & {
                    background-image: slicer-background-image(tab-#{$ui}-bottom-over, 'tab/tab-#{$ui}-bottom-over-bg');
                }
            }
        }
    }

    .#{$prefix}tab-#{$ui}-active {
        @if $ui-border-color-active != $ui-border-color {
            border-color: $ui-border-color-active;
        }
        background-color: $ui-background-color-active;

        .#{$prefix}tab-inner {
            @if $ui-color-active != $ui-color {
                color: $ui-color-active;
            }
            @if $ui-font-weight-active != $ui-font-weight {
                font-weight: $ui-font-weight-active;
            }
            @if $ui-font-size-active != $ui-font-size {
                font-size: $ui-font-size-active;
            }
            @if $ui-font-family-active != $ui-font-family {
                font-family: $ui-font-family-active;
            }
        }

        .#{$prefix}tab-glyph {
            color: $ui-glyph-color-active;
            // In IE8 and below when a glyph contains partially transparent pixels, we 
            // can't apply an opacity filter to the glyph element, because IE8m will render
            //  the partially transparent pixels of the glyph as black. To work around this,
            // we emulate the approximate color that the glyph would have if it had opacity
            // applied by mixing the glyph color with the tab's background-color.
            .#{$prefix}ie8m & {
                color: mix($ui-glyph-color-active, $ui-background-color-active, $ui-glyph-opacity * 100);
            }
        }
    }

    .#{$prefix}tab-#{$ui}-top-active,
    .#{$prefix}tab-#{$ui}-left-active,
    .#{$prefix}tab-#{$ui}-right-active {
        border-bottom: $ui-border-width solid $ui-background-color-active;
        @if not is-null($ui-background-gradient-active) {
            @include background-gradient($ui-background-color-active, $ui-background-gradient-active, top);

            @if $include-slicer-gradient {
                .#{$prefix}nlg & {
                    background-image: slicer-background-image(tab-#{$ui}-top-active, 'tab/tab-#{$ui}-top-active-bg');
                }
            }
        }
    }

    .#{$prefix}tab-#{$ui}-bottom-active {
        border-top: $ui-border-width solid $ui-background-color-active;
        @if not is-null($ui-background-gradient-active) {
            @include background-gradient($ui-background-color-active, $ui-background-gradient-active, bottom);

            @if $include-slicer-gradient {
                .#{$prefix}nlg & {
                    background-image: slicer-background-image(tab-#{$ui}-bottom-active, 'tab/tab-#{$ui}-bottom-active-bg');
                }
            }
        }
    }

    .#{$prefix}tab-#{$ui}-disabled {
        @if $ui-border-color-disabled != $ui-border-color {
            border-color: $ui-border-color-disabled;
        }

        @if $ui-opacity-disabled != 1 {
            @include opacity($ui-opacity-disabled);
        }

        @if not is-null($ui-cursor-disabled) {
            cursor: $ui-cursor-disabled;
        }

        .#{$prefix}tab-inner {
            @if $ui-color-disabled != $ui-color {
                color: $ui-color-disabled;
            }
            @if $ui-font-weight-disabled != $ui-font-weight {
                font-weight: $ui-font-weight-disabled;
            }
            @if $ui-font-size-disabled != $ui-font-size {
                font-size: $ui-font-size-disabled;
            }
            @if $ui-font-family-disabled != $ui-font-family {
                font-family: $ui-font-family-disabled;
            }
            @if $ui-text-opacity-disabled != 1 {
                @include opacity($ui-text-opacity-disabled);
            }
        }
        
        @if $ui-icon-opacity-disabled != 1 {
            .#{$prefix}tab-icon-el {
                @include opacity($ui-icon-opacity-disabled);
            }
        }

        .#{$prefix}tab-glyph {
            color: $ui-glyph-color-disabled;
            @if $ui-glyph-opacity-disabled != 1 {
                // do not use the opacity mixin because we do not want IE's filter version of
                // opacity to be included.  We emulate the opacity setting in IE8m by mixing
                // the icon color into the background color. (see below)
                opacity: $ui-glyph-opacity-disabled;
            }
            filter: none; // override opacity from tab-icon-el
            // In IE8 and below when a glyph contains partially transparent pixels, we 
            // can't apply an opacity filter to the glyph element, because IE8m will render
            //  the partially transparent pixels of the glyph as black. To work around this,
            // we emulate the approximate color that the glyph would have if it had opacity
            // applied by mixing the glyph color with the tab's background-color.
            .#{$prefix}ie8m & {
                color: mix($ui-glyph-color-disabled, $ui-background-color-disabled, $ui-glyph-opacity-disabled * 100);
            }
        }
    }

    $disabled-border-color: $ui-border-color-disabled $ui-border-color-disabled $ui-border-bottom-color;
    .#{$prefix}tab-#{$ui}-top-disabled,
    .#{$prefix}tab-#{$ui}-left-disabled,
    .#{$prefix}tab-#{$ui}-right-disabled {
        border-color: $disabled-border-color;
    }

    .#{$prefix}tab-#{$ui}-bottom-disabled {
        border-color: rotate180($disabled-border-color);
    }

    @if not is-null($ui-background-gradient-disabled) {
        .#{$prefix}tab-#{$ui}-top-disabled,
        .#{$prefix}tab-#{$ui}-left-disabled,
        .#{$prefix}tab-#{$ui}-right-disabled {
            @include background-gradient($ui-background-color-disabled, $ui-background-gradient-disabled, top);

            @if $include-slicer-gradient {
                .#{$prefix}nlg & {
                    background-image: slicer-background-image(tab-#{$ui}-top-disabled, 'tab/tab-#{$ui}-top-disabled-bg');
                }
            }
        }
        .#{$prefix}tab-#{$ui}-bottom-disabled {
            @include background-gradient($ui-background-color-disabled, $ui-background-gradient-disabled, bottom);

            @if $include-slicer-gradient {
                .#{$prefix}nlg & {
                    background-image: slicer-background-image(tab-#{$ui}-bottom-disabled, 'tab/tab-#{$ui}-bottom-disabled-bg');
                }
            }
        }
    }

    @if $include-slicer-border-radius {
        .#{$prefix}nbr .#{$prefix}tab-#{$ui} {
            background-image: none;
        }
        .#{$prefix}tab-#{$ui}-top-over,
        .#{$prefix}tab-#{$ui}-left-over,
        .#{$prefix}tab-#{$ui}-right-over {
            .#{$prefix}frame-tl,
            .#{$prefix}frame-bl,
            .#{$prefix}frame-tr,
            .#{$prefix}frame-br,
            .#{$prefix}frame-tc,
            .#{$prefix}frame-bc {
                background-image: slicer-corner-sprite(tab-#{$ui}-top-over, 'tab/tab-#{$ui}-top-over-corners');
            }
            .#{$prefix}frame-ml,
            .#{$prefix}frame-mr {
                background-image: slicer-sides-sprite(tab-#{$ui}-top-over, 'tab/tab-#{$ui}-top-over-sides');
            }
            .#{$prefix}frame-mc {
                background-color: $ui-background-color-over;
                @if not is-null($ui-background-gradient-over) {
                    background-repeat: repeat-x;
                    background-image: slicer-frame-background-image(tab-#{$ui}-top-over, 'tab/tab-#{$ui}-top-over-fbg');
                }
            }
        }

        .#{$prefix}tab-#{$ui}-bottom-over {
            .#{$prefix}frame-tl,
            .#{$prefix}frame-bl,
            .#{$prefix}frame-tr,
            .#{$prefix}frame-br,
            .#{$prefix}frame-tc,
            .#{$prefix}frame-bc {
                background-image: slicer-corner-sprite(tab-#{$ui}-bottom-over, 'tab/tab-#{$ui}-bottom-over-corners');
            }
            .#{$prefix}frame-ml,
            .#{$prefix}frame-mr {
                background-image: slicer-sides-sprite(tab-#{$ui}-bottom-over, 'tab/tab-#{$ui}-bottom-over-sides');
            }
            .#{$prefix}frame-mc {
                background-color: $ui-background-color-over;
                @if not is-null($ui-background-gradient-over) {
                    background-repeat: repeat-x;
                    background-image: slicer-frame-background-image(tab-#{$ui}-bottom-over, 'tab/tab-#{$ui}-bottom-over-fbg');
                }
            }
        }

        .#{$prefix}tab-#{$ui}-top-active,
        .#{$prefix}tab-#{$ui}-left-active,
        .#{$prefix}tab-#{$ui}-right-active {
            .#{$prefix}frame-tl,
            .#{$prefix}frame-bl,
            .#{$prefix}frame-tr,
            .#{$prefix}frame-br,
            .#{$prefix}frame-tc,
            .#{$prefix}frame-bc {
                background-image: slicer-corner-sprite(tab-#{$ui}-top-active, 'tab/tab-#{$ui}-top-active-corners');
            }
            .#{$prefix}frame-ml,
            .#{$prefix}frame-mr {
                background-image: slicer-sides-sprite(tab-#{$ui}-top-active, 'tab/tab-#{$ui}-top-active-sides');
            }
            .#{$prefix}frame-mc {
                background-color: $ui-background-color-active;
                @if not is-null($ui-background-gradient-active) {
                    background-repeat: repeat-x;
                    background-image: slicer-frame-background-image(tab-#{$ui}-top-active, 'tab/tab-#{$ui}-top-active-fbg');
                }
            }
        }

        .#{$prefix}tab-#{$ui}-bottom-active {
            .#{$prefix}frame-tl,
            .#{$prefix}frame-bl,
            .#{$prefix}frame-tr,
            .#{$prefix}frame-br,
            .#{$prefix}frame-tc,
            .#{$prefix}frame-bc {
                background-image: slicer-corner-sprite(tab-#{$ui}-bottom-active, 'tab/tab-#{$ui}-bottom-active-corners');
            }
            .#{$prefix}frame-ml,
            .#{$prefix}frame-mr {
                background-image: slicer-sides-sprite(tab-#{$ui}-bottom-active, 'tab/tab-#{$ui}-bottom-active-sides');
            }
            .#{$prefix}frame-mc {
                background-color: $ui-background-color-active;
                @if not is-null($ui-background-gradient-active) {
                    background-repeat: repeat-x;
                    background-image: slicer-frame-background-image(tab-#{$ui}-bottom-active, 'tab/tab-#{$ui}-bottom-active-fbg');
                }
            }
        }

        .#{$prefix}tab-#{$ui}-top-disabled,
        .#{$prefix}tab-#{$ui}-left-disabled,
        .#{$prefix}tab-#{$ui}-right-disabled {
            .#{$prefix}frame-tl,
            .#{$prefix}frame-bl,
            .#{$prefix}frame-tr,
            .#{$prefix}frame-br,
            .#{$prefix}frame-tc,
            .#{$prefix}frame-bc {
                background-image: slicer-corner-sprite(tab-#{$ui}-top-disabled, 'tab/tab-#{$ui}-top-disabled-corners');
            }
            .#{$prefix}frame-ml,
            .#{$prefix}frame-mr {
                background-image: slicer-sides-sprite(tab-#{$ui}-top-disabled, 'tab/tab-#{$ui}-top-disabled-sides');
            }
            .#{$prefix}frame-mc {
                background-color: $ui-background-color-disabled;
                @if not is-null($ui-background-gradient-disabled) {
                    background-repeat: repeat-x;
                    background-image: slicer-frame-background-image(tab-#{$ui}-top-disabled, 'tab/tab-#{$ui}-top-disabled-fbg');
                }
            }
        }

        .#{$prefix}tab-#{$ui}-bottom-disabled {
            .#{$prefix}frame-tl,
            .#{$prefix}frame-bl,
            .#{$prefix}frame-tr,
            .#{$prefix}frame-br,
            .#{$prefix}frame-tc,
            .#{$prefix}frame-bc {
                background-image: slicer-corner-sprite(tab-#{$ui}-bottom-disabled, 'tab/tab-#{$ui}-bottom-disabled-corners');
            }
            .#{$prefix}frame-ml,
            .#{$prefix}frame-mr {
                background-image: slicer-sides-sprite(tab-#{$ui}-bottom-disabled, 'tab/tab-#{$ui}-bottom-disabled-sides');
            }
            .#{$prefix}frame-mc {
                background-color: $ui-background-color-disabled;
                @if not is-null($ui-background-gradient-disabled) {
                    background-repeat: repeat-x;
                    background-image: slicer-frame-background-image(tab-#{$ui}-bottom-disabled, 'tab/tab-#{$ui}-bottom-disabled-fbg');
                }
            }
        }

        @if $include-slicer-border-radius and $ui-border-width != 0 {
            .#{$prefix}nbr {
                // frame.scss sets border:0 !important on the tab element in nbr mode.  We
                // need an override  with !important to add the bottom-border back since
                // tabs are special and need the bottom-border to hide the tab-strip's
                // border when the tab is active.
                // This needs to be wrapped in an x-nbr rule to be more specific than
                // the rule that removes the border in x-frame
                .#{$prefix}tab-#{$ui}-top, 
                .#{$prefix}tab-#{$ui}-left, 
                .#{$prefix}tab-#{$ui}-right { 
                    border-bottom-width: $ui-border-width !important;
                }
                .#{$prefix}tab-#{$ui}-bottom {
                    border-top-width: $ui-border-width !important;
                }
            }
        }
    }

    .#{$prefix}tab-#{$ui} {
        .#{$prefix}tab-close-btn {
            width: $ui-closable-icon-width;
            height: $ui-closable-icon-height;
            background-image: theme-background-image('tab/tab-#{$ui}-close');
            @if $tab-closable-icon-opacity != 1 {
                @include opacity($tab-closable-icon-opacity);
            }
        }

        .#{$prefix}tab-close-btn-over {
            @if  $tab-closable-icon-opacity-over != $tab-closable-icon-opacity {
                @include opacity($tab-closable-icon-opacity-over);
            }
            @if $tab-closable-icon-include-hover-background-position {
                background-position: (-$tab-closable-icon-width) 0;
            }
        }
    }

    .#{$prefix}tab-#{$ui} .#{$prefix}tab-close-btn {
        top: $ui-closable-icon-top;
        right: $ui-closable-icon-right;
    }

    @if $include-rtl {
        .#{$prefix}rtl.#{$prefix}tab-#{$ui} .#{$prefix}tab-close-btn {
            right: auto;
            left: $ui-closable-icon-right;
        }
    }

    @if $tab-left-rotate-direction == 'right' {
        .#{$prefix}tab-#{$ui}-left .#{$prefix}tab-close-btn {
            top: auto;
            right: auto;
            bottom: $ui-closable-icon-top;
            left: $ui-closable-icon-right;
        }

        @if $include-rtl {
            .#{$prefix}rtl.#{$prefix}tab-#{$ui}-left .#{$prefix}tab-close-btn {
                left: auto;
                right: $ui-closable-icon-right;
            }
        }
    }

    @if $tab-right-rotate-direction == 'left' {
        .#{$prefix}tab-#{$ui}-right .#{$prefix}tab-close-btn {
            top: auto;
            right: auto;
            bottom: $ui-closable-icon-top;
            left: $ui-closable-icon-right;
        }

        @if $include-rtl {
            .#{$prefix}rtl.#{$prefix}tab-#{$ui}-right .#{$prefix}tab-close-btn {
                left: auto;
                right: $ui-closable-icon-right;
            }
        }
    }

    .#{$prefix}tab-#{$ui}-disabled .#{$prefix}tab-close-btn {
        @if $tab-closable-icon-opacity-disabled != $tab-closable-icon-opacity or $tab-closable-icon-opacity-disabled != $tab-closable-icon-opacity-over {
            @include opacity($tab-closable-icon-opacity-disabled);
        }
        @if $tab-closable-icon-include-hover-background-position {
            background-position: 0 0;
        }
    }

    @if $tab-closable-icon-include-pressed-background-position {
        .#{$prefix}tab-#{$ui}-pressed .#{$prefix}tab-close-btn {
            background-position: (-$ui-closable-icon-width * 2) 0;
        }
    }

    .#{$prefix}tab-#{$ui}-closable .#{$prefix}tab-wrap {
        padding-right: $ui-closable-icon-width + $ui-closable-icon-spacing;
    }

    @if $include-rtl {
        .#{$prefix}rtl.#{$prefix}tab-#{$ui}-closable .#{$prefix}tab-wrap {
            padding-right: 0px;
            padding-left: $ui-closable-icon-width + $ui-closable-icon-spacing;
        }
    }

    @if $include-ie {
        .#{$prefix}ie9m {
            @if $tab-left-rotate-direction == 'right' {
                .#{$prefix}tab-#{$ui}-closable-left .#{$prefix}tab-icon-el {
                    left: auto;
                    right: 0;
                }

                @if $include-rtl {
                    .#{$prefix}rtl.#{$prefix}tab-#{$ui}-closable-left .#{$prefix}tab-icon-el {
                        right: auto;
                        left: 0;
                    }
                }
            }

            @if $tab-right-rotate-direction == 'left' {
                .#{$prefix}tab-#{$ui}-closable-right .#{$prefix}tab-icon-el {
                    left: auto;
                    right: 0;
                }

                @if $include-rtl {
                    .#{$prefix}rtl.#{$prefix}tab-#{$ui}-closable-right .#{$prefix}tab-icon-el {
                        right: auto;
                        left: 0;
                    }
                }
            }
        }
    }

    $stretch: slicer-background-stretch(tab-#{$ui}-top, bottom);
    $stretch: slicer-background-stretch(tab-#{$ui}-bottom, top);
    $stretch: slicer-background-stretch(tab-#{$ui}-top-over, bottom);
    $stretch: slicer-background-stretch(tab-#{$ui}-bottom-over, top);
    $stretch: slicer-background-stretch(tab-#{$ui}-top-active, bottom);
    $stretch: slicer-background-stretch(tab-#{$ui}-bottom-active, top);
    $stretch: slicer-background-stretch(tab-#{$ui}-top-disabled, bottom);
    $stretch: slicer-background-stretch(tab-#{$ui}-bottom-disabled, top);

    @include x-slicer(tab-#{$ui}-top-over);
    @include x-slicer(tab-#{$ui}-bottom-over);
    @include x-slicer(tab-#{$ui}-top-active);
    @include x-slicer(tab-#{$ui}-bottom-active);
    @include x-slicer(tab-#{$ui}-top-disabled);
    @include x-slicer(tab-#{$ui}-bottom-disabled);
}