/* ============================================================
   PTSP2026 — Dark Theme Universal Patches
   Fix Bootstrap 5 light-mode bleed on dark backgrounds
   ============================================================ */

/* Fix: bg utilities */
.bg-white     { background-color: var(--surface-2) !important; color: var(--ink) !important; }
.bg-light     { background-color: var(--surface-3) !important; color: var(--ink) !important; }
.bg-dark      { background-color: var(--surface) !important; color: var(--ink) !important; }
.bg-secondary { background-color: rgba(255,255,255,0.06) !important; color: var(--ink) !important; }

/* Fix: card-header.bg-white — used in every page view */
.card-header.bg-white,
.card-header.bg-light {
    background: rgba(0,200,255,0.04) !important;
    border-bottom: 1px solid var(--line) !important;
    color: var(--ink) !important;
}
.card-header.bg-white h6,
.card-header.bg-white h5,
.card-header.bg-light h6,
.card-header.bg-light h5 { color: var(--ink) !important; }

.card-footer.bg-white,
.card-footer.bg-light {
    background: rgba(255,255,255,0.02) !important;
    border-top: 1px solid var(--line) !important;
    color: var(--ink-soft) !important;
}

/* Fix: modal-footer.bg-white */
.modal-footer.bg-white,
.modal-header.bg-white {
    background: var(--surface-3) !important;
    color: var(--ink) !important;
}


/* Fix: text colors */
.text-dark    { color: var(--ink) !important; }
.text-black   { color: var(--ink) !important; }
.text-body    { color: var(--ink) !important; }
.text-reset   { color: var(--ink) !important; }
.text-light   { color: var(--ink-mid) !important; }

/* Fix: border */
.border       { border-color: var(--line) !important; }
.border-light { border-color: var(--line-strong) !important; }
.border-dark  { border-color: rgba(255,255,255,0.12) !important; }

/* Fix: Bootstrap card */
.card {
    background: var(--surface) !important;
    border-color: var(--line) !important;
    color: var(--ink) !important;
}
.card-header {
    background: rgba(255,255,255,0.03) !important;
    border-bottom-color: var(--line) !important;
    color: var(--ink) !important;
}
.card-footer {
    background: rgba(255,255,255,0.02) !important;
    border-top-color: var(--line) !important;
    color: var(--ink-soft) !important;
}
.card-title    { color: var(--ink) !important; }
.card-text     { color: var(--ink-soft) !important; }
.card-subtitle { color: var(--ink-soft) !important; }

/* Fix: nav links (non-sidebar) */
.nav-link { color: var(--ink-soft); }
.nav-link:hover, .nav-link:focus { color: var(--brand); }
.nav-link.active { color: var(--brand) !important; }
.nav-link.disabled { color: var(--ink-muted) !important; opacity: .5; }

/* Fix: table */
.table { color: var(--ink) !important; border-color: var(--line) !important; }
.table > :not(caption) > * { border-color: var(--line) !important; }
.table > :not(caption) > * > * { color: var(--ink) !important; }
.table-light > * > tr > * { background: rgba(255,255,255,0.03) !important; color: var(--ink) !important; }
.table-dark  > * > tr > * { background: var(--surface-3) !important; color: var(--ink) !important; }
.table-success > * > tr > * { background: rgba(0,229,160,0.07) !important; }
.table-danger  > * > tr > * { background: rgba(255,107,107,0.07) !important; }
.table-warning > * > tr > * { background: rgba(255,201,71,0.07) !important; }

/* Fix: form inputs */
.form-control,
.form-select,
.form-control-sm,
.form-control-lg,
.form-select-sm,
.form-select-lg {
    background-color: rgba(255,255,255,0.05) !important;
    border-color: rgba(0,200,255,0.22) !important;
    color: var(--ink) !important;
}
.form-control:focus,
.form-select:focus {
    background-color: rgba(0,200,255,0.06) !important;
    border-color: var(--brand) !important;
    color: var(--ink) !important;
    box-shadow: 0 0 0 3px rgba(0,200,255,0.14) !important;
}
.form-control::placeholder { color: var(--ink-muted) !important; opacity: 1; }
.form-control:disabled,
.form-select:disabled {
    background-color: rgba(255,255,255,0.03) !important;
    border-color: rgba(0,200,255,0.08) !important;
    color: var(--ink-muted) !important;
    opacity: 1;
}
.form-control-plaintext {
    color: var(--ink) !important;
    background: transparent !important;
}
.input-group-text {
    background-color: rgba(255,255,255,0.06) !important;
    border-color: rgba(0,200,255,0.22) !important;
    color: var(--ink-soft) !important;
}

