:root {
  --bg: #060a12;
}
* { box-sizing: border-box; }
body {
  margin: 0;
  background:
    radial-gradient(900px 500px at 80% -10%, rgba(16,185,129,0.08), transparent 60%),
    radial-gradient(700px 400px at 0% 10%, rgba(239,68,68,0.06), transparent 55%),
    var(--bg);
  font-family: 'IBM Plex Mono', monospace;
  min-height: 100vh;
}
.mono { font-family: 'IBM Plex Mono', monospace; }
.brand { font-family: 'Bricolage Grotesque', sans-serif; font-weight: 800; }
.tabular { font-variant-numeric: tabular-nums; }

.pulse-dot {
  width: 10px; height: 10px; border-radius: 9999px;
  box-shadow: 0 0 0 0 rgba(16,185,129,0.6);
  animation: pulse 1.8s infinite;
}
@keyframes pulse {
  0% { box-shadow: 0 0 0 0 rgba(148,163,184,0.5); }
  70% { box-shadow: 0 0 0 8px rgba(148,163,184,0); }
  100% { box-shadow: 0 0 0 0 rgba(148,163,184,0); }
}

.glow-green { box-shadow: 0 0 40px -12px rgba(16,185,129,0.4); border-color: rgba(16,185,129,0.25) !important; }
.glow-red { box-shadow: 0 0 40px -12px rgba(239,68,68,0.4); border-color: rgba(239,68,68,0.25) !important; }
.glow-amber { box-shadow: 0 0 40px -12px rgba(245,158,11,0.25); }

.flash-up { animation: fu 0.5s ease; }
.flash-down { animation: fd 0.5s ease; }
@keyframes fu { 0% { color: #10b981; text-shadow: 0 0 12px rgba(16,185,129,0.6);} 100% { text-shadow: none;} }
@keyframes fd { 0% { color: #ef4444; text-shadow: 0 0 12px rgba(239,68,68,0.6);} 100% { text-shadow: none;} }

::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-thumb { background: #1e293b; border-radius: 4px; }
::-webkit-scrollbar-track { background: transparent; }

button { cursor: pointer; }
button:active { transform: translateY(1px); }