/* ============================================================================
 * ss-ui-bootstrap-skin.css
 *
 * Optional layer that re-skins legacy Bootstrap 5 markup (.btn-primary,
 * .form-control, .card, .modal-content, etc.) to match the ss-ui design
 * system without forcing every existing page to rewrite its markup.
 *
 * Pages that adopt this layer simply add `body.ss-ui-skin` to their <body>
 * (or wrap a section in `.ss-ui-skin`) and link this stylesheet after
 * Bootstrap + ss-ui.css. Pages that prefer the native Bootstrap look can
 * skip it entirely.
 *
 * The scope guard prevents this from leaking into pages that haven't
 * opted in, which matters because legacy pages still use light surfaces.
 * ========================================================================= */

body.ss-ui-skin,
.ss-ui-skin {
    background: var(--ss-bg) !important;
    color: var(--ss-text);
    /* Re-bind the legacy tenant brand palette to the GPT-5.5 dark-blue
       stack. Every legacy stylesheet that consumes var(--brand-primary)
       or var(--brand-accent) (nav.php, chat.php, admin_panel.php, …)
       picks up dark blue automatically without per-file edits. The
       GSG/SS-A logo images are unaffected (they're <img>s, not CSS). */
    --brand-primary: #0b1220;   /* matches --ss-surface */
    --brand-accent:  #3b82f6;   /* matches --ss-blue */
    --brand-primary-dark: #050a14;
    --brand-accent-dark: #2563eb;
}
.ss-ui-skin h1, .ss-ui-skin h2, .ss-ui-skin h3, .ss-ui-skin h4, .ss-ui-skin h5, .ss-ui-skin h6 {
    color: var(--ss-text);
}

/* === NO MORE WHITE — DEFENSIVE BACKGROUND SWEEP =========================
   Hard kill every white/light Bootstrap surface inside the ss-ui-skin
   scope. Page authors keep using .bg-white / .bg-light / .btn-light /
   etc., the design system silently rewrites them dark.

   Applies to *every* descendant of .ss-ui-skin so we don't have to
   chase per-page hardcoded colors. Buttons, badges, alerts, cards,
   tooltips, popovers, list groups — all caught. Iframes (PDF
   previews) and <input type=color> swatches are explicitly excluded
   so document previews still render correctly. */
.ss-ui-skin .bg-white,
.ss-ui-skin .bg-light,
.ss-ui-skin .bg-body,
.ss-ui-skin .bg-body-tertiary,
.ss-ui-skin .bg-body-secondary,
.ss-ui-skin .text-bg-light,
.ss-ui-skin .text-bg-white {
    background-color: var(--ss-surface-2) !important;
    color: var(--ss-text) !important;
}
.ss-ui-skin .btn-light,
.ss-ui-skin .btn-outline-light {
    background-color: rgba(255,255,255,0.04) !important;
    border-color: var(--ss-border) !important;
    color: var(--ss-text) !important;
}
.ss-ui-skin .btn-light:hover,
.ss-ui-skin .btn-outline-light:hover {
    background-color: rgba(255,255,255,0.08) !important;
}
.ss-ui-skin .badge.bg-light,
.ss-ui-skin .badge.bg-white {
    background-color: rgba(255,255,255,0.06) !important;
    color: var(--ss-text) !important;
}
/* Bootstrap's pale alert tints (.alert-light, .alert-secondary, and the
   pastel success/warning/info/danger fills) look like white/cream pills
   on a dark page — flip them to dark tinted surfaces so they read
   correctly on var(--ss-bg). */
