/* ── POAM Scanner Styles ─────────────────────────────────────────────────── */

/* ── Design tokens ───────────────────────────────────────────────────────────
   Dark palette is the default. Light counterpart added under [data-theme="light"]
   in a later commit; a toggle in the UI sets that attribute on <html>.
   Semantic names (not colour values) so the light theme can diverge where it
   needs to without forcing a rename churn. */
:root {
  /* ── Surfaces ──────────────────────────────────────────────────────────── */
  --bg-page: #0f172a;
  --bg-page-grad-from: #060b18;
  --bg-page-grad-mid: #0c1a2e;
  --bg-surface: #1e293b;
  --bg-input: #0f172a;
  --bg-login-error: #1e1e2e;

  /* Low-opacity surface overlays (row hovers, action card hovers, etc.) */
  --bg-surface-alpha: #1e293b40;
  --bg-surface-alpha-mid: #1e293b80;
  --bg-input-alpha: #0f172a80;

  /* ── Borders ───────────────────────────────────────────────────────────── */
  --border-default: #334155;
  --border-subtle: #1e293b;
  --border-strong: #475569;

  /* ── Text ──────────────────────────────────────────────────────────────── */
  --text-primary: #e2e8f0;
  --text-bright: #f1f5f9;
  --text-secondary: #cbd5e1;
  --text-muted: #94a3b8;
  --text-subtle: #64748b;
  --text-faint: #475569;
  --text-on-accent: #ffffff;

  /* ── Accent (primary action — blue) ────────────────────────────────────── */
  --accent: #3b82f6;
  --accent-hover: #2563eb;
  --accent-link: #60a5fa;
  --accent-text-light: #93c5fd;
  --accent-text-lighter: #dbeafe;
  --accent-bg-subtle: #1e3a5f;
  --accent-glow: rgba(59,130,246,.15);
  --accent-tag-bg: rgba(59,130,246,.16);
  --accent-tag-border: rgba(59,130,246,.35);
  --accent-hint-bg: #1e3a5f22;
  --accent-hint-bg-weak: #1e3a5f0a;

  /* ── Danger (red) ──────────────────────────────────────────────────────── */
  --danger: #ef4444;
  --danger-hover: #dc2626;
  --danger-text: #fca5a5;
  --danger-bg: #7f1d1d;
  --danger-bg-tint: #7f1d1d20;
  --danger-bg-alpha: #7f1d1d22;
  --danger-bg-alpha-strong: #7f1d1d33;
  --danger-bg-alpha-weak: #7f1d1d0a;
  --danger-tag-bg: rgba(239,68,68,.18);

  /* ── Warning (amber) ───────────────────────────────────────────────────── */
  --warning: #f59e0b;
  --warning-text: #fcd34d;
  --warning-text-alt: #fbbf24;
  --warning-bg: #78350f;
  --warning-bg-alt: #713f12;
  --warning-bg-alpha: #78350f22;
  --warning-bg-alpha-strong: #78350f33;
  --warning-bg-alpha-weak: #78350f0a;
  --warning-bg-alpha-mid: #78350f44;
  --warning-border-alpha: #f59e0b44;
  --warning-tag-bg: rgba(245,158,11,.16);
  --warning-tag-bg-strong: rgba(245,158,11,.18);
  --warning-tag-border: rgba(245,158,11,.35);

  /* ── Success (green) ───────────────────────────────────────────────────── */
  --success: #22c55e;
  --success-hover: #16a34a;
  --success-text: #86efac;
  --success-bg: #14532d;
  --success-bg-alpha: #14532d22;
  --success-bg-alpha-strong: #14532d33;
  --success-bg-alpha-mid: #14532d44;
  --success-border-alpha: #22c55e44;
  --success-tag-bg: rgba(34,197,94,.16);
  --success-tag-bg-strong: rgba(34,197,94,.18);
  --success-tag-border: rgba(34,197,94,.35);

  /* ── Awaiting / purple ─────────────────────────────────────────────────── */
  --purple: #a78bfa;
  --purple-alt: #c084fc;
  --purple-text: #d8b4fe;
  --purple-bg: #581c87;
  --purple-bg-deep: #3b0764;
  --purple-bg-alpha: #3b076422;
  --purple-border: #6d28d9;

  /* ── Owner / indigo ────────────────────────────────────────────────────── */
  --indigo-text: #a5b4fc;
  --indigo-bg: #312e81;

  /* ── Neutral (N/A, skipped) ────────────────────────────────────────────── */
  --neutral-bg: #374151;
  --neutral-text: #9ca3af;
  --neutral-text-alt: #d1d5db;
  --neutral-tag-bg: rgba(100,116,139,.18);
  --neutral-tag-border: rgba(100,116,139,.35);

  /* ── Diagnostics panel (stone — deliberately warmer to stand out) ──────── */
  --diag-bg: #1c1917;
  --diag-bg-deep: #0c0a09;
  --diag-border: #292524;
  --diag-text: #e7e5e4;
  --diag-key: #78716c;
  --diag-subtle: #57534e;

  /* ── Scrims & shadows ──────────────────────────────────────────────────── */
  --scrim: rgba(0,0,0,.7);
  --scrim-light: rgba(0,0,0,.4);
  --scrim-heavy: #000000cc;
  --shadow-sidebar: rgba(0,0,0,.35);
}

/* ── Light theme ─────────────────────────────────────────────────────────────
   Applied when either:
     • the JS toggle sets html[data-theme="light"] (explicit pick), OR
     • the OS is set to Light and no explicit pick exists — handled by the
       @media block below so theming still works if JS is disabled.
   The explicit [data-theme="dark"] / [data-theme="light"] selectors below
   each have higher specificity than :root inside @media, so an explicit
   pick always overrides the OS default. */

@media (prefers-color-scheme: light) {
  :root {
    /* Surfaces */
    --bg-page: #f8fafc;
    --bg-page-grad-from: #e2e8f0;
    --bg-page-grad-mid: #cbd5e1;
    --bg-surface: #ffffff;
    --bg-input: #ffffff;
    --bg-login-error: #fef2f2;
    --bg-surface-alpha: rgba(15,23,42,.04);
    --bg-surface-alpha-mid: rgba(15,23,42,.08);
    --bg-input-alpha: rgba(15,23,42,.04);

    /* Borders */
    --border-default: #e2e8f0;
    --border-subtle: #f1f5f9;
    --border-strong: #cbd5e1;

    /* Text */
    --text-primary: #0f172a;
    --text-bright: #020617;
    --text-secondary: #334155;
    --text-muted: #64748b;
    --text-subtle: #94a3b8;
    --text-faint: #cbd5e1;
    --text-on-accent: #ffffff;

    /* Accent (blue) — richer on white for contrast */
    --accent: #2563eb;
    --accent-hover: #1d4ed8;
    --accent-link: #2563eb;
    --accent-text-light: #1e40af;
    --accent-text-lighter: #1e3a8a;
    --accent-bg-subtle: #dbeafe;
    --accent-glow: rgba(37,99,235,.18);
    --accent-tag-bg: rgba(37,99,235,.1);
    --accent-tag-border: rgba(37,99,235,.45);
    --accent-hint-bg: #eff6ff;
    --accent-hint-bg-weak: #f0f9ff;

    /* Danger — pale backgrounds with dark text (inverse of dark theme) */
    --danger: #dc2626;
    --danger-hover: #b91c1c;
    --danger-text: #991b1b;
    --danger-bg: #fee2e2;
    --danger-bg-tint: #fef2f2;
    --danger-bg-alpha: #fef2f2;
    --danger-bg-alpha-strong: #fee2e2;
    --danger-bg-alpha-weak: #fef2f2;
    --danger-tag-bg: rgba(220,38,38,.12);

    /* Warning (amber) */
    --warning: #d97706;
    --warning-text: #92400e;
    --warning-text-alt: #78350f;
    --warning-bg: #fef3c7;
    --warning-bg-alt: #fde68a;
    --warning-bg-alpha: #fef3c7;
    --warning-bg-alpha-strong: #fde68a;
    --warning-bg-alpha-weak: #fffbeb;
    --warning-bg-alpha-mid: #fde68a;
    --warning-border-alpha: #fbbf24;
    --warning-tag-bg: rgba(217,119,6,.12);
    --warning-tag-bg-strong: rgba(217,119,6,.18);
    --warning-tag-border: rgba(217,119,6,.45);

    /* Success (green) */
    --success: #16a34a;
    --success-hover: #15803d;
    --success-text: #166534;
    --success-bg: #dcfce7;
    --success-bg-alpha: #f0fdf4;
    --success-bg-alpha-strong: #dcfce7;
    --success-bg-alpha-mid: #bbf7d0;
    --success-border-alpha: #22c55e;
    --success-tag-bg: rgba(22,163,74,.12);
    --success-tag-bg-strong: rgba(22,163,74,.18);
    --success-tag-border: rgba(22,163,74,.45);

    /* Purple (awaiting) */
    --purple: #7c3aed;
    --purple-alt: #6d28d9;
    --purple-text: #5b21b6;
    --purple-bg: #ede9fe;
    --purple-bg-deep: #ddd6fe;
    --purple-bg-alpha: #f5f3ff;
    --purple-border: #a78bfa;

    /* Indigo (owner) */
    --indigo-text: #3730a3;
    --indigo-bg: #e0e7ff;

    /* Neutral */
    --neutral-bg: #f1f5f9;
    --neutral-text: #475569;
    --neutral-text-alt: #334155;
    --neutral-tag-bg: rgba(100,116,139,.12);
    --neutral-tag-border: rgba(100,116,139,.35);

    /* Diagnostics (stone — still warmer than slate to stand apart) */
    --diag-bg: #fafaf9;
    --diag-bg-deep: #f5f5f4;
    --diag-border: #e7e5e4;
    --diag-text: #1c1917;
    --diag-key: #78716c;
    --diag-subtle: #a8a29e;

    /* Scrims & shadows — darker & more opaque on light bg */
    --scrim: rgba(15,23,42,.4);
    --scrim-light: rgba(15,23,42,.25);
    --scrim-heavy: rgba(15,23,42,.55);
    --shadow-sidebar: rgba(15,23,42,.15);
  }
}

/* Explicit overrides — always win over the @media default above, so the user's
   pick in the toggle always takes precedence over the OS preference. */
[data-theme="dark"] {
  /* Dark is the :root default; explicit selector here locks it in so the
     user-pick always beats @media (prefers-color-scheme: light). Re-declare
     the dark values so specificity is unambiguous. */
  --bg-page: #0f172a;
  --bg-page-grad-from: #060b18;
  --bg-page-grad-mid: #0c1a2e;
  --bg-surface: #1e293b;
  --bg-input: #0f172a;
  --bg-login-error: #1e1e2e;
  --bg-surface-alpha: #1e293b40;
  --bg-surface-alpha-mid: #1e293b80;
  --bg-input-alpha: #0f172a80;
  --border-default: #334155;
  --border-subtle: #1e293b;
  --border-strong: #475569;
  --text-primary: #e2e8f0;
  --text-bright: #f1f5f9;
  --text-secondary: #cbd5e1;
  --text-muted: #94a3b8;
  --text-subtle: #64748b;
  --text-faint: #475569;
  --text-on-accent: #ffffff;
  --accent: #3b82f6;
  --accent-hover: #2563eb;
  --accent-link: #60a5fa;
  --accent-text-light: #93c5fd;
  --accent-text-lighter: #dbeafe;
  --accent-bg-subtle: #1e3a5f;
  --accent-glow: rgba(59,130,246,.15);
  --accent-tag-bg: rgba(59,130,246,.16);
  --accent-tag-border: rgba(59,130,246,.35);
  --accent-hint-bg: #1e3a5f22;
  --accent-hint-bg-weak: #1e3a5f0a;
  --danger: #ef4444;
  --danger-hover: #dc2626;
  --danger-text: #fca5a5;
  --danger-bg: #7f1d1d;
  --danger-bg-tint: #7f1d1d20;
  --danger-bg-alpha: #7f1d1d22;
  --danger-bg-alpha-strong: #7f1d1d33;
  --danger-bg-alpha-weak: #7f1d1d0a;
  --danger-tag-bg: rgba(239,68,68,.18);
  --warning: #f59e0b;
  --warning-text: #fcd34d;
  --warning-text-alt: #fbbf24;
  --warning-bg: #78350f;
  --warning-bg-alt: #713f12;
  --warning-bg-alpha: #78350f22;
  --warning-bg-alpha-strong: #78350f33;
  --warning-bg-alpha-weak: #78350f0a;
  --warning-bg-alpha-mid: #78350f44;
  --warning-border-alpha: #f59e0b44;
  --warning-tag-bg: rgba(245,158,11,.16);
  --warning-tag-bg-strong: rgba(245,158,11,.18);
  --warning-tag-border: rgba(245,158,11,.35);
  --success: #22c55e;
  --success-hover: #16a34a;
  --success-text: #86efac;
  --success-bg: #14532d;
  --success-bg-alpha: #14532d22;
  --success-bg-alpha-strong: #14532d33;
  --success-bg-alpha-mid: #14532d44;
  --success-border-alpha: #22c55e44;
  --success-tag-bg: rgba(34,197,94,.16);
  --success-tag-bg-strong: rgba(34,197,94,.18);
  --success-tag-border: rgba(34,197,94,.35);
  --purple: #a78bfa;
  --purple-alt: #c084fc;
  --purple-text: #d8b4fe;
  --purple-bg: #581c87;
  --purple-bg-deep: #3b0764;
  --purple-bg-alpha: #3b076422;
  --purple-border: #6d28d9;
  --indigo-text: #a5b4fc;
  --indigo-bg: #312e81;
  --neutral-bg: #374151;
  --neutral-text: #9ca3af;
  --neutral-text-alt: #d1d5db;
  --neutral-tag-bg: rgba(100,116,139,.18);
  --neutral-tag-border: rgba(100,116,139,.35);
  --diag-bg: #1c1917;
  --diag-bg-deep: #0c0a09;
  --diag-border: #292524;
  --diag-text: #e7e5e4;
  --diag-key: #78716c;
  --diag-subtle: #57534e;
  --scrim: rgba(0,0,0,.7);
  --scrim-light: rgba(0,0,0,.4);
  --scrim-heavy: #000000cc;
  --shadow-sidebar: rgba(0,0,0,.35);
}

