Files
argus-wp-defence/assets/css/admin.css
T
ARGUSandClaude Sonnet 5 35efd3e485 ARGUS WordPress Defence 7.23.0
Real changes since 1.0.0, all live-verified before this release:

- Firewall: rule corpus expanded 19 -> 43 rules, real OWASP-CRS-equivalent
  coverage (XXE, SSRF, session fixation, Log4Shell/JNDI, scanner-tool
  detection, deeper SQL injection/XSS/PHP-injection).
- Fixed a real bug: a quarantined file's severity badge and its content
  analysis score could disagree with no explanation (e.g. a benign file
  showing CRITICAL next to Score 0); both are now derived consistently
  and shown together.
- ARGUS now always keeps itself updated, and can optionally do the same
  for every other installed plugin and theme (Settings, on by default) --
  uses WordPress's own native update system, nothing custom.
- Global Threat Intelligence is now opt-in, not automatic -- a single
  click on its own page, with an honest, specific description of exactly
  what's shared (an IP address, a reason code, a confidence score, a
  country). Previously connected automatically on activation.
- New first-run Welcome screen after activation: confirms what's already
  protecting the site, and surfaces the few real optional choices in one
  place.
- Dashboard: running version now visible in the header; new "IPs
  Tracked" and "ANIS Protections" metrics.
- Full WordPress.org Plugin Directory readiness audit performed against
  this codebase. Two real compliance issues found and fixed (see above:
  Global Threat Intelligence's default, and the self-update mechanism,
  which is excluded from this build entirely -- WordPress.org prohibits
  a plugin from using any update channel other than its own, even an
  inert one). This release is still self-distributed, not a WordPress.org
  submission -- that remains a future step.

Verified before publishing: this exact ZIP was installed, activated (14
admin pages loaded clean, zero PHP errors/warnings), and uninstalled
(zero leftover database tables or options) in a fresh, disposable
WordPress + MySQL environment.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-09 19:08:02 +00:00

450 lines
28 KiB
CSS

