@def SELECTION_BORDER_WIDTH 2px;

.cellTableWidget {
}

.cellTableFirstColumn {
}

.cellTableLastColumn {
}

.cellTableFooter {
  border-top: 2px solid #6f7277;
  padding: 3px 15px;
  text-align: left;
  color: #4b4a4a;
  text-shadow: #ddf 1px 1px 0;
  overflow: hidden;
}

.cellTableHeader {
  border-bottom: 2px solid #6f7277;
  padding: 3px 15px;
  text-align: left;
  color: #4b4a4a;
  text-shadow: #ddf 1px 1px 0;
  overflow: hidden;
}

.cellTableCell {
  padding: 2px 15px;
  overflow: hidden;
}

.cellTableFirstColumnFooter {
}

.cellTableFirstColumnHeader {
}

.cellTableLastColumnFooter {
}

.cellTableLastColumnHeader {
}

.cellTableSortableHeader {
  cursor: pointer;
  /* @alternate */ cursor: hand;
}

.cellTableSortableHeader:hover {
  color: #6c6b6b;
}

.cellTableSortedHeaderAscending {
}

.cellTableSortedHeaderDescending {
}

.cellTableEvenRow {
  background: #fff;
}

.cellTableEvenRowCell {
  border: SELECTION_BORDER_WIDTH solid #fff;
}

.cellTableOddRow {
  background: #f3f7fb;
}

.cellTableOddRowCell {
  border: SELECTION_BORDER_WIDTH solid #f3f7fb;
}

.cellTableHoveredRow {
  background: #eee;
}

.cellTableHoveredRowCell {
  border: SELECTION_BORDER_WIDTH solid #eee;
}

.cellTableKeyboardSelectedRow {
  background: #ffc;
}

.cellTableKeyboardSelectedRowCell {
  border: SELECTION_BORDER_WIDTH solid #ffc;
}

.cellTableSelectedRow {
  background: #628cd5;
  color: white;
  height: auto;
  overflow: auto;
}

.cellTableSelectedRowCell {
  border: SELECTION_BORDER_WIDTH solid #628cd5;
}

/**
 * The keyboard selected cell is visible over selection.
 */
.cellTableKeyboardSelectedCell {
  border: SELECTION_BORDER_WIDTH solid #d7dde8;
}

.cellTableLoading {
  margin: 30px;
}
