//
// Tables
// --------------------------------------------------


table {
  background-color: @table-bg;
  width: 100%;
}
th, td {
  text-align: left;
  border: 1px solid #ddd;
  padding: 5px;
}


// Baseline styles
// ---------------

.table {
  width: 100%;
  margin-bottom: @line-height-computed;
  // Cells
  thead,
  tbody,
  tfoot {
    > tr {
      > th,
      > td {
        padding: @table-cell-padding;
        line-height: @line-height-base;
        vertical-align: top;
        border-top: 1px solid @table-border-color;
      }
    }
  }
  // Bottom align for column headings
  thead > tr > th {
    vertical-align: bottom;
  }
  // Remove top border from thead by default
  caption + thead,
  colgroup + thead,
  thead:first-child {
    tr:first-child {
      th, td {
        border-top: 0;
      }
    }
  }
  // Account for multiple tbody instances
  tbody + tbody {
    border-top: 2px solid @table-border-color;
  }

  // Nesting
  .table {
    background-color: @body-bg;
  }
}



// Condensed table w/ half padding
// -------------------------------

.table-condensed {
  thead,
  tbody,
  tfoot {
    > tr {
      > th,
      > td {
        padding: @table-condensed-cell-padding;
      }
    }
  }
}



// Bordered version
// ----------------

.table-bordered {
  border: 1px solid @table-border-color;
  > thead,
  > tbody,
  > tfoot {
    > tr {
      > th,
      > td {
        border: 1px solid @table-border-color;
      }
    }
  }
}



// Zebra-striping
// --------------

// Default zebra-stripe styles (alternating gray and transparent backgrounds)
.table-striped {
  > tbody {
    > tr:nth-child(odd) {
      > td,
      > th {
        background-color: @table-bg-accent;
      }
    }
  }
}



// Hover effect
// ------------

// Placed here since it has to come after the potential zebra striping
.table-hover {
  > tbody {
    > tr:hover {
      > td,
      > th {
        background-color: @table-bg-hover;
      }
    }
  }
}



// Table cell sizing
// -----------------

// Reset default table behavior
table col[class^="col-"] {
  float: none;
  display: table-column;
}
table {
  td,
  th {
    &[class^="col-"] {
      float: none;
      display: table-cell;
    }
  }
}



// Table backgrounds
// -----------------
// Exact selectors below required to override `.table-striped` and prevent
// inheritance to nested tables.

.table > thead > tr,
.table > tbody > tr,
.table > tfoot > tr {
  > td.active,
  > th.active,
  &.active > td,
  &.active > th  {
    background-color: @table-bg-active;
  }
  > td.success,
  > th.success,
  &.success > td,
  &.success > th {
    background-color: @state-success-bg;
    border-color: @state-success-border;
  }
  > td.danger,
  > th.danger,
  &.danger > td,
  &.danger > th {
    background-color: @state-danger-bg;
    border-color: @state-danger-border;
  }
  > td.warning,
  > th.warning,
  &.warning > td,
  &.warning > th {
    background-color: @state-warning-bg;
    border-color: @state-warning-border;
  }
}

// Hover states for `.table-hover`
// Note: this is not available for cells or rows within `thead` or `tfoot`.
.table-hover > tbody > tr {
  > td.success:hover,
  > th.success:hover,
  &.success:hover > td {
    background-color: darken(@state-success-bg, 5%);
    border-color: darken(@state-success-border, 5%);
  }
  > td.danger:hover,
  > th.danger:hover,
  &.danger:hover > td {
    background-color: darken(@state-danger-bg, 5%);
    border-color: darken(@state-danger-border, 5%);
  }
  > td.warning:hover,
  > th.warning:hover,
  &.warning:hover > td {
    background-color: darken(@state-warning-bg, 5%);
    border-color: darken(@state-warning-border, 5%);
  }
}
