/* 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.
 */

/**
 * Make every single class external so users can rely on their names
 */
@external .*;

@def black #000000;
@def white #ffffff;
@def norm-font  sans-serif;
@def mono-font  monospace;

@eval backgroundColor com.google.gerrit.client.Gerrit.getTheme().backgroundColor;
@eval topMenuColor com.google.gerrit.client.Gerrit.getTheme().topMenuColor;
@eval textColor com.google.gerrit.client.Gerrit.getTheme().textColor;
@eval trimColor com.google.gerrit.client.Gerrit.getTheme().trimColor;
@eval selectionColor com.google.gerrit.client.Gerrit.getTheme().selectionColor;
@eval changeTableOutdatedColor com.google.gerrit.client.Gerrit.getTheme().changeTableOutdatedColor;
@eval tableOddRowColor com.google.gerrit.client.Gerrit.getTheme().tableOddRowColor;
@eval tableEvenRowColor com.google.gerrit.client.Gerrit.getTheme().tableEvenRowColor;

@sprite .greenCheckClass {
  gwt-image: "greenCheck";
}

/** Override various GWT defaults */
.gerritTopMenu {
  font-size: 9pt;
  padding-left: 5px;
  padding-right: 5px;
  background: transparent;
}

body, table td, select {
  font-family: norm-font;
}

.gerritBody {
  font-size: small;
  padding-left: 5px;
  padding-right: 5px;
}

a,
a:visited {
  color: #0654ac;
  text-decoration: none;
}

a:hover {
  color: #0654ac;
  text-decoration: underline;
}

#gerrit_btmmenu {
  clear: both;
  color: #a0adcc;
  text-align: right;
  padding-right: 10px;
}

.version a,
.version a:visited,
.version a:hover {
  color: #2a5db0;
}


/** Widgets **/
.gwt-Button {
  color: black;
}

.hyperlink {
  text-decoration: underline;
}

.accountLinkPanel {
  display: inline;
}

.accountLinkPanel img {
  margin-right: 0.2em;
  position: relative;
  top: 2px;
  height: 16px !important;
  width: 16px;
}

.accountLinkPanel a {
  position: relative;
  top: -1px;
}

.accountName {
  white-space: nowrap;
}

.inputFieldTypeHint {
  color: grey;
}

.smallHeading {
  margin-top: 5px;
  font-weight: bold;
}

.blockHeader {
  font-size: small;
  font-weight: bold;
  background: trimColor;
  padding: 0.2em 0.2em 0.2em 0.5em;
}

.link {
  cursor: pointer;
}

/** MenuScreen **/
.menuScreenMenuBar {
  background: topMenuColor;
  padding-top: 0.5em;
  padding-bottom: 10em;
  padding-left: 0.5em;
  padding-right: 0.5em;
  border-right: 1px solid black;
  margin-right: 0.5em;
}

.menuScreenMenuBar .menuItem {
  white-space: nowrap;
  display: block;
  border-right: none;
  padding: 0.2em;
}

.menuScreenMenuBar .menuItem.activeRow {
  background: selectionColor;
}

.menuItem.activeRow {
  background: selectionColor;
}

/** CommentPanel **/
.commentPanelBorder {
  border-top: 1px solid lightgray;
  border-left: 1px solid lightgray;
  border-right: 1px solid lightgray;
  border-top-left-radius: 8px;
  border-top-right-radius: 8px;
  border-bottom-left-radius: 0px;
  border-bottom-right-radius: 0px;
}
.commentPanelBorder.commentPanelLast {
  border-bottom: 1px solid lightgray;
  border-bottom-left-radius: 8px;
  border-bottom-right-radius: 8px;
}

@if user.agent safari {
  .commentPanelBorder {
    \-webkit-border-top-left-radius: 8px;
    \-webkit-border-top-right-radius: 8px;
    \-webkit-border-bottom-left-radius: 0px;
    \-webkit-border-bottom-right-radius: 0px;
  }
  .commentPanelBorder.commentPanelLast {
    \-webkit-border-bottom-left-radius: 8px;
    \-webkit-border-bottom-right-radius: 8px;
  }
}

@if user.agent gecko1_8 {
  .commentPanelBorder {
    \-moz-border-radius-topleft: 8px;
    \-moz-border-radius-topright: 8px;
    \-moz-border-radius-bottomleft: 0;
    \-moz-border-radius-bottomright: 0;
  }
  .commentPanelBorder.commentPanelLast {
    \-moz-border-radius-bottomleft: 8px;
    \-moz-border-radius-bottomright: 8px;
  }
}

