/* Scoped repairs and approved product flows; retain the existing app identity. */
/* Low-interruption feedback. Placement still follows the existing chat/nav inset;
   errors keep their alert semantics and full text, never clipped to hide a failure. */
.toast, .toast[role="status"] {
  box-sizing: border-box;
  width: max-content;
  max-width: min(420px, calc(100% - 32px));
  display: block;
  min-height: 30px;
  padding: 5px 44px 5px 12px;
  border: 0;
  border-radius: 12px;
  background: var(--fg);
  color: var(--bg);
  font-size: 14px;
  font-weight: 400;
  line-height: 20px;
  text-align: left;
  overflow-wrap: anywhere;
  gap: 8px;
  box-shadow: var(--shadow-2);
  animation: none;
}
.toast .toast-text { display: block; min-width: 0; line-height: 20px; }
.toast button {
  position: absolute;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 44px;
  height: 44px;
  min-width: 44px;
  min-height: 44px;
  padding: 0;
  font-size: 18px;
  opacity: 1;
}
.toast button:focus-visible { outline: 2px solid currentColor; outline-offset: -4px; }
/* The inherited legacy #root rule forces every descendant to 700 !important. */
#root .toast, #root .toast .toast-text, #root .toast button { font-weight: 400 !important; }
/* Meaningful small text uses the readable foreground tier, not decorative gray. */
.app-shell { --ua-helper-text: var(--fg-2); --ua-text-action: var(--accent-strong); }
.settings-panel .hint, .settings-panel .settings-panel-section small,
.settings-panel .settings-panel-nav button > small,
.contact-directory .contact-open small { color: var(--ua-helper-text); }
.profile-edit-page:not(:has(.profile-paid-page)) small,
.profile-edit-page:not(:has(.profile-paid-page)) .hint,
.profile-qr-page small, .profile-qr-page .hint,
.chat-header .chat-title p:not(.is-online) { color: var(--ua-helper-text); }
.settings-panel .settings-panel-header button,
.profile-page .profile-subpage-header button,
.favorites-panel .profile-subpage-header button { color: var(--ua-text-action); }
.message-stage .bubble .message-meta { color: var(--ua-helper-text); }
/* A solid blue timestamp surface stays readable across the sent-bubble gradient. */
.message-stage .mine .bubble .message-meta { color: #fff; background: #16468f; padding: 2px 4px; border-radius: 4px; }
.message-stage .bubble-media-only .message-meta { color: #fff; background: #0009; }
/* Shared navigation text is readable on both solid and translucent tab bars. */
.rail .nav-label, .mobile-tabs .nav-label { color: var(--fg-2); }
.rail button.active .nav-label, .rail button[aria-pressed=true] .nav-label,
.mobile-tabs button.active .nav-label, .mobile-tabs button[aria-pressed=true] .nav-label { color: var(--accent-strong); }
.rail .nav-badge, .mobile-tabs .nav-badge { color: #fff; background: #b91c1c; }
.ua-auth-options-error { color: var(--fg); }
.ua-auth-options-error button { min-height: 44px; }
.messages-mode .conversation-pane > header { min-height: 56px; padding: max(12px, env(safe-area-inset-top)) 16px 8px; }
.messages-mode .conversation-pane .pane-title { font-size: 20px; line-height: 1.4; letter-spacing: 0; }
.messages-mode .message-pane-heading { min-height: 28px; }
.messages-mode .search { margin: 0 16px 8px; min-height: 44px; }
.messages-mode .search input { min-height: 44px; }
.messages-mode .list-filters { padding: 0 12px 6px; gap: 2px; }
.messages-mode .list-filters button { min-height: 44px; padding: 8px 12px; color: var(--fg-2); }
.messages-mode .list-filters button[aria-selected=true] { color: var(--accent-strong); }
.messages-mode .conversation-list .conversation { min-height: 68px; padding: 10px; gap: 12px; border-radius: 10px; }
.messages-mode .conversation-list .conversation.active { background: var(--accent-soft); }
.messages-mode .conversation-avatar .avatar { width: 44px; height: 44px; font-size: 18px; }
.messages-mode .conversation-main { min-height: 44px; }
.messages-mode .conversation-main strong { font-size: 15px; }
.messages-mode .conversation-main time { color: var(--fg-2); font-size: 12px; }
.messages-mode .conversation.unread .conversation-main time { color: var(--accent-strong); }
.messages-mode .conversation-preview p { color: var(--fg-2); }
.messages-mode button:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.app-shell .mobile-tabs button:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
@media (max-width: 760px) {
  /* One shared bottom bar for Messages, Contacts and My. Focused tasks retain their existing hide rules. */
  .app-shell .mobile-tabs { position: relative; flex: none; left: auto; right: auto; bottom: auto; height: auto; min-height: 64px; padding: 6px 8px max(6px, env(safe-area-inset-bottom)); border-radius: 0; border: 0; border-top: 1px solid var(--line); background: var(--surface); box-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none; }
  .app-shell .mobile-tabs button { flex: 1; min-height: 44px; color: var(--fg-2); }
  .app-shell .mobile-tabs button.active, .app-shell .mobile-tabs button[aria-pressed=true] { color: var(--accent-strong); }
  .messages-mode .conversation-list { padding-bottom: 12px; }
  .messages-mode .quick-action-trigger { width: 44px; height: 44px; }
}
.profile-me-home .profile-me-card { display: grid; grid-template-columns: 48px minmax(0, 1fr); padding: max(16px, env(safe-area-inset-top)) 16px 16px; gap: 12px; text-align: left; }
/* Short landscape: heading/search share a row; keep all controls and list scrolling. */
@media (max-width: 760px) and (max-height: 380px) and (min-aspect-ratio: 3/2) {
  .messages-mode .conversation-pane { display: grid; grid-template-columns: 140px minmax(0, 1fr); grid-template-rows: 48px 44px auto minmax(0, 1fr) auto; grid-template-areas: 'heading search' 'filters filters' 'invites invites' 'list list' 'tabs tabs'; }
  .messages-mode .conversation-pane > header { grid-area: heading; min-height: 0; padding: 2px 8px; gap: 4px; }
  .messages-mode .conversation-pane .pane-title { font-size: 18px; }
  .messages-mode .message-pane-heading { min-width: 0; }
  .messages-mode .message-network-status { font-size: 11px; }
  .messages-mode .conversation-pane .quick-actions > .quick-action-trigger { width: 44px; height: 44px; }
  .messages-mode .search { grid-area: search; margin: 2px 8px 2px 0; min-width: 0; }
  .messages-mode .list-filters { grid-area: filters; padding: 0 8px; }
  .messages-mode .invitation-banner { grid-area: invites; min-height: 44px; margin: 0 8px; }
  .messages-mode .conversation-pull-refresh { grid-area: list; min-height: 0; }
  .messages-mode .conversation-list { padding-bottom: 0; }
  .messages-mode .mobile-tabs { grid-area: tabs; }
  .app-shell .mobile-tabs { min-height: 52px; padding: 3px 8px max(3px, env(safe-area-inset-bottom)); }
  .app-shell .mobile-tabs button { display: flex; justify-content: center; align-items: center; gap: 8px; }
}
.profile-me-home .profile-me-avatar { width: 48px; height: 48px; font-size: 22px; }
.profile-me-home .profile-me-identity { margin: 0; justify-items: start; }
.profile-me-home .profile-me-identity .identity-name { justify-content: start; }
.profile-me-home .profile-me-identity strong { font-size: 18px; }
.profile-me-home .profile-me-identity small { color: var(--fg-2); }
.profile-me-home .profile-me-buttons { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; width: 100%; max-width: 360px; justify-self: start; margin: 0; }
.profile-me-home .profile-me-card .profile-me-buttons > button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-width: 0; min-height: 44px; margin: 0; padding: 10px 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); color: var(--fg); box-shadow: none; font-family: inherit; font-size: 14px; font-weight: 500; line-height: 22px; white-space: nowrap; cursor: pointer; }
.profile-me-home .profile-me-buttons > button svg { width: 18px; height: 18px; flex: none; color: var(--ua-text-action); stroke-width: 1.8; }
.profile-me-home .profile-me-buttons > button:focus-visible { outline: 2px solid var(--accent-strong); outline-offset: 3px; }
.profile-me-home .profile-me-card .profile-me-buttons > button:disabled { background: var(--surface-2); color: var(--fg-2); opacity: .6; cursor: not-allowed; }
.profile-me-home .profile-me-buttons > button:disabled svg { color: inherit; }
@media (hover: hover) {
  .profile-me-home .profile-me-card .profile-me-buttons > button:hover:where(html:not([data-ua-pointer="touch"]) *):not(:disabled) { background: var(--accent-soft); border-color: var(--accent); color: var(--ua-text-action); }
}
.profile-me-home .profile-me-card .profile-me-buttons > button:active:not(:disabled) { background: var(--accent-soft); border-color: var(--accent-strong); }
.profile-me-home .profile-me-bio { margin: 4px 0 0; font-size: 13px; line-height: 1.5; }
.profile-me-home .profile-me-actions button { min-height: 48px; }
.profile-me-home .profile-paid-summary { padding: 16px; min-height: 0; }
.app-shell.utility-mode.ua-focused-profile { grid-template-columns: minmax(0, 1fr); }
.ua-focused-profile > .rail, .ua-focused-profile .mobile-tabs { display: none; }
.ua-focused-profile > .conversation-pane { padding: 0 max(0px, calc((100% - 900px) / 2)); }
.ua-paid-sections { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.ua-paid-menu { display: flex; flex-direction: column; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
.ua-paid-menu button { display: flex; align-items: center; justify-content: space-between; min-height: 48px; padding: 12px 16px; border: 0; border-bottom: 1px solid var(--line); background: var(--surface); color: var(--fg); font: inherit; text-align: left; cursor: pointer; }
.ua-paid-menu button:last-child { border-bottom: 0; }
.ua-paid-menu button:focus-visible, .ua-paid-sections button:focus-visible { outline: 2px solid var(--accent); outline-offset: -3px; }
.ua-paid-sections .profile-paid-order { align-items: center; flex-wrap: wrap; gap: 12px; }
.ua-paid-sections .ua-order-open { display: flex; flex: 1 1 220px; min-width: 0; flex-direction: column; align-items: flex-start; gap: 6px; padding: 12px 0; border: 0; background: transparent; color: var(--fg); font: inherit; line-height: 1.5; text-align: left; cursor: pointer; }
.ua-paid-sections .ua-order-open small { font-size: 12px; color: var(--fg-2); }
.ua-order-id { overflow-wrap: anywhere; }
.ua-paid-sections .profile-paid-order-actions button { min-height: 44px; }
.ua-order-detail dl { margin: 0; }
.ua-order-detail dl > div { display: grid; grid-template-columns: 84px minmax(0, 1fr); gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.ua-order-detail dt { color: var(--fg-2); }
.ua-order-detail dd { margin: 0; overflow-wrap: anywhere; }
.ua-order-detail summary { min-height: 44px; padding: 12px 0; cursor: pointer; }
.ua-order-detail li { overflow-wrap: anywhere; }
.ua-order-detail .profile-paid-order-actions button { padding: 8px 16px; border: 1px solid var(--line); border-radius: var(--r-ctl); background: var(--surface-2); color: var(--fg); font: inherit; cursor: pointer; }
.ua-purchase-confirm .profile-paid-actions button { min-height: 44px; }
.ua-purchase-confirm .profile-paid-actions button + button { background: var(--surface-2); color: var(--fg); border: 1px solid var(--line); }
.ua-plan-comparison { overflow-x: auto; }
.ua-plan-comparison table { width: 100%; border-collapse: collapse; font-size: 13px; line-height: 1.5; }
.ua-plan-comparison th, .ua-plan-comparison td { padding: 12px 6px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.ua-plan-comparison th { color: var(--fg); font-weight: 600; }
.ua-plan-comparison p { line-height: 1.6; color: var(--fg-2); }
.profile-subpage-header h2:focus { outline: none; }
.profile-page .profile-subpage-header { grid-template-columns: 96px minmax(0, 1fr) 96px; }
.profile-page .profile-subpage-header button { min-height: 44px; white-space: nowrap; }
.review-recovery { padding: 12px 0; color: var(--fg); }
.review-recovery button { min-height: 44px; padding: 8px 16px; border: 1px solid var(--fg-2); border-radius: var(--r-pill); background: var(--surface-2); color: var(--fg); font: inherit; cursor: pointer; }
.review-recovery button:focus-visible, .review-tag-options input:focus-visible { outline: 2px solid var(--accent, #2875e8); outline-offset: 3px; }
.personal-contact-editor .review-tag-options { padding: 8px; margin: 12px 0; border: 1px solid var(--fg-2); border-radius: 8px; max-height: 180px; overflow: auto; }
.personal-contact-editor .review-tag-options label { display: flex; align-items: center; gap: 10px; min-height: 44px; margin: 0; overflow-wrap: anywhere; }
.personal-contact-editor .review-tag-options input { width: 20px; height: 20px; flex: 0 0 20px; }

.app-shell.utility-mode.ua-focused-broadcast { grid-template-columns: minmax(0, 1fr); }
.ua-focused-broadcast > .rail, .ua-focused-broadcast .mobile-tabs { display: none; }
.ua-focused-broadcast > .conversation-pane { padding: 0 max(0px, calc((100% - 900px) / 2)); }
.utility-list.ua-broadcast { display: flex; flex-direction: column; gap: 0; padding: 0 0 env(safe-area-inset-bottom); min-width: 0; background: var(--surface); }
.ua-broadcast .profile-subpage-header { flex: none; grid-template-columns: 96px minmax(0, 1fr) 96px; background: var(--surface); }
.ua-broadcast .profile-subpage-header h2 { white-space: normal; overflow: visible; }
.ua-broadcast .profile-subpage-header h2:focus { outline: none; }
.ua-broadcast button { min-height: 44px; font-size: 14px; }
.ua-broadcast button:focus-visible, .ua-broadcast input:focus-visible, .ua-picker-list:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.ua-broadcast button[aria-pressed=true] { background: var(--accent-soft); color: var(--accent-strong, var(--accent)); }
.ua-broadcast-edit, .ua-broadcast-confirm, .ua-broadcast-task { padding: 16px; display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.ua-broadcast-edit > p, .ua-broadcast-confirm > p, .ua-broadcast-task > p { margin: 0; }
.ua-broadcast-edit > label { display: grid; gap: 8px; }
.ua-broadcast textarea { box-sizing: border-box; resize: vertical; }
.ua-broadcast-recipients { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px 12px; padding: 12px 0 16px; border-bottom: 1px solid var(--line); }
.ua-broadcast-recipients p { margin: 4px 0 0; overflow-wrap: anywhere; }
.ua-broadcast-recipients > p { grid-column: 1 / -1; }
.ua-broadcast-length { margin-top: -12px; text-align: end; }
.ua-broadcast .broadcast-review { margin: 0; padding: 0; list-style: none; }
.ua-broadcast-confirm .broadcast-review { max-height: 40dvh; overflow: auto; overscroll-behavior-y: contain; flex-shrink: 0; }
.ua-broadcast .broadcast-review li { padding: 10px 0; border-bottom: 1px solid var(--line); overflow-wrap: anywhere; }
.ua-broadcast .broadcast-content { white-space: pre-wrap; overflow-wrap: anywhere; }
.ua-broadcast .broadcast-buttons { flex-wrap: wrap; }
.ua-broadcast .hint, .ua-broadcast small { color: var(--fg-2); }
.ua-broadcast .broadcast-scheduled { margin-top: 8px; }
.ua-broadcast.ua-picking { overflow: hidden; }
.ua-broadcast-picker { flex: 1; min-height: 0; display: flex; flex-direction: column; }
.ua-picker-tools, .ua-picker-footer { flex: none; padding: 8px 16px; background: var(--surface); }
.ua-picker-tools { border-bottom: 1px solid var(--line); }
.ua-picker-tools { padding-block: 6px; }
.ua-picker-selection-tools { display: flex; align-items: center; gap: 6px; position: relative; }
.ua-picker-selection-tools > button { padding: 8px; white-space: nowrap; }
.ua-picker-selection-tools .ua-picker-more { margin-left: auto; }
.ua-picker-selection-tools .ua-picker-more[open] { max-height: none; overflow: visible; }
.ua-picker-selection-tools .ua-picker-more summary { padding: 0 4px; white-space: nowrap; }
.ua-picker-explanation { position: absolute; z-index: 12; top: 100%; right: 0; width: min(320px, calc(100vw - 32px)); box-sizing: border-box; max-height: 40dvh; overflow: auto; padding: 12px; border: 1px solid var(--line); border-radius: var(--r-ctl); background: var(--surface); color: var(--fg); box-shadow: var(--shadow-2); }
.ua-picker-search { display: grid; gap: 6px; font-size: 13px; }
.ua-picker-search input { box-sizing: border-box; width: 100%; min-width: 0; min-height: 44px; padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--r-ctl); background: var(--surface-2); color: var(--fg); }
.ua-picker-filters, .ua-picker-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.ua-picker-filters { margin-top: 4px; flex-wrap: nowrap; }
.ua-picker-filters button { flex: 1 1 auto; padding: 8px 6px; white-space: nowrap; }
.ua-picker-more summary { min-height: 44px; display: list-item; align-content: center; cursor: pointer; color: var(--fg-2); font-size: 13px; }
.ua-picker-more summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.ua-picker-more[open] { max-height: 40dvh; overflow: auto; }
.ua-picker-count { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.ua-picker-actions button { padding: 8px 10px; }
.ua-picker-tools .hint { margin: 6px 0 0; }
.ua-picker-list { flex: 1; min-height: 0; overflow: auto; overscroll-behavior-y: contain; padding: 0 16px; }
.ua-broadcast .ua-picker-row { box-sizing: border-box; display: flex; flex-direction: row; align-items: center; gap: 12px; min-height: 68px; padding: 8px 0; margin: 0; border-bottom: 1px solid var(--line); cursor: pointer; }
.ua-picker-row input { flex: 0 0 22px; width: 22px; height: 22px; accent-color: var(--accent); }
.ua-picker-avatar { flex: 0 0 38px; width: 38px; height: 38px; display: grid; place-items: center; border-radius: 10px; background: var(--accent-soft); color: var(--accent-strong, var(--accent)); }
.ua-picker-identity { min-width: 0; overflow-wrap: anywhere; }
.ua-picker-identity strong { display: block; }
.ua-picker-footer { border-top: 1px solid var(--line); display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 4px 12px; }
.ua-picker-footer p { margin: 0 0 6px; font-size: 12px; line-height: 1.5; }
.ua-picker-footer > .primary { box-shadow: none; min-width: 128px; }
.ua-picker-footer > small { grid-column: 1 / -1; text-align: center; }
.ua-picker-footer .inline-link { margin-left: 8px; min-height: 32px; }
.ua-picker-empty { padding: 24px 0; }
.ua-draft-status { flex: none; padding: 6px 16px; background: var(--surface); border-top: 1px solid var(--line); }
.ua-draft-status p { font-size: 12px; line-height: 1.5; margin: 0; color: var(--fg-2); }
.ua-draft-status button { margin: 6px 8px 0 0; }
.ua-draft-recovery { padding: 16px; }
.ua-exit-notice { margin: 12px 0; padding: 12px; border: 1px solid var(--line); border-radius: 12px; text-align: left; }
.ua-exit-notice p { margin: 0 0 8px; font-size: 14px; line-height: 1.6; }
.ua-exit-notice button { min-height: 44px; padding: 8px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); color: var(--fg); font: inherit; cursor: pointer; }
.ua-exit-notice button:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }
.ua-exit-notice button:disabled { cursor: wait; opacity: .65; }
.ua-round-summary { flex: none; padding: 12px 16px; border-bottom: 1px solid var(--line); background: var(--surface); }
.ua-round-summary p { margin: 6px 0; line-height: 1.5; }
.ua-round-summary button { margin: 4px 8px 4px 0; }
.ua-round-summary details { margin-top: 8px; }
.ua-round-summary ul { max-height: 180px; overflow: auto; padding-left: 20px; }
.ua-round-target-note { color: var(--fg-2); }
.ua-broadcast .broadcast-schedule-toggle, .ua-broadcast .ua-round-repeat { display: flex; flex-direction: row; align-items: flex-start; gap: 8px; }
.ua-broadcast .broadcast-schedule-toggle input, .ua-broadcast .ua-round-repeat input { width: 18px; min-width: 18px; height: 18px; margin: 3px 0; }
@media (max-width: 380px) {
  .ua-broadcast .profile-subpage-header { grid-template-columns: 88px minmax(0, 1fr) 88px; }
  .ua-picker-tools, .ua-picker-footer { padding-right: 12px; padding-left: 12px; }
  .ua-picker-actions { gap: 2px; }
  .ua-picker-actions button { padding-right: 8px; padding-left: 8px; font-size: 13px; }
}
/* Only very short viewports need outer scrolling. Normal 536px phone content
   must give its remaining space to the roster, not a fixed 490px child. */
@media (max-height: 380px) {
  .ua-broadcast.ua-picking { overflow: auto; }
  .ua-broadcast-picker { min-height: 0; flex: 0 0 auto; }
  .ua-picker-list { flex: none; height: max(136px, 35dvh); }
}
.ua-round-history { border-top: 1px solid var(--line); padding: 12px 16px 0; margin-block: 12px; }
.ua-round-history ul { list-style: none; padding: 0; }
.ua-round-history li { padding-block: 10px; border-bottom: 1px solid var(--line); }
.ua-round-history button, .ua-bulk-recovery button { min-height: 44px; margin: 4px 8px 4px 0; white-space: normal; }
.ua-bulk-recovery { overflow-wrap: anywhere; padding: 16px; }
.group-drawer .group-preference { align-items: flex-start; gap: 16px; }
.group-drawer .group-preference > span:first-child { flex: 1 1 0; min-width: 0; overflow-wrap: anywhere; font-size: inherit; line-height: 1.5; }
.group-drawer .group-preference input[type=checkbox] { flex: 0 0 46px; min-width: 46px; margin-top: 3px; }
.group-drawer .group-setting-hint { line-height: 1.65; margin-top: 6px; }
/* Removal stays a one-step list action; keep 44px tap targets in a compact row. */
.group-drawer .ua-remove-members-list > .person { display: grid; grid-template-columns: 44px minmax(0, 1fr) 52px; align-items: center; gap: 8px; min-height: 44px; padding: 0; margin: 0; }
.group-drawer .ua-remove-members-list .group-member-profile { display: grid; place-items: center; width: 44px; height: 44px; min-width: 44px; min-height: 44px; padding: 0; margin: 0; background: transparent; border: 0; }
.group-drawer .ua-remove-members-list .avatar { width: 36px; height: 36px; min-width: 36px; margin: 0; justify-self: center; font-size: 15px; }
.group-drawer .ua-remove-members-list .group-person-name { display: grid; grid-template-columns: minmax(0, 1fr); align-items: center; gap: 2px; min-width: 0; margin: 0; }
.group-drawer .ua-remove-members-list .identity-name { min-width: 0; font-size: 14px; line-height: 1.3; }
.group-drawer .ua-remove-members-list .identity-name strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.group-drawer .ua-remove-members-list .group-person-name > small { grid-column: 1 / -1; margin: 0; font-size: 12px; line-height: 1.35; color: var(--fg-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.group-drawer .ua-remove-members-list .group-person-name > .ua-remove-member-meta { display: flex; min-width: 0; }
.ua-remove-member-account { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.ua-remove-member-role { flex: none; white-space: pre; }
.group-drawer .ua-remove-members-list .ua-member-action-button { grid-column: 3; width: 52px; min-width: 52px; height: 44px; min-height: 44px; margin: 0; padding: 0 8px; background: transparent; color: var(--danger-strong); border: 0; font-size: 14px; }
.group-drawer .ua-remove-members-list .ua-member-action-button:disabled { opacity: .5; }
.group-drawer .ua-remove-members-list .ua-member-action-button:hover:where(html:not([data-ua-pointer="touch"]) *):not(:disabled) { background: var(--surface-2); }
.group-drawer .ua-remove-members-list button:focus-visible { outline: 2px solid var(--accent-strong); outline-offset: -2px; }
.ua-cloud-confirm { border-top: 1px solid var(--line); padding-top: 16px; overflow-wrap: anywhere; }
.ua-cloud-confirm p, .ua-cloud-confirm li { line-height: 1.65; }
.ua-cloud-confirm-actions { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; margin-top: 16px; }
.group-drawer .ua-cloud-confirm-actions > button { display: flex; align-items: center; justify-content: center; width: 100%; min-width: 0; min-height: 46px; margin: 0; padding: 12px 14px; border: 0; border-radius: 10px; background: var(--surface-2); color: var(--fg); box-shadow: none; font: inherit; font-size: 14px; font-weight: 600; line-height: 22px; text-align: center; white-space: normal; overflow-wrap: anywhere; }
.group-drawer .ua-cloud-confirm-actions > button.primary { background: var(--accent-strong); color: var(--surface); }
.group-drawer .ua-cloud-confirm-actions > button.danger { background: var(--danger-strong); color: var(--surface); }
.group-drawer .ua-cloud-confirm-actions > button:hover:where(html:not([data-ua-pointer="touch"]) *):not(:disabled) { filter: brightness(.95); }
.group-drawer .ua-cloud-confirm-actions > button:disabled { opacity: .5; cursor: not-allowed; }
.group-drawer .ua-cloud-confirm-actions > button:focus-visible { outline: 2px solid var(--accent-strong); outline-offset: 3px; }

/* Match the existing one-line announcement bar; keep long URLs on one line. */
.chat-pane > .announcement.ua-cloud-pinned { display: flex; align-items: center; gap: 8px; width: 100%; min-width: 0; min-height: 0; height: calc(1.6em + 17px); box-sizing: border-box; margin: 0; padding: 5px 14px 5px 16px; border: 0; border-bottom: 1px solid var(--line); border-left: 4px solid var(--accent); border-radius: 0; box-shadow: none; background: var(--glass); color: var(--fg); font: inherit; font-size: 12px; font-weight: 400; line-height: 1.6; text-align: left; white-space: nowrap; overflow: hidden; flex-shrink: 0; }
.ua-cloud-pinned-label, .ua-cloud-pinned > svg { flex: 0 0 auto; }
.ua-cloud-pinned-url { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ua-cloud-pinned .ua-cloud-use { flex: 0 0 auto; min-width: 44px; height: 24px; min-height: 24px; margin: 0; padding: 0 10px; border: 0; border-radius: 6px; background: var(--accent-strong); color: var(--surface); box-shadow: none; font: inherit; font-size: 12px; line-height: 24px; cursor: pointer; }
.ua-cloud-use:hover:where(html:not([data-ua-pointer="touch"]) *):not(:disabled) { filter: brightness(.95); }
.ua-cloud-use:disabled { cursor: progress; opacity: .65; }
.ua-cloud-use:focus-visible { outline: 2px solid var(--accent-strong); outline-offset: 2px; }
.chat-pane > .ua-group-announcement { align-items: center; gap: 5px; width: 100%; min-width: 0; min-height: 0; margin: 0; padding: 8px 14px 8px 16px; border: 0; border-bottom: 1px solid var(--line); border-left: 4px solid var(--accent); border-radius: 0; box-shadow: none; font: inherit; font-size: 12px; line-height: 1.6; text-align: left; white-space: nowrap; overflow: hidden; cursor: pointer; }
.ua-announcement-icon,.ua-announcement-label { flex: 0 0 auto; }
.ua-announcement-preview { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.ua-group-announcement:hover:where(html:not([data-ua-pointer="touch"]) *):not(:disabled) { background: var(--surface-2); }
.ua-group-announcement:disabled { cursor: progress; opacity: .65; }
.ua-group-announcement:focus-visible { outline: 2px solid var(--accent-strong); outline-offset: -3px; }
.ua-notification-settings dl { display: grid; grid-template-columns: minmax(76px,1fr) minmax(0,2fr); gap: 12px; margin-block: 16px; }
.ua-notification-settings dd { margin: 0; overflow-wrap: anywhere; }
.ua-notification-settings dt { color: var(--fg-2); }
.ua-notification-settings button { min-height: 44px; white-space: normal; margin-block: 4px; }
/* Missing historical data is neutral, not a guessed current profile. */
.contact-card-missing{padding:12px;max-width:280px;overflow-wrap:anywhere}
.contact-card-missing p{margin:6px 0}.contact-card-missing small{display:block;font-size:12px;line-height:1.5;color:var(--muted,#667085)}
.contact-private-fields,.contact-metadata-editor{display:grid;gap:12px;min-width:0;margin:12px 0}
.contact-private-fields .contact-book-row{min-height:48px;width:100%;gap:12px;text-align:left}
.contact-private-fields .contact-book-row small{max-width:65%;overflow-wrap:anywhere;text-align:right}
.contact-metadata-editor label{display:grid;gap:6px}.contact-metadata-editor .review-tag-options label{display:flex}
.contact-metadata-editor input:not([type=checkbox]){min-width:0;width:100%;min-height:44px}
.contact-metadata-editor > p { overflow-wrap: anywhere; }
.contact-editor-actions{display:flex;gap:10px}.contact-editor-actions button{flex:1;min-height:44px}
.friend-profile-identity>div{min-width:0}.friend-profile-identity h3,.friend-profile-identity p{overflow-wrap:anywhere}
.group-directory-controls{display:grid;gap:12px;margin:8px 0 16px}.group-directory-controls label{display:grid;gap:6px;font-size:13px;font-weight:600}.group-directory-controls input{width:100%;min-width:0;min-height:44px}
.group-directory-controls [role=group]{display:flex;gap:8px}.group-directory-controls button{min-height:44px;border:1px solid var(--line);border-radius:10px;padding:8px 12px;background:var(--surface);color:var(--fg)}.group-directory-controls [aria-pressed=true]{background:var(--accent-soft);color:var(--accent-strong);border-color:var(--accent-strong)}
.ast-sticker-help summary{cursor:pointer;min-height:44px;display:flex;align-items:center}.ast-sticker-help p{line-height:1.6}
.contact-editor-actions button{border:1px solid var(--line);border-radius:10px;background:var(--surface-2);color:var(--fg);font-size:16px;font-weight:600;padding:10px 16px}
.contact-editor-actions button.primary{background:#2165d8;border-color:#2165d8;color:white}
.contact-metadata-editor h3{font-size:17px;color:var(--fg)}.contact-metadata-editor>.hint,.contact-private-fields>.hint{color:var(--fg-2);font-size:13px;line-height:1.5}
/* Keep the membership palette as complete foreground/background pairs. */
.profile-paid-page .profile-paid-status-card--annual{background:#20242e;color:#f3d991}
.profile-paid-page .profile-paid-status-card--annual h3,.profile-paid-page .profile-paid-status-card--annual .profile-paid-status-meta strong{color:#f3d991}
.profile-paid-page .profile-paid-status-card--annual p,.profile-paid-page .profile-paid-status-card--annual .profile-paid-eyebrow,.profile-paid-page .profile-paid-status-card--annual .profile-paid-status-meta{color:#d9cfae}
.profile-paid-page .profile-paid-status-card--quarterly{background:#fff6df;color:#4a3000}
.profile-paid-page .profile-paid-status-card--quarterly h3,.profile-paid-page .profile-paid-status-card--quarterly .profile-paid-status-meta strong{color:#4a3000}
.profile-paid-page .profile-paid-status-card--quarterly p,.profile-paid-page .profile-paid-status-card--quarterly .profile-paid-eyebrow,.profile-paid-page .profile-paid-status-card--quarterly .profile-paid-status-meta{color:#624206}
.profile-paid-page .profile-paid-status-card--quarterly .profile-paid-primary{background:#785212;color:#fff}
.profile-paid-page .profile-paid-status-card--paused .profile-paid-primary{background:#69582f;color:#fff}
.profile-paid-page .profile-paid-status-meta{color:var(--fg-2)}
.profile-paid-page .profile-paid-quota-card h3,.profile-paid-page .profile-paid-quota-card .profile-paid-eyebrow{color:var(--fg-2)}
.profile-paid-page .profile-paid-status-actions button:disabled{opacity:1;background:var(--surface-2);color:var(--fg-2);border:1px solid var(--line);cursor:not-allowed}
/* R19-05: regular small text needs normal-text contrast, even when bold. */
.profile-paid-page .profile-paid-card h3,.profile-paid-page .ua-plan-comparison h3{color:var(--fg)}
.profile-paid-page .profile-paid-card .profile-paid-eyebrow,.profile-paid-page .profile-paid-stat-grid span{color:var(--fg-2)}
.profile-page:has(.profile-paid-page) .profile-subpage-header button{color:var(--accent-strong)}
.ast-media-actions.review-media-share{display:flex;flex-direction:column;min-width:0;max-width:100%;gap:6px}
.review-media-share-buttons{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.review-media-share p{margin:0;max-width:36em;white-space:normal;overflow-wrap:anywhere;color:#fff;font-size:13px;line-height:1.5;text-align:center}
.review-media-share button:disabled{opacity:.65}
/* Q4: pair the error surface and text in both themes; retain the existing red border and retry mark. */
.msg .bubble.bubble-delivery-failure{background:var(--surface)!important;color:var(--fg)!important}
.msg .bubble .outbox-status-row{min-width:0;max-width:100%}
.msg .bubble .outbox-status-row>small{font-size:13px;line-height:1.5;opacity:1;white-space:normal;overflow-wrap:anywhere}
.msg .bubble.bubble-delivery-failure .outbox-status-row>small{color:inherit}
/* Compact My-page membership entry; retain every state, date and quota label. */
.profile-me-home .profile-paid-summary {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  grid-template-areas: "title badge action" "status status status" "quota quota quota";
  align-items: center;
  gap: 3px 8px;
  min-height: 64px;
  padding: 12px 14px;
  border-radius: 14px;
  font-family: system-ui, -apple-system, "Segoe UI", "Microsoft YaHei", "PingFang SC", sans-serif;
  font-weight: 400;
}
.profile-me-home .profile-paid-summary-main { display: contents; }
.profile-me-home .profile-paid-summary-main > strong {
  grid-area: title; min-width: 0; font-size: 16px; line-height: 24px; font-weight: 600; overflow-wrap: anywhere;
}
.profile-me-home .profile-paid-summary-kicker {
  grid-area: badge; min-height: 0; padding: 2px 6px; letter-spacing: normal; font-size: 11px; line-height: 16px;
}
.profile-me-home .profile-paid-summary-main > small {
  grid-area: quota; min-width: 0; font-size: 13px; line-height: 18px; font-weight: 400; opacity: 1; overflow-wrap: anywhere;
}
.profile-me-home .profile-paid-summary-main > .profile-paid-summary-status { grid-area: status; }
.profile-me-home .profile-paid-summary-side { grid-area: action; align-self: center; align-items: center; gap: 4px; }
.profile-me-home .profile-paid-summary-side > small { font-size: 12px; line-height: 18px; font-weight: 400; opacity: 1; }
.profile-me-home .profile-paid-summary-side > svg { flex: none; }
/* The legacy base stylesheet forces every #root descendant to 700!important.
   Override that blanket rule only inside this membership entry. */
#root .profile-me-home .profile-paid-summary,
#root .profile-me-home .profile-paid-summary-main > small,
#root .profile-me-home .profile-paid-summary-side > small { font-weight: 400 !important; }
#root .profile-me-home .profile-paid-summary-main > strong { font-weight: 600 !important; }

/* Membership belongs to the person's avatar, never to their name or group avatar. */
.avatar.avatar-with-membership { position: relative; overflow: visible; }
.avatar > .avatar-membership-badge {
  position: absolute;
  right: 0;
  bottom: 0;
  z-index: 1;
  min-width: 25px;
  min-height: 0;
  max-width: 100%;
  height: auto;
  box-sizing: border-box;
  padding: 0 3px;
  border-radius: 5px;
  font-size: 9px;
  line-height: 12px;
  letter-spacing: 0;
  text-shadow: none;
  white-space: nowrap;
  pointer-events: none;
}
.avatar.small > .avatar-membership-badge { min-width: 23px; padding: 0 2px; font-size: 8px; line-height: 10px; border-radius: 4px; }
.friend-profile-identity > .avatar > .avatar-membership-badge,
.direct-chat-person .avatar > .avatar-membership-badge { min-width: 32px; padding: 1px 4px; font-size: 11px; line-height: 14px; }

/* Explicit message-management labels must remain readable on narrow screens. */
.message-menu button[aria-label="为所有人删除"],
.message-menu button[aria-label="移除并删除所有消息"] {
  white-space: normal;
  min-height: 44px;
  padding-block: 8px;
  color: var(--danger-strong) !important;
}
.message-menu button[aria-label="为所有人删除"] svg,
.message-menu button[aria-label="移除并删除所有消息"] svg { color: inherit; }
.message-menu button[aria-label="移除并删除所有消息"] span { min-width: 0; }

/* Keep the locator at the lower right, above the composer, without covering messages. */
.chat-pane > .mention-jump {
  position: static;
  align-self: flex-end;
  flex: 0 0 auto;
  max-width: calc(100% - 24px);
  min-height: 44px;
  margin: 0 12px 8px auto;
  padding: 8px 14px;
  background: var(--surface);
  color: var(--danger-strong);
  box-shadow: var(--shadow-2);
  line-height: 1.4;
}
.chat-pane > .mention-jump:hover:where(html:not([data-ua-pointer="touch"]) *) { background: var(--danger-soft); }
.chat-pane > .mention-jump:focus-visible { outline: 2px solid var(--danger-strong); outline-offset: 2px; }

/* Compact confirmations share the app's surfaces, type and accessible focus trap. */
.group-drawer-backdrop + .ua-action-confirm-backdrop { z-index: 40; }
.modal-backdrop.ua-action-confirm-backdrop {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
.modal.ua-action-confirm {
  position: relative;
  inset: auto;
  display: block;
  flex: none;
  margin: 0;
  transform: none;
  min-height: 0;
  width: min(380px, calc(100vw - 32px));
  max-height: calc(100dvh - 32px);
  box-sizing: border-box;
  overflow-y: auto;
  padding: 24px;
  border: 0;
  border-radius: 16px;
  background: var(--surface);
  color: var(--fg);
  box-shadow: var(--shadow-2);
}
.modal.ua-action-confirm::before { display: none; }
.ua-action-confirm > header { gap: 8px; margin: 0 0 16px; padding: 0; border: 0; }
.ua-action-confirm > header h2 { margin: 0; font-size: 18px; line-height: 1.4; overflow-wrap: anywhere; }
.ua-action-confirm > header button { flex: none; width: 44px; height: 44px; margin: -8px -8px -8px 0; border: 0; background: transparent; color: var(--fg-2); }
.ua-action-person { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; min-width: 0; }
.ua-action-person strong { min-width: 0; overflow-wrap: anywhere; font-size: 15px; line-height: 1.5; }
.ua-action-person-text { min-width: 0; }
.ua-action-person-text strong { display: block; }
.ua-action-person-text small { display: block; margin-top: 4px; color: var(--fg-2); font-size: 13px; line-height: 1.5; overflow-wrap: anywhere; }
.ua-action-question { margin: 0; color: var(--fg); font-size: 16px; line-height: 1.65; }
.ua-action-question { white-space: pre-line; overflow-wrap: anywhere; }
.modal-backdrop.ua-global-confirm { position: fixed; inset: 0; z-index: 10000; }
.ua-global-confirm .ua-action-question { font-weight: 400; }
.ua-global-confirm h2, .ua-global-confirm button { font-weight: 600; }
.ua-action-confirm-buttons { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 24px; }
.ua-action-confirm-buttons button { min-height: 44px; padding: 10px 12px; border: 0; border-radius: 10px; font: inherit; font-size: 15px; line-height: 1.4; background: var(--surface-2); color: var(--fg); cursor: pointer; }
.ua-action-confirm-buttons .ua-action-danger { background: var(--danger-strong); color: var(--surface); }
.ua-action-confirm-buttons .ua-action-primary { background: var(--accent-strong); color: var(--surface); }
.ua-action-confirm-buttons button:hover:where(html:not([data-ua-pointer="touch"]) *) { filter: brightness(.95); }
.ua-action-confirm button:focus-visible { outline: 2px solid var(--accent-strong); outline-offset: 3px; }
#root .ua-action-confirm .ua-action-question { font-weight: 400 !important; }
#root .ua-action-confirm h2, #root .ua-action-confirm strong, #root .ua-action-confirm button { font-weight: 600 !important; }
/* Keep loading/buffering away from native center play and bottom controls. */
.ast-video-player .ast-video-status { top: 12px; transform: translateX(-50%); pointer-events: none; }
/* Compact only the friend profile; retain full-size editable rows and actions. */
.friend-profile { gap: 12px; }
.friend-profile-identity { flex-direction: row; gap: 16px; padding: 4px 0 2px; text-align: left; }
.friend-profile .friend-profile-identity > .avatar { width: 72px; height: 72px; flex: 0 0 72px; font-size: 28px; }
.friend-profile-identity > div:last-child { flex: 1; }
.friend-profile-identity .identity-name { justify-content: flex-start; }
.friend-profile .friend-profile-identity p { margin-top: 4px; }
.friend-profile .friend-profile-bio { display: grid; gap: 4px; padding: 4px; background: transparent; border: 0; border-radius: 0; white-space: normal; }
.friend-profile-bio-label { color: var(--fg-2); font-size: 12px; line-height: 1.5; }
.friend-profile-bio-content { margin: 0; color: var(--fg); font-size: 14px; line-height: 1.7; white-space: pre-wrap; overflow-wrap: anywhere; }
.friend-profile > .contact-private-fields { gap: 4px; margin: 0; }
.friend-profile > .contact-metadata-editor { margin: 0; }
.friend-profile .contact-private-fields .contact-book-row { padding: 10px 4px; gap: 8px; }
.friend-profile .contact-book-row > .contact-remark-pencil { flex: 0 0 15px; color: var(--fg-2); }
.friend-profile > .friend-profile-actions { gap: 12px; }
.friend-profile > .friend-profile-actions button { padding: 10px 12px; }
.friend-profile-main-actions { grid-template-columns: repeat(2,minmax(0,1fr)); }
.friend-profile-main-actions > .primary { grid-column: 1 / -1; }
.friend-chat-quick-actions { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; margin: 0; padding: 10px 4px; background: var(--surface-2); border-radius: var(--r-card); }
.friend-chat-quick-actions button { display: flex; flex-direction: column; align-items: center; gap: 7px; min-width: 0; min-height: 44px; padding: 4px 2px; border: 0; border-radius: 10px; background: transparent; color: var(--fg-2); font: inherit; font-size: 13px; cursor: pointer; }
.friend-chat-quick-icon { display: grid; place-items: center; width: 50px; height: 50px; border-radius: 50%; background: var(--surface); color: var(--accent); box-shadow: var(--shadow-1); }
.friend-chat-quick-actions button[aria-pressed=true] .friend-chat-quick-icon { background: var(--accent); color: var(--on-accent); }
.friend-chat-quick-actions button[aria-pressed=true] { color: var(--accent-strong); }
.friend-chat-quick-actions button:disabled { opacity: .55; cursor: default; }
.friend-chat-quick-actions button:focus-visible { outline: 2px solid var(--accent-strong); outline-offset: 2px; }
@media(hover:hover) { .friend-chat-quick-actions button:hover:where(html:not([data-ua-pointer="touch"]) *):not(:disabled) { background: var(--hover); } }
.group-qr-actions { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; width: 100%; }
.group-qr-actions > button.group-link-button { width: 100%; max-width: none; min-width: 0; min-height: 44px; padding: 10px 4px; border-radius: var(--r-ctl); background: var(--surface-2); color: var(--accent-strong); font-size: 13px; line-height: 1.5; overflow-wrap: anywhere; }
.group-qr-actions > button:only-child { grid-column: 1 / -1; }
.group-qr-actions > button:focus-visible { outline: 2px solid var(--accent-strong); outline-offset: 2px; }
@media(hover:hover) { .group-qr-actions > button:hover:where(html:not([data-ua-pointer="touch"]) *):not(:disabled) { background: var(--hover); } }
/* Compact the group card vertically without cropping the QR's quiet zone. */
.group-qr-page { margin-top: 8px; margin-bottom: 8px; padding: 20px 16px 16px; gap: 12px; }
.group-qr-page > h3 { margin: 0; line-height: 1.4; max-width: 100%; overflow-wrap: anywhere; }
.group-qr-page > img { padding: 0; max-width: 100%; height: auto; }
.group-qr-page > .group-link-button.danger { min-height: 44px; padding: 10px 20px; margin-top: -8px; align-self: center; }
.group-qr-page > .primary { margin-top: 4px; }
.personal-qr > img.named-qr-card, .group-qr-page > img.named-qr-card { display: block; width: 256px; max-width: 100%; height: auto; padding: 0; border: 0; object-fit: contain; background: #fff; }
/* Keep local scrolling, without rubber-banding or passing gestures to the page. */
.ast-compose-wrap .composer textarea { overscroll-behavior-y: none; }
.ast-compose-wrap .composer textarea[data-ua-draft-scrollable="false"] { touch-action: pinch-zoom; }
.ast-compose-wrap .composer textarea[data-ua-draft-scrollable="true"] { touch-action: pan-y pinch-zoom; }
.ast-compose-wrap .composer > .ast-compose-more, .ast-compose-wrap .ast-compose-tools > .ast-compose-emoji, .ast-compose-wrap .ast-compose-footer > .send { touch-action: pinch-zoom; }
.ast-compose-wrap > .ast-emoji-panel { overflow-x: hidden; overflow-y: auto; overscroll-behavior: none; touch-action: pan-y pinch-zoom; }
/* Direct category buttons stay reachable without a horizontally sliding strip. */
.ast-emoji-panel .ast-emoji-tabs { flex-wrap: wrap; overflow: hidden; touch-action: pan-y pinch-zoom; }
.ast-compose-wrap > .ast-emoji-panel { scrollbar-gutter: stable both-edges; }
.ast-emoji-panel .ast-emoji-grid, .ast-emoji-panel .ast-sticker-grid { display: flex; flex-wrap: wrap; justify-content: center; }
.ast-emoji-panel .ast-emoji-grid > button { display: block; flex: 0 0 38px; box-sizing: border-box; min-width: 0; padding: 0; text-align: center; line-height: 40px; -webkit-appearance: none; appearance: none; }
.ast-emoji-panel .ast-sticker-grid > .ast-sticker { flex: 0 0 78px; min-width: 0; }
.ast-sticker img { -webkit-user-drag: none; -webkit-touch-callout: none; -webkit-user-select: none; user-select: none; }
/* Deletion belongs to explicit management, never the sending surface. */
.ast-sticker-toolbar { display: flex; align-items: center; gap: 8px; padding: 0 10px 6px; }
.ast-sticker-toolbar > button { display: inline-flex; align-items: center; justify-content: center; gap: 4px; min-width: 44px; min-height: 44px; padding: 6px 10px; border: 0; border-radius: 10px; color: var(--fg-2); background: transparent; font-size: 12px; }
.ast-sticker-toolbar > strong { font-size: 13px; color: var(--fg); }
.ast-sticker-toolbar > small { margin-left: auto; color: var(--ua-helper-text); font-size: 11px; }
.ast-sticker-toolbar > .ast-sticker-manage { color: var(--accent-strong); }
.ast-sticker-toolbar > button:hover:where(html:not([data-ua-pointer="touch"]) *) { background: var(--hover); }
.ast-sticker-toolbar > button:disabled, .ast-sticker-library .ast-sticker-remove:disabled { opacity: .5; cursor: default; }
.ast-sticker-library[data-managing="true"] .ast-sticker > button:first-child { opacity: 1; cursor: default; }
.ast-sticker-library .ast-sticker button.ast-sticker-remove { width: 44px; height: 44px; top: 0; right: 0; padding: 0; place-items: center; border-radius: 10px; background: transparent; color: var(--danger-strong); opacity: 1; }
.ast-sticker-library .ast-sticker-remove > svg { background: var(--surface); border: 1px solid var(--line); border-radius: 50%; box-sizing: content-box; padding: 3px; }
.ast-sticker-delete-error { margin: 0; padding: 6px 13px 12px; color: var(--danger-strong); font-size: 12px; }
.ast-sticker-toolbar > button:focus-visible, .ast-sticker-library .ast-sticker-remove:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
/* Message content and delivery metadata are distinct, never overlaid on media. */
.message-stage .message-content > .message-meta { display: flex; align-items: center; gap: 4px; position: static; float: none; margin: 3px 2px 4px; padding: 0; background: none; color: var(--ua-helper-text); font-size: 11px; line-height: 14px; white-space: nowrap; user-select: none; }
.message-stage .date-divider > time { color: var(--ua-helper-text); font-size: 11px; line-height: 18px; font-variant-numeric: tabular-nums; }
.message-menu-time { padding: 8px 10px; color: var(--ua-helper-text); font-size: 11px; line-height: 18px; font-variant-numeric: tabular-nums; text-align: center; white-space: normal; overflow-wrap: anywhere; }
.message-stage .message-row:has(> .message-content > .message-meta) > .message-avatar-button,
.message-stage .message-row:has(> .message-content > .message-meta) > .avatar.small { margin-bottom: 21px; }
.message-stage .bubble.bubble-voice { padding: 2px 10px; min-height: 48px; line-height: 1; }
.message-stage .bubble-voice .ua-voice-message { width: 188px; min-width: 0; max-width: 100%; }
.message-stage .bubble-voice .ua-voice-message > button { min-height: 44px; padding: 0; gap: 10px; line-height: 1; }
.message-stage .bubble-voice .ua-voice-message > button > svg { flex-shrink: 0; }
.message-stage .bubble-voice .ua-voice-message .ua-voice-wave { min-width: 0; }
.message-stage .bubble.bubble-sticker { background: transparent; border: 0; box-shadow: none; padding: 0; min-height: 0; }
.ua-sticker-message { display: grid; place-items: center; max-width: 100%; max-height: 160px; font-size: 12px; line-height: 1.5; color: var(--fg); }
.ua-sticker-message > img { display: block; width: 100%; height: 100%; object-fit: contain; -webkit-user-drag: none; user-select: none; }
.ua-sticker-message > button { min-height: 44px; }
/* Separate browser-native image surface: no carousel/pinch handlers or callout suppression. */
dialog.ua-image-save-preview { box-sizing: border-box; width: min(100%, 900px); height: 100%; height: 100dvh; max-width: 100%; max-height: 100%; margin: auto; padding: max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left)); border: 0; border-radius: 0; color: var(--fg, #17212f); background: var(--surface, #fff); overflow: auto; overscroll-behavior: contain; }
dialog.ua-image-save-preview[open] { display: flex; flex-direction: column; gap: 16px; }
.ua-image-save-preview::backdrop { background: rgba(0, 0, 0, .75); }
.ua-image-save-preview > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-shrink: 0; }
.ua-image-save-preview h2 { margin: 0; font-size: 18px; line-height: 1.4; }
.ua-image-save-preview button { min-height: 44px; padding: 8px 12px; border: 1px solid var(--line, #c4cedb); border-radius: 10px; color: var(--fg, #17212f); background: var(--surface, #fff); font: inherit; }
.ua-image-save-preview button:focus-visible { outline: 2px solid var(--accent-strong, #165ed2); outline-offset: 3px; }
.ua-image-save-preview > p { margin: 0; font-size: 14px; line-height: 1.6; color: inherit; text-align: left; }
.ua-image-save-preview-body { flex: 1; min-height: 120px; display: flex; align-items: center; justify-content: center; }
.ua-image-save-preview-body > img { display: block; max-width: 100%; max-height: 70vh; width: auto; height: auto; object-fit: contain; -webkit-touch-callout: default; -webkit-user-select: auto; user-select: auto; touch-action: auto; }
/* iOS image entry uses a single viewer; preserve native long-press on the image. */
dialog.ua-image-viewer { width: min(100%, 1120px); color: #f5f7fa; background: #0f1419; gap: 12px; }
.ua-image-viewer > header { min-height: 44px; font-size: 14px; font-variant-numeric: tabular-nums; }
.ua-image-viewer > header > button { display: grid; place-items: center; width: 44px; padding: 0; border: 0; background: transparent; }
.ua-image-viewer button { color: #f5f7fa; background: #252c33; border-color: transparent; }
.ua-image-viewer button:disabled { opacity: .4; }
.ua-image-viewer .ua-image-save-preview-body { min-height: 0; height: 0; overflow: auto; touch-action: auto; }
.ua-image-viewer .ua-image-save-preview-body > img { max-height: 100%; flex-shrink: 0; }
.ua-image-viewer > footer { display: grid; gap: 8px; flex-shrink: 0; }
.ua-image-navigation { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.ua-image-navigation > button { background: transparent; font-size: 13px; padding: 8px; }
.ua-image-save-hint { font-size: 12px; color: #c4ccd5; text-align: center; }
.ua-image-viewer .review-media-share-buttons { display: flex; justify-content: center; flex-wrap: wrap; gap: 8px; }
.ua-image-viewer .review-media-share p { margin: 8px 0 0; color: #e0e6ed; font-size: 12px; line-height: 1.5; text-align: center; overflow-wrap: anywhere; }
/* The same two-action bar for iOS images and videos. Other platforms stay unchanged. */
.ast-media-actions.review-media-share-ios { width: 100%; max-width: 480px; margin-inline: auto; gap: 8px; }
.review-media-share-ios .review-media-share-buttons { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; gap: 12px; }
.review-media-share-ios .review-media-share-buttons > button { display: flex; align-items: center; justify-content: center; gap: 8px; min-width: 0; min-height: 48px; margin: 0; padding: 12px 8px; border: 0; border-radius: 12px; background: #252c33; color: #f5f7fa; font: inherit; font-size: 14px; font-weight: 600; line-height: 20px; white-space: nowrap; box-shadow: none; }
.review-media-share-ios .review-media-share-buttons > .review-media-share-primary { background: #f5f7fa; color: #17212f; }
.review-media-share-ios svg { flex-shrink: 0; }
.review-media-share-ios .review-media-share-buttons > button > span { flex: 0 1 auto; max-width: none; color: inherit; font: inherit; }
.review-media-share-ios button:focus-visible { outline: 2px solid #8fbcff; outline-offset: 3px; }
.review-media-share-ios button:disabled { opacity: .5; cursor: default; }
.review-media-share-ios button:not(:disabled):active { opacity: .75; }
.review-media-share-ios.review-media-share > p { margin: 0; max-width: 100%; color: #c4ccd5; font-size: 12px; line-height: 1.5; text-align: center; }
.review-media-share-ios > .review-media-share-cancel { align-self: center; min-height: 44px; padding: 8px 16px; border: 0; background: transparent; color: #c4ccd5; font: inherit; font-size: 13px; box-shadow: none; }
@media (hover: hover) { .review-media-share-ios button:not(:disabled):hover:where(html:not([data-ua-pointer="touch"]) *) { filter: brightness(.92); } }
/* Safari can retain :focus-visible across dialogs, native menus and navigation.
   Apply the same input intent to chat rows, navigation and action controls.
   Keep focus/restoration, editable fields and genuine message selection intact.
   Keyboard input restores the existing focus-visible rules immediately. */
html[data-ua-focus="pointer"] .app-shell :is(button, a[href], summary, [role="button"], .message-row):not(.message-selected):not([contenteditable]):focus,
html[data-ua-focus="pointer"] dialog.ua-image-save-preview:focus,
html[data-ua-focus="pointer"] .ua-image-save-preview button:focus,
html[data-ua-focus="pointer"] .review-media-share-ios button:focus { outline: none; }
.ua-image-save-preview button, .review-media-share-ios button { -webkit-tap-highlight-color: transparent; }
/* Quote navigation uses a temporary background, separate from focus/selection. */
.message-stage .bubble > .ua-reply-quote { width: 100%; min-height: 44px; box-sizing: border-box; border: 0; border-inline-start: 1px solid var(--accent); padding: 6px 10px; text-align: start; font: inherit; font-size: 12px; line-height: 1.5; cursor: pointer; }
.message-stage .mine .bubble > .ua-reply-quote { border-inline-start-color: currentColor; }
.message-stage .ua-reply-quote:disabled { cursor: default; }
.message-stage .ua-reply-quote:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.message-stage .msg.ua-reply-hit { background-color: var(--accent-soft); border-radius: 12px; }
.ua-reply-navigation { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 12px; padding: 4px 12px; }
.ua-reply-navigation > span { flex: 1 1 auto; font-size: 12px; color: var(--fg-2); }
.ua-reply-navigation-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; margin-inline-start: auto; }
.ua-reply-navigation-actions > button { min-height: 44px; padding: 6px 8px; color: var(--accent-strong); font-size: 12px; }

/* iOS web only: instruction stays outside the exported QR image. */
.personal-qr > .ua-qr-save-hint, .group-qr-page > .ua-qr-save-hint { margin: 0; color: #2875b0; font-size: 14px; font-weight: 700; line-height: 1.5; text-align: center; align-self: center; max-width: 100%; display: flex; align-items: center; justify-content: center; gap: 3px; }
[data-theme="dark"] .personal-qr > .ua-qr-save-hint, [data-theme="dark"] .group-qr-page > .ua-qr-save-hint { color: #62bddd; }
.ua-qr-save-hint > .ua-qr-save-hint-icon { width: 21px; height: 21px; flex: 0 0 21px; transform: translateY(-1.5px); }
.ua-qr-save-hint + img.named-qr-card { -webkit-touch-callout: default; -webkit-user-select: auto; user-select: auto; touch-action: auto; }

/* Albums have a definite available width; no percentage/fit-content cycle. */
.message-stage .message-content:has(.ast-album) { width: 280px; min-width: 0; grid-template-columns: minmax(0, 1fr); }
.message-stage .message-content:has(.ast-album) > .bubble { width: 100%; box-sizing: border-box; }
.message-stage .ast-album { width: 100%; background: transparent; }
.message-stage .ast-album-count-1 { grid-template-columns: minmax(0, 1fr); }
.message-stage .ast-album-count-2,
.message-stage .ast-album-count-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 760px) {
  .message-stage .message-content:has(.ast-album) { width: 250px; }
}

/* Geometry is client-only; existing DOM order and message operations remain. */
.message-stage .ast-album.ast-album-smart { display: block; position: relative; }
.message-stage .ast-album-smart > .ast-album-cell { position: absolute; aspect-ratio: auto; min-height: 0; }
.message-stage .ast-album-smart > .ast-album-cell > img { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; max-height: none; object-fit: cover; }
.message-stage .ast-album-smart > .ast-album-cell.is-contained img { object-fit: contain; }
.message-stage .message-content:has(.ast-album) { max-width: 100%; }

/* Approved B composition. Only this module; existing sending state is retained. */
.ua-broadcast-b { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Microsoft YaHei', sans-serif; }
.ua-broadcast-b .ua-b-management { display:flex; gap:8px; padding:10px 20px; border-bottom:1px solid var(--line); flex:none; }
.ua-broadcast-b .ua-b-management button { background:transparent; border:0; border-radius:8px; padding:8px 14px; color:var(--fg-2); }
.ua-broadcast-b .ua-b-management button[aria-pressed=true] { color:var(--accent); background:var(--accent-soft); }
.ua-broadcast-b .ua-b-layout { display:grid; align-items:start; grid-template-columns:minmax(0,1fr) 260px; gap:24px; padding:26px; flex:none; }
.ua-broadcast-b .ua-broadcast-edit { padding:0; gap:16px; }
.ua-broadcast-b .ua-broadcast-edit > .hint:first-child { order:0; font-size:13px; }
.ua-broadcast-b .ua-broadcast-recipients { border:1px solid var(--line); padding:14px; border-radius:12px; }
.ua-broadcast-b .ua-broadcast-recipients strong { font-size:15px; }
.ua-broadcast-b .ua-broadcast-recipients p { font-size:13px; color:var(--fg-2); }
.ua-broadcast-b .ua-broadcast-recipients button { color:var(--accent); border:0; background:var(--accent-soft); border-radius:8px; }
.ua-broadcast-b #broadcast-body { min-height:180px; padding:14px; font:inherit; font-size:16px; line-height:1.65; background:var(--surface); color:var(--fg); border:1px solid var(--line); border-radius:12px; }
.ua-broadcast-b .broadcast-image { display:flex; flex-wrap:wrap; align-items:center; gap:10px; }
.ua-broadcast-b .broadcast-image small { flex-basis:100%; font-size:12px; line-height:1.6; }
.ua-broadcast-b .broadcast-image button { border-radius:8px; }
.ua-broadcast-b .broadcast-schedule { border-top:1px solid var(--line); padding-top:16px; }
.ua-broadcast-b .broadcast-schedule-fields { display:flex; gap:12px; flex-wrap:wrap; }
.ua-broadcast-b .broadcast-schedule-fields label { min-width:0; flex:1 1 140px; }
.ua-broadcast-b .broadcast-schedule-fields input { width:100%; box-sizing:border-box; min-height:44px; }
.ua-broadcast-b .ua-b-preview-desktop { border-left:1px solid var(--line); padding-left:24px; }
.ua-broadcast-b .ua-b-preview { padding:16px; background:var(--surface-2); border-radius:12px; min-width:0; }
.ua-broadcast-b .ua-b-preview h3 { margin:0 0 8px; font-size:15px; }
.ua-broadcast-b .ua-b-preview img { display:block; width:100%; max-height:160px; object-fit:contain; margin-top:12px; border-radius:8px; }
.ua-broadcast-b .ua-b-preview-body { white-space:pre-wrap; overflow-wrap:anywhere; background:var(--surface); border:1px solid var(--line); padding:12px; border-radius:3px 10px 10px 10px; font-size:14px; line-height:1.65; margin:16px 0 0; }
.ua-broadcast-b .ua-b-preview-mobile { display:none; }
.ua-broadcast-b .ua-b-preview-body { display:-webkit-box; -webkit-line-clamp:5; -webkit-box-orient:vertical; overflow:hidden; }
.ua-broadcast-b .broadcast-image figure button { width:48px; height:48px; min-width:48px; min-height:48px; }
.ua-b-full-preview { color:var(--text); background:var(--surface); border:1px solid var(--line); border-radius:16px; padding:20px; width:min(600px,calc(100vw - 32px)); max-height:85vh; max-height:85dvh; }
.ua-b-full-preview::backdrop { background:rgb(0 0 0 / .45); }
.ua-b-full-preview header { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.ua-b-full-preview header button { min-height:44px; flex-shrink:0; }
.ua-b-full-preview-content { overflow:auto; max-height:65vh; max-height:65dvh; }
.ua-b-full-preview-content p,.ua-schedule-latest { white-space:pre-wrap; overflow-wrap:anywhere; font-size:16px; }
.ua-b-full-preview-content img { display:block; max-width:100%; max-height:45vh; object-fit:contain; margin:12px auto; }
.ua-broadcast-b [aria-label="最新任务内容"] { padding:14px 0; }
.ua-broadcast-b [aria-label="最新任务内容"] p { margin:8px 0; line-height:1.5; }
.ua-broadcast-b .ua-b-management-panel { padding:20px; }
.ua-broadcast-b .ua-round-summary { border:0; padding:0; }
.ua-broadcast-b .ua-round-history { padding:0; }
.ua-broadcast-b .ua-broadcast-confirm, .ua-broadcast-b .ua-broadcast-task { padding:26px; }
.ua-broadcast-b .ua-draft-status { padding:0 26px 16px; font-size:12px; }
.ua-broadcast-b button.primary { border-radius:10px; min-height:46px; }
@media(max-width:760px) {
 .ua-broadcast-b .ua-b-layout { grid-template-columns:minmax(0,1fr); padding:20px 16px; gap:16px; }
 .ua-broadcast-b .ua-b-preview-desktop { display:none; }
 .ua-broadcast-b .ua-b-preview-mobile { display:block; }
 .ua-broadcast-b .ua-b-preview-mobile summary { min-height:44px; display:flex; align-items:center; color:var(--accent); font-size:14px; cursor:pointer; }
 .ua-broadcast-b .ua-b-management { padding:8px 12px; gap:4px; }
 .ua-broadcast-b .ua-b-management button { flex:1; padding:8px 4px; font-size:13px; }
 .ua-broadcast-b .ua-broadcast-confirm, .ua-broadcast-b .ua-broadcast-task { padding:20px 16px; }
 .ua-broadcast-b .ua-b-management-panel { padding:16px; }
 .ua-broadcast-b .ua-draft-status { padding:0 16px 12px; }
}

/* Keep the trial's membership overview only. All other routes use the R3 UI.
   :where keeps the original rule specificity, including plan-specific colors.
   No business rules, markup, navigation, or payment actions are changed. */
:where(.profile-page:has([data-paid-view="overview"])) {
  --fg-3: #5f6b7d; --fg-4: #606b7c; --danger: #dc2626;
  --ua-accent-fill: #1f6fe0; --ua-accent-fill-hover: #1a5fc4; --ua-danger-fill: #b91c1c;
}
:root[data-theme="dark"] :where(.profile-page:has([data-paid-view="overview"])) {
  --fg-3: #8494ab; --fg-4: #8494ab; --ua-accent-fill: #2b5bd7; --ua-accent-fill-hover: #2450c0;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) :where(.profile-page:has([data-paid-view="overview"])) {
    --fg-3: #8494ab; --fg-4: #8494ab; --ua-accent-fill: #2b5bd7; --ua-accent-fill-hover: #2450c0;
  }
}
:where(.profile-page:has([data-paid-view="overview"])) :is(.profile-paid-primary,.profile-paid-actions button,.profile-paid-order button,.primary) {
  background: var(--ua-accent-fill); color: #fff;
}
:where(.profile-page:has([data-paid-view="overview"])) .primary:hover:where(html:not([data-ua-pointer="touch"]) *):not(:disabled) { background: var(--ua-accent-fill-hover); }
:where(.profile-page:has([data-paid-view="overview"])) :is(.text-button,.inline-link,.load-more) { color: var(--accent-strong); }
:where(.profile-page:has([data-paid-view="overview"])) :where(button,a[href],input,select,textarea,summary,[role="button"],[tabindex]:not([tabindex="-1"])):focus-visible {
  outline: 2px solid var(--accent-strong); outline-offset: 2px;
}
@media (max-width: 760px), (any-pointer: coarse) {
  .profile-page:where(:has([data-paid-view="overview"])) .profile-subpage-header button { min-height: 44px; }
}
@media (max-width: 760px) {
  :where(.profile-page:has([data-paid-view="overview"])) {
    --bg: #FFFFFF; --bg-2: #F4F4F5; --surface: #FFFFFF; --surface-2: #F4F4F5; --surface-3: #ECECEF;
    --line: #E3E3E8; --line-2: #EFEFF2; --hover: #F2F2F5;
    --fg: #0F0F0F; --fg-2: #5E5E66; --fg-3: #6E6E76; --fg-4: #7C7C84;
    --accent: #3390EC; --accent-strong: #1A6DBF; --accent-soft: #E7F3FF; --accent-line: #BFDCFF;
    --ua-accent-fill: #1F6FE0; --ua-accent-fill-hover: #1A5FC4;
    --danger: #D70015; --ua-danger-fill: #D70015;
    --chat-bg: #EFF3F7; --ua-bubble-in: #FFFFFF; --ua-bubble-text: #0F0F0F;
    --r-ctl: 10px; --r-card: 10px; --r-sheet: 20px;
  }
  :root[data-theme="dark"] :where(.profile-page:has([data-paid-view="overview"])) {
    --bg: #17212B; --bg-2: #232E3C; --surface: #17212B; --surface-2: #232E3C; --surface-3: #2A3542;
    --line: #101921; --line-2: #1C2734; --hover: #202B38;
    --fg: #FFFFFF; --fg-2: #A7B3C0; --fg-3: #7D8B99; --fg-4: #6B7A88;
    --accent: #5EB5F7; --accent-strong: #7CC4FF; --accent-soft: #1E3A53; --accent-line: #2C4E6E;
    --ua-accent-fill: #2B5278; --ua-accent-fill-hover: #326088;
    --danger: #FF6B6B; --ua-danger-fill: #B42318; --chat-bg: #0E1621;
    --ua-bubble-in: #182533; --ua-bubble-text: #FFFFFF;
  }
  @media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) :where(.profile-page:has([data-paid-view="overview"])) {
      --bg: #17212B; --bg-2: #232E3C; --surface: #17212B; --surface-2: #232E3C; --surface-3: #2A3542;
      --line: #101921; --line-2: #1C2734; --hover: #202B38;
      --fg: #FFFFFF; --fg-2: #A7B3C0; --fg-3: #7D8B99; --fg-4: #6B7A88;
      --accent: #5EB5F7; --accent-strong: #7CC4FF; --accent-soft: #1E3A53; --accent-line: #2C4E6E;
      --ua-accent-fill: #2B5278; --ua-accent-fill-hover: #326088;
      --danger: #FF6B6B; --ua-danger-fill: #B42318; --chat-bg: #0E1621;
      --ua-bubble-in: #182533; --ua-bubble-text: #FFFFFF;
    }
  }
}

.ua-web-update { position: fixed; inset: 0; margin: auto; transform: none; width: min(360px, calc(100% - 40px)); max-height: calc(100vh - 48px); max-height: calc(100dvh - 48px); box-sizing: border-box; overflow-y: auto; padding: 24px; border: 0; border-radius: 16px; background: var(--surface, #fff); color: var(--fg, #182230); box-shadow: var(--shadow-2, 0 16px 48px rgb(15 23 42 / 20%)); font-family: inherit; font-size: 16px; font-weight: 400; line-height: 1.6; text-align: center; }
.ua-web-update:not([open]), .ua-web-update [hidden] { display: none !important; }
.ua-web-update::backdrop { background: var(--scrim, rgb(15 23 42 / 40%)); }
.ua-web-update h2 { margin: 0 0 12px; color: inherit; font-size: 18px; font-weight: 700; line-height: 1.4; }
.ua-web-update h2:focus { outline: none; }
.ua-web-update p { margin: 0; font-weight: 400; overflow-wrap: anywhere; }
.ua-web-update-actions { display: flex; gap: 12px; margin-top: 24px; }
.ua-web-update button { flex: 1; min-width: 0; min-height: 44px; padding: 10px 12px; border: 0; border-radius: 10px; font: inherit; font-weight: 600; line-height: 1.5; cursor: pointer; overflow-wrap: anywhere; -webkit-tap-highlight-color: transparent; }
.ua-web-update .ua-web-update-primary { background: var(--accent-strong, #165bcc); color: var(--bg, #fff); }
.ua-web-update .ua-web-update-secondary { background: var(--surface-2, #f1f4f8); color: var(--fg, #182230); }
.ua-web-update button:disabled { opacity: .6; cursor: wait; }
.ua-web-update button:focus-visible { outline: 2px solid var(--accent-strong, #165bcc); outline-offset: 3px; }
@media (hover: hover) { .ua-web-update button:not(:disabled):hover:where(html:not([data-ua-pointer="touch"]) *) { filter: brightness(.94); } }
.ua-web-update button:not(:disabled):active { opacity: .8; }
