/* Shared Bootstrap, DevExtreme, and reporting chrome themed from semantic tokens.
   Report document canvases and exported branding are left untouched. */

/* ---------------------------------------------------------------------------
   Bootstrap surfaces, forms, overlays
   --------------------------------------------------------------------------- */
.dropdown-menu,
.dropdown-menu.show {
    background: var(--color-card-bg);
    border: 1px solid var(--border-color);
    color: var(--color-text-primary);
    box-shadow: var(--shadow-lg);
}

.dropdown-item {
    color: var(--color-text-primary);
}

.dropdown-item:hover,
.dropdown-item:focus {
    background: var(--color-menu-hover);
    color: var(--color-accent);
}

.dropdown-divider {
    border-color: var(--border-color);
}

.form-control,
.form-select,
.form-control-lg,
.input-group-text {
    background-color: var(--color-input-bg);
    border-color: var(--color-input-border);
    color: var(--color-input-text);
    border-radius: var(--radius-md);
}

.form-control::placeholder {
    color: var(--color-input-placeholder);
}

.form-control:focus,
.form-select:focus {
    border-color: var(--border-focus);
    box-shadow: var(--focus-ring);
    background-color: var(--color-input-bg);
    color: var(--color-input-text);
}

.form-control:disabled,
.form-select:disabled,
.form-control[readonly] {
    background-color: var(--color-input-disabled-bg);
    color: var(--color-text-muted);
}

.form-check-input:checked {
    background-color: var(--color-accent);
    border-color: var(--color-accent);
}

.form-check-input:focus {
    box-shadow: var(--focus-ring);
    border-color: var(--border-focus);
}

.form-label {
    color: var(--color-text-secondary);
}

.modal-content {
    background: var(--color-card-bg);
    color: var(--color-text-primary);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-modal);
    border: 1px solid var(--border-color);
}

.modal-header {
    background: var(--gradient-card-head);
    border-bottom: 1px solid var(--border-color);
    color: var(--color-text-primary);
}

.modal-footer {
    background: var(--color-card-muted);
    border-top: 1px solid var(--border-color);
}

.modal-backdrop {
    background: var(--color-overlay);
}

.alert-success { background: var(--color-success-soft); color: var(--color-success-soft-text); border-color: var(--color-success); }
.alert-danger { background: var(--color-danger-soft); color: var(--color-danger-soft-text); border-color: var(--color-danger); }
.alert-warning { background: var(--color-warning-soft); color: var(--color-warning-soft-text); border-color: var(--color-warning); }
.alert-info { background: var(--color-info-soft); color: var(--color-info-soft-text); border-color: var(--color-info); }

.table {
    color: var(--color-text-primary);
    border-color: var(--color-table-border);
}

.table thead th {
    background: var(--color-table-header);
    color: var(--color-text-secondary);
}

.nav-tabs .nav-link {
    color: var(--color-text-secondary);
    border-color: transparent;
}

.nav-tabs .nav-link.active {
    background: var(--color-card-bg);
    color: var(--color-accent);
    border-color: var(--border-color) var(--border-color) var(--color-card-bg);
}

.spinner-border,
.spinner-grow {
    color: var(--color-accent);
}

.page-link {
    color: var(--color-accent);
    background: var(--color-card-bg);
    border-color: var(--border-color);
}

.page-item.active .page-link {
    background: var(--color-accent);
    border-color: var(--color-accent);
    color: var(--color-text-on-accent);
}

.list-group-item {
    background: var(--color-card-bg);
    color: var(--color-text-primary);
    border-color: var(--border-color);
}

.popover,
.tooltip-inner {
    background: var(--color-surface-1);
    color: var(--color-text-primary);
}

/* ---------------------------------------------------------------------------
   DevExtreme grids, editors, overlays, validation, loaders
   --------------------------------------------------------------------------- */
.dx-widget {
    font-family: var(--default-font-family), sans-serif;
    color: var(--color-text-primary);
}

.dx-datagrid,
.dx-treelist,
.dx-pivotgrid {
    background: var(--color-card-bg);
    color: var(--color-text-primary);
    border-color: var(--border-color);
}

.dx-datagrid-headers,
.dx-treelist-headers {
    background: var(--color-table-header) !important;
    color: var(--color-text-secondary) !important;
}

.dx-datagrid-rowsview .dx-row-alt > td,
.dx-datagrid-rowsview .dx-row-alt > tr > td {
    background: var(--color-table-stripe) !important;
}

.dx-datagrid-rowsview .dx-data-row:hover > td,
.dx-datagrid-rowsview .dx-row.dx-state-hover > td {
    background: var(--color-table-hover) !important;
}

.dx-datagrid-rowsview .dx-selection.dx-row > td,
.dx-datagrid-rowsview .dx-selection.dx-row:hover > td,
.dx-datagrid-rowsview .dx-selection.dx-row > tr > td {
    background: var(--color-accent-light) !important;
    color: var(--color-text-primary) !important;
}