.commentPanelHeader {
  cursor: pointer;
  width: 100%;
}
.commentPanelSummary {
  color: #777777;
  white-space: nowrap;
  overflow: hidden;
}
.commentPanelAuthorCell {
  font-weight: bold;
  white-space: nowrap;
}
.commentPanelSummaryCell {
  width: 100%;
}
.commentPanelDateCell {
  white-space: nowrap;
}
.commentPanelContent {
  padding-bottom: 1px;
}
.commentPanelMessage {
  font-size: small;
  padding-left: 0.5em;
  padding-right: 0.5em;
}
.commentPanelMenuBar {
  float: right;
}
.commentPanelMessage p {
  margin-top: 0px;
  margin-bottom: 0px;
  padding-top: 0.5em;
  padding-bottom: 0.5em;
}
.commentPanelButtons {
  margin-left: 0.5em;
}
.commentPanelButtons .gwt-Button {
  margin-right: 2em;
  font-size: 7pt;
  padding: 1px;
}

.commentEditorPanel textarea {
  margin-left: 0.5em;
  font-size: small;
  font-family: norm-font;
}


/** Menu **/
.linkMenuBar {
  font-size: 9pt;
  display: inline;
  white-space: nowrap;
  padding-left: 6px;
}
.menuItem {
  padding-left: 5px;
  padding-right: 5px;
}
.linkMenuItemNotLast {
  border-right: 1px solid black;
}

.topmenu {
  width: 100%;
}
.topmenuTDmenu {
  vertical-align: top;
}
.topmenuTDglue {
  width: 100%;
}

.topmenuMenuLeft {
  width: 300px;
  font-size: 9pt;
  padding-top: 5px;
  padding-left: 5px;
  padding-right: 5px;
  background: none;
  position: relative;
  top: 0;
}
.topmenuMenuLeft tbody tr td table {
  border: 0;
}
.topmenuMenuLeft tbody tr td table.gwt-TabBar {
  border-bottom: 1px solid #DDD;
}
.topmenuMenuLeft .gwt-TextBox {
  width: 250px;
}
.topmenuMenuLeft .gwt-Button {
  padding: 3px 6px;
}
.topmenuMenuLeft .gwt-TabBarFirst {
  display: none;
}
.topmenuMenuLeft .gwt-TabBarItem {
  margin: 0px;
  background: transparent;
  padding-top: 0px;
  padding-bottom: 1px;
  padding-left: 1em;
  padding-right: 1em;
}
.topmenuMenuLeft .gwt-TabBarRest {
  background: transparent;
  padding-top: 0px;
}
.topmenuMenuLeft .gwt-TabPanelBottom {
  background: transparent;
  border-top: none;
  border-left: none;
  border-right: none;
  border-bottom: none;
  padding: 1px;
}
.topmenuMenuLeft .menuItem {
  padding-left: 1em;
  padding-right: 1em;
  border-right: none;
}

.topmenuMenuRight {
  float: right;
  text-align: right;
}
.menuBarUserName {
  padding-left: 5px;
  padding-right: 5px;
  white-space: nowrap;
}
.menuBarUserNameAvatar {
  vertical-align: middle;
}
.menuBarUserNameFocusPanel {
  display: inline;
}
.menuBarUserNamePanel {
  display: inline;
  cursor: pointer;
  font-weight: bold;
}
.userInfoPopup {
  border: 1px solid black;
  background: white;
  box-shadow: 3px 3px 5px #888;
  z-index: 200;
}
.searchPanel {
  white-space: nowrap;
  display: inline;
}
.searchPanel .gwt-TextBox {
  font-size: 9pt;
}
.searchPanel .gwt-Button {
  font-size: 9pt;
  margin-left: 2px;
  padding: 3px 6px;
}
.suggestBoxPopup {
  z-index: 200;
}

/** RPC Status **/
.rpcStatus {
  position: fixed;
  top: 6px;
  left: 50%;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 10px;
  padding-right: 10px;
  text-align: center;
  font-weight: bold;
  background: #FFF1A8;
  z-index: 200;
}


