/* ── Sticky control header ─────────────────────────────────────────── */
.appbar {
  position: sticky; top: 0; z-index: 10;
  display: flex; flex-wrap: wrap; gap: .5rem 1rem; align-items: center;
  padding: .7rem 0; margin-bottom: 1.25rem;
  border-bottom: 1px solid var(--border); background: var(--bg);
}
.appbar .brand {
  font-size: 1rem; font-weight: 700; margin-right: .25rem; white-space: nowrap;
  letter-spacing: .2px;
}
.appbar .field { display: inline-flex; align-items: center; gap: .4rem; }
/* The bare [hidden] UA rule loses to the line above, so restate it with
   matching specificity — used to hide Channel/Location on the demo namespace. */
.appbar .field[hidden] { display: none; }
.appbar .field label { font-size: .78rem; }
.appbar select { font-size: .85rem; padding: .35rem .45rem; }

/* Searchable concept picker: a text input + absolutely-positioned dropdown
   standing in for a native <select> so it can be filtered as you type. */
.combo { position: relative; display: inline-flex; }
.combo input {
  font-size: .85rem; padding: .35rem .45rem; border-radius: .55rem;
  background: #161619; color: var(--text); border: 1px solid var(--border);
  min-width: 13rem;
}
/* Namespace & Channel hold short, fixed values (Prod/Personal, Phone/Demo), so
   they don't need the wide search box — keep them narrow to fit one line. */
#namespace-search, #channel-search { min-width: 7.5rem; }
.combo input:focus { outline: 2px solid var(--purple); outline-offset: 1px; }
.combo input:disabled { opacity: .45; cursor: default; }

/* Clear "×" for clearable combos (Concept/Channel): overlays the right edge of
   the input; leave room so long values don't run under it. */
.combo.clearable input { padding-right: 1.6rem; }
.combo-clear {
  position: absolute; right: .35rem; top: 50%; transform: translateY(-50%);
  display: inline-flex; align-items: center; justify-content: center;
  width: 1.15rem; height: 1.15rem; padding: 0; margin: 0;
  border: none; border-radius: 50%; background: transparent;
  color: var(--muted); font-size: 1rem; line-height: 1; cursor: pointer;
}
.combo-clear:hover:not(:disabled) { color: var(--text); background: #26262b; border-color: transparent; }
.combo-clear[hidden] { display: none; }
.combo-menu {
  position: absolute; top: calc(100% + 4px); left: 0; z-index: 20;
  margin: 0; padding: .25rem; list-style: none;
  min-width: 100%; max-height: 16rem; overflow-y: auto;
  background: var(--card); border: 1px solid var(--border);
  border-radius: .55rem; box-shadow: 0 8px 24px rgba(0,0,0,.45);
}
.combo-menu[hidden] { display: none; }
.combo-opt {
  padding: .35rem .5rem; border-radius: .4rem; cursor: pointer;
  white-space: nowrap;
}
.combo-opt:hover, .combo-opt.active { background: #26262b; }
.combo-empty { padding: .35rem .5rem; color: var(--dim); }
.appbar .spacer { flex: 1 1 auto; }

/* Privacy mode: hide just the provider and audio-profile pickers (the two
   .field spans in the test header) so the screen can be recorded without
   leaking them. Concept/location, status text, brand, and controls stay
   visible. Toggled on <body>. */
body.private .testbar .field { display: none; }
