/*
 * Optional NMSN colors for the classic Bootstrap 5 / NiceAdmin app.
 * Load after app_specific.css and page styles. No layout or font changes.
 * Set NMSN_CLASSIC_COLORS = False in Flask settings to disable the link.
 * Every rule excludes .nmsn-page so the existing NMSN portal keeps its theme.
 * Success, warning, danger, and info variants keep their original meaning.
 */

/* Self-contained palette; deliberately separate from nmsn.css variables. */
body.nmsn-classic:not(.nmsn-page) {
    --classic-navy: #071b2d;
    --classic-navy-dark: #041322;
    --classic-navy-light: #0c2a43;
    --classic-blue: #1d5878;
    --classic-gold: #c9922e;
    --classic-gold-light: #e2bd70;
    --classic-cream: #f6eedc;
    --classic-paper: #fffaf0;
    --classic-ink: #17212a;
    --classic-muted: #65707a;
    --classic-border: #dac9a6;
    --classic-focus: rgba(29, 88, 120, .25);
    /* Monochrome SVG background icons, tinted toward #e2bd70. */
    --classic-icon-filter: brightness(0) invert(.5) sepia(1)
        saturate(1.776) hue-rotate(2.4deg) brightness(1.235);

    /* Bootstrap variables plus direct component rules for older BS5 builds. */
    --bs-primary: var(--classic-navy);
    --bs-primary-rgb: 7, 27, 45;
    --bs-primary-text-emphasis: var(--classic-navy);
    --bs-primary-bg-subtle: var(--classic-cream);
    --bs-primary-border-subtle: var(--classic-border);
    --bs-dark: var(--classic-navy-dark);
    --bs-dark-rgb: 4, 19, 34;
    --bs-light: var(--classic-paper);
    --bs-light-rgb: 255, 250, 240;
    --bs-body-color: var(--classic-ink);
    --bs-body-color-rgb: 23, 33, 42;
    --bs-body-bg: var(--classic-cream);
    --bs-body-bg-rgb: 246, 238, 220;
    --bs-heading-color: var(--classic-navy);
    --bs-link-color: var(--classic-blue);
    --bs-link-color-rgb: 29, 88, 120;
    --bs-link-hover-color: var(--classic-navy);
    --bs-link-hover-color-rgb: 7, 27, 45;
    --bs-border-color: var(--classic-border);

    color: var(--classic-ink);
    background-color: var(--classic-cream);
}

/* Links exclude buttons and navigation, which have their own state colors. */
body.nmsn-classic:not(.nmsn-page) :where(a:not(.btn, .nav-link, .dropdown-item, .page-link, .list-group-item)) {
    color: var(--classic-blue);
}

body.nmsn-classic:not(.nmsn-page) :where(a:not(.btn, .nav-link, .dropdown-item, .page-link, .list-group-item)):hover {
    color: var(--classic-navy);
}

/* NiceAdmin header and sidebar: colors only, retaining existing geometry. */
body.nmsn-classic:not(.nmsn-page) .header,
body.nmsn-classic:not(.nmsn-page) .sidebar {
    color: var(--classic-paper);
    background-color: var(--classic-navy);
    border-color: var(--classic-gold);
}

body.nmsn-classic:not(.nmsn-page) .header .logo,
body.nmsn-classic:not(.nmsn-page) .header .logo span,
body.nmsn-classic:not(.nmsn-page) .header .toggle-sidebar-btn,
body.nmsn-classic:not(.nmsn-page) .header-nav .nav-icon,
body.nmsn-classic:not(.nmsn-page) .header-nav .nav-profile {
    color: var(--classic-paper);
}

body.nmsn-classic:not(.nmsn-page) .header .search-form input {
    color: var(--classic-ink);
    background-color: var(--classic-paper);
    border-color: var(--classic-gold);
}

body.nmsn-classic:not(.nmsn-page) .header .search-form button {
    color: var(--classic-navy);
}

body.nmsn-classic:not(.nmsn-page) .sidebar-nav .nav-heading {
    color: var(--classic-gold-light);
}

body.nmsn-classic:not(.nmsn-page) .sidebar-nav .nav-link,
body.nmsn-classic:not(.nmsn-page) .sidebar-nav .nav-link.collapsed {
    color: var(--classic-paper);
    background-color: transparent;
}

/* Keep icon colors consistent in top-level links and submenu links. */
body.nmsn-classic:not(.nmsn-page) .sidebar-nav i {
    color: var(--classic-gold-light);
}