.ss-ui-skin .alert-light,
.ss-ui-skin .alert-secondary {
    background-color: var(--ss-surface-2) !important;
    border-color: var(--ss-border) !important;
    color: var(--ss-text) !important;
}
.ss-ui-skin .alert-success {
    background-color: rgba(34,197,94,0.10) !important;
    border-color: rgba(34,197,94,0.45) !important;
    color: var(--ss-green-soft) !important;
}
.ss-ui-skin .alert-info {
    background-color: rgba(59,130,246,0.10) !important;
    border-color: rgba(59,130,246,0.45) !important;
    color: var(--ss-blue-soft) !important;
}
.ss-ui-skin .alert-warning {
    background-color: rgba(245,158,11,0.10) !important;
    border-color: rgba(245,158,11,0.45) !important;
    color: var(--ss-amber-text) !important;
}
.ss-ui-skin .alert-danger {
    background-color: rgba(239,68,68,0.10) !important;
    border-color: rgba(239,68,68,0.45) !important;
    color: var(--ss-red-soft) !important;
}
/* Catch the pale "soft" button variants some pages render via
   text-bg-success / text-bg-warning utility helpers (the Preview /
   Generate PDF / Activate Contract pattern in admin_contracts.php). */
.ss-ui-skin .text-bg-success {
    background-color: rgba(34,197,94,0.10) !important;
    color: var(--ss-green-soft) !important;
}
.ss-ui-skin .text-bg-warning {
    background-color: rgba(245,158,11,0.10) !important;
    color: var(--ss-amber-text) !important;
}
.ss-ui-skin .text-bg-info {
    background-color: rgba(59,130,246,0.10) !important;
    color: var(--ss-blue-soft) !important;
}
.ss-ui-skin .text-bg-danger {
    background-color: rgba(239,68,68,0.10) !important;
    color: var(--ss-red-soft) !important;
}
/* Tooltips + popovers default to white tooltips — flip them. */
.ss-ui-skin .tooltip-inner,
.ss-ui-skin .popover {
    background-color: var(--ss-surface) !important;
    color: var(--ss-text) !important;
    border: 1px solid var(--ss-border) !important;
}
/* Anything that explicitly sets a white-ish background via inline
   style="background:#fff" or "background:#fafafa" — we can't touch
   inline styles from CSS, but we can re-skin the most common offenders
   that show up as <div style="background:#fff"> wrappers. The PDF
   preview iframe (.preview-frame) stays white intentionally so the
   rendered contract document is legible. */
.ss-ui-skin .preview-frame {
    background: #fff !important;  /* intentional — PDF page surface */
}

/* === LEGACY nav.php OVERRIDES ============================================
   Pages that still include the legacy nav.php (admin_panel.php,
   admin_contracts.php, admin_locations.php, chat.php, etc.) inherit a
   red/brown gradient header from --brand-primary. Override it on every
   ss-ui-skin page so the topbar matches the dark-blue surface stack.
   The brand logo image is preserved — only the chrome around it
   changes. */
body.ss-ui-skin .navbar.fixed-top,
body.ss-ui-skin nav.navbar {
    background: var(--ss-surface) !important;
    border-bottom: 1px solid var(--ss-border) !important;
    box-shadow: 0 2px 10px rgba(0,0,0,0.5) !important;
}
body.ss-ui-skin .navbar .nav-link,
body.ss-ui-skin .navbar .navbar-brand,
body.ss-ui-skin .navbar .navbar-text {
    color: var(--ss-text) !important;
}
body.ss-ui-skin .navbar .nav-link:hover {
    color: var(--ss-blue-soft) !important;
}
body.ss-ui-skin .navbar .nav-link.active {
    color: #fff !important;
    background: rgba(59,130,246,0.16) !important;
    border-radius: 6px !important;
}
body.ss-ui-skin .navbar .dropdown-menu {
    background: var(--ss-surface) !important;
    border: 1px solid var(--ss-border) !important;
    color: var(--ss-text) !important;
}
body.ss-ui-skin .navbar .dropdown-item {
    color: var(--ss-text) !important;
}
body.ss-ui-skin .navbar .dropdown-item:hover {
    background: rgba(59,130,246,0.16) !important;
    color: #fff !important;
}
body.ss-ui-skin .navbar .dropdown-item i {
    color: var(--ss-blue-soft) !important;
}
body.ss-ui-skin .navbar-toggler {
    border-color: rgba(255,255,255,0.2) !important;
    background-color: rgba(255,255,255,0.04) !important;
}
/* Dark-mode media query in nav.php re-applies --brand-primary on .navbar;
   re-override it here so dark-mode users still get our surface color. */
