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


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


/** Screen **/
.screen {
}

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


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

.changeTable .outdated {
  background: red;
}

.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;
  background: #F6F6F6;
}
.accountDashboard.changeTable tr a {
  color: #444444;
  text-decoration: none;
}
.accountDashboard.changeTable .needsReview,
.accountDashboard.changeTable .needsReview a {
  font-weight: bold;
  color: textColor;
  background: backgroundColor;
}

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

.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;
  border-right: thin solid #b0bdcc;
  padding-right: 0.2em;
  background: white;
  border-bottom: 1px solid white;
}
.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;
}
.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: lightblue;
}
.patchContentTable .skipLine div {
  display: inline;
}

.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.permalink {
  border-right: 1px none;
  border-bottom: 1px none;
  text-align: right;
}
.infoBlock td.permalink div div {
  display: inline;
}

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

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

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

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