/**
 * 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 '~@angular/material/prebuilt-themes/indigo-pink.css';

* {
  box-sizing: border-box;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  -ms-box-sizing: border-box;
  -o-box-sizing: border-box;
}

body {
  font-family: 'Roboto', sans-serif;
  font-size: 14px;
  color: #666;
  background: #eee;
  margin: 0;
  padding: 0;
}

.text-semibold {
  font-weight: 500;
}

.text-uppercase {
  text-transform: uppercase;
}

.text-center {
  text-align: center;
}

.error-border {
  border-color: #ef6162;
}

.warning-border {
  border-color: #e98a40;
}

.success-border {
  border-color: #3fae2a;
}

.error-bg {
  background: #ef6162;
}

.warning-bg {
  background: #e98a40;
}

.success-bg {
  background: #3fae2a;
}

.error-text {
  color: #ef6162;
}

.warning-text {
  color: #e98a40;
}

.success-text {
  color: #3fae2a;
}

.light-text {
  color: #999;
}

.strong-text {
  color: #333;
}

.regular-text {
  color: #666;
}

strong {
  font-weight: 500;
  color: #333;
}

p {
  margin: 10px 0;
}

.flex-grid {
  display: flex;
}

.flex-primary {
  flex-grow: 1;
}

.mat-mdc-card.box-card {
  padding: 0;
  border-radius: 0;
  .mat-mdc-card-header {
    color: #666;
    background-color: #f7f7f7;
    border-bottom: 1px solid #d5d5d5;
    padding: 15px 10px;
  }
  .mat-mdc-card-title {
    margin-left: -5px;
    font-weight: bold;
    margin-bottom: 0 !important;
  }
  .mat-mdc-card-content {
    padding: 10px;
  }
}

.white-mat-form-field .mat-mdc-form-field-flex {
  background-color: #fff;
  padding: 0 5px 0 5px;
}
