/* ── Root Variables ─────────────────────────────────────────────── */
:root {
  --bg-primary:    #070f0a;   /* green-black, matches body.tnui.tn-dark */
  --bg-secondary:  #161b22;
  --bg-tertiary:   #1c2128;
  --bg-card:       #1c2128;
  --bg-hover:      #21262d;
  --border:        #30363d;
  --accent:        #6B5BB8;   /* Destiny SMS leaf green */
  --accent-hover:  #5C9130;
  --accent-glow:   rgba(91, 77, 164,0.18);
  /* Destiny SMS brand — sampled from the logo */
  --nx-lime:       #5B4DA4;
  --nx-lime-soft:  #9C8FE0;
  --nx-deep:       #3E3477;
  --nx-deep-soft:  #4A3E86;
  /* every panel carries body.tnui, and np-tn.css re-declares this whole trio
     per theme, so these are only a fallback. They still sit on the brand:
     fills hold white ink above 4.5:1, the -light names hold ink on a dark card. */
  --green:         #478040;
  --green-light:   #8FD08A;
  --red:           #C04545;
  --red-light:     #F0807A;
  --yellow:        #8F6E14;
  --yellow-light:  #E0B85C;
  --text-primary:  #e6edf3;
  --text-secondary:#8b949e;
  --text-muted:    #656d76;
  --sidebar-w:     260px;
  --topbar-h:      60px;
  --radius:        8px;
  --radius-lg:     12px;
  --shadow:        0 4px 24px rgba(0,0,0,0.4);
  --transition:    0.18s ease;
}

/* Light theme */
body.light {
  --bg-primary:   #f2f6ef;   /* a hint of the brand green */
  --bg-secondary: #ffffff;
  --bg-tertiary:  #f6faf3;
  --bg-card:      #ffffff;
  --bg-hover:     #eaf1e4;
  --border:       #d6e0cd;
  --accent:       #4D418B;
  --accent-hover: #3F7429;
  --accent-glow:  rgba(109,168,58,0.16);
  --text-primary: #17241d;
  --text-secondary:#4d5f54;
  --text-muted:   #6b7d71;
  /* the *-light trio above is tuned for the dark surface. On white they fall
     to 1.9–3.4:1, so the light theme swaps in brand hues that clear 4.5:1. */
  --green:        #3D6E37;
  --green-light:  #3D6E37;
  --red:          #B3352B;
  --red-light:    #B3352B;
  --yellow:       #8F6E14;
  --yellow-light: #8F6E14;
  --shadow:       0 4px 24px rgba(35,99,75,0.10);
}

/* ── Reset ──────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin:0; padding:0; }
html { scroll-behavior: smooth; }
body {
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  background: var(--bg-primary);
  color: var(--text-primary);
  font-size: 14px;
  line-height: 1.5;
  overflow-x: hidden;
}
a { color: var(--accent); text-decoration: none; }
button { cursor: pointer; border: none; background: none; color: inherit; }
input, select, textarea {
  background: var(--bg-tertiary); color: var(--text-primary);
  border: 1px solid var(--border); border-radius: var(--radius);
  padding: 8px 12px; font-size: 13px; width: 100%;
  transition: border-color var(--transition);
}
input:focus, select:focus, textarea:focus {
  outline: none; border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-glow);
}

/* ── Sidebar ────────────────────────────────────────────────────── */
.sidebar {
  position: fixed; top:0; left:0; bottom:0;
  width: var(--sidebar-w);
  background: var(--bg-secondary);
  border-right: 1px solid var(--border);
  display: flex; flex-direction: column;
  z-index: 100; overflow-y: auto; overflow-x: hidden;
  transition: transform var(--transition);
}
.sidebar.collapsed { transform: translateX(-100%); }
.main-wrapper.sidebar-collapsed { margin-left: 0; }
.sidebar::-webkit-scrollbar { width: 4px; }
.sidebar::-webkit-scrollbar-track { background: transparent; }
.sidebar::-webkit-scrollbar-thumb { background: var(--border); border-radius: 2px; }
.sidebar-brand {
  display: flex; align-items: center; gap: 10px;
  padding: 16px 20px; border-bottom: 1px solid var(--border);
  flex-shrink: 0; position: sticky; top:0;
  background: var(--bg-secondary); z-index:1;
}
.brand-icon { width:32px;height:32px;background:var(--accent);border-radius:8px;
  display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0; }
