/* Copyright (C) 2013 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 .cm-s-midnight;
@external .cm-s-night;
@external .cm-s-twilight;
@external .com-google-gerrit-client-diff-PublishedBox_BinderImpl_GenCss_style-name;
@external .com-google-gerrit-client-diff-Resources-Style-message;
@external .com-google-gerrit-client-diff-Resources-Style-date;
@external .com-google-gerrit-client-diff-DiffTable_BinderImpl_GenCss_style-rangeHighlight;

.cm-s-midnight .com-google-gerrit-client-diff-PublishedBox_BinderImpl_GenCss_style-name { color: black }
.cm-s-midnight .com-google-gerrit-client-diff-Resources-Style-message { color: black }
.cm-s-midnight .com-google-gerrit-client-diff-Resources-Style-date { color: black }
.cm-s-midnight .com-google-gerrit-client-diff-DiffTable_BinderImpl_GenCss_style-rangeHighlight { color: #777 }

.cm-s-night .com-google-gerrit-client-diff-PublishedBox_BinderImpl_GenCss_style-name { color: black }
.cm-s-night .com-google-gerrit-client-diff-Resources-Style-message { color: black }
.cm-s-night .com-google-gerrit-client-diff-Resources-Style-date { color: black }
.cm-s-night .com-google-gerrit-client-diff-DiffTable_BinderImpl_GenCss_style-rangeHighlight { color: #777 }

.cm-s-twilight .com-google-gerrit-client-diff-PublishedBox_BinderImpl_GenCss_style-name { color: black }
.cm-s-twilight .com-google-gerrit-client-diff-Resources-Style-message { color: black }
.cm-s-twilight .com-google-gerrit-client-diff-Resources-Style-date { color: black }
.cm-s-twilight .com-google-gerrit-client-diff-DiffTable_BinderImpl_GenCss_style-rangeHighlight { color: #777 }

.commentWidgets {
  max-width: 650px;

  font-family: sans-serif;
  background-color: #fcfa96;
  border: 1px solid black;
  -webkit-box-shadow: 3px 3px 3px #888888;
  -moz-box-shadow: 3px 3px 3px #888888;
  box-shadow: 3px 3px 3px #888888;

  /* margin-bottom is fixed in CommentGroup.computeHeight() */
  margin-bottom: 5px;
  margin-right: 5px;

  -webkit-touch-callout: initial;
  -webkit-user-select: initial;
  -khtml-user-select: initial;
  -moz-user-select: text;
  -ms-user-select: initial;
}

.commentBox {
  position: relative;
  min-height: 16px;
}

.header {
  cursor: pointer;
}

.summary {
  color: #777;
  position: absolute;
  top: 1px;
  left: 120px;
  width: 408px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  padding-bottom: 0.1em;
}

.date {
  white-space: nowrap;
  position: absolute;
  top: 2px;
  right: 5px;
}

.contents {
  margin-left: 28px;
  padding-top: 2px;
  position: relative;
}
.message {
  overflow-x: auto;
}
.message p,
.message ul,
.message blockquote {
  -webkit-margin-before: 0.2em;
  -webkit-margin-after: 0.3em;
}
.message {
  white-space: pre-wrap;
}
.commentBox button {
  margin-right: 3px;
  margin-bottom: 1px;
  padding: 1px;
  text-align: center;
  font-size: 8px;
  font-weight: bold;
  border: 1px solid black;
  cursor: pointer;
  color: #fff;
  background-color: #4d90fe;
  background-image: -webkit-linear-gradient(top, #4d90fe, #4d90fe);
  -webkit-border-radius: 2px;
  -webkit-box-sizing: content-box;
}
.commentBox button div {
  width: 25px;
  white-space: nowrap;
  color: #fff;
}

@sprite .goPrev {
  gwt-image: "goPrev";
  display: inline-block;
}
@sprite .goNext {
  gwt-image: "goNext";
  display: inline-block;
}
@sprite .goUp {
  gwt-image: "goUp";
  display: inline-block;
}
