@mixin buttons($btn_namespace:'', $btnRadius:$btnRadiusDefault) {
    // BUTTON STYLES
    // -------------


    // Base styles
    // --------------------------------------------------

    // Core
    .#{$btn_namespace}btn {
      display: inline-block;
      padding: 6px 10px 6px;
      margin-bottom: 0; // For input.btn
      font-size: $baseFontSize;
      line-height: $baseLineHeight;
      *line-height: 20px;
      color: $themeText;
      text-align: center;
      text-shadow: 0 1px 1px rgba(255,255,255,.75);
      vertical-align: middle;
      cursor: pointer;
      @include buttonBackground($btnBackground, $btnBackgroundHighlight);
      border: 1px solid $btnBorder;
      *border: 0; // Remove the border to prevent IE7's black border on input:focus
      border-bottom-color: darken($btnBorder, 10%);
      @include border-radius($btnRadius);
      @include ie7-restore-left-whitespace(); // Give IE7 some love
      @include box-shadow(#{inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)});
    }

    // Hover state
    .#{$btn_namespace}btn:hover {
      color: $grayDark;
      text-decoration: none;
      background-color: darken($themeAccent, 11%);
      *background-color: darken($themeAccent, 12%); /* Buttons in IE7 don't get borders, so darken on hover */
      background-position: 0 -15px;

      // transition is only when going to hover, otherwise the background
      // behind the gradient (there for IE<=9 fallback) gets mismatched
      @include transition(background-position .05s linear);
    }

    // Focus state for keyboard and accessibility
    .#{$btn_namespace}btn:focus {
      @include tab-focus();
    }

    // Active state
    .#{$btn_namespace}btn.active,
    .#{$btn_namespace}btn:active {
      background-color: darken($white, 18%);
      background-color: darken($white, 28%) \9;
      background-image: none;
      outline: 0;
      @include box-shadow(#{inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)});
    }

    // Disabled state
    .#{$btn_namespace}btn.disabled,
    .#{$btn_namespace}btn[disabled] {
      cursor: default;
      background-color: darken($white, 10%);
      background-image: none;
      @include opacity(65);
      @include box-shadow(none);
    }


    // Button Sizes
    // --------------------------------------------------

    // Large
    .#{$btn_namespace}btn-large {
      padding: 9px 14px;
      font-size: $baseFontSize + 2px;
      line-height: normal;
      @include border-radius(5px);
    }
    .#{$btn_namespace}btn-large [class^="icon-"] {
      margin-top: 1px;
    }

    // Small
    .#{$btn_namespace}btn-small {
      padding: 5px 9px;
      font-size: $baseFontSize - 2px;
      line-height: $baseLineHeight - 2px;
    }
    .#{$btn_namespace}btn-small [class^="icon-"] {
      margin-top: -1px;
    }

    // Mini
    .#{$btn_namespace}btn-mini {
      padding: 2px 6px;
      font-size: $baseFontSize - 2px;
      line-height: $baseLineHeight - 4px;
    }


    // Alternate buttons
    // --------------------------------------------------

    // Set text color
    // -------------------------
    .#{$btn_namespace}btn-primary,
    .#{$btn_namespace}btn-primary:hover,
    .#{$btn_namespace}btn-warning,
    .#{$btn_namespace}btn-warning:hover,
    .#{$btn_namespace}btn-danger,
    .#{$btn_namespace}btn-danger:hover,
    .#{$btn_namespace}btn-success,
    .#{$btn_namespace}btn-success:hover,
    .#{$btn_namespace}btn-info,
    .#{$btn_namespace}btn-info:hover,
    .#{$btn_namespace}btn-blue,
    .#{$btn_namespace}btn-blue:hover,
    .#{$btn_namespace}btn-inverse,
    .#{$btn_namespace}btn-inverse:hover {
      color: $white;
      text-shadow: 0 -1px 0 rgba(0,0,0,.25);
    }
    // Provide *some* extra contrast for those who can get it
    .#{$btn_namespace}btn-primary.active,
    .#{$btn_namespace}btn-warning.active,
    .#{$btn_namespace}btn-danger.active,
    .#{$btn_namespace}btn-success.active,
    .#{$btn_namespace}btn-info.active,
    .#{$btn_namespace}btn-blue.active,
    .#{$btn_namespace}btn-inverse.active,
    .#{$btn_namespace}btn-empty.active {
      color: rgba(255,255,255,.75);
    }

    // Set the backgrounds
    // -------------------------
    .#{$btn_namespace}btn {
      // reset here as of 2.0.3 due to Recess property order
      border-color: #ccc;
      border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);
    }
    .#{$btn_namespace}btn-primary {
      @include buttonBackground($btnPrimaryBackground, $btnPrimaryBackgroundHighlight);
    }
    // Warning appears are orange
    .#{$btn_namespace}btn-warning {
      @include buttonBackground($btnWarningBackground, $btnWarningBackgroundHighlight);
    }
    // Danger and error appear as red
    .#{$btn_namespace}btn-danger {
      @include buttonBackground($btnDangerBackground, $btnDangerBackgroundHighlight);
    }
    // Success appears as green
    .#{$btn_namespace}btn-success {
      @include buttonBackground($btnSuccessBackground, $btnSuccessBackgroundHighlight);
    }
    // Info appears as a neutral blue
    .#{$btn_namespace}btn-info {
      @include buttonBackground($btnInfoBackground, $btnInfoBackgroundHighlight);
    }
    // Blue appears as a strong blue
    .#{$btn_namespace}btn-blue {
      @include buttonBackground($btnBlueBackground, $btnBlueBackgroundHighlight);
    }
    // Inverse appears as dark gray
    .#{$btn_namespace}btn-inverse {
      @include buttonBackground($btnInverseBackground, $btnInverseBackgroundHighlight);
    }
    // Empty appears as text
    .#{$btn_namespace}btn-empty,
    .#{$btn_namespace}btn-empty:hover {
      background: none;
      border: none;
      box-shadow: none;
      padding:0;
      margin: 0;
    }

    // As link
    .#{$btn_namespace}btn-as-link {
      @include buttonBackground(rgba(0,0,0,0) , rgba(0,0,0,0));
      border: none;
    }


    // Cross-browser Jank
    // --------------------------------------------------

    button.#{$btn_namespace}btn,
    input[type="submit"].#{$btn_namespace}btn {

      // Firefox 3.6 only I believe
      &::-moz-focus-inner {
        padding: 0;
        border: 0;
      }

      // IE7 has some default padding on button controls
      *padding-top: 2px;
      *padding-bottom: 2px;
      &.#{$btn_namespace}btn-large {
        *padding-top: 7px;
        *padding-bottom: 7px;
      }
      &.#{$btn_namespace}btn-small {
        *padding-top: 3px;
        *padding-bottom: 3px;
      }
      &.#{$btn_namespace}btn-mini {
        *padding-top: 1px;
        *padding-bottom: 1px;
      }
    }
}

@include buttons('');