﻿@layer bootstrap, bootstrap-override, radzen, radzen-override, syncfusion, syncfusion-override, caminos;

:root {
    --primary-color: #366f87; /* Caminos slate (from logo): rgb(54,111,135) hsl(198, 43%, 37%)*/
    --primary-color-dark: hsl(198, 43%, 26%); /* #264f60 rgb(38, 79, 96) */
    --primary-color-light: #a3bdc8;
    --primary-color-lighter: #ebf1f3;
    --primary-color-lightest: hsl(198, 43%, 98%); /* rgb(244, 248, 251) */
    --secondary-color: #E67917; /* hsl(28, 81.8%, 49.6%) */
    --secondary-color-dark: #a35610; /* hsl(29, 82.1%, 35.1%) */
    --secondary-color-light: #f4c194; /* hsl(28, 81.4%, 76.9%) */
    --secondary-color-lighter: hsl(28 81.4% 90%);
    /*----------------------------------------------------------------------------*/
    --error-color: hsl(0, 60%, 40%); /* #a32929 */
    --error-color-light: hsl(0, 60%, 98%);
    --success-color: hsl(108, 93%, 11%); /* #0c3602 */
    --success-color-light: hsl(108, 93%, 98%);
    --warning-color: hsl(29, 89%, 38%); /* #b55c0b */
    --warning-color-light: hsl(29, 89%, 98%);
    /*----------------------------------------------------------------------------*/
    --link-color: hsl(240, 75%, 37%);
    --primary-button-color: hsl(198, 43%, 55%);
    --primary-dialog-button-color: hsl(198, 60%, 35%);
    --overweight: hsl(20, 90%, 97%); /* #fef5f0 */
    --underweight: hsl(205, 100%, 97%); /* #f0f9ff */
    --dark-overweight: #a2400b; /* Exposure screen grid over/underweight column. */
    --dark-underweight: #0068ad; /* Exposure screen grid over/underweight column. */
    --goodweight: hsl(0, 0%, 95%); /* #f2f2f2 */
    /*----------------------------------------------------------------------------*/
    --border-color: #dadfe2; /* Matches Radzen fieldset border color */
    --border-radius: 7px;
    --border: 1px solid var(--border-color);
    --border-hovered: 1px solid var(--primary-color);
    --action-border: 1px solid var(--primary-color);
    --action-border-hovered: 1px solid var(--primary-color-dark);
    --box-shadow: 1px 1px 3px grey;
    --box-shadow-hovered: 2px 2px 3px grey;
    --action-box-shadow: 3px 3px 2px grey;
    --action-box-shadow-hovered: 6px 6px 2px grey;
    --client-plan-map-diagram-box-width: 17rem;
    /*----------------------------------------------------------------------------*/
    --data-import-button-gap: 2rem;
    /*--------------Custom variables derived from Figma document------------------*/
    --light-text-primary: #282828;
    --light-text-disabled: rgba(0, 0, 0, 0.5);
    --light-success-main: #418736;
    --light-error-main: #A21F1F;
    --light-success-shades-12-p: rgba(65, 135, 54, 0.12);
    --light-error-shades-12-p: rgba(162, 31, 31, 0.12);
    --light-success-dark: #2D5E25;
    --light-error-dark: #711515;
    --grid-header-background-color: rgba(244, 250, 251);

    interpolate-size: allow-keywords;
}

/* Chart Vibrant colors (in order) used in ExposureReportC:
        #1e70aa (dark blue),
        #fb701b (dark orange),
        #3d9330 (dark green),
        #d9141e (dark red),
        #5b3b8e (dark purple),
        #9bc9de (light blue),
        #f78f90 (pink),
        #c0aad0 (light purple),
        #aed884 (light green),
        #fcb46a (light orange)
        Additional colors:
        #1eaaa3
        #1e23aa
        #7e1eaa
        #90aa1e
        #aa6b1e
    */

.color-test {   /* In UnitTestC.razor */
    aspect-ratio: 1/1;
    width: 75px;
}

@layer bootstrap-override {

    /*Blazor file upload*/
    .custom-file-input {
        display: none;
    }

    .custom-file-label {                    /* (simulated) Browse button */
        aspect-ratio: 3.5/2;
        background-color: var(--primary-color-light);
        border: 1px solid var(--primary-color-dark);
        border-radius: var(--border-radius);
        box-shadow: 5px 5px 2px var(--primary-color-dark);
        color: var(--primary-color-dark);
        cursor: pointer;
        display: grid;
        margin-right: 1.25rem;
        padding: 0 .75rem;
        place-items: center;
        transition: all 0.5s;
        width: fit-content;
        &:hover
        {
            background-color: var(--primary-color-dark);
            box-shadow: 7px 7px 2px var(--primary-color-light);
            color: white;
        }
    }
}