/** Error Dialog **/
.errorDialog {
  background: none;
  border: none;
  padding: 10px;
  width: 600px;
  color: backgroundColor;
  font-size: 15px;
  font-family: verdana;
  z-index: 200;
}
.errorDialogGlass {
  opacity: 0.75;
  z-index: 200;
}
@if user.agent safari {
  .errorDialogGlass {
    opacity: 0.80;
  }
}
@if user.agent ie6 ie8 {
  /* IE just doesn't do opacity the way we want, make our dialog
   * stand out in a way that it can't be missed against the page
   */
  .errorDialog {
    color: black;
    background: darkgray;
    border: 10px groove lightgrey;
  }
}
.errorDialogTitle {
  font-size: 30px;
  font-weight: bold;
  margin-bottom: 15px;
}
.errorDialogErrorType {
  font-weight: bold;
  white-space: nowrap;
  margin-bottom: 15px;
}
.errorDialogButtons {
  width: 100%;
  margin-top: 15px;
}
.errorDialogText {
  font-size: 15px;
  font-family: verdana;
}
.errorDialog a,
.errorDialog a:visited,
.errorDialog a:hover {
  color: white;
  font-weight: bold;
  font-size: 15px;
  font-family: verdana;
}
.loadingPluginsDialog {
  background: #fff;
  color: #000;
  width: auto;
}


/** Screen **/
.screen {
}

.screenHeader {
  white-space: nowrap;
  font-size: 16pt;
  margin: 3px 0 8px;
  text-overflow: ellipsis;
  overflow: hidden;
}

.screenNoHeader {
  margin-top: 5px;
}

/** ChangeTable **/
.changeTable {
  border-collapse: separate;
  border-spacing: 0;
}

.changeTable tr:nth-child\(even\) {
  background: tableEvenRowColor;
}

.changeTable tr:nth-child\(odd\) {
  background: tableOddRowColor;
}

.changeTable .outdated {
  background: changeTableOutdatedColor !important;
}

.changeTable .iconCell {
  width: 1px;
  padding: 0px;
  vertical-align: middle;
  border-bottom: 1px solid trimColor;
}

.changeTable .changeTypeCell {
  width: 1px;
  padding-left: 5px;
  padding-right: 5px;
  border-right: 1px solid trimColor;
  border-bottom: 1px solid trimColor;
  vertical-align: top;
}

.changeTable .commentCell {
  text-align: right;
  font-weight: bold;
  white-space: nowrap;
}
.changeTable .commentCell span.drafts {
  color: #ff5555;
}

.changeTable .patchCellReverseDiff {
  color: red;
}

.changeTable .patchSizeCell {
  text-align: right;
  white-space: nowrap;
}
.changeTable td.noborder {
  border: none;
}

.changeTable .filePathCell {
  white-space: nowrap;
}

.changeTable .sourceFilePath {
  font-style: italic;
  font-size: 9pt;
}

.changeTable .diffLinkCell {
  white-space: nowrap;
}

.changeTable .leftMostCell {
  border-left: 1px solid trimColor;
}

.changeTable .topMostCell {
  border-top: 1px solid trimColor;
}

.changeTable .dataCell {
  padding-left: 5px;
  padding-right: 5px;
  border-right: 1px solid trimColor;
  border-bottom: 1px solid trimColor;
  vertical-align: middle;
  height: 20px;
}

.changeTable .dataCellHidden {
  display: none;
}

.changeTable a.gwt-InlineHyperlink,
.changeTable a.gwt-Anchor {
  color: #222 !important;
}

.changeTable .changeSize {
  height: 10px;
  display: inline-block;
  opacity: 0.6;
}

.accountDashboard.changeTable tr {
  color: #444444;
}
.accountDashboard.changeTable tr a {
  color: #444444;
  text-decoration: none;
}
.accountDashboard.changeTable .needsReview,
.accountDashboard.changeTable .needsReview a {
  font-weight: bold;
  color: textColor;
}

.changeTable .activeRow,
.accountDashboard.changeTable .activeRow,
.accountDashboard.changeTable .activeRow a {
  background: selectionColor !important;
}

.changeTable .cSIZE {
  width: 70px;
  text-align: right;
}

.changeTable .cSUBJECT div {
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
}

.changeTable .cOWNER,
.changeTable .cSTATUS {
  white-space: nowrap;
}

.changeTable .cLastUpdate {
  white-space: nowrap;
  text-align: right;
  width: 1em;
}

.changeTable .groupName {
  white-space: nowrap;
}

.changeTable .cAPPROVAL {
  width: 0.5em;
  text-align: center;
}
.changeTable .dataCell.negscore {
  color: red;
}
.changeTable .dataCell.posscore {
  color: #08a400;
}
.changeTable .dataCell.singleLine {
  white-space: nowrap;
}
.changeTable .dataCell.labelNotApplicable {
 background: #F5F5F5;
}
.changeTable .iconHeader {
  border-top: 1px solid backgroundColor;
  border-bottom: 1px solid backgroundColor;
  background-color: trimColor;
}