[data-theme="light"] {
  --bg-page: #f8fafc;
  --bg-page-grad-from: #e2e8f0;
  --bg-page-grad-mid: #cbd5e1;
  --bg-surface: #ffffff;
  --bg-input: #ffffff;
  --bg-login-error: #fef2f2;
  --bg-surface-alpha: rgba(15,23,42,.04);
  --bg-surface-alpha-mid: rgba(15,23,42,.08);
  --bg-input-alpha: rgba(15,23,42,.04);
  --border-default: #e2e8f0;
  --border-subtle: #f1f5f9;
  --border-strong: #cbd5e1;
  --text-primary: #0f172a;
  --text-bright: #020617;
  --text-secondary: #334155;
  --text-muted: #64748b;
  --text-subtle: #94a3b8;
  --text-faint: #cbd5e1;
  --text-on-accent: #ffffff;
  --accent: #2563eb;
  --accent-hover: #1d4ed8;
  --accent-link: #2563eb;
  --accent-text-light: #1e40af;
  --accent-text-lighter: #1e3a8a;
  --accent-bg-subtle: #dbeafe;
  --accent-glow: rgba(37,99,235,.18);
  --accent-tag-bg: rgba(37,99,235,.1);
  --accent-tag-border: rgba(37,99,235,.45);
  --accent-hint-bg: #eff6ff;
  --accent-hint-bg-weak: #f0f9ff;
  --danger: #dc2626;
  --danger-hover: #b91c1c;
  --danger-text: #991b1b;
  --danger-bg: #fee2e2;
  --danger-bg-tint: #fef2f2;
  --danger-bg-alpha: #fef2f2;
  --danger-bg-alpha-strong: #fee2e2;
  --danger-bg-alpha-weak: #fef2f2;
  --danger-tag-bg: rgba(220,38,38,.12);
  --warning: #d97706;
  --warning-text: #92400e;
  --warning-text-alt: #78350f;
  --warning-bg: #fef3c7;
  --warning-bg-alt: #fde68a;
  --warning-bg-alpha: #fef3c7;
  --warning-bg-alpha-strong: #fde68a;
  --warning-bg-alpha-weak: #fffbeb;
  --warning-bg-alpha-mid: #fde68a;
  --warning-border-alpha: #fbbf24;
  --warning-tag-bg: rgba(217,119,6,.12);
  --warning-tag-bg-strong: rgba(217,119,6,.18);
  --warning-tag-border: rgba(217,119,6,.45);
  --success: #16a34a;
  --success-hover: #15803d;
  --success-text: #166534;
  --success-bg: #dcfce7;
  --success-bg-alpha: #f0fdf4;
  --success-bg-alpha-strong: #dcfce7;
  --success-bg-alpha-mid: #bbf7d0;
  --success-border-alpha: #22c55e;
  --success-tag-bg: rgba(22,163,74,.12);
  --success-tag-bg-strong: rgba(22,163,74,.18);
  --success-tag-border: rgba(22,163,74,.45);
  --purple: #7c3aed;
  --purple-alt: #6d28d9;
  --purple-text: #5b21b6;
  --purple-bg: #ede9fe;
  --purple-bg-deep: #ddd6fe;
  --purple-bg-alpha: #f5f3ff;
  --purple-border: #a78bfa;
  --indigo-text: #3730a3;
  --indigo-bg: #e0e7ff;
  --neutral-bg: #f1f5f9;
  --neutral-text: #475569;
  --neutral-text-alt: #334155;
  --neutral-tag-bg: rgba(100,116,139,.12);
  --neutral-tag-border: rgba(100,116,139,.35);
  --diag-bg: #fafaf9;
  --diag-bg-deep: #f5f5f4;
  --diag-border: #e7e5e4;
  --diag-text: #1c1917;
  --diag-key: #78716c;
  --diag-subtle: #a8a29e;
  --scrim: rgba(15,23,42,.4);
  --scrim-light: rgba(15,23,42,.25);
  --scrim-heavy: rgba(15,23,42,.55);
  --shadow-sidebar: rgba(15,23,42,.15);
}


*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:var(--bg-page);color:var(--text-primary);min-height:100vh}
a{color:var(--accent-link);text-decoration:none}a:hover{text-decoration:underline}

/* ── Login ─────────────────────────────────────────────────────────────── */
#login-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,var(--bg-page-grad-from),var(--bg-page-grad-mid),var(--bg-page-grad-from))}
.login-card{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:16px;padding:48px;text-align:center;max-width:420px;width:90%}
.login-card .logo{font-size:48px;color:var(--accent);margin-bottom:16px}
.login-card h1{font-size:24px;font-weight:700;margin-bottom:8px}
.login-card p{color:var(--text-muted);font-size:14px;margin-bottom:24px}
.login-card .dn{font-size:12px;color:var(--text-subtle);margin-top:16px}
.login-card .dn strong{color:var(--accent)}
.login-error{color:var(--danger);font-size:13px;margin-top:12px;display:none}
#google-btn{display:flex;justify-content:center}

/* ── Layout ────────────────────────────────────────────────────────────── */
#app{display:none}
.header{background:linear-gradient(135deg,var(--bg-surface),var(--bg-page));border-bottom:1px solid var(--border-default);padding:12px 24px;display:flex;align-items:center;gap:16px}
.header h1{font-size:18px;font-weight:700;cursor:pointer}
.header h1:hover{color:var(--accent-link)}
.header-nav{display:flex;gap:4px;flex:1;margin-left:16px}
.header-nav a{padding:6px 14px;border-radius:6px;font-size:13px;color:var(--text-muted);transition:.2s;white-space:nowrap}
.header-nav a:hover{color:var(--text-bright);background:var(--border-default);text-decoration:none}
.header-nav a.active{background:var(--accent);color:white}

/* ── Mobile nav drawer base styles ─────────────────────────────────────── */
/* These MUST come before the @media(max-width:768px) block further down
   in this file — the mobile block overrides display:none with
   display:inline-flex/block, and CSS resolves same-specificity conflicts
   by source order. Moving these rules after the media query (as in PR #3)
   silently hides the hamburger on mobile. */
.nav-toggle{display:none;background:none;border:none;color:var(--text-muted);padding:6px 10px;border-radius:6px;cursor:pointer;font-size:18px;line-height:1;transition:.15s}
.nav-toggle:hover{color:var(--text-bright);background:var(--border-default)}
.drawer-scrim{display:none}
.user-info{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text-muted)}
.user-info img{width:28px;height:28px;border-radius:50%;border:2px solid var(--border-default)}

.user-info .lo{cursor:pointer;color:var(--text-subtle);padding:4px 8px;border-radius:4px;font-size:12px;border:1px solid var(--border-default);background:none}
.user-info .lo:hover{color:var(--danger);border-color:var(--danger)}
.main{padding:24px;max-width:1400px;margin:0 auto}

/* ── Page Header ───────────────────────────────────────────────────────── */
.page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;gap:16px}
.page-header h1{font-size:22px;font-weight:700}
.page-header-right{display:flex;gap:8px;align-items:center}
.breadcrumbs{font-size:12px;color:var(--text-subtle);margin-bottom:4px}
.bc-link{color:var(--accent-link)}.bc-link:hover{text-decoration:underline}
.bc-sep{margin:0 4px;color:var(--border-strong)}
.bc-current{color:var(--text-muted)}

/* ── Buttons ───────────────────────────────────────────────────────────── */
.btn{background:var(--accent);color:white;border:none;padding:10px 24px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;transition:.2s;display:inline-flex;align-items:center;gap:6px}
.btn:hover{background:var(--accent-hover)}.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-sm{padding:6px 16px;font-size:13px}
.btn-danger{background:var(--danger)}.btn-danger:hover{background:var(--danger-hover)}
.btn-outline{background:none;border:1px solid var(--border-default);color:var(--text-muted)}.btn-outline:hover{border-color:var(--accent);color:var(--text-bright);background:var(--bg-surface)}
.btn-success{background:var(--success)}.btn-success:hover{background:var(--success-hover)}

/* ── Cards & Grids ─────────────────────────────────────────────────────── */
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px;margin-bottom:24px}
.card{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:12px;padding:20px;transition:.2s;cursor:pointer}
.card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 4px 12px var(--accent-glow)}
.card h3{font-size:16px;font-weight:600;margin-bottom:6px;display:flex;align-items:center;gap:8px}
.card .meta{font-size:12px;color:var(--text-subtle);margin-top:8px;display:flex;gap:12px;flex-wrap:wrap}
.card .meta span{display:flex;align-items:center;gap:4px}

/* ── Stats ──────────────────────────────────────────────────────────────── */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:24px}
.stat{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:12px;padding:16px;text-align:center}
.stat .num{font-size:28px;font-weight:800}.stat .label{font-size:11px;color:var(--text-muted);margin-top:4px;text-transform:uppercase;letter-spacing:1px}
.stat.high .num{color:var(--danger)}.stat.med .num{color:var(--warning)}.stat.low .num{color:var(--success)}

/* ── Tables ─────────────────────────────────────────────────────────────── */
.table-wrap{overflow-x:auto;border-radius:12px;border:1px solid var(--border-default)}
table{width:100%;border-collapse:collapse;background:var(--bg-surface)}
th{background:var(--bg-page);padding:12px 16px;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--text-subtle);position:sticky;top:0}
td{padding:10px 16px;border-top:1px solid var(--bg-page);font-size:13px;vertical-align:top}
tr:hover td{background:var(--bg-surface-alpha)}
tr.clickable{cursor:pointer}tr.clickable:hover td{background:var(--bg-surface-alpha-mid)}

/* ── Severity / Status Badges ──────────────────────────────────────────── */
.sev{padding:2px 8px;border-radius:4px;font-size:11px;font-weight:700;text-transform:uppercase}
.sev-HIGH{background:var(--danger-bg);color:var(--danger-text)}.sev-MEDIUM{background:var(--warning-bg);color:var(--warning-text)}.sev-LOW{background:var(--success-bg);color:var(--success-text)}.sev-UNKNOWN{background:var(--neutral-bg);color:var(--neutral-text)}
.status-badge{padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600;white-space:nowrap}
.st-ongoing{background:var(--warning-bg);color:var(--warning-text)}.st-remediated{background:var(--success-bg);color:var(--success-text)}
.st-accepted{background:var(--accent-bg-subtle);color:var(--accent-text-light)}.st-awaiting{background:var(--purple-bg);color:var(--purple-text)}
.st-infosec{background:var(--warning-bg-alt);color:var(--warning-text-alt)}.st-na{background:var(--neutral-bg);color:var(--neutral-text)}
.st-pass{background:var(--success-bg);color:var(--success-text)}.st-fail{background:var(--danger-bg);color:var(--danger-text)}
.st-error{background:var(--danger-bg);color:var(--danger-text)}.st-skipped{background:var(--neutral-bg);color:var(--neutral-text)}
.st-running{background:var(--accent-bg-subtle);color:var(--accent-text-light)}
.owner-badge{padding:2px 8px;border-radius:4px;font-size:11px;background:var(--indigo-bg);color:var(--indigo-text)}
.plat-badge{padding:1px 6px;border-radius:3px;font-size:10px;background:var(--accent-bg-subtle);color:var(--accent-text-light);margin-right:2px}
/* Environment tag: classifies a scan target's branch or endpoint as prod/staging/dev/other. */
.env-tag{display:inline-block;padding:1px 7px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;line-height:1.5;white-space:nowrap;border:1px solid transparent;vertical-align:middle}
.env-tag-prod{background:var(--success-tag-bg);color:var(--success-text);border-color:var(--success-tag-border)}
.env-tag-staging{background:var(--warning-tag-bg);color:var(--warning-text);border-color:var(--warning-tag-border)}
.env-tag-dev{background:var(--accent-tag-bg);color:var(--accent-text-light);border-color:var(--accent-tag-border)}
.env-tag-other{background:var(--neutral-tag-bg);color:var(--text-secondary);border-color:var(--neutral-tag-border);text-transform:none;letter-spacing:0}
.scan-dot{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:4px}
.dot-pass{background:var(--success)}.dot-fail{background:var(--danger)}.dot-error{background:var(--warning)}.dot-skip{background:var(--text-subtle)}