/* Fix: form check */
.form-check-label { color: var(--ink-soft) !important; }
.form-check-input {
    background-color: rgba(255,255,255,0.06) !important;
    border-color: rgba(0,200,255,0.35) !important;
}
.form-check-input:checked {
    background-color: var(--brand) !important;
    border-color: var(--brand) !important;
}
.form-check-input:focus { box-shadow: 0 0 0 3px rgba(0,200,255,0.20) !important; }

/* Fix: select option */
select option { background: var(--surface-3) !important; color: var(--ink) !important; }

/* Fix: close button */
.btn-close { filter: invert(1) brightness(1.5) !important; opacity: .6; }
.btn-close:hover { opacity: 1; }

/* Fix: typography */
small, .small { color: var(--ink-soft); }
strong, b     { color: var(--ink); }
hr            { border-color: var(--line) !important; opacity: 1; }
label, legend { color: var(--ink-mid) !important; }
.col-form-label { color: var(--ink-mid) !important; }
.form-text    { color: var(--ink-muted) !important; }
.text-muted   { color: var(--ink-soft) !important; }
h1,h2,h3,h4,h5,h6 { color: var(--ink) !important; }

/* Fix: breadcrumb */
.breadcrumb-item { color: var(--ink-soft); }
.breadcrumb-item.active { color: var(--ink-muted); }
.breadcrumb-item a { color: var(--brand); }
.breadcrumb-item + .breadcrumb-item::before { color: var(--ink-muted); }
.breadcrumb { background: transparent; }

/* Fix: progress */
.progress { background-color: rgba(255,255,255,0.07) !important; }

/* Fix: offcanvas */
.offcanvas {
    background-color: var(--surface-2) !important;
    border-color: var(--line) !important;
    color: var(--ink) !important;
}
.offcanvas-header { border-bottom-color: var(--line) !important; }
.offcanvas-title  { color: var(--ink) !important; }

/* Fix: popover */
.popover { background: var(--surface-3) !important; border-color: var(--line-strong) !important; }
.popover-header { background: var(--surface-2) !important; border-bottom-color: var(--line) !important; color: var(--ink) !important; }
.popover-body   { color: var(--ink-soft) !important; }
.popover .popover-arrow::before, .popover .popover-arrow::after { border-color: var(--line-strong) !important; }

/* Fix: Toast */
.toast { background: var(--surface-2) !important; border-color: var(--line) !important; color: var(--ink) !important; }
.toast-header { background: var(--surface-3) !important; border-bottom-color: var(--line) !important; color: var(--ink) !important; }

/* Fix: EasyUI / DataGrid dark */
.panel-body, .datagrid-body { background: var(--surface) !important; color: var(--ink) !important; }
.datagrid-header { background: rgba(0,200,255,0.05) !important; }
.datagrid-header td { color: var(--ink-soft) !important; border-color: var(--line) !important; }
.datagrid-body td { border-color: var(--line-soft) !important; color: var(--ink) !important; }
.datagrid-body tr:hover td { background: rgba(0,200,255,0.05) !important; }
.datagrid-row-alt > td { background: rgba(255,255,255,0.015) !important; }
.panel-header, .window-header { background: linear-gradient(180deg,var(--surface-3),var(--surface-2)) !important; color: var(--ink) !important; border-bottom-color: var(--line) !important; }
.window-body, .dialog-content { background: var(--surface-2) !important; color: var(--ink) !important; }
.textbox, .combo, .numberbox, .datebox { background: rgba(255,255,255,0.05) !important; border-color: rgba(0,200,255,0.22) !important; color: var(--ink) !important; }
.textbox-focused { border-color: var(--brand) !important; box-shadow: 0 0 0 3px rgba(0,200,255,0.14) !important; }
.l-btn { background: rgba(255,255,255,0.05) !important; border-color: var(--line-strong) !important; color: var(--ink) !important; }
.l-btn:hover { background: rgba(0,200,255,0.10) !important; border-color: var(--brand) !important; color: var(--brand) !important; }
.tabs-header, .tabs-tool { background: var(--surface-3) !important; border-color: var(--line) !important; }
.tabs li a.tabs-inner { color: var(--ink-soft) !important; background: transparent !important; }
.tabs li.tabs-selected a.tabs-inner { background: var(--surface-2) !important; color: var(--brand) !important; }
.datagrid-pager { background: var(--surface-3) !important; border-top-color: var(--line) !important; color: var(--ink-soft) !important; }

