/* ----------------------------------------------------------------------------
 * Easy!Appointments - Online Appointment Scheduler
 *
 * @package     EasyAppointments
 * @author      A.Tselegidis <alextselegidis@gmail.com>
 * @copyright   Copyright (c) Alex Tselegidis
 * @license     https://opensource.org/licenses/GPL-3.0 - GPLv3
 * @link        https://easyappointments.org
 * @since       v1.5.0
 * ---------------------------------------------------------------------------- */

// Materia 5.1.3
// Bootswatch

$theme: 'materia' !default;

//
// Color system
//

$white: #fff !default;
$gray-100: #f8f9fa !default;
$gray-200: #eee !default;
$gray-300: #dee2e6 !default;
$gray-400: #ced4da !default;
$gray-500: #bbb !default;
$gray-600: #666 !default;
$gray-700: #444 !default;
$gray-800: #222 !default;
$gray-900: #212121 !default;
$black: #000 !default;

$blue: #2196f3 !default;
$indigo: #6610f2 !default;
$purple: #6f42c1 !default;
$pink: #e83e8c !default;
$red: #e51c23 !default;
$orange: #fd7e14 !default;
$yellow: #ff9800 !default;
$green: #4caf50 !default;
$teal: #20c997 !default;
$cyan: #9c27b0 !default;

$primary: $blue !default;
$secondary: $white !default;
$success: $green !default;
$info: $cyan !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-100 !default;
$dark: $gray-800 !default;

$min-contrast-ratio: 2.15 !default;

$enable-gradients: true !default;

// Body

$body-color: $gray-700 !default;

// Fonts

// stylelint-disable-next-line value-keyword-case
$font-family-sans-serif:
    Roboto,
    -apple-system,
    BlinkMacSystemFont,
    'Segoe UI',
    'Helvetica Neue',
    Arial,
    sans-serif !default;
$font-size-base: 1rem !default;
$font-weight-base: 400 !default;

// Buttons

$input-btn-padding-y: 0.8rem !default;
$input-btn-padding-x: 1rem !default;

// Forms

$input-padding-y: 1rem !default;
$input-padding-x: 0% !default;
$input-padding-y-sm: 0% !default;
$input-padding-x-sm: 0% !default;
$input-padding-y-lg: ($font-size-base * 1.25) !default;
$input-padding-x-lg: 0% !default;
$input-bg: transparent !default;
$input-disabled-bg: transparent !default;
$input-color: $gray-600 !default;
$input-border-color: transparent !default;
$input-border-width: 0% !default;
$input-border-radius: 0% !default;
$input-border-radius-lg: 0% !default;
$input-border-radius-sm: 0% !default;
$input-placeholder-color: rgba(0, 0, 0, 0.4) !default;
$input-group-addon-bg: transparent !default;

// Navs

$nav-link-disabled-color: $gray-500 !default;
$nav-tabs-border-color: transparent !default;

// Navbar

$navbar-padding-y: 1rem !default;
$navbar-dark-color: rgba($white, 0.75) !default;
$navbar-dark-hover-color: $white !default;

// Cards

$card-border-width: 0 !default;
$card-border-color: transparent !default;

// Tooltips

$tooltip-bg: $gray-700 !default;

// Modals

$modal-content-border-color: transparent !default;

// Progress bars

$progress-height: 0.375rem !default;
$progress-border-radius: 0% !default;

// Close

$btn-close-color: $white !default;
$btn-close-opacity: 0.6 !default;
$btn-close-hover-opacity: 1 !default;

@import '../../../node_modules/bootstrap/scss/bootstrap';

// Materia 5.1.3
// Bootswatch

// Variables

$web-font-path: 'https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap' !default;
@if $web-font-path {
    @import url($web-font-path);
}

// Mixins

@mixin ripple($color) {
    position: relative;

    &::before {
        position: absolute;
        top: 0;
        left: 0;
        display: block;
        width: 100%;
        height: 100%;
        margin-left: 0;
        pointer-events: none;
        content: '';
        background-position: 50%;
        background-size: 1000% 1000%;
        border: none;
        opacity: 0;
        transition:
            background 0.5s,
            opacity 1s;
        @include gradient-radial($color 10%, transparent 10.01%);
    }

    &:active::before {
        background-size: 0 0;
        opacity: 0.2;
        transition: none;
    }

    &.disabled,
    &[disabled] {
        &::before {
            display: none;
        }
    }
}

