/* ScoreMus semantic palette and global component contrast rules. */
:root {
    --ws-elevated: #fff;
    --ws-input: #fff;
    --ws-disabled-bg: #edf1f6;
    --ws-disabled-text: #657187;
    --ws-code-bg: #eef2fb;
    --ws-overlay: rgba(15, 23, 42, .48);
    --ws-selection: #cbd8ff;
    --ws-info-bg: #edf4ff;
    --ws-info-text: #24487d;
    --ws-info-border: #c9defb;
    --ws-success-bg: #eaf8f0;
    --ws-success-text: #1c6848;
    --ws-success-border: #c4e8d5;
    --ws-warning-bg: #fff6e5;
    --ws-warning-text: #80560f;
    --ws-warning-border: #f2ddb0;
    --ws-danger-bg: #fff0f1;
    --ws-danger-text: #922d3a;
    --ws-danger-border: #efccd2;
    --bs-emphasis-color: #101828;
    --bs-secondary-bg: #eef2f7;
    --bs-tertiary-bg: #f6f8fb;
    --bs-heading-color: var(--ws-text);
    --bs-link-color: var(--ws-primary);
    --bs-link-hover-color: #2946b6;
}

[data-bs-theme="dark"] {
    --ws-elevated: #1c2941;
    --ws-input: #111c2e;
    --ws-disabled-bg: #202d43;
    --ws-disabled-text: #9aa9c0;
    --ws-code-bg: #111c2e;
    --ws-overlay: rgba(0, 0, 0, .72);
    --ws-selection: #40598e;
    --ws-info-bg: #1b3554;
    --ws-info-text: #c8dcff;
    --ws-info-border: #35567e;
    --ws-success-bg: #173c30;
    --ws-success-text: #bcebd4;
    --ws-success-border: #2f614f;
    --ws-warning-bg: #443517;
    --ws-warning-text: #ffe0a3;
    --ws-warning-border: #705b2c;
    --ws-danger-bg: #47242d;
    --ws-danger-text: #ffcbd1;
    --ws-danger-border: #75414c;
    --bs-emphasis-color: #fff;
    --bs-secondary-bg: #1d2b43;
    --bs-tertiary-bg: #18253a;
    --bs-heading-color: var(--ws-text);
    --bs-link-color: var(--ws-primary);
    --bs-link-hover-color: #bed0ff;
    --bs-tertiary-color: #b7c4d8;
    --bs-secondary-color: #aebbd0;
}

.modern-app {
    color: var(--ws-text);
    background-color: var(--ws-bg);
}

.modern-app ::selection {
    color: var(--ws-text);
    background: var(--ws-selection);
}

.modern-app p,
.modern-app li,
.modern-app dd,
.modern-app dt,
.modern-app legend,
.modern-app output {
    color: inherit;
}

.modern-app .card-title,
.modern-app .card-text,
.modern-app .card-description,
.modern-app .modal-title,
.modern-app .offcanvas-title,
.modern-app .popover-body,
.modern-app .accordion-body,
.modern-app .tab-pane {
    color: var(--ws-text);
}

.modern-app .small,
.modern-app small {
    color: inherit;
}

.modern-app .text-body { color: var(--ws-text) !important; }
.modern-app .text-body-secondary,
.modern-app .text-body-tertiary,
.modern-app .text-black-50 { color: var(--ws-muted) !important; }

[data-bs-theme="dark"] .modern-app .text-dark,
[data-bs-theme="dark"] .modern-app .text-black { color: var(--ws-text) !important; }

.modern-app .bg-body,
.modern-app .bg-body-secondary,
.modern-app .bg-body-tertiary { background-color: var(--ws-surface) !important; }

[data-bs-theme="dark"] .modern-app .bg-white,
[data-bs-theme="dark"] .modern-app .bg-light {
    color: var(--ws-text) !important;
    background-color: var(--ws-surface) !important;
}

.modern-app .border,
.modern-app .border-top,
.modern-app .border-end,
.modern-app .border-bottom,
.modern-app .border-start { border-color: var(--ws-border) !important; }

.modern-app .form-control,
.modern-app .form-select,
.modern-app .input-group-text {
    color: var(--ws-text);
    background-color: var(--ws-input);
    border-color: var(--ws-border);
}

.modern-app .form-control::placeholder,
.modern-app input::placeholder,
.modern-app textarea::placeholder {
    color: var(--ws-muted) !important;
    opacity: 1;
}

.modern-app .form-control:disabled,
.modern-app .form-control[readonly],
.modern-app .form-select:disabled,
.modern-app fieldset:disabled .form-control {
    color: var(--ws-disabled-text);
    background-color: var(--ws-disabled-bg);
    opacity: 1;
}

