.metrics-alert {
  margin-bottom: 10px;
}

.obs-pane {
  padding: 4px 16px 0;
}

.obs-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}

.obs-select {
  min-width: 240px;
}

.obs-stats {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  opacity: 0.85;
}

.obs-stamp {
  opacity: 0.7;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-size: 11.5px;
}

.obs-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  margin-right: 6px;
  vertical-align: middle;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--ant-color-success) 18%, transparent);
}

.obs-dot.is-alive {
  background: var(--ant-color-success);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--ant-color-success) 22%, transparent);
  animation: obs-dot-pulse 2.2s ease-in-out infinite;
}

.obs-dot.is-dead {
  background: var(--ant-color-error);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--ant-color-error) 22%, transparent);
}

@keyframes obs-dot-pulse {
  0%,
  100% {
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--ant-color-success) 22%, transparent);
  }
  50% {
    box-shadow: 0 0 0 6px color-mix(in srgb, var(--ant-color-success) 6%, transparent);
  }
}

@media (prefers-reduced-motion: reduce) {
  .obs-dot.is-alive {
    animation: none;
  }
}
