//
// Mixins
// --------------------------------------------------


// UTILITY MIXINS
// --------------------------------------------------

// Webkit-style focus
// ------------------
.tab-focus() {
  // Default
  outline: thin dotted #333;
  // Webkit
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}

// FORMS
// --------------------------------------------------

// Block level inputs
.input-block-level {
  display: block;
  width: 100%;
  min-height: 30px;        // Make inputs at least the height of their button counterpart
  box-sizing: border-box; // Makes inputs behave like true block-level elements
}



// Mixin for form field states
.formFieldState(@textColor: #555, @borderColor: #ccc, @backgroundColor: #f5f5f5) {
  // Set the text color
  > label {
    color: @textColor;
  }
  // Style inputs accordingly
  input,
  select,
  textarea {
    color: @textColor;
    border-color: @borderColor;
    box-shadow: inset 0 1px 1px rgba(0,0,0,.075); // Redeclare so transitions work
    &:focus {
      border-color: darken(@borderColor, 10%);
      // Write out in full since the lighten() function isn't easily escaped
      box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@borderColor, 20%);
    }
  }
}



// COMPONENT MIXINS
// --------------------------------------------------

// Grid System
// -----------

// The Grid
#grid {

  .core (@gridColumnWidth, @gridGutterWidth) {

    .spanX (@index) when (@index > 0) {
//    (~".span@{index}") { .span(@index); }
      .span@{index} { .span(@index); }
      .spanX(@index - 1);
    }
    .spanX (0) {}

    .span (@columns) {
      width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
    }

    .row {
      margin-left: @gridGutterWidth * -1;
    }

    [class*="span"] {
      display: inline-block;
      margin-left: @gridGutterWidth;
      vertical-align: top;
    }

    // generate .spanX
    .spanX (@gridColumns);
  }

}