/* ── Dashboard Sections ────────────────────────────────────────────────── */
.dash-section{margin-bottom:16px;background:var(--bg-surface);border:1px solid var(--border-default);border-radius:12px;overflow:hidden}
.dash-section-header{padding:16px 20px;cursor:pointer;display:flex;align-items:center;gap:12px;user-select:none}
.dash-section-header:hover{background:var(--border-default)}
.dash-section-title{font-size:15px;font-weight:600;flex:1}
.dash-section-count{background:var(--accent);color:white;padding:2px 10px;border-radius:12px;font-size:12px;font-weight:700}
.dash-section-chevron{color:var(--text-subtle);transition:transform .2s}
.dash-section.collapsed .dash-section-body{display:none}
.dash-section.collapsed .dash-section-chevron{transform:rotate(-90deg)}
.dash-section-body{padding:0 20px 16px}

/* ── Action Cards ──────────────────────────────────────────────────────── */
.action-card{background:var(--bg-page);border:1px solid var(--border-default);border-radius:8px;padding:14px;margin-bottom:8px;cursor:pointer;transition:.2s}
.action-card:hover{border-color:var(--accent);background:var(--bg-input-alpha)}
.ac-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.ac-title{font-size:14px;font-weight:600;flex:1;min-width:200px}
.ac-targets{display:flex;flex-wrap:wrap;gap:6px;font-size:12px;color:var(--text-muted);margin-bottom:4px}
.ac-target{display:flex;align-items:center;gap:2px}
.ac-platforms{margin-bottom:6px}
.ac-response{font-size:12px;color:var(--text-muted);margin-top:4px;line-height:1.4;max-height:40px;overflow:hidden}
.ac-awaiting{font-size:12px;color:var(--purple-text);margin-top:4px}

/* ── Narrative ─────────────────────────────────────────────────────────── */
.narrative{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:12px;padding:20px;margin-bottom:24px;font-size:14px;line-height:1.6;color:var(--text-secondary)}

/* ── Tabs ───────────────────────────────────────────────────────────────── */
.tabs{display:flex;gap:4px;margin-bottom:20px;overflow-x:auto;padding-bottom:4px}
.tab{padding:8px 20px;border-radius:6px;cursor:pointer;font-size:14px;color:var(--text-muted);transition:.2s;border:none;background:none;white-space:nowrap}
.tab:hover{color:var(--text-bright);background:var(--border-default)}.tab.active{background:var(--accent);color:white}
.tab-badge{background:var(--warning);color:var(--bg-page);padding:1px 6px;border-radius:8px;font-size:10px;font-weight:700;margin-left:4px}

/* ── Forms ──────────────────────────────────────────────────────────────── */
.form-group{margin-bottom:16px}
.form-group label{display:block;font-size:13px;color:var(--text-muted);margin-bottom:4px;font-weight:500}
.form-group input,.form-group select,.form-group textarea{width:100%;background:var(--bg-page);border:1px solid var(--border-default);color:var(--text-primary);padding:10px 12px;border-radius:6px;font-size:14px}
.form-group textarea{min-height:80px;resize:vertical}
.form-group input[type="checkbox"],.form-group input[type="radio"]{width:auto;padding:0;margin:0}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--accent)}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.filters{display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.filters select,.filters input{background:var(--bg-surface);border:1px solid var(--border-default);color:var(--text-primary);padding:8px 12px;border-radius:6px;font-size:14px}
.filters input{flex:1;min-width:200px}

/* ── Modal ──────────────────────────────────────────────────────────────── */
#modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--scrim);display:flex;align-items:center;justify-content:center;z-index:1000}
.modal{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:16px;width:90%;max-width:600px;max-height:90vh;overflow-y:auto}
.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid var(--border-default)}
.modal-header h2{font-size:18px}.modal-close{background:none;border:none;color:var(--text-muted);font-size:24px;cursor:pointer}
.modal-body{padding:24px}.modal-footer{padding:16px 24px;border-top:1px solid var(--border-default);display:flex;justify-content:flex-end;gap:8px}

/* ── Toast ──────────────────────────────────────────────────────────────── */
.toast{position:fixed;bottom:20px;right:20px;padding:12px 20px;border-radius:8px;font-size:14px;z-index:2000;transform:translateY(100px);opacity:0;transition:.3s}
.toast.show{transform:translateY(0);opacity:1}
.toast-info{background:var(--accent-bg-subtle);color:var(--accent-text-light);border:1px solid var(--accent)}
.toast-success{background:var(--success-bg);color:var(--success-text);border:1px solid var(--success)}
.toast-error{background:var(--danger-bg);color:var(--danger-text);border:1px solid var(--danger)}

/* ── Loading / Empty ───────────────────────────────────────────────────── */
.loading{text-align:center;padding:60px;color:var(--text-muted)}
.spinner{width:32px;height:32px;border:3px solid var(--border-default);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 12px}
@keyframes spin{to{transform:rotate(360deg)}}
.empty-state{text-align:center;padding:60px;color:var(--text-subtle)}
.empty-state i{font-size:48px;margin-bottom:16px;display:block}
.empty-state .btn{margin-top:16px}
.error-msg{background:var(--danger-bg);border:1px solid var(--danger);color:var(--danger-text);padding:12px 16px;border-radius:8px;font-size:13px;margin-bottom:16px}

/* ── Progress bar ──────────────────────────────────────────────────────── */
.progress-bar{background:var(--bg-page);border-radius:8px;overflow:hidden;height:8px;margin:8px 0}
.progress-fill{background:var(--accent);height:100%;transition:width .3s;border-radius:8px}

/* ── Import preview ────────────────────────────────────────────────────── */
.import-preview{max-height:60vh;overflow-y:auto}
.import-row{display:flex;align-items:center;gap:12px;padding:8px;border-bottom:1px solid var(--bg-page);font-size:13px}
.import-row.duplicate{opacity:.5}
.import-row input[type=checkbox]{accent-color:var(--accent)}

/* ── Responsive ────────────────────────────────────────────────────────── */
@media(max-width:768px){
  /* Header stays a single row: hamburger + logo + (flex-spacer) + profile.
     Scan Now button remains inline on the right when visible. */
  .header{flex-wrap:nowrap;gap:8px;padding:10px 14px}
  .header h1{font-size:16px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

  /* Show the hamburger. */
  .nav-toggle{display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:40px}

  /* Transform the inline nav into a slide-in drawer. Fixed-position, off-screen
     by default, comes in from the left. flex:1 from desktop is cancelled. */
  .header-nav{
    position:fixed;top:0;left:0;bottom:0;
    width:min(280px,80vw);
    flex:0 0 auto;
    margin:0;
    flex-direction:column;
    gap:2px;
    padding:16px 12px;
    background:var(--bg-surface);
    border-right:1px solid var(--border-default);
    box-shadow:4px 0 24px var(--scrim-light);
    transform:translateX(-100%);
    transition:transform .25s ease;
    z-index:950;
    overflow-y:auto;
    overflow-x:hidden;
  }
  body.drawer-open .header-nav{transform:translateX(0)}

  /* Bigger, tappable rows inside the drawer. */
  .header-nav a{
    padding:14px 16px;
    font-size:15px;
    border-radius:8px;
    display:flex;align-items:center;gap:12px;
    white-space:normal;
  }
  .header-nav a i{width:20px;text-align:center;font-size:16px}

  /* Scrim. display:block + transition in when drawer-open. */
  .drawer-scrim{
    display:block;
    position:fixed;inset:0;
    background:var(--scrim-light);
    opacity:0;
    pointer-events:none;
    transition:opacity .25s ease;
    z-index:900;
  }
  body.drawer-open .drawer-scrim{opacity:1;pointer-events:auto}

  /* Lock body scroll while the drawer is open. */
  body.drawer-open{overflow:hidden}

  /* Remaining pre-existing mobile adjustments (grids/page-header). */
  .card-grid{grid-template-columns:1fr}
  .form-row{grid-template-columns:1fr}
  .page-header{flex-direction:column}
}
.login-error code{background:var(--bg-page);color:var(--accent-text-light);padding:2px 6px;border-radius:4px;font-size:12px;word-break:break-all}
.login-error a{color:var(--accent-link)}
.login-error{line-height:1.6;text-align:left;padding:12px 16px;background:var(--bg-login-error);border:1px solid var(--danger-bg);border-radius:8px}

/* ── POAM Sidebar (catalog quick-view) ──────────────────────────────────── */
.poam-sidebar-backdrop{position:fixed;inset:0;background:var(--scrim-light);z-index:900;opacity:0;transition:opacity .25s ease}
.poam-sidebar-backdrop.open{opacity:1}
.poam-sidebar{position:fixed;top:0;right:0;bottom:0;width:min(520px,92vw);background:var(--bg-surface);border-left:1px solid var(--border-default);box-shadow:-8px 0 24px var(--shadow-sidebar);z-index:950;transform:translateX(100%);transition:transform .25s ease;display:flex;flex-direction:column}
.poam-sidebar.open{transform:translateX(0)}
.poam-sidebar-inner{display:flex;flex-direction:column;height:100%;overflow:hidden}
.poam-sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border-default);background:var(--bg-page)}
.poam-sidebar-header .ps-nav{display:flex;align-items:center;gap:8px}
.poam-sidebar-header .ps-nav .btn[disabled]{opacity:.4;cursor:not-allowed}
.ps-counter{font-size:12px;color:var(--text-muted);min-width:70px;text-align:center}
.ps-actions{display:flex;gap:6px}
.poam-sidebar-body{padding:20px;overflow-y:auto;flex:1}
.ps-section{margin-bottom:18px}
.ps-label{font-size:11px;text-transform:uppercase;letter-spacing:.8px;color:var(--text-subtle);margin-bottom:6px;font-weight:600}
.ps-text{font-size:13px;color:var(--text-secondary);line-height:1.55;white-space:pre-wrap}
.ps-meta{font-size:12.5px;color:var(--text-secondary);line-height:1.9}
.ps-meta span{color:var(--text-subtle);margin-right:4px}
.ps-assigns{display:flex;flex-direction:column;gap:6px}
.ps-assign-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;background:var(--bg-page);border:1px solid var(--border-default);border-radius:6px;font-size:13px}

/* Active row highlight in the catalog table while sidebar is open */
.poam-row.active{background:var(--accent-bg-subtle) !important;box-shadow:inset 3px 0 0 var(--accent)}

@media(max-width:600px){
  .poam-sidebar{width:100vw}
}

