/*
 * Copyright 2010 Google Inc.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
/* Incremental changes from CellTable.css */
.cellTableFooter {
  padding: 3px 9px;
}

.cellTableHeader {
  padding: 3px 9px;
}

.cellTableCell {
  padding: 2px 9px;
}

.cellTableFirstColumn {
  padding: 0px;
}

.cellTableLastColumn {
  padding: 0px;
}

.cellTableFirstColumnFooter {
  border: 0px;
  padding: 0px;
}

.cellTableFirstColumnHeader {
  border: 0px;
  padding: 0px;
}

.cellTableLastColumnFooter {
  border: 0px;
  padding: 0px;
}

.cellTableLastColumnHeader {
  border: 0px;
  padding: 0px;
}
