//
// Forms
//
@mixin form-control-focus($color: $input-border-focus) {
    $color-rgba: rgba(red($color), green($color), blue($color), .6);
    &:focus {
        border-color: $color;
        outline: 0;
        @include box-shadow(inset 0 0 4px $color-rgba, 0 0 8px $color-rgba);
    }
}
.form-control {
    display: block;
    width: 100%;
    height: $input-height-base;
    padding: $padding-base-vertical $padding-base-horizontal;
    border: 1px solid $input-border;
    border-radius: $input-border-radius;
    line-height: $line-height-base;
    font-size: $font-size-base;
    color: $input-color;
    background-color: $input-bg;
    @include transition(border-color ease .15s, box-shadow ease .15s);
    @include form-control-focus;
    @include placeholder;
}
.form-control-error {
    border-color: $brand-danger !important;
    color: $brand-danger;
    @include form-control-focus($brand-danger);
    @include placeholder($brand-danger);
}
.form-control-wrapper {
    position: relative;
    display: block;
    width: 100%;
}

.control-label {
    line-height: $input-height-base;
    text-align: right;
}
//
// Inline forms
//
@mixin form-inline {
    // Inline-block all the things for "inline"
    .form-group {
        display: inline-block;
        margin-bottom: 0;
        vertical-align: middle;
    }
    // In navbar-form, allow folks to *not* use `.form-group`
    .form-control {
        display: inline-block;
        width: auto; // Prevent labels from stacking above inputs in `.form-group`
        vertical-align: middle;
    }
    // Make static controls behave like regular ones
    .form-control-static {
        display: inline-block;
    }
    .input-group {
        display: inline-table;
        vertical-align: middle;
        .form-control,
        .input-group-addon,
        .input-group-btn {
            width: auto;
        }
    }
    // Input groups need that 100% width though
    .input-group > .form-control {
        width: 100%;
    }
    .control-label {
        margin-bottom: 0;
        vertical-align: middle;
    }
    // Remove default margin on radios/checkboxes that were used for stacking, and
    // then undo the floating of radios and checkboxes to match.
    .checkbox,
    .radio {
        display: inline-block;
        margin-top: 0;
        margin-bottom: 0;
        vertical-align: middle;
        label {
            padding-left: 0;
        }
    }
    .checkbox input[type="checkbox"],
    .radio input[type="radio"] {
        position: relative;
        margin-left: 0;
    }
    // Re-override the feedback icon.
    .has-feedback .form-control-feedback {
        top: 0;
    }
}
// [converter] extracted as `@mixin form-inline` for libsass compatibility
.form-inline {
    @include form-inline;
}

// Form groups
//
// Designed to help with the organization and spacing of vertical forms. For
// horizontal forms, use the predefined grid classes.
.form-group {
    margin-bottom: $form-group-margin-bottom;
}


//
// Horizontal forms
//
.form-horizontal .form-group {
    margin-left: - ($grid-gutter-width / 2);
    margin-right: - ($grid-gutter-width / 2);
}

.form-horizontal .control-label {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}