/* ── Vulnerability Dashboard ────────────────────────────────────────────── */
.view-toggle{display:inline-flex;background:var(--bg-page);border:1px solid var(--border-default);border-radius:8px;padding:2px;margin-right:12px}
.view-toggle .toggle-btn{background:none;border:none;color:var(--text-muted);padding:6px 14px;font-size:13px;font-weight:500;border-radius:6px;cursor:pointer;transition:all .15s ease}
.view-toggle .toggle-btn:hover{color:var(--text-primary)}
.view-toggle .toggle-btn.active{background:var(--accent);color:#fff}
.gen-at{font-size:12px;color:var(--text-subtle);display:inline-flex;align-items:center;gap:6px}

/* Project tile grid */
.project-tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px;margin-bottom:16px}
.project-tile{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:12px;padding:16px;cursor:pointer;transition:border-color .15s ease,transform .15s ease,box-shadow .15s ease;display:flex;flex-direction:column;gap:12px}
.project-tile:hover{border-color:var(--accent);transform:translateY(-1px);box-shadow:0 4px 16px var(--accent-glow)}
.pt-header{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.pt-name{font-size:16px;font-weight:700;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pt-meta{font-size:11px;color:var(--text-subtle);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}

/* Severity chips (the big H/M/L cells inside each tile) */
.pt-sev-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.pt-sev-row:has(.sev-chip:nth-child(4)){grid-template-columns:repeat(4,1fr)}
.sev-chip{background:var(--bg-page);border:1px solid var(--border-default);border-radius:8px;padding:10px 8px;text-align:center}
.sev-chip-num{font-size:22px;font-weight:800;line-height:1}
.sev-chip-label{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-subtle);margin-top:4px}
.sev-chip.sev-high .sev-chip-num{color:var(--danger)}
.sev-chip.sev-med  .sev-chip-num{color:var(--warning)}
.sev-chip.sev-low  .sev-chip-num{color:var(--success)}
.sev-chip.sev-unk  .sev-chip-num{color:var(--text-muted)}
.sev-chip.empty .sev-chip-num{color:var(--border-default)}

/* Divider */
.pt-divider{height:1px;background:var(--border-default);margin:2px 0}

/* Recent scans mini-list */
.pt-scans-label{font-size:10px;text-transform:uppercase;letter-spacing:.8px;color:var(--text-subtle);font-weight:600}
.pt-scans{display:flex;flex-direction:column;gap:4px}
.scan-empty{font-size:12px;color:var(--text-subtle);font-style:italic;padding:4px 0}
.scan-row{display:flex;flex-direction:column;gap:2px;padding:6px 8px;border-radius:4px;font-size:12px;border:1px solid transparent}
.scan-row:hover{background:var(--bg-page);border-color:var(--bg-surface)}
.scan-row-head{display:grid;grid-template-columns:10px 1fr auto auto;align-items:center;gap:8px}
.scan-when{color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}
.scan-targets-count{font-size:10px;color:var(--text-subtle);text-transform:uppercase;letter-spacing:.4px;white-space:nowrap}
.scan-counts{display:inline-grid;grid-template-columns:repeat(3, 30px);gap:4px;justify-items:stretch}
.mini-count{display:inline-block;min-width:22px;text-align:center;padding:1px 5px;border-radius:3px;font-size:11px;font-weight:700;line-height:1.4}
.mini-count.mc-high{background:var(--danger-tag-bg);color:var(--danger)}
.mini-count.mc-med {background:var(--warning-tag-bg-strong);color:var(--warning)}
.mini-count.mc-low {background:var(--success-tag-bg-strong);color:var(--success)}
.mini-count.mc-zero{background:transparent;color:var(--border-strong)}

/* Per-target sub-rows inside each scan row */
.scan-targets{display:flex;flex-direction:column;gap:2px;margin-left:18px;margin-top:2px;padding-left:8px;border-left:1px solid var(--bg-surface)}
.scan-target{display:grid;grid-template-columns:14px 1fr auto auto;align-items:center;gap:6px;padding:2px 4px;border-radius:3px;font-size:11px;color:var(--text-muted)}
.scan-target:hover{background:var(--bg-surface-alpha);color:var(--text-secondary)}
.scan-target .st-icon{color:var(--text-subtle);width:14px;text-align:center}
.scan-target .st-icon .fa-solid{font-size:10px}
.scan-target .st-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:10.5px}
.scan-target .st-counts{display:inline-grid;grid-template-columns:repeat(3, 24px);gap:3px;justify-items:stretch;grid-column:4}
.scan-target .mini-count{min-width:18px;padding:0 4px;font-size:10px}

/* Scan status dot (inside .scan-row-head now) */
.scan-row-head span[class^="scan-dot-"]{width:8px;height:8px;border-radius:50%;display:inline-block}
.scan-dot-sd-ok  {background:var(--success)}
.scan-dot-sd-run {background:var(--accent);animation:pulse 1.5s ease-in-out infinite}
.scan-dot-sd-err {background:var(--danger)}
.scan-dot-sd-skip{background:var(--text-subtle)}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}

/* Project tags */
.project-tag{padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600;white-space:nowrap;display:inline-block;margin:1px 0;background:var(--neutral-bg);color:var(--neutral-text-alt)}
.project-tag-blood{background:var(--danger-bg);color:var(--danger-text)}
.project-tag-firstaid{background:var(--success-bg);color:var(--success-text)}
.project-tag-childcare{background:var(--accent-bg-subtle);color:var(--accent-text-light)}
.project-tag-emergency{background:var(--warning-bg);color:var(--warning-text)}
.project-tag-other{background:var(--neutral-bg);color:var(--neutral-text-alt)}

/* POAM reference tag on action cards */
.poam-ref{font-size:11px;font-weight:700;color:var(--accent-text-light);background:var(--accent-bg-subtle);padding:2px 8px;border-radius:4px;white-space:nowrap;font-family:'SF Mono',SFMono-Regular,Consolas,monospace;letter-spacing:.3px}