@mixin btn($class, $bg, $color) {
    .btn-#{$class} {
        &:focus {
            background-color: $bg;
            box-shadow: 0 0 0 2px rgba(204, 204, 204, 0.5);
        }

        &:hover,
        &:active:hover {
            background-color: shade-color($bg, 12%);
        }

        &:active {
            box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4);
        }

        @include ripple($color);
    }

    .btn-outline-#{$class} {
        @include ripple($color);
    }
}

.dropdown-toggle::after,
.dropup .dropdown-toggle::after,
.dropstart .dropdown-toggle::after,
.dropend .dropdown-toggle::after {
    border-width: 4px;
}

// Navbar

.navbar {
    border: none;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);

    &-brand {
        font-size: 24px;
    }

    &-nav .nav-link {
        padding-top: 0.9rem;
        padding-bottom: 0.9rem;
    }

    &.bg-dark,
    &.bg-primary {
        input[type='search'],
        input[type='text'],
        input[type='password'],
        input[type='email'],
        input[type='number'],
        input[type='tel'] {
            color: $white;
            box-shadow: inset 0 -1px 0 rgba(255, 255, 255, 0.5);

            &:focus {
                box-shadow: inset 0 -2px 0 $white;
            }

            &::placeholder {
                color: rgba(255, 255, 255, 0.5);
            }
        }
    }
}

// Buttons

@include btn(primary, $primary, $white);
@include btn(secondary, $secondary, $gray-500);
@include btn(success, $success, $white);
@include btn(info, $info, $white);
@include btn(warning, $warning, $white);
@include btn(danger, $danger, $white);
@include btn(dark, $dark, $white);
@include btn(light, $light, $white);

.btn {
    text-transform: uppercase;
    border: none;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
    transition:
        color 0.4s,
        background-color 0.4s,
        border-color 0.4s,
        box-shadow 0.4s;

    &-link {
        color: $link-color;
        box-shadow: none;

        &:hover,
        &:focus {
            color: $link-hover-color;
            text-decoration: $link-hover-decoration;
            box-shadow: none;
        }

        &.disabled, // Although btn-link is intended for buttons, which want to look like link, I include here a.disable for the sake of consistency
        &[disabled],
        fieldset[disabled] & {
            &:hover,
            &:active:hover {
                color: $btn-link-disabled-color;
                text-decoration: none;
            }
        }
    }

    &-secondary {
        &.disabled,
        &[disabled],
        fieldset[disabled] & {
            color: rgba(0, 0, 0, 0.4);
            background-color: rgba(0, 0, 0, 0.1);
            opacity: 1;

            &:hover,
            &:focus {
                background-color: rgba(0, 0, 0, 0.1);
            }
        }
    }

    &-outline-secondary {
        color: $gray-300;
        border-color: $gray-200;
    }

    &-warning {
        color: $white;
    }
}

.btn-group {
    .btn + .btn,
    .btn + .btn-group,
    .btn-group + .btn,
    .btn-group + .btn-group {
        margin-left: 0;
    }

    &-vertical {
        > .btn + .btn,
        > .btn + .btn-group,
        > .btn-group + .btn,
        > .btn-group + .btn-group {
            margin-top: 0;
        }
    }

    .btn + .btn,
    .btn + .btn-group > .dropdown-toggle {
        box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4);
    }
}

.border-secondary {
    border: 1px solid #dfdfdf !important;
}

// Typography

body,
input,
button {
    letter-spacing: 0.1px;
}

p {
    margin: 0 0 1em;
}

.text-secondary {
    color: $gray-500 !important;
}

// Tables

.table-hover {
    > tbody > tr,
    > tbody > tr > th,
    > tbody > tr > td {
        transition:
            background-color 0.2s,
            color 0.2s;
    }
}

.thead-inverse th {
    color: $white;
    background-color: $primary;
}

// Forms

.col-form-label {
    font-size: 16px;

    &-sm {
        font-size: $font-size-sm;
    }

    &-lg {
        font-size: $font-size-lg;
    }
}

