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

@external .gwt-Button;
@external .gwt-TabBar;
@external .gwt-TabBarFirst;
@external .gwt-TabBarItem;
@external .gwt-TabBarItem-selected;
@external .gwt-TabBarRest;
@external .gwt-TabPanelBottom;
@external .gwt-TextBox;
@external .gwt-Hyperlink;
@external .gwt-CheckBox;
@external .gwt-DisclosurePanel, .header, .content;
@external .gwt-InlineLabel;
@external .gwt-InlineHyperlink;
@external .gwt-RadioButton;

@external .searchPanel;
@external .smallHeading;
@external .wdi;
@external .wdd;
@external .wdc;

@def black #000000;
@def white #ffffff;
@def norm-font  Arial Unicode MS, Arial, sans-serif;
@def mono-font 'Lucida Console', 'Lucida Sans Typewriter', Monaco, 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";
}

.gerritTopMenu {
  font-size: 9pt;
  padding-top: 5px;
  padding-left: 5px;
  padding-right: 5px;
  background: topMenuColor;
}
.gerritTopMenu .gwt-TabBar .gwt-TabBarItem,
.gerritTopMenu .gwt-TabBar .gwt-TabBarRest,
.gerritTopMenu .gwt-TabBar .gwt-TabPanelBottom {
  background: topMenuColor;
}
.gerritTopMenu .gwt-TabBar .gwt-TabBarItem-selected {
  background: selectionColor;
}

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

.version,
.keyhelp {
  color: #a0adcc;
  right: 0;
  padding-right: 10px;
  text-align: right;
}

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


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

.hyperlink {
  text-decoration: underline;
}

.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;
}


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


/** 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;
}
.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;
  border-left: 1px solid topMenuColor;
  border-right: 1px solid topMenuColor;
  border-bottom: 1px solid topMenuColor;
}
.topmenuMenuLeft .gwt-TabBarFirst {
  display: none;
}
.topmenuMenuLeft .gwt-TabBarItem {
  margin: 0px;
  background: topMenuColor;
  padding-top: 0px;
  padding-bottom: 1px;
  padding-left: 1em;
  padding-right: 1em;
  border-right: 1px solid black;
}
.topmenuMenuLeft .gwt-TabBarItem-selected {
  background: selectionColor;
}
.topmenuMenuLeft .gwt-TabBarRest {
  background: topMenuColor;
  padding-top: 0px;
}
.topmenuMenuLeft .gwt-TabPanelBottom {
  background: topMenuColor;
  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 {
  font-weight: bold;
  padding-left: 5px;
  padding-right: 5px;
  white-space: nowrap;
}
.searchPanel {
  white-space: nowrap;
}
.searchPanel .gwt-TextBox {
  font-size: 7pt;
}
.searchPanel .gwt-Button {
  font-size: 7pt;
  margin-left: 2px;
  padding: 1px;
}

/** RPC Status **/
.rpcStatusPanel {
  position: absolute;
  left: 50%;
  float: left;
  top: 6px;
}

.rpcStatus {
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 10px;
  padding-right: 10px;
  text-align: center;
  font-weight: bold;
}

.rpcStatusLoading {
  background: #FFF1A8;
}


/** Error Dialog **/
.errorDialog {
  background: none;
  border: none;
  padding: 10px;
  width: 600px;
  color: backgroundColor;
  font-size: 15px;
  font-family: verdana;
}
.errorDialogGlass {
  opacity: 0.75;
}
@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;
}

.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 .cID {
  width: 3.5em;
}
.changeTable .dataCell.cID {
  font-family: mono-font;
}

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

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


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

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

.patchContentTable .diffText {
  white-space: pre;
  padding-left: 0.2em;
}

.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 td.commentHolder {
  padding-left: 0;
  padding-right: 0;
  border-top: 1px solid black;
  border-left: 1px solid black;
  border-right: 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: 3.5em;
  text-align: right;
  padding-right: 0.2em;
  background: white;
  border-bottom: 1px solid white;
}
.lineNumber.rightmost {
  border-left: 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;
}
.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 .activeRow .iconCell,
.patchContentTable .activeRow .lineNumber {
  background: selectionColor;
}
.patchContentTable .activeRow .iconCell,
.patchContentTable .activeRow .lineNumber,
.patchContentTable .activeRow .fileLine,
.patchContentTable .activeRow .diffText,
.patchContentTable .activeRow .wdc,
.patchContentTable .activeRow .wdd,
.patchContentTable .activeRow .wdi,
.patchContentTable .activeRow td.commentHolder.commentPanelLast  {
  border-bottom: 1px solid blue;
}


/** 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 {
  white-space: pre;
  font-family: mono-font;
  font-size: 8pt;
}
.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;
}

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

.infoTable td.approvalscore {
  text-align: center;
}
.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;
}

.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.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;
}
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;
}

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

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

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

.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;
}

.projectAdminApprovalCategoryRangeLine {
  white-space: nowrap;
}
.projectAdminApprovalCategoryValue {
  font-family: mono-font;
  font-size: small;
}


/** PublishCommentsScreen **/
.publishCommentsScreen .smallHeading {
  font-size: small;
  font-weight: bold;
  white-space: nowrap;
}
.publishCommentsScreen .approvalCategoryList {
  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 .approvalCategoryList .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;
}
.groupTypePanel {
  margin-bottom: 3px;
}
.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 {
}