.dx-datagrid .dx-row > td,
.dx-datagrid .dx-row > th,
.dx-treelist .dx-row > td {
    border-color: var(--color-table-border) !important;
}

.dx-texteditor,
.dx-texteditor.dx-editor-outlined {
    background: var(--color-input-bg);
    border-color: var(--color-input-border);
    color: var(--color-input-text);
    border-radius: var(--radius-md);
}

.dx-texteditor-input,
.dx-placeholder {
    color: var(--color-input-text);
}

.dx-placeholder::before {
    color: var(--color-input-placeholder);
}

.dx-texteditor.dx-state-focused,
.dx-texteditor.dx-state-hover {
    border-color: var(--border-focus);
}

.dx-texteditor.dx-state-focused {
    box-shadow: var(--focus-ring);
}

.dx-texteditor.dx-state-disabled,
.dx-state-disabled .dx-texteditor-input {
    background: var(--color-input-disabled-bg);
    color: var(--color-text-muted);
}

.dx-dropdowneditor-overlay .dx-overlay-content,
.dx-overlay-wrapper .dx-overlay-content,
.dx-popup-wrapper .dx-overlay-content,
.dx-loadpanel-content {
    background: var(--color-card-bg);
    color: var(--color-text-primary);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
}

.dx-list-item {
    color: var(--color-text-primary);
}

.dx-list-item.dx-state-hover,
.dx-list-item.dx-state-focused {
    background: var(--color-menu-hover);
}

.dx-list-item.dx-list-item-selected,
.dx-list-item.dx-state-selected {
    background: var(--color-accent-light);
    color: var(--color-accent-contrast);
}

.dx-invalid.dx-texteditor {
    border-color: var(--color-danger);
}

.dx-invalid-message > .dx-overlay-content {
    background: var(--color-danger);
    color: var(--color-text-on-accent);
}

.dx-validationsummary-item {
    color: var(--color-danger);
}

.dx-loadindicator-segment,
.dx-loadindicator-icon {
    border-color: var(--color-accent);
}

.dx-loadpanel-message,
.dx-scrollview-loadpanel {
    color: var(--color-text-secondary);
}

.dx-button {
    border-radius: var(--radius-md);
}

.dx-button-mode-contained.dx-button-default {
    background: var(--btn-primary);
    border-color: var(--btn-primary);
    color: var(--color-text-on-accent);
}

.dx-button-mode-contained.dx-button-success {
    background: var(--color-success);
    border-color: var(--color-success);
    color: var(--color-text-on-accent);
}

.dx-button-mode-contained.dx-button-danger {
    background: var(--color-danger);
    border-color: var(--color-danger);
    color: var(--color-text-on-accent);
}

.dx-button.dx-state-disabled,
.dx-state-disabled.dx-widget {
    opacity: 0.5;
}

.dx-pager .dx-page-sizes .dx-selection,
.dx-pager .dx-pages .dx-selection {
    background: var(--color-accent);
    color: var(--color-text-on-accent);
}

.dx-datagrid-pager,
.dx-treelist-pager {
    background: var(--color-card-muted);
    color: var(--color-text-secondary);
    border-color: var(--border-color);
}

.dx-overlay-shader {
    background: var(--color-scrim);
}

.dx-scrollable-scroll-content {
    background: var(--border-strong);
}

/* ---------------------------------------------------------------------------
   DevExpress report viewer / designer chrome (not document content)
   --------------------------------------------------------------------------- */
.dxrd-toolbar,
.dxrd-menu,
.dxrd-navigation-panel,
.dxrd-right-panel,
.dxrd-toolbox,
.dxrd-tab-panel,
.dxdxt-designer-wrapper > .dxrd-menu,
.dxrd-preview .dxrdv-toolbar,
.dx-report-viewer .dxrdv-toolbar,
.dxrd-designer .dxrd-toolbar-wrapper {
    background: var(--color-card-muted) !important;
    color: var(--color-text-primary) !important;
    border-color: var(--border-color) !important;
}

.dxrd-toolbar .dx-button,
.dxrd-menu .dx-menu-item,
.dxrdv-toolbar .dx-button {
    color: var(--color-text-primary);
}

.dxrd-designer,
.dxrd-preview,
.dx-report-viewer {
    background: var(--color-body-bg);
}

.dxrd-toolbox-item:hover,
.dxrd-navigation-panel .dx-treeview-item.dx-state-hover {
    background: var(--color-menu-hover) !important;
}

/* Keep the actual report surface readable and unthemed */
.dxrd-preview .dxrdp-page,
.dx-report-viewer .dxrdp-page,
.dxrd-designer .dxrd-paper {
    color: initial;
}
