/* 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;
}

.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;
}
.commentPanelBorder.commentPanelLast {
  border-bottom: 1px solid lightgray;
}

@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: 10;
}


/** 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;
}


/** 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 a.gwt-InlineHyperlink {
  color: #222 !important;
}

.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 .cSUBJECT div {
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
}

.changeTable .cOWNER {
  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 .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;
}

/** PluginListScreen **/
.pluginsTable {
}

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

/** ProjectSettings */
.maxObjectSizeLimitPanel td {
  padding-right: 5px;
}
