/* Shared shell and theme overrides for the Bootstrap 4 dashboard. */
:root {
    --bs-sidebar-width: 212px;
    --bs-sidebar-mini: 64px;
    --bs-header-height: 64px;
    --bs-page: #f5f7fb;
    --bs-surface: #ffffff;
    --bs-subtle: #f2f5fa;
    --bs-hover: #eaf0fa;
    --bs-text: #202b3d;
    --bs-muted: #68768d;
    --bs-border: #e3e8f0;
    --bs-accent: #4568dd;
    --bs-active: #edf2ff;
    --bs-success: #73d6a5;
    --bs-danger: #ff939d;
    --bs-warning: #f3cc7a;
}

html[data-theme="dark"] {
    --bs-page: #0e1520;
    --bs-surface: #161f2d;
    --bs-subtle: #1c2738;
    --bs-hover: #23324a;
    --bs-text: #e3eaf5;
    --bs-muted: #a1afc4;
    --bs-border: #303e53;
    --bs-accent: #9bbaff;
    --bs-active: #253654;
    /* Aliases used by existing custom pages and the login form. */
    --bg-primary: var(--bs-page);
    --bg-secondary: var(--bs-surface);
    --bg-tertiary: var(--bs-subtle);
    --bg-hover: var(--bs-hover);
    --bg-page: var(--bs-page);
    --bg-card: var(--bs-surface);
    --text-primary: var(--bs-text);
    --text-main: var(--bs-text);
    --text-secondary: var(--bs-muted);
    --text-tertiary: var(--bs-muted);
    --text-muted: var(--bs-muted);
    --border-primary: var(--bs-border);
    --border-secondary: var(--bs-border);
    --border-tertiary: var(--bs-border);
    --divider: var(--bs-border);
    --accent-primary: #547fe9;
    --accent-hover: #426bd0;
    --accent-light: var(--bs-active);
    --primary-blue: var(--bs-accent);
    --primary-purple: #c1a4ff;
    --primary-red: var(--bs-danger);
    --gos-blue: var(--bs-accent);
    --gos-blue-light: #bed0ff;
    --gos-gray: var(--bs-subtle);
    --gos-text: var(--bs-text);
    --gos-green: var(--bs-success);
    --gos-red: var(--bs-danger);
    --gray-50: var(--bs-page);
    --gray-100: var(--bs-subtle);
    --gray-200: var(--bs-border);
    --gray-300: #46556c;
    --gray-400: #8595ac;
    --gray-500: var(--bs-muted);
    --gray-600: #b3bfd1;
    --gray-700: #ced8e6;
    --gray-800: #d8e1ee;
    --gray-900: var(--bs-text);
    --primary-light: var(--bs-active);
    --success-light: #173b32;
    --danger-light: #442732;
    --warning-light: #403622;
    --info-light: #203451;
    --primary-color: #547fe9;
    --primary-hover: #426bd0;
    --success-bg: #173b32;
    --success-text: var(--bs-success);
    --danger-bg: #442732;
    --danger-text: var(--bs-danger);
    --warning-bg: #403622;
    --warning-text: var(--bs-warning);
    --info-bg: #203451;
    --info-text: #accaff;
    color-scheme: dark;
}

.bs-dashboard {
    background-color: var(--bs-page);
    color: var(--bs-text);
}

.bs-dashboard .iq-sidebar {
    box-sizing: border-box;
    z-index: 1000;
    left: 0;
    width: var(--bs-sidebar-width);
    background: var(--bs-surface);
    border-right: 1px solid var(--bs-border);
    box-shadow: none;
    display: flex;
    flex-direction: column;
    transition: none;
}

.bs-dashboard .iq-sidebar-logo {
    min-height: var(--bs-header-height);
    padding: 14px 16px;
    margin: 0 0 8px;
    flex-shrink: 0;
    transform: none;
    transition: none;
}