@layer radzen-override {

    /* Radzen Buttons */
    .rz-button {
        border: 1px solid var(--primary-color);
        box-shadow: none; /* removes default border */
        color: var(--primary-color);
    }

    .rz-button.rz-button-md.rz-variant-filled.rz-primary.rz-shade-default,  /* Dialog "Yes" button. It seems that the inline edit "Save" button shares this class name, so box shadow is undone below. */
    .rz-button.rz-button-md.rz-variant-filled.rz-base.rz-shade-default {    /* Dialog "No" button */
        background-color: var(--primary-color-light);
        border: 1px solid var(--primary-color);
        box-shadow: 2px 2px 2px var(--primary-color-dark);
        color: var(--primary-color-dark);
        margin: 0 1.25rem 0 0;
        transition: all 0.5s;
        width: 4rem;
        &:hover:not(.no-hover)
        {
            background-color: var(--primary-color);
            border: 1px solid var(--primary-color-dark);
            box-shadow: 4px 4px 2px var(--primary-color-dark);
            color: white;
        }
    }

    .rz-button.rz-button-md.rz-variant-filled.rz-primary.rz-shade-default.rz-button-icon-only,      /* Inline edit "Save" button */
    .rz-button.rz-button-md.rz-variant-filled.rz-secondary.rz-shade-default.rz-button-icon-only {   /* Inline edit "Cancel Edit" button */
        background-color: white;
        box-shadow: none;
        color: var(--primary-color);
        width: 3.5rem;
        &:hover
        {
            background-color: var(--primary-color-lighter);
            box-shadow: none;
            color: var(--primary-color);
        }
    }

    /* RadzenChart (and may apply to other controls) */
    text.rz-series-data-label {
        font-size: 0.8rem;
        text-anchor: end;
    }

    text.rz-tick-text {
        font-weight: 600;
    }

    .rz-axis {
        font-weight: 600;
    }

    .rz-axis-title {
        font-weight: 600;
    }

    /* Radzen Checkbox */
    .rz-chkbox-box.rz-state-active {
        background-color: var(--primary-color);
    }

    /* Radzen Datepicker */
    .rz-datepicker > .rz-inputtext {
        border: none;
        box-shadow: none;
    }

    /* Radzen Dialog */
    .rz-dialog {
        border-radius: var(--border-radius);
    }

    .rz-dialog-titlebar {
        background-color: white;
        font-size: 1.5rem;
        margin-left: 2rem;
        padding-bottom: 0;
    }

    .ct-forgot-password-title .rz-dialog-titlebar {
        margin-left: 0;
    }

    .rz-dialog-title {
        color: var(--primary-color-dark);
        font-weight: 500;
    }

    .rz-dialog-titlebar-close:before {          /* Custom "close" icon */
        color: var(--primary-color-light);
        content: "cancel";
        display: inline-block;
        font-family: 'Material Icons';
        font-size: 1.75rem;
        left: 20px;
        position: relative;
        transition: all 0.5s;
    }

    .rz-dialog-titlebar-close:hover:before {
        color: var(--primary-color);
    }

    .rz-dialog-titlebar-close .rzi-times:before { /* Hides default "close X" */
        color: transparent;
    }

    .rz-dialog-wrapper {
        z-index: 2000;
    }

    /* Radzen dropdown */
    .rz-state-highlight { /* the currently selected option */
        background-color: var(--primary-color);
    }

    .rz-dropdown-item:hover {
        background-color: var(--primary-color-light);
        color: var(--primary-color-dark);
    }

    /* Radzen Fieldset */
    .rz-fieldset-content { /* Will remove this when all Radzen fieldsets removed. */
        padding-top: 0rem;
        padding-bottom: 0.8rem;
    }

    .rz-fieldset-legend {
        padding-top: 0.2rem;
        margin-left: 0rem;
    }

    /* RadzenFormField */
    .rz-form-field-label {
        color: var(--primary-color-dark);
        font-size: 0.9rem;
        line-height: 1.5rem;
        top: -16px;
    }

    .rz-form-field-content {
        border: var(--action-border);
        border-radius: var(--border-radius);
    }

    .rz-form-field-content:hover:has(.rz-state-disabled), /* Override hover effect on form field that has a disabled child element. */
    .rz-form-field-content:hover:has(.ct-form-field-read-only),
    .rz-form-field-content:has(input:focus) {
        border: var(--action-border);
        box-shadow: none;
    }

    input.rz-state-disabled {
        background-color: white;
        border-radius: var(--border-radius);
    }

    /* Radzen grid */
    /* Header items */
    th {
        background-color: var(--grid-header-background-color);
    }

    span.rz-column-title-content {
        color: var(--primary-color-dark);
        line-height: 1.2rem;
    }

    span.rz-sortable-column-icon::before {
        color: var(--light-text-primary);
    }

    span.rz-cell-data {
        color: var(--primary-color-dark);
    }

    .rz-grid-filter, .rz-grid-filter-buttons {
        background-color: var(--primary-color-lighter);
    }

    .rz-grid-filter-icon {
        color: var(--light-text-primary);
        margin-left: 0.75rem;
    }

    .rz-column-title {
        flex-grow: 0;
        font-size: 0.9rem;
        font-weight: 700;
        text-transform: none;
    }

    .rz-grid-table thead th > div { /* contains column title, sort icon, and filter icon */
        width: fit-content;
    }

    .rz-sortable-column .rzi-sort { /* sort icon */
        margin-left: 0.5rem;
    }

    /* --- */

    tr.rz-data-row {
        --rz-grid-hover-background-color: var(--primary-color-light);
        --rz-grid-hover-color: black;
    }

    td.rz-datatable-emptymessage > span {   /* "No records to display." */
        color: var(--primary-color-dark);
    }

    tr.rz-state-highlight.rz-data-row > td > span {   /* Selected row text */
        color: white;
    }

    .rz-state-highlight > td,
    .rz-state-highlight > td.rz-frozen-cell:before {
        background-color: var(--primary-color);
    }

    .ct-rz-grid-numeric-column {
        padding-right: 2rem;
        text-align: right;
    }

    /* Radzen Input (Date Picker, Dropdown, Textbox */
    .rz-inputtext {
        color: var(--primary-color-dark);
        font-weight: 700;
    }

    .login-display-organization-dropdown > .rz-inputtext {
        font-weight: 500;
    }

    .edit-input span,
    .edit-input input {
        font-weight: 400;
    }

    /* Legend item text. Note that margin-right needed if legend positioned at bottom but actually hurts if legend positioned on right; i.e., pushes entire legend to the left. */
    .rz-legend-item-text {
        margin-left: 4px;
        margin-right: 13px;
    }

    /* Radzen notifications */
    .rz-notification-item { /* Default display is "flex". */
        background-color: white;
        border-radius: var(--border-radius);
        box-shadow: var(--box-shadow-hovered);
        font-size: 1.15rem;
        font-weight: 600;
        justify-content: space-between;
        left: 25vw;
        max-height: 70svh;
        max-width: 70vw;
        min-height: 12svh;
        min-width: 12vw;
        overflow-y: auto;
        position: fixed;
        top: 25svh;
        width: fit-content;
    }

    .rz-notification-message {
        white-space: normal !important;
        overflow: visible !important;
        word-break: break-word;
    }

    .rz-notification-message-wrapper { /* Contains icon & text. */
        align-self: center;
    }

    .rz-notification-error .rz-notification-item {
        background-color: var(--error-color-light);
        border: 2px solid var(--error-color);
        color: var(--error-color);
        .rz-notification-icon
        {
            &.rzi-times
            {
                color: var(--error-color);
                &:before
                {
                    content: "error";
                    position: relative;
                    top: 5px;
                }
            }
        }
    }

    .rz-notification-info .rz-notification-item {
        background-color: var(--primary-color-lightest);
        border: 2px solid var(--primary-color-dark);
        color: var(--primary-color-dark);
        .rz-notification-icon
        {
            &.rzi-info-circle
            {
                color: var(--primary-color-dark);
                &:before
                {
                    content: "info";
                    position:relative;
                    top: 5px;
                }
            }
        }
    }

    .rz-notification-success .rz-notification-item {
        background-color: var(--success-color-light);
        border: 2px solid var(--success-color);
        color: var(--success-color);
        .rz-notification-icon
        {
            &.rzi-check
            {
                color: var(--success-color);
                &:before
                {
                    content: "check";
                    position: relative;
                    top: 5px;
                }
            }
        }
    }

    .rz-notification-warn .rz-notification-item {
        background-color: var(--warning-color-light);
        border: 2px solid var(--warning-color);
        color: var(--warning-color);
        .rz-notification-icon
        {
            &.rzi-exclamation-triangle
            {
                color: var(--warning-color);
                &:before
                {
                    content: "warning";
                    position: relative;
                    top: 5px;
                }
            }
        }
    }

    /* Radzen Profile Menu */
    .rz-profile-menu {
        border-left: none;
    }

    /* Radzen Radio Buttons */
    div.ct-export-format-radio-buttons-wrapper .rz-stack {
        align-items: flex-start;    /* Flex properties in this class don't seem to be taking effect (except for gap). Likely a specificity issue with the Radzen control. */
        display: flex;
        flex-direction: column;
        gap: 1.5rem;
    }

    .rz-radiobutton-box.rz-state-active,
    .rz-radiobutton-icon.rzi-circle-on {
        background-color: var(--primary-color);
    }

    /* Radzen Rating */
    .rating-positive .notranslate.rz-rating-icon.rzi.rzi-star-o::before { /* Star border color - positive rating */
        color: var(--primary-color-light);
    }

    .rating-negative .notranslate.rz-rating-icon.rzi.rzi-star-o::before { /* Star border color - negative rating */
        color: orange;
    }

    .rating-positive .notranslate.rz-rating-icon.rzi.rzi-star::before { /* Star fill color - positive rating */
        color: var(--primary-color-dark);
    }

    .rating-negative .notranslate.rz-rating-icon.rzi.rzi-star::before { /* Star fill color - negative rating */
        color: darkorange;
    }

    /* Radzen Select Bar */
    .rz-buttonset {
        border: none;
        gap: 1rem;
    }

    .rz-selectbutton .rz-button.rz-button-sm {
        border: none;
    }

    .rz-selectbutton .rz-button.rz-button-sm.rz-state-active {
        background-color: white;
        color: var(--primary-color);
        text-decoration: underline;
        font-weight: 700;
    }

    .rz-selectbar .rz-button {
        background-color: var(--primary-color-lighter);
        border-radius: var(--border-radius);
        color: var(--primary-color-dark);
        transition: all 0.5s;
        &:hover:not(.no-hover) 
        {
            background-color: var(--primary-color-light);
        }
        &.rz-state-active,
        &.rz-state-focused
        {
            background-color: var(--primary-color);
            color: white;
        }
    }

    .rz-splitbutton {
        gap: 0;
    }

    /* Radzen Sidebar menu */
    .rz-sidebar { /* The area BELOW the menu options. */
        background-color: hsl(198, 43%, 99%);
    }

    .rz-navigation-item {                               /* Top level menu options */
        border-bottom: none;
    }

    .rz-navigation-item-link { /* All menu options; color adjusts only the caret (not the text) */
        background-color: hsl(198, 43%, 99%);
        color: var(--primary-color);
        font-size: 1.15rem;
    }

    .rz-navigation-item-link:hover {                    /* Hovered menu option; color adjusts only the caret (not the text) */
        background-color: var(--secondary-color-lighter);
        color: var(--primary-color-dark);
        .rz-navigation-item-text                        /* Hovered menu option text */
        {
/*            color: white;*/
        }
        .rz-navigation-item-icon {                      /* Hovered menu option icon */
/*            color: white;*/
        }
    }

    a.rz-navigation-item-link-active {                  /* Selected menu option */
        background-color: var(--secondary-color-lighter);
        .rz-navigation-item-text                        /* Selected menu option text */
        {
            font-weight: 500;
        }
    }

    span.rz-navigation-item-text {                      /* All menu options text (not the icon nor caret) */
        color: var(--primary-color-dark);
        font-weight: 400;
    }

    .rz-navigation-item-icon {                          /* Menu option icons */
        color: var(--primary-color);
    }

    div.rz-navigation-item-wrapper-active::before {     /* Left edge of the selected menu option */
        background-color: var(--secondary-color);
        width: 6px;
    }

    /* Radzen Switch */
    .rz-switch.rz-switch-checked .rz-switch-circle {
        background: var(--primary-color);
    }

    /* Radzen tabs */

    ul.rz-tabview-nav {                                 /* The area containing the tabs */
        margin: 0.5rem 0 -0.5rem;
    }

    .rz-tabview-title {                                 /* Tabs text */
        border-top: none;
        color: var(--primary-color-dark);
        font-size: 1.25rem;
        font-weight: 300;
        height: 2rem;
        margin-bottom: -7px;
    }

    .rz-tabview-nav li {                                /* Tabs */
        background-color: white;
        border: none;
        &:hover                                         /* Hovered tab */
        {
            border-bottom-color: var(--primary-color-dark);
            border-top: none;
            font-weight: 800;
            .rz-tabview-title {                         /* Hovered tab text */
                font-weight: 400;
            }
        }
    }

    li.rz-tabview-selected.rz-state-focused { /* Selected tab */
        border-bottom: 4px solid var(--secondary-color);
        margin-bottom: 0.5rem;
        padding-bottom: -10px !important;
        position: relative;
        &:before
        {
            border-bottom: 5px solid white;
            bottom: -4px;
            content: '';
            position: absolute;
            width: 13px;
        }
        &:after {
            border-bottom: 5px solid white;
            bottom: -4px;
            content: '';
            position: absolute;
            right: 0;
            width: 13px;
        }
        .rz-tabview-title {                             /* Selected tab text */
            font-weight: 400;
        }
        & a
        {
            padding-bottom: 3px;
        }
    }

    .rz-tabview-panel {
        padding: 0.7rem; /* Decrease padding. */
    }

    .rz-tabview-panels {
        border: none;
        box-shadow: none;
    }

}   /* -------------------- End Radzen Override Layer -------------------- */