body.nmsn-classic:not(.nmsn-page) .sidebar-nav .nav-link:not(.collapsed),
body.nmsn-classic:not(.nmsn-page) .sidebar-nav .nav-link:hover,
body.nmsn-classic:not(.nmsn-page) .sidebar-nav .nav-link:focus-visible {
    color: var(--classic-paper);
    background-color: var(--classic-blue);
}

body.nmsn-classic:not(.nmsn-page) .sidebar-nav .nav-content a {
    color: var(--classic-cream);
}

body.nmsn-classic:not(.nmsn-page) .sidebar-nav .nav-content a:hover,
body.nmsn-classic:not(.nmsn-page) .sidebar-nav .nav-content a.active {
    color: var(--classic-gold-light);
}

body.nmsn-classic:not(.nmsn-page) .sidebar-nav .nav-content a.active i {
    color: var(--classic-gold-light);
    background-color: transparent;
}

/* Only NiceAdmin's small circle indicators need a filled background. */
body.nmsn-classic:not(.nmsn-page) .sidebar-nav .nav-content a.active i.bi-circle {
    background-color: var(--classic-gold-light);
}

/* icons.css SVG backgrounds have their own fill colors; color alone cannot tint them.
 * Apply the filter to icon holders only, keeping logos and light menus unchanged. */
body.nmsn-classic:not(.nmsn-page) .sidebar .icon-holder-custom1:not(.sidebar-bootstrap-icon):not(.dropdown-menu *),
body.nmsn-classic:not(.nmsn-page) .header .icon-holder-custom1:not(.sidebar-bootstrap-icon):not(.dropdown-menu *):not(.search-form *) {
    background-color: transparent;
    filter: var(--classic-icon-filter);
}

/* Match the explicit !important black color in icons.css for font-based icons. */
body.nmsn-classic:not(.nmsn-page) .sidebar .sidebar-bootstrap-icon:not(.dropdown-menu *),
body.nmsn-classic:not(.nmsn-page) .header .sidebar-bootstrap-icon:not(.dropdown-menu *):not(.search-form *) {
    color: var(--classic-gold-light) !important;
}

/* Titles, breadcrumbs, and app-specific heading rules. */
body.nmsn-classic:not(.nmsn-page) .pagetitle h1,
body.nmsn-classic:not(.nmsn-page) .title-text,
body.nmsn-classic:not(.nmsn-page) .subtitle-text,
body.nmsn-classic:not(.nmsn-page) .card-title,
body.nmsn-classic:not(.nmsn-page) .backoffice_heading h5,
body.nmsn-classic:not(.nmsn-page) .backoffice_sub_heading h6 {
    color: var(--classic-navy);
}

body.nmsn-classic:not(.nmsn-page) .backoffice_heading span,
body.nmsn-classic:not(.nmsn-page) .backoffice_sub_heading span,
body.nmsn-classic:not(.nmsn-page) .backoffice_sub_heading_line {
    background-color: var(--classic-gold);
}

body.nmsn-classic:not(.nmsn-page) .breadcrumb,
body.nmsn-classic:not(.nmsn-page) .breadcrumb .active,
body.nmsn-classic:not(.nmsn-page) .card-title span,
body.nmsn-classic:not(.nmsn-page) .footer {
    color: var(--classic-muted);
    border-color: var(--classic-border);
}

/* Light content surfaces; explicit Bootstrap background utilities still win. */
body.nmsn-classic:not(.nmsn-page) .card {
    --bs-card-color: var(--classic-ink);
    --bs-card-bg: var(--classic-paper);
    --bs-card-cap-bg: var(--classic-cream);
    --bs-card-border-color: var(--classic-border);
    color: var(--classic-ink);
    background-color: var(--classic-paper);
    border-color: var(--classic-border);
}

body.nmsn-classic:not(.nmsn-page) .modal-content,
body.nmsn-classic:not(.nmsn-page) .offcanvas,
body.nmsn-classic:not(.nmsn-page) .dropdown-menu {
    color: var(--classic-ink);
    background-color: var(--classic-paper);
    border-color: var(--classic-border);
}

body.nmsn-classic:not(.nmsn-page) .modal-header,
body.nmsn-classic:not(.nmsn-page) .modal-footer {
    border-color: var(--classic-border);
}