.bs-dashboard .iq-sidebar-logo img { height: 28px; width: 28px; margin-right: 8px; }
.bs-dashboard .iq-sidebar-logo .logo-title { font-size: 14px; color: var(--bs-text); }
.bs-dashboard .iq-sidebar-logo a { opacity: 1; transition: none; }
.bs-dashboard .data-scrollbar { overflow-y: auto; flex: 1; min-height: 0; padding-bottom: 16px; }
.bs-dashboard .iq-sidebar-menu .iq-menu { padding: 0 8px; }

.bs-dashboard .iq-sidebar-menu .iq-menu li a {
    min-height: 40px;
    padding: 9px 10px;
    margin-bottom: 3px;
    border: 0;
    border-radius: 7px;
    font-size: 13px;
    line-height: 20px;
    text-transform: none;
    color: var(--bs-muted);
    transition: background-color .15s, color .15s;
}

/* Legacy active rules animate a 4px border, which shifts the label sideways. */
.bs-dashboard #app-sidebar .iq-menu li > a {
    border: 0;
    transition: background-color .12s ease, color .12s ease;
}

.bs-dashboard .iq-sidebar-menu .iq-menu > li > a > svg { width: 20px; height: 20px; flex-shrink: 0; }
.bs-dashboard .iq-sidebar-menu .iq-menu li a > span { margin-left: 10px !important; }
.bs-dashboard .iq-sidebar-menu .iq-menu li a .iq-arrow-right { font-size: 11px; width: 12px; }
.bs-dashboard .iq-sidebar-menu .iq-menu li a:hover { background: var(--bs-subtle); color: var(--bs-text); }
.bs-dashboard .iq-sidebar-menu .iq-menu li a:hover svg { color: inherit; }

.bs-dashboard .iq-sidebar-menu .iq-menu > li.active > a,
.bs-dashboard .iq-sidebar-menu .iq-menu li a[aria-expanded="true"],
.bs-dashboard .iq-sidebar-menu .iq-menu li.active .iq-submenu li.active > a {
    background: var(--bs-active);
    color: var(--bs-accent);
    border-color: transparent;
}

.bs-dashboard .iq-sidebar-menu .iq-menu > li.active > a svg,
.bs-dashboard .iq-sidebar-menu .iq-menu li.active .iq-submenu li.active > a svg { color: inherit; }
.bs-dashboard .iq-sidebar-menu .iq-menu > li.active > a { box-shadow: inset 3px 0 0 var(--bs-accent); }
.bs-dashboard .iq-sidebar-menu .iq-menu .iq-submenu { margin-left: 20px !important; padding: 3px 0 5px 10px; }
.bs-dashboard .iq-sidebar-menu .iq-menu .iq-submenu li a { min-height: 34px; padding: 6px 8px; font-size: 12px; }
.bs-dashboard .iq-sidebar-menu .iq-menu .iq-submenu li a span { margin-left: 0 !important; }

.bs-dashboard .iq-top-navbar {
    box-sizing: border-box;
    width: calc(100% - var(--bs-sidebar-width));
    min-height: var(--bs-header-height);
    padding: 0 20px;
    background: var(--bs-surface);
    border-bottom: 1px solid var(--bs-border);
    box-shadow: none;
    transition: none;
}

.bs-dashboard .iq-top-navbar .navbar { min-height: var(--bs-header-height); flex-wrap: nowrap; gap: 12px; }
.bs-page-heading { display: flex; align-items: center; gap: 12px; min-width: 0; }
.bs-dashboard .iq-top-navbar .navbar-breadcrumb { display: block; padding: 0; min-width: 0; color: var(--bs-text); }
.bs-dashboard .navbar-breadcrumb h5 { font-size: 16px; margin: 0; color: var(--bs-text); }
.bs-dashboard .navbar-list li > a { padding-top: 0; padding-bottom: 0; }
.bs-dashboard .navbar-list li .caption h6 { color: var(--bs-muted); font-size: 13px; }
.bs-dashboard .content-page { margin-left: var(--bs-sidebar-width); padding-top: 88px; transition: none; }
.bs-dashboard .iq-footer { box-sizing: border-box; margin-left: var(--bs-sidebar-width); width: calc(100% - var(--bs-sidebar-width)); background: var(--bs-surface); transition: none; }