@layer syncfusion-override {

    /* Style breadcrumb menu link and, below, the selected item text, as used in Exposure screen. */
    a.e-breadcrumb-text {
        text-decoration: none;
        font-size: 1.1rem;
        font-weight: 400;
    }

    a.e-breadcrumb-text:hover {
        opacity: .7 !important;
    }

    .e-breadcrumb-text {
        font-size: 1.1rem;
        font-weight: 400;
    }

    /* Syncfusion Upload button */
    .e-btn {
        background-color: var(--rz-secondary);
        border: none;
        color: #ffffff;
        font-family: inherit;
        font-size: .875rem;
        font-weight: 600;
        height: 35px;
        line-height: 1.25rem;
        padding: 0.5rem 1rem;
        width: 180px;
    }

    .e-btn:hover {
        opacity: .9 !important;
    }

    /* Syncfusion Chat */
    .e-chat-ui .e-chat-header {
        background-color: var(--primary-color) !important;
        border: var(--border) !important;
        border-radius: var(--border-radius) !important;
    }

    .e-control.e-chat-ui.e-lib {
        border-radius: var(--border-radius) !important;
    }

    .e-message-header {
        color: var(--secondary-color-dark) !important;
    }

    .e-chat-ui .e-time {
        color: var(--primary-color-dark) !important;
    }

    .e-chat-ui .e-message-icon {
        background-color: var(--primary-color-light) !important;
        color: white !important;
    }

    .e-message-content {
        background-color: var(--primary-color-lighter) !important;
        color: var(--primary-color-dark) !important;
    }

    .e-empty-chat-template {
        color: var(--primary-color-dark);
        padding-left: 0.75rem;
        width: 100%;
    }

    .e-footer.focus-wave-effect.focused {
        border: var(--border-hovered) !important;
        box-shadow: var(--box-shadow-hovered) !important;
    }

    .e-chat-ui .e-footer .e-chat-textarea[placeholder]:empty::before {
        color: var(--primary-color) !important;
    }

    .e-chat-ui .e-chat-textarea {
        color: var(--primary-color-dark) !important;
    }

    /* Syncfusion checkbox */
    .e-checkbox-wrapper .e-icons::before {
        font-size: 0.75rem;
    }

    .e-checkbox-wrapper .e-frame {
        background-color: var(--primary-color) !important;
        border-color: var(--primary-color-dark) !important;
        font-size: 1.1rem !important;
        height: 1.2rem !important;
        width: 1.1rem !important;
    }

    .e-checkbox-wrapper .e-frame:active {
        box-shadow: none !important;
    }

    .e-checkbox-wrapper .e-checkbox:checked + .e-frame,
    .e-checkbox-wrapper.e-checkbox-active .e-frame,
    .e-checkbox-wrapper .e-checkbox:focus + .e-frame {
        background-color: var(--primary-color) !important;
        border-color: var(--primary-color-dark) !important;
        box-shadow: none !important;
        font-size: 1.1rem !important;
        height: 1.2rem !important;
        width: 1.1rem !important;
    }

    /* Syncfusion Dialog */
    .e-dialog .e-footer-content {
        text-align: center;
    }

    /* Syncfusion Grid */
    .e-grid .e-gridcontent,
    .e-grid .e-content {
        max-height: none !important;
        overflow: visible !important;
    }

    .e-grid .e-rowcell,
    .e-grid .e-headercell {
        color: var(--primary-color-dark) !important;
    }

    .e-grid .e-headercell, .e-grouptopleftcell {
        background-color: var(--grid-header-background-color);
        color: var(--light-text-primary);
    }

    .e-grid .e-gridheader {
        border-top-left-radius: var(--border-radius);
        border-top-right-radius: var(--border-radius);
        padding: 0 !important;
    }

    .e-headercell span {                   /* column header when using a HeaderTemplate */
        font-size: 0.9rem !important;
        font-weight: 700 !important;
    }

    .e-grid .e-headercell {
        background-color: var(--primary-color-lighter) !important;
    }

    td.e-groupcaption,
    td.e-indentcell,
    td.e-recordpluscollapse,
    td.e-recordplusexpand {
        background-color: white;
    }

    .e-grid .e-gridcontent {
        background-color: white;
    }

    .e-grid .e-table tr[aria-selected="true"] td {              /* selected row */
        background-color: var(--primary-color-light) !important;
        color: white !important;
        & div
        {
            font-size: 1rem;
            font-weight: 500;
        }
    }

    .e-grid .e-rowcell .e-chip-list {
        flex-wrap: wrap !important;
        white-space: normal !important;
    }

    .e-chip .e-chip-text {                  /* trying to make chip text wrap. not working yet. */
        white-space: normal !important;
        word-break: break-word !important;
        overflow-wrap: anywhere !important;
        max-width: 100%;
        display: block;
    }

    .e-grid .e-table {
        background-color: white;
    }

    button.e-filter-popup {
        margin: .2rem 0;
    }

    .e-grid .e-focused {
        box-shadow: none !important;
    }

    /* Syncfusion Slider */
    span.e-tick-value.e-tick-after {            /* numbers */
        color: var(--primary-color-dark);
        font-size: 0.75rem;
        font-weight: 600;
    }

    .e-slider-container .e-slider-handle,
    .e-slider-container .e-handle {
        background-color: var(--primary-color) !important;
        border: 1px solid var(--primary-color-dark) !important;
    }

    .e-slider-container .e-handle:focus,        /* The slider handle when focused or active */
    .e-slider-container .e-handle:active {
        box-shadow: 0 0 0 4px var(--primary-color-light) !important; /* Custom glow around handle */
    }

    /* Syncfusion Tooltip */
    .e-tip-content {
        color: var(--primary-color-dark) !important;
    }

    .e-tooltip-wrap {
        background-color: var(--secondary-color-lighter) !important;
    }
}

