.contact-meta{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:6px;
  flex:0 0 auto;
}
.unread-badge{
  min-width:22px;
  height:22px;
  padding:0 6px;
  border-radius:999px;
  display:grid;
  place-items:center;
  background:var(--accent);
  color:#052e16;
  font-size:11px;
  font-weight:800;
  line-height:1;
}
.message-receipt{
  margin-left:3px;
  font-weight:800;
  letter-spacing:-2px;
}

/* UIN onboarding */
.uin-auth-card{overflow:visible}
.uin-panel{padding:4px 18px 20px}
.uin-panel h2{margin:4px 0 6px;font-size:24px}
.uin-lead{margin:0 0 4px;color:var(--muted);font-size:14px;line-height:1.5}
.uin-form{padding:16px 0 12px}
.secondary-auth-btn{
  width:100%;min-height:42px;border:1px solid var(--line);border-radius:11px;
  background:#111827;color:#cbd5e1;font-weight:650;padding:0 14px
}
.secondary-auth-btn:hover{background:#172033;border-color:#475569;color:white}
.uin-kicker{margin:12px 0 4px;text-align:center;color:var(--muted);font-size:13px;text-transform:uppercase;letter-spacing:.12em}
.issued-uin{
  margin:8px auto 18px;text-align:center;font-size:clamp(34px,9vw,52px);font-weight:850;
  letter-spacing:.04em;font-variant-numeric:tabular-nums;color:white
}
.uin-warning{
  display:flex;flex-direction:column;gap:6px;padding:14px;border:1px solid #854d0e;border-radius:12px;
  background:rgba(120,53,15,.22);color:#fde68a;line-height:1.45
}
.uin-warning span{color:#fcd34d;font-size:13px}
.issued-name-label{display:flex;flex-direction:column;gap:7px;margin-top:15px;color:#cbd5e1;font-size:13px}
.issued-name-label input{
  width:100%;border:1px solid var(--line);outline:none;padding:11px 12px;border-radius:10px;
  background:#111827;color:var(--text)
}
.issued-name-label input:focus{border-color:#3b82f6}
.issued-name-label small{color:var(--muted);line-height:1.35}
.uin-issued-actions{display:flex;flex-direction:column;gap:10px;margin-top:16px}
.uin-auth-message{padding-top:0}

/* Avatars now use the first letter of the visible name. */
.contact .avatar,.chat-person .avatar{font-size:16px;letter-spacing:0}

/* Online contact: highlight the whole avatar, not just a tiny dot. */
.contact:has(.status-dot.online) .avatar{
  background:radial-gradient(circle at 30% 30%,#22c55e,#14532d);
  color:#ecfdf5;
  box-shadow:
    0 0 0 2px rgba(34,197,94,.30),
    0 0 16px rgba(34,197,94,.32);
  transition:background .18s ease,box-shadow .18s ease;
}

/* Private contact list: exact-UIN add control. */
.contact-search-row{display:grid;grid-template-columns:minmax(0,1fr) 42px;gap:8px;align-items:center}
.add-contact-btn{
  width:42px;height:42px;border-radius:10px;border:1px solid rgba(34,197,94,.42);
  background:rgba(34,197,94,.16);color:#bbf7d0;font-size:24px;font-weight:800;line-height:1
}
.add-contact-btn:hover:not(:disabled){background:rgba(34,197,94,.28);border-color:#22c55e;color:white}

/* Public display name + local alias edit. */
.chat-name-row{display:flex;align-items:center;gap:6px;min-width:0;max-width:100%}
.chat-name-row strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.name-edit-btn{
  flex:0 0 auto;width:24px;height:24px;padding:0;border:0;border-radius:7px;
  background:transparent;color:#94a3b8;font-size:16px;line-height:1
}
.name-edit-btn:hover{background:#1e293b;color:white}

/* Account/password settings */
.settings-modal{
  position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:18px;
  background:rgba(2,6,23,.78);backdrop-filter:blur(8px)
}
.settings-card{
  width:min(100%,440px);border:1px solid var(--line);border-radius:18px;background:#0f172a;
  box-shadow:0 28px 80px rgba(0,0,0,.48);padding:18px
}
.settings-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:14px}
.settings-head h2{margin:0;font-size:22px}
.settings-head p{margin:5px 0 0;color:var(--muted);font-size:13px;line-height:1.45}
.settings-form{display:flex;flex-direction:column;gap:12px}
.settings-form label{display:flex;flex-direction:column;gap:7px;color:#cbd5e1;font-size:13px}
.settings-form input{
  width:100%;border:1px solid var(--line);outline:none;padding:11px 12px;border-radius:10px;
  background:#111827;color:var(--text)
}
.settings-form input:focus{border-color:#3b82f6}
.settings-message{min-height:20px;color:#86efac;font-size:13px;line-height:1.4}
.settings-message.error{color:#fca5a5}
.settings-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.settings-actions .send-btn{width:100%}

@media (max-width:760px){
  .contact{position:relative}
  .contact-meta{
    position:absolute;
    right:6px;
    top:6px;
    align-items:center;
    gap:4px;
  }
  .contact-meta .status-dot{display:none}
  .unread-badge{
    min-width:19px;
    height:19px;
    padding:0 5px;
    font-size:10px;
  }
  .contact:has(.status-dot.online) .avatar{
    background:radial-gradient(circle at 30% 30%,#2ee56f,#0f6b32);
    color:#fff;
    box-shadow:
      0 0 0 3px rgba(34,197,94,.38),
      0 0 22px rgba(34,197,94,.50);
  }
  .uin-panel h2{font-size:22px}
  .issued-uin{font-size:36px}
  .profile-card{row-gap:6px}
  .settings-card{padding:15px}
  .settings-actions{grid-template-columns:1fr}

  /* style.css hides the old search block on narrow screens. Keep only a clear + button visible. */
  .sidebar .search-wrap{display:block!important;padding:0 8px 10px}
  .contact-search-row{display:flex;justify-content:center}
  .contact-search-row #contactSearch{display:none}
  .add-contact-btn{width:48px;height:42px;flex:0 0 48px}
  .name-edit-btn{width:22px;height:22px;font-size:15px}
}
