/* SHMA overrides on AdminLTE */
.ex-link { text-decoration: none; font-weight: 600; }
.ex-link:hover { text-decoration: underline; }
.price { font-family: ui-monospace, monospace; font-size: 0.85em; opacity: 0.85; }
.spread-good { color: var(--bs-success); font-weight: 700; }
.spread-ok { color: var(--bs-warning); font-weight: 600; }
.lifetime { font-size: 0.85em; white-space: nowrap; }
.table-exchanges { font-size: 0.8rem; }
.table-exchanges td, .table-exchanges th { vertical-align: middle; white-space: nowrap; }
.trade-side { line-height: 1.35; }
.trade-side .ex-name { font-weight: 600; }
.trade-side .bal-warn { color: var(--bs-danger); font-size: 0.75rem; }
.trade-side .bal-ok { color: var(--bs-success); font-size: 0.75rem; }
.status-updating { opacity: 0.75; }
#exchange-list-sidebar .ex-mini { padding: 0.35rem 0; border-bottom: 1px solid var(--bs-border-color); }
#exchange-list-sidebar .ex-mini:last-child { border-bottom: none; }
.signal-item, .trade-item { padding: 0.5rem 0; border-bottom: 1px solid var(--bs-border-color); }
.signal-item:last-child, .trade-item:last-child { border-bottom: none; }
.ex-check { display: inline-flex; align-items: center; gap: 0.35rem; margin: 0.15rem 0.5rem 0.15rem 0; }
.key-badge { font-size: 0.65rem; padding: 0.1rem 0.35rem; border-radius: 0.25rem; background: var(--bs-secondary-bg); }
.key-badge.has { background: rgba(var(--bs-success-rgb), 0.2); color: var(--bs-success); }
.scanner-toast {
  position: fixed; bottom: 1.25rem; right: 1.25rem; z-index: 2000;
  background: var(--bs-dark); color: #fff; padding: 0.75rem 1.25rem;
  border-radius: 0.5rem; opacity: 0; transform: translateY(10px);
  transition: opacity 0.25s, transform 0.25s; max-width: 360px;
}
.scanner-toast.show { opacity: 1; transform: translateY(0); }
.table-opps tr.opp-row { cursor: pointer; }
.table-opps tr.opp-row:hover { background: rgba(var(--bs-primary-rgb), 0.08); }
#spread-chart { max-height: 320px; }
.table-opps td, .table-opps th { vertical-align: middle; }
