/* ═══════════════════════════════════════════════════════════════════════════
   GovRadar Company Branding
   Rebrands Bootswatch Cosmo's blue (#2780e3) to the GovRadar purple accent and
   aligns the light/dark backgrounds with the company palette.
   Accent:  #8a3fff (base) · #aa65ff (hover) · #bd85ff (light)
   Ink:     #0a0e1a #0f1320 #141826 #1a1f2e #262b3d #3a4055
   ═════════════════════════════════════════════════════════════════════════ */
:root,
[data-bs-theme="light"],
[data-bs-theme="dark"] {
    --bs-primary: #8a3fff;
    --bs-primary-rgb: 138, 63, 255;
    --bs-link-color: #8a3fff;
    --bs-link-color-rgb: 138, 63, 255;
    --bs-link-hover-color: #6f23e0;
    --bs-link-hover-color-rgb: 111, 35, 224;
}

/* Light background → warm off-white from the company palette */
[data-bs-theme="light"] {
    --bs-body-bg: #f7f6f2;
    --bs-body-bg-rgb: 247, 246, 242;
}

/* Dark background → company "ink" palette (deepest body, lighter panels) */
[data-bs-theme="dark"] {
    --bs-body-bg: #0a0e1a;
    --bs-body-bg-rgb: 10, 14, 26;
    --bs-emphasis-color: #f1f5f9;
    --bs-border-color: #262b3d;
    --bs-border-color-translucent: rgba(255, 255, 255, 0.08);
    --bs-secondary-bg: #1a1f2e;
    --bs-tertiary-bg: #141826;
    --bs-card-bg: #141826;
    --bs-card-cap-bg: #1a1f2e;
    --bs-modal-bg: #141826;
    --bs-dropdown-bg: #141826;
    --bs-list-group-bg: #141826;
}

/* Primary buttons */
.btn-primary {
    --bs-btn-bg: #8a3fff;
    --bs-btn-border-color: #8a3fff;
    --bs-btn-hover-bg: #7a2cf5;
    --bs-btn-hover-border-color: #7a2cf5;
    --bs-btn-active-bg: #6f23e0;
    --bs-btn-active-border-color: #6f23e0;
    --bs-btn-disabled-bg: #8a3fff;
    --bs-btn-disabled-border-color: #8a3fff;
    --bs-btn-focus-shadow-rgb: 138, 63, 255;
}
.btn-outline-primary {
    --bs-btn-color: #8a3fff;
    --bs-btn-border-color: #8a3fff;
    --bs-btn-hover-bg: #8a3fff;
    --bs-btn-hover-border-color: #8a3fff;
    --bs-btn-active-bg: #8a3fff;
    --bs-btn-active-border-color: #8a3fff;
    --bs-btn-focus-shadow-rgb: 138, 63, 255;
}
[data-bs-theme="dark"] .btn-outline-primary {
    --bs-btn-color: #bd85ff;
    --bs-btn-border-color: #8a3fff;
    --bs-btn-hover-color: #fff;
}

/* Pagination, nav-pills, list-group active states */
.pagination {
    --bs-pagination-color: #8a3fff;
    --bs-pagination-hover-color: #6f23e0;
    --bs-pagination-focus-color: #6f23e0;
    --bs-pagination-active-bg: #8a3fff;
    --bs-pagination-active-border-color: #8a3fff;
}
.nav-pills { --bs-nav-pills-link-active-bg: #8a3fff; }
.list-group { --bs-list-group-active-bg: #8a3fff; --bs-list-group-active-border-color: #8a3fff; }
.progress { --bs-progress-bar-bg: #8a3fff; }
.form-switch .form-check-input:checked,
.form-check-input:checked {
    background-color: #8a3fff;
    border-color: #8a3fff;
}

/* Focus rings → purple instead of blue */
.form-control:focus,
.form-select:focus,
.form-check-input:focus,
.btn-check:focus + .btn,
.page-link:focus {
    border-color: #bd85ff;
    box-shadow: 0 0 0 0.25rem rgba(138, 63, 255, 0.25);
}

/* Inline GovRadar logo: wordmark inherits currentColor (adapts to theme),
   the radar "G" accent stays magenta via its own fill. */
.brand-logo { display: inline-flex; align-items: center; color: #171717; line-height: 0; }
.brand-logo svg { height: 1.4rem; width: auto; display: block; }
.brand-logo--lg svg { height: 2.4rem; }
[data-bs-theme="dark"] .brand-logo { color: #ffffff; }
/* Topbar profile avatar (Microsoft Graph photo) */
.topbar-avatar {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    object-fit: cover;
    box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.12);
}
[data-bs-theme="dark"] .topbar-avatar { box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.15); }

.sidebar-brand .brand-sub {
    margin-left: 0.5rem;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: #8a3fff;
    align-self: center;
}

/* ── Collapse chevron ────────────────────────────────────────────────────── */
.collapse-chevron { transition: transform .2s ease; }
[aria-expanded="true"] .collapse-chevron { transform: rotate(180deg); }

/* ── Layout: Sidebar + Topbar ────────────────────────────────────────────── */
html, body { height: 100%; overflow: hidden; margin: 0; }

#wrapper {
    height: 100vh;
    overflow: hidden;
}

#sidebar {
    width: 240px;
    height: 100vh;
    overflow-y: auto;
    overflow-x: hidden;
    background-color: #fff;
    border-right: 1px solid #e9ecef;
}
[data-bs-theme="dark"] #sidebar {
    background-color: #141826;
    border-right-color: #262b3d;
}

.sidebar-brand {
    padding: 1rem 1rem 0.75rem;
    text-decoration: none;
    color: inherit;
    display: flex;
    align-items: center;
    flex-shrink: 0;
}
.sidebar-brand:hover { color: inherit; }

.sidebar-nav {
    padding: 0.25rem 0 1.5rem;
}

