/* Copyright (C) 2014 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.
 */

@external .gwt-TabBarItem;
@external .gwt-TabBarItem-disabled;
@external .gwt-TabBarItem-selected;
@external .gwt-TabBarRest;
@external .gwt-TabPanelBottom;
@eval selectionColor com.google.gerrit.client.Gerrit.getTheme().selectionColor;

.row {
  white-space: nowrap;
}

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

.activeRow .pointer {
  visibility: visible;
}

.pointer {
  display: inline-block;
  vertical-align: top;
  visibility: hidden;
}

.subject {
  display: inline-block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  width: 355px;
}

.tabPanel .gwt-TabBarItem,
.tabPanel .gwt-TabBarItem-selected,
.tabPanel .gwt-TabBarRest {
  background: none repeat scroll 0 0 #FFF !important;
}

.tabPanel .gwt-TabPanelBottom {
  padding: 2px 0 0 0;
}

.tabPanel .gwt-TabBarItem-selected {
  border-bottom-color: #000 !important;
  color: #000 !important;
}

.tabPanel .gwt-TabBarItem-disabled {
  display: none;
}

.current,
.gitweb,
.indirect,
.notCurrent {
  display: inline-block;
  text-align: center;
  vertical-align: top;
  width: 12px;
}

.gitweb {
  color: #000;
}

.indirect {
  color: #090;      /* green */
  font-weight: bold;
}

.notCurrent {
  color: #FFA62F;   /* orange */
}
