/* UPLINK // layout.css — App grid and top bar. */

.app {
  height: 100dvh;
  display: grid;
  grid-template-columns: 260px minmax(0, 1fr) 240px;
  grid-template-rows: var(--bar) minmax(0, 1fr);
  grid-template-areas: 'bar bar bar' 'side feed crew';
}
.bar {
  grid-area: bar;
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 0 16px;
  border-bottom: 1px solid var(--line);
  background: var(--bg);
  z-index: 5;
}
.brand {
  display: flex;
  align-items: center;
  gap: 10px;
  font-family: var(--display);
  font-weight: 900;
  font-size: 24px;
  letter-spacing: 0.04em;
  width: 228px;
}
.brand .sq {
  width: 20px;
  height: 20px;
  background: var(--accent);
  clip-path: polygon(0 0, 100% 0, 100% 70%, 70% 100%, 0 100%);
}
.brand .cur {
  margin-left: -8px;
}
.bar-mid {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  flex: 1;
  border-left: 1px solid var(--line);
  padding-left: 16px;
  height: 100%;
}
.bar-mid .lbl {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--accent);
  letter-spacing: 0.14em;
}
.ch-title {
  font-family: var(--display);
  font-weight: 800;
  font-size: 26px;
  text-transform: uppercase;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.bar-right {
  display: flex;
  align-items: center;
  gap: 10px;
}
.link-state {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  color: var(--ok);
}
.link-state i {
  width: 8px;
  height: 8px;
  background: currentColor;
  animation: blink 1.4s steps(2) infinite;
}
.link-state.down {
  color: var(--bad);
}
#menuBtn,
#crewBtn {
  display: none;
}

/* side */