/* Group header (div, not button – avoids all browser button defaults) */
.nav-group-btn {
    width: 100%;
    padding: 0.5rem 1rem 0.2rem;
    display: flex;
    align-items: center;
    color: #9ca3af;
    font-size: 0.95rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    cursor: pointer;
    margin-top: 0.4rem;
    user-select: none;
}
[data-bs-theme="dark"] .nav-group-btn { color: #6e7681; }
.nav-group-btn:hover { color: #374151; }
[data-bs-theme="dark"] .nav-group-btn:hover { color: #e6edf3; }

.nav-chevron {
    margin-left: auto;
    font-size: 0.6rem;
    transition: transform 0.18s ease;
}
.nav-group-btn:not(.collapsed) .nav-chevron { transform: rotate(180deg); }

/* Nav links inside groups */
.sidebar-nav .nav-link {
    padding: 0.3rem 0.75rem 0.3rem 1rem;
    font-size: 0.95rem;
    border-radius: 0.35rem;
    color: #374151;
    margin: 0 0.5rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    transition: background 0.12s, color 0.12s;
}
[data-bs-theme="dark"] .sidebar-nav .nav-link { color: #c9d1d9; }
.sidebar-nav .nav-link:hover {
    background-color: #f3f4f6;
    color: #111827;
}
[data-bs-theme="dark"] .sidebar-nav .nav-link:hover {
    background-color: #1a1f2e;
    color: #e6edf3;
}
.sidebar-nav .nav-link.active {
    background-color: #8a3fff;
    color: #fff !important;
}

/* ── Topbar ──────────────────────────────────────────────────────────────── */
#page-content-wrapper { overflow: hidden; }

.topbar {
    height: 52px;
    padding: 0 1.25rem;
    background-color: #fff;
    border-bottom: 1px solid #e9ecef;
    box-shadow: 0 1px 3px rgba(0,0,0,.05);
    z-index: 10;
}
[data-bs-theme="dark"] .topbar {
    background-color: #141826;
    border-bottom-color: #262b3d;
    box-shadow: 0 1px 3px rgba(0,0,0,.3);
}

.topbar-user {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.84rem;
    color: #6b7280;
    font-weight: 500;
}
[data-bs-theme="dark"] .topbar-user { color: #8b949e; }

.topbar-icon-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 8px;
    border: none;
    background: transparent;
    color: #6b7280;
    font-size: 1rem;
    cursor: pointer;
    text-decoration: none;
    transition: background 0.15s, color 0.15s;
}
.topbar-icon-btn:hover {
    background: #f3f4f6;
    color: #111827;
}
[data-bs-theme="dark"] .topbar-icon-btn { color: #8b949e; }
[data-bs-theme="dark"] .topbar-icon-btn:hover {
    background: #21262d;
    color: #e6edf3;
}

.topbar-divider {
    width: 1px;
    height: 20px;
    background: #e5e7eb;
    margin: 0 0.25rem;
}
[data-bs-theme="dark"] .topbar-divider { background: #262b3d; }

/* ── Page content wrapper + scrollable main ──────────────────────────────── */
#page-content-wrapper {
    height: 100vh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-width: 0;
}

#main-content {
    flex: 1 1 0;
    overflow-y: auto;
    background-color: #f7f6f2;
}
[data-bs-theme="dark"] #main-content { background-color: #0a0e1a; }

/* ── Mobile sidebar ──────────────────────────────────────────────────────── */
/* Hamburger toggle: hidden on desktop, shown on mobile */
.sidebar-toggle { display: none !important; }

@media (max-width: 767.98px) {
    .sidebar-toggle { display: flex !important; }

    /* Sidebar becomes a fixed off-canvas overlay */
    #sidebar {
        position: fixed;
        top: 0;
        left: 0;
        z-index: 1050;
        transform: translateX(-100%);
        transition: transform 0.25s ease;
        box-shadow: 4px 0 20px rgba(0, 0, 0, .18);
    }
    #sidebar.sidebar-open {
        transform: translateX(0);
    }

    /* Page content fills the full width */
    #page-content-wrapper {
        width: 100%;
    }
}

/* Backdrop overlay */
.sidebar-backdrop {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 1049;
    background: rgba(0, 0, 0, .45);
}
.sidebar-backdrop.show {
    display: block;
}

/* ── Extra sizes ─────────────────────────────────────────────────────────── */
.btn-xs {
    padding: 0.1rem 0.4rem;
    font-size: 0.75rem;
    border-radius: 0.2rem;
}

/* ── Dark mode improvements ─────────────────────────────────────────────── */
/* [data-bs-theme="dark"] fires when the JS toggle sets the attribute.      */
/* @media block fires as fallback for system dark preference.               */
[data-bs-theme="dark"] .btn-outline-secondary {
    --bs-btn-color: #adb5bd;
    --bs-btn-border-color: #adb5bd;
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: #6c757d;
    --bs-btn-hover-border-color: #6c757d;
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: #6c757d;
    --bs-btn-active-border-color: #6c757d;
}
[data-bs-theme="dark"] .badge.bg-danger-subtle   { background-color: rgba(220,53,69,.25)  !important; color: #ea868f !important; }
[data-bs-theme="dark"] .badge.bg-warning-subtle  { background-color: rgba(255,193,7,.2)   !important; color: #ffda6a !important; }
[data-bs-theme="dark"] .badge.bg-success-subtle  { background-color: rgba(25,135,84,.25)  !important; color: #75b798 !important; }
[data-bs-theme="dark"] .badge.bg-secondary-subtle{ background-color: rgba(108,117,125,.25)!important; color: #adb5bd !important; }
[data-bs-theme="dark"] .badge.bg-warning         { color: #000 !important; }
/* text-bg-light chips (e.g. Stack/Service labels) would be a glaring near-white
   block in dark mode → use a subtle dark chip with readable text. */
[data-bs-theme="dark"] .badge.text-bg-light      { background-color: #1a1f2e !important; color: #c9d1d9 !important; border-color: #262b3d !important; }
/* .table-light headers/rows → subtle dark instead of glaring near-white. */
[data-bs-theme="dark"] .table-light {
    --bs-table-bg: #1a1f2e;
    --bs-table-color: #c9d1d9;
    --bs-table-border-color: #262b3d;
}
/* .bg-light panels → subtle dark surface instead of near-white. */
[data-bs-theme="dark"] .bg-light { background-color: #1a1f2e !important; }
/* .btn-light buttons → subtle dark button instead of near-white. */
[data-bs-theme="dark"] .btn-light {
    --bs-btn-bg: #1a1f2e;
    --bs-btn-border-color: #262b3d;
    --bs-btn-color: #c9d1d9;
    --bs-btn-hover-bg: #262b3d;
    --bs-btn-hover-border-color: #3a4055;
    --bs-btn-hover-color: #fff;
    --bs-btn-active-bg: #262b3d;
    --bs-btn-active-border-color: #3a4055;
    --bs-btn-active-color: #fff;
}

@media (prefers-color-scheme: dark) {
    :root:not([data-bs-theme="light"]) .btn-outline-secondary {
        --bs-btn-color: #adb5bd;
        --bs-btn-border-color: #adb5bd;
        --bs-btn-hover-color: #fff;
        --bs-btn-hover-bg: #6c757d;
        --bs-btn-hover-border-color: #6c757d;
        --bs-btn-active-color: #fff;
        --bs-btn-active-bg: #6c757d;
        --bs-btn-active-border-color: #6c757d;
    }
    :root:not([data-bs-theme="light"]) .badge.bg-danger-subtle   { background-color: rgba(220,53,69,.25)  !important; color: #ea868f !important; }
    :root:not([data-bs-theme="light"]) .badge.bg-warning-subtle  { background-color: rgba(255,193,7,.2)   !important; color: #ffda6a !important; }
    :root:not([data-bs-theme="light"]) .badge.bg-success-subtle  { background-color: rgba(25,135,84,.25)  !important; color: #75b798 !important; }
    :root:not([data-bs-theme="light"]) .badge.bg-secondary-subtle{ background-color: rgba(108,117,125,.25)!important; color: #adb5bd !important; }
    :root:not([data-bs-theme="light"]) .badge.bg-warning         { color: #000 !important; }
    :root:not([data-bs-theme="light"]) .badge.text-bg-light      { background-color: #1a1f2e !important; color: #c9d1d9 !important; border-color: #262b3d !important; }
    :root:not([data-bs-theme="light"]) .table-light {
        --bs-table-bg: #1a1f2e;
        --bs-table-color: #c9d1d9;
        --bs-table-border-color: #262b3d;
    }
    :root:not([data-bs-theme="light"]) .bg-light { background-color: #1a1f2e !important; }
    :root:not([data-bs-theme="light"]) .btn-light {
        --bs-btn-bg: #1a1f2e;
        --bs-btn-border-color: #262b3d;
        --bs-btn-color: #c9d1d9;
        --bs-btn-hover-bg: #262b3d;
        --bs-btn-hover-border-color: #3a4055;
        --bs-btn-hover-color: #fff;
        --bs-btn-active-bg: #262b3d;
        --bs-btn-active-border-color: #3a4055;
        --bs-btn-active-color: #fff;
    }
}

/* ── HTMX loading indicator ──────────────────────────────────────────────── */
.htmx-indicator {
    display: none;
}
/* Nur direktes Kind bzw. das Request-Ziel selbst: ein pollender Vorfahre
   (z. B. der "every 30s"-Grid-Container) darf NICHT jeden verschachtelten
   Karten-Spinner aufleuchten lassen. Jeder Button-Spinner wird ohnehin per
   hx-indicator direkt mit .htmx-request markiert (same-element-Regel). */
.htmx-request > .htmx-indicator,
.htmx-request.htmx-indicator {
    display: inline-block;
}
.htmx-request > .htmx-indicator-hide {
    display: none;
}

/* Log pre */
pre {
    font-size: 0.8rem;
    font-family: 'Cascadia Code', 'Fira Code', 'JetBrains Mono', 'Courier New', monospace;
}

/* ── Soft semantic chips/backgrounds (subtle bg + readable text), theme-adaptive ── */
.text-bg-primary-soft   { background-color: rgba(138,63,255,.14); color: #7a2cf5; }
[data-bs-theme="dark"] .text-bg-primary-soft { background-color: rgba(138,63,255,.22); color: #bd85ff; }
.text-bg-success-soft   { background-color: var(--bs-success-bg-subtle);   color: var(--bs-success-text-emphasis); }
.text-bg-danger-soft    { background-color: var(--bs-danger-bg-subtle);    color: var(--bs-danger-text-emphasis); }
.text-bg-warning-soft   { background-color: var(--bs-warning-bg-subtle);   color: var(--bs-warning-text-emphasis); }
.text-bg-info-soft      { background-color: var(--bs-info-bg-subtle);      color: var(--bs-info-text-emphasis); }
.text-bg-secondary-soft { background-color: var(--bs-secondary-bg-subtle); color: var(--bs-secondary-text-emphasis); }

/* ── Service Health dashboard ─────────────────────────────────────────── */
.sh-kpi {
    border: 1px solid var(--bs-border-color);
    border-radius: .75rem;
    background: var(--bs-card-bg);
}
.sh-kpi--up   { border-left: 3px solid var(--bs-success); }
.sh-kpi--down { border-left: 3px solid var(--bs-danger); }
.sh-kpi__icon {
    width: 2.6rem; height: 2.6rem; flex-shrink: 0;
    border-radius: .65rem;
    display: flex; align-items: center; justify-content: center;
    font-size: 1.15rem;
}
.sh-kpi__value { font-size: 1.6rem; font-weight: 700; line-height: 1; }
.sh-kpi__label { font-size: .75rem; color: var(--bs-secondary-color); margin-top: .15rem; }

.sh-card {
    border: 1px solid var(--bs-border-color);
    border-radius: .75rem;
    transition: box-shadow .15s ease, transform .15s ease;
}
.sh-card:hover { box-shadow: 0 .5rem 1.25rem rgba(0,0,0,.10); transform: translateY(-1px); }
.sh-card--up      { border-left: 4px solid var(--bs-success); }
.sh-card--down    { border-left: 4px solid var(--bs-danger); }
.sh-card--unknown { border-left: 4px solid var(--bs-secondary); }

.sh-metric {
    background: var(--bs-tertiary-bg);
    border-radius: .5rem;
    padding: .45rem .5rem;
    text-align: center;
}
.sh-metric__label { font-size: .68rem; text-transform: uppercase; letter-spacing: .04em; color: var(--bs-secondary-color); }
.sh-metric__value { font-weight: 600; font-size: .95rem; }

.sh-uptime { display: flex; gap: 2px; align-items: stretch; }
.sh-uptime__seg { flex: 1 1 0; min-width: 3px; height: 20px; border-radius: 2px; opacity: .9; }
.sh-uptime__seg--up   { background: var(--bs-success); }
.sh-uptime__seg--down { background: var(--bs-danger); }

/* ── Service Versioning cards ─────────────────────────────────────────── */
.sv-card {
    border: 1px solid var(--bs-border-color) !important;
    border-radius: .85rem;
    transition: box-shadow .15s ease, transform .15s ease;
    overflow: hidden;
}
.sv-card:hover { box-shadow: 0 .5rem 1.25rem rgba(0,0,0,.10) !important; transform: translateY(-1px); }

.sv-card__icon {
    width: 2.4rem; height: 2.4rem; flex-shrink: 0;
    border-radius: .6rem;
    display: flex; align-items: center; justify-content: center;
    font-size: 1.1rem;
    background: rgba(138,63,255,.12);
    color: #7a2cf5;
}
[data-bs-theme="dark"] .sv-card__icon { background: rgba(138,63,255,.2); color: #bd85ff; }

.sv-card__name { font-size: 1rem; font-weight: 600; line-height: 1.2; }
.sv-card__repo { font-size: .76rem; }
.sv-card__repo code { color: var(--bs-secondary-color); }

/* status panels inside the card body */
.sv-panel {
    background: var(--bs-tertiary-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: .6rem;
    padding: .6rem .7rem;
    height: 100%;
}
.sv-panel__head {
    font-size: .7rem; text-transform: uppercase; letter-spacing: .04em;
    color: var(--bs-secondary-color); font-weight: 600;
    display: flex; align-items: center; gap: .35rem;
    margin-bottom: .45rem; min-width: 0;
}
.sv-panel__head .sv-panel__sub {
    text-transform: none; letter-spacing: 0; font-weight: 400;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.sv-latest {
    font-family: 'Cascadia Code','Fira Code','JetBrains Mono',monospace;
    font-size: 1.05rem; font-weight: 700;
}

/* tag chips */
.sv-tags { display: flex; flex-wrap: wrap; gap: .25rem; margin-top: .5rem; }
.sv-tag {
    font-family: 'Cascadia Code','Fira Code','JetBrains Mono',monospace;
    font-size: .72rem; line-height: 1.4;
    padding: .08rem .4rem;
    border-radius: .35rem;
    background: var(--bs-secondary-bg-subtle);
    color: var(--bs-secondary-text-emphasis);
    border: 1px solid var(--bs-border-color);
}
.sv-tag--latest {
    background: rgba(138,63,255,.14); color: #7a2cf5;
    border-color: rgba(138,63,255,.3); font-weight: 600;
}
[data-bs-theme="dark"] .sv-tag--latest { background: rgba(138,63,255,.22); color: #bd85ff; }

/* sync status line */
.sv-sync { display: inline-flex; align-items: center; gap: .35rem; font-size: .85rem; font-weight: 600; }

/* push footer */
.sv-foot {
    border-top: 1px solid var(--bs-border-color);
    margin-top: .65rem; padding-top: .6rem;
}

/* live deployment env chips */
.sv-envs .sv-panel__head { margin-bottom: .35rem; }
.sv-env {
    display: inline-flex; align-items: center; gap: .35rem;
    background: var(--bs-tertiary-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: .5rem; padding: .2rem .45rem .2rem .25rem;
}
.sv-env__stage {
    font-size: .62rem; text-transform: uppercase; letter-spacing: .04em; font-weight: 700;
    padding: .1rem .4rem; border-radius: .3rem;
}
.sv-env__stage--dev     { background: var(--bs-info-bg-subtle);    color: var(--bs-info-text-emphasis); }
.sv-env__stage--staging { background: var(--bs-warning-bg-subtle); color: var(--bs-warning-text-emphasis); }
.sv-env__stage--prod    { background: var(--bs-success-bg-subtle); color: var(--bs-success-text-emphasis); }
.sv-env__none { color: var(--bs-secondary-color); font-size: .85rem; padding: 0 .2rem; }

/* ── Shared "hacker terminal" boot loader (ink + brand purple) ───────── */
.gr-boot { margin-bottom: 1rem; }
.gr-boot__crt {
    position: relative;
    background: radial-gradient(ellipse at 50% 0%, #181233 0%, #0d1022 60%, #080a16 100%);
    border: 1px solid rgba(138, 63, 255, .38);
    border-radius: .75rem;
    padding: 1rem 1.15rem 1.05rem;
    color: #c9aaff;
    font-family: 'Cascadia Code','Fira Code','JetBrains Mono','Courier New',monospace;
    box-shadow: 0 .5rem 1.5rem rgba(0,0,0,.4), inset 0 0 42px rgba(138,63,255,.08);
    overflow: hidden;
    text-shadow: 0 0 7px rgba(138,63,255,.5);
}
.gr-boot__scan {
    position: absolute; left: 0; right: 0; top: 0; height: 26%;
    background: linear-gradient(180deg, rgba(138,63,255,.14), rgba(138,63,255,0));
    animation: gr-scan 3.4s linear infinite; pointer-events: none; z-index: 1;
}
@keyframes gr-scan { 0% { transform: translateY(-120%); } 100% { transform: translateY(440%); } }
.gr-boot__crt::after {
    content: ""; position: absolute; inset: 0; pointer-events: none; z-index: 1;
    background: repeating-linear-gradient(180deg, rgba(0,0,0,.18) 0 1px, transparent 1px 3px);
    opacity: .5;
}
.gr-boot__crt > *:not(.gr-boot__scan) { position: relative; z-index: 2; }
.gr-boot__head {
    display: flex; align-items: center; gap: .5rem;
    font-size: .76rem; letter-spacing: .05em; opacity: .88; margin-bottom: .5rem;
    text-transform: uppercase; color: #bd85ff;
}
.gr-boot__dot {
    width: .6rem; height: .6rem; border-radius: 50%;
    background: #aa65ff; box-shadow: 0 0 9px #8a3fff;
    animation: gr-blink 1s steps(2, end) infinite;
}
@keyframes gr-blink { 50% { opacity: .2; } }
.gr-boot__phase { font-size: .98rem; font-weight: 600; margin-bottom: .55rem; min-height: 1.3em; color: #e6d8ff; }
.gr-boot__phase::after { content: "▮"; margin-left: .15rem; color: #aa65ff; animation: gr-blink 1.05s steps(2, end) infinite; }
.gr-boot__console {
    margin: 0 0 .7rem; padding: .5rem .6rem;
    background: rgba(0,0,0,.4); border: 1px solid rgba(138,63,255,.2); border-radius: .4rem;
    font-size: .72rem; line-height: 1.4; height: 8.4em; overflow: hidden;
    color: #b79bff; white-space: pre-wrap; word-break: break-all;
}
.gr-boot__progress {
    position: relative; height: 1.4rem; border-radius: .35rem;
    background: rgba(0,0,0,.45); border: 1px solid rgba(138,63,255,.3); overflow: hidden;
}
.gr-boot__progress-fill {
    height: 100%;
    background-image: linear-gradient(90deg, #5a23b8, #8a3fff 60%, #bd85ff);
    box-shadow: 0 0 12px rgba(138,63,255,.65);
    transition: width .55s ease;
}
.gr-boot__progress-pct {
    position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
    font-size: .72rem; font-weight: 700; color: #f3ecff; text-shadow: 0 0 4px rgba(0,0,0,.75);
}
.gr-boot__stat { margin-top: .4rem; font-size: .72rem; opacity: .82; color: #b79bff; }

/* ── Broker Monitoring (RabbitMQ / Redis) ─────────────────────────────── */
.bm-stage-head { display: flex; align-items: center; gap: .6rem; margin: 1rem 0 .25rem; }
.bm-stage-head:first-of-type { margin-top: 0; }
.bm-stage-badge {
    font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em;
    padding: .15rem .55rem; border-radius: .4rem;
    background: var(--bs-secondary-bg-subtle); color: var(--bs-secondary-text-emphasis);
}
.bm-stage-badge--dev     { background: var(--bs-info-bg-subtle);    color: var(--bs-info-text-emphasis); }
.bm-stage-badge--staging { background: var(--bs-warning-bg-subtle); color: var(--bs-warning-text-emphasis); }
.bm-stage-badge--prod    { background: var(--bs-success-bg-subtle); color: var(--bs-success-text-emphasis); }
.bm-stage-line { flex: 1 1 auto; height: 1px; background: var(--bs-border-color); }

.bm-card {
    border: 1px solid var(--bs-border-color) !important;
    border-left-width: 4px !important;
    border-radius: .75rem;
    transition: box-shadow .15s ease;
}
.bm-card:hover { box-shadow: 0 .5rem 1.25rem rgba(0,0,0,.10) !important; }
.bm-card--success { border-left-color: var(--bs-success) !important; }
.bm-card--warning { border-left-color: var(--bs-warning) !important; }
.bm-card--danger  { border-left-color: var(--bs-danger) !important; }

.bm-icon {
    width: 2.4rem; height: 2.4rem; flex-shrink: 0; border-radius: .6rem;
    display: flex; align-items: center; justify-content: center; font-size: 1.1rem;
}
.bm-icon--rabbitmq { background: rgba(255,102,0,.14); color: #ff6600; }
.bm-icon--redis    { background: rgba(220,53,69,.14); color: #dc382d; }

.bm-dot { width: .6rem; height: .6rem; border-radius: 50%; flex-shrink: 0; display: inline-block; }
.bm-dot--success { background: var(--bs-success); box-shadow: 0 0 6px rgba(25,135,84,.6); }
.bm-dot--warning { background: var(--bs-warning); }
.bm-dot--danger  { background: var(--bs-danger); box-shadow: 0 0 6px rgba(220,53,69,.6); }

.bm-metrics { display: grid; grid-template-columns: repeat(auto-fit, minmax(5.2rem, 1fr)); gap: .5rem; }
.bm-metric {
    background: var(--bs-tertiary-bg); border: 1px solid var(--bs-border-color);
    border-radius: .5rem; padding: .4rem .5rem; text-align: center;
}
.bm-metric__label { font-size: .64rem; text-transform: uppercase; letter-spacing: .03em; color: var(--bs-secondary-color); }
.bm-metric__value { font-weight: 600; font-size: .92rem; margin-top: .1rem; }
.bm-metric__value--ok     { color: var(--bs-success-text-emphasis); }
.bm-metric__value--warn   { color: var(--bs-warning-text-emphasis); }
.bm-metric__value--danger { color: var(--bs-danger-text-emphasis); }

.bm-queues { font-size: .74rem; }
.bm-queues th { font-weight: 600; color: var(--bs-secondary-color); font-size: .68rem; text-transform: uppercase; }
.bm-queues td { vertical-align: middle; }
.bm-queues td:first-child { max-width: 11rem; }

/* ── GovAi chat ───────────────────────────────────────────────────────────── */
.govai-wrap {
    display: flex !important;
    flex-direction: row !important;   /* override Bootstrap .card column direction */
    height: calc(100vh - 140px);
    min-height: 440px;
    overflow: hidden;
    border: 1px solid var(--bs-border-color);
    border-radius: .75rem;
}

/* ── Left: agent-steps panel (fixed, pinned animation + scrolling log) ── */
.govai-steps {
    width: 330px;
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    border-right: 1px solid var(--bs-border-color);
    background: var(--bs-tertiary-bg);
    overflow: hidden;
}
.govai-steps-head {
    flex-shrink: 0;
    display: flex; align-items: center; gap: .4rem;
    padding: .55rem .75rem;
    border-bottom: 1px solid var(--bs-border-color);
    font-size: .85rem;
}
.govai-steps-log { flex: 1 1 0; min-height: 0; overflow-y: auto; padding: .6rem; }
.govai-wrap.steps-hidden .govai-steps { display: none; }

/* ── Right: sessions sidebar ── */
.govai-sidebar {
    width: 240px;
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    border-left: 1px solid var(--bs-border-color);
    background: var(--bs-tertiary-bg);
}
.govai-sessions { flex: 1 1 0; overflow-y: auto; padding: .35rem; }
.govai-session {
    position: relative;
    padding: .5rem .6rem;
    border-radius: .5rem;
    cursor: pointer;
    border: 1px solid transparent;
    margin-bottom: .15rem;
}
.govai-session:hover { background: var(--bs-secondary-bg); }
.govai-session.active { background: rgba(138,63,255,.14); border-color: rgba(138,63,255,.35); }
.govai-session-name { font-size: .82rem; font-weight: 500; }
.govai-session.active .govai-session-name { color: #bd85ff; }
.govai-session-meta { font-size: .68rem; color: var(--bs-secondary-color); }
.govai-session-del {
    position: absolute; top: .35rem; right: .3rem;
    padding: 0 .25rem; line-height: 1; opacity: 0;
    color: var(--bs-secondary-color); background: transparent; border: 0;
}
.govai-session:hover .govai-session-del { opacity: .8; }
.govai-session-del:hover { color: var(--bs-danger); }
.govai-tokens { flex-shrink: 0; }

.govai-chat { flex: 1 1 0; display: flex; flex-direction: column; min-width: 0; }
.govai-messages { flex: 1 1 0; overflow-y: auto; padding: 1rem; display: flex; flex-direction: column; gap: .75rem; }
.govai-empty { margin: auto; max-width: 420px; }
.govai-msg { display: flex; max-width: 86%; }
.govai-msg.user { align-self: flex-end; justify-content: flex-end; }
.govai-msg.assistant { align-self: flex-start; }
.govai-bubble {
    padding: .6rem .85rem; border-radius: .75rem; line-height: 1.6;
    font-size: .9rem; word-break: break-word;
    background: var(--bs-secondary-bg); border: 1px solid var(--bs-border-color);
}
.govai-msg.user .govai-bubble {
    background: rgba(138,63,255,.16); border-color: rgba(138,63,255,.32);
    border-bottom-right-radius: .15rem;
}
.govai-msg.assistant .govai-bubble { border-bottom-left-radius: .15rem; }
.govai-bubble p:last-child { margin-bottom: 0; }
.govai-bubble pre { background: var(--bs-tertiary-bg); border: 1px solid var(--bs-border-color); border-radius: .4rem; padding: .6rem; overflow-x: auto; font-size: .8rem; }
.govai-bubble code { font-size: .82em; }
.govai-bubble table { width: 100%; font-size: .82em; border-collapse: collapse; margin: .4rem 0; display: block; overflow-x: auto; }
.govai-bubble th, .govai-bubble td { border: 1px solid var(--bs-border-color); padding: .25rem .5rem; }
.govai-cursor { display: inline-block; width: 7px; height: 1em; background: #8a3fff; margin-left: 2px; vertical-align: text-bottom; animation: govai-blink .7s step-end infinite; }
@keyframes govai-blink { 50% { opacity: 0; } }
.govai-input textarea { resize: none; max-height: 160px; }

.govai-step { border: 1px solid var(--bs-border-color); border-radius: .5rem; margin-bottom: .5rem; overflow: hidden; }
.govai-step.running { border-color: var(--bs-warning); }
.govai-step-head { display: flex; align-items: center; gap: .35rem; padding: .4rem .6rem; background: var(--bs-tertiary-bg); font-size: .8rem; cursor: pointer; user-select: none; }
.govai-step-head:hover { background: var(--bs-secondary-bg); }
.govai-step-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.govai-step-chevron { font-size: .7rem; transition: transform .15s ease; flex-shrink: 0; }
.govai-step.open .govai-step-chevron { transform: rotate(90deg); }
.govai-step-sections { display: none; border-top: 1px solid var(--bs-border-color); }
.govai-step.open .govai-step-sections { display: block; }
.govai-step-label { font-size: .58rem; text-transform: uppercase; letter-spacing: .06em; color: var(--bs-secondary-color); padding: .35rem .6rem 0; }
.govai-step-body { margin: 0; padding: .35rem .6rem .5rem; font-size: .72rem; max-height: 240px; overflow: auto; white-space: pre-wrap; word-break: break-word; }

/* GovAi neural-net animation tile (pinned at the top of the steps panel) */
.govai-neural {
    flex-shrink: 0;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    background: radial-gradient(ellipse at center, #140a24 0%, #0a0612 70%);
    border-bottom: 1px solid var(--bs-border-color);
    padding: .6rem 0 .45rem; transition: height .3s ease, opacity .3s ease; height: 200px;
}
.govai-neural.idle { height: 140px; opacity: .6; }
#govai-neural { display: block; width: 170px; height: 170px; border-radius: 50%; }
.govai-neural.idle #govai-neural { width: 110px; height: 110px; }
.govai-neural-status { margin-top: .4rem; font-size: .6rem; letter-spacing: .12em; color: #aa65ff; font-family: 'JetBrains Mono', monospace; }

/* Responsive: drop the steps panel first, then the sessions sidebar */
@media (max-width: 991.98px) {
    .govai-steps { display: none; }
}
@media (max-width: 767.98px) {
    .govai-sidebar { display: none; }
    .govai-wrap { height: calc(100vh - 120px); }
}

/* ArgoCD insights modal — controller log block (theme-adaptive) */
.argo-log-pre {
    font-size: .72rem;
    line-height: 1.45;
    max-height: 40vh;
    overflow: auto;
    white-space: pre-wrap;
    word-break: break-word;
    background: var(--bs-tertiary-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: .375rem;
    padding: .6rem .75rem;
}

/* ── Easter Egg: Nerd Mode ───────────────────────────────────────────────── */
html.nerd-mode {
    --bs-body-color: #00ff41;
    --bs-body-bg: #050f05;
    --bs-emphasis-color: #39ff14;
    --bs-secondary-color: #00b32c;
    --bs-tertiary-color: rgba(0, 255, 65, 0.4);
    --bs-tertiary-bg: #0a1a0a;
    --bs-secondary-bg: #0d200d;
    --bs-border-color: #004d1a;
    --bs-border-color-translucent: rgba(0, 255, 65, 0.15);
    --bs-primary: #00ff41;
    --bs-primary-rgb: 0, 255, 65;
    --bs-link-color: #00ff41;
    --bs-link-color-rgb: 0, 255, 65;
    --bs-link-hover-color: #66ff8a;
    --bs-card-bg: #0a1a0a;
    --bs-card-border-color: #004d1a;
    --bs-table-color: #00ff41;
    --bs-table-border-color: #004d1a;
    --bs-table-striped-bg: rgba(0, 255, 65, 0.03);
    --bs-table-hover-bg: rgba(0, 255, 65, 0.07);
    --bs-input-bg: #0a1a0a;
    --bs-input-border-color: #004d1a;
    --bs-input-color: #00ff41;
    --bs-modal-bg: #050f05;
    --bs-modal-border-color: #004d1a;
}

.nerd-mode,
.nerd-mode * {
    font-family: 'Cascadia Code', 'Fira Code', 'JetBrains Mono', 'Courier New', monospace !important;
}

.nerd-mode #sidebar {
    background-color: #050f05 !important;
    border-right: 1px solid #004d1a !important;
}
.nerd-mode .sidebar-brand {
    color: #00ff41 !important;
    text-shadow: 0 0 10px rgba(0, 255, 65, 0.6);
}
/* Logo-Wordmark (.st1 = currentColor) und Radar-Akzent (.st0 = lila) im
   Nerd-Mode auf Matrix-Grün ziehen, inkl. leichtem Glow. */
.nerd-mode .brand-logo { color: #00ff41 !important; }
.nerd-mode .brand-logo svg .st0 { fill: #00ff41 !important; }
.nerd-mode .brand-logo svg {
    filter: drop-shadow(0 0 6px rgba(0, 255, 65, 0.55));
}
.nerd-mode .sidebar-brand:hover { color: #39ff14 !important; }
.nerd-mode .nav-group-btn { color: #00b32c !important; }
.nerd-mode .nav-group-btn:hover { color: #00ff41 !important; }
.nerd-mode .sidebar-nav .nav-link { color: #00b32c !important; }
.nerd-mode .sidebar-nav .nav-link:hover {
    background-color: #0d200d !important;
    color: #00ff41 !important;
}
.nerd-mode .sidebar-nav .nav-link.active {
    background-color: #00ff41 !important;
    color: #000 !important;
    text-shadow: none;
}

.nerd-mode .topbar {
    background-color: #050f05 !important;
    border-bottom: 1px solid #00ff41 !important;
    box-shadow: 0 0 20px rgba(0, 255, 65, 0.15) !important;
}
.nerd-mode .topbar-user {
    color: #00ff41 !important;
    text-shadow: 0 0 8px rgba(0, 255, 65, 0.7);
    cursor: default;
    user-select: none;
}
.nerd-mode .topbar-icon-btn { color: #00b32c !important; }
.nerd-mode .topbar-icon-btn:hover {
    background: #0d200d !important;
    color: #00ff41 !important;
    box-shadow: 0 0 8px rgba(0, 255, 65, 0.25);
}
.nerd-mode .topbar-divider { background: #004d1a !important; }

.nerd-mode #main-content { background-color: #050f05 !important; }

/* Cards */
.nerd-mode .card {
    background-color: #0a1a0a !important;
    border-color: #004d1a !important;
    color: #00ff41 !important;
}
.nerd-mode .card-header {
    background-color: #0d200d !important;
    border-color: #004d1a !important;
    color: #00ff41 !important;
}
.nerd-mode .card-footer {
    background-color: #0d200d !important;
    border-color: #004d1a !important;
}

/* Tables */
.nerd-mode .table {
    color: #00ff41 !important;
    border-color: #004d1a !important;
}
.nerd-mode .table thead th {
    color: #39ff14 !important;
    border-color: #004d1a !important;
    background-color: #0d200d !important;
}
.nerd-mode .table td,
.nerd-mode .table th { border-color: #004d1a !important; }

/* Forms */
.nerd-mode .form-control,
.nerd-mode .form-select {
    background-color: #0a1a0a !important;
    border-color: #004d1a !important;
    color: #00ff41 !important;
}
.nerd-mode .form-control:focus,
.nerd-mode .form-select:focus {
    background-color: #0a1a0a !important;
    border-color: #00ff41 !important;
    color: #00ff41 !important;
    box-shadow: 0 0 0 0.2rem rgba(0, 255, 65, 0.2) !important;
}
.nerd-mode .form-control::placeholder { color: #004d1a !important; }
.nerd-mode .input-group-text {
    background-color: #0d200d !important;
    border-color: #004d1a !important;
    color: #00b32c !important;
}
.nerd-mode label, .nerd-mode .form-label { color: #00b32c !important; }

/* Buttons */
.nerd-mode .btn-primary {
    background-color: #00ff41 !important;
    border-color: #00ff41 !important;
    color: #000 !important;
}
.nerd-mode .btn-primary:hover {
    background-color: #39ff14 !important;
    border-color: #39ff14 !important;
    color: #000 !important;
}
.nerd-mode .btn-secondary,
.nerd-mode .btn-outline-secondary {
    background-color: transparent !important;
    border-color: #004d1a !important;
    color: #00b32c !important;
}
.nerd-mode .btn-secondary:hover,
.nerd-mode .btn-outline-secondary:hover {
    background-color: #0d200d !important;
    color: #00ff41 !important;
    border-color: #00b32c !important;
}
.nerd-mode .btn-danger {
    background-color: #1a0005 !important;
    border-color: #ff003c !important;
    color: #ff003c !important;
}
.nerd-mode .btn-danger:hover {
    background-color: #ff003c !important;
    color: #000 !important;
}
.nerd-mode .btn-success {
    background-color: #00ff41 !important;
    border-color: #00ff41 !important;
    color: #000 !important;
}
.nerd-mode .btn-outline-primary {
    background-color: transparent !important;
    border-color: #00b32c !important;
    color: #00b32c !important;
}
.nerd-mode .btn-outline-primary:hover {
    background-color: #0d200d !important;
    border-color: #00ff41 !important;
    color: #00ff41 !important;
}
.nerd-mode .btn-outline-warning {
    background-color: transparent !important;
    border-color: #b38600 !important;
    color: #ffd700 !important;
}
.nerd-mode .btn-outline-warning:hover {
    background-color: #1a1500 !important;
    border-color: #ffd700 !important;
    color: #ffd700 !important;
}
.nerd-mode .btn-outline-danger {
    background-color: transparent !important;
    border-color: #800020 !important;
    color: #ff003c !important;
}
.nerd-mode .btn-outline-danger:hover {
    background-color: #1a0005 !important;
    border-color: #ff003c !important;
    color: #ff003c !important;
}
.nerd-mode .btn-outline-info {
    background-color: transparent !important;
    border-color: #006680 !important;
    color: #00e5ff !important;
}
.nerd-mode .btn-outline-info:hover {
    background-color: #001a1a !important;
    border-color: #00e5ff !important;
    color: #00e5ff !important;
}

/* Badges */
.nerd-mode .badge.bg-success { background-color: #003b0d !important; color: #00ff41 !important; border: 1px solid #00ff41; }
.nerd-mode .badge.bg-danger  { background-color: #1a0005 !important; color: #ff003c !important; border: 1px solid #ff003c; }
.nerd-mode .badge.bg-warning { background-color: #1a1500 !important; color: #ffd700 !important; border: 1px solid #ffd700; }
.nerd-mode .badge.bg-primary { background-color: #003b0d !important; color: #00ff41 !important; border: 1px solid #00ff41; }
.nerd-mode .badge.bg-secondary { background-color: #0d200d !important; color: #00b32c !important; border: 1px solid #004d1a; }
.nerd-mode .badge.bg-info    { background-color: #001a1a !important; color: #00e5ff !important; border: 1px solid #00e5ff; }

/* Alerts */
.nerd-mode .alert-success { background-color: rgba(0,255,65,.08) !important; border-color: #00ff41 !important; color: #00ff41 !important; }
.nerd-mode .alert-danger  { background-color: rgba(255,0,60,.08)  !important; border-color: #ff003c !important; color: #ff6680 !important; }
.nerd-mode .alert-warning { background-color: rgba(255,215,0,.08) !important; border-color: #ffd700 !important; color: #ffd700 !important; }
.nerd-mode .alert-info    { background-color: rgba(0,229,255,.06) !important; border-color: #004d1a !important; color: #00b32c !important; }

/* Modals */
.nerd-mode .modal-content {
    background-color: #050f05 !important;
    border: 1px solid #00ff41 !important;
    box-shadow: 0 0 40px rgba(0, 255, 65, 0.25) !important;
}
.nerd-mode .modal-header { border-color: #004d1a !important; }
.nerd-mode .modal-footer { border-color: #004d1a !important; }
.nerd-mode .modal-title  { color: #00ff41 !important; }
.nerd-mode .btn-close { filter: invert(1) sepia(1) saturate(5) hue-rotate(80deg) !important; }

/* Nav tabs */
.nerd-mode .nav-tabs { border-color: #004d1a !important; }
.nerd-mode .nav-tabs .nav-link { color: #00b32c !important; border-color: transparent !important; }
.nerd-mode .nav-tabs .nav-link:hover { color: #00ff41 !important; border-color: #004d1a !important; }
.nerd-mode .nav-tabs .nav-link.active {
    background-color: #050f05 !important;
    border-color: #00ff41 #00ff41 #050f05 !important;
    color: #00ff41 !important;
}

/* Pagination */
.nerd-mode .page-link {
    background-color: #0a1a0a !important;
    border-color: #004d1a !important;
    color: #00b32c !important;
}
.nerd-mode .page-link:hover { background-color: #0d200d !important; color: #00ff41 !important; }
.nerd-mode .page-item.active .page-link {
    background-color: #00ff41 !important;
    border-color: #00ff41 !important;
    color: #000 !important;
}

/* Dropdowns */
.nerd-mode .dropdown-menu {
    background-color: #050f05 !important;
    border-color: #004d1a !important;
}
.nerd-mode .dropdown-item { color: #00b32c !important; }
.nerd-mode .dropdown-item:hover { background-color: #0d200d !important; color: #00ff41 !important; }
.nerd-mode .dropdown-divider { border-color: #004d1a !important; }

/* Pre / Code */
.nerd-mode pre { background-color: #0a1a0a !important; color: #00ff41 !important; border: 1px solid #004d1a; }
.nerd-mode code { color: #39ff14 !important; }

/* DataTables */
.nerd-mode .dataTables_wrapper .dataTables_filter input,
.nerd-mode .dataTables_wrapper .dataTables_length select {
    background-color: #0a1a0a !important;
    border-color: #004d1a !important;
    color: #00ff41 !important;
}
.nerd-mode .dataTables_info,
.nerd-mode .dataTables_length,
.nerd-mode .dataTables_filter { color: #00b32c !important; }

/* Text helpers */
.nerd-mode .text-muted     { color: #00b32c !important; }
.nerd-mode .text-secondary { color: #00b32c !important; }
.nerd-mode h1, .nerd-mode h2, .nerd-mode h3,
.nerd-mode h4, .nerd-mode h5, .nerd-mode h6 { color: #00ff41 !important; }
.nerd-mode hr { border-color: #004d1a !important; }
.nerd-mode .list-group-item {
    background-color: #0a1a0a !important;
    border-color: #004d1a !important;
    color: #00ff41 !important;
}

/* Nerd Live Log nav item */
.nerd-mode .nerd-live-nav { display: block !important; }
.nerd-mode .nerd-live-nav .nav-link { color: #00e5ff !important; }
.nerd-mode .nerd-live-nav .nav-link:hover {
    background-color: #001a1a !important;
    color: #00e5ff !important;
}
.nerd-mode .nerd-live-nav .nav-link.active {
    background-color: #00e5ff !important;
    color: #000 !important;
}

/* Matrix rain canvas */
#nerd-rain {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    pointer-events: none;
    z-index: 9999;
    opacity: 0.10;
}

/* Hacker activation flash overlay */
#nerd-flash {
    position: fixed;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 10000;
    background: rgba(0, 5, 0, 0.88);
    animation: nerd-flash-fade 2s ease-out forwards;
    pointer-events: none;
}
#nerd-flash span {
    color: #00ff41;
    font-family: 'Cascadia Code', 'Fira Code', monospace !important;
    font-size: 1.4rem;
    font-weight: bold;
    letter-spacing: 0.2em;
    text-shadow: 0 0 20px #00ff41, 0 0 50px #00ff41;
    border: 1px solid #00ff41;
    padding: 1.1rem 2.8rem;
    box-shadow: 0 0 40px rgba(0,255,65,.4), inset 0 0 40px rgba(0,255,65,.07);
    animation: nerd-text-flicker 0.12s steps(1) infinite;
}
@keyframes nerd-flash-fade {
    0%   { opacity: 1; }
    65%  { opacity: 1; }
    100% { opacity: 0; }
}
@keyframes nerd-text-flicker {
    0%  { text-shadow: 0 0 20px #00ff41, 0 0 50px #00ff41; }
    50% { text-shadow: 3px 0 18px #00ff41, -2px 0 45px #00ff41; opacity: 0.92; }
}

/* Status badge animations */
@keyframes spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}
.spinner-icon {
    display: inline-block;
    animation: spin 1s linear infinite;
}

/* CVE overview table: dark mode – kein farbiger Hintergrund, nur linker Rahmen */
[data-bs-theme="dark"] .table-danger > td,
[data-bs-theme="dark"] .table-danger > th,
[data-bs-theme="dark"] .table-warning > td,
[data-bs-theme="dark"] .table-warning > th,
[data-bs-theme="dark"] .table-success > td,
[data-bs-theme="dark"] .table-success > th {
    --bs-table-bg: transparent;
    --bs-table-color: var(--bs-body-color);
    background-color: transparent !important;
    color: var(--bs-body-color) !important;
}
[data-bs-theme="dark"] .table-danger > td:first-child   { border-left: none !important; box-shadow: inset 5px 0 0 0 #dc3545; }
[data-bs-theme="dark"] .table-warning > td:first-child  { border-left: none !important; box-shadow: inset 5px 0 0 0 #ffc107; }
[data-bs-theme="dark"] .table-success > td:first-child  { border-left: none !important; box-shadow: inset 5px 0 0 0 #198754; }

@media (prefers-color-scheme: dark) {
    :not([data-bs-theme="light"]) .table-danger > td,
    :not([data-bs-theme="light"]) .table-danger > th,
    :not([data-bs-theme="light"]) .table-warning > td,
    :not([data-bs-theme="light"]) .table-warning > th,
    :not([data-bs-theme="light"]) .table-success > td,
    :not([data-bs-theme="light"]) .table-success > th {
        --bs-table-bg: transparent;
        --bs-table-color: var(--bs-body-color);
        background-color: transparent !important;
        color: var(--bs-body-color) !important;
    }
    :not([data-bs-theme="light"]) .table-danger > td:first-child  { border-left: none !important; box-shadow: inset 5px 0 0 0 #dc3545; }
    :not([data-bs-theme="light"]) .table-warning > td:first-child { border-left: none !important; box-shadow: inset 5px 0 0 0 #ffc107; }
    :not([data-bs-theme="light"]) .table-success > td:first-child { border-left: none !important; box-shadow: inset 5px 0 0 0 #198754; }
}
