:root {
  --bg: #0f1419;
  --panel: #1a222c;
  --border: #2a3542;
  --text: #e7eef6;
  --muted: #8b9aab;
  --accent: #3d8bfd;
  --up: #3dd68c;
  --down: #f07178;
  --unknown: #8b9aab;
}

body {
  background: radial-gradient(1200px 600px at 10% -10%, #1b2838 0%, var(--bg) 55%);
  color: var(--text);
  min-height: 100vh;
}

.min-vh-100 { min-height: 100vh; }

a { color: #9ec1ff; }
a:hover { color: #c5d9ff; }

.navbar { background: rgba(15, 20, 25, 0.85); backdrop-filter: blur(8px); }
.navbar-brand { letter-spacing: 0.02em; }

.card-panel {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 0.75rem;
}

.table-darkish {
  --bs-table-bg: transparent;
  --bs-table-color: var(--text);
  --bs-table-border-color: var(--border);
  --bs-table-hover-bg: rgba(255, 255, 255, 0.03);
  color: var(--text);
}

.form-control, .form-select {
  background: #121820;
  border-color: var(--border);
  color: var(--text);
}
.form-control:focus, .form-select:focus {
  background: #121820;
  border-color: var(--accent);
  color: var(--text);
  box-shadow: 0 0 0 0.2rem rgba(61, 139, 253, 0.2);
}

.badge-up { background: rgba(61, 214, 140, 0.15); color: var(--up); }
.badge-down { background: rgba(240, 113, 120, 0.15); color: var(--down); }
.badge-unknown { background: rgba(139, 154, 171, 0.15); color: var(--unknown); }

.install-box pre {
  background: #0c1015;
  border: 1px solid var(--border);
  border-radius: 0.5rem;
  padding: 0.75rem 1rem;
  white-space: pre-wrap;
  word-break: break-all;
  font-size: 0.85rem;
}

.text-secondary { color: var(--muted) !important; }
.list-group-item { border-color: var(--border); }

.flash-stack {
  position: fixed;
  top: 1rem;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1080;
  width: min(32rem, calc(100vw - 2rem));
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  pointer-events: none;
}

.flash-toast {
  pointer-events: auto;
  margin: 0;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
  transition: opacity 0.35s ease, transform 0.35s ease;
}

.flash-toast.is-hiding {
  opacity: 0;
  transform: translateY(-0.35rem);
}