/* Fix: SweetAlert2 inputs */
.swal2-input, .swal2-textarea, .swal2-select {
    background: rgba(255,255,255,0.05) !important;
    border-color: rgba(0,200,255,0.25) !important;
    color: var(--ink) !important;
}
.swal2-input:focus, .swal2-textarea:focus { border-color: var(--brand) !important; }
.swal2-validation-message { background: rgba(255,107,107,0.10) !important; color: var(--brand-danger) !important; }
.swal2-loader { border-color: var(--brand) transparent var(--brand) transparent !important; }

/* Fix: inline style color traps */
[style*="color:#000"], [style*="color: #000"],
[style*="color:#333"], [style*="color: #333"],
[style*="color:#222"], [style*="color: #222"],
[style*="color:black"], [style*="color: black"] { color: var(--ink) !important; }

[style*="background:#fff"], [style*="background: #fff"],
[style*="background:white"], [style*="background: white"],
[style*="background-color:#fff"], [style*="background-color: #fff"],
[style*="background-color:white"] { background-color: var(--surface-2) !important; }

/* Fix: pre / code */
pre { background: var(--surface-3) !important; color: var(--ink) !important; border-color: var(--line) !important; }
code { background: rgba(0,200,255,0.10) !important; color: var(--brand) !important; }

/* Fix: alerts (re-state for specificity) */
.alert-secondary { background: rgba(106,139,168,0.10) !important; border-color: rgba(106,139,168,0.25) !important; color: var(--ink-soft) !important; }
.alert-light     { background: rgba(255,255,255,0.05) !important; border-color: rgba(255,255,255,0.10) !important; color: var(--ink-soft) !important; }
.alert-dark      { background: rgba(255,255,255,0.04) !important; border-color: rgba(255,255,255,0.10) !important; color: var(--ink) !important; }
.alert a         { color: inherit; text-decoration: underline; }

/* Fix: disabled buttons */
.btn:disabled, .btn.disabled { opacity: .45 !important; }
.btn-secondary { background: rgba(255,255,255,0.08) !important; border-color: var(--line-strong) !important; color: var(--ink) !important; }
.btn-secondary:hover { background: rgba(255,255,255,0.14) !important; color: var(--ink) !important; }
.btn-light { background: rgba(255,255,255,0.08) !important; border-color: var(--line-strong) !important; color: var(--ink) !important; }
.btn-dark  { background: rgba(255,255,255,0.12) !important; border-color: var(--line-strong) !important; color: var(--ink) !important; }

/* Fix: button sizes — ensure compact across all variants */
.btn { padding: .38rem .85rem !important; font-size: .82rem !important; line-height: 1.4 !important; }
.btn-sm { font-size: .75rem !important; padding: .24rem .6rem !important; border-radius: 8px !important; }
.btn-lg { font-size: .92rem !important; padding: .5rem 1.1rem !important; }
.btn-icon { padding: .32rem .42rem !important; }

/* Fix: print (preserve readability) */
@media print {
    body { background: white !important; color: black !important; }
    .sidebar, .topbar { display: none !important; }
    .app-shell { display: block !important; }
    .card, .card-soft { background: white !important; color: black !important; border: 1px solid #ccc !important; }
}