@media (prefers-color-scheme: dark) {
    body.ss-ui-skin .navbar.fixed-top,
    body.ss-ui-skin nav.navbar {
        background: var(--ss-surface) !important;
    }
}

/* Cards / panels — aligned with employee_dashboard.php's Recent Time
   Cards block: darker surface, larger radius, stronger drop-shadow. */
.ss-ui-skin .card,
.ss-ui-skin .card.bg-light,
.ss-ui-skin .admin-card {
    background: #0e1520 !important;
    border: 1px solid rgba(148, 163, 184, 0.18) !important;
    border-radius: 14px !important;
    box-shadow: 0 18px 45px rgba(0, 0, 0, 0.24);
    color: #e5edf6 !important;
}
.ss-ui-skin .card-header,
.ss-ui-skin .card-footer {
    background: rgba(2, 9, 18, 0.55) !important;
    border-color: rgba(148, 163, 184, 0.16) !important;
    color: #f8fafc !important;
}
.ss-ui-skin .card-header h1,
.ss-ui-skin .card-header h2,
.ss-ui-skin .card-header h3,
.ss-ui-skin .card-header h4,
.ss-ui-skin .card-header h5,
.ss-ui-skin .card-header h6 {
    color: #f8fafc !important;
    font-weight: 850;
    letter-spacing: 0.03em;
    margin: 0;
}

/* Tables — match employee_dashboard.php .recent-time-table:
   dark blue thead strip, title case, no vertical rules. Header↔body line
   uses the same 1px rgba(...,0.10) as row↔row dividers (not a heavier rule).

   Bootstrap 5.1 applies .table > :not(:first-child) { border-top: 2px solid
   currentColor } — tbody is not :first-child after thead, so you get a thick
   “white” rule under the header. Recent Time Cards avoids this by not using
   class="table". We strip tbody’s top border globally on this skin. */
.ss-ui-skin .table {
    color: rgba(226, 232, 240, 0.82) !important;
    margin-bottom: 0;
    border-collapse: collapse;
    --bs-table-border-width: 1px;
    --bs-table-border-color: rgba(148, 163, 184, 0.10);
    border-color: rgba(148, 163, 184, 0.10) !important;
}
/* Kill Bootstrap’s 2px tbody top edge (see comment block above). */
.ss-ui-skin .table > tbody {
    border-top: none !important;
}
.ss-ui-skin .table > :not(caption) > * > * {
    background: transparent !important;
    border-left: none !important;
    border-right: none !important;
    border-color: rgba(148, 163, 184, 0.10) !important;
    color: rgba(226, 232, 240, 0.82) !important;
}
.ss-ui-skin .table thead > tr > th {
    background: rgba(2, 9, 18, 0.82) !important;
    /* Same hairline as tbody row dividers (.recent-time-table tbody td) */
    border-bottom: 1px solid rgba(148, 163, 184, 0.10) !important;
    border-top: 0 !important;
    box-shadow: none !important;
    color: #f8fafc !important;
    font-size: 0.76rem !important;
    font-weight: 850 !important;
    letter-spacing: normal !important;
    text-transform: none !important;
    padding: 10px 8px !important;
    white-space: nowrap;
}
.ss-ui-skin .table tbody td {
    border-bottom: 1px solid rgba(148, 163, 184, 0.10) !important;
    border-top: 0 !important;
    color: rgba(226, 232, 240, 0.76) !important;
    font-size: 0.78rem !important;
    font-weight: 650 !important;
    padding: 10px 8px !important;
    vertical-align: middle;
}
.ss-ui-skin .table tbody > tr:first-child > td {
    border-top: 0 !important;
}
.ss-ui-skin .table tbody tr:hover td,
.ss-ui-skin .table-hover > tbody > tr:hover > * {
    background-color: rgba(59,130,246,0.06) !important;
}
.ss-ui-skin .table tbody tr:last-child td {
    border-bottom: 0 !important;
}
/* Kill Bootstrap stripe — dashboard reference table is unstriped */
.ss-ui-skin .table-striped > tbody > tr:nth-of-type(odd) > * {
    background-color: transparent !important;
}