.changeTable .dataHeader {
  border: 1px solid backgroundColor;
  padding: 2px 6px 1px;
  background-color: trimColor;
  font-style: italic;
  white-space: nowrap;
  color: textColor;
}

.changeTable .dataHeaderHidden {
  display: none;
}

.changeTable .sectionHeader {
  border-top: 8px solid backgroundColor;
  padding: 2px 6px 1px;
  background-color: trimColor;
  white-space: nowrap;
  font-weight: bold;
  color: textColor;
}

.changeTable .emptySection {
  border-left: 1px solid trimColor;
  border-right: 1px solid trimColor;
  border-bottom: 1px solid trimColor;
  font-style: italic;
  padding-left: 25px;
}

.changeTablePrevNextLinks {
  float: right;
  padding-right: 5px;
}
.changeTablePrevNextLinks td {
  width: 5em;
  text-align: right;
}
.changeTablePrevNextLinks .gwt-Hyperlink {
  font-size: 9pt;
  color: #2a5db0;
}


/** PatchScreen **/
.patchScreenDisplayControls .gwt-CheckBox {
  margin-right: 1em;
}

.reviewedPanelBottom {
  float: right;
  font-size: small;
}


/** PatchContentTable **/
.patchContentTable {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  background: white;
  color: black;
}
.patchContentTable td {
  padding-top: 0;
  padding-bottom: 0;
  font-size: 9pt;
  font-family: mono-font;
}

.patchContentTable .iconCell {
  width: 1px;
  padding: 0px;
  vertical-align: middle;
}

.patchContentTable .diffText {
  white-space: pre;
  padding-left: 0.2em;
  border-left: thin solid #b0bdcc;
}

.patchContentTable .diffTextForBinaryInSideBySide {
 width: 50%;
}

.patchContentTable .diffTextFileHeader {
  color: grey;
  font-weight: bold;
}
.patchContentTable .diffTextNoLF {
  color: grey;
  font-weight: bold;
}
.patchContentTable .diffTextHunkHeader {
  color: blue;
}
.patchContentTable .diffTextDELETE {
  color: #a00000;
}
.patchContentTable .diffTextCONTEXT {
  color: grey;
}
.patchContentTable .diffTextINSERT {
  color: #006000;
}

.patchContentTable tr.commentHolder {
  background: #E5ECF9;
}
.patchContentTable tr.commentHolder .iconCell {
  background: white;
}
.patchContentTable tr.commentHolder .iconCellOfFileCommentRow {
  background: trimColor;
}
.patchContentTable td.commentHolder {
  padding-left: 0;
  padding-right: 0;
  border-top: 1px solid black;
  border-right: 1px solid black;
}
.patchContentTable td.commentHolderLeftmost {
  border-left: 1px solid black;
}
.patchContentTable td.commentHolder.commentPanelLast {
  border-bottom: 1px solid black;
}
.patchContentTable .commentPanel {
  font-family: norm-font;
}
.patchContentTable .commentPanel td {
  font-family: norm-font;
}
.patchContentTable .commentPanelMessage {
  padding-left: 1px;
  padding-right: 1px;
  white-space: normal;
}
.patchContentTable .commentPanelButtons,
.patchContentTable .commentPanel textarea {
  margin-left: 1px;
}

.lineNumber {
  padding-left: 0.2em;
  white-space: pre;
  width: 1.5em;
  text-align: center;
  padding-right: 0.2em;
  background: white;
  border-bottom: 1px solid white;
}
.lineNumber.rightmost {
  border-left: thin solid #b0bdcc;
}
.lineNumber.rightBorder {
  border-right: thin solid #b0bdcc;
}
.lineNumber a {
  color: #888;
  text-decoration: none;
}
.patchContentTable td.fileColumnHeader {
  background: trimColor;
  font-family: norm-font;
  font-weight: bold;
  text-align: center;
}
.patchContentTable td.fileColumnHeader.unifiedTableHeader {
  text-align: left;
}
.lineNumber.fileColumnHeader {
  border-bottom: 1px solid trimColor;
}
.noLineLineNumber {
  font-family: mono-font;
  width: 3.5em;
  padding-left: 0.2em;
  padding-right: 0.2em;
  background: white;
  border-bottom: 1px solid white;
}

