//
// Forms
// --------------------------------------------------

@import "bootstrap/forms.less";    


// Common form controls
//
.form-control {
  padding: @input-padding-base-vertical @input-padding-base-horizontal;
  font-size: @input-font-size-base;
  line-height: @input-line-height-base;
  border-width: @input-border-width;
  border-style: @input-border-style;
  .box-shadow(@input-box-shadow);
  .transition(all .35s ease);

  &:focus {
    .box-shadow(@input-box-shadow-focus);
    background-color: @input-bg-focus;
  }

  // Disabled and read-only inputs

  &[disabled],
  &[readonly],
  fieldset[disabled] & {
    background-color: @input-bg-disabled;
    color: @input-color-placeholder-disabled;
    .placeholder(@input-color-placeholder-disabled);
  }  
} 



// Normalize non-controls
//

//fieldset {
//}

legend {
  font-size: (@input-font-size-base * 1.5);
  border-bottom: @legend-border;
}

label {
  //display: inline-block;
  //margin-bottom: 5px;
}


// Static form control text
//

.form-control-static {
  // Size it appropriately next to real form controls
  padding-top: (@input-padding-base-vertical + 1);
  padding-bottom: (@input-padding-base-vertical + 1);
  // Remove default margin from `p`
  margin-bottom: 0;
  min-height: (@line-height-computed + @input-font-size-base);

  &.input-lg,
  &.input-sm {
    padding-left: 0;
    padding-right: 0;
  }
}


// Form control sizing
//

.input-sm {
  .input-size(@input-height-small; @input-padding-small-vertical; @input-padding-small-horizontal; @input-font-size-small; @input-line-height-small; @input-border-radius-small);
}
.form-group-sm {
  .form-control {
    padding: @input-padding-small-vertical @input-padding-small-horizontal;
    font-size: @input-font-size-small;
    line-height: @input-line-height-small;
  }
  .form-control-static {
    min-height: (@line-height-computed + @input-font-size-small);
    padding: (@input-padding-small-vertical + 1) @input-padding-small-horizontal;
    font-size: @input-font-size-small;
    line-height: @input-line-height-small;
  }
}

.input-lg {
  .input-size(@input-height-large; @input-padding-large-vertical; @input-padding-large-horizontal; @input-font-size-large; @input-line-height-large; @input-border-radius-large);
}
.form-group-lg {
  .form-control {
    padding: @input-padding-large-vertical @input-padding-large-horizontal;
    font-size: @input-font-size-large;
    line-height: @input-line-height-large;
  }
  .form-control-static {
    min-height: (@line-height-computed + @input-font-size-large);
    padding: (@input-padding-large-vertical + 1) @input-padding-large-horizontal;
    font-size: @input-font-size-large;
    line-height: @input-line-height-large;
  }
}



// Feedback states

.has-success {
  .form-control-validation(@input-success-color; @input-success-border; @input-success-bg);
  .input-group-addon {
    color: @input-success-text;
  }
}
.has-warning {
  .form-control-validation(@input-warning-color; @input-warning-border; @input-warning-bg);
  .input-group-addon {
    color: @input-warning-text;
  }
}
.has-error {
  .form-control-validation(@input-danger-color;@input-danger-border;@input-danger-bg);
  .input-group-addon {
    color:@input-danger-text;  
  }
}



// Help text
//

.help-block {
  color: @help-block-color; 
}


// Horizontal forms
//

.form-horizontal {

  // Consistent vertical alignment of radios and checkboxes
  //
  // Labels also get some reset styles, but that is scoped to a media query below.
  .radio,
  .checkbox,
  .radio-inline,
  .checkbox-inline {
    padding-top: (@input-padding-base-vertical + 1); // Default padding plus a border
  }
  // Account for padding we're adding to ensure the alignment and of help text
  // and other content below items
  .radio,
  .checkbox {
    min-height: (@line-height-computed + (@input-padding-base-vertical + 1));
  }

  // Reset spacing and right align labels, but scope to media queries so that
  // labels on narrow viewports stack the same as a default form example.
  @media (min-width: @screen-sm-min) {
    .control-label {
      padding-top: (@input-padding-base-vertical + 1); // Default padding plus a border
    }
  }

  // Form group sizes
  //
  // Quick utility class for applying `.input-lg` and `.input-sm` styles to the
  // inputs and labels within a `.form-group`.
  .form-group-lg {
    @media (min-width: @screen-sm-min) {
      .control-label {
        padding-top: (@input-padding-large-vertical + 1);
        font-size: @input-font-size-large;
      }
    }
  }
  .form-group-sm {
    @media (min-width: @screen-sm-min) {
      .control-label {
        padding-top: (@input-padding-small-vertical + 1);
        font-size: @input-font-size-small;
      }
    }
  }
}

 
//
// RTL Forms
// --------------------------------------------------

.rtl-body & {

    .radio,
    .checkbox {

      label {
        padding-right: 20px;
        padding-left: initial;
      }
    }
    .radio input[type="radio"],
    .radio-inline input[type="radio"],
    .checkbox input[type="checkbox"],
    .checkbox-inline input[type="checkbox"] {
      margin-right: -20px;
      margin-left: auto;
    }

    // Radios and checkboxes on same line
    .radio-inline,
    .checkbox-inline {
      padding-right: 20px;
      padding-left: 0;
    }
    .radio-inline + .radio-inline,
    .checkbox-inline + .checkbox-inline {
      margin-right: 10px; // space out consecutive inline controls
      margin-left: 0;
    }

    .has-feedback {

      // Ensure icons don't overlap text
      .form-control {
        padding-left: (@input-height-base * 1.25);
        padding-right: 12px;
      }
    }
    // Feedback icon (requires .glyphicon classes)
    .form-control-feedback {
      left: 0;
      right: auto;
    }

    // Inline forms
    //

    .form-inline {

      // Kick in the inline
      @media (min-width: @screen-sm-min) {

          label {
            padding-right: 0;
            padding-left: initial;
          }

        .radio input[type="radio"],
        .checkbox input[type="checkbox"] {
          margin-right: 0;
          margin-left: auto;
        }

      }
    }


    // Horizontal forms
    //

    .form-horizontal {

      // Reset spacing and right align labels, but scope to media queries so that
      // labels on narrow viewports stack the same as a default form example.
      @media (min-width: @screen-sm-min) {
        .control-label {
          text-align: left;
        }
      }

      // Validation states
      //
      // Reposition the icon because it's now within a grid column and columns have
      // `position: relative;` on them. Also accounts for the grid gutter padding.
      .has-feedback .form-control-feedback {
        left: (@grid-gutter-width / 2);
        right: auto;
      }
    }  
}