/* Contextual unread state only. Badges do not participate in tab layout. */
.ui-root .ui-shell__tab:has(.ui-unread-badge) { position: relative; }
.ui-root .ui-unread-badge { position: absolute; inset-block-start: 4px; inset-inline-end: 6px; inline-size: 8px; block-size: 8px; pointer-events: none; }
.ui-root .ui-unread-badge[data-positive="true"]::before { content: ""; display: block; inline-size: 100%; block-size: 100%; border-radius: 50%; background: var(--ui-unread); }
.ui-root .ui-unread-status { min-inline-size: 0; display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-space-2); color: var(--ui-secondary); }
.ui-root .ui-unread-status__copy { min-inline-size: 0; overflow-wrap: anywhere; font-size: var(--ui-secondary-size); line-height: var(--ui-secondary-line); }
.ui-root .ui-unread-status[data-error="true"] .ui-unread-status__copy { color: var(--ui-danger); }
.ui-root .ui-unread-status .ui-button { min-inline-size: 44px; min-block-size: 44px; }
.ui-root .ui-unread-status .ui-button__label { overflow-wrap: normal; word-break: normal; text-wrap: balance; }
/* Pending source/ACK feedback remains a live status without moving the body
 * whose visibility authorizes it. Errors and explicit retry stay in normal flow. */
.ui-root .ui-unread-chat-status[data-pending="true"] { position: absolute; inset-block-start: 0; inset-inline-start: 0; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; pointer-events: none; }
@media (forced-colors: active) {
  .ui-root .ui-unread-badge[data-positive="true"]::before { background: Highlight; border: 1px solid CanvasText; }
}