.brand-logo { width:34px;height:34px;border-radius:8px;object-fit:cover;flex-shrink:0; }
.brand-text-wrap { flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25; }
.brand-role { font-size:11px;color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:0.3px; }
.brand-text { font-size:16px;font-weight:500;flex:1; }
.brand-text strong { color:var(--accent); }
.sidebar-close { display:flex;font-size:16px;color:var(--text-secondary);cursor:pointer; }
.sidebar-nav { padding: 12px 0 24px; }

.nav-group-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 20px 6px; font-size:10px; font-weight:700;
  letter-spacing: 1.2px; color: var(--text-muted);
  text-transform: uppercase; cursor: pointer;
  user-select: none;
}
.nav-group-header:hover { color: var(--text-secondary); }
.nav-group-header i { transition: transform var(--transition); font-size:10px; }
.nav-group { overflow: hidden; transition: max-height 0.3s ease; max-height:2000px; }
.nav-group.closed { max-height: 0; }

.nav-item {
  display: flex; align-items: center; gap: 10px;
  padding: 9px 20px; cursor: pointer; border-radius: 0;
  color: var(--text-secondary); font-size:13.5px;
  transition: all var(--transition); position: relative;
}
.nav-item i { width:16px;text-align:center;font-size:14px;flex-shrink:0; }
.nav-item:hover { background:var(--bg-hover);color:var(--text-primary); }
.nav-item.active {
  background: var(--accent-glow); color: var(--accent);
  border-left: 3px solid var(--accent);
}
.nav-badge {
  margin-left:auto; font-size:10px; padding: 2px 7px;
  border-radius: 10px; background: var(--red); color:#fff;font-weight:700;
}
.nav-badge.live { background:var(--red);animation:pulse 1.5s infinite;font-size:8px;padding:0; width:10px;height:10px;border-radius:50%; }
@keyframes pulse { 0%,100%{opacity:1;transform:scale(1)} 50%{opacity:0.6;transform:scale(0.85)} }

/* ── Main Wrapper & Topbar ──────────────────────────────────────── */
.main-wrapper {
  margin-left: var(--sidebar-w);
  min-height: 100vh;
  display: flex; flex-direction: column;
  transition: margin-left var(--transition);
}
.topbar {
  height: var(--topbar-h);
  background: var(--bg-secondary);
  border-bottom: 1px solid var(--border);
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 24px; position: sticky; top:0; z-index:50;
}
.topbar-left { display:flex;align-items:center;gap:14px; }
.menu-toggle {
  width:36px;height:36px;border-radius:var(--radius);
  display:flex;align-items:center;justify-content:center;
  font-size:16px;color:var(--text-secondary);
  transition:background var(--transition);
}
.menu-toggle:hover { background:var(--bg-hover); }
.breadcrumb { color:var(--text-secondary);font-size:13px; }
.topbar-right { display:flex;align-items:center;gap:12px; }
.topbar-stat {
  display:flex;align-items:center;gap:6px;font-size:12px;
  color:var(--green-light);background:rgba(23,132,90,0.10);
  padding:4px 10px;border-radius:20px;
}
.pulse-dot { width:7px;height:7px;border-radius:50%;background:var(--green-light);
  animation:pulse 1.5s infinite; }
.topbar-btn {
  width:36px;height:36px;border-radius:var(--radius);
  display:flex;align-items:center;justify-content:center;
  font-size:15px;color:var(--text-secondary);
  transition:background var(--transition);
}
.topbar-btn:hover { background:var(--bg-hover); }
.topbar-avatar {
  display:flex;align-items:center;gap:8px;
  background:var(--bg-tertiary);border:1px solid var(--border);
  padding:6px 12px;border-radius:var(--radius);cursor:pointer;font-size:13px;
}
.topbar-avatar:hover { background:var(--bg-hover); }

/* ── Page Content ───────────────────────────────────────────────── */
.page-content { padding:24px;flex:1; }

/* ── Cards ─────────────────────────────────────────────────────── */
.card {
  background: var(--bg-card); border:1px solid var(--border);
  border-radius: var(--radius-lg); padding: 20px;
  box-shadow: var(--shadow);
}
.card-header {
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:18px; padding-bottom:14px;
  border-bottom:1px solid var(--border);
}
.card-title { font-size:15px;font-weight:600;color:var(--text-primary); }
.card-subtitle { font-size:12px;color:var(--text-muted);margin-top:2px; }