/* Exclude custom card headers so their green/red/etc. palette stays intact. */
body.nmsn-classic:not(.nmsn-page) .card-header:not([class*="card-header-"]):not([class*="bg-"]),
body.nmsn-classic:not(.nmsn-page) .card-footer:not([class*="bg-"]) {
    background-color: var(--classic-cream);
    border-color: var(--classic-border);
}

body.nmsn-classic:not(.nmsn-page) .card-header-blue,
body.nmsn-classic:not(.nmsn-page) .card-header-black {
    color: var(--classic-paper);
    background-color: var(--classic-navy);
}

body.nmsn-classic:not(.nmsn-page) .card-header-offwhite {
    color: var(--classic-ink);
    background-color: var(--classic-paper);
}

body.nmsn-classic:not(.nmsn-page) .dropdown-header,
body.nmsn-classic:not(.nmsn-page) .header-nav .profile .dropdown-header h6,
body.nmsn-classic:not(.nmsn-page) .header-nav .notifications .notification-item h4,
body.nmsn-classic:not(.nmsn-page) .header-nav .messages .message-item h4 {
    color: var(--classic-navy);
}

body.nmsn-classic:not(.nmsn-page) .dropdown-item {
    color: var(--classic-ink);
}

body.nmsn-classic:not(.nmsn-page) .dropdown-item:hover,
body.nmsn-classic:not(.nmsn-page) .dropdown-item:focus {
    color: var(--classic-navy);
    background-color: var(--classic-cream);
}

body.nmsn-classic:not(.nmsn-page) .dropdown-item.active,
body.nmsn-classic:not(.nmsn-page) .dropdown-item:active {
    color: var(--classic-paper);
    background-color: var(--classic-navy);
}

body.nmsn-classic:not(.nmsn-page) .dropdown-item.disabled,
body.nmsn-classic:not(.nmsn-page) .dropdown-item:disabled {
    color: var(--classic-muted);
    background-color: transparent;
}

/* Primary buttons: component variables for BS5.2+, direct colors for BS5.0/5.1. */
body.nmsn-classic:not(.nmsn-page) .btn-primary {
    --bs-btn-color: var(--classic-paper);
    --bs-btn-bg: var(--classic-navy);
    --bs-btn-border-color: var(--classic-navy);
    --bs-btn-hover-color: var(--classic-paper);
    --bs-btn-hover-bg: var(--classic-blue);
    --bs-btn-hover-border-color: var(--classic-blue);
    --bs-btn-active-color: var(--classic-paper);
    --bs-btn-active-bg: var(--classic-navy-light);
    --bs-btn-active-border-color: var(--classic-navy-light);
    --bs-btn-disabled-color: var(--classic-paper);
    --bs-btn-disabled-bg: var(--classic-navy);
    --bs-btn-disabled-border-color: var(--classic-navy);
    --bs-btn-focus-shadow-rgb: 29, 88, 120;
    color: var(--classic-paper);
    background-color: var(--classic-navy);
    border-color: var(--classic-navy);
}

body.nmsn-classic:not(.nmsn-page) .btn-outline-primary {
    --bs-btn-color: var(--classic-navy);
    --bs-btn-border-color: var(--classic-navy);
    --bs-btn-hover-color: var(--classic-paper);
    --bs-btn-hover-bg: var(--classic-blue);
    --bs-btn-hover-border-color: var(--classic-blue);
    --bs-btn-active-color: var(--classic-paper);
    --bs-btn-active-bg: var(--classic-navy-light);
    --bs-btn-active-border-color: var(--classic-navy-light);
    --bs-btn-disabled-color: var(--classic-navy);
    --bs-btn-disabled-bg: transparent;
    --bs-btn-disabled-border-color: var(--classic-navy);
    --bs-btn-focus-shadow-rgb: 29, 88, 120;
    color: var(--classic-navy);
    background-color: transparent;
    border-color: var(--classic-navy);
}

body.nmsn-classic:not(.nmsn-page) .btn-primary:not(:disabled):not(.disabled):hover,
body.nmsn-classic:not(.nmsn-page) .btn-outline-primary:not(:disabled):not(.disabled):hover {
    color: var(--classic-paper);
    background-color: var(--classic-blue);
    border-color: var(--classic-blue);
}

body.nmsn-classic:not(.nmsn-page) .btn-primary:focus,
body.nmsn-classic:not(.nmsn-page) .btn-outline-primary:focus {
    box-shadow: 0 0 0 .25rem var(--classic-focus);
}

