/*
 * Copyright 2011 Google Inc. 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.
 */

.gaf-chart {
  float: left;
  height: 250px;
  width: 400px;
}

.gaf-post-charts-div {
  clear: both;
}

#gaf-config-table {
  border: none;
  font-family: monospace;
  white-space: pre;
}

#gaf-stats {
  float: left;
}

#gaf-status {
  margin: 0 5em 0 0;
}

#gaf-status-table td {
  border-bottom: 1px dotted black;
}

#gaf-status-table tr:last-child td {
  border-bottom: none;
}

.gaf-status-unavailable,
.gaf-status-inactive,
.gaf-status-normal,
.gaf-status-warning,
.gaf-status-error {
  display: inline-block;
  border: 1px solid black;
  height: .5em;
  margin: 0 .5em 0 1em;
  width: 1em;
}

.gaf-status-unavailable {
  background: black;
}

.gaf-status-inactive {
  background: white;
}

.gaf-status-normal {
  background: #3c3;
}

.gaf-status-warning {
  background: yellow;
}

.gaf-status-error {
  background: #f33;
}

#gaf-log {
  height: 20em;
  overflow: auto;
}

#gaf-start-feed-push-success, #gaf-incremental-feed-push-success {
  color: green;
}

#gaf-start-feed-push-error, #gaf-incremental-feed-push-error {
  color: red;
}

#gaf-sec-encoded {
  font-family: monospace;
  width: 30em;
}