.modern-app .form-control::file-selector-button {
    color: var(--ws-text);
    background: var(--ws-subtle);
    border-color: var(--ws-border);
}

.modern-app .form-control:hover:not(:disabled):not([readonly])::file-selector-button { background: var(--ws-tint); }
.modern-app select option { color: var(--ws-text); background: var(--ws-input); }
.modern-app .form-check-label,
.modern-app .col-form-label { color: var(--ws-text); }
.modern-app .form-check-input { background-color: var(--ws-input); border-color: var(--ws-muted); }
.modern-app .form-check-input:checked { background-color: #3659d9; border-color: #3659d9; }

.modern-app input:-webkit-autofill,
.modern-app textarea:-webkit-autofill,
.modern-app select:-webkit-autofill {
    -webkit-text-fill-color: var(--ws-text);
    box-shadow: 0 0 0 1000px var(--ws-input) inset;
    caret-color: var(--ws-text);
}

.modern-app .btn-secondary { color: #fff; background: #53627a; border-color: #53627a; }
.modern-app .btn-secondary:hover { background: #445269; border-color: #445269; }
.modern-app .btn-outline-dark,
.modern-app .btn-outline-light { color: var(--ws-text); background: transparent; border-color: var(--ws-muted); }
.modern-app .btn-outline-dark:hover,
.modern-app .btn-outline-light:hover { color: var(--ws-text); background: var(--ws-subtle); border-color: var(--ws-text); }
.modern-app .btn-link { color: var(--ws-primary); }
.modern-app .btn:disabled,
.modern-app .btn.disabled { cursor: not-allowed; opacity: .62; }
[data-bs-theme="dark"] .modern-app .btn-close { filter: invert(1) grayscale(100%) brightness(190%); }

.modern-app .accordion-item,
.modern-app .accordion-button,
.modern-app .offcanvas,
.modern-app .toast,
.modern-app .popover {
    color: var(--ws-text);
    background: var(--ws-surface);
    border-color: var(--ws-border);
}

.modern-app .accordion-button:not(.collapsed) {
    color: var(--ws-primary);
    background: var(--ws-tint);
    box-shadow: inset 0 calc(-1 * var(--bs-border-width)) 0 var(--ws-border);
}

.modern-app .toast-header { color: var(--ws-text); background: var(--ws-subtle); border-color: var(--ws-border); }
.modern-app .breadcrumb-item,
.modern-app .breadcrumb-item a { color: var(--ws-muted); }
.modern-app .breadcrumb-item.active { color: var(--ws-text); }
.modern-app .nav-pills .nav-link { color: var(--ws-muted); }
.modern-app .nav-pills .nav-link.active { color: #fff; background: #3659d9; }
.modern-app hr { border-color: var(--ws-border); opacity: 1; }
.modern-app code,
.modern-app pre,
.modern-app kbd,
.modern-app samp { color: var(--ws-text); }
.modern-app code,
.modern-app pre { background: var(--ws-code-bg); }
.modern-app mark { color: var(--ws-warning-text); background: var(--ws-warning-bg); }

.modern-app .table > :not(caption) > * > * {
    color: var(--ws-text);
    background-color: transparent;
    border-color: var(--ws-border);
}

.modern-app .table-active,
.modern-app .table-active > * {
    --bs-table-bg-state: var(--ws-tint);
    --bs-table-color-state: var(--ws-text);
}

.modern-app caption { color: var(--ws-muted); }
.modern-app .dataTables_wrapper,
.modern-app .dataTables_info,
.modern-app .dataTables_length,
.modern-app .dataTables_filter,
.modern-app .dataTables_paginate { color: var(--ws-text) !important; }
.modern-app .dataTables_wrapper input,
.modern-app .dataTables_wrapper select {
    color: var(--ws-text) !important;
    background: var(--ws-input) !important;
    border: 1px solid var(--ws-border) !important;
}
.modern-app .dataTables_wrapper .paginate_button { color: var(--ws-text) !important; border-color: transparent !important; }
.modern-app .dataTables_wrapper .paginate_button:hover,
.modern-app .dataTables_wrapper .paginate_button.current {
    color: var(--ws-text) !important;
    background: var(--ws-tint) !important;
    border-color: var(--ws-border) !important;
}
.modern-app table.dataTable tbody tr { background: var(--ws-surface); }

.modern-app .choices,
.modern-app .choices__inner,
.modern-app .choices__list,
.modern-app .choices__input,
.modern-app .choices__list--dropdown,
.modern-app .choices__list[aria-expanded],
.modern-app .ts-control,
.modern-app .ts-dropdown,
.modern-app .ts-dropdown input,
.modern-app .select2-container--default .select2-selection--single,
.modern-app .select2-container--default .select2-selection--multiple,
.select2-dropdown {
    color: var(--ws-text);
    background: var(--ws-input);
    border-color: var(--ws-border);
}

.modern-app .choices__placeholder,
.modern-app .ts-control input::placeholder,
.modern-app .select2-selection__placeholder { color: var(--ws-muted) !important; opacity: 1; }
.modern-app .choices__list--dropdown .choices__item--selectable.is-highlighted,
.modern-app .choices__list[aria-expanded] .choices__item--selectable.is-highlighted,
.modern-app .ts-dropdown .active,
.modern-app .ts-dropdown .option:hover,
.select2-results__option--highlighted { color: var(--ws-text) !important; background: var(--ws-tint) !important; }
.modern-app .choices__item--choice,
.modern-app .ts-dropdown .option,
.select2-results__option { color: var(--ws-text); }

.modern-app .alert-info { color: var(--ws-info-text); background: var(--ws-info-bg); border-color: var(--ws-info-border); }
.modern-app .alert-success { color: var(--ws-success-text); background: var(--ws-success-bg); border-color: var(--ws-success-border); }
.modern-app .alert-warning { color: var(--ws-warning-text); background: var(--ws-warning-bg); border-color: var(--ws-warning-border); }
.modern-app .alert-danger { color: var(--ws-danger-text); background: var(--ws-danger-bg); border-color: var(--ws-danger-border); }
.modern-app .alert a { color: inherit; text-decoration: underline; font-weight: 650; }
.modern-app .badge.bg-light,
.modern-app .badge.text-bg-light { color: var(--ws-text) !important; background: var(--ws-subtle) !important; border: 1px solid var(--ws-border); }
.modern-app .text-primary { color: var(--ws-primary) !important; }
.modern-app .text-info { color: #087990 !important; }
.modern-app .text-success { color: #157347 !important; }
.modern-app .text-warning { color: #875b00 !important; }
[data-bs-theme="dark"] .modern-app .text-info { color: #75d8ea !important; }
[data-bs-theme="dark"] .modern-app .text-success { color: #7bdcb0 !important; }
[data-bs-theme="dark"] .modern-app .text-warning { color: #ffd477 !important; }
[data-bs-theme="dark"] .modern-app .text-danger { color: #ff9da7 !important; }

.modern-app .swal2-popup,
.modern-app .swal2-html-container,
.modern-app .swal2-title { color: var(--ws-text); background: var(--ws-surface); }
.modern-app .apexcharts-text,
.modern-app .apexcharts-legend-text { fill: var(--ws-muted) !important; color: var(--ws-muted) !important; }
.modern-app .apexcharts-gridline { stroke: var(--ws-border); }
.modern-app .fc,
.modern-app .fc-theme-standard td,
.modern-app .fc-theme-standard th { color: var(--ws-text); border-color: var(--ws-border); }
.modern-app .fc .fc-list,
.modern-app .fc .fc-list-table td { color: var(--ws-text); background: var(--ws-surface); }
.modern-app .ql-toolbar,
.modern-app .ql-container,
.modern-app .ql-editor { color: var(--ws-text); background: var(--ws-input); border-color: var(--ws-border) !important; }

/* Ticketing views also run inside the authenticated shell. */
.modern-app .tk-shell { color: var(--ws-text); }
.modern-app .tk-heading p,
.modern-app .tk-fine,
.modern-app .tk-shell small,
.modern-app .tk-table th { color: var(--ws-muted); opacity: 1; }
.modern-app .tk-panel,
.modern-app .tk-card,
.modern-app .tk-metric { color: var(--ws-text); background: var(--ws-surface); border-color: var(--ws-border); }
.modern-app .tk-shell input:not([type="checkbox"]):not([type="radio"]),
.modern-app .tk-shell select,
.modern-app .tk-shell textarea { color: var(--ws-text); background: var(--ws-input); border-color: var(--ws-border); }
.modern-app .tk-secondary { color: var(--ws-text) !important; border-color: var(--ws-muted) !important; }
.modern-app .tk-secondary:hover { background: var(--ws-subtle) !important; }
.modern-app .tk-table th,
.modern-app .tk-table td,
.modern-app .tk-subnav,
.modern-app .tk-details { border-color: var(--ws-border); }

.modern-app .chat-message-pane {
    color: var(--ws-text);
    background: var(--ws-subtle);
    scrollbar-color: var(--ws-muted) var(--ws-subtle);
}

.modern-app .chat-page,
.modern-app .chat-list-item { color: var(--ws-text); }

.modern-app .chat-list-item.active,
.modern-app .chat-list-item.active .text-muted { color: #fff !important; }

@media (prefers-reduced-motion: reduce) {
    .modern-app *,
    .modern-app *::before,
    .modern-app *::after {
        scroll-behavior: auto !important;
        transition-duration: .01ms !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
    }
}