.bs-icon-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 36px;
    height: 36px;
    padding: 0;
    border: 1px solid var(--bs-border);
    border-radius: 8px;
    background: var(--bs-surface);
    color: var(--bs-muted);
    cursor: pointer;
    transition: background-color .15s, color .15s;
}

.bs-icon-button:hover { background: var(--bs-hover); color: var(--bs-text); }
.bs-icon-button:focus-visible { outline: 2px solid var(--bs-accent); outline-offset: 3px; }
.bs-theme-sun, .bs-sidebar-close { display: none; }
[data-theme="dark"] .bs-theme-sun { display: block; }
[data-theme="dark"] .bs-theme-moon { display: none; }
.bs-login-theme { position: fixed; top: 20px; right: 20px; z-index: 10; }
.bs-sidebar-backdrop { display: none; }

/* Keep DataTables' sizing header hidden despite the legacy !important padding. */
.bs-dashboard .dataTables_scrollBody thead :is(th, td) {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    border-top-width: 0 !important;
    border-bottom-width: 0 !important;
}
.bs-dashboard .dataTables_scrollBody thead th::before,
.bs-dashboard .dataTables_scrollBody thead th::after { display: none !important; }

@media (min-width: 1300px) {
    :root { --bs-sidebar-width: 232px; }
    .bs-dashboard .iq-sidebar-logo img { width: 30px; height: 30px; }
    .bs-dashboard .iq-sidebar-logo .logo-title { font-size: 15px; }
    .bs-dashboard .iq-sidebar-menu .iq-menu > li > a { min-height: 44px; padding: 10px 12px; font-size: 14px; }
    .bs-dashboard .iq-sidebar-menu .iq-menu > li > a > svg { width: 22px; height: 22px; }
    .bs-dashboard .iq-sidebar-menu .iq-menu .iq-submenu li a { min-height: 36px; font-size: 13px; }
    [data-sidebar="collapsed"] .bs-dashboard .iq-sidebar { width: var(--bs-sidebar-mini); }
    [data-sidebar="collapsed"] .bs-dashboard .iq-sidebar-logo { padding: 18px; }
    [data-sidebar="collapsed"] .bs-dashboard .iq-sidebar-logo img { width: 28px; height: 28px; margin: 0; }
    [data-sidebar="collapsed"] .bs-dashboard .logo-title,
    [data-sidebar="collapsed"] .bs-dashboard .iq-sidebar-menu .iq-menu > li > a > span,
    [data-sidebar="collapsed"] .bs-dashboard .iq-sidebar-menu .iq-menu > li > a > .iq-arrow-right,
    [data-sidebar="collapsed"] .bs-dashboard .iq-sidebar-menu .iq-menu .iq-submenu { display: none; }
    [data-sidebar="collapsed"] .bs-dashboard .iq-sidebar-menu .iq-menu > li > a { justify-content: center; padding: 10px; }
    [data-sidebar="collapsed"] .bs-dashboard .content-page { margin-left: var(--bs-sidebar-mini); }
    [data-sidebar="collapsed"] .bs-dashboard .iq-top-navbar { width: calc(100% - var(--bs-sidebar-mini)); }
    [data-sidebar="collapsed"] .bs-dashboard .iq-footer { margin-left: var(--bs-sidebar-mini); width: calc(100% - var(--bs-sidebar-mini)); }
}

@media (max-width: 1299px) {
    .bs-dashboard .iq-sidebar { transform: translateX(-100%); visibility: hidden; transition: transform .16s ease; }
    .bs-dashboard .iq-top-navbar { width: 100%; }
    .bs-dashboard .content-page { margin-left: 0; }
    .bs-dashboard .iq-footer { margin-left: 0; width: 100%; }
    .bs-dashboard .bs-sidebar-close { display: inline-flex; margin-left: auto; border: 0; width: 28px; }
    .bs-dashboard .iq-sidebar-logo { padding: 14px 10px; gap: 4px; }
    .bs-dashboard .iq-sidebar-logo .logo-title { font-size: 12px; }
    [data-menu-open="true"] .bs-dashboard { overflow: hidden; }
    [data-menu-open="true"] .bs-dashboard .iq-sidebar { transform: translateX(0); visibility: visible; }
    .bs-sidebar-backdrop:not([hidden]) {
        display: block;
        position: fixed;
        inset: 0;
        border: 0;
        background: rgb(3 8 18 / 55%);
        z-index: 999;
    }
}

