/* chat.css — what the people watching this receiver say to each other.

   Dense and monospaced like every reading on the page: this sits next to instruments, and a
   chat bubble would announce a different kind of software. */
.chat{display:flex; flex-direction:column; height:100%; min-height:0; margin-top:6px;}
/* The conversation takes the room and scrolls; the input keeps its line whatever happens,
   because a widget dragged short must lose history, never the way to answer. */
.chatlog{flex:1 1 auto; min-height:0; overflow-y:auto; overflow-x:hidden;
  font-family:var(--mono); font-size:11px; line-height:1.45;}
.cmsg{overflow-wrap:anywhere;}       /* a pasted URL wraps rather than widening the panel */
/* The time is styled on its own class, not under a message: an arrival carries one too, and
   scoped to `.cmsg` it lost its spacing there and read as `23:14olivier`. */
.ct{color:var(--dim2); margin-right:6px;}
.cmsg .cwho{color:var(--teal); font-weight:600; margin-right:6px;}
.cmsg .cwho::after{content:"";}
.cmsg .ctx{color:var(--ink);}
/* The frequency the AUTHOR was on, and the one gesture this widget offers: click and the
   receiver goes there. It looks like a control because it is one. */
.cbadge{font-style:normal; color:var(--amber); cursor:pointer; margin-right:6px;
  border:1px solid #3a2f16; border-radius:2px; padding:0 4px; background:#141008;}
.cbadge:hover{border-color:var(--amber);}
/* A frequency named INSIDE a message. It stays part of the sentence -- underlined, not boxed
   -- because a badge on every mention would turn a line of text into a row of buttons. */
.cref{font-style:normal; color:var(--amber); cursor:pointer;
  border-bottom:1px dotted currentColor;}
.cref:hover{border-bottom-style:solid;}
/* Lines the room did not say: an arrival, a departure, the answer to a command. Recessed and
   without the reading colour, because nobody said them — and the answer to a command was
   addressed to one person, so it must not read as something everyone was told. */
.csys{color:var(--dim); font-style:italic;}
.csys b{color:var(--dim); font-weight:600; font-style:normal;}
.cpriv{font-style:normal; border-left:2px solid var(--edge); padding-left:6px; margin:2px 0;}
.cpriv span{white-space:pre-wrap;}   /* a command answers in columns; they must hold */
.chatbar{display:flex; gap:6px; margin-top:6px; flex:0 0 auto;}
.chatin{flex:1 1 auto; min-width:0; font-family:var(--mono); font-size:11px; color:var(--ink);
  background:#0b1116; border:1px solid var(--edge); border-radius:2px; padding:4px 6px;}
.chatin:focus{outline:none; border-color:#2a3946;}
.chatin::placeholder{color:var(--dim2);}
/* No account: the field states why rather than looking broken, and stays clickable so the
   click opens the login instead of doing nothing. */
.chatin.off{cursor:pointer; color:var(--dim);}
.chatbar .btn{padding:4px 10px; font-size:11px;}
.chatbar .btn.off{opacity:.4;}
