.recent-row { position: relative; overflow: hidden; touch-action: pan-y; }
.recent-row > .status-item { position: relative; z-index: 1; margin: 0; border-radius: 0; background: var(--wechat-bg, #ededed); transition: transform .18s ease; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; }
.recent-row > .status-item.active { background: #dedede; }
/* 左滑按钮叠在行上方、从右侧滑入；行内容只左移头像宽度，会话名保持可见（微信样式）。 */
.recent-swipe-actions { position: absolute; top: 0; right: 0; bottom: 0; z-index: 2; display: flex; transform: translateX(100%); transition: transform .18s ease; }
.recent-action { flex: 0 0 auto; min-width: 72px; padding: 0 12px; border: 0; border-radius: 0; box-shadow: none; color: #fff; font-size: 15px; white-space: nowrap; cursor: pointer; }
.recent-action-read, .recent-action-unread { background: #168adc; }
.recent-action-hide { background: #f3a135; }
.recent-action-delete { background: #fa5151; }
.conversation-action-menu { position: fixed; z-index: 2200; min-width: 172px; padding: 6px 0; background: #fff; box-shadow: 0 4px 22px #0003; border-radius: 8px; }
.conversation-action-menu button { display: block; width: 100%; border: 0; border-radius: 0; box-shadow: none; background: transparent; text-align: start; padding: 14px 20px; color: #222; cursor: pointer; font-size: 15px; }
.conversation-action-menu button:hover, .conversation-action-menu button:focus-visible { background: #eee; }
.conversation-action-menu button.is-danger { color: #d93939; }
.contacts-entry { display: flex; align-items: center; gap: 12px; width: 100%; padding: 12px 16px; border: 0; border-bottom: 1px solid #eee; background: #fff; color: #222; cursor: pointer; text-align: start; font-size: 16px; }
.contacts-entry-icon { width: 42px; height: 42px; display: grid; place-items: center; background: #07b75b; color: white; border-radius: 5px; font-size: 24px; }
.contacts-list { background: #fff; padding-right: 24px; }
.page-list { position: relative; }
.contacts-list .contact-row:hover { background: #f5f5f5; }
.new-friends-sub { display: none; }
.contact-letter { padding: 5px 16px; color: #777; font-size: 13px; background: #efefef; }
.contact-row { display: flex; align-items: center; gap: 12px; padding: 12px 16px; width: 100%; min-height: 68px; border: 0; border-bottom: 1px solid #eee; background: #fff; text-align: start; color: #222; cursor: pointer; }
.contact-row .avatar { flex-shrink: 0; width: 42px; height: 42px; border-radius: 5px; }
.contact-name { font-size: 16px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* A–Z 字母条压在列表右缘。桌面浏览器的滚动条也在那条 22px 里，字母条一挡，
   拖动滚动条就落在字母条上——通讯录只能滚轮/触摸滑，拖不动（0922 用户反馈）。
   两条一起修：整条不吃指针事件（只有字母按钮吃），并按实际滚动条宽度整体左移。
   --contacts-scrollbar 由 app.js 量出来（触摸端为 0，桌面端 15px 上下）。 */
.contact-alphabet { position: absolute; right: calc(3px + var(--contacts-scrollbar, 0px)); top: 260px; bottom: 78px; width: 22px; display: flex; flex-direction: column; justify-content: center; z-index: 8; pointer-events: none; }
.contact-alphabet button { border: 0; background: transparent; padding: 0; min-height: 15px; flex-shrink: 1; color: #555; cursor: pointer; font-size: 11px; pointer-events: auto; }
.contact-alphabet button:focus-visible, .contact-alphabet button:active { color: #07a653; font-weight: bold; }
.contacts-groups-back { border: 0; background: #fff; text-align: start; width: 100%; padding: 12px 16px; color: #555; cursor: pointer; }
.device-login-banner { padding: 12px 16px; border-bottom: 1px solid #ddd; background: #eee; color: #777; font-size: 14px; display: flex; align-items: center; gap: 12px; }
.device-login-icon { width: 22px; height: 15px; border: 1.5px solid currentColor; display: inline-block; position: relative; }
.device-login-icon::after { content: ''; position: absolute; width: 12px; height: 1px; background: currentColor; bottom: -5px; left: 4px; }
/* 通讯录顶部两个入口统一成微信样式：白底整行、42px 圆角方形彩色图标、常规字重。 */
.new-friends-entry { gap: 12px; padding: 12px 16px; background: #fff; border-bottom: 1px solid #eee; cursor: pointer; }
.new-friends-entry:active, .contacts-entry:active { background: #f2f2f2; }
.new-friends-icon { width: 42px; height: 42px; border-radius: 5px; background: #fa9d3b; font-size: 0; }
.new-friends-title { font-weight: 400; font-size: 16px; letter-spacing: 0; color: #222; }
.contacts-entry-icon svg, .new-friends-icon svg { display: block; }
/* 左滑时头像连同右上角未读角标一起淡出，避免屏幕最左侧残留半个红点。 */
.recent-row .avatar-wrap { transition: opacity .18s ease; }
.recent-row.swiping .avatar-wrap { opacity: 0; }

/* 单蓝勾与 App 一致：位于气泡外的下方右侧，不改变正文和媒体气泡尺寸。 */
.message.has-read-receipt { padding-bottom:19px; }
.message-read-receipt { position:absolute; top:100%; right:2px; display:flex; justify-content:flex-end; width:16px; height:16px; color:#168bdb; text-align:right; line-height:16px; margin-top:3px; pointer-events:none; }
.message-read-receipt[hidden] { display:none !important; }
