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

.trace-info-page {
  overflow-y: auto;
  overflow-x: hidden;
  padding: 0 20px;
  user-select: text;

  section {
    margin: 20px auto;
    max-width: 800px;
    font-size: 1rem;
    padding: 20px;
    border-radius: 8px;

    &.errors {
      background-color: #F3E5F5;
    }

    .metric-error {
      font-family: var(--monospace-font);
      font-size: 12px;
      padding: 5px;
      word-break: break-all;
    }

    h2 {
      font-family: 'Raleway', sans-serif;
      font-weight: 400;
      letter-spacing: 0.25px;
      font-size: 2rem;
      margin-bottom: 1rem;
    }

    h3 {
      font-size: 0.9rem;
      font-weight: 400;
      line-height: 1.25rem;
      margin: 10px 0;
      color: #333;
    }

    .contextual-help {
      font-size: 18px;
      margin-left: 10px;
      color: #43a047;
      cursor: default;
    }

    table {
      border-spacing: 4px 1px;

      thead td {
        margin-bottom: 5px;
        padding-bottom: 5px;
        border-bottom: 1px solid #333;
        font-weight: 500;
      }
      tr td {
        min-height: 20px;
      }

      tbody {
        tr:nth-child(2n + 1) td {
          background-color: rgba(0, 0, 0, 0.04);
        }

        td {
          font-family: var(--monospace-font);
          font-size: 12px;
          padding: 5px;
          word-break: break-all;
          white-space: pre-wrap;
          &:first-of-type {
            font-weight: 800;
          }
        }
      }
    }
  }
}
