/*
  Copyright (c) 2016 The Flutter Authors. All rights reserved.
  Use of this source code is governed by a BSD-style license that can be
  found in the LICENSE file.
*/

@import url(https://fonts.googleapis.com/css?family=Roboto:300);

body {
  background: #fafafa;
  font: 16px Roboto, sans-serif;
  font-weight: 300;
  color: #333;
  padding: 0;
  margin: 0 0 30px 0;
}

.card-container {
  display: flex;
  flex-flow: wrap;
  justify-content: space-around;
}

benchmark-card {
  display: inline-block;
  position: relative;
  height: 100px;
  padding: 0;
  margin: 5px;

  background: #ffffff;
  border-radius: 4px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
  text-align: center;

  /* center the inside contents */
  display: flex;
  flex-direction: row-reverse;
  overflow: hidden;
}

.short-benchmark-card {
  width: 250px;
}

.benchmark-history-container {
  margin-bottom: 15px;
  padding-bottom: 15px;
  border-bottom: 1px solid #ccc;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  background: white;
  color: black;
  box-shadow: 0 5px 10px 0 #666;
  z-index: 3;
}

.benchmark-history-container + * {
  padding-top: 320px;
}

.metric {
  position: absolute;
  bottom: 25px;
  left: 5px;
  white-space: nowrap;
  z-index: 1;
}

.metric-chart-container {
  display: flex;
  flex-direction: row;
  align-items: flex-end;
}

.metric-goal {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  border-top: 1px dashed #00C853;
  pointer-events: none;
  z-index: 2;
}

.metric-baseline {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  border-top: 1px dashed #DD2C00;
  pointer-events: none;
  z-index: 2;
}

.metric-value {
  font-size: 12px;
  font-weight: 900;
}

.metric-value-bar {
  width: 5px;
  background-color: #FFFFFF;
  border-color: #66BB6A;
  border-style: solid;
  display: inline-block;
  position: relative;
}

.metric-value-bar-missing {
  border-color: #EEEEEE;
}

.metric-value-bar-narrow {
  width: 2px;
}

.metric-value-bar-underperformed {
  border-color: #E65100;
}

.metric-value-bar-needs-work {
  border-color: #A5D6A7;
}

.metric-value-tooltip {
  background-color: white;
  box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
  border-radius: 4px;
  padding: 5px;
  position: fixed;
  white-space: pre;
  z-index: 4;
}

.metric-unit {
  font-size: 10px;
}

.metric-task-name {
  position: absolute;
  bottom: 15px;
  left: 5px;
  font-size: 10px;
  z-index: 1;
}

.metric-label {
  position: absolute;
  bottom: 5px;
  left: 5px;
  font-size: 10px;
  z-index: 1;
}

.zoom-button {
  position: absolute;
  top: 0;
  right: 0;
  background-color: #f7f7f7;
  border-radius: 4px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
  padding: 3px;
  cursor: pointer;
  opacity: 0;
}

.zoom-button:hover {
  opacity: 1.0;
}

footer {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 2px 19px;
  z-index: 2;
  background-color: #E0E0E0;
  display: flex;
}

footer span {
  vertical-align: bottom;
}

footer i.material-icons {
  vertical-align: bottom;
}
