/* ==========================================================================
   EAMS — Futuristic Glassmorphism Theme
   Built on Bootstrap 5.3 color modes: dark (default) and light, switched by
   assets/js/theme.js via <html data-bs-theme="dark|light">. Light-mode
   overrides live in the "Light mode" section near the end of this file.
   ========================================================================== */

:root,
[data-bs-theme="dark"] {
    /* Layout */
    --sidebar-width: 268px;
    --topbar-height: 66px;

    /* Palette */
    --bg-deep:   #050816;
    --bg-mid:    #0b1030;
    --neon-cyan:   #22d3ee;
    --neon-blue:   #3b82f6;
    --neon-violet: #a855f7;
    --neon-pink:   #ec4899;
    --neon-green:  #34d399;
    --neon-amber:  #fbbf24;
    --neon-red:    #f43f5e;

    --primary: var(--neon-cyan);
    --accent:  var(--neon-violet);
    --grad-primary: linear-gradient(135deg, #22d3ee 0%, #6366f1 55%, #a855f7 100%);

    /* Glass */
    --glass-bg:        rgba(16, 22, 54, 0.58);
    --glass-bg-strong: rgba(30, 38, 80, 0.7);
    --glass-bg-solid:  rgba(12, 17, 42, 0.94);
    --glass-border:    rgba(255, 255, 255, 0.16);
    --glass-border-hi: rgba(255, 255, 255, 0.22);
    --glass-blur:      blur(18px) saturate(160%);
    --glass-shadow:    0 8px 32px rgba(0, 0, 0, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.06);
    --glow-cyan:       0 0 18px rgba(34, 211, 238, 0.45);

    /* Text */
    --text:       #f5f7ff;
    --text-soft:  #cfd8f3;
    --text-faint: #a3afd4;

    /* Sidebar (kept for compatibility) */
    --sidebar-bg: rgba(10, 14, 36, 0.55);
    --sidebar-text: var(--text-soft);
    --sidebar-active: #fff;
    --sidebar-hover-bg: rgba(255, 255, 255, 0.06);
    --sidebar-active-bg: linear-gradient(90deg, rgba(34, 211, 238, 0.18), rgba(168, 85, 247, 0.08));

    /* Bootstrap variable overrides */
    --bs-body-bg: var(--bg-deep);
    --bs-body-color: var(--text);
    --bs-body-font-family: 'Outfit', 'Segoe UI', system-ui, sans-serif;
    --bs-emphasis-color: #fff;
    --bs-secondary-color: var(--text-soft);
    --bs-tertiary-color: var(--text-faint);
    --bs-border-color: var(--glass-border);
    --bs-border-color-translucent: var(--glass-border);
    --bs-secondary-bg: rgba(255, 255, 255, 0.06);
    --bs-tertiary-bg: rgba(255, 255, 255, 0.04);
    --bs-link-color: #67e8f9;
    --bs-link-color-rgb: 103, 232, 249;
    --bs-link-hover-color: #a5f3fc;
    --bs-link-hover-color-rgb: 165, 243, 252;
    --bs-primary: #22d3ee;
    --bs-primary-rgb: 34, 211, 238;
    --bs-code-color: #f0abfc;
    --bs-border-radius: 12px;
    --bs-border-radius-sm: 8px;
    --bs-border-radius-lg: 16px;
}

* { box-sizing: border-box; }

html { background: var(--bg-deep); }

body {
    margin: 0;
    font-family: var(--bs-body-font-family);
    font-size: 15.5px;
    color: var(--text);
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    background:
        radial-gradient(1200px 700px at 8% -10%, rgba(99, 102, 241, 0.28), transparent 60%),
        radial-gradient(900px 600px at 105% 10%, rgba(168, 85, 247, 0.22), transparent 60%),
        radial-gradient(900px 700px at 50% 120%, rgba(34, 211, 238, 0.18), transparent 60%),
        linear-gradient(160deg, var(--bg-deep) 0%, var(--bg-mid) 50%, var(--bg-deep) 100%);
    background-attachment: fixed;
    position: relative;
}

/* Futuristic grid overlay */
body::before {
    content: '';
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    background-image:
        linear-gradient(rgba(255, 255, 255, 0.035) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, 0.035) 1px, transparent 1px);
    background-size: 48px 48px;
    mask-image: radial-gradient(ellipse at center, #000 30%, transparent 80%);
    -webkit-mask-image: radial-gradient(ellipse at center, #000 30%, transparent 80%);
}

/* Floating glow orbs */
body::after {
    content: '';
    position: fixed;
    width: 520px;
    height: 520px;
    border-radius: 50%;
    top: 40%;
    left: 55%;
    pointer-events: none;
    z-index: 0;
    background: radial-gradient(circle, rgba(236, 72, 153, 0.16), transparent 65%);
    filter: blur(20px);
    animation: orbFloat 22s ease-in-out infinite alternate;
}

@keyframes orbFloat {
    0%   { transform: translate(0, 0) scale(1); }
    50%  { transform: translate(-30vw, -25vh) scale(1.2); }
    100% { transform: translate(-10vw, 20vh) scale(0.9); }
}

::selection { background: rgba(34, 211, 238, 0.35); color: #fff; }

/* Scrollbars */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.12);
    border-radius: 10px;
    border: 2px solid transparent;
    background-clip: padding-box;
}
::-webkit-scrollbar-thumb:hover { background: rgba(34, 211, 238, 0.45); background-clip: padding-box; }
* { scrollbar-color: rgba(255, 255, 255, 0.15) transparent; scrollbar-width: thin; }

a { color: var(--bs-link-color); }
code { color: #f0abfc; }

/* ── Sidebar ── */
.sidebar {
    position: fixed;
    top: 0; left: 0;
    width: var(--sidebar-width);
    height: 100vh;
    background: var(--sidebar-bg);
    backdrop-filter: var(--glass-blur);
    -webkit-backdrop-filter: var(--glass-blur);
    border-right: 1px solid var(--glass-border);
    box-shadow: 8px 0 40px rgba(0, 0, 0, 0.35);
    display: flex;
    flex-direction: column;
    z-index: 1040;
    overflow-y: auto;
    transition: transform .3s cubic-bezier(.4, 0, .2, 1);
}

/* Neon edge line */
.sidebar::after {
    content: '';
    position: absolute;
    top: 0; right: -1px; bottom: 0;
    width: 1px;
    background: linear-gradient(180deg, transparent, var(--neon-cyan), var(--neon-violet), transparent);
    opacity: .6;
    pointer-events: none;
}

.sidebar-brand {
    padding: 20px 20px 18px;
    border-bottom: 1px solid var(--glass-border);
    position: relative;
}

.sidebar-brand img {
    width: 44px;
    height: 44px;
    object-fit: contain;
    filter: drop-shadow(0 0 10px rgba(34, 211, 238, 0.45));
}

.sidebar-brand .brand-title {
    font-family: 'Orbitron', var(--bs-body-font-family);
    font-size: .74rem;
    font-weight: 700;
    line-height: 1.35;
    text-transform: uppercase;
    letter-spacing: 1px;
    background: var(--grad-primary);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.sidebar-brand .brand-sub {
    font-size: .74rem;
    color: var(--text-soft);
    margin-top: 3px;
    letter-spacing: .3px;
}

.sidebar-nav { flex: 1; padding: 10px 12px; }

.sidebar-nav .nav-section {
    font-size: .68rem;
    font-weight: 700;
    color: #8fe9f7;
    text-transform: uppercase;
    letter-spacing: 2px;
    padding: 16px 12px 6px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.sidebar-nav .nav-section::after {
    content: '';
    flex: 1;
    height: 1px;
    background: linear-gradient(90deg, var(--glass-border), transparent);
}

.sidebar-nav a {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 14px;
    margin: 2px 0;
    color: var(--sidebar-text);
    text-decoration: none;
    font-size: .93rem;
    font-weight: 500;
    border-radius: 12px;
    border: 1px solid transparent;
    transition: background .2s, color .2s, border-color .2s, transform .2s;
    position: relative;
}

.sidebar-nav a:hover {
    background: var(--sidebar-hover-bg);
    border-color: rgba(255, 255, 255, 0.06);
    color: #fff;
    transform: translateX(3px);
}

.sidebar-nav a.active {
    background: var(--sidebar-active-bg);
    border-color: rgba(34, 211, 238, 0.28);
    color: var(--sidebar-active);
    font-weight: 600;
    box-shadow: 0 0 22px rgba(34, 211, 238, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.06);
}

.sidebar-nav a.active::before {
    content: '';
    position: absolute;
    left: -12px; top: 22%; bottom: 22%;
    width: 4px;
    background: var(--grad-primary);
    border-radius: 0 4px 4px 0;
    box-shadow: var(--glow-cyan);
}

.sidebar-nav a i { font-size: 1.05rem; min-width: 20px; transition: color .2s, filter .2s; }
.sidebar-nav a.active i,
.sidebar-nav a:hover i { color: var(--neon-cyan); filter: drop-shadow(0 0 6px rgba(34, 211, 238, 0.6)); }

.sidebar-footer {
    padding: 14px 20px;
    border-top: 1px solid var(--glass-border);
}

.sidebar-footer a { transition: color .2s; }
.sidebar-footer a:hover { color: var(--neon-red) !important; }

/* ── Topbar ── */
.topbar {
    position: fixed;
    top: 12px;
    left: calc(var(--sidebar-width) + 20px);
    right: 20px;
    height: calc(var(--topbar-height) - 12px);
    background: rgba(12, 17, 42, 0.55);
    backdrop-filter: var(--glass-blur);
    -webkit-backdrop-filter: var(--glass-blur);
    border: 1px solid var(--glass-border);
    border-radius: 16px;
    box-shadow: var(--glass-shadow);
    display: flex;
    align-items: center;
    padding: 0 18px;
    z-index: 1030;
    gap: 14px;
}

.topbar .page-title {
    font-family: 'Orbitron', var(--bs-body-font-family);
    font-size: 1rem;
    font-weight: 700;
    letter-spacing: .8px;
    color: #fff;
    flex: 1;
    text-shadow: 0 0 18px rgba(34, 211, 238, 0.35);
}

.topbar .user-info {
    font-size: .9rem;
    color: var(--text-soft);
    text-align: right;
    line-height: 1.25;
}

.topbar .user-info strong { color: #fff; }

.topbar .btn-light {
    background: var(--glass-bg);
    border: 1px solid var(--glass-border);
    color: var(--text);
    border-radius: 12px;
}

.topbar .btn-light:hover,
.topbar .btn-light:focus,
.topbar .btn-light.show {
    background: var(--glass-bg-strong);
    border-color: rgba(34, 211, 238, 0.45);
    color: var(--neon-cyan);
    box-shadow: var(--glow-cyan);
}

.topbar .btn-outline-danger { border-radius: 12px; }

/* ── Main Content ── */
.main-content {
    margin-left: var(--sidebar-width);
    margin-top: calc(var(--topbar-height) + 6px);
    padding: 26px 28px;
    flex: 1;
    min-height: calc(100vh - var(--topbar-height));
    position: relative;
    z-index: 1;
    animation: fadeUp .45s ease both;
}

@keyframes fadeUp {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: none; }
}

/* ── Cards ── */
.card {
    --bs-card-bg: var(--glass-bg);
    --bs-card-color: var(--text);
    --bs-card-border-color: var(--glass-border);
    --bs-card-cap-bg: transparent;
    background: var(--glass-bg);
    backdrop-filter: var(--glass-blur);
    -webkit-backdrop-filter: var(--glass-blur);
    border: 1px solid var(--glass-border);
    border-radius: 18px;
    box-shadow: var(--glass-shadow);
    transition: border-color .25s, box-shadow .25s;
}

.card:hover { border-color: var(--glass-border-hi); }

.card-header {
    background: linear-gradient(90deg, rgba(255, 255, 255, 0.04), transparent);
    border-bottom: 1px solid var(--glass-border);
    border-radius: 18px 18px 0 0 !important;
    padding: 15px 20px;
    font-weight: 600;
    font-size: 1rem;
    color: #fff;
    letter-spacing: .2px;
}

.card-footer {
    background: transparent;
    border-top: 1px solid var(--glass-border);
}

.list-group {
    --bs-list-group-bg: transparent;
    --bs-list-group-color: var(--text);
    --bs-list-group-border-color: var(--glass-border);
    --bs-list-group-action-hover-bg: rgba(34, 211, 238, 0.06);
    --bs-list-group-active-bg: rgba(34, 211, 238, 0.2);
    --bs-list-group-active-border-color: rgba(34, 211, 238, 0.4);
}

/* ── Stat Cards ── */
.stat-card {
    --c1: #3b82f6;
    --c2: #22d3ee;
    border-radius: 18px;
    padding: 22px 20px;
    color: #fff;
    position: relative;
    overflow: hidden;
    isolation: isolate;
    background:
        linear-gradient(135deg, color-mix(in srgb, var(--c1) 38%, transparent), color-mix(in srgb, var(--c2) 12%, transparent)),
        var(--glass-bg);
    backdrop-filter: var(--glass-blur);
    -webkit-backdrop-filter: var(--glass-blur);
    border: 1px solid color-mix(in srgb, var(--c2) 40%, transparent);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3), 0 0 24px color-mix(in srgb, var(--c2) 18%, transparent), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

/* Glow blob + shine sweep */
.stat-card::before {
    content: '';
    position: absolute;
    width: 140px; height: 140px;
    right: -40px; bottom: -50px;
    border-radius: 50%;
    background: radial-gradient(circle, color-mix(in srgb, var(--c2) 55%, transparent), transparent 70%);
    z-index: -1;
}

.stat-card::after {
    content: '';
    position: absolute;
    top: 0; left: -75%;
    width: 50%; height: 100%;
    background: linear-gradient(100deg, transparent, rgba(255, 255, 255, 0.14), transparent);
    transform: skewX(-20deg);
    transition: left .7s ease;
    z-index: -1;
}

.stat-card:hover::after { left: 130%; }

.stat-card .stat-icon {
    font-size: 2.6rem;
    position: absolute;
    right: 16px;
    top: 14px;
    color: var(--c2);
    opacity: .55;
    filter: drop-shadow(0 0 12px var(--c2));
}

.stat-card .stat-value {
    font-family: 'Orbitron', var(--bs-body-font-family);
    font-size: 1.9rem;
    font-weight: 700;
    text-shadow: 0 0 18px color-mix(in srgb, var(--c2) 70%, transparent);
}

.stat-card .stat-label {
    font-size: .8rem;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.95);
    margin-top: 4px;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.stat-blue   { --c1: #2563eb; --c2: #38bdf8; }
.stat-green  { --c1: #059669; --c2: #34d399; }
.stat-orange { --c1: #ea580c; --c2: #fbbf24; }
.stat-red    { --c1: #be123c; --c2: #fb7185; }
.stat-purple { --c1: #7c3aed; --c2: #c084fc; }
.stat-teal   { --c1: #0d9488; --c2: #2dd4bf; }

/* Stat cards that are links: open the matching list */
a.stat-card { display: block; text-decoration: none; transition: transform .2s, box-shadow .2s, border-color .2s; }
a.stat-card:hover, a.stat-card:focus-visible {
    color: #fff;
    transform: translateY(-4px);
    border-color: var(--c2);
    box-shadow: 0 16px 40px rgba(0, 0, 0, 0.4), 0 0 32px color-mix(in srgb, var(--c2) 40%, transparent), inset 0 1px 0 rgba(255, 255, 255, 0.15);
}
a.stat-card:focus-visible { outline: 2px solid var(--c2); outline-offset: 3px; }
a.stat-card:active { transform: translateY(-1px); }

/* Welcome / hero banner (resident dashboard) */
.glass-hero {
    background:
        linear-gradient(120deg, rgba(34, 211, 238, 0.22), rgba(99, 102, 241, 0.18) 50%, rgba(168, 85, 247, 0.22)),
        var(--glass-bg) !important;
    border: 1px solid rgba(34, 211, 238, 0.3) !important;
    color: #fff;
    overflow: hidden;
    position: relative;
}

.glass-hero::after {
    content: '';
    position: absolute;
    width: 260px; height: 260px;
    right: -60px; top: -100px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(34, 211, 238, 0.35), transparent 70%);
    pointer-events: none;
}

/* Dashboard chart cards */
.dash-card-title { font-weight: 600; color: #fff; display: inline-flex; align-items: center; gap: 8px; }
.dash-card-title i { font-size: 1.05rem; color: var(--neon-cyan); filter: drop-shadow(0 0 6px rgba(34, 211, 238, 0.6)); }
.chart-legend { display: inline-flex; gap: 16px; font-size: .85rem; color: var(--text-soft); font-weight: 400; }
.chart-legend span { display: inline-flex; align-items: center; gap: 6px; }
.chart-legend i { width: 11px; height: 11px; border-radius: 3px; display: inline-block; box-shadow: 0 0 8px currentColor; }

.donut-wrap { position: relative; width: 160px; height: 160px; flex-shrink: 0; }
.donut-center { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; pointer-events: none; }
.donut-center span { font-size: .8rem; color: var(--text-soft); text-transform: uppercase; letter-spacing: 1px; }
.donut-center strong {
    font-family: 'Orbitron', var(--bs-body-font-family);
    font-size: 1.5rem;
    line-height: 1.2;
    color: #fff;
    text-shadow: var(--glow-cyan);
}

.overview-list { list-style: none; margin: 0; padding: 0; flex: 1; width: 100%; min-width: 0; }
.overview-list a { display: flex; align-items: center; gap: 10px; padding: 8px 8px; border-radius: 10px; color: var(--text); text-decoration: none; font-size: .9rem; transition: background .2s; }
.overview-list a:hover { background: rgba(255, 255, 255, 0.06); }
.overview-list i { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; box-shadow: 0 0 8px rgba(255, 255, 255, 0.25); }
.overview-list .ov-label { flex: 1; min-width: 0; }
.overview-list .ov-count { white-space: nowrap; font-weight: 600; }
.overview-list .ov-count small { color: var(--text-faint); font-weight: 400; }

/* ── Tables ── */
.table {
    --bs-table-bg: transparent;
    --bs-table-color: var(--text);
    --bs-table-border-color: rgba(255, 255, 255, 0.07);
    --bs-table-striped-bg: rgba(255, 255, 255, 0.025);
    --bs-table-striped-color: var(--text);
    --bs-table-hover-bg: rgba(34, 211, 238, 0.07);
    --bs-table-hover-color: #fff;
    --bs-table-active-bg: rgba(34, 211, 238, 0.1);
    color: var(--text);
}

.table th {
    background: rgba(255, 255, 255, 0.04) !important;
    font-size: .78rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-soft) !important;
    border-bottom: 1px solid rgba(34, 211, 238, 0.25) !important;
    font-weight: 600;
    padding-top: 12px;
    padding-bottom: 12px;
}

.table td { font-size: .93rem; vertical-align: middle; color: var(--text); }
.table tbody tr { transition: background .15s; }

.table-light,
.table > thead.table-light {
    --bs-table-bg: rgba(255, 255, 255, 0.05);
    --bs-table-color: var(--text);
    --bs-table-border-color: var(--glass-border);
}

.table-bordered > :not(caption) > * > * { border-color: var(--glass-border); }

/* ── Badges ── */
.badge {
    font-size: .76rem;
    font-weight: 700;
    padding: 5px 10px;
    border-radius: 999px;
    letter-spacing: .3px;
}

.badge.bg-primary   { background: rgba(34, 211, 238, 0.18) !important; color: #67e8f9 !important; border: 1px solid rgba(34, 211, 238, 0.45); box-shadow: 0 0 10px rgba(34, 211, 238, 0.2); }
.badge.bg-success   { background: rgba(52, 211, 153, 0.16) !important; color: #6ee7b7 !important; border: 1px solid rgba(52, 211, 153, 0.45); }
.badge.bg-danger    { background: rgba(244, 63, 94, 0.18) !important;  color: #fda4af !important; border: 1px solid rgba(244, 63, 94, 0.5); }
.badge.bg-warning   { background: rgba(251, 191, 36, 0.16) !important; color: #fcd34d !important; border: 1px solid rgba(251, 191, 36, 0.45); }
.badge.bg-info      { background: rgba(56, 189, 248, 0.16) !important; color: #7dd3fc !important; border: 1px solid rgba(56, 189, 248, 0.45); }
.badge.bg-secondary { background: rgba(148, 163, 184, 0.16) !important; color: #cbd5e1 !important; border: 1px solid rgba(148, 163, 184, 0.35); }
.badge.bg-dark      { background: rgba(0, 0, 0, 0.4) !important; color: #e2e8f0 !important; border: 1px solid var(--glass-border); }
.badge.bg-light     { background: rgba(255, 255, 255, 0.1) !important; color: #e2e8f0 !important; border: 1px solid var(--glass-border) !important; }
.badge.text-dark    { color: inherit; }
.badge.bg-warning.text-dark { color: #fcd34d !important; }
.badge.bg-info.text-dark    { color: #7dd3fc !important; }
.badge.bg-light.text-dark   { color: #e2e8f0 !important; }

/* Notification count pill keeps a solid glow so it pops on the bell */
#notifBadge { background: var(--neon-pink) !important; color: #fff !important; border: none; box-shadow: 0 0 12px rgba(236, 72, 153, 0.8); }

/* ── Forms ── */
.form-label { font-weight: 600; font-size: .9rem; color: var(--text); letter-spacing: .2px; }

.form-control,
.form-select {
    font-size: .93rem;
    background-color: rgba(255, 255, 255, 0.07);
    border: 1px solid var(--glass-border);
    color: var(--text);
    border-radius: 12px;
    padding: .55rem .85rem;
    transition: border-color .2s, box-shadow .2s, background-color .2s;
}

.form-control::placeholder { color: var(--text-faint); opacity: 1; }

.form-control:focus,
.form-select:focus {
    background-color: rgba(255, 255, 255, 0.07);
    border-color: rgba(34, 211, 238, 0.65);
    color: #fff;
    box-shadow: 0 0 0 3px rgba(34, 211, 238, 0.15), 0 0 18px rgba(34, 211, 238, 0.2);
}

.form-control:disabled,
.form-control[readonly],
.form-select:disabled {
    background-color: rgba(255, 255, 255, 0.02);
    color: var(--text-soft);
}

.form-select option { background: #0e1330; color: var(--text); }

.form-control[type="file"]::file-selector-button {
    background: rgba(34, 211, 238, 0.15);
    color: #67e8f9;
    border: 0;
    border-right: 1px solid var(--glass-border);
}

.input-group-text {
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid var(--glass-border);
    color: var(--neon-cyan);
    border-radius: 12px;
}

.form-check-input {
    background-color: rgba(255, 255, 255, 0.06);
    border-color: var(--glass-border-hi);
}

.form-check-input:checked {
    background-color: var(--neon-cyan);
    border-color: var(--neon-cyan);
    box-shadow: var(--glow-cyan);
}

.form-check-input:focus { box-shadow: 0 0 0 3px rgba(34, 211, 238, 0.2); border-color: var(--neon-cyan); }

.form-text { color: var(--text-faint); }

/* ── Buttons ── */
.btn {
    border-radius: 12px;
    font-weight: 500;
    letter-spacing: .2px;
    transition: transform .15s, box-shadow .2s, background .2s, border-color .2s, color .2s;
}

.btn:active { transform: translateY(1px); }

.btn-primary {
    --bs-btn-color: #fff;
    background: var(--grad-primary);
    background-size: 160% 160%;
    background-position: 0% 50%;
    border: 1px solid rgba(255, 255, 255, 0.18);
    color: #fff;
    box-shadow: 0 6px 20px rgba(99, 102, 241, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.25);
}

.btn-primary:hover,
.btn-primary:focus-visible {
    background: var(--grad-primary);
    background-size: 160% 160%;
    background-position: 100% 50%;
    border-color: rgba(255, 255, 255, 0.3);
    color: #fff;
    box-shadow: 0 8px 28px rgba(34, 211, 238, 0.45), 0 0 0 3px rgba(34, 211, 238, 0.15);
}

.btn-success { background: linear-gradient(135deg, #059669, #34d399); border: 1px solid rgba(255,255,255,.15); box-shadow: 0 6px 20px rgba(16, 185, 129, 0.3); }
.btn-success:hover { background: linear-gradient(135deg, #047857, #10b981); box-shadow: 0 8px 26px rgba(16, 185, 129, 0.45); }
.btn-danger  { background: linear-gradient(135deg, #be123c, #f43f5e); border: 1px solid rgba(255,255,255,.15); box-shadow: 0 6px 20px rgba(244, 63, 94, 0.3); }
.btn-danger:hover  { background: linear-gradient(135deg, #9f1239, #e11d48); box-shadow: 0 8px 26px rgba(244, 63, 94, 0.45); }
.btn-warning { background: linear-gradient(135deg, #d97706, #fbbf24); border: 1px solid rgba(255,255,255,.15); color: #1a1205; box-shadow: 0 6px 20px rgba(251, 191, 36, 0.25); }
.btn-warning:hover { background: linear-gradient(135deg, #b45309, #f59e0b); color: #1a1205; }
.btn-info    { background: linear-gradient(135deg, #0284c7, #38bdf8); border: 1px solid rgba(255,255,255,.15); color: #fff; box-shadow: 0 6px 20px rgba(56, 189, 248, 0.3); }
.btn-info:hover { background: linear-gradient(135deg, #0369a1, #0ea5e9); color: #fff; }

.btn-secondary,
.btn-light {
    background: var(--glass-bg-strong);
    border: 1px solid var(--glass-border);
    color: var(--text);
}

.btn-secondary:hover,
.btn-light:hover {
    background: rgba(255, 255, 255, 0.14);
    border-color: var(--glass-border-hi);
    color: #fff;
}

.btn-outline-primary   { --bs-btn-color: #67e8f9; --bs-btn-border-color: rgba(34, 211, 238, 0.5); --bs-btn-hover-bg: rgba(34, 211, 238, 0.15); --bs-btn-hover-border-color: #22d3ee; --bs-btn-hover-color: #fff; --bs-btn-active-bg: rgba(34, 211, 238, 0.25); --bs-btn-active-border-color: #22d3ee; }
.btn-outline-secondary { --bs-btn-color: var(--text-soft); --bs-btn-border-color: var(--glass-border-hi); --bs-btn-hover-bg: rgba(255, 255, 255, 0.08); --bs-btn-hover-border-color: rgba(255, 255, 255, 0.35); --bs-btn-hover-color: #fff; --bs-btn-active-bg: rgba(255, 255, 255, 0.12); }
.btn-outline-success   { --bs-btn-color: #6ee7b7; --bs-btn-border-color: rgba(52, 211, 153, 0.5); --bs-btn-hover-bg: rgba(52, 211, 153, 0.15); --bs-btn-hover-border-color: #34d399; --bs-btn-hover-color: #fff; }
.btn-outline-danger    { --bs-btn-color: #fda4af; --bs-btn-border-color: rgba(244, 63, 94, 0.5); --bs-btn-hover-bg: rgba(244, 63, 94, 0.18); --bs-btn-hover-border-color: #f43f5e; --bs-btn-hover-color: #fff; }
.btn-outline-warning   { --bs-btn-color: #fcd34d; --bs-btn-border-color: rgba(251, 191, 36, 0.5); --bs-btn-hover-bg: rgba(251, 191, 36, 0.15); --bs-btn-hover-border-color: #fbbf24; --bs-btn-hover-color: #fff; }
.btn-outline-info      { --bs-btn-color: #7dd3fc; --bs-btn-border-color: rgba(56, 189, 248, 0.5); --bs-btn-hover-bg: rgba(56, 189, 248, 0.15); --bs-btn-hover-border-color: #38bdf8; --bs-btn-hover-color: #fff; }
.btn-outline-dark      { --bs-btn-color: var(--text-soft); --bs-btn-border-color: var(--glass-border-hi); --bs-btn-hover-bg: rgba(255, 255, 255, 0.08); --bs-btn-hover-color: #fff; }

[class*="btn-outline-"]:hover { box-shadow: 0 0 16px rgba(255, 255, 255, 0.08); }

.btn-close { filter: invert(1) grayscale(1) brightness(1.6); }

/* ── Alerts ── */
.alert {
    border-radius: 14px;
    backdrop-filter: var(--glass-blur);
    -webkit-backdrop-filter: var(--glass-blur);
    border: 1px solid var(--glass-border);
    border-left-width: 3px;
}

.alert a { color: inherit; font-weight: 600; }
.alert-primary { background: rgba(34, 211, 238, 0.1);  color: #a5f3fc; border-color: rgba(34, 211, 238, 0.35); }
.alert-info    { background: rgba(56, 189, 248, 0.1);  color: #bae6fd; border-color: rgba(56, 189, 248, 0.35); }
.alert-success { background: rgba(52, 211, 153, 0.1);  color: #a7f3d0; border-color: rgba(52, 211, 153, 0.35); }
.alert-warning { background: rgba(251, 191, 36, 0.1);  color: #fde68a; border-color: rgba(251, 191, 36, 0.35); }
.alert-danger  { background: rgba(244, 63, 94, 0.12);  color: #fecdd3; border-color: rgba(244, 63, 94, 0.4); }
.alert-secondary,
.alert-light   { background: rgba(255, 255, 255, 0.05); color: var(--text); }

/* ── Dropdowns ── */
.dropdown-menu {
    --bs-dropdown-bg: var(--glass-bg-solid);
    --bs-dropdown-color: var(--text);
    --bs-dropdown-border-color: var(--glass-border);
    --bs-dropdown-link-color: var(--text);
    --bs-dropdown-link-hover-bg: rgba(34, 211, 238, 0.08);
    --bs-dropdown-link-hover-color: #fff;
    --bs-dropdown-link-active-bg: rgba(34, 211, 238, 0.2);
    --bs-dropdown-divider-bg: var(--glass-border);
    backdrop-filter: blur(24px) saturate(170%);
    -webkit-backdrop-filter: blur(24px) saturate(170%);
    border-radius: 16px;
    box-shadow: 0 20px 50px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.04) !important;
    overflow: hidden;
}

#notifDropdown .border-bottom,
#notifDropdown .border-top { border-color: var(--glass-border) !important; }

/* ── Modals ── */
.modal-content {
    background: var(--glass-bg-solid);
    backdrop-filter: blur(24px) saturate(170%);
    -webkit-backdrop-filter: blur(24px) saturate(170%);
    border: 1px solid var(--glass-border);
    border-radius: 20px;
    box-shadow: 0 30px 80px rgba(0, 0, 0, 0.6), 0 0 40px rgba(99, 102, 241, 0.15);
    color: var(--text);
}

.modal-header,
.modal-footer { border-color: var(--glass-border); }
.modal-backdrop.show { opacity: .6; backdrop-filter: blur(4px); }

/* ── Nav tabs / pills ── */
.nav-tabs { border-bottom-color: var(--glass-border); }
.nav-tabs .nav-link { color: var(--text-soft); border-radius: 12px 12px 0 0; }
.nav-tabs .nav-link:hover { color: #fff; border-color: transparent; background: rgba(255, 255, 255, 0.04); }
.nav-tabs .nav-link.active {
    background: rgba(34, 211, 238, 0.08);
    color: #67e8f9;
    border-color: var(--glass-border) var(--glass-border) transparent;
    box-shadow: inset 0 2px 0 var(--neon-cyan);
}
.nav-pills .nav-link { color: var(--text-soft); border-radius: 12px; }
.nav-pills .nav-link.active { background: var(--grad-primary); color: #fff; box-shadow: 0 6px 18px rgba(99, 102, 241, 0.35); }

/* ── Pagination (incl. DataTables) ── */
.pagination {
    --bs-pagination-bg: rgba(255, 255, 255, 0.04);
    --bs-pagination-color: var(--text-soft);
    --bs-pagination-border-color: var(--glass-border);
    --bs-pagination-hover-bg: rgba(34, 211, 238, 0.1);
    --bs-pagination-hover-color: #fff;
    --bs-pagination-hover-border-color: rgba(34, 211, 238, 0.4);
    --bs-pagination-focus-box-shadow: 0 0 0 3px rgba(34, 211, 238, 0.2);
    --bs-pagination-active-bg: rgba(34, 211, 238, 0.22);
    --bs-pagination-active-border-color: rgba(34, 211, 238, 0.6);
    --bs-pagination-active-color: #fff;
    --bs-pagination-disabled-bg: transparent;
    --bs-pagination-disabled-color: var(--text-faint);
    --bs-pagination-disabled-border-color: var(--glass-border);
    gap: 4px;
}
.pagination .page-link { border-radius: 10px !important; }

/* DataTables */
.dataTables_wrapper { color: var(--text-soft); font-size: .9rem; }
.dataTables_wrapper .dataTables_filter input,
.dataTables_wrapper .dataTables_length select {
    background-color: rgba(255, 255, 255, 0.045);
    border: 1px solid var(--glass-border);
    border-radius: 12px;
    color: var(--text);
}
.dataTables_wrapper .dataTables_filter input:focus {
    border-color: rgba(34, 211, 238, 0.65);
    box-shadow: 0 0 0 3px rgba(34, 211, 238, 0.15);
    outline: none;
}
.dataTables_wrapper .row:first-child,
.dataTables_wrapper .row:last-child { padding: 10px 14px; margin: 0; }
table.dataTable thead > tr > th.sorting::before,
table.dataTable thead > tr > th.sorting::after,
table.dataTable thead > tr > th.sorting_asc::before,
table.dataTable thead > tr > th.sorting_desc::after { color: var(--neon-cyan); }
table.dataTable.table-striped > tbody > tr.odd > * { box-shadow: inset 0 0 0 9999px rgba(255, 255, 255, 0.025); }

/* ── Progress ── */
.progress {
    --bs-progress-bg: rgba(255, 255, 255, 0.07);
    border-radius: 999px;
    overflow: hidden;
}
.progress-bar { background: var(--grad-primary); box-shadow: 0 0 12px rgba(34, 211, 238, 0.5); }
.progress-bar.bg-success { background: linear-gradient(90deg, #059669, #34d399) !important; }
.progress-bar.bg-warning { background: linear-gradient(90deg, #d97706, #fbbf24) !important; }
.progress-bar.bg-danger  { background: linear-gradient(90deg, #be123c, #fb7185) !important; }

/* ── Utility re-tints for dark glass ── */
.bg-white, .bg-light, .bg-body-tertiary { background: rgba(255, 255, 255, 0.05) !important; color: var(--text); }
.text-dark { color: var(--text) !important; }
.text-muted { color: var(--text-faint) !important; }
.text-primary { color: #67e8f9 !important; }
.text-success { color: #6ee7b7 !important; }
.text-danger  { color: #fda4af !important; }
.text-warning { color: #fcd34d !important; }
.text-info    { color: #7dd3fc !important; }
.border, .border-top, .border-bottom, .border-start, .border-end { border-color: var(--glass-border) !important; }
hr { border-color: var(--glass-border); opacity: 1; }
.shadow, .shadow-sm { box-shadow: var(--glass-shadow) !important; }

/* ── SweetAlert2 ── */
.swal2-popup {
    background: var(--glass-bg-solid) !important;
    backdrop-filter: blur(24px) saturate(170%);
    -webkit-backdrop-filter: blur(24px) saturate(170%);
    border: 1px solid var(--glass-border);
    border-radius: 20px !important;
    color: var(--text) !important;
    box-shadow: 0 30px 80px rgba(0, 0, 0, 0.6), 0 0 40px rgba(99, 102, 241, 0.2);
}
.swal2-title { color: #fff !important; font-family: 'Outfit', sans-serif; }
.swal2-html-container { color: var(--text-soft) !important; }
.swal2-container.swal2-backdrop-show { background: rgba(3, 6, 20, 0.6) !important; backdrop-filter: blur(4px); }
.swal2-styled { border-radius: 12px !important; }
.swal2-styled.swal2-confirm { background: var(--grad-primary) !important; }
.swal2-styled.swal2-cancel { background: rgba(255, 255, 255, 0.1) !important; border: 1px solid var(--glass-border) !important; }
.swal2-input, .swal2-textarea, .swal2-select { background: rgba(255,255,255,.05) !important; color: var(--text) !important; border: 1px solid var(--glass-border) !important; }

/* ── Login / Register ── */
.login-wrapper {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    position: relative;
    z-index: 1;
}

.login-card {
    width: 100%;
    max-width: 430px;
    background: rgba(255, 255, 255, 0.06);
    backdrop-filter: blur(26px) saturate(170%);
    -webkit-backdrop-filter: blur(26px) saturate(170%);
    border: 1px solid var(--glass-border);
    border-radius: 24px;
    box-shadow: 0 30px 80px rgba(0, 0, 0, 0.5), 0 0 60px rgba(99, 102, 241, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.1);
    overflow: hidden;
    position: relative;
    animation: fadeUp .6s ease both;
}

/* Animated neon border */
.login-card::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    padding: 1px;
    background: conic-gradient(from var(--angle, 0deg), transparent 0 60%, #22d3ee, #a855f7, transparent 95%);
    -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    animation: spinBorder 6s linear infinite;
    pointer-events: none;
}

@property --angle { syntax: '<angle>'; initial-value: 0deg; inherits: false; }
@keyframes spinBorder { to { --angle: 360deg; } }

.login-header {
    color: #fff;
    text-align: center;
    padding: 32px 24px 22px;
    background: linear-gradient(180deg, rgba(34, 211, 238, 0.1), transparent);
    border-bottom: 1px solid var(--glass-border);
}

.login-header img { filter: drop-shadow(0 0 18px rgba(34, 211, 238, 0.55)); }

.login-header h1 {
    font-family: 'Orbitron', var(--bs-body-font-family);
    font-size: 1.25rem;
    font-weight: 700;
    letter-spacing: 2px;
    margin: 0;
    background: var(--grad-primary);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.login-header p { font-size: .9rem; color: var(--text-soft); margin: 6px 0 0; }
.login-body { padding: 28px 30px 30px; }
.login-body .btn-primary { padding: .65rem; font-weight: 600; letter-spacing: .5px; }

/* ── Notifications ── */
.notification-item {
    border: 1px solid var(--glass-border);
    border-left: 3px solid rgba(255, 255, 255, 0.2);
    padding: 12px 16px;
    margin-bottom: 8px;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.05);
    font-size: .92rem;
    transition: background .2s, transform .2s, border-color .2s;
}

.notification-item.unread {
    background: rgba(34, 211, 238, 0.07);
    border-left-color: var(--neon-cyan);
    box-shadow: -4px 0 14px -6px rgba(34, 211, 238, 0.7);
}

.notification-link { display: block; color: inherit; text-decoration: none; }
.notification-link:hover { background: rgba(255, 255, 255, 0.07); color: inherit; transform: translateX(3px); }
.notification-item.seen { opacity: .92; }
.notification-item.just-seen { box-shadow: 0 0 0 2px var(--neon-cyan), var(--glow-cyan); }

.unread-dot {
    display: inline-block;
    width: 8px; height: 8px;
    border-radius: 50%;
    background: var(--neon-cyan);
    box-shadow: 0 0 8px var(--neon-cyan);
    margin-right: 6px;
    vertical-align: middle;
    animation: pulse 1.8s ease-in-out infinite;
}

@keyframes pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50%      { opacity: .5; transform: scale(.8); }
}

.seen-label { color: var(--neon-green); font-weight: 600; }
.notif-item { border-color: var(--glass-border) !important; }
.notif-item.unread { background: rgba(34, 211, 238, 0.07); }
.notif-item.unread .notif-title { font-weight: 700; color: #fff; }

.notification-item.info    { border-left-color: #38bdf8; }
.notification-item.success { border-left-color: var(--neon-green); }
.notification-item.warning { border-left-color: var(--neon-amber); }
.notification-item.danger  { border-left-color: var(--neon-red); }

/* ── Status timeline ── */
.timeline { position: relative; padding-left: 30px; }
.timeline::before {
    content: '';
    position: absolute;
    left: 10px; top: 0; bottom: 0;
    width: 2px;
    background: linear-gradient(180deg, var(--neon-cyan), var(--neon-violet), rgba(255, 255, 255, 0.08));
}

.timeline-item { position: relative; margin-bottom: 18px; }
.timeline-dot {
    position: absolute;
    left: -24px;
    top: 4px;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: #1e2547;
    border: 2px solid var(--bg-deep);
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.2);
}

.timeline-dot.done     { background: var(--neon-green); box-shadow: 0 0 0 2px var(--neon-green), 0 0 12px var(--neon-green); }
.timeline-dot.current  { background: var(--neon-amber); box-shadow: 0 0 0 2px var(--neon-amber), 0 0 14px var(--neon-amber); animation: pulse 1.8s ease-in-out infinite; }
.timeline-dot.rejected { background: var(--neon-red);   box-shadow: 0 0 0 2px var(--neon-red), 0 0 12px var(--neon-red); }

/* ── Misc ── */
.page-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 22px;
    flex-wrap: wrap;
    gap: 10px;
}

.page-header h2 {
    font-size: 1.4rem;
    font-weight: 700;
    margin: 0;
    color: #fff;
    letter-spacing: .3px;
}

.page-header h2 i {
    color: var(--neon-cyan);
    filter: drop-shadow(0 0 8px rgba(34, 211, 238, 0.7));
}

.divider { border-top: 1px solid var(--glass-border); margin: 18px 0; }

/* ── Theme toggle button ── */
.theme-toggle i { font-size: 1.25rem; transition: transform .45s cubic-bezier(.4, 0, .2, 1); }
.theme-toggle:hover i { transform: rotate(25deg); }
[data-bs-theme="dark"] .theme-toggle i { color: var(--neon-amber); filter: drop-shadow(0 0 6px rgba(251, 191, 36, 0.6)); }

.theme-toggle-float {
    position: fixed;
    top: 18px;
    right: 18px;
    z-index: 1050;
    width: 46px;
    height: 46px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--glass-bg);
    backdrop-filter: var(--glass-blur);
    -webkit-backdrop-filter: var(--glass-blur);
    border: 1px solid var(--glass-border);
    border-radius: 14px;
    box-shadow: var(--glass-shadow);
    color: var(--text);
}
.theme-toggle-float:hover { border-color: var(--glass-border-hi); color: var(--text); box-shadow: var(--glass-shadow), var(--glow-cyan); }

/* Smooth cross-fade while switching themes */
.theme-switching,
.theme-switching *,
.theme-switching *::before,
.theme-switching *::after {
    transition: background-color .4s ease, color .4s ease, border-color .4s ease, box-shadow .4s ease, fill .4s ease !important;
}

/* ==========================================================================
   Light mode — frosted white glass on a soft lavender backdrop
   ========================================================================== */
[data-bs-theme="light"] {
    --bg-deep: #eef2fb;
    --bg-mid:  #e2e7fa;
    --grad-text: linear-gradient(135deg, #0891b2 0%, #4f46e5 55%, #9333ea 100%);

    --glass-bg:        rgba(255, 255, 255, 0.62);
    --glass-bg-strong: rgba(255, 255, 255, 0.82);
    --glass-bg-solid:  rgba(255, 255, 255, 0.96);
    --glass-border:    rgba(15, 23, 42, 0.11);
    --glass-border-hi: rgba(15, 23, 42, 0.2);
    --glass-shadow:    0 8px 30px rgba(31, 41, 90, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.9);
    --glow-cyan:       0 0 14px rgba(8, 145, 178, 0.25);

    --text:       #0f172a;
    --text-soft:  #334155;
    --text-faint: #56627d;

    --sidebar-bg: rgba(255, 255, 255, 0.62);
    --sidebar-active: #0f172a;
    --sidebar-hover-bg: rgba(15, 23, 42, 0.05);
    --sidebar-active-bg: linear-gradient(90deg, rgba(8, 145, 178, 0.14), rgba(147, 51, 234, 0.06));

    --bs-emphasis-color: #000;
    --bs-secondary-bg: rgba(15, 23, 42, 0.05);
    --bs-tertiary-bg: rgba(15, 23, 42, 0.03);
    --bs-link-color: #0e7490;
    --bs-link-color-rgb: 14, 116, 144;
    --bs-link-hover-color: #155e75;
    --bs-link-hover-color-rgb: 21, 94, 117;
    --bs-primary: #0891b2;
    --bs-primary-rgb: 8, 145, 178;
    --bs-code-color: #a21caf;
}

@media screen {
    /* Backdrop */
    [data-bs-theme="light"] body::before {
        background-image:
            linear-gradient(rgba(15, 23, 42, 0.05) 1px, transparent 1px),
            linear-gradient(90deg, rgba(15, 23, 42, 0.05) 1px, transparent 1px);
    }
    [data-bs-theme="light"] ::-webkit-scrollbar-thumb { background: rgba(15, 23, 42, 0.18); background-clip: padding-box; }
    [data-bs-theme="light"] * { scrollbar-color: rgba(15, 23, 42, 0.2) transparent; }
    [data-bs-theme="light"] code { color: #a21caf; }
    [data-bs-theme="light"] ::selection { background: rgba(8, 145, 178, 0.25); color: #0f172a; }

    /* Gradient headings: deeper hues so they read on white */
    [data-bs-theme="light"] .sidebar-brand .brand-title,
    [data-bs-theme="light"] .login-header h1 { background: var(--grad-text); -webkit-background-clip: text; background-clip: text; }

    /* Sidebar */
    [data-bs-theme="light"] .sidebar { box-shadow: 8px 0 30px rgba(31, 41, 90, 0.08); }
    [data-bs-theme="light"] .sidebar-brand img { filter: drop-shadow(0 2px 6px rgba(31, 41, 90, 0.2)); }
    [data-bs-theme="light"] .sidebar-nav .nav-section { color: #0e7490; }
    [data-bs-theme="light"] .sidebar-nav a:hover { color: #0f172a; border-color: rgba(15, 23, 42, 0.06); }
    [data-bs-theme="light"] .sidebar-nav a.active { border-color: rgba(8, 145, 178, 0.3); box-shadow: 0 4px 14px rgba(8, 145, 178, 0.12); }
    [data-bs-theme="light"] .sidebar-nav a.active i,
    [data-bs-theme="light"] .sidebar-nav a:hover i { color: #0891b2; filter: none; }
    [data-bs-theme="light"] .sidebar-footer a { color: var(--text-soft) !important; }
    [data-bs-theme="light"] .sidebar-footer a:hover { color: #e11d48 !important; }

    /* Topbar */
    [data-bs-theme="light"] .topbar { background: rgba(255, 255, 255, 0.7); }
    [data-bs-theme="light"] .topbar .page-title { color: var(--text); text-shadow: none; }
    [data-bs-theme="light"] .topbar .user-info strong { color: var(--text); }
    [data-bs-theme="light"] .topbar .btn-light:hover,
    [data-bs-theme="light"] .topbar .btn-light:focus,
    [data-bs-theme="light"] .topbar .btn-light.show { border-color: rgba(8, 145, 178, 0.45); color: #0891b2; }
    [data-bs-theme="light"] .theme-toggle i { color: #4f46e5; }

    /* Cards */
    [data-bs-theme="light"] .card-header { color: var(--text); background: linear-gradient(90deg, rgba(255, 255, 255, 0.6), transparent); }
    [data-bs-theme="light"] .dash-card-title,
    [data-bs-theme="light"] .donut-center strong,
    [data-bs-theme="light"] .page-header h2 { color: var(--text); text-shadow: none; }
    [data-bs-theme="light"] .dash-card-title i,
    [data-bs-theme="light"] .page-header h2 i { color: #0891b2; filter: none; }
    [data-bs-theme="light"] .overview-list a:hover { background: rgba(15, 23, 42, 0.05); }

    /* Stat cards: white glass, coloured number and icon */
    [data-bs-theme="light"] .stat-card {
        color: var(--text);
        background:
            linear-gradient(135deg, color-mix(in srgb, var(--c2) 26%, transparent), color-mix(in srgb, var(--c1) 6%, transparent)),
            var(--glass-bg);
        border-color: color-mix(in srgb, var(--c1) 30%, transparent);
        box-shadow: 0 8px 24px color-mix(in srgb, var(--c1) 14%, transparent), inset 0 1px 0 rgba(255, 255, 255, 0.9);
    }
    [data-bs-theme="light"] .stat-card .stat-value { color: var(--c1); text-shadow: none; }
    [data-bs-theme="light"] .stat-card .stat-label { color: var(--text-soft); }
    [data-bs-theme="light"] .stat-card .stat-icon { color: var(--c1); opacity: .35; filter: none; }
    [data-bs-theme="light"] .stat-card::after { background: linear-gradient(100deg, transparent, rgba(255, 255, 255, 0.6), transparent); }
    [data-bs-theme="light"] a.stat-card:hover,
    [data-bs-theme="light"] a.stat-card:focus-visible {
        color: var(--text);
        border-color: var(--c1);
        box-shadow: 0 14px 32px color-mix(in srgb, var(--c1) 22%, transparent), inset 0 1px 0 rgba(255, 255, 255, 0.9);
    }

    /* Resident welcome banner stays a bold gradient with white text */
    [data-bs-theme="light"] .glass-hero {
        background: linear-gradient(120deg, #0891b2, #4f46e5 55%, #7c3aed) !important;
        border-color: transparent !important;
        box-shadow: 0 12px 30px rgba(79, 70, 229, 0.25);
    }
    [data-bs-theme="light"] .glass-hero::after { background: radial-gradient(circle, rgba(255, 255, 255, 0.25), transparent 70%); }

    /* Tables */
    [data-bs-theme="light"] .table {
        --bs-table-border-color: rgba(15, 23, 42, 0.08);
        --bs-table-striped-bg: rgba(15, 23, 42, 0.025);
        --bs-table-hover-bg: rgba(8, 145, 178, 0.07);
        --bs-table-hover-color: var(--text);
        --bs-table-active-bg: rgba(8, 145, 178, 0.1);
    }
    [data-bs-theme="light"] .table th { background: rgba(15, 23, 42, 0.04) !important; border-bottom-color: rgba(8, 145, 178, 0.3) !important; }
    [data-bs-theme="light"] .table-light,
    [data-bs-theme="light"] .table > thead.table-light { --bs-table-bg: rgba(15, 23, 42, 0.04); }
    [data-bs-theme="light"] table.dataTable.table-striped > tbody > tr.odd > * { box-shadow: inset 0 0 0 9999px rgba(15, 23, 42, 0.025); }

    /* Badges: soft tint, deep text */
    [data-bs-theme="light"] .badge.bg-primary   { background: rgba(8, 145, 178, 0.12) !important;  color: #0e7490 !important; border-color: rgba(8, 145, 178, 0.4); box-shadow: none; }
    [data-bs-theme="light"] .badge.bg-success   { background: rgba(16, 185, 129, 0.12) !important; color: #047857 !important; border-color: rgba(16, 185, 129, 0.4); }
    [data-bs-theme="light"] .badge.bg-danger    { background: rgba(225, 29, 72, 0.1) !important;   color: #be123c !important; border-color: rgba(225, 29, 72, 0.4); }
    [data-bs-theme="light"] .badge.bg-warning,
    [data-bs-theme="light"] .badge.bg-warning.text-dark { background: rgba(245, 158, 11, 0.14) !important; color: #92400e !important; border-color: rgba(245, 158, 11, 0.45); }
    [data-bs-theme="light"] .badge.bg-info,
    [data-bs-theme="light"] .badge.bg-info.text-dark { background: rgba(14, 165, 233, 0.12) !important; color: #0369a1 !important; border-color: rgba(14, 165, 233, 0.4); }
    [data-bs-theme="light"] .badge.bg-secondary { background: rgba(100, 116, 139, 0.12) !important; color: #334155 !important; border-color: rgba(100, 116, 139, 0.35); }
    [data-bs-theme="light"] .badge.bg-dark      { background: #1e293b !important; color: #f8fafc !important; }
    [data-bs-theme="light"] .badge.bg-light,
    [data-bs-theme="light"] .badge.bg-light.text-dark { background: rgba(15, 23, 42, 0.05) !important; color: #334155 !important; }
    [data-bs-theme="light"] #notifBadge { color: #fff !important; box-shadow: 0 2px 8px rgba(236, 72, 153, 0.5); }

    /* Forms */
    [data-bs-theme="light"] .form-control,
    [data-bs-theme="light"] .form-select,
    [data-bs-theme="light"] .dataTables_wrapper .dataTables_filter input,
    [data-bs-theme="light"] .dataTables_wrapper .dataTables_length select { background-color: rgba(255, 255, 255, 0.75); }
    [data-bs-theme="light"] .form-control:focus,
    [data-bs-theme="light"] .form-select:focus {
        background-color: #fff;
        color: var(--text);
        border-color: rgba(8, 145, 178, 0.6);
        box-shadow: 0 0 0 3px rgba(8, 145, 178, 0.15);
    }
    [data-bs-theme="light"] .form-control:disabled,
    [data-bs-theme="light"] .form-control[readonly],
    [data-bs-theme="light"] .form-select:disabled { background-color: rgba(15, 23, 42, 0.04); }
    [data-bs-theme="light"] .form-select option { background: #fff; color: var(--text); }
    [data-bs-theme="light"] .form-control[type="file"]::file-selector-button { background: rgba(8, 145, 178, 0.1); color: #0e7490; }
    [data-bs-theme="light"] .input-group-text { background: rgba(255, 255, 255, 0.8); color: #0891b2; }
    [data-bs-theme="light"] .form-check-input { background-color: #fff; }
    [data-bs-theme="light"] .form-check-input:checked { background-color: #0891b2; border-color: #0891b2; }

    /* Buttons */
    [data-bs-theme="light"] .btn-primary { box-shadow: 0 6px 18px rgba(79, 70, 229, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.3); }
    [data-bs-theme="light"] .btn-secondary:hover,
    [data-bs-theme="light"] .btn-light:hover { background: #fff; color: var(--text); }
    [data-bs-theme="light"] .btn-outline-primary   { --bs-btn-color: #0e7490; --bs-btn-border-color: rgba(8, 145, 178, 0.5); --bs-btn-hover-bg: #0891b2; --bs-btn-hover-border-color: #0891b2; --bs-btn-active-bg: #0e7490; }
    [data-bs-theme="light"] .btn-outline-secondary { --bs-btn-color: #334155; --bs-btn-hover-bg: rgba(15, 23, 42, 0.06); --bs-btn-hover-color: #0f172a; --bs-btn-hover-border-color: rgba(15, 23, 42, 0.3); --bs-btn-active-bg: rgba(15, 23, 42, 0.1); }
    [data-bs-theme="light"] .btn-outline-success   { --bs-btn-color: #047857; --bs-btn-border-color: rgba(16, 185, 129, 0.5); --bs-btn-hover-bg: #059669; --bs-btn-hover-border-color: #059669; }
    [data-bs-theme="light"] .btn-outline-danger    { --bs-btn-color: #be123c; --bs-btn-border-color: rgba(225, 29, 72, 0.45); --bs-btn-hover-bg: #e11d48; --bs-btn-hover-border-color: #e11d48; }
    [data-bs-theme="light"] .btn-outline-warning   { --bs-btn-color: #92400e; --bs-btn-border-color: rgba(245, 158, 11, 0.55); --bs-btn-hover-bg: #f59e0b; --bs-btn-hover-border-color: #f59e0b; }
    [data-bs-theme="light"] .btn-outline-info      { --bs-btn-color: #0369a1; --bs-btn-border-color: rgba(14, 165, 233, 0.5); --bs-btn-hover-bg: #0284c7; --bs-btn-hover-border-color: #0284c7; }
    [data-bs-theme="light"] .btn-outline-dark      { --bs-btn-color: #334155; --bs-btn-hover-bg: #1e293b; --bs-btn-hover-color: #fff; }
    [data-bs-theme="light"] .btn-close { filter: none; }

    /* Alerts */
    [data-bs-theme="light"] .alert-primary { background: rgba(8, 145, 178, 0.1);   color: #155e75; }
    [data-bs-theme="light"] .alert-info    { background: rgba(14, 165, 233, 0.1);  color: #075985; }
    [data-bs-theme="light"] .alert-success { background: rgba(16, 185, 129, 0.1);  color: #065f46; }
    [data-bs-theme="light"] .alert-warning { background: rgba(245, 158, 11, 0.12); color: #78350f; }
    [data-bs-theme="light"] .alert-danger  { background: rgba(225, 29, 72, 0.08);  color: #9f1239; }
    [data-bs-theme="light"] .alert-secondary,
    [data-bs-theme="light"] .alert-light   { background: rgba(255, 255, 255, 0.6); }

    /* Dropdowns, tabs, pagination */
    [data-bs-theme="light"] .dropdown-menu {
        --bs-dropdown-link-hover-bg: rgba(8, 145, 178, 0.08);
        --bs-dropdown-link-hover-color: var(--text);
        --bs-dropdown-link-active-bg: rgba(8, 145, 178, 0.15);
        --bs-dropdown-link-active-color: var(--text);
        box-shadow: 0 20px 50px rgba(31, 41, 90, 0.18), 0 0 0 1px rgba(15, 23, 42, 0.04) !important;
    }
    [data-bs-theme="light"] .modal-content { box-shadow: 0 30px 80px rgba(31, 41, 90, 0.25); }
    [data-bs-theme="light"] .nav-tabs .nav-link:hover { color: var(--text); background: rgba(15, 23, 42, 0.03); }
    [data-bs-theme="light"] .nav-tabs .nav-link.active { background: rgba(255, 255, 255, 0.7); color: #0e7490; box-shadow: inset 0 2px 0 #0891b2; }
    [data-bs-theme="light"] .pagination {
        --bs-pagination-bg: rgba(255, 255, 255, 0.6);
        --bs-pagination-hover-bg: rgba(8, 145, 178, 0.1);
        --bs-pagination-hover-color: #0e7490;
        --bs-pagination-active-bg: #0891b2;
        --bs-pagination-active-border-color: #0891b2;
    }
    [data-bs-theme="light"] table.dataTable thead > tr > th.sorting::before,
    [data-bs-theme="light"] table.dataTable thead > tr > th.sorting::after,
    [data-bs-theme="light"] table.dataTable thead > tr > th.sorting_asc::before,
    [data-bs-theme="light"] table.dataTable thead > tr > th.sorting_desc::after { color: #0891b2; }
    [data-bs-theme="light"] .progress { --bs-progress-bg: rgba(15, 23, 42, 0.08); }

    /* Utilities */
    [data-bs-theme="light"] .bg-white,
    [data-bs-theme="light"] .bg-light,
    [data-bs-theme="light"] .bg-body-tertiary { background: rgba(255, 255, 255, 0.65) !important; }
    [data-bs-theme="light"] .text-primary { color: #0e7490 !important; }
    [data-bs-theme="light"] .text-success { color: #047857 !important; }
    [data-bs-theme="light"] .text-danger  { color: #be123c !important; }
    [data-bs-theme="light"] .text-warning { color: #b45309 !important; }
    [data-bs-theme="light"] .text-info    { color: #0369a1 !important; }

    /* SweetAlert2 */
    [data-bs-theme="light"] .swal2-popup { box-shadow: 0 30px 80px rgba(31, 41, 90, 0.25); }
    [data-bs-theme="light"] .swal2-title { color: var(--text) !important; }
    [data-bs-theme="light"] .swal2-container.swal2-backdrop-show { background: rgba(15, 23, 42, 0.35) !important; }
    [data-bs-theme="light"] .swal2-styled.swal2-cancel { background: rgba(15, 23, 42, 0.08) !important; color: var(--text) !important; }
    [data-bs-theme="light"] .swal2-input,
    [data-bs-theme="light"] .swal2-textarea,
    [data-bs-theme="light"] .swal2-select { background: #fff !important; }

    /* Login / register */
    [data-bs-theme="light"] .login-card {
        background: rgba(255, 255, 255, 0.66);
        box-shadow: 0 30px 70px rgba(31, 41, 90, 0.18), 0 0 50px rgba(99, 102, 241, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.9);
    }
    [data-bs-theme="light"] .login-header { color: var(--text); background: linear-gradient(180deg, rgba(8, 145, 178, 0.08), transparent); }
    [data-bs-theme="light"] .login-header img { filter: drop-shadow(0 4px 10px rgba(31, 41, 90, 0.25)); }

    /* Notifications & timeline */
    [data-bs-theme="light"] .notification-item { background: rgba(255, 255, 255, 0.6); border-left-color: rgba(15, 23, 42, 0.2); }
    [data-bs-theme="light"] .notification-item.unread,
    [data-bs-theme="light"] .notif-item.unread { background: rgba(8, 145, 178, 0.08); box-shadow: none; }
    [data-bs-theme="light"] .notification-item.unread { border-left-color: #0891b2; }
    [data-bs-theme="light"] .notification-link:hover { background: #fff; }
    [data-bs-theme="light"] .notif-item.unread .notif-title { color: var(--text); }
    [data-bs-theme="light"] .seen-label { color: #047857; }
    [data-bs-theme="light"] .timeline::before { background: linear-gradient(180deg, #0891b2, #9333ea, rgba(15, 23, 42, 0.08)); }
    [data-bs-theme="light"] .timeline-dot { background: #cbd5e1; border-color: #fff; box-shadow: 0 0 0 2px #cbd5e1; }
    [data-bs-theme="light"] .timeline-dot.done     { background: #10b981; box-shadow: 0 0 0 2px #10b981; }
    [data-bs-theme="light"] .timeline-dot.current  { background: #f59e0b; box-shadow: 0 0 0 2px #f59e0b; }
    [data-bs-theme="light"] .timeline-dot.rejected { background: #e11d48; box-shadow: 0 0 0 2px #e11d48; }
}

@media screen and (max-width: 768px) {
    [data-bs-theme="light"] .sidebar { background: rgba(255, 255, 255, 0.95); }
}

@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    [data-bs-theme="light"] .card,
    [data-bs-theme="light"] .stat-card,
    [data-bs-theme="light"] .topbar,
    [data-bs-theme="light"] .sidebar,
    [data-bs-theme="light"] .login-card { background-color: rgba(255, 255, 255, 0.94); }
}

/* Accessibility: calm everything down for users who ask */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation: none !important; transition: none !important; }
}

/* Browsers without backdrop-filter get a more opaque surface */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    .card, .stat-card, .topbar, .sidebar, .login-card { background-color: rgba(14, 19, 44, 0.92); }
}

/* ── Print: plain black on white ── */
@media print {
    .sidebar, .topbar, .no-print { display: none !important; }
    .main-content { margin: 0 !important; padding: 0 !important; animation: none; }
    html, body { background: #fff !important; color: #000 !important; }
    body::before, body::after { display: none !important; }
    *, *::before, *::after {
        color: #000 !important;
        text-shadow: none !important;
        box-shadow: none !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
        filter: none !important;
    }
    .card, .stat-card, .table th, .badge, .alert { background: transparent !important; border-color: #999 !important; }
    .table { --bs-table-border-color: #999; }
}

/* ── Responsive ── */
@media (max-width: 768px) {
    .sidebar { transform: translateX(-100%); background: rgba(10, 14, 36, 0.92); }
    .sidebar.open { transform: translateX(0); }
    .topbar { left: 12px !important; right: 12px; }
    .main-content { margin-left: 0 !important; padding: 20px 16px; }
}
