/**
 * @class Global_CSS
 */

/**
 * Includes the default styles for toolbar buttons, mostly used as a helper function.
 *
 * @param {color} $bg-color Base color to be used for the button.
 * @param {color} $type Gradient style for the button, will automatically use "recessed" when pressed.
 */
@mixin toolbar-button($bg-color, $type: $button-gradient) {
    &,
    .x-toolbar & {
        border: 1px solid darken($bg-color, 20%);
        border-top-color: darken($bg-color, 15%);
        background-color: $bg-color;
        @include color-by-background($bg-color);

        &.x-button-back:before,
        &.x-button-forward:before {
            background: darken($bg-color, 20%);
        }

        &,
        &.x-button-back:after,
        &.x-button-forward:after {
            @include background-gradient($bg-color, $type);
        }

        &.x-button-pressing, &.x-button-pressed, &.x-button-active {
            &, &:after {
                @include background-gradient(darken($bg-color, 3%), 'recessed');
            }
        }
    }
}

/**
 * Adds a small text shadow (or highlight) to give the impression of beveled text.
 *
 * @param {string} $type Either shadow or highlight, decides whether to apply a light shadow or dark.
 */
@mixin bevel-text($type: 'shadow') {
    @if $include-highlights {
        @if $type == shadow {
            text-shadow: rgba(0,0,0,.5) 0 -.08em 0;
        } @else {
            text-shadow: rgba(255,255,255,.25) 0 .08em 0;
        }
    }
}

/**
 * Adds a small box shadow (or highlight) to give the impression of being beveled.
 *
 * @param {string} $type Either shadow or highlight, decides whether to apply a light shadow or dark.
 */
@mixin bevel-box($type: 'light') {
    @if $include-highlights {
        @if $type == shadow {
            @include st-box-shadow(rgba(#000, .5) 0 -.06em 0);
        } @else {
            @include st-box-shadow(rgba(#fff, .35) 0 .06em 0);
        }
    }
}

/**
 * Bevels the text based on its background.
 *
 * @param {color} $bg-color Background color of element.
 *
 * See {@link #bevel-text}.
 */
@mixin bevel-by-background($bg-color) {
    @if (lightness($bg-color) > 50) {
        @include bevel-text(light);
    } @else {
        @include bevel-text;
    }
}

/**
 * Creates a background gradient for masked elements, based on the lightness of their background.
 *
 * @param {color} $bg-color Background color of element.
 * @param {percent} $percent Contrast of the new gradient to its background.
 * @param {percent} $style Gradient style of the gradient.
 *
 * See background-gradient mixin.
 */
@mixin mask-by-background($bg-color, $contrast: 100%, $style: $base-gradient) {
    @if (lightness($bg-color) > 50) {
        @include background-gradient(darken($bg-color, $contrast), $style);
    } @else {
        @include background-gradient(lighten($bg-color, $contrast), $style);
    }
}
