/* Companion drawer — 伙伴抽屉 */
#companionFab {
  position: fixed; right: 18px; bottom: 18px; z-index: 90;
  width: 52px; height: 52px; border-radius: 50%;
  background: linear-gradient(135deg, #b8860b, #8b5a2b);
  color: #fff; font-size: 22px; border: 2px solid rgba(255,255,255,.35);
  cursor: pointer; box-shadow: 0 4px 14px rgba(0,0,0,.4);
  display: none; /* 登录且有权限时由 JS 显示 */
}
#companionFab .fab-badge {
  position: absolute; top: -4px; right: -4px; min-width: 18px; height: 18px;
  border-radius: 9px; background: #e74c3c; color: #fff; font-size: 11px;
  line-height: 18px; text-align: center; padding: 0 4px; display: none;
}
#companionDrawer {
  position: fixed; top: 0; right: -380px; width: 360px; height: 100vh;
  background: #1c1610; border-left: 1px solid #3a2f22; z-index: 95;
  display: flex; flex-direction: column; color: #e8dcc8;
  transition: right .25s ease; box-shadow: -6px 0 24px rgba(0,0,0,.5);
}
#companionDrawer.open { right: 0; }
.cp-header { padding: 14px 16px; border-bottom: 1px solid #3a2f22; display: flex; align-items: center; gap: 8px; }
.cp-header h3 { margin: 0; font-size: 16px; flex: 1; }
.cp-close { background: none; border: none; color: #a89274; font-size: 20px; cursor: pointer; }
.cp-tabs { display: flex; border-bottom: 1px solid #3a2f22; }
.cp-tab { flex: 1; padding: 8px; text-align: center; background: none; border: none; color: #a89274; cursor: pointer; font-size: 13px; border-bottom: 2px solid transparent; }
.cp-tab.active { color: #e8dcc8; border-bottom-color: #b8860b; }
.cp-body { flex: 1; overflow-y: auto; padding: 12px; }
.cp-list { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.cp-chip { padding: 4px 10px; border-radius: 12px; border: 1px solid #4a3b28; background: #241c12; color: #cdbb9c; cursor: pointer; font-size: 12px; }
.cp-chip.active { background: #3a2c16; border-color: #b8860b; color: #ffd98a; }
.cp-msgs { display: flex; flex-direction: column; gap: 8px; margin-bottom: 8px; }
.cp-msg { max-width: 86%; padding: 8px 10px; border-radius: 10px; font-size: 13px; line-height: 1.5; white-space: pre-wrap; word-break: break-word; }
.cp-msg.user { align-self: flex-end; background: #3a2c16; border: 1px solid #5a4620; }
.cp-msg.ai { align-self: flex-start; background: #26201a; border: 1px solid #3a2f22; }
.cp-cites { margin-top: 4px; display: flex; flex-wrap: wrap; gap: 4px; }
.cp-cite { font-size: 10px; padding: 2px 6px; border-radius: 6px; background: rgba(184,134,11,.15); color: #b8860b; border: 1px solid rgba(184,134,11,.4); cursor: help; }
.cp-cite.hazy { color: #c9a227; }
.cp-cite.pattern { color: #8a7a5c; }
.cp-input { display: flex; gap: 6px; padding: 10px; border-top: 1px solid #3a2f22; }
.cp-input input { flex: 1; background: #241c12; border: 1px solid #4a3b28; color: #e8dcc8; border-radius: 8px; padding: 8px 10px; font-size: 13px; }
.cp-input button, .cp-btn { background: #8b5a2b; color: #fff; border: none; border-radius: 8px; padding: 8px 12px; cursor: pointer; font-size: 13px; }
.cp-btn.ghost { background: transparent; border: 1px solid #5a4620; color: #cdbb9c; }
.cp-btn.danger { background: #7a2e2e; }
.cp-create { display: flex; flex-direction: column; gap: 10px; }
.cp-create input { background: #241c12; border: 1px solid #4a3b28; color: #e8dcc8; border-radius: 8px; padding: 8px 10px; font-size: 13px; }
.cp-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.cp-cell { padding: 8px 4px; text-align: center; border: 1px solid #3a2f22; border-radius: 8px; background: #241c12; cursor: pointer; font-size: 11px; color: #cdbb9c; }
.cp-cell .code { display: block; font-weight: bold; font-size: 12px; color: #ffd98a; }
.cp-cell.active { border-color: #b8860b; background: #3a2c16; }
.cp-mem-group { margin-bottom: 14px; }
.cp-mem-group h4 { margin: 0 0 6px; font-size: 12px; color: #a89274; text-transform: uppercase; letter-spacing: 1px; }
.cp-mem { display: flex; align-items: flex-start; gap: 6px; padding: 6px 8px; border-radius: 8px; background: #241c12; margin-bottom: 4px; font-size: 12px; }
.cp-mem .ns { font-size: 9px; padding: 1px 4px; border-radius: 4px; background: rgba(138,122,92,.2); color: #8a7a5c; flex-shrink: 0; }
.cp-mem .del { margin-left: auto; background: none; border: none; color: #7a4a3a; cursor: pointer; font-size: 12px; }
.cp-empty { color: #6d5c44; font-size: 12px; text-align: center; padding: 20px 0; }
.cp-note { font-size: 11px; color: #8a7a5c; margin: 4px 0; }
.cp-cand { padding: 6px 8px; border: 1px dashed #5a4620; border-radius: 8px; margin: 4px 0; cursor: pointer; font-size: 12px; }
.cp-cand:hover { background: #2c2318; }
.cp-comment { position: fixed; right: 80px; bottom: 24px; z-index: 89; max-width: 280px; background: #26201a; border: 1px solid #5a4620; border-radius: 10px; padding: 10px 12px; color: #e8dcc8; font-size: 13px; box-shadow: 0 4px 14px rgba(0,0,0,.4); display: none; }
.cp-comment.show { display: block; }
.cp-comment .who { color: #b8860b; font-weight: bold; margin-right: 6px; }
