/* Copyright (C) 2014 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.
 */

/*
 * Styles for the Tag Diff
 */
span.diff-tag-html {
  font-family: "Andale Mono" monospace;
  font-size: 80%;
}

span.diff-tag-removed {
  font-size: 100%;
  text-decoration: line-through;
  background-color: #fdc6c6; /* light red */
}

span.diff-tag-added {
  display: none;
}

span.diff-tag-conflict {
  font-size: 100%;
  background-color: #f781be; /* light rose */
}

/*
 * Styles for the HTML Diff
 */
span.diff-html-added {
  display: none;
}

span.diff-html-removed {
  font-size: 100%;
  text-decoration: line-through;
  background-color: #fdc6c6; /* light red */
}

span.diff-html-changed {
  background: url(../images/diffunderline.gif) bottom repeat-x;
  *background-color: #c6c6fd; /* light blue */
}

span.diff-html-conflict {
/*  background: url(../images/diffunderline.gif) bottom repeat-x; */
  background-color: #f781be; /* light rose */
}

span.diff-html-selected {
  background-color: #FF8800; /* light orange */
}

span.diff-html-selected img{
   border: 2px solid #FF8800; /* light orange */
}

span.diff-html-added img{
 border: 2px solid #ccffcc;
}

span.diff-html-removed img{
 border: 2px solid #fdc6c6;
}

span.diff-html-changed img{
 border: 2px dotted #000099;
}

div.diff-removed-image, div.diff-added-image, div.diff-conflict-image {
  height: 300px;
  width: 200px;
  position: absolute;
  opacity : 0.55;
  filter: alpha(opacity=55);
  -moz-opacity: 0.55;
}

div.diff-removed-image, div.diff-added-image, div.diff-conflict-image  {
  margin-top: 2px;
  margin-bottom: 2px;
  margin-right: 2px;
  margin-left: 2px;
}

div.diff-removed-image {
  background-color: #fdc6c6;
  background-image: url(../images/diffmin.gif);
}
div.diff-added-image {
  background-color: #ccffcc;
  background-image: url(../images/diffplus.gif);
  background-repeat: no-repeat;
}

div.diff-conflict-image {
  background-color: #f781be;
  background-image: url(../images/diffconflict.gif);
  background-repeat: no-repeat;
}

img.diff-icon {
  background-color: #FF8800;
  background-image: url(../images/bg_rounded.gif);
  width: 16px;
  height: 16px;
  border: 0px none;
}

table.diff-tooltip-link, table.diff-tooltip-link-changed {
   width: 100%;
   text-align: center;
   Vertical-align: middle;
}

table.diff-tooltip-link-changed {
    border-top: thin dashed #000000;
    margin-top: 3px;
    padding-top: 3px
}
td.diff-tooltip-prev {
   text-align: left;
}

td.diff-tooltip-next {
   text-align: right;
}

table.diffpage-html-firstlast {
  width: 100%;
  Vertical-align: middle;
}

div.diff-topbar{
 border-bottom: 2px solid #FF8800;
 border-left: 1px solid #FF8800;
 border-right: 1px solid #FF8800;
 background-color: #FFF5F5;
}

a.diffpage-html-a, a.diffpage-html-a:hover, a.diffpage-html-a:link, a.diffpage-html-a:visited, a.diffpage-html-a:active {
  text-decoration: none;
  color: #FF8800;
}

.diffpage-html-firstlast a img, .dsydiff-prevnextnav a img {
  vertical-align: middle;
}

ul.changelist {
  padding-left: 15px;
}

body{
  margin-top: 0px;
}