.fileLine {
  padding-left: 0;
  padding-right: 0;
  white-space: pre;
  border-left: thin solid #b0bdcc;
}
.fileLineNone {
  background: #eeeeee;
  border-bottom: 1px solid #eeeeee;
}
.fileLineMode {
  font-weight: bold;
}
.fileLineDELETE,
.fileLineDELETE .wdc {
  background: #ffeeee;
  border-bottom: 1px solid #ffeeee;
}
.fileLineCONTEXT {
  background: white;
  border-bottom: 1px solid white;
}
.fileLineINSERT,
.fileLineINSERT .wdc {
  background: #ddffdd;
  border-bottom: 1px solid #ddffdd;
}
.patchContentTable .wdd {
  border-bottom: 1px solid #FAA;
}
.patchContentTable .wdi {
  border-bottom: 1px solid #9F9;
}

.patchContentTable .skipLine .iconCell,
.patchContentTable .skipLine {
  font-family: norm-font;
  text-align: center;
  font-style: italic;
  background: #def;
  color: grey;
}
.patchContentTable .skipLine div {
  display: inline;
}
.patchContentTable a.skipLine {
  color: grey;
  text-decoration: none;
}
.patchContentTable a:hover.skipLine {
  background: white;
  color: #00A;
  text-decoration: underline;
}

.patchContentTable td.cellsNextToFileComment {
  background: trimColor;
  border-top: trimColor;
  border-bottom: trimColor;
}
.patchContentTable .activeRow .iconCell,
.patchContentTable .activeRow .lineNumber {
  background: selectionColor;
}
.patchContentTable .activeRow .iconCell,
.patchContentTable .activeRow .lineNumber,
.patchContentTable .activeRow .fileLine,
.patchContentTable .activeRow .diffText,
.patchContentTable .activeRow td.commentHolder,
.patchContentTable .activeRow .wdc,
.patchContentTable .activeRow .wdd,
.patchContentTable .activeRow .wdi,
.patchContentTable .activeRow .iconCellOfFileCommentRow,
.patchContentTable .activeRow td.commentHolder.commentPanelLast  {
  border-bottom: 1px solid blue;
}

.patchContentTable .fileCommentBorder .iconCellOfFileCommentRow,
.patchContentTable .fileCommentBorder .lineNumber,
.patchContentTable .fileCommentBorder .diffText {
  height: 20px;
  background: trimColor;
  border-bottom: 1px solid trimColor;
}

/** Change **/
.changeScreenStarIcon {
  margin-right: 5px;
}

.changeScreen .gwt-DisclosurePanel .header td {
  font-weight: bold;
  white-space: nowrap;
}

.changeScreen .gwt-DisclosurePanel .complexHeader {
  white-space: nowrap;
}
.changeScreen .gwt-DisclosurePanel .complexHeader span {
  white-space: nowrap;
}

.patchSetRevision {
  padding-left: 20px;
  font-size: 8pt;
}

.patchSetLink {
  padding-left: 0.5em;
  font-size: 8pt;
}

.changeScreen .gwt-DisclosurePanel .content {
  margin-bottom: 10px;
}

.gwt-DisclosurePanel .content {
  margin-left: 10px;
}

.changeScreenDescription,
.changeScreenDescription textarea {
  white-space: pre;
  font-family: mono-font;
  font-size: 9pt;
}
.changeScreenDescription p {
  margin-top: 0px;
  padding-top: 0.5em;
}

.changeComments {
  padding-top: 1em;
  width: 60em;
}

.infoTable {
  border-collapse: collapse;
  border-spacing: 0;
}

.infoTable td {
  border-left: 1px solid trimColor;
  border-bottom: 1px solid trimColor;
  padding: 2px 6px 1px;
}

.infoTable td.header {
  background-color: trimColor;
  font-weight: normal;
  padding: 2px 4px 0 6px;
  font-style: italic;
  text-align: left;
  vertical-align: top;
  white-space: nowrap;
}

.rightmost  {
  border-right: 1px solid trimColor;
}

.sideBySideTableBinaryHeader {
  border-left:  thin solid #b0bdcc;
  width: 100%;
  color: grey;
  font-weight: bold;
}

.infoTable td.approvalrole {
  width: 5em;
  border-left: none;
  font-style: italic;
  white-space: nowrap;
}

.infoTable td.approvalscore {
  text-align: center;
}
.infoTable td.notVotable {
  background: #F5F5F5;
}
.infoTable td.negscore {
  color: red;
}
.infoTable td.posscore {
  color: #08a400;
}

.infoTable td.approvalhint {
  white-space: nowrap;
  text-align: left;
  color: #444444;
}

.changeInfoBlock {
  margin-right: 15px;
}

.changeInfoTopicPanel img {
  float: right;
}

.changeInfoTopicPanel a {
  float: left;
}