/* Inputs / selects / textareas */
.ss-ui-skin .form-control,
.ss-ui-skin .form-select,
.ss-ui-skin textarea.form-control,
.ss-ui-skin .input-group-text {
    background: #071426 !important;
    border: 1px solid var(--ss-border) !important;
    color: var(--ss-text) !important;
    border-radius: 8px !important;
    font-size: 13.5px;
}
.ss-ui-skin .form-control::placeholder { color: var(--ss-text-dim); }
.ss-ui-skin .form-control:focus,
.ss-ui-skin .form-select:focus {
    border-color: var(--ss-blue) !important;
    box-shadow: 0 0 0 3px rgba(59,130,246,0.18) !important;
}
.ss-ui-skin label,
.ss-ui-skin .form-label {
    color: var(--ss-text-muted);
    font-size: 11.5px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 4px;
}
.ss-ui-skin .form-check-input {
    background: #071426;
    border-color: var(--ss-border);
}
.ss-ui-skin .form-check-input:checked {
    background-color: var(--ss-blue);
    border-color: var(--ss-blue-strong);
}

/* Buttons. We keep Bootstrap's .btn shape but recolor each semantic class
   to align with the ss-btn variants. Outline buttons get a tinted infill
   so they look like the schedule.php Unassign / Approve buttons. */