textarea,
textarea.form-control,
input.form-control,
input[type='text'],
input[type='password'],
input[type='email'],
input[type='number'],
[type='text'].form-control,
[type='password'].form-control,
[type='email'].form-control,
[type='tel'].form-control,
[contenteditable].form-control {
    box-shadow: inset 0 -1px 0 #ddd;
    transition: box-shadow 0.2s;

    &:focus {
        box-shadow: inset 0 -2px 0 $primary;
    }

    &[disabled],
    &[readonly] {
        border-bottom: 1px dotted #ddd;
        box-shadow: none;
    }

    &[disabled],
    &[disabled]::placeholder {
        color: #ddd;
    }
}

select,
select.form-control {
    padding: 0.5rem 0;
    background-image: escape-svg(
        url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 4'><path fill='#{$gray-600}' d='M8 0 4 4 0 0z'/></svg>")
    );
    background-repeat: no-repeat;
    background-position: right center;
    background-size: 8px 4px;
    box-shadow: inset 0 -1px 0 #ddd;
    appearance: none;

    &.input {
        &-sm {
            font-size: $font-size-sm;
        }

        &-lg {
            font-size: $font-size-lg;
        }
    }

    &:focus {
        background-image: escape-svg(
            url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 4'><path fill='#{$gray-900}' d='M8 0 4 4 0 0z'/></svg>")
        );
        box-shadow: inset 0 -2px 0 $primary;
    }

    &[multiple] {
        background: none;
    }
}

.form-check-input {
    width: 1.25em;
    height: 1.25em;
    margin-top: 1px;
    border: 2px solid $gray-400;

    &:checked[type='radio'] {
        background-image: escape-svg(
                url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2' fill='#{$blue}' stroke='#{$white}'/></svg>")
            ),
            var(--bs-gradient);
        background-size: 1.8em;
    }
}

.form-switch {
    .form-check-input {
        position: relative;
        height: 0.8em;
        margin-top: 0.29em;
        background-color: $gray-400;
        background-image: none;
        border: none;

        &:focus {
            box-shadow: none;
        }

        &::before {
            position: absolute;
            top: -0.2em;
            left: -0.2em;
            width: 1.2em;
            height: 1.2em;
            content: '';
            background-color: $white;
            border-radius: 50%;
            box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
            transition: left 0.15s ease-in-out;
        }

        &::after {
            position: absolute;
            top: -0.2em;
            left: -0.2em;
            z-index: -1;
            width: 1.2em;
            height: 1.2em;
            content: '';
            border-radius: 50%;
            box-shadow: 0 0 0 9px rgba(0, 0, 0, 0.05);
            transition:
                left 0.15s ease-in-out,
                transform 0.15s ease-in-out,
                box-shadow 0.15s ease-in-out;
            transform: scale(0);
        }

        &:hover:not(.disabled),
        &:focus:not(.disabled) {
            &::after {
                transform: scale(0.9);
            }
        }

        &:focus:not(.disabled) {
            &::after {
                box-shadow: 0 0 0 9px rgba(0, 0, 0, 0.1);
            }
        }

        &:checked {
            background-color: rgba(33, 150, 243, 0.3);

            &::before {
                left: calc(100% - 0.8em);
                background-color: rgba(33, 150, 243, 1);
            }

            &::after {
                left: calc(100% - 0.8em);
                box-shadow: 0 0 0 9px rgba(33, 150, 243, 0.1);
            }

            &:hover:not(.disabled),
            &:focus:not(.disabled) {
                &::after {
                    transform: scale(0.9);
                }
            }

            &:focus:not(.disabled) {
                &::after {
                    box-shadow: 0 0 0 9px rgba(33, 150, 243, 0.2);
                }
            }
        }
    }
}

.form-check:not(.form-switch) {
    .form-check-input {
        &:checked[type='checkbox'] {
            background-image: escape-svg(
                    url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$white}' stroke-width='2' d='m6 10 3 3 6-6'/></svg>")
                ),
                var(--bs-gradient);
            background-size: 1.6em;
        }
    }
}