.avatarInfoPanel {
  margin-right: 10px;
}
.avatarInfoPanel td {
  text-align: center;
}

.infoBlock {
  border-collapse: collapse;
  border-spacing: 0;
}

.infoBlock td {
  padding: 2px 4px 2px 6px;
  border-right: 1px solid trimColor;
  border-bottom: 1px solid trimColor;
  text-align: left;
  white-space: nowrap;
}

.infoBlock td td {
  padding-left: 0px;
  border-right: 0px;
}

.infoBlock td.topmost {
  border-top: 1px solid trimColor;
}

.infoBlock td.header {
  background-color: trimColor;
  font-style: italic;
  text-align: right;
}

.infoBlock td.noborder {
  border-right: none;
}

.infoBlock td.bottomheader {
  border-bottom: 1px solid trimColor;
}

.infoBlock td.closedstate {
  font-weight: bold;
}

.infoBlock td.useridentity {
  white-space: nowrap;
}
.changeInfoBlock td.changeid {
  font-size: x-small;
}


.patchSetInfoBlock {
  margin-bottom: 10px;
}
.patchSetUserIdentity {
  white-space: nowrap;
}
.patchSetUserIdentity .gwt-InlineLabel {
  margin-left: 0.2em;
}

.patchSetActions {
  margin-bottom: 10px;
}
.patchSetActions .gwt-Button {
  margin-right: 30px;
  font-size: 8pt;
}

.selectPatchSetOldVersion {
  font-weight: bold;
  margin-right: 30px;
  margin-top: 5px;
}

.approvalTable {
  margin-top: 1em;
  margin-bottom: 1em;
}
.missingApprovalList {
  margin-top: 5px;
  margin-left: 1em;
  padding-left: 1em;
  margin-bottom: 0px;
}
.missingApproval {
  font-size: small;
  white-space: nowrap;
}
.addReviewer {
  margin-left: 1em;
  margin-top: 5px;
  white-space: nowrap;
}
.removeReviewer {
  padding: 0px;
}
td.removeReviewerCell {
  padding-left: 4em;
  border-left: none;
}

.downloadBox {
  min-width: 580px;
  margin: 5px;
}
.downloadBoxTable {
  border-spacing: 0;
  width: 100%;
}
.downloadBoxTableCommandColumn {
  text-align: left;
  font-weight: normal;
  white-space: nowrap;
  max-height: 18px;
  width: 80px;
  padding-right: 5px;
}
.downloadBoxSpacer {
  margin-left: 5px;
  margin-right: 5px;
}
.downloadBoxScheme {
  float: right;
}
.downloadBoxCopyLabel {
  font-size: smaller;
  font-family: monospace;
}
.downloadBoxCopyLabel span {
  width: 500px;
  white-space: nowrap;
  display: inline-block;
  overflow: hidden;
  text-overflow: ellipsis;
}
.downloadBoxCopyLabel .gwt-TextBox {
  padding: 0;
  margin: 0;
  border: 0;
  max-height: 18px;
  width: 500px;
}
.downloadBoxCopyLabel div {
  float: right;
}
td.downloadLinkListCell {
  padding: 0px;
}
.downloadLinkHeader {
  background: trimColor;
  white-space: nowrap;
  border-bottom: 1px solid black;
}
.downloadLinkHeaderGap {
  margin-left: 5em;
}
.downloadLinkList {
  display: inline;
  white-space: nowrap;
}
.downloadLink {
  color: black;
  text-decoration: none;
  white-space: nowrap;
  background: trimColor;
  border-right: 1px solid black;
  padding-left: 0.5em;
  padding-right: 0.5em;
}
a:hover.downloadLink {
  color: black;
}
.downloadLink_Active {
  background: selectionColor;
}
.downloadLinkCopyLabel {
  white-space: pre;
  font-family: mono-font;
  font-size: 12px;
  margin-left: 0.5em;
  margin-right: 0.5em;
}
.downloadLinkCopyLabel .gwt-TextBox {
  width: 30em;
}

.parentsTable {
  border-style: none;
  border: 1px 1px 1px 0px;
  outline: 0px;
  padding: 0px;
  border-spacing: 0px;
  text-align: left;
  font-family: mono-font;
  font-size: 10px;
}

.parentsTable td.noborder {
  border: none;
}

.parentsTable td.monospace {
  font-family: mono-font;
  font-size: 10px;
  margin: 0px;
  padding-left: 0px;
}

/** UnifiedScreen **/
.unifiedTable {
  width: 100%;
  border: 1px solid #B0BDCC;
  display: table;
}

