* { box-sizing: border-box; }
body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;
  background: #0f1115;
  color: #e6e6e6;
}
main { max-width: 720px; margin: 0 auto; padding: 24px 16px; }
h1 { font-size: 22px; margin: 0 0 12px; }
.status { font-size: 14px; color: #9aa0a6; margin-bottom: 16px; }
.status.ok { color: #4caf50; }
.status.speaking { color: #42a5f5; }
.status.err { color: #ef5350; }
.row { margin: 12px 0; }
.small { font-size: 14px; color: #9aa0a6; }
.hidden { display: none; }
input[type="password"] {
  width: 100%; padding: 10px 12px; border-radius: 8px;
  border: 1px solid #333; background: #181b21; color: #eee; font-size: 16px;
}
.btn {
  width: 100%; padding: 14px; border: 0; border-radius: 10px;
  background: #2e7d32; color: #fff; font-size: 17px; cursor: pointer;
}
.btn.stop { background: #c62828; }
.btn:disabled { opacity: .5; cursor: default; }
.log {
  margin-top: 20px; display: flex; flex-direction: column; gap: 10px;
  max-height: 60vh; overflow-y: auto;
}
.msg { padding: 10px 12px; border-radius: 10px; line-height: 1.5; white-space: pre-wrap; }
.msg.user { background: #1e3a5f; align-self: flex-end; max-width: 85%; }
.msg.bot { background: #23262d; align-self: flex-start; max-width: 85%; }
.msg.sys { background: transparent; color: #888; font-size: 13px; align-self: center; }