@layer caminos {

    *, *::before, *::after {
        box-sizing: border-box;
    }

    ::selection {
        background-color: var(--secondary-color-light);
    }

    /* Scrollbar customization */
    * {
        scrollbar-color: var(--primary-color-light) var(--primary-color-lighter); /* Modern browsers with 'scrollbar-' support: (thumb color, track color) */
    }

    *::-webkit-scrollbar-track { /* Legacy browsers with '::-webkit-scrollbar-' support. (this and following classes) */
        background: var(--primary-color-lighter);
    }

    *::-webkit-scrollbar-thumb {
        background: var(--primary-color-light);
    }

    *::-webkit-scrollbar-thumb:hover {
        background: var(--primary-color);
    }

    h1:focus {
        outline: none;
    }

    h3 {
        margin: 0;
    }

    .ct-action-border-with-shadow {
        border: var(--action-border);
        border-radius: var(--border-radius);
        box-shadow: var(--action-box-shadow);
        color: var(--primary-color-dark);
        font-weight: 700;
        padding: 0.5rem;
        transition: all 0.5s;
        width: 100%;
        &:hover
        {
            border: var(--action-border-hovered);
            box-shadow: var(--action-box-shadow-hovered);
            cursor: pointer;
        }
    }

    .ct-analytic-dialog {
        gap: 2rem;
        margin: 2rem;
    }

    .ct-border {
        background-color: white;
        border: var(--border);
        border-radius: var(--border-radius);
        padding: 0 .5rem;
        width: 100%;
    }

    .ct-border-with-shadow {
        border: var(--border);
        border-radius: var(--border-radius);
        box-shadow: var(--box-shadow);
        padding: 0 .5rem;
        width: 100%;
        &:hover:not(.no-hover)
        {
            border: var(--border-hovered);
            box-shadow: var(--box-shadow-hovered);
        }
    }

    .ct-button {
        aspect-ratio: 5 / 2;
        background-color: var(--primary-color-lightest);
        border: 1px solid var(--primary-color);
        border-radius: var(--border-radius);
        box-shadow: var(--action-box-shadow);
        color: var(--primary-color-dark);
        min-width: 7rem;
        transition: all 0.5s;
        width: fit-content;
        &:hover:not(.no-hover), &:focus:not(.no-hover), &:active:not(.no-hover)
            {
                background-color: var(--primary-color-light);
                box-shadow: 7px 7px 2px grey;
                outline: 1px solid var(--primary-color-dark);
            }
        }

    .ct-button-action {
        aspect-ratio: 5 / 2;
        background-color: var(--primary-color-light);
        border: 1px solid var(--primary-color-dark);
        border-radius: var(--border-radius);
        box-shadow: 5px 5px 2px var(--primary-color-dark);
        color: var(--primary-color-dark);
        min-width: 7rem;
        transition: all 0.5s;
        width: fit-content;
        &:hover:not(.no-hover), &:focus:not(.no-hover), &:active:not(.no-hover)
        {
            background-color: var(--primary-color-dark);
            box-shadow: 7px 7px 2px var(--primary-color-light);
            color: white;
            outline: 1px solid var(--primary-color-dark);
        }
    }

    .ct-button-icon-only {
        background-color: var(--primary-color-lightest);
        border: 1px solid var(--primary-color);
        box-shadow: var(--action-box-shadow);
        color: var(--primary-color-dark);
        margin: 0 1.25rem 0 0;
        transition: all 0.5s;
        width: 4rem;
        &:hover:not(.no-hover)
            {
                background-color: var(--primary-color-light);
                box-shadow: 4px 4px 2px grey;
            }
    }

    .ct-button-icon-only-action {
        background-color: var(--primary-color-light);
        border: 1px solid var(--primary-color);
        box-shadow: 2px 2px 2px var(--primary-color-dark);
        color: var(--primary-color-dark);
        margin: 0 1.25rem 0 0;
        transition: all 0.5s;
        width: 4rem;
        &:hover:not(.no-hover)
        {
            background-color: var(--primary-color);
            border: 1px solid var(--primary-color-dark);
            box-shadow: 4px 4px 2px var(--primary-color-dark);
            color: white;
        }
    }

    .ct-button-split {
        border-radius: var(--border-radius);
        box-shadow: var(--action-box-shadow);
    }

    .ct-button-split button {
        background-color: var(--primary-color);
        color: white;                   /* down caret color */
    }

    .ct-button-split span {
        color: white;                   /* split button text color */
    }

    .ct-button-split-item {
        cursor: pointer;
        &:hover
        {
            background-color: var(--primary-color-lighter);
        }
    }

    .ct-button-split-item span {        /* split button dropdown options text */
        color: var(--primary-color-dark);
        font-weight: 500;
        margin-left: 1rem;
    }

    .ct-button-split-item a {
        text-decoration: none;
    }

    .ct-chart-expanded {
        height: 50svh;
    }

    .ct-chart-reduced {
        height: 19svh;
    }

    .ct-chart-test {
        padding-left: 1rem;
        padding-right: 600px; /* padding-right not taking effect - unclear why, but OK as Width property on chart is doing the trick. */
    }

    span.ct-chat-icon {
        color: var(--primary-color);
        cursor: pointer;
        font-size: 1.5rem;
        z-index: 10;
    }

    .ct-chat-spinner {
        background: rgba(255,255,255,0.7);
        border-radius: var(--border-radius);
        left: 50%;
        padding: 10px;
        position: absolute;
        top: 50%;
        transform: translate(-100%, -100%);
    }

    .ct-dark-overweight {
        color: var(--dark-overweight);
        font-weight: 600;
    }

    .ct-dark-underweight {
        color: var(--dark-underweight);
        font-weight: 600;
    }

    div.ct-decision-tree-analysis-chat-icon-wrapper {
        display: flex;
        justify-content: flex-end;
        margin-bottom: -4rem;
        padding-top: 1.75rem;
    }

    section.ct-decision-tree-analysis-wrapper .rz-tabview-nav {
        height: 3.5rem;
        margin-top: 1rem;
        width: fit-content;
    }

    section.ct-decision-tree-analysis-wrapper .rz-tabview-panel {
        height: auto !important;
    }

    .ct-decision-tree-max-matrix-slider {
        margin: 0.5rem 0 0 -1rem;
    }

    .ct-decision-tree-updates-grid {
        height: 25svh !important;
        overflow-y: scroll;
    }

    #popup-ct-dropdown-fit-content {
        width: fit-content !important;
    }

    .ct-fieldset {
        border: var(--border);
        border-radius: var(--border-radius);
        display: grid;
        overflow: clip;
        padding: 0.5rem;
        > legend
        {
            align-items: center;
            background-color: white;
            bottom: 3px;
            color: var(--primary-color);
            display: flex;
            float: none;
            font-size: 1rem;
            justify-content: center;
            padding-inline: 5px;
            position: relative;
            width: fit-content;
        }
    }

    .ct-fieldset-button {
        background-color: var(--primary-color-lighter);
        border: 1px solid var(--primary-color-light);
        border-radius: 3px;
        color: var(--primary-color-dark);
        display: grid;
        height: 1rem;
        margin-right: 5px;
        padding: unset;
        place-items: center;
        transition: all 0.5s;
        width: 1rem;
        &:hover
        {
            background-color: var(--primary-color-light);
            color: white;
        }
    }

    .ct-form-field {
        border-radius: var(--border-radius);
        margin: 0 5rem 0 0;
        position: relative;
        top: -.25rem;
        width: 12rem;
        & label
        {
            font-size: 1.1rem;
        }
    }

    .ct-form-field-read-only {
        border-radius: var(--border-radius);
        position: relative;
        top: -.25rem;
        width: 18rem;
        & label
        {
            font-size: 1.1rem;
        }
    }

    .ct-form-field-read-only span {
        color: var(--primary-color-dark);
        font-size: 0.9rem;
        padding: 0.4rem 0.5rem;
    }


    /* Width can be overriden, see example at ModelBuilderC.razor: class="ct-form-field-wide" Style="width:... */
    .ct-form-field-wide {
        border-radius: var(--border-radius);
        margin: 0 6rem 0 0;
        position: relative;
        top: -.25rem;
        width: 20rem;
        & label
        {
            font-size: 1.1rem;
        }
    }

    .ct-grid {
        border-radius: var(--border-radius);
        max-height: 80svh;
    }

    .ct-grid-border-with-shadow {
        border: var(--border);
        border-radius: var(--border-radius);
        box-shadow: var(--box-shadow);
        padding: 0rem;
        width: 100%;
        &:hover
        {
            border: var(--border-hovered);
            box-shadow: var(--box-shadow-hovered);
        }
    }

    .ct-grid-textbox {
        color: var(--primary-color-dark);
        display: block;
        width: 100%;
        & input
        {
            font-weight: 400;
        }
    }

    header.ct-header {
        align-items: center;
        backdrop-filter: blur(15px);
        background-color: rgba(255, 255, 255, 0.5);
        border: var(--border);
        border-top: none;
        border-radius: var(--border-radius);
        display: flex;
        height: 52px; /* investigate / change to more responsive approach */
        justify-content: space-between;
        width: 100%;
    }

    .ct-hidden, .ct-hidden * {
        visibility: hidden !important;
    }

    .ct-homepage-row {
        margin-bottom: 20px;
        padding-left: 50px;
    }

    div.ct-commentary {
        border: var(--action-border);
        border-radius: var(--border-radius);
        box-shadow: var(--action-box-shadow);
        color: var(--primary-color-dark);
        margin-bottom: 0.5rem;
        padding: 0.5rem;
        transition: all 0.5s;
        &:hover
        {
            border: var(--action-border-hovered);
            box-shadow: var(--action-box-shadow-hovered);
            cursor: pointer;
        }
    }

    .ct-commentary-button {
        margin: 0.25rem 0 0.25rem 1.5rem;
        min-width: unset;
        width: 4rem
    }

    .ct-list-item-dialog {
        margin: 20px;
        padding: 0px;
    }

    .ct-list-item-dialog-content {
        margin-top: -1.5rem;
        z-index: -10;
    }

    /* ------------------- login ------------------- */

    .ct-login-button-wrapper {
        align-items: center;
        display: flex;
        justify-content: space-between;
        width: 100%;
    }

    .ct-login-fieldset {
        border: var(--border);
        border-radius: var(--border-radius);
        display: grid;
        height: 3.25rem;
        > legend
        {
            align-items: center;
            background-color: white;
            bottom: 1px;
            color: var(--primary-color);
            display: flex;
            float: none;
            font-size: 1rem;
            justify-content: center;
            padding-inline: 3px;
            position: relative;
            width: fit-content;
            z-index: 10;
        }
    }

    a.ct-login-forgot-password {
        align-self: flex-start;
        cursor: pointer;
    }

    .ct-login-input-and-button-wrapper {
        background-color: #ffffff;
        border: var(--border-hovered);
        border-radius: var(--border-radius);
        box-shadow: var(--box-shadow-hovered);
        display: flex;
        flex-direction: column;
        gap: 3rem;
        margin-top: 2.5rem;
        padding: 2rem 3rem;
        width: 100%;
        z-index: 10;
    }

    .ct-login-logo-and-inputs-wrapper {
        align-items: center;
        display: flex;
        flex-direction: column;
        justify-content: center;
        width: 20%;
    }

    .ct-login-option-button {
        background-color: var(--primary-color-light);
        border: 1px solid var(--primary-color-dark);
        box-shadow: 5px 5px 2px var(--primary-color-dark);
        color: var(--primary-color-dark);
        font-size: 1rem;
        transition: all 0.5s;
        white-space: nowrap;
        width: 60%;
        &:hover
        {
            background-color: var(--primary-color-dark);
            box-shadow: 7px 7px 2px var(--primary-color-light);
            color: white;
        }
    }

    .ct-login-options-wrapper {
        align-items: center;
        background-color: #ffffff;
        border: var(--border-hovered);
        border-radius: var(--border-radius);
        box-shadow: var(--box-shadow-hovered);
        display: flex;
        flex-direction: column;
        height: 20svh;
        justify-content: space-evenly;
        margin-top: 2.5rem;
        width: 100%;
        z-index: 10;
    }

    .ct-login-password-dialog {
        background-color: #ffffff;
        display: flex;
        flex-direction: column;
        gap: 1.5rem;
        padding: 2rem;
        width: 100%;
        z-index: 10;
    }

    .ct-login-rz-form-field .rz-form-field-label {
        font-size: 1rem;
    }

    .ct-login-rz-form-field button:hover,       /* password visibility toggle button when hovered/focused/active */
    .ct-login-rz-form-field button:focus,
    .ct-login-rz-form-field button:active {
        background-color: var(--primary-color-lighter);
        outline: 1px solid var(--primary-color-dark);
    }

    .ct-login-wrapper {
        width: 100%;
        display: grid;
        place-items: center;
        height: 100svh;
        background-color: var(--primary-color-lighter);
        & > img
        {
            left: 0;
            position: absolute;
            top: 0;
            width: 55%;
        }
    }

    input:-webkit-autofill,
    input:-webkit-autofill:hover,
    input:-webkit-autofill:focus,
    input:-webkit-autofill:active {
        border: none;
        border-radius: var(--border-radius);
        box-shadow: inset 0 0 20px 20px white;
        transition: background-color 5000s ease-in-out 0s;
        -webkit-background-clip: text;
        -webkit-box-shadow: 0 0 0 30px white inset;
        -webkit-text-fill-color: var(--primary-color-dark);
    }