.ss-ui-skin .btn-primary,
.ss-ui-skin .btn.btn-primary {
    background: var(--ss-blue) !important;
    border-color: var(--ss-blue-strong) !important;
    color: #fff !important;
    font-weight: 600;
}
.ss-ui-skin .btn-primary:hover { background: var(--ss-blue-strong) !important; color: #fff !important; box-shadow: 0 0 16px rgba(59,130,246,0.35); }

.ss-ui-skin .btn-secondary {
    background: rgba(255,255,255,0.04) !important;
    border-color: var(--ss-border) !important;
    color: var(--ss-text) !important;
}
.ss-ui-skin .btn-secondary:hover { background: rgba(255,255,255,0.08) !important; color: var(--ss-text) !important; }

.ss-ui-skin .btn-success {
    background: rgba(34,197,94,0.10) !important;
    border-color: rgba(34,197,94,0.55) !important;
    color: var(--ss-green-soft) !important;
    font-weight: 600;
}
.ss-ui-skin .btn-success:hover { background: rgba(34,197,94,0.20) !important; color: #bbf7d0 !important; border-color: rgba(34,197,94,0.85) !important; }

.ss-ui-skin .btn-danger {
    background: rgba(239,68,68,0.10) !important;
    border-color: rgba(239,68,68,0.55) !important;
    color: var(--ss-red-soft) !important;
    font-weight: 600;
}
.ss-ui-skin .btn-danger:hover { background: rgba(239,68,68,0.20) !important; color: #fecaca !important; border-color: rgba(239,68,68,0.85) !important; }

.ss-ui-skin .btn-warning {
    background: rgba(245,158,11,0.10) !important;
    border-color: rgba(245,158,11,0.55) !important;
    color: var(--ss-amber-text) !important;
    font-weight: 600;
}
.ss-ui-skin .btn-warning:hover { background: rgba(245,158,11,0.20) !important; border-color: rgba(245,158,11,0.85) !important; color: var(--ss-amber-text) !important; }

.ss-ui-skin .btn-info {
    background: rgba(59,130,246,0.10) !important;
    border-color: rgba(59,130,246,0.55) !important;
    color: var(--ss-blue-soft) !important;
    font-weight: 600;
}
.ss-ui-skin .btn-info:hover { background: rgba(59,130,246,0.20) !important; border-color: rgba(59,130,246,0.85) !important; color: #bfdbfe !important; }

.ss-ui-skin .btn-light {
    background: rgba(255,255,255,0.04) !important;
    border-color: var(--ss-border) !important;
    color: var(--ss-text) !important;
}
.ss-ui-skin .btn-dark {
    background: rgba(0,0,0,0.5) !important;
    border-color: var(--ss-border) !important;
    color: var(--ss-text) !important;
}

.ss-ui-skin .btn-outline-primary,
.ss-ui-skin .btn-outline-secondary,
.ss-ui-skin .btn-outline-info,
.ss-ui-skin .btn-outline-success,
.ss-ui-skin .btn-outline-danger,
.ss-ui-skin .btn-outline-warning {
    background: transparent !important;
}
.ss-ui-skin .btn-outline-primary { border-color: rgba(59,130,246,0.55) !important; color: var(--ss-blue-soft) !important; }
.ss-ui-skin .btn-outline-primary:hover { background: rgba(59,130,246,0.18) !important; color: #bfdbfe !important; }
.ss-ui-skin .btn-outline-secondary { border-color: var(--ss-border) !important; color: var(--ss-text-muted) !important; }
.ss-ui-skin .btn-outline-secondary:hover { background: rgba(255,255,255,0.06) !important; color: var(--ss-text) !important; }
.ss-ui-skin .btn-outline-danger { border-color: rgba(239,68,68,0.55) !important; color: var(--ss-red-soft) !important; }
.ss-ui-skin .btn-outline-danger:hover { background: rgba(239,68,68,0.18) !important; color: #fecaca !important; }
.ss-ui-skin .btn-outline-warning { border-color: rgba(245,158,11,0.55) !important; color: var(--ss-amber-text) !important; }
.ss-ui-skin .btn-outline-success { border-color: rgba(34,197,94,0.55) !important; color: var(--ss-green-soft) !important; }
.ss-ui-skin .btn-outline-info { border-color: rgba(59,130,246,0.55) !important; color: var(--ss-blue-soft) !important; }

/* Accordion / list-group / tabs / dropdowns */
.ss-ui-skin .accordion-button {
    background: var(--ss-surface-2);
    color: var(--ss-text);
    border: 0;
}
.ss-ui-skin .accordion-button:not(.collapsed) { background: var(--ss-panel); color: var(--ss-text); }
.ss-ui-skin .accordion-body { background: var(--ss-surface-2); color: var(--ss-text); }
.ss-ui-skin .accordion-item { background: transparent; border-color: var(--ss-border); }

.ss-ui-skin .list-group-item {
    background: var(--ss-surface-2);
    border-color: var(--ss-border);
    color: var(--ss-text);
}
.ss-ui-skin .list-group-item.active {
    background: rgba(59,130,246,0.18);
    border-color: rgba(59,130,246,0.55);
    color: #fff;
}

.ss-ui-skin .nav-tabs { border-bottom-color: var(--ss-border); }
.ss-ui-skin .nav-tabs .nav-link {
    color: var(--ss-text-muted);
    border: 1px solid transparent;
    background: transparent;
}
.ss-ui-skin .nav-tabs .nav-link.active {
    color: var(--ss-text);
    background: var(--ss-surface-2);
    border-color: var(--ss-border) var(--ss-border) var(--ss-surface-2);
}
.ss-ui-skin .dropdown-menu {
    background: var(--ss-surface);
    border: 1px solid var(--ss-border);
    color: var(--ss-text);
}
.ss-ui-skin .dropdown-item { color: var(--ss-text); }
.ss-ui-skin .dropdown-item:hover { background: rgba(59,130,246,0.10); color: #fff; }

/* Modals — adopt the ss-modal chrome (rounded, blue tint, glow, square X) */
.ss-ui-skin .modal-content,
body.ss-ui-skin .modal-content {
    background: var(--ss-surface) !important;
    color: var(--ss-text);
    border-radius: var(--ss-radius-lg) !important;
    border: 1px solid rgba(59,130,246,0.72) !important;
    box-shadow:
        inset 0 0 0 1px rgba(96,165,250,0.22),
        0 0 0 1px rgba(59,130,246,0.50),
        var(--ss-glow-blue) !important;
    overflow: hidden;
}
.ss-ui-skin .modal-header,
.ss-ui-skin .modal-footer { background: var(--ss-surface); border-color: var(--ss-border-soft); }
.ss-ui-skin .modal-body { background: var(--ss-surface); color: var(--ss-text); }
.ss-ui-skin .modal-title { color: var(--ss-text); font-weight: 600; }
.ss-ui-skin .modal .btn-close,
body.ss-ui-skin .modal .btn-close {
    width: 30px !important;
    height: 30px !important;
    padding: 0 !important;
    margin: 0 !important;
    border-radius: 8px !important;
    background-color: rgba(15, 26, 50, 0.92) !important;
    background-image: none !important;
    border: 1px solid rgba(59, 130, 246, 0.35) !important;
    opacity: 1 !important;
    filter: none !important;
    position: relative !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,0.03), 0 0 12px rgba(59,130,246,0.12) !important;
}
.ss-ui-skin .modal .btn-close::before,
body.ss-ui-skin .modal .btn-close::before {
    content: "×";
    color: #e6edf7;
    font-size: 22px;
    font-weight: 500;
    line-height: 1;
}
.ss-ui-skin .modal .btn-close::after,
body.ss-ui-skin .modal .btn-close::after { display: none; }
.ss-ui-skin .modal .btn-close:hover,
body.ss-ui-skin .modal .btn-close:hover {
    background-color: rgba(30, 58, 138, 0.42) !important;
    border-color: rgba(96, 165, 250, 0.55) !important;
}

/* Bootstrap alerts → ss-notice flavors */
.ss-ui-skin .alert {
    border-radius: 10px;
    padding: 14px 18px;
    border-width: 1px;
    color: var(--ss-text);
    font-size: 13.5px;
}
.ss-ui-skin .alert-warning { background: rgba(245,158,11,0.10); border-color: rgba(245,158,11,0.45); }
.ss-ui-skin .alert-danger  { background: rgba(239,68,68,0.10);  border-color: rgba(239,68,68,0.45); }
.ss-ui-skin .alert-info    { background: rgba(59,130,246,0.10); border-color: rgba(59,130,246,0.45); }
.ss-ui-skin .alert-success { background: rgba(34,197,94,0.10);  border-color: rgba(34,197,94,0.45); }
.ss-ui-skin .alert-primary { background: rgba(59,130,246,0.10); border-color: rgba(59,130,246,0.45); }
.ss-ui-skin .alert-secondary { background: rgba(255,255,255,0.04); border-color: var(--ss-border); }

/* Badges */
.ss-ui-skin .badge.bg-primary   { background: rgba(59,130,246,0.20) !important; color: var(--ss-blue-soft); border: 1px solid rgba(59,130,246,0.45); }
.ss-ui-skin .badge.bg-secondary { background: rgba(255,255,255,0.06) !important; color: var(--ss-text-muted); border: 1px solid var(--ss-border); }
.ss-ui-skin .badge.bg-success   { background: rgba(34,197,94,0.20) !important; color: var(--ss-green-soft); border: 1px solid rgba(34,197,94,0.45); }
.ss-ui-skin .badge.bg-warning   { background: rgba(245,158,11,0.20) !important; color: var(--ss-amber-text); border: 1px solid rgba(245,158,11,0.45); }
.ss-ui-skin .badge.bg-danger    { background: rgba(239,68,68,0.20) !important; color: var(--ss-red-soft); border: 1px solid rgba(239,68,68,0.45); }
.ss-ui-skin .badge.bg-info      { background: rgba(59,130,246,0.20) !important; color: var(--ss-blue-soft); border: 1px solid rgba(59,130,246,0.45); }
.ss-ui-skin .badge.bg-light     { background: rgba(255,255,255,0.10) !important; color: var(--ss-text); border: 1px solid var(--ss-border); }
.ss-ui-skin .badge.bg-dark      { background: rgba(0,0,0,0.5) !important; color: var(--ss-text); border: 1px solid var(--ss-border); }

/* Pagination */
.ss-ui-skin .page-link {
    background: var(--ss-surface-2);
    border-color: var(--ss-border);
    color: var(--ss-text);
}
.ss-ui-skin .page-item.active .page-link {
    background: var(--ss-blue);
    border-color: var(--ss-blue-strong);
    color: #fff;
}
.ss-ui-skin .page-item.disabled .page-link {
    background: var(--ss-surface-2);
    color: var(--ss-text-dim);
}

/* Progress bars */
.ss-ui-skin .progress { background: var(--ss-panel); }
.ss-ui-skin .progress-bar { background: var(--ss-blue); }
