* { margin: 0; padding: 0; box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  font-family: var(--font);
  background: var(--bg);
  color: var(--text);
  -webkit-font-smoothing: antialiased;
  line-height: 1.5;
}

h1, h2, h3 { color: var(--ink); font-weight: 700; letter-spacing: -0.01em; }

button { font-family: inherit; }

a { color: var(--primary); text-decoration: none; }

.mono { font-family: var(--font-mono); }

/* Focus visibility — kept even though the palette is quiet */
:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
  border-radius: 4px;
}

/* Small utility classes used across modules */
.eyebrow {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-muted);
}

.badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border-radius: var(--radius-sm);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.badge-info    { background: rgba(14, 165, 233, 0.12); color: var(--primary); }
.badge-success { background: rgba(16, 185, 129, 0.12); color: var(--success); }
.badge-warning { background: rgba(217, 119, 6, 0.12); color: var(--warning); }
.badge-danger  { background: rgba(220, 38, 38, 0.12); color: var(--danger); }
.badge-neutral { background: #f1f5f9; color: var(--text-muted); }

.dot {
  width: 7px; height: 7px; border-radius: 50%;
  display: inline-block;
}
.dot-live { background: var(--success); box-shadow: 0 0 0 rgba(16,185,129,0.5); animation: pulse-dot 2s infinite; }
.dot-ok { background: var(--success); }
.dot-warn { background: var(--warning); }
.dot-down { background: var(--danger); }

.hidden { display: none !important; }

.visually-hidden {
  position: absolute; width: 1px; height: 1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
}

.text-muted { color: var(--text-muted); }
.text-sm { font-size: 12px; }

@media (prefers-reduced-motion: reduce) {
  * { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; }
}