/* ---------------- End of login section -------------------- */

    .ct-logo {
        margin-left: 12px;
        width: 200px;
        height: 52px;
    }

    .ct-model-builder-button { /* Model Builder classes are in this CSS layer for specificity */
        aspect-ratio: unset;
        height: 2.5rem;
        margin-left: auto;
        min-width: fit-content;
    }

    .ct-model-builder-button .rz-button-text {
        white-space: nowrap;
    }

    .ct-model-builder-tail-demarcations span {
        margin: auto;
    }

    .ct-model-builder-tail-demarcations .rz-dropdown-trigger {
        margin-right: 7px;
    }

    div.model-builder-wrapper > fieldset {
        align-items: center;
        border: var(--border);
        border-radius: var(--border-radius);
        display: grid;
        grid-template-columns: 1fr 1fr;
        padding: 0 1rem 0.5rem;
        & > span
        {
            color: var(--primary-color-dark);
            font-size: 1.1rem;
        }
    }

    div.model-builder-wrapper > fieldset .rz-datepicker {
        height: 2.5rem;
        & .rz-inputtext /* Datepicker value */
        {
            bottom: 0.5rem;
            position: relative;
        }
    }

    div.model-builder-wrapper span.rz-numeric .rz-numeric-input {
        display: grid;
        place-items: center;
    }

    div.ct-model-dashboard-info-icon-wrapper {
        display: flex;
        justify-content: flex-end;
        margin-bottom: -2.75rem;
        padding-top: 1.25rem;
    }

    .ct-model-dashboard-tabs .rz-tabview-panel { /* content under the tabs */
        padding-inline: 0;
    }

    .ct-model-proxy-form-field {
        border-radius: var(--border-radius);
        position: relative;
        top: -.25rem;
        width: 20rem;
        & label
        {
            font-size: 1rem;
        }
    }
    
    h1.ct-page-title {
        color: var(--primary-color);
        font-size: 1.5rem;
        font-weight: 500;
        margin-top: .5rem;
    }

    .ct-radzen-chart-tooltip {              /* These Radzen classes are in this CSS layer for specificity */
        color: var(--primary-color-dark);
        font-size: 1rem;
    }

    h2.ct-radzen-fieldset-title {
        color: var(--primary-color);
        font-size: 1.2rem;
    }

    .ct-radzen-profile-menu .rz-navigation-item-link {
        background-color: white;
    }

    .ct-radzen-profile-menu i { /* Profile menu icons (caret & icons in dropdown) */
        color: var(--primary-color);
        font-weight: 600;
    }

    .ct-radzen-profile-menu .rz-navigation-item-link:hover {
        background-color: var(--primary-color-lighter);
        color: var(--primary-color-dark);
        .rz-navigation-item-text
        {
            color: var(--primary-color-dark);
        }
        .rz-navigation-item-icon
        {
            color: var(--primary-color-dark);
        }
    }

    .ct-rounded {
        border-radius: var(--border-radius);
    }

    h2.ct-title {
        color: var(--primary-color);
        font-size: 1.2rem;
        font-weight: 500;
        margin: 0;
    }