body.nmsn-classic:not(.nmsn-page) .btn-primary:active,
body.nmsn-classic:not(.nmsn-page) .btn-primary.active,
body.nmsn-classic:not(.nmsn-page) .btn-outline-primary:active,
body.nmsn-classic:not(.nmsn-page) .btn-outline-primary.active,
body.nmsn-classic:not(.nmsn-page) .btn-check:checked + .btn-primary,
body.nmsn-classic:not(.nmsn-page) .btn-check:checked + .btn-outline-primary,
body.nmsn-classic:not(.nmsn-page) .show > .btn-primary.dropdown-toggle,
body.nmsn-classic:not(.nmsn-page) .show > .btn-outline-primary.dropdown-toggle {
    color: var(--classic-paper);
    background-color: var(--classic-navy-light);
    border-color: var(--classic-navy-light);
}

body.nmsn-classic:not(.nmsn-page) .btn-link {
    --bs-btn-color: var(--classic-blue);
    --bs-btn-hover-color: var(--classic-navy);
    --bs-btn-active-color: var(--classic-navy);
    color: var(--classic-blue);
}

body.nmsn-classic:not(.nmsn-page) .btn-link:hover {
    color: var(--classic-navy);
}

/* These utilities use !important in Bootstrap; the scoped overrides match it. */
body.nmsn-classic:not(.nmsn-page) .text-primary,
body.nmsn-classic:not(.nmsn-page) .link-primary {
    color: var(--classic-navy) !important;
}

body.nmsn-classic:not(.nmsn-page) .link-primary:hover,
body.nmsn-classic:not(.nmsn-page) .link-primary:focus {
    color: var(--classic-blue) !important;
}

body.nmsn-classic:not(.nmsn-page) .bg-primary,
body.nmsn-classic:not(.nmsn-page) .text-bg-primary {
    background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important;
}

body.nmsn-classic:not(.nmsn-page) .text-bg-primary {
    color: var(--classic-paper) !important;
}

body.nmsn-classic:not(.nmsn-page) .border-primary {
    border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity, 1)) !important;
}

body.nmsn-classic:not(.nmsn-page) .bg-light,
body.nmsn-classic:not(.nmsn-page) .text-bg-light {
    background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important;
}

body.nmsn-classic:not(.nmsn-page) .bg-dark,
body.nmsn-classic:not(.nmsn-page) .text-bg-dark {
    background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important;
}

/* Inputs keep existing validation borders; focus gets the NMSN blue accent. */
body.nmsn-classic:not(.nmsn-page) .form-control,
body.nmsn-classic:not(.nmsn-page) .form-select,
body.nmsn-classic:not(.nmsn-page) .datatable-input,
body.nmsn-classic:not(.nmsn-page) .datatable-selector,
body.nmsn-classic:not(.nmsn-page) .dataTable-input,
body.nmsn-classic:not(.nmsn-page) .dataTable-selector {
    color: var(--classic-ink);
    background-color: var(--classic-paper);
}

body.nmsn-classic:not(.nmsn-page) .form-control::placeholder {
    color: var(--classic-muted);
}

body.nmsn-classic:not(.nmsn-page) .form-control:disabled,
body.nmsn-classic:not(.nmsn-page) .form-control[readonly],
body.nmsn-classic:not(.nmsn-page) .form-select:disabled {
    background-color: var(--classic-cream);
}

body.nmsn-classic:not(.nmsn-page) .form-control:not(.is-valid):not(.is-invalid):not(.was-validated *):focus,
body.nmsn-classic:not(.nmsn-page) .form-select:not(.is-valid):not(.is-invalid):not(.was-validated *):focus {
    border-color: var(--classic-blue);
    box-shadow: 0 0 0 .25rem var(--classic-focus);
}

body.nmsn-classic:not(.nmsn-page) .form-check-input:checked,
body.nmsn-classic:not(.nmsn-page) .form-check-input[type="checkbox"]:indeterminate {
    background-color: var(--classic-navy);
    border-color: var(--classic-navy);
}

