/* ===== Mini Calendar (cân đối) ===== */
:root{
  --cal-gap: .375rem;      /* khoảng cách giữa ô */
  --cal-radius: .6rem;     /* bo góc ô */
  --cal-num-size: .95rem;  /* cỡ số */
  --cal-ring: rgba(13,110,253,.25); /* viền “today” */
}

.cal-grid{
  display:grid;
  grid-template-columns:repeat(7, minmax(0,1fr));
  gap:var(--cal-gap);
  padding: .25rem .35rem .35rem;
  user-select:none;
}

.cal-dow{
  text-align:center;
  font-weight:600;
  font-size:.85rem;
  color:#6c757d;
}

.cal-day{
  position:relative;
  aspect-ratio:1/1;               /* luôn vuông */
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:var(--cal-radius);
  transition:transform .06s ease, background-color .12s ease;
  cursor:pointer;
}

.cal-day .num{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width: 2.1rem;                  /* vòng số cố định -> tròn đều */
  height:2.1rem;
  border-radius:999px;
  font-size:var(--cal-num-size);
  line-height:1;
}

.cal-day:hover:not(.disabled){
  background-color:#f6f7fb;
  transform: translateY(-1px);
}

/* Ngày khác tháng nhạt bớt */
.cal-day.other-month .num{ color:#9aa0a6; }

/* Ngày tương lai khóa */
.cal-day.disabled{ opacity:.35; cursor:not-allowed; }
.cal-day.disabled .num{ filter:grayscale(0.3); }

/* Hôm nay: vòng nhẫn nhẹ */
.cal-day.today .num{
  outline: 2px solid var(--cal-ring);
  outline-offset: 2px;
}

/* Đang chọn: nền brand, chữ trắng */
.cal-day.selected .num{
  background:#0d6efd;
  color:#fff;
  box-shadow: 0 0 0 3px rgba(13,110,253,.18);
}

/* Tiêu đề tháng gọn & cân */
#calMonthLabel{
  font-weight:700;
  font-size:1rem;
}

/* Nút prev/next đồng đều, không giật bố cục */
.btn-cal{
  width:2rem;height:2rem;padding:0;
  display:inline-flex;align-items:center;justify-content:center;
}

/* Khoảng cách card lịch */
.card .card-body.p-2{ padding:.5rem !important; }

/* Responsive nhỏ: giảm kích thước số */
@media (max-width: 360px){
  .cal-day .num{ width:1.9rem;height:1.9rem;font-size:.9rem;}
}

/* ===== Chat nội bộ ===== */
.chat-box{
  position: fixed;
  right: 1rem;
  bottom: 1rem;
  width: 320px;
  max-height: 70vh;
  background: #fff;
  border: 1px solid #dee2e6;
  border-radius: .75rem;
  overflow: hidden;
  z-index: 1040;
}
.chat-header{
  display:flex; align-items:center; justify-content:space-between;
  padding:.5rem .75rem; background:#f8f9fa; border-bottom:1px solid #e9ecef;
}
.chat-body{ height: 38vh; overflow: hidden; display:flex; flex-direction:column; }
.chat-body.collapsed{ display:none; }
.chat-messages{
  flex:1; overflow:auto; padding:.5rem; background:#fafafa;
}
.chat-input{ padding:.5rem .5rem .6rem; border-top:1px solid #e9ecef; background:#fff; }

.chat-row{ display:flex; margin:.25rem 0; }
.chat-row.mine{ justify-content:flex-end; }
.chat-row.other{ justify-content:flex-start; }
.chat-row .bubble{
  max-width: 80%;
  padding:.4rem .55rem;
  border-radius:.6rem;
  background:#e9f2ff;
  box-shadow: 0 1px 1px rgba(0,0,0,.04);
}
.chat-row.mine .bubble{ background:#d1f7d6; }
.chat-row .meta{ display:flex; gap:.5rem; font-size:.75rem; color:#6c757d; margin-bottom:.15rem; }
.chat-row .content{ white-space:pre-wrap; word-wrap:break-word; }