/** SideBySideScreen **/
.sideBySideScreenSideBySideTable {
  width: 100%;
  border: 1px solid #B0BDCC;
  display: table;
}

.sideBySideScreenSideBySideTable .fileLine {
  width: 50%;
}

.sideBySideScreenLinkTable {
  width: 100%;
}
.sideBySideScreenLinkTable td {
  width: 33%;
}

.patchNoDifference {
  margin-top: 1em;
  margin-bottom: 2em;
  margin-left: 1em;
  margin-right: 5em;
  font-weight: bold;
  font-size: medium;
  font-family: norm-font;
}

/** Patch History Table **/
.patchHistoryTable {
  width: auto;
  margin-bottom: 10px;
}

.patchHistoryTable .dataCell {
  white-space: nowrap;
}

.patchHistoryTablePatchSetHeader {
  text-align: right;
}


/** AccountSettings  **/
.usernameField {
  white-space: nowrap;
}
.accountUsername {
  font-family: mono-font;
  font-size: small;
}
.accountPassword {
  font-family: mono-font;
  font-size: small;
}
.sshKeyPanelEncodedKey {
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
  font-family: mono-font;
  font-size: small;
}
.sshKeyPanelInvalid {
  white-space: nowrap;
  color: red;
  font-weight: bold;
}
.identityUntrustedExternalId {
  white-space: nowrap;
  color: red;
  font-weight: bold;
}

.accountInfoBlock {
  margin-bottom: 10px;
}
.accountInfoBlock .gwt-Button {
  margin-left: 10px;
}
.accountContactPrivacyDetails {
  margin-left: 10px;
  margin-top: 5px;
  margin-bottom: 5px;
  width: 40em;
}
.accountContactOnFile {
  margin-left: 10px;
  margin-top: 5px;
  margin-bottom: 5px;
  font-weight: bold;
}

.addWatchPanel {
  margin-top: 10px;
  padding: 5px 5px 5px 5px;
}
.watchedProjectFilter {
  margin-left: 1em;
  color: grey;
}

.addBranch {
  margin-top: 10px;
  background-color: trimColor;
  padding: 5px 5px 5px 5px;
}

.addSshKeyPanel {
  margin-top: 10px;
  background-color: trimColor;
  padding: 5px 5px 5px 5px;
}

.addSshKeyPanel ol {
  margin-top: 0px;
  margin-bottom: 5px;
}

.addSshKeyPanel td {
  width: 100%;
}

.createGroupLink {
  margin-bottom: 10px;
}

.createProjectPanel {
  margin-bottom: 10px;
  background-color: trimColor;
  padding: 5px 5px 5px 5px;
}

.sshHostKeyPanel {
  margin-top: 10px;
  border: 1px solid trimColor;
  padding: 5px 5px 5px 5px;
}
.sshHostKeyPanelHeading {
  white-space: nowrap;
  margin-top: 5px;
  margin-left: 1em;
}
.sshHostKeyPanelFingerprintData {
  margin-left: 2em;
  white-space: nowrap;
  font-family: mono-font;
  font-size: small;
}
.sshHostKeyPanelKnownHostEntry {
  margin-left: 2em;
  white-space: nowrap;
  font-family: mono-font;
  font-size: small;
  width: 80em;
}

.contributorAgreementButton {
  font-weight: bold;
}

.contributorAgreementShortDescription {
  margin-left: 20px;
  margin-right: 20px;
  margin-bottom: 10px;
  padding: 5px 5px 5px 5px;
  border: 1px solid #b0bdcc;
}

.contributorAgreementAlreadySubmitted {
  margin-left: 20px;
  margin-right: 20px;
  padding: 5px 5px 5px 5px;
  color: red;
}

.contributorAgreementLegal {
  margin-left: 20px;
  margin-right: 20px;
  padding: 5px 5px 5px 5px;
  border: 1px solid #b0bdcc;
}

.registerScreenSection {
  margin-top: 2em;
}
.registerScreenExplain {
  margin-left: 10px;
  margin-top: 5px;
  margin-bottom: 5px;
  width: 45em;
}
.registerScreenNextLinks {
  margin-top: 2em;
}
.registerScreenNextLinks .gwt-InlineHyperlink {
  margin-left: 2em;
  white-space: nowrap;
}
.registerScreenSection .changeTable {
  width: 45em;
}
.registerScreenSection .addSshKeyPanel {
  background: none;
}
.registerScreenSection .sshHostKeyPanel {
  border: none;
}
.registerScreenSection .sshHostKeyPanel .sshHostKeyPanelKnownHostEntry {
  width: 45em;
}

