/*
Copyright 2014 The Cobalt Authors. All Rights Reserved.

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

body {
  background: #fff;
  font-size: 10px;
  margin: 30px;
  width: 1280px;
}

textarea { color: #369; }

h2 {
  margin: 10px 0 0 0;
}

h3 {
  margin: 10px 0 0 0;
}

.test-table .index { width: 30px; text-align: right; }
.test-table .status {
  width: 20px;
  color: #fff;
  text-align: right;
}

.test-table .status_current {
  width: 20px;
  text-align: right;
}

.test-table .desc { width: 200px; }
.test-table .state { width: 30px; text-align: center; }
.test-table .failstate { width: 30px; text-align: center; }

.test-table {
  width: 380px;
  text-align: left;
  margin: 0px;
  display: inline-block;
}

.test-table th {
  font-weight: bold;
  color: #039;
  padding: 10px 8px 4px;
}

.test-table td {
  font-size: 9px;
  color: #669;
  padding: 9px 8px 0;
}

.test-table td.failstate {
  font-size: 9px;
  color: #f00;
  padding: 9px 8px 0;
}

.test-table td.small {
  font-size: 6px;
  color: #0a0;
  padding: 9px 8px 0;
}

.compact-list .cell-category {
  font-weight: bold;
  color: #039;
}

.compact-list .cell-divider {
  width: 5px;
}

.compact-list .cell-status-normal {
  text-align: center;
}

.compact-list .cell-status-running {
  text-align: center;
}

.compact-list .cell-status-fail {
  background-color: #800;
  color: #FFF;
  text-align: center;
}

.compact-list .cell-status-pass {
  background-color: #080;
  color: #FFF;
  text-align: center;
}

.compact-list .test-status-none {
  width: 5px;
}

.compact-list .test-status-running {
  width: 5px;
  background-color: #880;
}

.compact-list .test-status-fail {
  width: 5px;
  background-color: #800;
}

.compact-list .test-status-pass {
  width: 5px;
  background-color: #080;
}

.compact-list .test-status-optional-fail {
  width: 3px;
  padding: 0px;
}

ul {
  padding-left: 20px;
  margin-top: 5px;
}

div.container {
  width:100%;
  margin:5px 0 5px 0;
  padding:5px 0 5px 0;
  overflow:hidden;
}

div.container_hidden {
  width:100%;
  margin:10px 0 10px 0;
  overflow:hidden;
  display:none;
}

.box-left {
  width:740px;
}

.box-right {
  width:420px;
}

.desc-expl-popup {
  position: absolute;
  padding: 0.5em;
  z-index: 100;
  display: none;
}

span.nowrap {
  display: inline-block;
  margin: 0px 10px 0px 0px;
  width: 200px;
}

span.code {
}

.rightmargin20 {
  margin-left: 0px;
  margin-right: 20px;
}

.rightmargin20new {
  margin-left: 0px;
  margin-right: 20px;
  color: #f00;
  font-weight: bold;
}

a.title_link {
  color: #000;
}