/* ARGUS WordPress Defence -- admin dashboard
* Same token palette as argus-appliance's own Reporting Center HTML
* output (report_html_helpers.go) -- deliberate, so this reads as part
* of the ARGUS family rather than a generic plugin skin (ADR-0053 §5's
* differentiation goal extends to the UI itself, not just detection).
*/
.argus-wpd-shell {
--bg: #0a0e17;
--panel: #10151f;
--panel-2: #141b28;
--border: rgba(148,163,184,.14);
--border-strong: rgba(148,163,184,.24);
--text: #e5ecf5;
--muted: #93a3b8;
--faint: #5c6b82;
--cyan: #00d4ff;
--cyan-dim: rgba(0,212,255,.12);
--violet: #a78bfa;
--violet-dim: rgba(167,139,250,.12);
--rose: #ff3d3d;
--rose-dim: rgba(255,61,61,.12);
--amber: #ffaa00;
--amber-dim: rgba(255,170,0,.12);
--orange: #ff8c1a;
--emerald: #00ff88;
--emerald-dim: rgba(0,255,136,.12);
--mono: ui-monospace, "SF Mono", "Cascadia Code", Consolas, monospace;
--radius: 12px;
/* Full-bleed within WP's #wpbody-content padding */
margin: 0 -20px;
padding: 0;
background: var(--bg);
background-image:
radial-gradient(ellipse 900px 500px at 15% -10%, rgba(0,212,255,.08), transparent 60%),
radial-gradient(ellipse 700px 500px at 100% 10%, rgba(167,139,250,.06), transparent 55%);
color: var(--text);
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
min-height: calc(100vh - 100px);
}
.argus-wpd-shell * { box-sizing: border-box; }
.argus-wpd-inner { max-width: 1280px; margin: 0 auto; padding: 28px 32px 60px; }
/* ---------- Top header ---------- */
.argus-wpd-topbar {
display: flex; align-items: center; gap: 16px; padding-bottom: 20px; margin-bottom: 8px;
border-bottom: 1px solid var(--border); flex-wrap: wrap;
}
.argus-wpd-logo {
width: 40px; height: 40px; border-radius: 10px; flex-shrink: 0;
background: linear-gradient(135deg, var(--cyan-dim), var(--violet-dim));
border: 1px solid var(--border-strong);
display: flex; align-items: center; justify-content: center; font-size: 20px;
box-shadow: 0 0 24px rgba(0,212,255,.15);
}
.argus-wpd-brand { display: flex; flex-direction: column; gap: 2px; }
.argus-wpd-eyebrow {
font: 700 10.5px/1 var(--mono); letter-spacing: .14em; text-transform: uppercase; color: var(--cyan);
display: flex; align-items: center; gap: 7px;
}
.argus-wpd-eyebrow .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--cyan); box-shadow: 0 0 8px var(--cyan); animation: argus-pulse 2s ease-in-out infinite; }
.argus-wpd-title { font-size: 19px; font-weight: 800; letter-spacing: -.01em; color: var(--text); font-variant-numeric: tabular-nums; }
.argus-wpd-domain-caption { font-size: 11.5px; color: var(--faint); }
@keyframes argus-pulse { 0%,100%{opacity:1} 50%{opacity:.35} }
.argus-wpd-status-badge {
margin-left: auto; display: flex; align-items: center; gap: 8px;
font: 700 11px/1 var(--mono); letter-spacing: .06em; text-transform: uppercase;
padding: 8px 14px; border-radius: 99px; border: 1px solid var(--border-strong); background: var(--panel);
}
.argus-wpd-status-badge.on { color: var(--emerald); border-color: rgba(0,255,136,.3); background: var(--emerald-dim); }
.argus-wpd-status-badge.on .dot { background: var(--emerald); box-shadow: 0 0 8px var(--emerald); }
.argus-wpd-status-badge.danger { color: var(--rose); border-color: rgba(230,103,103,.35); background: var(--rose-dim); }
.argus-wpd-status-badge.danger .dot { background: var(--rose); box-shadow: 0 0 8px var(--rose); }
.argus-wpd-status-badge.checking { color: var(--amber); border-color: rgba(255,170,0,.35); background: var(--amber-dim); }
.argus-wpd-status-badge.checking .dot { background: var(--amber); box-shadow: 0 0 8px var(--amber); }
.argus-wpd-status-badge .dot { width: 6px; height: 6px; border-radius: 50%; animation: argus-pulse 2s ease-in-out infinite; }
/* ---------- Nav tabs ---------- */
.argus-wpd-nav { display: flex; gap: 4px; margin: 18px 0 28px; flex-wrap: wrap; }
.argus-wpd-nav a {
font: 600 13px/1 -apple-system, sans-serif; color: var(--muted); text-decoration: none;
padding: 9px 16px; border-radius: 8px; border: 1px solid transparent; transition: all .15s;
}
.argus-wpd-nav a:hover { color: var(--text); background: var(--panel); }
.argus-wpd-nav a.active { color: var(--cyan); background: var(--cyan-dim); border-color: rgba(0,212,255,.3); }
/* ---------- Cards / grid ---------- */
.argus-wpd-grid { display: grid; grid-template-columns: 220px repeat(4, 1fr); gap: 16px; margin-bottom: 28px; }
@media (max-width: 1100px) { .argus-wpd-grid { grid-template-columns: 1fr 1fr; } }
.argus-wpd-card {
background: linear-gradient(180deg, var(--panel-2), var(--panel));
border: 1px solid var(--border); border-radius: var(--radius); padding: 20px;
position: relative; overflow: hidden;
}
.argus-wpd-card::before {
content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px;
background: linear-gradient(90deg, var(--cyan), transparent);
}
.argus-wpd-card.k-crit::before { background: linear-gradient(90deg, var(--rose), transparent); }
.argus-wpd-card.k-warn::before { background: linear-gradient(90deg, var(--amber), transparent); }
.argus-wpd-card.k-ok::before { background: linear-gradient(90deg, var(--emerald), transparent); }
/* ---------- Score gauge ---------- */
.argus-wpd-score { grid-row: span 1; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: 6px; }
.argus-wpd-score svg { width: 128px; height: 128px; }
.argus-wpd-score-num { font: 800 30px/1 var(--mono); fill: var(--text); }
.argus-wpd-score-track { fill: none; stroke: var(--border); stroke-width: 8; }
.argus-wpd-score-arc { fill: none; stroke: var(--cyan); stroke-width: 8; stroke-linecap: round; filter: drop-shadow(0 0 6px rgba(0,212,255,.6)); transition: stroke-dashoffset .6s ease; }
.argus-wpd-score-label { font: 700 10.5px/1 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--faint); margin-top: 4px; }
.argus-wpd-stat-label { font: 700 10.5px/1 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--faint); margin-bottom: 10px; }
.argus-wpd-stat-value { font: 800 30px/1 var(--mono); color: var(--text); font-variant-numeric: tabular-nums; }
.argus-wpd-card.k-crit .argus-wpd-stat-value { color: var(--rose); }
.argus-wpd-card.k-ok .argus-wpd-stat-value { color: var(--emerald); }
.argus-wpd-stat-sub { font-size: 11.5px; color: var(--faint); margin-top: 6px; }
/* ---------- Panels ---------- */
.argus-wpd-columns { display: grid; grid-template-columns: 1.4fr 1fr; gap: 20px; align-items: start; }
@media (max-width: 960px) { .argus-wpd-columns { grid-template-columns: 1fr; } }
.argus-wpd-panel {
background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius);
padding: 22px; margin-bottom: 18px;
}
.argus-wpd-panel h2, .argus-wpd-panel h3 {
font-size: 13px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--muted);
margin: 0 0 16px; display: flex; align-items: center; gap: 8px;
}
.argus-wpd-empty { color: var(--faint); font-size: 13px; font-style: italic; padding: 20px 0; text-align: center; }
/* ---------- Findings ---------- */
.argus-wpd-finding-list { display: flex; flex-direction: column; gap: 10px; }
.argus-wpd-finding-card {
border: 1px solid var(--border); border-left: 3px solid var(--faint); border-radius: 9px;
padding: 14px 16px; background: var(--panel-2);
}
.argus-wpd-finding-summary { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.argus-wpd-finding-title {
font-size: 13.5px; color: var(--text); font-weight: 650; flex: 1;
display: flex; align-items: center; gap: 7px; min-width: 200px;
}
.argus-wpd-finding-time { font: 500 11px/1 var(--mono); color: var(--faint); white-space: nowrap; }
.argus-wpd-flag { font-size: 15px; line-height: 1; flex-shrink: 0; }
.argus-wpd-finding-actions { margin-top: 12px; display: flex; gap: 8px; flex-wrap: wrap; }
.argus-wpd-finding-details { margin-top: 12px; }
.argus-wpd-finding-details summary {
cursor: pointer; font: 700 11px/1 var(--mono); letter-spacing: .04em; color: var(--cyan);
list-style: none; padding: 4px 0;
}
.argus-wpd-finding-details summary::-webkit-details-marker { display: none; }
.argus-wpd-finding-details summary::before { content: "\25B8 "; }
.argus-wpd-finding-details[open] summary::before { content: "\25BE "; }
.argus-wpd-finding-details[open] summary { margin-bottom: 2px; }
.argus-wpd-sev-badge {
font: 800 9.5px/1 var(--mono); letter-spacing: .06em; padding: 3px 8px; border-radius: 5px; flex-shrink: 0;
}
.argus-wpd-sev-critical { border-left-color: var(--rose) !important; }
.argus-wpd-sev-critical .argus-wpd-sev-badge { background: var(--rose-dim); color: var(--rose); border: 1px solid rgba(255,61,61,.3); }
.argus-wpd-sev-high { border-left-color: var(--orange) !important; }
.argus-wpd-sev-high .argus-wpd-sev-badge { background: rgba(255,140,26,.12); color: var(--orange); border: 1px solid rgba(255,140,26,.3); }
.argus-wpd-sev-medium { border-left-color: var(--amber) !important; }
.argus-wpd-sev-medium .argus-wpd-sev-badge { background: var(--amber-dim); color: var(--amber); border: 1px solid rgba(255,170,0,.3); }
.argus-wpd-sev-low, .argus-wpd-sev-info { border-left-color: var(--cyan) !important; }
.argus-wpd-sev-low .argus-wpd-sev-badge, .argus-wpd-sev-info .argus-wpd-sev-badge { background: var(--cyan-dim); color: var(--cyan); border: 1px solid rgba(0,212,255,.3); }
.argus-wpd-status-pill { font: 700 10px/1 var(--mono); padding: 3px 9px; border-radius: 99px; background: var(--panel); border: 1px solid var(--border-strong); color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.argus-wpd-status-open { color: var(--amber); border-color: rgba(255,170,0,.3); background: var(--amber-dim); }
/* explainability template */
.argus-explain { margin: 14px 0 0; display: grid; gap: 10px; }
.argus-explain dt { font: 700 10px/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--faint); margin-bottom: 3px; }
.argus-explain dd { margin: 0; font-size: 13px; color: var(--muted); line-height: 1.6; }
.argus-explain dd p { margin: 0; }
/* ---------- Buttons ---------- */
.argus-wpd-shell .button,
.argus-wpd-shell button.button,
.argus-wpd-shell .argus-wpd-finding-actions button {
font: 700 12px/1 -apple-system, sans-serif !important; padding: 9px 16px !important; height: auto !important;
border-radius: 8px !important; border: 1px solid var(--border-strong) !important;
background: var(--panel-2) !important; color: var(--text) !important; text-shadow: none !important; box-shadow: none !important;
}
.argus-wpd-shell .button:hover { border-color: var(--cyan) !important; color: var(--cyan) !important; }
.argus-wpd-shell .button-primary,
.argus-wpd-shell input[type="submit"].button-primary {
background: var(--cyan) !important; border-color: var(--cyan) !important; color: #001820 !important;
}
.argus-wpd-shell .button-primary:hover { background: #33ddff !important; }
/* ---------- Tables ---------- */
.argus-wpd-shell table.widefat {
background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden;
border-collapse: separate; border-spacing: 0;
}
.argus-wpd-shell table.widefat th {
background: var(--panel-2); color: var(--faint); font: 700 10.5px/1 var(--mono); text-transform: uppercase; letter-spacing: .06em;
border-bottom: 1px solid var(--border) !important; padding: 12px 16px;
}
.argus-wpd-shell table.widefat td { color: var(--muted); border-bottom: 1px solid var(--border) !important; padding: 12px 16px; font-size: 12.5px; }
.argus-wpd-shell table.widefat tr:last-child td { border-bottom: none !important; }
.argus-wpd-shell table.widefat code { background: var(--panel-2); color: var(--cyan); padding: 2px 6px; border-radius: 4px; font-size: 11.5px; }
.argus-wpd-shell table.widefat.striped > tbody > tr:nth-child(odd) { background: var(--panel-2); }
/* ---------- Settings form ---------- */
.argus-wpd-shell .form-table th { color: var(--text); font-weight: 650; padding: 18px 16px 18px 0; }
.argus-wpd-shell .form-table td { padding: 18px 0; }
.argus-wpd-shell .form-table label { color: var(--muted); font-size: 13px; }
.argus-wpd-shell select, .argus-wpd-shell input[type="checkbox"] { accent-color: var(--cyan); }
.argus-wpd-shell select {
background: var(--panel-2); color: var(--text); border: 1px solid var(--border-strong); border-radius: 7px; padding: 7px 10px;
}
.argus-wpd-shell .description { color: var(--faint); }
.argus-wpd-shell .notice,
.argus-wpd-shell .notice p,
.argus-wpd-shell .notice-warning,
.argus-wpd-shell .notice-warning p,
.argus-wpd-shell .notice-success,
.argus-wpd-shell .notice-success p,
.argus-wpd-shell .notice-error,
.argus-wpd-shell .notice-error p {
color: var(--text) !important;
}
.argus-wpd-shell .notice { background: var(--emerald-dim); border-left: 3px solid var(--emerald); border-radius: 6px; border-width: 0 0 0 3px; }
.argus-wpd-shell .notice-warning { background: var(--amber-dim); border-left-color: var(--amber); }
.argus-wpd-shell .notice-error { background: var(--rose-dim); border-left-color: var(--rose); }
/* ---------- Ban / recent tables spacing ---------- */
.argus-wpd-shell h1.argus-wpd-page-title { color: var(--text); font-size: 22px; font-weight: 800; margin: 0 0 4px; }
/* ---------- Pagination ---------- */
.argus-wpd-pagination { display: flex; align-items: center; justify-content: center; gap: 18px; margin: 24px 0 8px; }
.argus-wpd-page-link { color: var(--cyan); font: 700 12.5px/1 -apple-system, sans-serif; text-decoration: none; padding: 8px 14px; border-radius: 8px; border: 1px solid var(--border-strong); background: var(--panel); }
.argus-wpd-page-link:hover { border-color: var(--cyan); background: var(--cyan-dim); }
.argus-wpd-page-info { font: 600 12px/1 var(--mono); color: var(--faint); }
/* ---------- Inline forms (block IP, whitelist add) ---------- */
.argus-wpd-inline-form { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.argus-wpd-shell .argus-wpd-inline-form input[type="text"] {
background: var(--panel-2); color: var(--text); border: 1px solid var(--border-strong); border-radius: 7px;
padding: 9px 12px; font-size: 13px; min-width: 200px;
}
.argus-wpd-shell .argus-wpd-inline-form input[type="text"]:focus { border-color: var(--cyan); outline: none; }
/* ---------- Site-type templates ---------- */
.argus-wpd-template-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
@media (max-width: 1200px) { .argus-wpd-template-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .argus-wpd-template-grid { grid-template-columns: 1fr; } }
.argus-wpd-template-card {
background: var(--panel-2); border: 1px solid var(--border); border-radius: 10px; padding: 18px;
display: flex; flex-direction: column; gap: 10px;
}
.argus-wpd-template-card.active { border-color: rgba(0,212,255,.4); background: var(--cyan-dim); }
.argus-wpd-template-title { font: 700 14px/1.3 -apple-system, sans-serif; color: var(--text); display: flex; flex-direction: column; gap: 6px; align-items: flex-start; }
.argus-wpd-template-badge {
font: 700 9.5px/1 var(--mono); letter-spacing: .05em; text-transform: uppercase; padding: 3px 8px; border-radius: 5px;
background: var(--violet-dim); color: var(--violet); border: 1px solid rgba(167,139,250,.3);
}
.argus-wpd-template-badge.active { background: var(--cyan-dim); color: var(--cyan); border-color: rgba(0,212,255,.3); }
.argus-wpd-template-desc { font-size: 12px; color: var(--muted); line-height: 1.55; flex: 1; margin: 0; }
/* ---------- Whitelist / exceptions list ---------- */
.argus-wpd-exception-row {
display: flex; align-items: center; gap: 14px; padding: 11px 0; border-bottom: 1px solid var(--border);
}
.argus-wpd-exception-row:last-child { border-bottom: none; }
.argus-wpd-exception-row code { background: var(--panel-2); color: var(--cyan); padding: 3px 8px; border-radius: 5px; font-size: 12px; }
.argus-wpd-exception-row .note { flex: 1; color: var(--faint); font-size: 12px; }
.argus-wpd-exception-row .added { font: 500 11px/1 var(--mono); color: var(--faint); }
/* ---------- Donut stats (Statistics page) ---------- */
.argus-wpd-donut-row { display: flex; align-items: center; gap: 28px; flex-wrap: wrap; }
.argus-wpd-donut-svg { width: 168px; height: 168px; flex-shrink: 0; }
.argus-wpd-donut-svg circle { transition: stroke-dasharray .5s ease; }
.argus-wpd-donut-total { font: 800 22px/1 var(--mono); fill: var(--text); font-variant-numeric: tabular-nums; }
.argus-wpd-donut-legend { display: flex; flex-direction: column; gap: 10px; flex: 1; min-width: 180px; }
.argus-wpd-donut-legend-row { display: flex; align-items: center; gap: 10px; font-size: 12.5px; }
.argus-wpd-donut-swatch { width: 10px; height: 10px; border-radius: 3px; flex-shrink: 0; }
.argus-wpd-donut-legend-label { color: var(--text); flex: 1; }
.argus-wpd-donut-legend-value { font: 700 12px/1 var(--mono); color: var(--muted); font-variant-numeric: tabular-nums; }
.argus-wpd-donut-legend-value em { color: var(--faint); font-style: normal; margin-left: 3px; }
/* ---------- Welcome / onboarding: feature explainer grid ---------- */
.argus-wpd-feature-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }
@media (max-width: 900px) { .argus-wpd-feature-grid { grid-template-columns: 1fr; } }
.argus-wpd-feature-card {
background: var(--panel-2); border: 1px solid var(--border); border-radius: 10px; padding: 16px 18px;
}
.argus-wpd-feature-card-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 6px; }
.argus-wpd-feature-card-title { font: 700 13.5px/1.3 inherit; color: var(--text); }
.argus-wpd-feature-card-desc { font-size: 12.5px; color: var(--faint); line-height: 1.6; margin: 0; }
.argus-wpd-welcome-hero { text-align: center; padding: 8px 0 28px; }
.argus-wpd-welcome-hero h1 { font-size: 24px; margin: 0 0 8px; }
.argus-wpd-welcome-hero p { font-size: 14px; color: var(--muted); max-width: 560px; margin: 0 auto; }
/* ---------- Console: version tag ---------- */
.argus-wpd-version {
margin-left: 10px; flex-shrink: 0; font: 600 11px/1 var(--mono); letter-spacing: .02em;
color: var(--faint); padding: 6px 10px; border-radius: 9px;
background: var(--panel); border: 1px solid var(--border-strong);
}
/* ---------- Console: gear icon (Settings, off primary nav) ---------- */
.argus-wpd-gear {
margin-left: 10px; width: 38px; height: 38px; border-radius: 9px; flex-shrink: 0;
display: flex; align-items: center; justify-content: center; font-size: 16px;
background: var(--panel); border: 1px solid var(--border-strong); color: var(--muted);
text-decoration: none; transition: all .15s;
}
.argus-wpd-gear:hover, .argus-wpd-gear.active { color: var(--cyan); border-color: rgba(0,212,255,.35); background: var(--cyan-dim); }
/* ---------- Console: metric cards w/ trend ---------- */
.argus-wpd-metric-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 20px; }
.argus-wpd-metric-grid.argus-wpd-metric-grid-2 { grid-template-columns: repeat(2, 1fr); }
@media (max-width: 1100px) { .argus-wpd-metric-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 640px) { .argus-wpd-metric-grid { grid-template-columns: 1fr; } }
.argus-wpd-metric-card {
background: linear-gradient(180deg, var(--panel-2), var(--panel));
border: 1px solid var(--border); border-radius: var(--radius); padding: 18px 20px;
position: relative; overflow: hidden;
}
.argus-wpd-metric-card::before {
content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px;
background: linear-gradient(90deg, var(--cyan), transparent);
}
.argus-wpd-metric-label { font: 700 10.5px/1 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--faint); margin-bottom: 12px; }
.argus-wpd-metric-row { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.argus-wpd-metric-value { font: 800 28px/1 var(--mono); color: var(--text); font-variant-numeric: tabular-nums; }
.argus-wpd-metric-sub { font-size: 11px; color: var(--faint); margin-top: 8px; }
.argus-wpd-trend { font: 700 11.5px/1 var(--mono); display: inline-flex; align-items: center; gap: 3px; padding: 4px 8px; border-radius: 99px; white-space: nowrap; }
.argus-wpd-trend.up { color: var(--rose); background: var(--rose-dim); }
.argus-wpd-trend.down { color: var(--emerald); background: var(--emerald-dim); }
.argus-wpd-trend.flat { color: var(--faint); background: var(--panel); }
/* ---------- Console: activity area chart ---------- */
.argus-wpd-area-card { background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius); padding: 22px; margin-bottom: 20px; }
.argus-wpd-area-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 16px; flex-wrap: wrap; }
.argus-wpd-range-tabs { display: flex; gap: 4px; }
.argus-wpd-range-tabs a {
font: 700 11px/1 var(--mono); letter-spacing: .04em; color: var(--faint); text-decoration: none;
padding: 7px 12px; border-radius: 7px; border: 1px solid var(--border); transition: all .15s;
}
.argus-wpd-range-tabs a:hover { color: var(--text); }
.argus-wpd-range-tabs a.active { color: var(--cyan); background: var(--cyan-dim); border-color: rgba(0,212,255,.3); }
.argus-wpd-area-card h2 { font: 700 13px/1 -apple-system, sans-serif; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); margin: 0; }
.argus-wpd-area-svg { width: 100%; height: 160px; display: block; }
.argus-wpd-area-empty { color: var(--faint); font-size: 13px; font-style: italic; padding: 40px 0; text-align: center; }
/* ---------- Console: status badge row ---------- */
.argus-wpd-status-row { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 24px; }
.argus-wpd-status-chip {
display: flex; align-items: center; gap: 8px; font: 700 11px/1 var(--mono); letter-spacing: .06em; text-transform: uppercase;
padding: 9px 14px; border-radius: 9px; border: 1px solid var(--border-strong); background: var(--panel);
}
.argus-wpd-status-chip .dot { width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0; }
.argus-wpd-status-chip .label { color: var(--faint); }
.argus-wpd-status-chip .state { color: var(--text); }
.argus-wpd-status-chip.chip-cyan { border-color: rgba(0,212,255,.3); background: var(--cyan-dim); }
.argus-wpd-status-chip.chip-cyan .dot { background: var(--cyan); box-shadow: 0 0 8px var(--cyan); }
.argus-wpd-status-chip.chip-cyan .state { color: var(--cyan); }
.argus-wpd-status-chip.chip-emerald { border-color: rgba(0,255,136,.3); background: var(--emerald-dim); }
.argus-wpd-status-chip.chip-emerald .dot { background: var(--emerald); box-shadow: 0 0 8px var(--emerald); }
.argus-wpd-status-chip.chip-emerald .state { color: var(--emerald); }
.argus-wpd-status-chip.chip-amber { border-color: rgba(255,170,0,.3); background: var(--amber-dim); }
.argus-wpd-status-chip.chip-amber .dot { background: var(--amber); box-shadow: 0 0 8px var(--amber); }
.argus-wpd-status-chip.chip-amber .state { color: var(--amber); }
.argus-wpd-status-chip.chip-rose { border-color: rgba(255,61,61,.3); background: var(--rose-dim); }
.argus-wpd-status-chip.chip-rose .dot { background: var(--rose); box-shadow: 0 0 8px var(--rose); }
.argus-wpd-status-chip.chip-rose .state { color: var(--rose); }
.argus-wpd-status-chip.chip-violet { border-color: rgba(167,139,250,.3); background: var(--violet-dim); }
.argus-wpd-status-chip.chip-violet .dot { background: var(--violet); box-shadow: 0 0 8px var(--violet); }
.argus-wpd-status-chip.chip-violet .state { color: var(--violet); }
.argus-wpd-status-chip.chip-off .dot { background: var(--faint); }
.argus-wpd-status-chip.chip-off .state { color: var(--faint); }
/* ---------- Console: stat tiles (Firewall / Scanner) ---------- */
.argus-wpd-tile-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 20px; }
@media (max-width: 960px) { .argus-wpd-tile-row { grid-template-columns: 1fr 1fr; } }
.argus-wpd-tile { background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px 18px; }
.argus-wpd-tile-label { font: 700 10px/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--faint); margin-bottom: 8px; }
.argus-wpd-tile-value { font: 800 22px/1 var(--mono); color: var(--text); font-variant-numeric: tabular-nums; }
/* ---------- Console: Intelligence IOC rows + not-connected banner ---------- */
.argus-wpd-not-connected {
display: flex; align-items: flex-start; gap: 14px; padding: 18px 20px; margin-bottom: 20px;
background: var(--panel-2); border: 1px solid var(--border-strong); border-left: 3px solid var(--violet);
border-radius: var(--radius);
}
.argus-wpd-not-connected .icon { font-size: 20px; line-height: 1; flex-shrink: 0; }
.argus-wpd-not-connected h3 { margin: 0 0 6px; font-size: 13.5px; color: var(--text); font-weight: 700; }
.argus-wpd-not-connected p { margin: 0; font-size: 12.5px; color: var(--muted); line-height: 1.6; }
.argus-wpd-ioc-row {
display: flex; align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--border);
}
.argus-wpd-ioc-row:last-child { border-bottom: none; }
.argus-wpd-ioc-type {
font: 700 9.5px/1 var(--mono); letter-spacing: .05em; text-transform: uppercase; padding: 4px 9px; border-radius: 5px;
background: var(--violet-dim); color: var(--violet); border: 1px solid rgba(167,139,250,.3); flex-shrink: 0; min-width: 66px; text-align: center;
}
.argus-wpd-ioc-desc { flex: 1; font-size: 12.5px; color: var(--text); }
.argus-wpd-ioc-meta { font: 500 11px/1 var(--mono); color: var(--faint); white-space: nowrap; }
/* ---------- Console: scanner engine cards ---------- */
.argus-wpd-scan-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 20px; align-items: start; }
@media (max-width: 960px) { .argus-wpd-scan-grid { grid-template-columns: 1fr; } }
.argus-wpd-scan-fact-row { display: flex; align-items: center; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid var(--border); font-size: 12.5px; }
.argus-wpd-scan-fact-row:last-child { border-bottom: none; }
.argus-wpd-scan-fact-row .k { color: var(--faint); font: 700 10.5px/1 var(--mono); letter-spacing: .06em; text-transform: uppercase; }
.argus-wpd-scan-fact-row .v { color: var(--text); font-weight: 650; }
/* ---------- Threats: mockup-matched Live Threat Activity + feed ---------- */
.argus-wpd-subtle-label { font: 600 10.5px/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--faint); margin-left: 4px; }
.argus-wpd-live-chart-panel { margin-bottom: 0; padding-bottom: 14px; }
.argus-wpd-live-chart-panel .argus-wpd-chart-wrap { line-height: 0; }
/* Deliberately not wrapped in .argus-wpd-panel -- mirrors the reference
mockup's own composition, where the activity list flows directly
below the chart panel rather than sitting in its own bordered box. */
.argus-wpd-live-feed-rows { display: flex; flex-direction: column; margin: 0 0 24px; }
.argus-wpd-live-feed-row {
display: flex; align-items: center; gap: 18px;
padding: 14px 4px; border-bottom: 1px solid var(--border); font-size: 13.5px;
border-radius: 6px; transition: background .15s;
}
.argus-wpd-live-feed-row:hover { background: var(--panel-2); }
.argus-wpd-live-feed-row:last-child { border-bottom: none; }
.argus-wpd-live-feed-row.is-entering { animation: argusWpdRowEnter .5s ease-out; }
@keyframes argusWpdRowEnter {
from { opacity: 0; transform: translateY(-6px); background: var(--cyan-dim); }
to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) { .argus-wpd-live-feed-row.is-entering { animation: none; } }
.argus-wpd-live-feed-time { font: 600 12.5px/1 var(--mono); color: var(--faint); font-variant-numeric: tabular-nums; flex-shrink: 0; width: 96px; white-space: nowrap; }
.argus-wpd-live-feed-desc { color: var(--text); flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.argus-wpd-live-feed-action {
font: 800 10px/1 var(--mono); letter-spacing: .06em; text-transform: uppercase;
padding: 5px 12px; border-radius: 6px; flex-shrink: 0;
background: var(--rose-dim); color: var(--rose); border: 1px solid rgba(255,61,61,.3);
}
@media (max-width: 640px) {
.argus-wpd-live-feed-row { flex-wrap: wrap; }
.argus-wpd-live-feed-time { width: 100%; order: -1; }
.argus-wpd-live-feed-desc { white-space: normal; }
}