/*
 * Copyright 2022 The Pigweed Authors
 *
 * 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
 *
 *     https://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.
 */
.container {
  display: flex;
  flex-direction: column;
  height: 100%;
}

.editor {
  border-top: 1px solid #414141;
  min-height: 150px;
  flex: 1;
    max-height: 15vh;
    overflow: auto;
  }

  .editor .cm-content,
  .editor .cm-gutter {
    min-height: 150px;
  }

  .editor .cm-gutters {
    margin: 1px;
  }

  .editor .cm-scroller {
    overflow: auto;
}

.logs {
  flex: 1;
}

.replWithCaret {
  display: flex;
}

.caret {
  margin: 3px;
  font-weight: bold;
}

.tooltip {
  position: relative;
  display: inline-block;
  font-weight: bold;
  border-radius: 50%;
  line-height: 1;
  background: #131518;
  cursor: help;
  padding: 7px 11px;
  margin-right: 5px;
}

.tooltip .tooltiptext {
  visibility: hidden;
  width: 320px;
  background-color: black;
  color: #fff;
  padding: 10px;
  line-height: 1.6;
  border-radius: 6px;
  font-weight: normal;
  position: absolute;
  top: 0;
  left: 0;
  transform: translate(-50%, -105%);
  z-index: 1;
}

.tooltip:hover .tooltiptext {
  visibility: visible;
}

.tooltip .tooltiptext span {
  background-color: #414141;
  padding: 3px 8px;
  border-radius: 6px;
}