.has-warning {
    input:not([type='checkbox']),
    .form-control,
    input.form-control[readonly],
    input[type='text'][readonly],
    [type='text'].form-control[readonly],
    input:not([type='checkbox']):focus,
    .form-control:focus {
        border-bottom: none;
        box-shadow: inset 0 -2px 0 $warning;
    }
}

.has-danger {
    input:not([type='checkbox']),
    .form-control,
    input.form-control[readonly],
    input[type='text'][readonly],
    [type='text'].form-control[readonly],
    input:not([type='checkbox']):focus,
    .form-control:focus {
        border-bottom: none;
        box-shadow: inset 0 -2px 0 $danger;
    }
}

.has-success {
    input:not([type='checkbox']),
    .form-control,
    input.form-control[readonly],
    input[type='text'][readonly],
    [type='text'].form-control[readonly],
    input:not([type='checkbox']):focus,
    .form-control:focus {
        border-bottom: none;
        box-shadow: inset 0 -2px 0 $success;
    }
}

// Remove the Bootstrap feedback styles for input addons
.input-group-addon {
    .has-warning &,
    .has-danger &,
    .has-success & {
        color: $input-color;
        background-color: $input-group-addon-bg;
        border-color: $input-group-addon-border-color;
    }
}

.form-group-lg {
    select,
    select.form-control {
        line-height: 1.5;
    }
}

// Navs

.nav-tabs {
    .nav-item + .nav-item {
        margin-left: 0;
    }

    .nav-link,
    .nav-link:focus {
        margin-right: 0;
        color: $body-color;
        background-color: transparent;
        border: none;
        box-shadow: inset 0 -1px 0 #ddd;
        transition:
            color 0.2s,
            box-shadow 0.2s;

        &:hover {
            color: $primary;
            background-color: transparent;
            box-shadow: inset 0 -2px 0 $primary;
        }
    }

    .nav-link.active,
    .nav-link.active:focus {
        color: $primary;
        border: none;
        box-shadow: inset 0 -2px 0 $primary;

        &:hover {
            color: $primary;
            border: none;
        }
    }

    .nav-link.disabled {
        box-shadow: inset 0 -1px 0 #ddd;
    }

    &.nav-justified {
        .nav-link,
        .nav-link:hover,
        .nav-link:focus,
        .nav-link.active,
        .nav-link.active:hover,
        .nav-link.active:focus {
            border: none;
        }
    }

    .dropdown-menu {
        margin-top: 0;
    }
}

.dropdown-menu {
    margin-top: 0;
    border: none;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
}

// Indicators

.alert {
    padding-right: 2.5rem;
    border: none;

    &,
    h1,
    h2,
    h3,
    h4,
    h5,
    h6 {
        color: $white;
    }

    @each $color, $value in $theme-colors {
        &-#{$color} {
            @if $enable-gradients {
                background: $value linear-gradient(180deg, mix($body-bg, $value, 15%), $value) repeat-x;
            } @else {
                background-color: $value;
            }
        }
    }

    a:not(.btn),
    .alert-link {
        font-weight: 700;
        color: $white;
    }

    &-secondary,
    &-light {
        &,
        a:not(.btn),
        .alert-link {
            color: $body-color;
        }
    }
}

.badge {
    &.bg-secondary,
    &.bg-light {
        color: $dark;
    }
}

.tag {
    padding: 4px 6px;
}

// Containers

.card {
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);

    &.border-primary,
    &.border-secondary,
    &.border-success,
    &.border-info,
    &.border-warning,
    &.border-danger,
    &.border-light,
    &.border-dark {
        border-width: 1px;
    }
}

.list-group {
    &-item-action.active {
        h1,
        h2,
        h3,
        h4,
        h5,
        h6 {
            color: $white;
        }
    }
}

.modal-content {
    border-radius: 0.2rem;
    box-shadow: 0 6px 36px rgba(0, 0, 0, 0.3);
}

.modal,
.toast,
.offcanvas {
    .btn-close {
        background-image: escape-svg(
            url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$black}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/></svg>")
        );
    }
}

.popover {
    border: none;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
}

.carousel {
    &-caption {
        h1,
        h2,
        h3,
        h4,
        h5,
        h6 {
            color: inherit;
        }
    }
}