/* Standard tables only; Bootstrap's status-colored table variants stay intact. */
body.nmsn-classic:not(.nmsn-page) .table:not(.table-primary, .table-secondary, .table-success, .table-danger, .table-warning, .table-info, .table-light, .table-dark) {
    --bs-table-color: var(--classic-ink);
    --bs-table-bg: var(--classic-paper);
    --bs-table-border-color: var(--classic-border);
    --bs-table-striped-color: var(--classic-ink);
    --bs-table-striped-bg: var(--classic-cream);
    --bs-table-hover-color: var(--classic-ink);
    --bs-table-hover-bg: #efe3c8;
    --bs-table-active-color: var(--classic-ink);
    --bs-table-active-bg: #eadbb9;
    color: var(--classic-ink);
    border-color: var(--classic-border);
}

/* app_specific.css uses !important here; cell variables also handle BS stripes. */
body.nmsn-classic:not(.nmsn-page) .bluebar-table thead th,
body.nmsn-classic:not(.nmsn-page) table.bluebar-table tbody tr:nth-child(even),
body.nmsn-classic:not(.nmsn-page) table.bluebar-table tbody tr:nth-child(even) > * {
    --bs-table-bg: var(--classic-cream);
    --bs-table-accent-bg: var(--classic-cream);
    --bs-table-striped-bg: var(--classic-cream);
    --bs-table-color: var(--classic-ink);
    color: var(--classic-ink);
    background-color: var(--classic-cream) !important;
}

body.nmsn-classic:not(.nmsn-page) table.bluebar-table.table-hover tbody tr:hover > * {
    --bs-table-accent-bg: #efe3c8;
}

/* Tabs, pagination, and primary informational components. */
body.nmsn-classic:not(.nmsn-page) .nav-tabs .nav-link,
body.nmsn-classic:not(.nmsn-page) .nav-pills .nav-link,
body.nmsn-classic:not(.nmsn-page) .page-link {
    color: var(--classic-blue);
}

body.nmsn-classic:not(.nmsn-page) .nav-tabs .nav-link.active,
body.nmsn-classic:not(.nmsn-page) .page-link {
    background-color: var(--classic-paper);
    border-color: var(--classic-border);
}

body.nmsn-classic:not(.nmsn-page) .nav-pills .nav-link.active,
body.nmsn-classic:not(.nmsn-page) .nav-pills .show > .nav-link,
body.nmsn-classic:not(.nmsn-page) .page-item.active .page-link {
    color: var(--classic-paper);
    background-color: var(--classic-navy);
    border-color: var(--classic-navy);
}

body.nmsn-classic:not(.nmsn-page) .page-link:hover {
    color: var(--classic-navy);
    background-color: var(--classic-cream);
}

body.nmsn-classic:not(.nmsn-page) .page-item.disabled .page-link {
    color: var(--classic-muted);
    background-color: var(--classic-cream);
}

body.nmsn-classic:not(.nmsn-page) .page-link:focus {
    box-shadow: 0 0 0 .25rem var(--classic-focus);
}

body.nmsn-classic:not(.nmsn-page) .list-group-item:not([class*="list-group-item-"]) {
    --bs-list-group-color: var(--classic-ink);
    --bs-list-group-bg: var(--classic-paper);
    --bs-list-group-border-color: var(--classic-border);
    color: var(--classic-ink);
    background-color: var(--classic-paper);
    border-color: var(--classic-border);
}

body.nmsn-classic:not(.nmsn-page) .list-group-item.active {
    color: var(--classic-paper);
    background-color: var(--classic-navy);
    border-color: var(--classic-navy);
}

body.nmsn-classic:not(.nmsn-page) .alert-primary {
    --bs-alert-color: var(--classic-navy);
    --bs-alert-bg: var(--classic-cream);
    --bs-alert-border-color: var(--classic-gold);
    color: var(--classic-navy);
    background-color: var(--classic-cream);
    border-color: var(--classic-gold);
}

body.nmsn-classic:not(.nmsn-page) .accordion-button {
    color: var(--classic-navy);
    background-color: var(--classic-paper);
}

body.nmsn-classic:not(.nmsn-page) .accordion-button:not(.collapsed) {
    color: var(--classic-navy);
    background-color: var(--classic-cream);
}

body.nmsn-classic:not(.nmsn-page) .accordion-button:focus {
    border-color: var(--classic-blue);
    box-shadow: 0 0 0 .25rem var(--classic-focus);
}

body.nmsn-classic:not(.nmsn-page) .progress-bar {
    background-color: var(--classic-navy);
}

body.nmsn-classic:not(.nmsn-page) .back-to-top,
body.nmsn-classic:not(.nmsn-page) .back-to-top:hover {
    color: var(--classic-paper);
    background-color: var(--classic-navy);
}