.projectAdminLabelRangeLine {
  white-space: nowrap;
}
.projectAdminLabelValue {
  font-family: mono-font;
  font-size: small;
}
.projectActions {
  margin-bottom: 10px;
}

/** PublishCommentsScreen **/
.publishCommentsScreen .smallHeading {
  font-size: small;
  font-weight: bold;
  white-space: nowrap;
}
.publishCommentsScreen .labelList {
  margin-bottom: 10px;
  margin-left: 10px;
  background: trimColor;
  width: 25em;
  white-space: nowrap;
  padding-top: 2px;
  padding-bottom: 2px;
}
.publishCommentsScreen .coverMessage {
  margin-left: 10px;
  padding: 5px 5px 5px 5px;
}
.publishCommentsScreen .coverMessage textarea {
  font-size: small;
}
.publishCommentsScreen .labelList .gwt-RadioButton {
  font-size: smaller;
}
.publishCommentsScreen .patchComments {
  margin-left: 1em;
  margin-right: 0.5em;
  margin-bottom: 0.5em;
}
.publishCommentsScreen .gwt-Hyperlink {
  white-space: nowrap;
  font-size: small;
}
.publishCommentsScreen .lineHeader {
  white-space: nowrap;
  font-family: mono-font;
  font-size: small;
  font-style: italic;
  padding-left: 3px;
}
.publishCommentsScreen .commentPanel {
  border: none;
  width: 35em;
}
.publishCommentsScreen .commentPanelDateCell {
  display: none;
}


/** CommentedActionDialog **/
.commentedActionDialog .gwt-DisclosurePanel .header td {
  font-weight: bold;
  white-space: nowrap;
}
.commentedActionDialog .smallHeading {
  font-size: small;
  font-weight: bold;
  white-space: nowrap;
}
.commentedActionDialog .commentedActionMessage {
  margin-left: 10px;
  background: trimColor;
  padding: 5px 5px 5px 5px;
}
.commentedActionDialog .commentedActionMessage textarea {
  font-size: small;
}
.commentedActionDialog .gwt-Hyperlink {
  white-space: nowrap;
  font-size: small;
}

/** PatchBrowserPopup **/
.patchBrowserPopup {
  opacity: 0.90;
}
.patchBrowserPopupBody {
  background: backgroundColor;
  margin: 4px;
  opacity: 0.90;
}


/** AccountGroupInfoScreen **/
.groupUUIDPanel {
  margin-bottom: 10px;
}
.groupDescriptionPanel {
  margin-bottom: 3px;
}
.groupExternalNameFilterTextBox {
  margin-right: 2px;
  margin-bottom: 2px;
}
.groupNamePanel {
  margin-bottom: 3px;
}
.groupNameTextBox {
  margin-bottom: 2px;
}
.groupOptionsPanel {
  margin-bottom: 5px;
}
.groupOwnerPanel {
  margin-bottom: 3px;
}
.groupOwnerTextBox {
  margin-bottom: 2px;
}
.groupTypeSelectListBox {
  margin-bottom: 2px;
}


/** AccountGroupMembersScreen **/
.groupMembersTable {
  margin-bottom: 2px;
}
.groupIncludesTable {
  margin-bottom: 2px;
}


/** AddMemberBox **/
.addMemberTextBox {
  margin-right: 2px;
  margin-bottom: 2px;
}


/** ProjectBranchesScreen **/
.specialBranchIconCell {
  background: #ECECEC;
  border-bottom: 1px solid #FFFFFF;
  border-top: 1px solid #FFFFFF;
}
.specialBranchDataCell {
  background: #ECECEC;
  border: 1px solid white;
  font-style: italic;
  padding: 2px 6px 1px;
}

.editHeadButton {
  float: right;
  cursor: pointer;
}

/** PluginListScreen **/
.pluginsTable {
}

/** ProjectListScreen **/
.projectFilterPanel {
  margin-bottom: 10px;
}
.projectFilterPanel input {
  width: 200px;
}
.projectFilterLabel {
  margin-right: 5px;
}
.projectNameColumn {
  min-width: 300px;
}

/** ProjectSettings */
.maxObjectSizeLimitEffectiveLabel {
  padding-top: 5px;
  padding-left: 5px;
}

.pluginProjectConfigInheritedValue {
  padding-top: 5px;
  padding-left: 5px;
}

/* StringListPanel */
.stringListPanelButtons {
  margin-left: 0.5em;
}
.stringListPanelButtons .gwt-Button {
  margin-right: 2em;
  font-size: 7pt;
  padding: 1px;
}