@media (max-width: 575px) {
    .bs-dashboard .iq-top-navbar { padding: 0 12px; }
    .bs-page-heading { gap: 8px; flex: 1; }
    .bs-dashboard .navbar-breadcrumb { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .bs-dashboard .navbar-breadcrumb h5 { font-size: 14px; overflow: hidden; text-overflow: ellipsis; }
    .bs-dashboard .content-page { padding: 80px 0 0; }
}

/* Legacy templates contain hard-coded colors; theme specificity overrides them. */
[data-theme="dark"] body { background-color: var(--bs-page); color: var(--bs-text); }
[data-theme="dark"] :is(h1, h2, h3, h4, h5, h6, label, .card-title, .form-label, .form-label-modern,
    .project-title, .section-title, .login-title, .alert-title, .select2-selection__rendered) { color: var(--bs-text) !important; }
[data-theme="dark"] a:where(:not(.btn, .gos-btn, .nav-link, .dropdown-item, .page-link)) { color: var(--bs-accent); }
[data-theme="dark"] :is(.text-muted, .form-text, .file-message, .form-hint, .login-subtitle,
    .project-meta, .complaint-search-hint, .complaint-meta, .empty-state, .spinner-content p,
    .alert-message, .duplicate-item, .stat-label, .stats-label) { color: var(--bs-muted) !important; }
[data-theme="dark"] :is(.text-dark, .text-body, .text-black-50) { color: var(--bs-text) !important; }

[data-theme="dark"] :is(.card, .card-header, .card-footer, .iq-card, .bg-white, .bg-light,
    .modal-content, .modal-header, .modal-footer, .dropdown-menu, .list-group-item, .popover,
    .project-card, .selection-card, .section-header, .stats-container, .type-stats-card, .content-card,
    .gos-card, .gos-tabs, .gos-content, .spinner-content, .invitation-card, .login-card,
    .query-form, .results-table, .quick-queries, .stat-box, .query-info, .table-info,
    .wiki-content, .toolbar-card, .header-card, .letter-preview, .violation-card, .violation-group, .selected-violations,
    .upload-item, .ajax-alert, .feature-card, .info-box, .complaint-item) {
    background-color: var(--bs-surface) !important;
    color: var(--bs-text);
    border-color: var(--bs-border);
}

[data-theme="dark"] .project-card.contract-expiring { border-color: #e6b957; }
[data-theme="dark"] .project-card.contract-critical { border-color: #ed7888; }
[data-theme="dark"] .project-card.contract-warning { border-color: #df9a63; }
[data-theme="dark"] :is(.card-header, .card-footer, .modal-header, .modal-footer, hr, .border,
    .border-top, .border-bottom, .border-left, .border-right, .table, table.dataTable,
    .dataTables_scrollHead, .dataTables_scrollBody, .gos-tabs, .complaint-search-actions,
    .complaint-item, .complaint-actions) { border-color: var(--bs-border) !important; }
[data-theme="dark"] :is(.dropdown-item, .list-group-item, .popover-body) { color: var(--bs-text); }
[data-theme="dark"] :is(.dropdown-item:hover, .list-group-item:hover) { background-color: var(--bs-hover); }
[data-theme="dark"] .close { color: var(--bs-text); text-shadow: none; }

[data-theme="dark"] :is(.form-control, .form-select, .form-input, .form-textarea, .search-input,
    .custom-select, .custom-file-label, .input-group-text, .js-labelFile, .file-drop-area,
    .drop-zone, .select2-selection, .select2-dropdown, .select2-search__field,
    .dataTables_wrapper input, .dataTables_wrapper select, #resultText) {
    background-color: var(--bs-subtle) !important;
    color: var(--bs-text) !important;
    border-color: var(--bs-border) !important;
}

[data-theme="dark"] :is(input, textarea)::placeholder { color: #91a0b7; opacity: 1; }
[data-theme="dark"] :is(.form-control, .form-select, .form-input, .form-textarea, .search-input):focus {
    border-color: var(--bs-accent) !important;
    box-shadow: 0 0 0 3px rgb(155 186 255 / 15%);
}
[data-theme="dark"] :is(.form-control:disabled, .form-control[readonly]) { background-color: var(--bs-page) !important; }
[data-theme="dark"] :is(.choose-file-button, .select2-selection__choice) { background-color: var(--bs-hover) !important; color: var(--bs-text) !important; border-color: var(--bs-border) !important; }
[data-theme="dark"] .select2-results__option { color: var(--bs-text) !important; }
[data-theme="dark"] .select2-results__option--highlighted { background-color: var(--bs-active) !important; color: var(--bs-accent) !important; }
[data-theme="dark"] .select2-results__option[aria-selected="true"] { background-color: var(--bs-hover); }
/* The complaint form declares Select2 colors with !important in its own styles. */
[data-theme="dark"] body .select2-container :is(.select2-selection, .select2-dropdown, .select2-search__field) {
    background-color: var(--bs-subtle) !important;
    color: var(--bs-text) !important;
    border-color: var(--bs-border) !important;
}
[data-theme="dark"] body .select2-container .select2-selection--single :is(.select2-selection__rendered, .select2-selection__clear) { color: var(--bs-text) !important; }
[data-theme="dark"] body .select2-container .select2-selection__placeholder { color: var(--bs-muted) !important; }
[data-theme="dark"] body .select2-container .select2-selection__arrow b { border-color: var(--bs-muted) transparent transparent !important; }
[data-theme="dark"] body .select2-container--open .select2-selection__arrow b { border-color: transparent transparent var(--bs-muted) !important; }
[data-theme="dark"] body .select2-container .select2-results__option { color: var(--bs-text) !important; }
[data-theme="dark"] body .select2-container :is(.select2-results__option--highlighted, .select2-results__option--selected) { background-color: var(--bs-active) !important; color: var(--bs-accent) !important; }
[data-theme="dark"] .custom-control-label::before { background-color: var(--bs-subtle); border-color: #74849c; }
[data-theme="dark"] .custom-control-input:checked ~ .custom-control-label::before { background-color: #547fe9; border-color: #547fe9; }

[data-theme="dark"] :is(.table, .results-table table, .dataTables_wrapper) { color: var(--bs-text); }
[data-theme="dark"] :is(.table th, .table td, .results-table th, .results-table td) { color: var(--bs-text); border-color: var(--bs-border) !important; }
[data-theme="dark"] :is(.table thead, .table thead th, .results-table th, .wiki-content th) { background-color: var(--bs-subtle) !important; color: var(--bs-muted) !important; }
[data-theme="dark"] .table td a:not(.btn) { color: var(--bs-accent); }
[data-theme="dark"] .dataTables_wrapper :is(.dataTables_info, .dataTables_length, .dataTables_filter, .dataTables_paginate) { color: var(--bs-muted) !important; }
[data-theme="dark"] :is(.table-striped tbody tr:nth-of-type(odd), table.dataTable tbody tr,
    .results-table tr:nth-child(even)) { background-color: var(--bs-surface); }
[data-theme="dark"] :is(.table-hover tbody tr:hover, .table tbody tr:hover, table.dataTable tbody tr:hover) { background-color: var(--bs-hover) !important; }
[data-theme="dark"] .table tbody tr.checked,
[data-theme="dark"] .table tbody tr.checked:hover { background-color: var(--bs-active) !important; }
[data-theme="dark"] :is(.page-link, .paginate_button, .pagination a, .btn-open, .btn-edit-card,
    .gos-btn-outline, .toolbar-btn.secondary, .violation-btn) { background-color: var(--bs-subtle); color: var(--bs-accent); border-color: var(--bs-border); }
[data-theme="dark"] :is(.page-item.active .page-link, .paginate_button.current) { background-color: #4568dd; color: #fff; }
/* DataTables declares pagination colors and gradients with !important. */
[data-theme="dark"] .dataTables_wrapper .dataTables_paginate .paginate_button {
    background: var(--bs-subtle) !important;
    color: var(--bs-accent) !important;
    border: 1px solid var(--bs-border) !important;
}
[data-theme="dark"] .dataTables_wrapper .dataTables_paginate .paginate_button:hover { background: var(--bs-hover) !important; }
[data-theme="dark"] .dataTables_wrapper .dataTables_paginate .paginate_button.current,
[data-theme="dark"] .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
    background: var(--bs-active) !important;
    color: var(--bs-accent) !important;
    border-color: var(--bs-accent) !important;
}
[data-theme="dark"] .dataTables_wrapper .dataTables_paginate .paginate_button.disabled,
[data-theme="dark"] .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover {
    background: transparent !important;
    color: var(--bs-muted) !important;
    border-color: transparent !important;
}
[data-theme="dark"] :is(.gos-btn-primary, .toolbar-btn.primary) { background-color: #4568dd; color: #fff; }
[data-theme="dark"] :is(.gos-btn-primary:hover, .toolbar-btn.primary:hover) { background-color: #3557c5; }
[data-theme="dark"] .gos-btn-success { background-color: #24724f; color: #fff; }
[data-theme="dark"] .gos-btn-danger { background-color: #b93e50; color: #fff; }
[data-theme="dark"] :is(.nav-tabs .nav-link, .gos-tabs .nav-link) { color: var(--bs-muted); }
[data-theme="dark"] :is(.nav-tabs .nav-link.active, .gos-tabs .nav-link.active) { background-color: var(--bs-subtle); color: var(--bs-accent); border-color: var(--bs-border); }

[data-theme="dark"] :is(.alert-primary, .alert-info, .info-box, .card-count) { background-color: #203451 !important; color: #accaff; border-color: #3b557a; }
[data-theme="dark"] .card-count b { color: var(--bs-accent); }
[data-theme="dark"] :is(.alert-danger, .alert-error, .error-alert, .error-message, .gos-notification.error, .status-rejected) { background-color: #442732 !important; color: var(--bs-danger); border-color: #70424f; }
[data-theme="dark"] :is(.alert-success, .badge-success, .status-active, .status-approved, .gos-notification.success) { background-color: #173b32 !important; color: var(--bs-success); border-color: #30604e; }
[data-theme="dark"] :is(.alert-warning, .sellers-warning, .sellers-warning-list, .status-paused, .status-pending) { background-color: #403622 !important; color: var(--bs-warning); border-color: #6c5a33; }
[data-theme="dark"] .sellers-warning :is(strong, li, small, .close-warning) { color: var(--bs-warning); }
[data-theme="dark"] .sellers-warning-header svg { fill: var(--bs-warning); }
[data-theme="dark"] .alert :is(h1, h2, h3, h4, h5, h6) { color: inherit !important; }
[data-theme="dark"] :is(.status-finished, .text-success, .btn-outline-success) { color: var(--bs-success) !important; }
[data-theme="dark"] :is(.status-failed, .status-started, .text-danger, .btn-outline-danger) { color: var(--bs-danger) !important; }
[data-theme="dark"] :is(.btn-outline-primary, .btn-outline-info) { color: var(--bs-accent); }
[data-theme="dark"] :is(.status-inactive, .status-cancelled, .badge-status-inactive, .badge-other) { background-color: var(--bs-subtle); color: var(--bs-muted); }
[data-theme="dark"] :is(pre, code) { background-color: var(--bs-subtle); color: #c3d5f4; }

@media (prefers-reduced-motion: reduce) {
    .bs-dashboard :is(.iq-sidebar, .iq-top-navbar, .content-page, .iq-sidebar-logo, .iq-footer, .bs-icon-button) { transition: none; }
}

@media print {
    html[data-theme="dark"] {
        --bs-page: #fff;
        --bs-surface: #fff;
        --bs-subtle: #f2f5fa;
        --bs-text: #202b3d;
        --bs-muted: #526078;
        --bs-border: #d4dbe6;
        --bs-accent: #244caa;
        color-scheme: light;
    }
    .bs-login-theme { display: none; }
}