/* Scan result evidence cards */
.scan-result-card{border:1px solid var(--border-default);border-radius:8px;padding:14px;margin-bottom:8px;background:var(--bg-page)}
.sr-header{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.sr-target{font-size:13px;font-weight:600;color:var(--text-primary)}
.sr-project{font-size:11px;color:var(--text-subtle);background:var(--bg-surface);padding:1px 8px;border-radius:3px}
.sr-date{font-size:11px;color:var(--text-subtle);margin-left:auto}
.sr-evidence{font-size:13px;line-height:1.8}
.sr-row{margin-bottom:2px}
.sr-key{color:var(--text-subtle);font-size:12px;min-width:70px;display:inline-block}
.sr-code{font-family:'SF Mono',SFMono-Regular,Consolas,monospace;font-size:12px;color:var(--accent-text-light);background:var(--bg-surface);padding:1px 6px;border-radius:3px;word-break:break-all}
.sr-regex{color:var(--purple-alt)}
.sr-http-status{font-size:14px;font-weight:800;padding:1px 8px;border-radius:4px}
.sr-pass{color:var(--success-text)}
.sr-fail{color:var(--danger-text)}
.sr-expected{color:var(--text-subtle);font-size:11px}
.sr-message{font-size:12px;color:var(--text-secondary);margin-top:6px;padding:8px;background:var(--bg-surface);border-radius:4px;border-left:3px solid var(--border-default)}
.sr-msg-fail{border-left-color:var(--danger-bg);color:var(--danger-text)}
.sr-detail{font-size:12px;color:var(--text-muted);margin-top:4px}
.sr-matches{margin-top:8px;border:1px solid var(--border-default);border-radius:6px;overflow:hidden}
.sr-match-row{display:flex;align-items:baseline;gap:10px;padding:6px 10px;border-bottom:1px solid var(--bg-surface);font-size:12px}
.sr-match-row:last-child{border-bottom:none}
.sr-match-file{color:var(--accent-text-light);font-family:monospace;white-space:nowrap;flex-shrink:0}
/* GitHub deep-link styles for code match rows */
.sr-match-file-link{color:var(--accent);font-family:monospace;white-space:nowrap;flex-shrink:0;text-decoration:none}
.sr-match-file-link:hover{text-decoration:underline;color:var(--accent-hover,#93c5fd)}
.sr-ext-icon{font-size:9px;opacity:.6;margin-left:2px}
.sr-repo-link{color:var(--accent);font-size:12px;text-decoration:none;display:inline-flex;align-items:center;gap:4px}
.sr-repo-link:hover{text-decoration:underline}
.sr-ref-warn{font-size:10px;color:var(--warning-text);margin-left:4px;opacity:.7}
.sr-match-snippet{color:var(--warning-text);font-size:11px;background:var(--bg-surface);padding:2px 6px;border-radius:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:500px;display:inline-block}
.sr-more{font-size:11px;color:var(--text-subtle);padding:6px 10px;text-align:center}
.sr-fallback{font-size:11px;color:var(--accent-text-light);background:var(--accent-bg-subtle);padding:6px 10px;border-radius:4px;margin-top:6px}
.sr-output{margin-top:6px;background:var(--bg-surface);border-radius:4px;padding:8px;max-height:120px;overflow:auto}
.sr-output pre{font-family:monospace;font-size:11px;color:var(--text-muted);margin:0;white-space:pre-wrap}
.sr-kv{font-size:12px;line-height:1.8}
.sr-kv .sr-key{color:var(--text-subtle)}.sr-kv .sr-val{color:var(--text-primary)}

/* Repo picker rows */
.repo-option{display:flex;align-items:center;gap:10px;padding:8px 14px;cursor:pointer;border-bottom:1px solid var(--bg-surface)}
.repo-option:hover{background:var(--bg-surface)}
.repo-option input[type="radio"]{flex-shrink:0;flex-grow:0;width:16px;height:16px;margin:0;accent-color:var(--accent)}

/* Profile dropdown menu */
.profile-menu{position:relative;margin-left:auto}
.profile-trigger{display:flex;align-items:center;gap:8px;cursor:pointer;padding:6px 10px;border-radius:8px;transition:.2s}
.profile-trigger:hover{background:var(--border-default)}
.profile-trigger img{width:28px;height:28px;border-radius:50%;border:2px solid var(--border-default)}
.profile-trigger #user-name{font-size:14px;font-weight:600;color:var(--text-bright)}
.profile-dropdown{display:none;position:absolute;top:100%;right:0;margin-top:6px;background:var(--bg-surface);border:1px solid var(--border-default);border-radius:10px;min-width:200px;box-shadow:0 8px 24px var(--scrim-light);z-index:100;overflow:hidden}
.profile-dropdown.open{display:block}
.pd-item{display:flex;align-items:center;gap:10px;padding:10px 16px;font-size:13px;color:var(--text-primary);text-decoration:none;cursor:pointer;transition:.15s;border:none;background:none;width:100%;text-align:left}
.pd-item:hover{background:var(--border-default)}
.pd-item i{width:16px;text-align:center;color:var(--text-muted);font-size:13px}
.pd-divider{height:1px;background:var(--border-default);margin:4px 0}
.pd-signout{color:var(--danger)}
.pd-signout:hover{background:var(--danger-bg-tint)}
.pd-signout i{color:var(--danger)}

/* Profile name + role stacked */
.profile-name-block{display:flex;flex-direction:column;line-height:1.2}

.profile-role{font-size:10px;color:var(--text-muted);font-weight:400}
.profile-role::before{content:"("}
.profile-role::after{content:")"}

/* Scan Now button in header */
.scan-now-btn{background:var(--success);color:var(--bg-page);border:none;padding:6px 16px;border-radius:6px;font-size:13px;font-weight:700;cursor:pointer;transition:.2s;display:flex;align-items:center;gap:6px;white-space:nowrap}
.scan-now-btn:hover{background:var(--success-hover)}
.scan-now-btn i{font-size:10px}


/* Project picker in scan modal */
.scan-project-pick{display:flex;align-items:center;gap:12px;width:100%;padding:12px 16px;background:var(--bg-page);border:1px solid var(--border-default);border-radius:8px;color:var(--text-primary);font-size:14px;cursor:pointer;transition:.2s;margin-bottom:6px;text-align:left}
.scan-project-pick:hover{border-color:var(--accent);background:var(--bg-surface)}
.scan-project-pick span{flex:1}

/* Live scan progress */
.scan-running-badge{background:var(--accent);color:white;padding:2px 10px;border-radius:4px;font-size:11px;font-weight:700}
.scan-live{padding:8px 0}
.scan-live-header{display:flex;align-items:center;gap:12px;margin-bottom:8px}
.scan-live-bar-wrap{flex:1;height:8px;background:var(--bg-surface);border-radius:4px;overflow:hidden}
.scan-live-bar{height:100%;background:var(--accent);border-radius:4px;transition:width .3s ease}
.scan-live-pct{font-size:13px;font-weight:700;color:var(--text-primary);min-width:40px;text-align:right}
.scan-live-status{font-size:13px;color:var(--text-muted);margin-bottom:8px}
.scan-live-log{max-height:300px;overflow-y:auto;border:1px solid var(--border-default);border-radius:8px;background:var(--bg-page)}
.scan-log-entry{display:flex;align-items:center;gap:8px;padding:6px 12px;border-bottom:1px solid var(--bg-surface);font-size:12px}
.scan-log-entry:last-child{border-bottom:none}
.scan-log-num{color:var(--text-subtle);font-size:10px;min-width:40px;font-family:monospace}
.scan-log-target{color:var(--accent-text-light);font-size:11px;min-width:120px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.scan-log-weakness{color:var(--text-primary);font-size:12px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Clickable stat tiles */
.clickable-stat{cursor:pointer;transition:all .2s}
.clickable-stat:hover{border-color:var(--accent);transform:translateY(-2px)}
.stat-selected{border-color:var(--accent)!important;box-shadow:0 0 0 1px var(--accent);background:var(--bg-surface)!important}

/* ── Error diagnostics panel (editors + admins only) ─────────────────────── */
.sr-diagnostics{margin-top:10px;border:1px solid var(--diag-border);border-radius:6px;overflow:hidden;background:var(--diag-bg)}
.sr-diag-summary{cursor:pointer;padding:8px 12px;font-size:12px;color:var(--purple);display:flex;align-items:center;gap:8px;user-select:none;list-style:none}
.sr-diag-summary::-webkit-details-marker{display:none}
.sr-diag-summary:hover{background:var(--diag-border)}
.sr-diag-badge{margin-left:auto;font-size:10px;background:var(--purple-bg-deep);color:var(--purple-text);border:1px solid var(--purple-border);padding:1px 7px;border-radius:10px;font-weight:600;letter-spacing:.3px}
.sr-diagnostics[open] .sr-diag-summary{border-bottom:1px solid var(--diag-border)}
.sr-diag-body{padding:12px}
.sr-diag-row{display:flex;gap:10px;font-size:12px;padding:3px 0;border-bottom:1px solid var(--diag-border);align-items:baseline}
.sr-diag-row:last-of-type{border-bottom:none}
.sr-diag-key{color:var(--diag-key);min-width:120px;flex-shrink:0;font-size:11px}
.sr-diag-val{color:var(--diag-text);font-family:'SF Mono',SFMono-Regular,Consolas,monospace;font-size:12px;word-break:break-all}
.sr-diag-raw-label{margin-top:10px;padding-top:6px;border-top:1px solid var(--diag-border)}
.sr-diag-raw{font-family:'SF Mono',SFMono-Regular,Consolas,monospace;font-size:11px;color:var(--purple);background:var(--diag-bg-deep);border-radius:4px;padding:10px;margin:6px 0 10px;white-space:pre-wrap;word-break:break-all;max-height:220px;overflow-y:auto;border:1px solid var(--diag-border)}
.sr-diag-help{font-size:11px;color:var(--diag-subtle);margin:0;line-height:1.5;padding-top:6px;border-top:1px solid var(--diag-bg)}

/* ── Target detail page ───────────────────────────────────────────────────── */
.tgt-scorecard{display:flex;align-items:center;justify-content:space-between;gap:20px;background:var(--bg-surface);border:1px solid var(--border-default);border-radius:10px;padding:20px 24px;margin-bottom:24px;flex-wrap:wrap}
.tgt-meta{display:flex;flex-direction:column;gap:6px}
.tgt-meta-row{display:flex;align-items:center;gap:8px}
.tgt-type-label{font-size:12px;color:var(--text-muted);text-transform:capitalize}
.tgt-counts{display:flex;gap:12px;flex-wrap:wrap}
.tgt-count{text-align:center;padding:10px 18px;border-radius:8px;min-width:70px;border:1px solid}
.tgt-count-num{font-size:28px;font-weight:800;line-height:1}
.tgt-count-label{font-size:10px;letter-spacing:1px;font-weight:700;margin-top:2px;text-transform:uppercase}
.tgt-count-high{background:var(--danger-bg-alpha);border-color:var(--danger-bg);color:var(--danger)}
.tgt-count-medium{background:var(--warning-bg-alpha);border-color:var(--warning-bg);color:var(--warning)}
.tgt-count-low{background:var(--success-bg-alpha);border-color:var(--success-bg);color:var(--success)}
.tgt-count-pass{background:var(--accent-hint-bg);border-color:var(--accent-bg-subtle);color:var(--accent)}
.tgt-count-error{background:var(--bg-surface);border-color:var(--border-default);color:var(--text-subtle)}
.tgt-section-heading{font-size:15px;margin:24px 0 10px;padding-bottom:8px;border-bottom:2px solid}
.tgt-section-fail{color:var(--danger-text);border-color:var(--danger-bg)}
.tgt-section-pass{color:var(--success-text);border-color:var(--success-bg)}
.tgt-section-error{color:var(--warning-text);border-color:var(--warning-bg)}
.tgt-result-row{border-left:3px solid var(--border-default);border-radius:0 6px 6px 0;padding:12px 14px;margin-bottom:6px;transition:background .15s}
.tgt-result-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tgt-poam-link{font-size:12px;font-weight:700;color:var(--accent-text-light);text-decoration:none;background:var(--bg-surface);padding:1px 8px;border-radius:4px;white-space:nowrap}
.tgt-poam-link:hover{color:var(--accent-text-lighter);background:var(--accent-bg-subtle)}
.tgt-weakness{font-size:13px;color:var(--text-primary);flex:1;min-width:0}
.tgt-scan-date{font-size:11px;color:var(--text-subtle);margin-left:auto;white-space:nowrap}
.tgt-evidence-msg{font-size:12px;color:var(--text-muted);margin-top:6px;padding:5px 8px;background:var(--bg-page);border-radius:4px;font-family:monospace}
.tgt-evidence-file{color:var(--accent-text-light);font-size:11px}

/* Clickable target rows in all-targets list */
.tgt-row-clickable{cursor:pointer;transition:background .12s}
.tgt-row-clickable:hover td{background:var(--accent-hint-bg)}

/* ── AI triage badges ─────────────────────────────────────────────────────── */
.sr-ai-summary{font-size:11px;color:var(--text-muted);margin:6px 0 4px;display:flex;align-items:center;gap:8px;padding:4px 8px;background:var(--bg-page);border-radius:4px;border:1px solid var(--bg-surface)}
.sr-ai-badge{font-size:10px;padding:1px 7px;border-radius:10px;font-weight:600;white-space:nowrap;cursor:help}
.sr-ai-genuine{background:var(--danger-bg-alpha-strong);color:var(--danger-text);border:1px solid var(--danger-bg)}
.sr-ai-fp{background:var(--success-bg-alpha-strong);color:var(--success-text);border:1px solid var(--success-bg)}

/* ── Scan log overlay ─────────────────────────────────────────────────────── */
.slv-overlay{position:fixed;inset:0;background:var(--scrim-heavy);z-index:1000;display:flex;align-items:stretch;justify-content:center;padding:24px}
.slv-panel{background:var(--bg-page);border:1px solid var(--border-default);border-radius:10px;display:flex;flex-direction:column;width:100%;max-width:1100px;overflow:hidden}
.slv-header{padding:20px 24px 12px;border-bottom:1px solid var(--bg-surface);flex-shrink:0}
.slv-title{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.slv-run-id{font-size:22px;font-weight:800;color:var(--text-primary)}
.slv-status-dot{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1px}
.slv-meta{display:flex;gap:20px;font-size:12px;color:var(--text-subtle);margin-bottom:10px;flex-wrap:wrap}
.slv-meta span{display:flex;align-items:center;gap:5px}
.slv-summary{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.slv-stat{font-size:12px;font-weight:700;padding:2px 10px;border-radius:4px;display:flex;align-items:center;gap:5px}
.slv-pass{background:var(--success-bg-alpha-strong);color:var(--success-text);border:1px solid var(--success-bg)}
.slv-fail{background:var(--danger-bg-alpha-strong);color:var(--danger-text);border:1px solid var(--danger-bg)}
.slv-error{background:var(--warning-bg-alpha-strong);color:var(--warning-text);border:1px solid var(--warning-bg)}
.slv-skip{background:var(--bg-surface);color:var(--text-subtle);border:1px solid var(--border-default)}
.slv-error-msg{font-size:12px;color:var(--warning);background:var(--warning-bg-alpha);border:1px solid var(--warning-bg);padding:3px 10px;border-radius:4px;font-family:monospace}
.slv-toolbar{display:flex;align-items:center;gap:8px}
.slv-filter-input{flex:1;background:var(--bg-surface);border:1px solid var(--border-default);color:var(--text-primary);padding:6px 12px;border-radius:6px;font-size:12px;outline:none}
.slv-filter-input:focus{border-color:var(--accent)}
.slv-body{flex:1;overflow-y:auto;padding:0}
.slv-empty{padding:32px 24px;color:var(--text-subtle);font-size:13px;text-align:center;line-height:2}
.slv-entry{display:flex;align-items:center;gap:10px;padding:7px 24px;border-bottom:1px solid var(--bg-page);font-size:12px;flex-wrap:nowrap}
.slv-entry:hover{background:var(--bg-surface)}
.slv-entry-error{background:var(--warning-bg-alpha-weak);border-left:3px solid var(--warning)}
.slv-entry-fail{background:var(--danger-bg-alpha-weak);border-left:3px solid var(--danger)}
.slv-entry-clone{background:var(--accent-hint-bg-weak);border-left:3px solid var(--border-default)}
.slv-ts{color:var(--border-strong);font-family:monospace;white-space:nowrap;min-width:80px;flex-shrink:0}
.slv-icon{flex-shrink:0;width:16px;text-align:center}
.slv-target{color:var(--accent-text-light);font-weight:600;white-space:nowrap;flex-shrink:0;max-width:200px;overflow:hidden;text-overflow:ellipsis}
.slv-env{flex-shrink:0}
.slv-weakness{color:var(--text-secondary);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.slv-result{flex-shrink:0}
.scan-log-btn{padding:3px 8px!important}

/* ── Scan log tabs ────────────────────────────────────────────────────────── */
.slv-tabs{display:flex;gap:4px;margin-bottom:10px;border-bottom:1px solid var(--bg-surface);padding-bottom:0}
.slv-tab{background:none;border:none;border-bottom:2px solid transparent;color:var(--text-subtle);font-size:13px;padding:6px 14px 8px;cursor:pointer;display:flex;align-items:center;gap:7px;transition:color .15s}
.slv-tab:hover{color:var(--text-primary)}
.slv-tab-active{color:var(--text-primary);border-bottom-color:var(--accent)}
.slv-tab-count{font-size:10px;padding:1px 6px;border-radius:8px;font-weight:700;background:var(--bg-surface);color:var(--text-subtle)}
.slv-tab-count-error{background:var(--warning-bg-alpha-strong);color:var(--warning-text)}
.slv-tab-count-fail{background:var(--danger-bg-alpha-strong);color:var(--danger-text)}

/* ── Errors tab rows ──────────────────────────────────────────────────────── */
.slv-err-row{padding:12px 24px;border-bottom:1px solid var(--bg-surface)}
.slv-err-row:hover{background:var(--bg-surface)}
.slv-err-row-error{border-left:3px solid var(--warning)}
.slv-err-row-fail{border-left:3px solid var(--danger)}
.slv-err-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.slv-err-target{font-size:12px;font-weight:600;color:var(--accent-text-light)}
.slv-err-poam{font-size:11px;font-weight:700;color:var(--accent);background:var(--bg-surface);padding:1px 7px;border-radius:4px;text-decoration:none;margin-left:auto}
.slv-err-poam:hover{color:var(--accent-text-light)}
.slv-err-weakness{font-size:13px;color:var(--text-primary);margin-bottom:3px}
.slv-err-evidence{font-size:11px;color:var(--text-subtle);font-family:monospace}

/* ── AI triage status badges on scan rows ─────────────────────────────────── */
.triage-badge{font-size:11px;padding:1px 5px;border-radius:4px;vertical-align:middle;margin-left:4px}
.triage-running{color:var(--purple);background:var(--purple-bg-alpha)}
.triage-done{color:var(--text-subtle)}
.triage-warn{color:var(--border-strong)}

/* ── Configured badges ───────────────────────────────────────────────── */
.configured-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:600;letter-spacing:.3px}
.configured-yes{background:var(--success-bg-alpha-mid);color:var(--success);border:1px solid var(--success-border-alpha)}
.configured-no{background:var(--warning-bg-alpha-mid);color:var(--warning);border:1px solid var(--warning-border-alpha)}

/* ── Bulk action bar ─────────────────────────────────────────────────── */
.poam-bulk-bar{display:flex;align-items:center;gap:12px;background:var(--bg-surface);border:1px solid var(--accent);border-radius:10px;padding:10px 16px;margin-bottom:12px;flex-wrap:wrap}

/* ── Theme picker (in profile dropdown) ─────────────────────────────────── */
.pd-theme-picker{padding:8px 12px 4px}
.pd-theme-label{font-size:10px;text-transform:uppercase;letter-spacing:.8px;color:var(--text-subtle);margin-bottom:6px;padding:0 4px;font-weight:600}
.pd-theme-options{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;background:var(--bg-page);border:1px solid var(--border-default);border-radius:8px;padding:3px}
.pd-theme-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;background:none;border:none;color:var(--text-muted);font-size:11px;font-weight:500;cursor:pointer;border-radius:6px;transition:all .15s ease;font-family:inherit}
.pd-theme-btn i{font-size:14px}
.pd-theme-btn:hover{color:var(--text-primary);background:var(--bg-surface)}
.pd-theme-btn.active{background:var(--accent);color:var(--text-on-accent)}
.pd-theme-btn.active:hover{background:var(--accent-hover)}

/* ── POAM Products tab (pp-) ─────────────────────────────────────────────── */
.pp-header{display:flex;align-items:center;gap:8px;margin-bottom:20px;flex-wrap:wrap}
.pp-title{font-size:22px;font-weight:600;color:var(--text-bright);margin:0;flex:1}
.pp-upload-btn{}

/* Grid */
.pp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}

/* Card */
.pp-card{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:12px;
  cursor:pointer;transition:border-color .15s,transform .1s;overflow:hidden}
.pp-card:hover{border-color:var(--border-strong);transform:translateY(-1px)}
.pp-card-empty{opacity:.55}
.pp-card-empty:hover{opacity:.8;transform:translateY(-1px)}
.pp-card-top{padding:14px 16px 12px}
.pp-app-row{display:flex;align-items:center;gap:10px}
.pp-avatar{width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:700;flex-shrink:0}
.pp-app-name{font-size:15px;font-weight:600;color:var(--text-bright)}
.pp-app-date{font-size:11px;color:var(--text-subtle);margin-top:2px}
.pp-date-empty{font-style:italic}
.pp-empty-hint{padding:12px 16px 14px;font-size:12px;color:var(--text-subtle);border-top:1px solid var(--border-subtle)}
.pp-card-body{padding:4px 16px 16px;border-top:1px solid var(--border-subtle)}
.pp-todo-label{font-size:10px;font-weight:600;letter-spacing:.6px;text-transform:uppercase;
  color:var(--text-subtle);margin:10px 0 4px}
.pp-todo-count{font-size:26px;font-weight:700;color:var(--text-bright);line-height:1;margin-bottom:8px}
.pp-todo-sub{font-size:13px;font-weight:400;color:var(--text-muted)}
.pp-pills{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:12px}
.pp-pill{font-size:11px;padding:3px 9px;border-radius:20px;font-weight:600}
.pp-p1{background:rgba(239,68,68,.15);color:#fca5a5;border:1px solid rgba(239,68,68,.3)}
.pp-p2{background:rgba(245,158,11,.12);color:#fcd34d;border:1px solid rgba(245,158,11,.3)}
.pp-p3{background:rgba(59,130,246,.12);color:#93c5fd;border:1px solid rgba(59,130,246,.25)}
.pp-done-pill{background:rgba(22,197,74,.12);color:#86efac;border:1px solid rgba(22,197,74,.25)}
.pp-stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.pp-stat{background:var(--bg-page);border-radius:8px;padding:8px 10px}
.pp-stat-label{font-size:10px;color:var(--text-subtle);margin-bottom:2px;line-height:1.3}
.pp-stat-val{font-size:17px;font-weight:600}
.pp-val-green{color:#4ade80}
.pp-val-purple{color:#c4b5fd}
.pp-val-muted{color:var(--text-muted)}
.pp-stat-until{font-size:10px;color:var(--text-subtle);margin-top:1px}

/* Detail panel */
.pp-detail{width:100%}
.pp-detail-nav{display:flex;align-items:center;gap:8px;margin-bottom:16px}
.pp-detail-header{padding:12px 16px;background:var(--bg-surface);border-radius:10px;
  border:1px solid var(--border-default);margin-bottom:16px}
.pp-detail-title{font-size:20px;font-weight:700;color:var(--text-bright);margin-bottom:4px}
.pp-detail-meta{font-size:12px;color:var(--text-muted)}

/* Summary strip */
.pp-summary-strip{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}
.pp-sum-tile{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:8px;
  padding:10px 14px;min-width:80px}
.pp-sum-label{font-size:10px;color:var(--text-subtle);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}
.pp-sum-val{font-size:22px;font-weight:700}
.pp-sum-p1 .pp-sum-val{color:#f87171}
.pp-sum-p2 .pp-sum-val{color:#fbbf24}
.pp-sum-p3 .pp-sum-val{color:#60a5fa}
.pp-sum-green .pp-sum-val{color:#4ade80}
.pp-sum-purple .pp-sum-val{color:#c4b5fd}
.pp-sum-muted .pp-sum-val{color:var(--text-muted)}

/* Sections */
.pp-sections{display:flex;flex-direction:column;gap:10px}
.pp-section{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:10px;overflow:hidden}
.pp-sec-p1{border-left:3px solid #ef4444}
.pp-sec-p2{border-left:3px solid #f59e0b}
.pp-sec-p3{border-left:3px solid #3b82f6}
.pp-sec-awaiting{border-left:3px solid #7c3aed}
.pp-sec-accepted{border-left:3px solid #475569}
.pp-sec-pushback{border-left:3px solid #334155}
.pp-sec-remediated{border-left:3px solid #16a34a}
.pp-section-head{display:flex;align-items:center;gap:8px;padding:12px 16px;cursor:pointer;
  user-select:none;transition:background .1s}
.pp-section-head:hover{background:var(--bg-page)}
.pp-section-title{font-size:13px;font-weight:600;color:var(--text-secondary);flex:1}
.pp-section-count{font-size:11px;background:var(--bg-page);border:1px solid var(--border-default);
  border-radius:20px;padding:2px 9px;color:var(--text-muted)}
.pp-chevron{font-size:10px;color:var(--text-subtle);transition:transform .2s}
.pp-collapsed .pp-chevron{transform:rotate(-90deg)}
.pp-section-body{padding:4px 16px 12px;display:flex;flex-direction:column;gap:8px}
.pp-collapsed .pp-section-body{display:none}

/* Issue cards inside sections */
.pp-issue-card{background:var(--bg-page);border:1px solid var(--border-subtle);border-radius:8px;padding:10px 12px}
.pp-issue-p1{border-left:3px solid #ef4444}
.pp-issue-p2{border-left:3px solid #f59e0b}
.pp-issue-p3{border-left:3px solid #3b82f6}
.pp-issue-awaiting{border-left:3px solid #7c3aed}
.pp-issue-accepted{border-left:3px solid #475569;opacity:.85}
.pp-issue-pushback{border-left:3px solid #334155;opacity:.8}
.pp-issue-remediated{border-left:3px solid #16a34a;opacity:.65}
.pp-issue-title{font-size:13px;font-weight:500;color:var(--text-secondary);margin-bottom:5px;line-height:1.4}
.pp-issue-meta{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:5px}
.pp-tag{font-size:10px;padding:2px 7px;border-radius:4px;background:var(--neutral-tag-bg);
  border:1px solid var(--neutral-tag-border);color:var(--text-muted)}
.pp-issue-desc{font-size:12px;color:var(--text-subtle);line-height:1.5;margin-top:4px}
.pp-resp{font-size:11px;color:var(--text-subtle);line-height:1.5;margin-top:4px}
.pp-resp-dim{opacity:.7}
.pp-accepted-box{background:var(--bg-surface);border-radius:6px;padding:7px 10px;margin-top:6px;
  border:1px solid var(--border-subtle)}
.pp-until{font-size:11px;color:var(--text-muted);margin-bottom:3px;font-weight:500}
.pp-awaiting-box{background:rgba(124,58,237,.08);border-radius:6px;padding:7px 10px;margin-top:6px;
  border:1px solid rgba(124,58,237,.2);font-size:12px;color:#c4b5fd}

/* ── POAM Analysis extras (pp-issue expand, github, ai) ───────────────────── */

/* Summary tiles — clickable */
.pp-sum-tile { cursor:pointer; transition:border-color .15s, transform .1s; }
.pp-sum-tile:hover { border-color:var(--border-strong); transform:translateY(-1px); }

/* File download button */
.pp-file-dl-btn { color:var(--text-secondary) !important; }

/* Issue card — expandable */
.pp-issue-card { cursor:default; }
.pp-issue-head { cursor:pointer; padding-bottom:4px; user-select:none; }
.pp-issue-head:hover .pp-issue-title { color:var(--text-bright); }
.pp-issue-title-row { display:flex; align-items:flex-start; gap:8px; flex-wrap:wrap; }
.pp-issue-title { flex:1; font-size:13px; font-weight:500; color:var(--text-secondary); line-height:1.4; }
.pp-issue-chevron { font-size:9px; color:var(--text-subtle); margin-top:3px; flex-shrink:0; transition:transform .2s; }
.pp-issue-open .pp-issue-chevron { transform:rotate(180deg); }
.pp-issue-meta { display:flex; gap:4px; flex-wrap:wrap; margin-top:5px; }

/* Status badges */
.pp-status-badge { font-size:10px; padding:2px 7px; border-radius:20px; font-weight:600; flex-shrink:0; }
.pp-status-remediated { background:rgba(22,197,74,.1); color:#4ade80; border:1px solid rgba(22,197,74,.2); }
.pp-status-accepted { background:rgba(100,116,139,.1); color:var(--text-muted); border:1px solid var(--border-default); }
.pp-status-awaiting { background:rgba(124,58,237,.1); color:#c4b5fd; border:1px solid rgba(124,58,237,.2); }

/* Expanded issue body */
.pp-issue-body { border-top:1px solid var(--border-subtle); margin-top:8px; padding-top:12px; }
.pp-issue-expanded { display:flex; flex-direction:column; gap:12px; }
.pp-issue-section { display:flex; flex-direction:column; gap:6px; }
.pp-issue-section-label { font-size:10px; font-weight:600; text-transform:uppercase; letter-spacing:.5px; color:var(--text-subtle); }
.pp-issue-text { font-size:12px; color:var(--text-secondary); line-height:1.6; white-space:pre-wrap; word-break:break-word; max-height:200px; overflow-y:auto; }
.pp-resp-owner { font-size:11px; color:var(--text-muted); font-style:italic; }

/* GitHub result */
.pp-gh-btn, .pp-ai-btn { font-size:11px; padding:4px 10px; }
.pp-gh-result, .pp-ai-result { margin-top:6px; }
.pp-gh-empty { font-size:12px; color:var(--text-subtle); padding:4px 0; }
.pp-gh-group-label { font-size:10px; font-weight:600; text-transform:uppercase; letter-spacing:.5px; color:var(--text-subtle); margin-bottom:4px; }
.pp-gh-item { display:flex; align-items:baseline; gap:6px; flex-wrap:wrap; padding:5px 0; border-bottom:1px solid var(--border-subtle); }
.pp-gh-item:last-child { border-bottom:none; }
.pp-gh-badge { font-size:10px; padding:1px 6px; border-radius:20px; font-weight:600; flex-shrink:0; }
.pp-gh-merged { background:rgba(124,58,237,.1); color:#c4b5fd; border:1px solid rgba(124,58,237,.2); }
.pp-gh-open { background:rgba(22,197,74,.1); color:#4ade80; border:1px solid rgba(22,197,74,.2); }
.pp-gh-closed { background:rgba(100,116,139,.1); color:var(--text-muted); border:1px solid var(--border-default); }
.pp-gh-sha { font-size:11px; font-family:monospace; background:var(--bg-page); padding:1px 5px; border-radius:4px; color:var(--text-muted); flex-shrink:0; }
.pp-gh-link { font-size:12px; color:var(--text-info); text-decoration:none; flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pp-gh-link:hover { text-decoration:underline; }
.pp-gh-meta { font-size:11px; color:var(--text-subtle); flex-shrink:0; }

/* AI result */
.pp-ai-list { margin:0; padding-left:18px; display:flex; flex-direction:column; gap:4px; }
.pp-ai-list li { font-size:12px; color:var(--text-secondary); line-height:1.5; }

/* ── Issue card two-column expanded layout ───────────────────────────────── */
.pp-issue-expanded { display:grid; grid-template-columns:1fr 1fr; gap:16px; align-items:start; }
.pp-issue-col-left, .pp-issue-col-right { display:flex; flex-direction:column; gap:12px; }
@media (max-width:700px) {
  .pp-issue-expanded { grid-template-columns:1fr; }
}
.pp-gh-scope { font-size:11px; color:var(--text-subtle); margin-bottom:8px; }
.pp-gh-scope code { background:var(--bg-page); padding:1px 4px; border-radius:3px; font-size:10px; color:var(--text-muted); }

/* ── Nav restructure: submenu + actions dropdown ─────────────────────────── */
.nav-group { position:relative; }
.nav-group-trigger { display:flex; align-items:center; gap:5px; }
.nav-group-arrow { font-size:8px; opacity:.6; transition:transform .2s; }
.nav-group:hover .nav-group-arrow, .nav-group.open .nav-group-arrow { transform:rotate(180deg); }
.nav-submenu { display:none; position:absolute; top:calc(100% + 6px); left:0; background:var(--bg-surface);
  border:1px solid var(--border-default); border-radius:var(--border-radius-md); min-width:140px;
  box-shadow:0 4px 16px rgba(0,0,0,.3); z-index:200; padding:4px; }
.nav-group:hover .nav-submenu, .nav-group.open .nav-submenu { display:block; }

/* Bridge the 6px gap between trigger and submenu so hover doesn't drop */
.nav-group::after { content:''; position:absolute; top:100%; left:0; width:100%; height:8px; }
.nav-submenu a { display:block; padding:7px 12px; font-size:13px; color:var(--text-secondary);
  border-radius:4px; text-decoration:none; white-space:nowrap; }
.nav-submenu a:hover, .nav-submenu a.active { background:var(--bg-page); color:var(--text-bright); }

/* Actions dropdown */
.actions-menu { position:relative; }
.actions-btn { display:flex; align-items:center; gap:6px; padding:6px 14px; font-size:13px; font-weight:500;
  background:var(--accent); color:#fff; border:none; border-radius:var(--border-radius-md); cursor:pointer;
  transition:background .15s; }
.actions-btn:hover { background:var(--accent-hover); }
.actions-btn i.fa-chevron-down { font-size:9px; opacity:.8; }
.actions-dropdown { display:none; position:absolute; top:calc(100% + 6px); right:0; background:var(--bg-surface);
  border:1px solid var(--border-default); border-radius:var(--border-radius-md); min-width:190px;
  box-shadow:0 4px 16px rgba(0,0,0,.3); z-index:200; padding:4px; }
.actions-menu.open .actions-dropdown { display:block; }
.actions-item { display:flex; align-items:center; gap:10px; width:100%; padding:8px 14px; font-size:13px;
  color:var(--text-secondary); background:none; border:none; border-radius:4px; cursor:pointer;
  text-align:left; transition:background .1s; }
.actions-item:hover { background:var(--bg-page); color:var(--text-bright); }
.actions-item i { width:14px; text-align:center; opacity:.7; }

/* ── Product Overview Dashboard ──────────────────────────────────────────── */
.ov-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px}
.ov-title{font-size:22px;font-weight:600;color:var(--text-bright);margin:0 0 4px}
.ov-subtitle{font-size:13px;color:var(--text-subtle)}
.ov-summary-bar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:24px}
.ov-bar-tile{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:10px;padding:12px 20px;min-width:90px}
.ov-bar-val{font-size:26px;font-weight:700;color:var(--text-bright);line-height:1;margin-bottom:3px}
.ov-bar-label{font-size:11px;color:var(--text-subtle);text-transform:uppercase;letter-spacing:.4px}
.ov-bar-danger .ov-bar-val{color:#f87171}
.ov-bar-upcoming .ov-bar-val{color:#fbbf24}

/* Card grid */
.ov-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.ov-card{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:12px;overflow:hidden}
.ov-card-empty{opacity:.45}
.ov-card-header{display:flex;align-items:flex-start;gap:12px;padding:16px 18px 12px}
.ov-avatar{width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0;margin-top:1px}
.ov-header-text{flex:1;min-width:0}
.ov-app-name{font-size:15px;font-weight:600;color:var(--text-bright)}
.ov-audit-date{font-size:11px;color:var(--text-subtle);margin-top:2px}
.ov-header-actions{flex-shrink:0}
.ov-poam-link{font-size:11px;color:var(--text-info);text-decoration:none;display:flex;align-items:center;gap:4px;white-space:nowrap}
.ov-poam-link:hover{text-decoration:underline}
.ov-card-body{padding:0 16px 14px}
.ov-section{padding:10px 0}
.ov-section-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-subtle);margin-bottom:8px;display:flex;align-items:center;justify-content:space-between}
.ov-section-badge{font-size:10px;background:var(--bg-page);border:1px solid var(--border-default);border-radius:20px;padding:1px 7px;color:var(--text-muted);font-weight:400;text-transform:none;letter-spacing:0}
.ov-divider{height:1px;background:var(--border-subtle)}
.ov-no-data{font-size:12px;color:var(--text-subtle)}
.ov-empty-hint{font-size:12px;color:var(--text-subtle);text-align:center;padding:16px 0}
.ov-date-sm{font-size:10px;color:var(--text-subtle);font-weight:400;letter-spacing:0;text-transform:none}
.ov-edit-btn{background:none;border:none;padding:0 2px;cursor:pointer;color:var(--text-subtle);font-size:11px}
.ov-edit-btn:hover{color:var(--text-secondary)}

/* Audit pills — STATIC section */
.ov-audit-pills{display:flex;gap:5px;flex-wrap:wrap}
.ov-pill{font-size:12px;padding:3px 10px;border-radius:6px;font-weight:500}
/* P1=Red, P2=Amber/Orange, P3=Yellow — clearly distinct RAG colours */
.ov-p1{background:rgba(239,68,68,.13);color:#dc2626;border:1px solid rgba(239,68,68,.3)}
.ov-p2{background:rgba(249,115,22,.13);color:#c2410c;border:1px solid rgba(249,115,22,.3)}
.ov-p3{background:rgba(234,179,8,.15);color:#92400e;border:1px solid rgba(234,179,8,.4)}
.ov-p1-none,.ov-p2-none,.ov-p3-none{background:transparent;color:var(--text-subtle);border:1px solid var(--border-subtle);opacity:.6}
.ov-clear{background:rgba(22,197,74,.1);color:#4ade80;border:1px solid rgba(22,197,74,.2)}

/* Status squares — DYNAMIC section */
.ov-status-section{padding-top:4px}
.ov-status-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.ov-sq{border-radius:10px;padding:12px 6px;text-align:center;min-width:0}
.ov-sq-val{font-size:22px;font-weight:700;line-height:1;margin-bottom:5px}
.ov-sq-label{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.3px;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* To do — red tint */
.ov-sq-todo{background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.2)}
.ov-sq-todo .ov-sq-val{color:#f87171}
.ov-sq-todo .ov-sq-label{color:#f87171}
/* 3SC Fixed — blue tint, clearly 3SC action */
.ov-sq-fixed{background:rgba(59,130,246,.08);border:1.5px solid rgba(59,130,246,.3)}
.ov-sq-fixed .ov-sq-val{color:#60a5fa}
.ov-sq-fixed .ov-sq-label{color:#60a5fa}
/* Awaiting — purple */
.ov-sq-awaiting{background:rgba(124,58,237,.08);border:1px solid rgba(124,58,237,.2)}
.ov-sq-awaiting .ov-sq-val{color:#c4b5fd}
.ov-sq-awaiting .ov-sq-label{color:#c4b5fd}
/* Business Accepted — neutral */
.ov-sq-accepted{background:var(--bg-page);border:1px solid var(--border-default)}
.ov-sq-accepted .ov-sq-val{color:var(--text-muted)}
.ov-sq-accepted .ov-sq-label{color:var(--text-subtle)}
/* Remediated — green, final state, slightly more prominent */
.ov-sq-remediated{background:rgba(22,197,74,.08);border:1.5px solid rgba(22,197,74,.3)}
.ov-sq-remediated .ov-sq-val{color:#4ade80}
.ov-sq-remediated .ov-sq-label{color:#4ade80}

/* Schedule & scan sections */
.ov-upcoming-val{font-size:14px;font-weight:500;color:var(--text-secondary)}
.ov-overdue{color:#f87171}
.ov-not-scheduled{color:var(--text-subtle);font-weight:400;font-size:12px}
.ov-scan-section{padding-top:8px}
.ov-scan-row{display:flex;align-items:center;gap:8px;margin-bottom:5px;flex-wrap:wrap}
.ov-scan-bar-wrap{flex:1;min-width:50px;height:4px;background:rgba(239,68,68,.18);border-radius:3px;overflow:hidden}
.ov-scan-bar-fill{height:100%;background:#4ade80;border-radius:3px}
.ov-pass-count{font-size:11px;color:#4ade80;font-weight:500}
.ov-fail-count{font-size:11px;color:#f87171;font-weight:500}
.ov-regression{font-size:10px;color:#fbbf24;background:rgba(245,158,11,.1);padding:1px 6px;border-radius:10px;border:1px solid rgba(245,158,11,.2)}
.ov-link-btn{background:none;border:none;padding:0;font-size:11px;color:var(--text-info);cursor:pointer;display:inline-flex;align-items:center;gap:4px;text-decoration:none}
.ov-link-btn:hover{text-decoration:underline}

/* ── Audits card — total issues focal number ─────────────────────────────── */
.pp-total-row { display:flex; align-items:baseline; gap:8px; margin:6px 0 12px; }
.pp-total-num { font-size:42px; font-weight:700; color:var(--text-bright); line-height:1; letter-spacing:-1px; }
.pp-total-label { font-size:13px; color:var(--text-subtle); }
.pp-card-divider { height:1px; background:var(--border-subtle); margin:4px 0; }
.pp-card-section { padding:12px 0 4px; }
.pp-card-section-label { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.6px;
  color:var(--text-subtle); margin-bottom:10px; }

/* Business Accepted square extras */
.ov-sq-label br { display:block; }
.ov-sq-until { font-size:9px; color:inherit; opacity:.7; margin-top:4px; font-weight:500; letter-spacing:.2px; }

/* Business accepted until row */
.pp-accepted-until-row { display:flex; align-items:center; gap:6px; padding:8px 0 4px;
  border-top:1px solid var(--border-subtle); margin-top:8px; font-size:12px; flex-wrap:wrap; }
.pp-accepted-until-label { color:var(--text-subtle); flex-shrink:0; }
.pp-accepted-until-date { color:var(--text-secondary); font-weight:500; }
.pp-accepted-until-unset { color:var(--text-subtle); font-style:italic; }
.pp-accepted-edit-btn { background:none; border:none; padding:0 3px; cursor:pointer;
  color:var(--text-subtle); font-size:11px; margin-left:auto; }
.pp-accepted-edit-btn:hover { color:var(--text-secondary); }

/* ── Status grid: 2-row layout (3SC top, ARC bottom) ─────────────────────── */
/* Override old single grid */
.ov-status-grid { display:none; }

.pp-status-label-row { display:flex; align-items:center; gap:8px; margin-bottom:6px; }
.pp-status-group-label { font-size:9px; font-weight:700; text-transform:uppercase;
  letter-spacing:.8px; color:var(--text-subtle); }

/* Top row: 2 equal squares */
.pp-status-row-2 { display:grid; grid-template-columns:1fr 1fr; gap:6px; }
/* Bottom row: 3 equal squares */
.pp-status-row-3 { display:grid; grid-template-columns:1fr 1fr 1fr; gap:6px; }

/* All squares same height */
.pp-status-row-2 .ov-sq,
.pp-status-row-3 .ov-sq { min-height:74px; display:flex; flex-direction:column;
  align-items:center; justify-content:center; border-radius:10px; padding:10px 6px; }
.pp-gh-branch { font-size:10px; font-family:monospace; background:var(--bg-page); padding:1px 5px; border-radius:4px; color:var(--text-muted); }

/* 3SC Fixed badge on issue card header */
.pp-gh-fixed-badge { display:inline-flex; align-items:center; gap:5px; font-size:11px;
  font-weight:600; padding:2px 9px; border-radius:20px; flex-shrink:0;
  background:rgba(59,130,246,.12); color:#3b82f6; border:1px solid rgba(59,130,246,.25); }
.pp-gh-fixed-badge code { font-size:10px; font-family:monospace; opacity:.8; }
.pp-issue-has-fix { border-left-color:#3b82f6 !important; }

/* ── Detail view summary — matches card structure ────────────────────────── */
.pp-detail-summary { display:flex; gap:0; background:var(--bg-surface);
  border:1px solid var(--border-default); border-radius:12px; padding:20px 24px;
  margin-bottom:20px; align-items:flex-start; gap:32px; flex-wrap:wrap; }
.pp-ds-section { display:flex; flex-direction:column; gap:6px; }
.pp-ds-label { font-size:10px; font-weight:700; text-transform:uppercase;
  letter-spacing:.6px; color:var(--text-subtle); margin-bottom:2px; }
.pp-ds-total-row { display:flex; align-items:baseline; gap:8px; }
.pp-ds-total { font-size:42px; font-weight:700; color:var(--text-bright); line-height:1; letter-spacing:-1px; }
.pp-ds-total-sub { font-size:13px; color:var(--text-subtle); }
.pp-ds-pills { display:flex; gap:5px; flex-wrap:wrap; margin-top:2px; }
.pp-ds-divider { width:1px; background:var(--border-subtle); align-self:stretch; flex-shrink:0; }
.pp-ds-group-label { font-size:9px; font-weight:700; text-transform:uppercase;
  letter-spacing:.8px; color:var(--text-subtle); margin-bottom:5px; }
.pp-ds-row-2 { display:grid; grid-template-columns:1fr 1fr; gap:6px; min-width:220px; }
.pp-ds-row-3 { display:grid; grid-template-columns:1fr 1fr 1fr; gap:6px; min-width:280px; }
.pp-ds-row-2 .ov-sq, .pp-ds-row-3 .ov-sq {
  min-height:64px; display:flex; flex-direction:column;
  align-items:center; justify-content:center; border-radius:10px; padding:10px 6px;
  cursor:pointer; transition:opacity .15s; }
.pp-ds-row-2 .ov-sq:hover, .pp-ds-row-3 .ov-sq:hover { opacity:.8; }

/* Fix detail summary squares — big number, small label */
.pp-ds-row-2 .ov-sq .ov-sq-val,
.pp-ds-row-3 .ov-sq .ov-sq-val { font-size:32px; margin-bottom:6px; }
.pp-ds-row-2 .ov-sq .ov-sq-label,
.pp-ds-row-3 .ov-sq .ov-sq-label { font-size:10px; opacity:.75; }

/* ── Status square popovers ──────────────────────────────────────────────── */
.pp-sq-popover-wrap { position:relative; }
.pp-sq-pop {
  display:none; position:fixed; z-index:99999;
  background:var(--bg-surface); border:1px solid var(--border-strong,var(--border-default));
  border-radius:10px; box-shadow:0 12px 40px rgba(0,0,0,.5);
  min-width:190px; padding:6px; white-space:nowrap;
  /* Ensure opaque even inside stacking contexts */
  -webkit-backdrop-filter:none; backdrop-filter:none;
}
.pp-sq-pop.open { display:block; }
/* Arrow */
.pp-sq-pop::before { content:''; position:absolute; top:-6px; left:50%; transform:translateX(-50%);
  border:6px solid transparent; border-bottom-color:var(--border-default);
  border-top:none; }
.pp-sq-pop::after { content:''; position:absolute; top:-5px; left:50%; transform:translateX(-50%);
  border:5px solid transparent; border-bottom-color:var(--bg-surface);
  border-top:none; }
.pp-sq-pop-item { display:flex; align-items:center; gap:8px; padding:8px 10px;
  border-radius:6px; cursor:pointer; transition:background .1s; }
.pp-sq-pop-item:hover { background:var(--bg-page); }
.pp-sq-pop-pill { font-size:11px; font-weight:700; padding:2px 7px; border-radius:4px; flex-shrink:0; }
.pp-sq-pop-pill-p1 { background:rgba(185,28,28,.12); color:#b91c1c; }
.pp-sq-pop-pill-p2 { background:rgba(180,83,9,.12); color:#b45309; }
.pp-sq-pop-pill-p3 { background:rgba(161,98,7,.12); color:#92400e; }
.pp-sq-pop-label { font-size:13px; color:var(--text-secondary); flex:1; white-space:nowrap; }
.pp-sq-pop-count { font-size:13px; font-weight:600; color:var(--text-bright); }
.pp-sq-pop-hint { font-size:10px; color:var(--text-subtle); padding:6px 10px 2px;
  border-top:1px solid var(--border-subtle); margin-top:4px; }

/* Needs Response status */
.ov-sq-needs-response { background:rgba(234,179,8,.08); border:1.5px solid rgba(234,179,8,.3); }
.ov-sq-needs-response .ov-sq-val { color:#b45309; }
.ov-sq-needs-response .ov-sq-label { color:#b45309; }
.pp-nr-badge { display:inline-flex; align-items:center; gap:5px; font-size:11px;
  font-weight:600; padding:2px 9px; border-radius:20px; flex-shrink:0;
  background:rgba(234,179,8,.12); color:#92400e; border:1px solid rgba(234,179,8,.3); }
.pp-nr-marked-btn { background:rgba(234,179,8,.1); color:#92400e;
  border:1px solid rgba(234,179,8,.3); }
/* Ensure card pointer doesn't conflict with inner interactive elements */
.pp-card button, .pp-card a, .pp-card input { cursor:pointer; }
.pp-card .ov-sq { cursor:default; }

/* Status squares in card grid — pass clicks through to card */
.pp-card .ov-sq { pointer-events:none; cursor:inherit; }
.pp-card .pp-accepted-edit-btn, .pp-card .pp-nr-toggle-btn { pointer-events:auto; }

/* App icon image avatar */
.pp-avatar-img { width:34px; height:34px; border-radius:8px; object-fit:cover; flex-shrink:0; }

/* POAM history table */
.pp-history-table { width:100%; border-collapse:collapse; font-size:13px; }
.pp-history-table th { text-align:left; font-size:10px; font-weight:700; text-transform:uppercase;
  letter-spacing:.5px; color:var(--text-subtle); padding:6px 10px; border-bottom:1px solid var(--border-default); }
.pp-history-table td { padding:10px; border-bottom:1px solid var(--border-subtle); vertical-align:middle; }
.pp-history-table tr:last-child td { border-bottom:none; }
.pp-history-table tr:hover td { background:var(--bg-page); }

/* ── Detail header: history strip ───────────────────────────────────────── */
.pp-detail-header-top { display:flex; align-items:flex-start; justify-content:space-between; }
.pp-detail-history-strip { margin-top:12px; padding-top:10px; border-top:1px solid var(--border-subtle); }
.pp-history-loading, .pp-history-none { font-size:11px; color:var(--text-subtle); }
.pp-hist-track { display:flex; align-items:flex-start; gap:0; flex-wrap:wrap; overflow-x:auto; }
.pp-hist-item { background:var(--bg-page); border:1px solid var(--border-default); border-radius:8px;
  padding:8px 12px; min-width:140px; }
.pp-hist-current { border-color:var(--accent); background:rgba(59,130,246,.05); }
.pp-hist-label { font-size:11px; color:var(--text-muted); margin-bottom:4px; display:flex; align-items:center; gap:5px; }
.pp-hist-now { font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:.5px;
  color:var(--accent); background:rgba(59,130,246,.1); padding:1px 5px; border-radius:3px; }
.pp-hist-counts { display:flex; gap:8px; font-size:12px; font-weight:500; color:var(--text-secondary); }
.pp-hist-chips { display:flex; gap:4px; flex-wrap:wrap; margin-top:5px; }
.pp-hist-chip { font-size:10px; padding:1px 6px; border-radius:10px; font-weight:600; }
.pp-hist-good { background:rgba(22,197,74,.1); color:#4ade80; border:1px solid rgba(22,197,74,.2); }
.pp-hist-bad { background:rgba(239,68,68,.1); color:#f87171; border:1px solid rgba(239,68,68,.2); }
.pp-hist-sep { display:flex; align-items:center; padding:0 6px; align-self:center; }

/* Unmark fixed button */
.pp-unfix-btn { background:none; border:none; padding:0 0 0 6px; cursor:pointer;
  color:inherit; opacity:.5; font-size:11px; vertical-align:middle; }
.pp-unfix-btn:hover { opacity:1; color:#f87171; }

/* Regression flag on fixed badge */
.pp-fix-regression-flag { font-size:10px; background:rgba(245,158,11,.15); color:#f59e0b;
  border:1px solid rgba(245,158,11,.3); border-radius:4px; padding:1px 5px;
  margin-left:4px; font-weight:600; }

/* Regression warning in upload modal */
.pp-regression-warning { background:rgba(245,158,11,.08); border:1px solid rgba(245,158,11,.25);
  border-radius:8px; padding:10px 14px; margin-bottom:12px; font-size:13px; color:var(--text-secondary); }
.pp-regression-warning i { color:#f59e0b; margin-right:6px; }

/* Check all fixes button */
.pp-check-all-btn { background:var(--accent); color:#fff; border:none; }
.pp-check-all-btn:hover { background:var(--accent-hover); }
.pp-check-all-btn:disabled { opacity:.6; cursor:not-allowed; }
.pp-sections-header { display:flex; justify-content:flex-end; margin-bottom:8px; }

/* ── Issue card: right-side layout + quick action buttons ──────────────── */
.pp-issue-title-row { display:flex; align-items:center; gap:8px; flex-wrap:nowrap; }
.pp-issue-title { flex:1; min-width:0; }
.pp-issue-right { display:flex; align-items:center; gap:6px; flex-shrink:0; margin-left:auto; }
.pp-quick-actions { display:flex; align-items:center; gap:5px; }
.pp-qa-btn { display:inline-flex; align-items:center; gap:4px; font-size:11px; font-weight:500;
  padding:3px 9px; border-radius:6px; border:1px solid; cursor:pointer;
  transition:opacity .15s, background .15s; white-space:nowrap; }
.pp-qa-notfixed { background:rgba(239,68,68,.08); color:#dc2626;
  border-color:rgba(239,68,68,.2); }
.pp-qa-notfixed:hover { background:rgba(239,68,68,.15); }
.pp-qa-markfixed { background:transparent; color:var(--text-subtle);
  border-color:var(--border-default); }
.pp-qa-markfixed:hover { background:var(--bg-page); color:var(--text-secondary); }
.pp-qa-nr { background:transparent; color:var(--text-subtle); border-color:var(--border-default); }
.pp-qa-nr:hover { background:rgba(234,179,8,.08); color:#92400e; border-color:rgba(234,179,8,.3); }
.pp-qa-nr-active { background:rgba(234,179,8,.1); color:#92400e;
  border-color:rgba(234,179,8,.3); font-weight:600; }

/* ── Issue card: status cards below title ────────────────────────────────── */
.pp-status-cards { display:flex; gap:8px; padding:8px 12px 10px; border-top:1px solid var(--border-subtle); }
.pp-sc { display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:3px; padding:10px 16px; border-radius:8px; cursor:pointer; border:1px solid;
  min-width:110px; text-align:center; transition:opacity .15s, transform .1s;
  user-select:none; }
.pp-sc:hover { opacity:.85; transform:translateY(-1px); }
.pp-sc-icon { font-size:16px; }
.pp-sc-label { font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.4px; }
.pp-sc-sub { font-size:10px; opacity:.65; font-family:monospace; }

/* Not Fixed — neutral */
.pp-sc-unfixed { background:var(--bg-page); border-color:var(--border-default);
  color:var(--text-muted); }
/* 3SC Fixed — blue */
.pp-sc-fixed { background:rgba(59,130,246,.08); border-color:rgba(59,130,246,.25);
  color:#3b82f6; }
.pp-sc-fixed .pp-sc-sub { font-family:monospace; }
/* Response Required — neutral / amber when active */
.pp-sc-nr { background:var(--bg-page); border-color:var(--border-default);
  color:var(--text-muted); }
.pp-sc-nr-active { background:rgba(234,179,8,.1); border-color:rgba(234,179,8,.3);
  color:#92400e; }

/* Clickable 3SC Fixed badge */
.pp-gh-fixed-clickable { cursor:pointer; }
.pp-gh-fixed-clickable:hover { opacity:.8; }
/* Hide the old status cards */
.pp-status-cards { display:none; }

/* ── Action cards in expanded issue body ─────────────────────────────────── */
.pp-action-cards { display:flex; gap:10px; padding-top:14px; border-top:1px solid var(--border-subtle); margin-top:4px; }
.pp-action-card { display:flex; align-items:center; gap:12px; flex:1; padding:12px 16px;
  border-radius:10px; border:1px solid; cursor:pointer; transition:opacity .15s, transform .1s; }
.pp-action-card:hover { opacity:.85; transform:translateY(-1px); }
.pp-ac-icon { font-size:20px; flex-shrink:0; width:28px; text-align:center; }
.pp-ac-body { display:flex; flex-direction:column; gap:2px; }
.pp-ac-title { font-size:13px; font-weight:600; }
.pp-ac-desc { font-size:11px; opacity:.65; }

/* Revert to To Do */
.pp-ac-revert { background:rgba(239,68,68,.06); border-color:rgba(239,68,68,.2); color:#dc2626; }
/* Check GitHub fix */
.pp-ac-check { background:rgba(59,130,246,.06); border-color:rgba(59,130,246,.2); color:#3b82f6; }
/* Response Required — inactive */
.pp-ac-nr { background:var(--bg-page); border-color:var(--border-default); color:var(--text-muted); }
/* Response Required — active */
.pp-ac-nr-active { background:rgba(234,179,8,.1); border-color:rgba(234,179,8,.3); color:#92400e; }

/* Right-side status badges on issue title row */
.pp-status-todo-badge { font-size:11px; padding:3px 10px; border-radius:20px; font-weight:500;
  background:rgba(239,68,68,.08); color:#dc2626; border:1px solid rgba(239,68,68,.18); }
.pp-nr-badge-off { font-size:11px; padding:3px 10px; border-radius:20px; font-weight:500;
  background:transparent; color:var(--text-subtle); border:1px solid var(--border-default);
  cursor:pointer; transition:background .15s; }
.pp-nr-badge-off:hover { background:rgba(234,179,8,.08); color:#92400e; border-color:rgba(234,179,8,.25); }
.pp-nr-toggle-badge { cursor:pointer; }
/* Hide the expanded action cards (removed from body, now on title row) */
.pp-action-cards { display:none; }

/* Ensure issue title row uses full width so right-side badges are visible */
.pp-issue-card { width:100%; }
.pp-issue-head { width:100%; box-sizing:border-box; }
.pp-issue-title-row { width:100%; display:flex; align-items:center; gap:8px; }
.pp-issue-title { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; }
.pp-issue-right { display:flex; align-items:center; gap:6px; flex-shrink:0; margin-left:auto; padding-left:12px; }
