body { padding-bottom: 250px; transition: padding-bottom .18s ease; }
body.keeper-shut { padding-bottom: 48px; }

.keeper-terminal {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 45;
  background: rgba(7, 8, 10, .97);
  border-top: 1px solid rgba(212, 175, 55, .42);
  box-shadow: 0 -18px 50px rgba(0, 0, 0, .45);
  backdrop-filter: blur(10px);
  color: var(--ink);
  font-family: var(--serif);
}

.keeper-handle {
  height: 42px;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0 12px;
  border-bottom: 1px solid var(--line-soft);
}
body.keeper-shut .keeper-handle { border-bottom: 0; }
.keeper-title {
  color: var(--gold);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: .15em;
  white-space: nowrap;
}
.keeper-presence {
  min-width: 0;
  flex: 1;
  color: var(--ink-3);
  font-size: 10px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.keeper-collapse,
.keeper-clear {
  border: 0;
  background: none;
  color: var(--ink-3);
  cursor: pointer;
  padding: 5px 7px;
  font-size: 11px;
}
.keeper-collapse:hover,
.keeper-clear:hover { color: var(--gold); }

.keeper-body {
  display: grid;
  grid-template-columns: 160px minmax(0, 1fr);
  height: 208px;
}
body.keeper-shut .keeper-body { display: none; }

.keeper-sidebar {
  border-right: 1px solid var(--line-soft);
  padding: 10px;
  background: rgba(255,255,255,.012);
}
.keeper-sidebar-label {
  color: var(--ink-3);
  font-size: 9px;
  text-transform: uppercase;
  letter-spacing: .1em;
  margin-bottom: 7px;
}
.keeper-actor {
  display: block;
  width: 100%;
  text-align: left;
  padding: 8px 9px;
  margin-bottom: 6px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--void);
  color: var(--ink-2);
  cursor: pointer;
  font-size: 11px;
}
.keeper-actor strong { display: block; font-size: 12px; font-weight: 500; }
.keeper-actor span { display: block; margin-top: 1px; color: var(--ink-3); font-size: 9px; }
.keeper-actor.active { border-color: var(--gold-dim); color: var(--gold); background: var(--gold-soft); }
.keeper-auth {
  margin-top: 9px;
  color: var(--ink-3);
  font-size: 9.5px;
  line-height: 1.4;
}
.keeper-auth a { color: var(--gold-dim); }

.keeper-main { min-width: 0; display: grid; grid-template-rows: 1fr auto; }
.keeper-log {
  overflow-y: auto;
  padding: 9px 12px 6px;
  font-size: 11px;
  line-height: 1.45;
}
.keeper-line { margin-bottom: 8px; max-width: 900px; }
.keeper-line .speaker {
  display: inline-block;
  margin-right: 6px;
  color: var(--gold-dim);
  font: 9px var(--mono);
  text-transform: uppercase;
  letter-spacing: .06em;
}
.keeper-line.user .speaker { color: var(--ink-3); }
.keeper-line.error { color: #cf7777; }
.keeper-line .meta { color: var(--ink-3); font: 9px var(--mono); margin-left: 6px; }
.keeper-line .text { white-space: pre-wrap; color: var(--ink-2); }
.keeper-line.user .text { color: var(--ink); }
.keeper-empty { color: var(--ink-3); font-style: italic; padding: 12px 0; }

.keeper-compose {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 7px;
  padding: 7px 10px 9px;
  border-top: 1px solid var(--line-soft);
}
.keeper-compose textarea {
  width: 100%;
  min-height: 38px;
  max-height: 92px;
  resize: vertical;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--void);
  color: var(--ink);
  padding: 8px 9px;
  font: 12px/1.4 var(--serif);
}
.keeper-compose textarea:focus { border-color: var(--gold-dim); outline: none; }
.keeper-send { min-width: 78px; }
.keeper-send:disabled { opacity: .5; cursor: wait; }

@media (max-width: 620px) {
  body { padding-bottom: 315px; }
  body.keeper-shut { padding-bottom: 48px; }
  .keeper-body { grid-template-columns: 1fr; grid-template-rows: auto 1fr; height: 273px; }
  .keeper-sidebar {
    border-right: 0;
    border-bottom: 1px solid var(--line-soft);
    display: flex;
    gap: 6px;
    align-items: center;
    padding: 7px 9px;
  }
  .keeper-sidebar-label { display: none; }
  .keeper-actor { width: auto; flex: 0 0 auto; margin: 0; padding: 6px 8px; }
  .keeper-actor span { display: none; }
  .keeper-auth { margin: 0 0 0 auto; font-size: 8.5px; text-align: right; }
  .keeper-log { padding: 8px 9px 5px; }
  .keeper-compose { padding: 6px 8px 8px; }
  .keeper-send { min-width: 62px; padding-left: 9px; padding-right: 9px; }
}
