// Media queries
@mixin media-query($queries...) {
    @each $query in $queries {
        @each $breakpoint in $breakpoints {
            $name:        nth($breakpoint, 1);
            $declaration: nth($breakpoint, 2);

            @if $query == $name and $declaration {
                @media only screen and #{$declaration} {
                    @content;
                }
            }
        }
    }
}

//   Placeholder text
@mixin placeholder-text {
    // sass-lint:disable no-vendor-prefixes
    &.placeholder { @content; }
    &:-moz-placeholder { @content; }
    &::-moz-placeholder { @content; }
    &:-ms-input-placeholder { @content; }
    &::-webkit-input-placeholder { @content; }
    // sass-lint:enddisable
}

// Hide text
@mixin hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(1px, 1px, 1px, 1px);
}

// iOS Native vertical scroll
@mixin native-vertical-scroll {
    overflow-x: hidden;
    overflow-y: scroll;
    -webkit-overflow-scrolling: touch; // sass-lint:disable-line no-misspelled-properties
}

// Output a rem and px fallback value for the given property
@mixin rem($property, $values) {

    $px:  ();
    $rem: ();

    @each $value in $values {
        @if $value == 0 or $value == auto or $value == inherit {
            $px:  append($px, $value);
            $rem: append($rem, $value);
        } @else {
            $px:  append($px, $value);
            $rem: append($rem, rem(strip-unit($value)));
        }
    }
    // sass-lint:disable no-duplicate-properties
    #{$property}: $px;
    #{$property}: $rem;
    // sass-lint:enddisable
}

// Output a `font-size: [x]rem;` declaration for the given px value
@mixin rem-font-size($font-size) {
    @include rem(font-size, $font-size);
}

// Font sizes
@mixin font-size($keyword) {
    $size: map-get($font-sizes, $keyword);

    @if $size == null {
        @warn 'Font size ‘#{$keyword}’ does not exist';
    } @else {
        @include rem-font-size($size);
    }
}

// button mixin
@mixin button($bg) {
    padding: 10px 60px;
    background: $bg;
    border: 1px solid $color--white;
    transition: background $transition;

    &:hover {
        background: darken($bg, 8%);
        transition: background $transition;
    }

    &:active {
        background: darken($bg, 25%);
    }
}