.button
  -webkit-font-smoothing subpixel-antialiased
  -moz-osx-font-smoothing auto
  position relative
  text-rendering optimizeLegibility
  -webkit-tap-highlight-color transparent
  user-select none
  appearance none
  display inline-block
  cursor pointer
  color inherit
  background transparent
  border 0
  border-radius 2px
  font-size inherit
  padding .6em 1em
  line-height 1.2
  margin 0
  text-align center
  font-family inherit
  font-weight 400
  text-decoration none

  // Useful utility until this Chrome bug is fixed
  // https://code.google.com/p/chromium/issues/detail?id=406658
  &.nowrap
    white-space nowrap
    max-width 100%

  &:hover
    text-decoration none

  &[disabled]
    opacity .7
    cursor default
    box-shadow none !important

    &:hover, &:focus, &:focus:hover
      box-shadow none !important

  &:hover
    // Implement Cloudflare button hover background color change as box shadow mask
    box-shadow inset 0 0 0 999em rgba(#000, .0625)

  &:hover:active, &.active
    // Implement Cloudflare active button background color change as box shadow mask
    box-shadow inset 0 .125em .375em rgba(#000, .125), inset 0 0 0 999em rgba(#000, .125)

  &:focus
    outline none

    &::before
      content ""
      position absolute
      z-index 1
      top 2px // Avoid dumb `em` rounding issues
      right 2px // Avoid dumb `em` rounding issues
      bottom 2px // Avoid dumb `em` rounding issues
      left 2px // Avoid dumb `em` rounding issues
      border-radius .1em
      box-shadow inset 0 0 0 1px #fff // Avoid dumb `em` rounding issues
      pointer-events none
      transition opacity .3s ease-in-out

    &:active:before
      opacity 0

  &.orange
    background #f38020
    color #fff

  &.black
    background #000
    color #fff

    &:active
      background darkerGray

  &.white
    background #fff
    color #000

  &.juicier
    padding-top .8em
    padding-bottom .8em

  &.juiciest
    padding-top 1em
    padding-bottom 1em

  &.large
    font-size 1.25em

  &.full-width
    width 100%
