/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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.
 */
@import "colors";

.chroma, .highlight {
  background-color: #ffffff;

  .lntd {
    vertical-align: top;
    padding: 0;
    margin: 0;
    border: 0;
  }

  .lntable {
    border-spacing: 0;
    padding: 0;
    margin: 0;
    border: 0;
    width: auto;
    overflow: auto;
    display: block;
  }

  .hl {
    display: block;
    width: 100%;
    background-color: #ffffcc;
  }

  .lnt, .ln {
    margin-right: 0.4em;
    padding: 0 0.4em 0 0.4em;
    color: #7f7f7f;
  }

  .k, .kc, .kd, .kn, .kp, .kr {
    color: #0000ff;
  }

  .kt, .nc {
    color: #2b91af;
  }

  .s, .sa, .sb, .sc, .dl, .sd, .s2, .se, .sh, .si, .sx, .sr, .s1, .ss {
    color: #a31515;
  }

  .ow {
    color: #0000ff;
  }

  .c, .ch, .cm, .c1, .cs {
    color: #008000;
  }

  .cp, .cpf {
    color: #0000ff;
  }

  .ge {
    font-style: italic;
  }

  .gh, .gp, .gs, .gu {
    font-weight: bold;
  }
}

pre {
  margin: 40px 0;
  padding: 16px 20px;
  border: solid 1px map-get($colors, very-light-pink);
  border-radius: 5px;
  width: fit-content;
  max-width: 100%;

  span {
    @extend .monotext--brownish-grey;
  }
}
