// Copyright (C) 2018 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.
:root {
    --sidebar-width: 256px;
    --topbar-height: 48px;
    --monospace-font: 'Roboto Mono', monospace;
    --track-shell-width: 250px;
    --track-border-color: #00000025;
    --anim-easing: cubic-bezier(0.4, 0.0, 0.2, 1)

}

@mixin transition($time:0.1s) {
    transition: opacity $time ease,
                color $time ease,
                background-color $time ease,
                border-color $time ease,
                width $time ease,
                height $time ease,
                max-width $time ease,
                max-height $time ease,
                margin $time ease,
                transform $time ease,
                box-shadow $time ease,
                border-radius $time ease;
}

@mixin material-icon($content) {
    direction: ltr;
    display: inline-block;
    font-family: 'Material Icons';
    font-size: 24px;
    font-style: normal;
    font-weight: normal;
    letter-spacing: normal;
    line-height: 1;
    text-transform: none;
    white-space: nowrap;
    word-wrap: normal;
    -webkit-font-feature-settings: 'liga';
    -webkit-font-smoothing: antialiased;
    content: $content;
}


@mixin track_shell_title() {
  // line-height is deliberately 1px larger than font-size. Roboto seems to
  // overflow on the bottom on "g"s otherwise.
  font-size: 14px;
  line-height: 15px;
  max-height: 30px;
  overflow: hidden;
  text-align: left;
  overflow-wrap: break-word;
  font-family: 'Roboto Condensed', sans-serif;
  font-weight: 300;
  letter-spacing: -0.25px;
}

* {
    box-sizing: border-box;
    -webkit-tap-highlight-color: transparent;
    touch-action: none;
}

html {
    font-family: Roboto, verdana, sans-serif;
    height: 100%;
    width: 100%;
}

html,
body,
body>main {
    height: 100%;
    width: 100%;
    padding: 0;
    margin: 0;
    overscroll-behavior: none;
}

pre, code {
  font-family: var(--monospace-font);
}

// This is to minimize Mac vs Linux Chrome Headless rendering differences
// when running UI intergrationtests via puppeteer.
body.testing {
  -webkit-font-smoothing: antialiased !important;
  font-kerning: none !important;
}

h1,
h2,
h3 {
    font-family: inherit;
    font-size: inherit;
    font-weight: inherit;
    padding: 0;
    margin: 0;
}
table {
    user-select: text;
}

body>main {
    display: grid;
    grid-template-areas:
      "sidebar topbar"
      "sidebar alerts"
      "sidebar page";
    grid-template-rows: auto auto 1fr;
    grid-template-columns: auto 1fr;
    color: #121212;
    overflow: hidden;
}

body.filedrag::after {
  content: 'Drop the trace file to open it';
  position: fixed;
  z-index: 99;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  border: 10px dashed #404854;
  text-align: center;
  font-size: 3rem;
  line-height: 100vh;
  color: #333;
  background: rgba(255, 255, 255, 0.5);
}

button {
  background: none;
  color: inherit;
  border: none;
  padding: 0;
  font: inherit;
  cursor: pointer;
  outline: inherit;
}

button.close {
  font-family: var(--monospace-font);
}

.full-page-loading-screen {
    position: absolute;
    width: 100%;
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: row;
    background: #3e4a5a url('assets/logo-3d.png') no-repeat fixed center;
}