.ct-tooltip {
    background-color: var(--primary-color);
    border: 1px solid var(--secondary-color-dark);
    border-radius: 4px;
    bottom: 115%; /* Position above the icon */
    color: white;
    font-family: system-ui, sans-serif; /* Prevent icon font from being inherited */
    font-size: 0.9rem;
    font-weight: 500;
    left: 50%;
    opacity: 0;
    padding: 4px 12px;
    pointer-events: none; /* Prevent tooltip from being hovered */
    position: absolute;
    text-align: center;
    transform: translateX(-50%);
    transition: opacity 0.2s;
    visibility: hidden;
    white-space: nowrap;
    z-index: 10;
}

    .ct-tooltip-wrapper {
        display: inline-block;
        position: relative;
    }

    .ct-tooltip-wrapper:hover .ct-tooltip {
        visibility: visible;
        opacity: 1;
    }

    .ct-chat-icon:hover + .ct-tooltip {
        visibility: visible;
        opacity: 1;
    }

    /* --------------------------- Wrappers --------------------------- */

    div.ct-button-wrapper {
        margin-left: auto;
        width: fit-content;
    }

    div.ct-dropdown-wrapper {
        align-items: center;
        display: flex;
        justify-content: space-evenly;
    }

    div.ct-dropdown-and-button-wrapper {
        align-items: center;
        display: flex;
        height: 3.5rem;
        justify-content: flex-end;
        margin: -0.25rem 0 .5rem;
    }

    div.ct-export-format-button-wrapper {
        align-items: center;
        display: flex;
        gap: 6rem;
        justify-content: space-evenly;
        width: 100%
    }

    div.ct-export-format-radio-buttons-wrapper {
        align-items: center;
        border: var(--action-border);
        border-radius: var(--border-radius);
        box-shadow: var(--action-box-shadow);
        display: flex;
        flex-direction: column;
        gap: 2rem;
        justify-content: space-evenly;
        padding: 2rem;
        width: 100%;
        &:hover
        {
            border: var(--action-border-hovered);
            box-shadow: var(--action-box-shadow-hovered);
        }
    }

    div.ct-radio-buttons-wrapper {
        color: var(--primary-color-dark);
    }

    div.ct-select-bar-and-switch-wrapper {
        display: flex;
        justify-content: space-between;
        position: relative; /* Set position so that z-index will take effect. */
        z-index: 10;
    }

    div.ct-switch-and-button-wrapper {
        white-space: nowrap;
    }

    div.ct-title-and-button-wrapper {
        align-items: center;
        display: flex;
        justify-content: space-between;
    }

    div.ct-toggle-and-logo-wrapper {
        align-items: center;
        display: flex;
        justify-content: center;
        height: 100%;
    }

}   /******* End Caminos css layer *******/

body {
    background-color: white;
    font-family: system-ui, sans-serif;
}

a, .btn-link {
    color: var(--primary-color-dark);
    &:hover
    {
        color: var(--secondary-color-dark);
    }
}

.content {
    padding-top: 1.1rem;
}

.valid.modified:not([type=checkbox]) {
    outline: 1px solid #26b050;
}

.invalid {
    outline: 1px solid red;
}

.validation-message {
    color: red;
}

#blazor-error-ui {
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

#blazor-error-ui .dismiss {
    cursor: pointer;
    position: absolute;
    right: 0.75rem;
    top: 0.5rem;
}

.blazor-error-boundary {
    background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

.blazor-error-boundary::after {
    content: "An error has occurred."
}


/* WIP - will move this class when working */
.warning-chip {
    background-color: var(--secondary-color-light) !important;
    color: var(--primary-color-dark) !important;
}

