$gradient-start: #7166d9; $gradient-end: #c86dd7; $inverse-hover: #fafbff; $base-class: 'button'; @mixin button-variant($color, $hover: null, $shadow: null) { @if not $shadow { $shadow: adjust-color($color, $lightness: -20%, $saturation: 20%); } @if not $hover { $hover: darken($color, 5%); } background-color: $color; box-shadow: 0 2px 0 $shadow, 0 3px 5px 0 rgba($black, 0.15); &.#{$base-class}--disabled { &:hover { background-color: $color; } } &:hover { background-color: $hover; } } .#{$base-class} { @include user-select(none); @include transition(color 150ms ease-in-out, background 150ms ease-in-out, top 50ms ease-in-out, box-shadow 50ms ease-in-out, border 50ms ease-in-out); @include button-variant($link); position: relative; height: 38px; text-align: center; color: $white; line-height: 36px; text-decoration: none; text-transform: uppercase; letter-spacing: 1px; border-radius: 2px; font-size: $medium; font-family: 'Oxygen', $helvetica; font-weight: $bold; display: inline-block; padding: 0 $pad-large; top: 0; border: 0; cursor: pointer; box-sizing: border-box; &:focus { outline: none; } &--brand { @include button-variant($brand); } &--success { @include button-variant($success); } &--alert { @include button-variant($alert); } &--warning { @include button-variant($warning); } &--inverse { @include button-variant($white, $inverse-hover, $brand); color: $brand; border: 1px solid $brand; border-bottom-color: $white; &:active { border-bottom-color: $brand; } } &--inverse-alert { @include button-variant($white, $inverse-hover, $alert); color: $alert; border: 1px solid $alert; border-bottom-color: $white; &:active { border-bottom-color: $alert; } } &--block { display: block; width: 100%; } &--disabled { opacity: 0.4; cursor: default; } &--small { height: 28px; line-height: 26px; padding: 0 $pad-medium; } &--large { height: 48px; line-height: 46px; } &--gradient { background-color: transparent; background-image: linear-gradient(134deg, $gradient-start 0%, $gradient-end 100%); color: $white; font-size: $large; font-weight: $light; letter-spacing: 4px; padding: $medium; width: 100%; height: auto; box-shadow: inset 0 -3px 0 0 rgba(0, 0, 0, 0.25), 0 -2px 3px 0 rgba(0, 0, 0, 0.15); &:active { box-shadow: 0 1px 0 #734893, 0 -2px 0 #d1d9e9; } } &--unstyled { @include button-variant(transparent); border: 0; box-shadow: none; color: $text-dark; cursor: pointer; margin: 0; padding: 0; height: auto; line-height: normal; &:active { box-shadow: none; top: 0; } &:focus { outline: none; } &:hover { background-color: transparent; box-shadow: none; } } }