/*
* 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.
*/

@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto/Roboto-Light.ttf") format("truetype");
}

@font-face {
  font-family: 'Roboto';
  font-style: italic;
  font-weight: 300;
  src: local("Roboto LightItalic"), local("Roboto-LightItalic"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto/Roboto-LightItalic.ttf") format("truetype");
}

@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: normal;
  src: local("Roboto Regular"), local("Roboto-Regular"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto/Roboto-Regular.ttf") format("truetype");
}

@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 500;
  src: local("Roboto Medium"), local("Roboto-Medium"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto/Roboto-Medium.ttf") format("truetype");
}

@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: bold;
  src: local("Roboto Bold"), local("Roboto-Bold"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto/Roboto-Bold.ttf") format("truetype");
}

@font-face {
  font-family: 'Roboto';
  font-style: italic;
  font-weight: normal;
  src: local("Roboto Italic"), local("Roboto-Italic"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto/Roboto-RegularItalic.ttf") format("truetype");
}

@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: normal;
  src: local("RobotoSlab Regular"), local("RobotoSlab-Regular"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Regular.ttf") format("truetype");
}

@font-face {
  font-family: 'Roboto Slab';
  font-style: normal;
  font-weight: bold;
  src: local("RobotoSlab Bold"), local("RobotoSlab-Bold"), url("../../../../../../../node_modules/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Bold.ttf") format("truetype");
}

body,
html {
  height: 100%;
}

body,
button,
input,
label,
select,
td,
textarea {
  font-family: $fontPrimary;
  font-size: 14px;
}

body {
  color: $bodyTextColor;
}

strong {
  font-weight: bold;
}

pre {
  overflow-x: auto;
}

em {
  font-style: italic;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: $fontPrimary;
  font-weight: normal;
  font-style: normal;
  background: #FFFFFF;
}

h1 {
  color: $pageHeaderTextColor;
}

h2 {
  color: $subHeaderTextColor;
}

table {
  font-family: $fontPrimary;
  font-size: 13px;
  color: $grey2;
}
