/*
 Copyright 2020 TATA ELXSI

 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.

 Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
 */
 @use "sass:math";
// Custom Variables
$themecolor: #2962ff;
$theme-light: #fff;

/*Topbar Colors*/

$topbar: $theme-light;
$topbar-height: 64px;
$topbar-navlink-padding: 0px 15px;
$topbar-navlink-font-size: 0.875rem;
$topbar-navlink-height: 64px;
$topbar-navbrand-padding: 0 10px 0 10px;
/*Sidebar Colors*/

$sidebar: $theme-light;
$sidebar-text: #fff;
$sidebar-icons: #fff;
$sidebar-width-full: 100px;
$sidebar-width-mini: 65px;
/*Boxed layout width*/

$boxed-width: 1200px;
/*Shadow*/

$shadow: 1px 0px 20px rgba(0, 0, 0, 0.08);
/*transitions*/

$transitions: 0.2s ease-in;
/*Dark transparent bg*/

$transparent-dark-bg: rgba(0, 0, 0, 0.05);
$lft: left;
$rgt: right;
$card-alt: #e4e9ef;
%square {
  border-radius: 0px;
}

%rotate45 {
  transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -webkit-transform: rotate(45deg);
  -o-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
}

/*******************************/

// Bootstrap overrides
/*******************************/

/**
 * Table Of Content
 *
 *  1. Color system
 *  2. Options
 *  3. Body
 *  4. Typography
 *  5. Breadcrumbs
 *  6. Cards
 *  7. Dropdowns
 *  8. Buttons
 *  9. Typography
 *  10. Progress bars
 *  11. Tables
 *  12. Forms
 *  14. Component
 */

//
// Color system
//
$primary: #054c8c;
$secondary: #065fac;
$theme-bg-color: #eef5f9;
$breadcrumb-after-color: #002a6a;

$white: #fff !default;
$gray-100: #f6fafe !default;
$gray-200: #e9ecef !default;
$gray-300: #dee2e6 !default;
$gray-400: #ced4da !default;
$gray-500: #afb5c1 !default;
$gray-600: #6c757d !default;
$gray-700: #4f5467 !default;
$gray-800: #343a40 !default;
$gray-900: #212529 !default;
$gray-80: #cccccc !default;
$gray-97: #f7f7f7 !default;
$medium-pink: #fb6ca4 !default;
$black-coral: #5a5c69 !default;
$cerise-pink: #e4397c !default;
$pure-red: #ff0000 !default;
$denim: #1467b3 !default;
$black: #000 !default;
$blue: #137eff !default;
$dark-gray: #aaaaaa;
$indigo: #6610f2 !default;
$purple: #8b5edd !default;
$pink: #e83e8c !default;
$red: #dd4b39 !default;
$orange: #fb8c00 !default;
$yellow: #f39c12 !default;
$green: #00a65a !default;
$teal: #20c997 !default;
$cyan: #4fc3f7 !default;
$grayish-red: #c1bfbf !default;
$white-smoke: #f1f1f1 !default;
$paleblue: #c8e1f9 !default;
$text-muted: $gray-500 !default;
$colors: (
  "blue": $blue,
  "indigo": $indigo,
  "purple": $purple,
  "pink": $pink,
  "red": $red,
  "orange": $orange,
  "yellow": $yellow,
  "green": $green,
  "teal": $teal,
  "cyan": $cyan,
  "white": $white,
  "gray": $gray-600,
  "gray-dark": $gray-800
);
$primary: $blue !default;
$secondary: $gray-400 !default;
$success: $green !default;
$info: $blue !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-100 !default;
$dark: $gray-800 !default;
$cyan: $cyan !default;
$orange: $orange !default;
$theme-colors: () !default;
$theme-colors: map-merge(
  (
    "primary": $primary,
    "secondary": $secondary,
    "success": $success,
    "info": $info,
    "warning": $warning,
    "danger": $danger,
    "light": $light,
    "dark": $dark,
    "cyan": $cyan,
    "orange": $orange,
    "purple": $purple
  ),
  $theme-colors
);
$modalheader-gray: #f8f9fa;
//
// Quickly modify global styling by enabling or disabling optional features.
$enable-caret: true !default;
$enable-rounded: true !default;
$enable-shadows: false !default;
$enable-gradients: false !default;
$enable-transitions: true !default;
$enable-hover-media-query: false !default;
$enable-grid-classes: true !default;
$enable-print-styles: true !default;
// Body
//
// Settings for the  element.
$main-body-bg: #fff !default;
$body-bg: #f2f4f5;
$body-color: #6a7a8c !default;
$grid-gutter-width: 20px !default;
// Typography
//
// Font, line-height, and color for body text, headings, and more.
$font-size-base: 0.875rem;
$font-family-open-sans: "Open Sans";
$font-weight-light: 300 !default;
$font-weight-normal: 400 !default;
$font-weight-medium: 500 !default;
$font-weight-bold: 700 !default;
$h1-font-size: 36px !default;
$h2-font-size: 30px !default;
$h3-font-size: 24px !default;
$h4-font-size: 18px !default;
$h5-font-size: 16px !default;
$h6-font-size: 14px !default;
$headings-margin-bottom: math.div(1rem, 2) !default;
$headings-font-weight: 400 !default;
$headings-color: inherit !default;
// Breadcrumbs
$breadcrumb-bg: $body-bg;
$breadcrumb-margin-bottom: 1.5rem;
// Cards
$card-border-width: 0px !default;
$card-border-color: transparent !default;
$card-border-radius: 0px !default;
// Dropdowns
$dropdown-item-padding-x: 1rem !default;
$dropdown-item-padding-y: 0.65rem !default;
$dropdown-border-color: $gray-200;
$dropdown-divider-bg: $gray-100;
// Buttons
$btn-secondary-border: $gray-300;
// Progress bars
$progress-bg: $gray-100;
// Tables
$table-bg-accent: $gray-100;
$table-bg-hover: $gray-100;
$table-hover-bg: $gray-100 !default;
$table-cell-padding: 1rem !default;
$table-bg-level: -10 !default;
$table-bg-level2: 1 !default;
$table-bg-level3: -5 !default;
// Components
$component-active-color: $white !default;
$component-active-bg: $themecolor !default;
$badge-pill-padding-x: 0.2em !default;
$badge-pill-padding-y: 1em !default;
// Forms
$input-group-addon-bg: $gray-100;
$input-border-color: $gray-200;
$input-group-addon-border-color: $gray-200;
$input-btn-focus-color: rgba(0, 0, 0, 0.25) !default;
$input-focus-border-color: rgba(0, 0, 0, 0.25) !default;
$custom-control-indicator-active-bg: rgba(0, 0, 0, 35%) !default;
$input-btn-focus-box-shadow: transparent !default;
$custom-select-focus-box-shadow: transparent !default;
$custom-select-border-width: 1px !default;
//
// Define common padding and border radius sizes and more.
$border-width: 1px !default;
$border-color: rgba(0, 0, 0, 0.1) !default;
$border-radius: 2px !default;
$border-radius-lg: 2px !default;
$border-radius-sm: 1px !default;
// Progress bars
$progress-height: 5px !default;
//Tabs
$nav-tabs-link-active-bg: $white !default;
// Grid breakpoints
//
// Define the minimum dimensions at which your layout will change,
// adapting to different screen sizes, for use in media queries.
$grid-breakpoints: (
  xs: 0,
  sm: 576px,
  md: 768px,
  lg: 992px,
  xl: 1600px
) !default;