/* Copyright (C) 2009 The Android Open Source Project
 *
 * 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.
 */

@eval selectionColor com.google.gerrit.client.Gerrit.getTheme().selectionColor;
@eval textColor com.google.gerrit.client.Gerrit.getTheme().textColor;
@def deletedBackground #a9a9a9;

@sprite .deleteIcon {
  gwt-image: 'deleteNormal';
  border: none;
}

@sprite .deleteIcon:hover {
  gwt-image: 'deleteHover';
  border: none;
}

@sprite .undoIcon {
  gwt-image: 'undoNormal';
  border: none;
}

.deleted {
  background-color: deletedBackground;
  color: #ffffff;
  white-space: nowrap;
  padding-left: 50px;
}

.deleted:hover {
  background-color: selectionColor;
  color: textColor;
 }

.deletedBorder {
  background: 1px solid deletedBackground;
}

.deleteSectionHover {
  background-color: selectionColor !important;
}