/* ── Stat Cards ─────────────────────────────────────────────────── */
.stats-grid {
  display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;
  margin-bottom:24px;
}
.stat-card {
  border:none;border-radius:var(--radius-lg);padding:20px 22px;
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  transition:transform var(--transition),box-shadow var(--transition);
  color:#fff;position:relative;overflow:hidden;
}
.stat-card:hover { transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,0.25); }
.stat-card .stat-icon { order:2; }
.stat-icon {
  width:52px;height:52px;border-radius:50%;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;font-size:20px;
  background:rgba(255,255,255,0.22);color:#fff;
}
.stat-card:has(.stat-icon.blue)   { background:linear-gradient(135deg,#4f6cf0,#3348c9); }
.stat-card:has(.stat-icon.green)  { background:linear-gradient(135deg,#1fa97a,#0f7f58); }
.stat-card:has(.stat-icon.red)    { background:linear-gradient(135deg,#ef5f56,#c0392b); }
.stat-card:has(.stat-icon.yellow) { background:linear-gradient(135deg,#f2a93b,#dd8a1a); }
.stat-card:has(.stat-icon.purple) { background:linear-gradient(135deg,#9061f9,#6d3ff0); }
.stat-card:has(.stat-icon.cyan)   { background:linear-gradient(135deg,#22c3e6,#0f9cbd); }
/* Fallback for browsers without :has() support — icon keeps its own tinted color */
.stat-icon.blue   { background:rgba(255,255,255,0.22); }
.stat-icon.green  { background:rgba(255,255,255,0.22); }
.stat-icon.red    { background:rgba(255,255,255,0.22); }
.stat-icon.yellow { background:rgba(255,255,255,0.22); }
.stat-icon.purple { background:rgba(255,255,255,0.22); }
.stat-icon.cyan   { background:rgba(255,255,255,0.22); }
.stat-label { font-size:11.5px;color:rgba(255,255,255,0.9);margin-bottom:6px;font-weight:700;letter-spacing:0.4px;text-transform:uppercase; }
.stat-value { font-size:28px;font-weight:800;color:#fff;line-height:1.1; }
.stat-change { font-size:11.5px;margin-top:5px;color:rgba(255,255,255,0.85) !important; }
.stat-change.up, .stat-change.down { color:rgba(255,255,255,0.85); }

/* ── Tables ─────────────────────────────────────────────────────── */
.table-wrap { overflow-x:auto; }
table { width:100%;border-collapse:collapse;font-size:13px; }
thead th {
  padding:10px 14px;text-align:left;font-weight:600;
  color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:0.8px;
  border-bottom:1px solid var(--border);white-space:nowrap;
}
tbody td {
  padding:11px 14px;border-bottom:1px solid var(--border);
  color:var(--text-primary);vertical-align:middle;
}
tbody tr:hover { background:var(--bg-hover); }
tbody tr:last-child td { border-bottom:none; }
tbody tr:nth-child(even) { background:rgba(255,255,255,0.02); }
.sortable { cursor:pointer;user-select:none;display:inline-flex;align-items:center; }
.sortable .sort-arrow { margin-left:4px;font-size:8px;opacity:0.5; }
.sortable.sort-asc .sort-arrow::after { content:'\25B2';opacity:1; }
.sortable.sort-desc .sort-arrow::after { content:'\25BC';opacity:1; }
.sortable:not(.sort-asc):not(.sort-desc) .sort-arrow::after { content:'\25B4\25BE'; }

/* ── Badges ─────────────────────────────────────────────────────── */
.badge {
  display:inline-flex;align-items:center;gap:4px;
  padding:3px 9px;border-radius:20px;font-size:11px;font-weight:600;white-space:nowrap;
}
.badge-green  { background:rgba(23,132,90,0.15);color:var(--green-light); }
.badge-red    { background:rgba(201,59,44,0.15);color:var(--red-light); }
.badge-yellow { background:rgba(180,116,15,0.15);color:var(--yellow-light); }
.badge-blue   { background:rgba(31,111,156,0.13);color:var(--tn-sky, #1F6F9C); }
.badge-purple { background:rgba(112,76,154,0.13);color:var(--tn-plum-ink, #4A3E86); }
.badge-gray   { background:var(--bg-tertiary);color:var(--text-secondary); }

/* ── Buttons ────────────────────────────────────────────────────── */
.btn {
  display:inline-flex;align-items:center;gap:7px;
  padding:8px 16px;border-radius:var(--radius);font-size:13px;font-weight:500;
  cursor:pointer;transition:all var(--transition);border:none;
}
.btn-primary { background:var(--accent);color:#fff; }
.btn-primary:hover { background:var(--accent-hover); }
.btn-success { background:var(--green);color:#fff; }
.btn-success:hover { background:var(--green-light); }
.btn-danger { background:var(--red);color:#fff; }
.btn-danger:hover { background:var(--red-light); }
.btn-warning { background:var(--yellow);color:#fff; }
.btn-outline {
  background:transparent;border:1px solid var(--border);color:var(--text-secondary);
}
.btn-outline:hover { background:var(--bg-hover);color:var(--text-primary); }
.btn-sm { padding:5px 11px;font-size:12px; }
.btn-icon { padding:7px;border-radius:var(--radius);color:var(--text-secondary); }
.btn-icon:hover { background:var(--bg-hover);color:var(--text-primary); }

/* ── Forms ──────────────────────────────────────────────────────── */
.form-group { margin-bottom:16px; }
.form-label { display:block;margin-bottom:6px;font-size:12px;font-weight:600;color:var(--text-secondary); }
.form-row { display:grid;grid-template-columns:1fr 1fr;gap:16px; }
.form-actions { display:flex;gap:10px;margin-top:20px;justify-content:flex-end; }

/* ── Page Header ────────────────────────────────────────────────── */
.page-header {
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:24px; flex-wrap:wrap; gap:12px;
}
.page-title { font-size:20px;font-weight:700;color:var(--text-primary); }
.page-subtitle { font-size:13px;color:var(--text-muted);margin-top:3px; }
.page-actions { display:flex;gap:10px;flex-wrap:wrap; }

/* ── Filters Bar ────────────────────────────────────────────────── */
.filters-bar {
  display:flex;gap:12px;flex-wrap:wrap;margin-bottom:18px;align-items:center;
}
.filters-bar input, .filters-bar select { width:auto;min-width:160px; }
.filter-spacer { flex:1; }

/* ── Pagination ─────────────────────────────────────────────────── */
.pagination {
  display:flex;align-items:center;gap:8px;justify-content:flex-end;
  margin-top:16px; padding-top:16px; border-top:1px solid var(--border);
}
.pagination .pg-info { font-size:12px;color:var(--text-muted);flex:1; }
.pagination button {
  width:32px;height:32px;border-radius:var(--radius);font-size:13px;
  border:1px solid var(--border);color:var(--text-secondary);
  display:flex;align-items:center;justify-content:center;
  transition:all var(--transition);
}
.pagination button:hover { background:var(--bg-hover);color:var(--text-primary); }
.pagination button.active { background:var(--accent);border-color:var(--accent);color:#fff; }
.pagination button:disabled { opacity:0.4;cursor:not-allowed; }

/* ── Charts ─────────────────────────────────────────────────────── */
.charts-grid { display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:20px;margin-bottom:24px; }
.chart-container { position:relative;height:220px; }

/* ── Live Feed ──────────────────────────────────────────────────── */
.live-feed { max-height:480px;overflow-y:auto; }
.live-feed::-webkit-scrollbar { width:4px; }
.live-feed::-webkit-scrollbar-thumb { background:var(--border);border-radius:2px; }
.feed-item {
  display:flex;align-items:center;gap:12px;
  padding:10px 0;border-bottom:1px solid var(--border);
  animation:fadeIn 0.3s ease;
}
.feed-item:last-child { border-bottom:none; }
@keyframes fadeIn { from{opacity:0;transform:translateY(-6px)} to{opacity:1;transform:translateY(0)} }
.feed-app-icon {
  width:36px;height:36px;border-radius:8px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;
  color:#fff;
}
.feed-info { flex:1;min-width:0; }
.feed-number { font-size:13px;font-weight:600;color:var(--text-primary); }
.feed-msg { font-size:12px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.feed-meta { text-align:right;flex-shrink:0; }
.feed-time { font-size:11px;color:var(--text-muted); }
.feed-country { font-size:11px;color:var(--text-secondary); }

/* ── Upload Zone ────────────────────────────────────────────────── */
.upload-zone {
  border:2px dashed var(--border);border-radius:var(--radius-lg);
  padding:48px 24px;text-align:center;cursor:pointer;
  transition:all var(--transition);
}
.upload-zone:hover, .upload-zone.dragover {
  border-color:var(--accent);background:var(--accent-glow);
}
.upload-zone i { font-size:36px;color:var(--text-muted);margin-bottom:12px; }
.upload-zone p { color:var(--text-secondary);margin-bottom:8px; }
.upload-zone small { color:var(--text-muted); }

/* ── Code Block ─────────────────────────────────────────────────── */
.search-result-row {
  display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius);
  cursor:pointer;font-size:13px;transition:background var(--transition);
}
.search-result-row:hover { background:var(--bg-hover); }

.tab-btn {
  padding:10px 16px;font-size:13px;font-weight:600;color:var(--text-muted);
  background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;
  display:flex;align-items:center;gap:6px;
}
.tab-btn.active { color:var(--accent);border-bottom-color:var(--accent); }
.tab-btn:hover { color:var(--text-primary); }
.alert { padding:12px 14px;border-radius:var(--radius);font-size:13px; }
.alert-success { background:rgba(23,132,90,0.12);color:var(--green-light);border:1px solid rgba(23,132,90,0.25); }
.alert-danger { background:rgba(201,59,44,0.12);color:var(--red-light);border:1px solid rgba(201,59,44,0.25); }

.code-block {
  background:var(--bg-primary);border:1px solid var(--border);
  border-radius:var(--radius);padding:14px 16px;
  font-family:'JetBrains Mono','Courier New',monospace;font-size:12px;
  /* #79c0ff was unreadable on the light surface this sits on */
  color:var(--text-primary);overflow-x:auto;position:relative;
}
.code-copy {
  position:absolute;top:8px;right:8px;padding:4px 8px;font-size:11px;
  background:var(--bg-tertiary);border:1px solid var(--border);
  border-radius:6px;color:var(--text-secondary);cursor:pointer;
}
.code-copy:hover { background:var(--bg-hover); }

/* ── Terminal ───────────────────────────────────────────────────── */
.terminal {
  background:#071309;border:1px solid var(--border);
  border-radius:var(--radius-lg);padding:16px;
  font-family:'JetBrains Mono','Courier New',monospace;font-size:12px;
  min-height:200px;color:#9C8FE0;overflow-y:auto;
}
.terminal-input-row { display:flex;align-items:center;gap:8px;margin-top:10px; }
.terminal-prompt { color:var(--green-light);flex-shrink:0; }
.terminal-input {
  flex:1;background:transparent;border:none;color:var(--text-primary);
  font-family:'Courier New',monospace;font-size:12px;padding:0;
}
.terminal-input:focus { outline:none; box-shadow:none; border:none; }

/* ── Progress Bar ───────────────────────────────────────────────── */
.progress-bar { height:6px;background:var(--bg-tertiary);border-radius:3px;overflow:hidden; }
.progress-bar-fill { height:100%;border-radius:3px;background:var(--accent);transition:width 0.4s ease; }
.progress-bar-fill.green { background:var(--green-light); }
.progress-bar-fill.red   { background:var(--red-light); }
.progress-bar-fill.yellow{ background:var(--yellow-light); }

/* ── Toast ──────────────────────────────────────────────────────── */
.toast-container { position:fixed;bottom:24px;right:24px;z-index:999;display:flex;flex-direction:column;gap:10px; }
.toast {
  display:flex;align-items:center;gap:10px;
  background:var(--bg-card);border:1px solid var(--border);
  border-radius:var(--radius);padding:12px 18px;min-width:260px;max-width:380px;
  box-shadow:var(--shadow);animation:slideInToast 0.3s ease;font-size:13px;
}
@keyframes slideInToast { from{opacity:0;transform:translateX(40px)} to{opacity:1;transform:translateX(0)} }
.toast.success { border-left:3px solid var(--green-light); }
.toast.error   { border-left:3px solid var(--red-light); }
.toast.warning { border-left:3px solid var(--yellow-light); }
.toast.info    { border-left:3px solid var(--accent); }
.toast i { font-size:15px; }
.toast.success i { color:var(--green-light); }
.toast.error i   { color:var(--red-light); }
.toast.warning i { color:var(--yellow-light); }
.toast.info i    { color:var(--accent); }

/* ── Modal ──────────────────────────────────────────────────────── */
.modal-overlay {
  position:fixed;inset:0;background:rgba(0,0,0,0.65);
  z-index:200;display:none;align-items:center;justify-content:center;padding:20px;
}
.modal-overlay.show { display:flex; }
.modal {
  background:var(--bg-secondary);border:1px solid var(--border);
  border-radius:var(--radius-lg);width:100%;max-width:560px;
  max-height:90vh;overflow-y:auto;box-shadow:var(--shadow);
  animation:modalIn 0.2s ease;
}
@keyframes modalIn { from{opacity:0;transform:scale(0.95)} to{opacity:1;transform:scale(1)} }
.modal-header {
  display:flex;align-items:center;justify-content:space-between;
  padding:18px 22px;border-bottom:1px solid var(--border);
}
.modal-header h3 { font-size:15px;font-weight:600; }
.modal-header button { color:var(--text-muted);font-size:16px; }
.modal-header button:hover { color:var(--text-primary); }
.modal-body { padding:22px; }

/* ── Two-col Layout ─────────────────────────────────────────────── */
.two-col { display:grid;grid-template-columns:1fr 1fr;gap:20px; }
.three-col { display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px; }

/* ── Threat indicators ──────────────────────────────────────────── */
.threat-low      { color:var(--green-light); }
.threat-medium   { color:var(--yellow-light); }
.threat-high     { color:#9E4508; }   /* burnt orange: 6.35:1 on white, 5.1:1 on a tinted row */
body.tnui.tn-dark .threat-high { color:#F49E57; }
.threat-critical { color:var(--red-light); }

/* ── Responsive ─────────────────────────────────────────────────── */
@media (max-width:900px) {
  .sidebar { transform:translateX(-100%); }
  .sidebar.open { transform:translateX(0); }
  .sidebar-close { display:flex; }
  .main-wrapper { margin-left:0; }
  .stats-grid { grid-template-columns:repeat(2,1fr); }
  .charts-grid { grid-template-columns:1fr; }
  .two-col, .three-col, .form-row { grid-template-columns:1fr; }
}
@media (max-width:520px) {
  .stats-grid { grid-template-columns:1fr; }
  .page-content { padding:16px; }
  .topbar { padding:0 10px;gap:6px; }
  .topbar-left { min-width:0;flex:1;overflow:hidden; }
  .breadcrumb { overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
  .topbar-right { gap:6px;flex-shrink:0; }
  #client-username, #agent-username, #mgr-username, .topbar-stat span:not(.pulse-dot) { display:none; }
  .topbar-btn { flex-shrink:0;width:34px;height:34px; }
}

/* ── Misc utility ───────────────────────────────────────────────── */
.text-muted   { color:var(--text-muted); }
.text-success { color:var(--green-light); }
.text-danger  { color:var(--red-light); }
.text-warning { color:var(--yellow-light); }
.text-accent  { color:var(--accent); }
.mt-4  { margin-top:16px; }
.mb-4  { margin-bottom:16px; }
.mt-6  { margin-top:24px; }
.mb-6  { margin-bottom:24px; }
.gap-2 { gap:8px; }
.flex  { display:flex; }
.flex-center { display:flex;align-items:center; }
.fw-600 { font-weight:600; }
.fs-12  { font-size:12px; }
.fs-13  { font-size:13px; }
.monospace { font-family:'Consolas','SFMono-Regular','Roboto Mono',monospace; font-size:14.5px; letter-spacing:0.4px; font-weight:600; }
.separator { height:1px;background:var(--border);margin:20px 0; }
.empty-state { text-align:center;padding:48px 24px;color:var(--text-muted); }
.empty-state i { font-size:40px;margin-bottom:12px;display:block; }
.spinner {
  width:20px;height:20px;border:2px solid var(--border);
  border-top-color:var(--accent);border-radius:50%;
  animation:spin 0.7s linear infinite;display:inline-block;
}
@keyframes spin { to{transform:rotate(360deg)} }
