/* OPERATOR 999 — shared components. */

/* ── Top command bar ───────────────────────────────────── */
.topbar {
  height: var(--topbar-h);
  display: flex;
  align-items: center;
  gap: var(--s4);
  padding: 0 var(--s4);
  background: var(--bg);
  border-bottom: 1px solid var(--line-2);
  position: sticky;
  top: 0;
  z-index: 100;
}
.brand {
  display: flex;
  align-items: center;
  gap: var(--s2);
  font-family: var(--display);
  font-weight: 900;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  font-size: 16px;
}
.brand__mark {
  background: var(--red);
  color: #fff;
  padding: 2px 6px;
  letter-spacing: 0.18em;
}
.brand__sub { color: var(--fg-faint); font-family: var(--mono); font-weight: 400; }
.topbar__spacer { flex: 1 1 auto; }
.topbar__meta {
  display: flex;
  align-items: center;
  gap: var(--s4);
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--fg-dim);
}
.clock { color: var(--fg); font-variant-numeric: tabular-nums; }

/* ── Buttons ───────────────────────────────────────────── */
.btn {
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--fg);
  background: var(--bg-2);
  border: 1px solid var(--line-2);
  padding: 10px 16px;
  cursor: pointer;
  transition: background 0.08s, border-color 0.08s, color 0.08s;
}
.btn:hover { background: var(--bg-3); border-color: var(--fg-faint); }
.btn:active { transform: translateY(1px); }
.btn:disabled { opacity: 0.45; cursor: not-allowed; }
.btn--primary { background: var(--red); border-color: var(--red); color: #fff; font-weight: 700; }
.btn--primary:hover { background: var(--red-bright); border-color: var(--red-bright); }
.btn--ghost { background: transparent; }
.btn--danger { background: transparent; border-color: var(--red); color: var(--red-bright); font-weight: 700; }
.btn--danger:hover { background: var(--red); color: #fff; }
.btn--block { display: block; width: 100%; }
.btn--lg { padding: 14px 20px; font-size: 13px; }
.btn--sm { padding: 6px 10px; font-size: 11px; }

/* ── Form fields ───────────────────────────────────────── */
.field { display: block; }
.field + .field { margin-top: var(--s4); }
.field__label {
  display: block;
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--fg-faint);
  margin-bottom: 6px;
}
.input {
  width: 100%;
  font-family: var(--mono);
  font-size: 14px;
  color: var(--fg);
  background: var(--bg-2);
  border: 1px solid var(--line-2);
  padding: 11px 12px;
}
.input::placeholder { color: var(--fg-faint); }
.input:focus { border-color: var(--red); outline: none; background: #1b1b1b; }

/* ── Alerts / banners ──────────────────────────────────── */
.alert {
  border: 1px solid var(--line-2);
  border-left-width: 3px;
  background: var(--bg-1);
  padding: 10px 12px;
  font-size: 12px;
  color: var(--fg-dim);
}
.alert--error { border-left-color: var(--red); color: #f3b6b6; }
.alert--ok { border-left-color: var(--green); color: #bfe8ad; }
.alert--info { border-left-color: var(--cyan); }

/* ── Auth / centered card pages ────────────────────────── */
.auth-wrap {
  min-height: calc(100vh - var(--topbar-h));
  display: grid;
  place-items: center;
  padding: var(--s5);
}
.card {
  width: 100%;
  max-width: 440px;
  background: var(--bg-1);
  border: 1px solid var(--line-2);
}
.card--wide { max-width: 560px; }
.card__head {
  padding: var(--s4) var(--s5);
  border-bottom: 1px solid var(--line);
  display: flex;
  align-items: baseline;
  justify-content: space-between;
}
.card__title { font-size: 22px; }
.card__step { font-size: 10px; letter-spacing: 0.16em; color: var(--fg-faint); text-transform: uppercase; }
.card__body { padding: var(--s5); }
.card__foot {
  padding: var(--s4) var(--s5);
  border-top: 1px solid var(--line);
  font-size: 12px;
  color: var(--fg-dim);
}

/* ASCII-bracketed section label, e.g. [ INCIDENT DATA ] */
.framed::before { content: "[ "; color: var(--red); }
.framed::after { content: " ]"; color: var(--red); }
.framed { letter-spacing: 0.16em; text-transform: uppercase; font-size: 10px; color: var(--fg-dim); }

/* ── Status dots ───────────────────────────────────────── */
.dot {
  display: inline-block;
  width: 8px; height: 8px;
  background: var(--fg-faint);
  vertical-align: middle;
}
.dot--available { background: var(--status-available); box-shadow: 0 0 6px var(--status-available); }
.dot--enroute { background: var(--status-enroute); box-shadow: 0 0 6px var(--status-enroute); }
.dot--onscene { background: var(--status-onscene); box-shadow: 0 0 6px var(--status-onscene); }
.dot--critical { background: var(--status-critical); box-shadow: 0 0 6px var(--status-critical); }

/* ── Definition list (telemetry key/value) ─────────────── */
.kv { display: grid; grid-template-columns: max-content 1fr; gap: 4px var(--s4); margin: 0; }
.kv dt { color: var(--fg-faint); font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; align-self: center; }
.kv dd { margin: 0; color: var(--fg); }

/* ── Staff ID badge ────────────────────────────────────── */
.badge-card {
  display: grid;
  grid-template-columns: 96px 1fr;
  gap: var(--s4);
  background: var(--bg-2);
  border: 1px solid var(--line-2);
  padding: var(--s4);
  position: relative;
}
.badge-card::before {
  content: "EMERGENCY CONTROL";
  position: absolute;
  top: 6px; right: 8px;
  font-size: 8px;
  letter-spacing: 0.2em;
  color: var(--fg-faint);
}
.badge-photo {
  width: 96px; height: 120px;
  background: var(--bg-3) center/cover no-repeat;
  border: 1px solid var(--line-2);
  display: grid; place-items: center;
  color: var(--fg-faint);
  font-size: 9px; letter-spacing: 0.1em; text-align: center;
}
.badge-name { font-family: var(--display); font-size: 20px; text-transform: uppercase; line-height: 1; margin-bottom: 2px; }
.badge-role { font-size: 10px; letter-spacing: 0.16em; color: var(--red); text-transform: uppercase; margin-bottom: var(--s3); }
.badge-strip {
  display: flex; gap: var(--s4); margin-top: var(--s3);
  border-top: 1px dashed var(--line-2); padding-top: var(--s2);
  font-size: 11px;
}

/* ── Env tag chips (custom base) ───────────────────────── */
.chips { display: flex; flex-wrap: wrap; gap: var(--s2); }
.chip {
  font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase;
  padding: 5px 9px; border: 1px solid var(--line-2); background: var(--bg-2);
  color: var(--fg-dim); cursor: pointer; user-select: none;
}
.chip[aria-pressed="true"] { border-color: var(--red); color: var(--fg); background: #211314; }

/* Loading shimmer (text) */
.loading { color: var(--fg-faint); }
.loading::after { content: "_"; animation: blink 1s steps(1) infinite; }
@keyframes blink { 50% { opacity: 0; } }