.page {
    grid-area: page;
    position: relative;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.split-panel {
  flex: 1;
  display: flex;
  flex-flow: row;
  position: relative;
  overflow: hidden;
}

.alerts {
  grid-area: alerts;
  background-color: #f2f2f2;
  >div {
    font-family: 'Raleway', sans-serif;
    font-weight: 400;
    letter-spacing: 0.25px;
    padding: 1rem;
    display: flex;
    justify-content: space-between;
    button {
      width: 24px;
      height: 24px;
    }

  }
}

.query-table-container {
  width: 100%;
}

.x-scrollable {
  overflow-x: auto;
}

.query-table {
    width: 100%;
    font-size: 14px;
    border: 0;
    &.pivot-table{
      thead, i {
        cursor: pointer;
        td.drop-location {
          background-color: hsla(210, 38%, 95%, 1);
        }
        .total-aggregation {
          white-space: pre;
          font-weight: 600;
          font-size: 12px
        }
      }
      td {
        height: 25px;
      }
      .disabled {
        cursor: default;
      }
      .dropdown {
        display: inline-block;
        position: relative;
      }
      .indent {
        display: inline-block;
        // 24px is the width of expand_more/expand_less icon to pad out cells
        // without the button
        width: 24px;
      }
      .popup-menu {
        position: absolute;
        background-color: white;
        right: 0;
        box-shadow: 0 0 4px 0 #999;

        &.closed {
          display: none;
        }

        &.open {
          display: block;
        }

        button {
          border-radius: 0;
          margin: 0;
          height: auto;
          background: transparent;
          color: #111;
          font-size: 12px;
          padding: 0.4em 1em;
          white-space: nowrap;
          width: 100%;
          text-align: right;
          line-height: 1;

          &:hover {
            background: #c7d0db;
          }
        }
      }
    }
    thead td {
        position: sticky;
        top: 0;
        background-color: hsl(214, 22%, 90%);
        color: #262f3c;
        text-align: center;
        padding: 1px 3px;
        border-style: solid;
        border-color: #fff;
        border-right-width: 1px;
        border-left-width: 1px;
    }
    tbody tr {
        @include transition();
        background-color: hsl(214, 22%, 100%);
        font-family: var(--monospace-font);
        &:nth-child(even) {
            background-color: hsl(214, 22%, 95%);
        }
        td:first-child {
            padding-left: 5px;
        }
        td:last-child {
            padding-right: 5px;
        }
        &:hover {
            background-color: hsl(214, 22%, 90%);
        }
        &[clickable] {
          cursor: pointer;
        }
    }
}

.query-error {
    padding: 20px 10px;
    color: hsl(-10, 50%, 50%);
    font-family: 'Roboto Condensed', sans-serif;
    font-weight: 300;
}

.track {
    display: grid;
    grid-template-columns: auto 1fr;
    grid-template-rows: 1fr 0;

    &::after {
      display: block;
      content: '';
      grid-column: 1 / span 2;
      border-top: 1px solid var(--track-border-color);
      margin-top: -1px;
      z-index: 2;
    }

    .track-shell {
        @include transition();
        padding-left: 10px;
        display: grid;
        cursor: grab;
        grid-template-areas: "title buttons";
        grid-template-columns: 1fr auto;
        align-items: center;
        width: var(--track-shell-width);
        background: #fff;
        border-right: 1px solid #c7d0db;

        &.drag {
          background-color: #eee;
          box-shadow: 0 4px 12px -4px #999 inset;
        }
        &.drop-before {
          box-shadow: 0 4px 2px -1px hsl(213, 40%, 50%) inset;
        }
        &.drop-after {
          box-shadow: 0 -4px 2px -1px hsl(213, 40%, 50%) inset;
        }

        &.selected {
          background-color: #ebeef9;
        }

        .chip {
          background-color: #bed6ff;
          border-radius: 3px;
          font-size: smaller;
          padding: 0 0.1rem;
          margin-left: 1ch;
        }

        h1 {
            grid-area: title;
            color: hsl(213, 22%, 30%);
            @include track_shell_title();
        }
        .track-buttons {
          grid-area: buttons;
          // This is necessary to center the buttons - but shouldn't be?
          height: 18px;
        }
        .track-button {
          @include transition();
          color: rgb(60, 86, 136);
          cursor: pointer;
          width: 22px;
          font-size: 18px;
          opacity: 0;
        }

        .track-button.show {
          opacity: 1;
        }

        &:hover .track-button{
          opacity: 1;
        }
        &.flash {
          background-color: #ffe263;
        }
    }
}

.scrolling-panel-container {
  position: relative;
  overflow-x: hidden;
  overflow-y: auto;
  flex: 1 1 auto;
  will-change: transform;  // Force layer creation.
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: 1fr;
  grid-template-areas: "space";
}

.details-panel-container {
  position: relative;
  overflow-x: hidden;
  overflow-y: auto;
  flex: 1 1 auto;
  // TODO(hjd): This causes the sticky header to flicker when scrolling.
  // Is will-change necessary in the details panel?
  // will-change: transform;
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: 1fr;
  grid-template-areas: "space";
}

.pinned-panel-container {
  position: relative;
  // Override top level overflow: hidden so height of this flex item can be
  // its content height.
  overflow: visible;
  box-shadow: 1px 3px 15px rgba(23, 32, 44, 0.3);
  z-index: 2;
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: 1fr;
  grid-template-areas: "space";
}

// In the scrolling case, since the canvas is overdrawn and continuously
// repositioned, we need the canvas to be in a div with overflow hidden and
// height equaling the total height of the content to prevent scrolling
// height from growing.
.scroll-limiter {
  position: relative;
  grid-area: space;
  overflow: hidden;
}

canvas.main-canvas {
  z-index: -1;
}

.panels {
  grid-area: space;
  user-select: none;
}

.panel {
  position: relative;  // Otherwise canvas covers panel dom.
}

.pan-and-zoom-content {
  flex: 1;
  position: relative;
  display: flex;
  flex-flow: column nowrap;
}

.overview-timeline {
  height: 100px;
}

.time-axis-panel {
  height: 12px;
}

.tickbar {
  height: 5px;
}

.notes-panel {
  height: 20px;
}

header.overview {
  display: flex;
  align-content: center;
  background-color: hsl(213, 22%, 82%);
  color: hsl(213, 22%, 20%);
  font-family: 'Roboto Condensed', sans-serif;
  font-size: 15px;
  font-weight: 400;
  padding: 4px 10px;
  vertical-align: middle;
  border-color: hsl(213, 22%, 75%);
  border-style: solid;
  border-width: 1px 0;
  .code {
      font-family: var(--monospace-font);
      font-size: 12px;
      margin-left: 10px;
      color: hsl(213, 22%, 40%);
  }
  span.code {
    flex-grow: 1;
  }
}

button.query-ctrl {
  background: #262f3c;
  color: white;
  border-radius: 10px;
  font-size: 10px;
  height: 18px;
  line-height: 18px;
  min-width: 7em;
  margin: auto 0 auto 1rem;
}

.debug-panel-border {
  position: absolute;
  top: 0;
  height: 100%;
  width: 100%;
  border: 1px solid rgba(69, 187, 73, 0.5);
  pointer-events: none;
}

.perf-stats {
  --stroke-color: hsl(217, 39%, 94%);
  position: fixed;
  bottom: 0;
  left: 0;
  width: 600px;
  color: var(--stroke-color);
  font-family: var(--monospace-font);
  padding: 10px 24px;
  z-index: 100;
  background-color: rgba(27, 28, 29, 0.90);
  button {
    text-decoration: underline;
    color: hsl(45, 100%, 48%);
    &:hover {
      color: hsl(6, 70%, 53%);
    }
  }
  .close-button {
    position: absolute;
    right: 20px;
    top: 10px;
    width: 20px;
    height: 20px;
    color: var(--stroke-color)
  }
  & > section {
    padding: 5px;
    border-bottom: 1px solid var(--stroke-color);
  }
  div {
    margin: 2px 0;
  }
  table, td, th {
    border: 1px solid var(--stroke-color);
    text-align: center;
    padding: 4px;
    margin: 4px 0;
  }
  table {
    border-collapse: collapse;
  }
}

.track-group-panel {
  --collapsed-background: hsla(190, 49%, 97%, 1);
  --collapsed-transparent: hsla(190, 49%, 97%, 0);
  --expanded-background: hsl(215, 22%, 19%);
  --expanded-transparent: hsl(215, 22%, 19%, 0);
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: 1fr;
  transition: background-color .4s, color .4s;
  height: 40px;
  &::after {
    display: block;
    content: '';
    grid-column: 1 / span 2;
    border-top: 1px solid var(--track-border-color);
    margin-top: -1px;
  }
  &[collapsed=true] {
    background-color: var(--collapsed-transparent);
    .shell {
      border-right: 1px solid #c7d0db;
      background-color: var(--collapsed-background);
    }
    .track-button {
      color: rgb(60, 86, 136);
    };
  }
  &[collapsed=false] {
    background-color: var(--expanded-transparent);
    color: white;
    font-weight: bold;
    .shell.flash {
      color: #121212;
    }
    .track-button {
      color: white;
    }
  }
  .shell {
    padding: 4px 4px;
    display: grid;
    grid-template-areas: "fold-button title check";
    grid-template-columns: 28px 1fr 20px;
    align-items: center;
    line-height: 1;
    width: var(--track-shell-width);
    min-height: 40px;
    transition: background-color .4s;

    .track-title {
      user-select: text;
    }

    .chip {
      background-color: #bed6ff;
      border-radius: 3px;
      font-size: smaller;
      padding: 0 0.1rem;
      margin-left: 1ch;
    }

    h1 {
      grid-area: title;
      @include track_shell_title();
    }
    .fold-button {
      grid-area: fold-button;
    }
    .track-button {
      font-size: 20px;
    }
    &:hover {
      cursor: pointer;
      .fold-button {
        color: hsl(45, 100%, 48%);
      }
    }
    &.flash {
      background-color: #ffe263;
    }
    &.selected {
      background-color: #ebeef9;
    }
  }
  .track-content {
    @include track_shell_title();
  }
}

.time-selection-panel {
  height: 10px;
}


.cookie-consent {
  position: absolute;
  z-index: 10;
  left: 10px;
  bottom: 10px;
  width: 550px;
  background-color:#19212b;
  font-size: 14px;
  color:rgb(180, 183, 186);
  border-radius: 5px;
  padding: 20px;

  .buttons {
    display: flex;
    justify-content: flex-end;
    margin-top: 10px;
    font-size: 15px
  }

  button {
    padding: 10px;
    border-radius: 3px;
    color: #fff;
    margin-left: 5px;
    a {
      text-decoration: none;
      color: #fff;
    }
  }
  button:hover {
    background-color: #373f4b;
    cursor: pointer;
  }
}

.disallow-selection {
  user-select: none;
}

.pivot-table-redux {
  user-select: text;

  button.mode-button {
    border-radius: 10px;
    padding: 7px;
    margin: 5px;
    background-color: #c7d0db;
  }

  &.edit {
    padding: 10px;
    display: flex;
  }

  &.query-error {
    color: red;
  }
}

.pivot-table-editor-container {
  font: inherit;
  width: 670px;
  height: 420px;
  h2 {
    font-weight: bold;
    text-align: left;
  }
  label {
    cursor: pointer;
  }
  select {
    font-weight: 100;
    margin: 3px;
    color: #333;
    font-size: 15px;
    align-items: center;
    cursor: pointer;
  }
  span:nth-of-type(2) {
    margin-left: 1rem;
  }
  section.table-group {
    display: table-row;
    table {
      margin: 15px;
      td {
        width: 300px;
        font-size: 17px;
        cursor: pointer;
        &.drop-location {
          background-color: hsla(0, 0%, 85%, 1);
        }
      }
      th {
        text-align: center;
        width: 300px;
        border-bottom: 1px solid rgba(60, 76, 92, 0.4);
      }
      &:first-child {
        float: left;
      }
      &:last-child {
        float: right;
      }
    }
  }
  .scroll {
    height: 150px;
    overflow: auto;
  }
  section.button-group {
    text-align: center;
    button {
      background-color: #262f3c;
      color: #fff;
      border-radius: 10px;
      padding: 2px 5px;
      font-weight: bold;
      font-size: 13px;
      min-width: 7em;
      margin-right: 1rem;
    }
  }
  section {
    margin: 1rem;
  }
}

.pivot-table-tab {
  button {
    background: #262f3c;
    color: white;
    border-radius: 10px;
    font-size: 12px;
    height: 20px;
    line-height: 18px;
    min-width: 7em;
    margin: 0.2rem;
    &:disabled {
      opacity: 0.75;
      cursor: default;
    }
  }
  span {
    flex-grow: 1;
  }
}

.pivot-table-spinner {
  display: inline-block;
  vertical-align: middle;
  box-sizing: border-box;
  width: 18px;
  height: 18px;
  margin-left: 10px;
  border-radius: 50%;
  border: 2px solid #408ee0;
  border-color: #408ee0 transparent;
  animation: spinner 1.25s linear infinite;
  @keyframes spinner {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
  }
}

.allow-white-space {
  white-space: pre
}

