/*
 * VW_WATCH_TOGETHER_PRIVATE_MESSAGES_MOBILE_POLISH_V3_12R4
 * Room-scoped 1:1 messaging that reuses the canonical #chatForm/#chatInput.
 */

.private-messages-btn{
  position:relative;
  box-sizing:border-box;
  display:grid;
  place-items:center;
  width:42px;
  height:44px;
  min-width:42px;
  margin:0;
  padding:0;
  border:1px solid rgba(255,255,255,.11);
  border-radius:12px;
  background:#101620;
  color:#c9d3e2;
  cursor:pointer;
  font:800 14px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
.private-messages-btn:hover,
.private-messages-btn.active,
.private-messages-btn.has-unread{
  color:#fff;
  border-color:rgba(113,92,255,.46);
  background:linear-gradient(135deg,rgba(113,92,255,.22),rgba(64,123,255,.12));
}
.private-messages-btn-icon{font-size:16px;line-height:1}
.private-messages-badge{
  position:absolute;
  right:-5px;
  top:-6px;
  min-width:17px;
  height:17px;
  padding:0 4px;
  display:grid;
  place-items:center;
  border:2px solid #090d13;
  border-radius:999px;
  background:#ff5f78;
  color:#fff;
  font:900 8px/1 system-ui,sans-serif;
}
.private-messages-badge.hidden{display:none!important}

.private-message-member-name{
  min-width:0;
  max-width:100%;
  padding:0;
  margin:0;
  border:0;
  background:transparent;
  color:inherit;
  text-align:left;
  font:inherit;
  cursor:pointer;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.private-message-member-name:hover{color:#fff;text-decoration:underline;text-underline-offset:3px}
.private-message-member-name.is-self,
.private-message-member-name:disabled{cursor:default;text-decoration:none;opacity:1}

.private-member-message-menu{
  position:fixed;
  z-index:2147483050;
  display:flex;
  align-items:center;
  gap:10px;
  padding:9px;
  border:1px solid rgba(255,255,255,.12);
  border-radius:13px;
  background:rgba(12,17,25,.985);
  box-shadow:0 18px 46px rgba(0,0,0,.48);
  backdrop-filter:blur(18px);
}
.private-member-message-menu.hidden{display:none!important}
.private-member-message-menu-copy{min-width:0;flex:1}
.private-member-message-menu-copy span{
  display:block;
  color:#718096;
  font-size:7.5px;
  font-weight:900;
  letter-spacing:.12em;
}
.private-member-message-menu-copy b{
  display:block;
  margin-top:3px;
  overflow:hidden;
  color:#eef3fb;
  font-size:11px;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.private-member-message-menu>button{
  flex:0 0 auto;
  min-height:34px;
  padding:0 11px;
  border:1px solid rgba(123,92,255,.32);
  border-radius:9px;
  background:rgba(116,88,255,.14);
  color:#eeeaff;
  font-size:10px;
  font-weight:850;
  cursor:pointer;
}

.private-messages-surface{
  flex:1 1 auto;
  min-height:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  margin:14px -3px 10px;
  padding:0 3px;
}
.private-messages-surface.hidden{display:none!important}

.private-surface-head{
  flex:0 0 auto;
  min-height:54px;
  display:grid;
  grid-template-columns:38px minmax(0,1fr);
  align-items:center;
  gap:9px;
  padding:7px 5px 9px;
  border-bottom:1px solid rgba(255,255,255,.065);
}
.private-surface-back,
.private-thread-close{
  width:36px;
  height:36px;
  display:grid;
  place-items:center;
  padding:0;
  border:1px solid rgba(255,255,255,.09);
  border-radius:10px;
  background:#101620;
  color:#d6deea;
  cursor:pointer;
  font-size:18px;
}
.private-surface-head>div{min-width:0}
.private-surface-head>div>span{
  display:block;
  color:#8173e9;
  font-size:7.5px;
  font-weight:900;
  letter-spacing:.13em;
}
.private-surface-head>div>b{
  display:block;
  margin-top:2px;
  color:#f2f5fa;
  font-size:13px;
}
.private-surface-head>div>small{
  display:block;
  margin-top:2px;
  color:#748297;
  font-size:8.5px;
}

.private-conversation-list{
  flex:1 1 auto;
  min-height:0;
  overflow:auto;
  overscroll-behavior:contain;
  padding:8px 1px 12px;
}
.private-conversation-row{
  width:100%;
  min-width:0;
  display:grid;
  grid-template-columns:38px minmax(0,1fr) auto;
  gap:9px;
  align-items:center;
  margin:0 0 6px;
  padding:9px;
  border:1px solid rgba(255,255,255,.065);
  border-radius:12px;
  background:rgba(255,255,255,.025);
  color:#edf2fa;
  text-align:left;
  cursor:pointer;
}
.private-conversation-row:hover{border-color:rgba(121,94,255,.30);background:rgba(112,86,255,.06)}
.private-conversation-avatar,
.private-thread-avatar{
  display:grid;
  place-items:center;
  width:38px;
  height:38px;
  border-radius:11px;
  background:linear-gradient(135deg,#252d3c,#171d27);
  color:#b8adff;
  font-size:12px;
  font-weight:900;
}
.private-conversation-copy{min-width:0}
.private-conversation-name-line{
  min-width:0;
  display:grid;
  grid-template-columns:minmax(0,auto) 8px 1fr auto;
  align-items:center;
  gap:5px;
}
.private-conversation-name-line b{
  overflow:hidden;
  color:#e9eef7;
  font-size:11.5px;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.private-conversation-name-line i,
.private-thread-title small i{
  width:6px;
  height:6px;
  border-radius:50%;
  background:#4b5565;
}
.private-conversation-name-line i.online,
.private-thread-title small i.online{background:#47d597;box-shadow:0 0 7px rgba(71,213,151,.45)}
.private-conversation-name-line time{
  grid-column:4;
  color:#667387;
  font-size:8px;
  white-space:nowrap;
}
.private-conversation-copy>small{
  display:block;
  margin-top:4px;
  overflow:hidden;
  color:#748196;
  font-size:9px;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.private-conversation-unread{
  min-width:20px;
  height:20px;
  display:grid;
  place-items:center;
  padding:0 5px;
  border-radius:999px;
  background:#765eff;
  color:#fff;
  font-size:8.5px;
  font-weight:900;
}
.private-empty{
  min-height:110px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  padding:20px;
  color:#78869a;
  text-align:center;
  font-size:10px;
  line-height:1.5;
}
.private-empty b{color:#d5dce7;font-size:11px;margin-bottom:4px}
.private-empty span{max-width:240px}

.private-thread-head{
  grid-template-columns:36px 38px minmax(0,1fr) 36px;
  gap:8px;
}
.private-thread-title{min-width:0}
.private-thread-title>b{
  display:block;
  overflow:hidden;
  color:#eef3fb;
  font-size:12px;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.private-thread-title>small{
  display:flex;
  align-items:center;
  gap:5px;
  margin-top:3px;
  color:#718096;
  font-size:8px;
}
.private-thread-messages{
  flex:1 1 auto;
  min-height:0;
  overflow:auto;
  display:flex;
  flex-direction:column;
  gap:7px;
  padding:9px 3px 14px;
  overscroll-behavior:contain;
}
.private-message-bubble{
  max-width:min(82%,430px);
  padding:8px 10px 6px;
  border-radius:12px;
  background:#0d131c;
  border:1px solid rgba(255,255,255,.055);
}
.private-message-bubble.mine{
  align-self:flex-end;
  border-color:rgba(116,88,255,.24);
  background:linear-gradient(135deg,rgba(112,83,255,.20),rgba(58,94,190,.11));
}
.private-message-bubble.theirs{align-self:flex-start}
.private-message-bubble p{
  margin:0;
  color:#e3e9f2;
  font-size:12px;
  line-height:1.4;
  white-space:pre-wrap;
  word-break:break-word;
}
.private-message-bubble time{
  display:block;
  margin:0;
  color:#677386;
  font-size:7.5px;
  text-align:right;
}
.private-message-meta{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:5px;
  min-height:12px;
  margin-top:4px;
}
.private-message-status{
  color:#78869a;
  font-size:7.5px;
  font-weight:750;
  white-space:nowrap;
}
.private-message-status.seen{color:#9f91ff}

.private-conversation-gif-label{
  display:inline-flex;
  align-items:center;
  min-height:16px;
  padding:0 6px;
  border:1px solid rgba(123,92,255,.20);
  border-radius:6px;
  background:rgba(118,94,255,.09);
  color:#bdb3ff;
  font-size:8px;
  font-weight:900;
  letter-spacing:.04em;
}
.private-message-bubble.is-gif{
  width:min(76%,300px);
  max-width:min(76%,300px);
  padding:6px;
}
.private-gif-media{
  width:100%;
  min-height:72px;
  overflow:hidden;
  border-radius:10px;
  background:#06090d;
  line-height:0;
}
.private-gif-media img{
  display:block;
  width:100%;
  height:auto;
  max-height:260px;
  object-fit:contain;
}
.private-gif-unavailable{
  min-height:90px;
  display:grid;
  place-items:center;
  color:#758297;
  font-size:9px;
  line-height:1.3;
}
.private-gif-actions{
  display:flex;
  justify-content:flex-start;
  padding:5px 1px 0;
}
.private-gif-actions button{
  min-height:28px;
  padding:0 9px;
  border:1px solid rgba(255,255,255,.09);
  border-radius:999px;
  background:#111720;
  color:#c9bdff;
  font-size:8px;
  font-weight:850;
  cursor:pointer;
}
.private-gif-actions button:disabled{
  color:#8490a0;
  cursor:default;
  opacity:.75;
}

/* When the shared GIF picker is open from a private thread, give its gallery
   the chat viewport; closing it returns to the same private conversation. */
body.vw-private-thread-open.vw-gif-tray-open .private-messages-surface{
  display:none!important;
}

#chatForm.private-form-hidden{display:none!important}

/* Public composer now has Personal Messages + GIF + Input + Send. */
#chatForm{
  grid-template-columns:42px 44px minmax(0,1fr) 44px;
}
#chatForm>.private-messages-btn{grid-column:auto}
body.vw-private-thread-open #chatForm{
  grid-template-columns:42px 44px minmax(0,1fr) 44px!important;
}
body.vw-private-messages-open .chat-reply-composer{display:none!important}

/* Android shell: keep using the SAME canonical form/input that already owns IME. */
body.vw-android-room-shell .private-messages-surface{
  flex:1 1 auto!important;
  min-height:0!important;
  overflow:hidden!important;
  margin:0 0 7px!important;
  padding:0 2px!important;
}
body.vw-android-room-shell #chatForm{
  grid-template-columns:40px 44px minmax(0,1fr) 44px!important;
}
body.vw-android-room-shell.vw-private-thread-open #chatForm{
  grid-template-columns:40px 44px minmax(0,1fr) 44px!important;
}
body.vw-android-room-shell .private-messages-btn{
  width:40px!important;
  min-width:40px!important;
  height:44px!important;
  min-height:44px!important;
  border-radius:12px!important;
}
body.vw-android-room-shell.vw-android-keyboard-open .private-messages-surface{
  min-height:0!important;
  max-height:100%!important;
  overflow:hidden!important;
}
body.vw-android-room-shell.vw-android-keyboard-open .private-thread-messages{
  min-height:0!important;
  max-height:100%!important;
  overflow-y:auto!important;
}
/* Private GIF mode keeps the canonical composer layout. Do not switch grid/flex
   merely because the GIF tray is open. The Android IME layer may use flex only
   while the keyboard itself is open, which is its existing stable geometry. */
body.vw-android-room-shell.vw-private-thread-open.vw-gif-tray-open #chatForm{
  display:grid!important;
}
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open.vw-gif-tray-open #chatForm{
  display:flex!important;
}
/* V3.12R1 mobile thread hardening: the existing Android shell owns the video
   freeze and IME position. Private chat only adapts its own header/message viewport. */
body.vw-android-room-shell.vw-android-keyboard-open:not(.vw-private-thread-open) #chatForm>.private-messages-btn{
  display:grid!important;
  flex:0 0 40px!important;
  width:40px!important;
  min-width:40px!important;
  max-width:40px!important;
  height:44px!important;
  min-height:44px!important;
  max-height:44px!important;
}
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-head{
  min-height:34px!important;
  grid-template-columns:30px minmax(0,1fr) 30px!important;
  gap:6px!important;
  padding:2px 2px 4px!important;
}
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-avatar{display:none!important}
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-surface-back,
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-close{
  width:30px!important;
  height:30px!important;
  border-radius:9px!important;
  font-size:16px!important;
}
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-title>b{font-size:10.5px!important}
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-title>small{
  margin-top:1px!important;
  font-size:7px!important;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-messages{
  padding:4px 2px 8px!important;
  gap:5px!important;
  scroll-padding-bottom:8px!important;
}
body.vw-android-room-shell.vw-android-keyboard-open.vw-android-keyboard-tight.vw-private-thread-open .private-thread-head{display:none!important}
body.vw-android-room-shell.vw-android-keyboard-open.vw-android-keyboard-tight.vw-private-thread-open .private-thread-messages{
  padding-top:1px!important;
}
@media(max-width:520px){
  .private-messages-surface{margin:6px 0 7px;padding:0 1px}
  .private-surface-head{min-height:48px;padding:5px 3px 7px}
  .private-thread-head{grid-template-columns:34px 34px minmax(0,1fr) 34px;gap:6px}
  .private-conversation-row{padding:8px 7px;grid-template-columns:36px minmax(0,1fr) auto}
  .private-conversation-avatar,.private-thread-avatar{width:36px;height:36px}
  .private-thread-messages{padding:7px 2px 12px}
  .private-message-bubble{max-width:86%;padding:8px 9px 6px}
  .private-message-bubble.is-gif{width:min(82%,286px);max-width:min(82%,286px)}
  .private-message-bubble p{font-size:12.5px;line-height:1.42}
}

@media(max-width:380px){
  body.vw-android-room-shell #chatForm{
    grid-template-columns:38px 40px minmax(0,1fr) 42px!important;
    gap:5px!important;
  }
  body.vw-android-room-shell.vw-private-thread-open #chatForm{
    grid-template-columns:38px 40px minmax(0,1fr) 42px!important;
  }
  body.vw-android-room-shell .private-messages-btn{
    width:38px!important;
    min-width:38px!important;
  }
  body.vw-android-room-shell.vw-android-keyboard-open:not(.vw-private-thread-open) #chatForm>.private-messages-btn{
    flex-basis:38px!important;
    width:38px!important;
    min-width:38px!important;
    max-width:38px!important;
  }
}


/* V3.10R4: Personal Messages list is an intentional no-composer mode.
   This beats Android keyboard/presence recovery rules without affecting a PM thread. */
body.vw-private-messages-list #chatForm,
body.vw-android-room-shell.vw-private-messages-list #chatForm,
body.vw-android-room-shell.vw-private-messages-list.vw-android-keyboard-open #chatForm,
body.vw-android-room-shell.vw-private-messages-list.vw-composer-presence-recover #chatForm{
  display:none!important;
  visibility:hidden!important;
  opacity:0!important;
  pointer-events:none!important;
}


/* ========================================================================
   V3.12R4 MOBILE POLISH — UI ONLY
   Backend, SQLite, public chat, GIF engine and Android video/IME shell stay untouched.
   ======================================================================== */
body.vw-private-thread-open #chatInput{
  border-color:rgba(126,101,255,.48)!important;
  background:linear-gradient(180deg,rgba(119,91,255,.075),rgba(12,17,24,.94))!important;
  box-shadow:inset 0 0 0 1px rgba(119,91,255,.08)!important;
}
body.vw-private-thread-open #chatInput::placeholder{color:#8f98aa!important}
body.vw-private-thread-open .private-messages-btn{
  border-color:rgba(132,108,255,.64)!important;
  background:linear-gradient(135deg,rgba(122,91,255,.30),rgba(65,118,255,.18))!important;
  box-shadow:0 0 0 2px rgba(111,86,255,.08)!important;
}

.private-surface-head>div>span{font-size:8.5px}
.private-surface-head>div>b{font-size:14px}
.private-surface-head>div>small{font-size:10px;line-height:1.35}
.private-conversation-row{
  min-height:58px;
  padding:10px;
}
.private-conversation-name-line b{font-size:13px}
.private-conversation-name-line time{font-size:9.5px}
.private-conversation-copy>small{font-size:11px;line-height:1.35}
.private-conversation-unread{
  min-width:22px;
  height:22px;
  font-size:10px;
}
.private-thread-head{
  grid-template-columns:38px 42px minmax(0,1fr) auto;
  min-height:58px;
}
.private-thread-avatar{width:42px;height:42px;border-radius:13px;font-size:14px}
.private-thread-title>b{font-size:14px;line-height:1.2}
.private-thread-title>small{
  gap:6px;
  margin-top:4px;
  color:#8b97a8;
  font-size:9.5px;
  line-height:1.2;
}
.private-thread-private-label{
  display:inline-flex;
  align-items:center;
  min-height:17px;
  padding:0 6px;
  border:1px solid rgba(131,107,255,.28);
  border-radius:999px;
  background:rgba(121,93,255,.10);
  color:#b7a9ff;
  font-size:7.5px;
  font-weight:900;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.private-thread-close{
  width:auto;
  min-width:43px;
  padding:0 9px;
  font-size:9px;
  font-weight:900;
  letter-spacing:.02em;
}
.private-thread-close>span{display:block}
.private-thread-messages{
  gap:8px;
  padding:10px 4px 16px;
  scroll-padding-top:36px;
  scroll-padding-bottom:14px;
}
.private-message-bubble{
  max-width:min(80%,460px);
  padding:9px 11px 7px;
  border-radius:15px;
  box-shadow:0 4px 14px rgba(0,0,0,.12);
}
.private-message-bubble.mine{border-bottom-right-radius:5px}
.private-message-bubble.theirs{border-bottom-left-radius:5px}
.private-message-bubble p{
  font-size:13.5px;
  line-height:1.46;
}
.private-message-meta{gap:6px;min-height:14px;margin-top:5px}
.private-message-bubble time,
.private-message-status{font-size:8.5px}
.private-message-status.seen{font-weight:850}
.private-day-divider{
  position:relative;
  align-self:stretch;
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:28px;
  margin:2px 0;
  color:#7f8b9d;
  font-size:8.5px;
  font-weight:800;
  letter-spacing:.02em;
}
.private-day-divider::before,
.private-day-divider::after{
  content:"";
  height:1px;
  flex:1 1 auto;
  background:rgba(255,255,255,.055);
}
.private-day-divider span{padding:0 9px;white-space:nowrap}
.private-thread-empty{
  min-height:150px;
  flex:1 1 auto;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  padding:22px 18px;
  text-align:center;
  color:#8592a5;
}
.private-thread-empty-icon{
  width:38px;
  height:38px;
  display:grid;
  place-items:center;
  margin-bottom:10px;
  border:1px solid rgba(126,101,255,.22);
  border-radius:12px;
  background:rgba(119,91,255,.08);
  font-size:16px;
}
.private-thread-empty b{color:#dce3ed;font-size:12px}
.private-thread-empty small{max-width:260px;margin-top:5px;font-size:9.5px;line-height:1.45}
.private-message-bubble.is-gif{
  width:min(74%,320px);
  max-width:min(74%,320px);
  border-radius:15px;
}
.private-gif-media{border-radius:11px}
.private-gif-actions button{min-height:30px;font-size:9px}

/* Mobile member action is a stable bottom sheet, not a tiny floating popover. */
@media(max-width:520px){
  .private-member-message-menu{
    left:10px!important;
    right:10px!important;
    top:auto!important;
    bottom:calc(10px + env(safe-area-inset-bottom,0px))!important;
    width:auto!important;
    max-width:none!important;
    min-height:62px;
    gap:12px;
    padding:10px;
    border-radius:16px;
    box-shadow:0 -12px 34px rgba(0,0,0,.42);
  }
  .private-member-message-menu-copy span{font-size:8px}
  .private-member-message-menu-copy b{font-size:13px}
  .private-member-message-menu>button{
    min-height:40px;
    padding:0 13px;
    border-radius:11px;
    font-size:10.5px;
    white-space:nowrap;
  }
  .private-messages-surface{margin:4px 0 6px!important;padding:0 2px!important}
  .private-surface-head{min-height:54px;padding:6px 3px 8px}
  .private-surface-head>div>b{font-size:14px}
  .private-surface-head>div>small{font-size:9.5px}
  .private-conversation-row{
    min-height:60px;
    grid-template-columns:40px minmax(0,1fr) auto;
    gap:9px;
    margin-bottom:7px;
    padding:9px 8px;
    border-radius:14px;
  }
  .private-conversation-avatar{width:40px;height:40px;border-radius:12px;font-size:13px}
  .private-conversation-name-line b{font-size:13px}
  .private-conversation-copy>small{margin-top:4px;font-size:10.5px}
  .private-thread-head{
    grid-template-columns:34px 38px minmax(0,1fr) auto;
    gap:7px;
    min-height:54px;
    padding:5px 2px 7px;
  }
  .private-thread-avatar{width:38px;height:38px;border-radius:12px;font-size:13px}
  .private-thread-title>b{font-size:13.5px}
  .private-thread-title>small{font-size:9px}
  .private-thread-close{min-width:42px;height:34px;padding:0 8px;border-radius:10px;font-size:8.5px}
  .private-thread-messages{padding:8px 3px 14px;gap:7px}
  .private-message-bubble{
    max-width:88%;
    padding:9px 10px 7px;
    border-radius:14px;
  }
  .private-message-bubble.mine{border-bottom-right-radius:5px}
  .private-message-bubble.theirs{border-bottom-left-radius:5px}
  .private-message-bubble p{font-size:14px;line-height:1.44}
  .private-message-bubble time,.private-message-status{font-size:9px}
  .private-message-bubble.is-gif{width:min(84%,300px);max-width:min(84%,300px)}
  .private-gif-actions button{min-height:32px;font-size:9.5px}
  .private-day-divider{min-height:26px;font-size:9px}
  .private-thread-empty b{font-size:13px}
  .private-thread-empty small{font-size:10px}
}

/* While Android IME is open, retain its canonical composer geometry but keep
   private status readable. The Android shell remains sole owner of video height. */
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-head{
  grid-template-columns:30px minmax(0,1fr) auto!important;
}
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-close{
  min-width:30px!important;
  width:30px!important;
  padding:0!important;
  font-size:0!important;
}
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-close::before{
  content:"×";
  font-size:16px;
  line-height:1;
}
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-close>span{display:none!important}
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-private-label{
  min-height:14px;
  padding:0 4px;
  font-size:6.5px;
}
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-title>small{font-size:7.5px!important}
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-message-bubble p{font-size:13px}
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-message-bubble time,
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-message-status{font-size:8px}

@media(max-width:380px){
  .private-member-message-menu{left:8px!important;right:8px!important;bottom:calc(8px + env(safe-area-inset-bottom,0px))!important}
  .private-member-message-menu>button{padding:0 10px;font-size:9.5px}
  .private-thread-title>small{gap:4px}
  .private-thread-private-label{padding:0 4px;font-size:6.8px}
  .private-message-bubble{max-width:90%}
}

/* ========================================================================
   V3.12R5 MOBILE FOCUS — DEDICATED PRIVATE CHAT
   UI-only: no server, DB, public chat engine, GIF engine or Android video shell changes.
   ======================================================================== */
.private-messages-backdrop{
  position:fixed;
  inset:0;
  z-index:2147481800;
  background:rgba(2,5,9,.68);
  backdrop-filter:blur(7px);
  -webkit-backdrop-filter:blur(7px);
  opacity:1;
  transition:opacity .16s ease;
}
.private-messages-backdrop.hidden{display:none!important}

/* richer member action sheet */
.private-member-message-menu-grabber,
.private-member-message-menu-profile,
.private-member-message-menu-avatar,
.private-member-message-menu-copy small,
.private-member-message-action-icon,
.private-member-message-cancel{display:none}

@media(max-width:520px){
  body.vw-private-overlay-visible{overscroll-behavior:none}
  .private-messages-backdrop{display:block}

  .private-member-message-menu{
    left:10px!important;
    right:10px!important;
    top:auto!important;
    bottom:calc(10px + env(safe-area-inset-bottom,0px))!important;
    width:auto!important;
    max-width:none!important;
    min-height:0!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:10px!important;
    padding:8px 12px 12px!important;
    border:1px solid rgba(146,126,255,.20)!important;
    border-radius:22px!important;
    background:linear-gradient(180deg,rgba(20,25,36,.995),rgba(9,13,20,.998))!important;
    box-shadow:0 -18px 55px rgba(0,0,0,.58),0 0 0 1px rgba(255,255,255,.025) inset!important;
  }
  .private-member-message-menu-grabber{
    display:block;
    width:42px;
    height:4px;
    margin:1px auto 3px;
    border-radius:999px;
    background:rgba(255,255,255,.18);
  }
  .private-member-message-menu-profile{
    display:grid;
    grid-template-columns:48px minmax(0,1fr);
    gap:12px;
    align-items:center;
    padding:4px 2px 7px;
  }
  .private-member-message-menu-avatar{
    display:grid;
    place-items:center;
    width:48px;
    height:48px;
    border:1px solid rgba(137,111,255,.24);
    border-radius:15px;
    background:linear-gradient(145deg,rgba(119,88,255,.24),rgba(31,42,61,.9));
    color:#d8d0ff;
    font-size:17px;
    font-weight:900;
  }
  .private-member-message-menu-copy span{font-size:8.5px!important;letter-spacing:.11em;color:#9689e9!important}
  .private-member-message-menu-copy b{margin-top:3px!important;font-size:16px!important;line-height:1.2!important}
  .private-member-message-menu-copy small{
    display:block;
    margin-top:5px;
    color:#8793a5;
    font-size:10.5px;
    line-height:1.38;
  }
  .private-member-message-menu>button{
    width:100%!important;
    min-height:48px!important;
    justify-content:center;
    padding:0 14px!important;
    border-radius:14px!important;
    font-size:13px!important;
    font-weight:900!important;
  }
  #privateMemberMessageAction{
    display:flex!important;
    align-items:center;
    gap:8px;
    border-color:rgba(141,115,255,.42)!important;
    background:linear-gradient(135deg,#765cff,#6344ea)!important;
    color:#fff!important;
    box-shadow:0 8px 22px rgba(87,58,220,.26)!important;
  }
  .private-member-message-action-icon{display:inline-block;font-size:14px}
  .private-member-message-cancel{
    display:block!important;
    min-height:42px!important;
    border-color:rgba(255,255,255,.07)!important;
    background:rgba(255,255,255,.035)!important;
    color:#9aa6b8!important;
    font-size:11px!important;
  }

  /* Private messages are a real focused conversation surface, not a mini strip. */
  body.vw-private-messages-open .private-messages-surface{
    box-sizing:border-box!important;
    position:fixed!important;
    z-index:2147482600!important;
    left:8px!important;
    right:8px!important;
    top:calc(8px + env(safe-area-inset-top,0px))!important;
    bottom:calc(8px + env(safe-area-inset-bottom,0px))!important;
    width:auto!important;
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    margin:0!important;
    padding:8px 9px 10px!important;
    overflow:hidden!important;
    border:1px solid rgba(141,121,255,.18)!important;
    border-radius:22px!important;
    background:linear-gradient(180deg,#0e141e 0%,#080d14 100%)!important;
    box-shadow:0 22px 70px rgba(0,0,0,.60),0 0 0 1px rgba(255,255,255,.02) inset!important;
  }
  body.vw-private-thread-open .private-messages-surface{
    bottom:calc(76px + env(safe-area-inset-bottom,0px))!important;
  }

  body.vw-private-messages-open .private-surface-head{
    min-height:64px!important;
    padding:7px 3px 10px!important;
    border-bottom-color:rgba(255,255,255,.07)!important;
  }
  body.vw-private-thread-open .private-thread-head{
    grid-template-columns:40px 46px minmax(0,1fr) auto!important;
    gap:9px!important;
    min-height:66px!important;
  }
  body.vw-private-thread-open .private-surface-back{
    width:40px!important;
    height:40px!important;
    border-radius:12px!important;
    font-size:20px!important;
  }
  body.vw-private-thread-open .private-thread-avatar{
    display:grid!important;
    width:46px!important;
    height:46px!important;
    border-radius:15px!important;
    font-size:16px!important;
  }
  body.vw-private-thread-open .private-thread-title>b{font-size:16px!important;line-height:1.18!important}
  body.vw-private-thread-open .private-thread-title>small{margin-top:5px!important;font-size:10.5px!important;gap:6px!important}
  body.vw-private-thread-open .private-thread-private-label{
    min-height:18px!important;
    padding:0 6px!important;
    font-size:7.5px!important;
    letter-spacing:.055em!important;
  }
  body.vw-private-thread-open .private-thread-close{
    min-width:48px!important;
    width:auto!important;
    height:38px!important;
    padding:0 10px!important;
    border-radius:12px!important;
    font-size:10px!important;
    color:#b9c4d5!important;
  }

  body.vw-private-thread-open .private-thread-messages{
    flex:1 1 auto!important;
    min-height:0!important;
    max-height:none!important;
    padding:12px 5px 18px!important;
    gap:9px!important;
    overflow-y:auto!important;
    scroll-padding-bottom:20px!important;
  }
  body.vw-private-thread-open .private-message-bubble{
    max-width:82%!important;
    padding:10px 12px 8px!important;
    border-radius:17px!important;
    box-shadow:0 4px 18px rgba(0,0,0,.16)!important;
  }
  body.vw-private-thread-open .private-message-bubble.mine{
    border-color:rgba(131,105,255,.32)!important;
    border-bottom-right-radius:6px!important;
    background:linear-gradient(135deg,rgba(111,80,255,.34),rgba(74,72,191,.24))!important;
  }
  body.vw-private-thread-open .private-message-bubble.theirs{
    border-color:rgba(255,255,255,.075)!important;
    border-bottom-left-radius:6px!important;
    background:#111923!important;
  }
  body.vw-private-thread-open .private-message-bubble p{font-size:15px!important;line-height:1.46!important;color:#f1f4f8!important}
  body.vw-private-thread-open .private-message-bubble time,
  body.vw-private-thread-open .private-message-status{font-size:9.5px!important}
  body.vw-private-thread-open .private-message-meta{margin-top:6px!important;gap:7px!important}
  body.vw-private-thread-open .private-day-divider{min-height:32px!important;font-size:10px!important}
  body.vw-private-thread-open .private-thread-empty{min-height:260px!important;padding:28px 22px!important}
  body.vw-private-thread-open .private-thread-empty-icon{width:46px!important;height:46px!important;border-radius:15px!important;font-size:19px!important}
  body.vw-private-thread-open .private-thread-empty b{font-size:15px!important}
  body.vw-private-thread-open .private-thread-empty small{font-size:11px!important;line-height:1.5!important}
  body.vw-private-thread-open .private-message-bubble.is-gif{width:min(84%,320px)!important;max-width:min(84%,320px)!important}

  /* Canonical composer becomes the footer of the focused private overlay. */
  body.vw-private-thread-open:not(.vw-android-keyboard-open) #chatForm{
    box-sizing:border-box!important;
    position:fixed!important;
    z-index:2147482800!important;
    left:8px!important;
    right:8px!important;
    top:auto!important;
    bottom:calc(8px + env(safe-area-inset-bottom,0px))!important;
    width:auto!important;
    min-height:58px!important;
    height:58px!important;
    max-height:58px!important;
    margin:0!important;
    padding:7px!important;
    gap:6px!important;
    border:1px solid rgba(137,111,255,.16)!important;
    border-radius:18px!important;
    background:rgba(8,12,18,.995)!important;
    box-shadow:0 -10px 32px rgba(0,0,0,.42)!important;
  }
  body.vw-private-thread-open:not(.vw-android-keyboard-open) #chatInput{
    height:44px!important;
    min-height:44px!important;
    max-height:44px!important;
    padding:0 13px!important;
    border-radius:13px!important;
    font-size:15px!important;
  }
  body.vw-private-thread-open:not(.vw-android-keyboard-open) #chatForm>.private-messages-btn,
  body.vw-private-thread-open:not(.vw-android-keyboard-open) #chatForm>.gif-picker-btn,
  body.vw-private-thread-open:not(.vw-android-keyboard-open) #chatForm>button[type="submit"]{
    height:44px!important;
    min-height:44px!important;
    max-height:44px!important;
  }

  /* Personal-message LIST has no composer, so it uses the entire dialog. */
  body.vw-private-messages-list .private-messages-surface{bottom:calc(8px + env(safe-area-inset-bottom,0px))!important}
  body.vw-private-messages-list .private-conversation-list{padding:10px 3px 16px!important}
  body.vw-private-messages-list .private-conversation-row{min-height:68px!important;padding:11px 10px!important;border-radius:16px!important}
  body.vw-private-messages-list .private-conversation-avatar{width:44px!important;height:44px!important;border-radius:14px!important;font-size:15px!important}
  body.vw-private-messages-list .private-conversation-name-line b{font-size:14px!important}
  body.vw-private-messages-list .private-conversation-copy>small{font-size:11.5px!important}
}

/* Android keyboard: keep shell-owned floating composer and anchor the focused
   private conversation immediately above it. Video geometry remains shell-owned. */
@media(max-width:520px){
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-messages-surface{
    top:calc(6px + var(--vw-android-safe-top,0px))!important;
    bottom:calc(var(--vw-android-live-composer-bottom,var(--vw-android-floating-composer-bottom,5px)) + var(--vw-android-floating-composer-height,44px) + 10px)!important;
    border-radius:18px!important;
    padding:6px 7px 8px!important;
  }
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-head{
    display:grid!important;
    grid-template-columns:32px minmax(0,1fr) 32px!important;
    min-height:38px!important;
    padding:2px 1px 5px!important;
  }
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-avatar{display:none!important}
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-title>b{font-size:12px!important}
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-title>small{font-size:8px!important;margin-top:1px!important}
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-private-label{min-height:14px!important;font-size:6.5px!important}
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-close{
    min-width:32px!important;width:32px!important;height:32px!important;padding:0!important;font-size:0!important;
  }
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-close::before{content:"×";font-size:17px!important}
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-close>span{display:none!important}
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-messages{
    padding:5px 3px 9px!important;
    gap:6px!important;
  }
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-message-bubble{max-width:86%!important;padding:8px 10px 6px!important}
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-message-bubble p{font-size:13.5px!important}
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-message-bubble time,
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-message-status{font-size:8.5px!important}
}

@media(max-width:380px){
  body.vw-private-messages-open .private-messages-surface{left:6px!important;right:6px!important;border-radius:19px!important}
  body.vw-private-thread-open:not(.vw-android-keyboard-open) #chatForm{left:6px!important;right:6px!important}
  .private-member-message-menu{left:7px!important;right:7px!important}
  body.vw-private-thread-open .private-thread-title>b{font-size:15px!important}
  body.vw-private-thread-open .private-message-bubble{max-width:87%!important}
  body.vw-private-thread-open .private-message-bubble p{font-size:14.5px!important}
}
/* The shared GIF tray owns its own overlay while open; do not place the private
   backdrop above it. Closing the tray reveals the same private thread again. */
body.vw-private-thread-open.vw-gif-tray-open .private-messages-backdrop{display:none!important}

/* ========================================================================
   V3.12R6 FULLSCREEN DM — TRUE VIEWPORT PRIVATE CHAT + ROOM-CHAT ENTRY
   Backend, SQLite, public chat transport, GIF persistence and Android shell
   remain untouched. The PM surface itself is body-mounted by JS so fixed
   positioning cannot be trapped by transformed room/card ancestors.
   ======================================================================== */

/* A public room message can now be used as a direct private-message entry. */
.private-room-message-name{
  cursor:pointer;
  text-decoration:none;
  text-underline-offset:2px;
}
.private-room-message-name:focus-visible{
  outline:1px solid rgba(137,111,255,.65);
  outline-offset:2px;
  border-radius:5px;
}
.private-room-message-btn{
  appearance:none;
  display:inline-flex;
  align-items:center;
  gap:4px;
  min-height:22px;
  margin:0 5px 0 4px;
  padding:0 7px;
  border:1px solid rgba(135,108,255,.22);
  border-radius:999px;
  background:rgba(112,82,239,.10);
  color:#a99cff;
  font:800 8.5px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  cursor:pointer;
  vertical-align:middle;
}
.private-room-message-btn:hover,
.private-room-message-btn:focus-visible{
  border-color:rgba(135,108,255,.52);
  background:rgba(112,82,239,.19);
  color:#d7d0ff;
}
.private-room-message-btn span{font-size:10px;line-height:1}
.private-room-message-btn b{font:inherit}

/* R6 uses its own composer INSIDE the private surface. The canonical room
   composer remains at its stable Android-shell parent and is only hidden. */
#chatForm.private-thread-canonical-hidden,
body.vw-private-thread-open #chatForm.private-form-hidden{
  display:none!important;
}
.private-thread-composer{
  display:grid;
  grid-template-columns:46px minmax(0,1fr) 46px;
  align-items:center;
  gap:7px;
  flex:0 0 auto;
  padding:9px max(10px,env(safe-area-inset-right,0px)) calc(9px + env(safe-area-inset-bottom,0px)) max(10px,env(safe-area-inset-left,0px));
  border-top:1px solid rgba(255,255,255,.07);
  background:rgba(7,11,17,.985);
  box-shadow:0 -10px 32px rgba(0,0,0,.28);
}
.private-thread-composer input{
  box-sizing:border-box;
  width:100%;
  min-width:0;
  height:46px;
  padding:0 14px;
  border:1px solid rgba(139,119,255,.23);
  border-radius:15px;
  outline:none;
  background:#0d141d;
  color:#f4f6fa;
  font:500 15px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  caret-color:#8a6cff;
}
.private-thread-composer input::placeholder{color:#778397}
.private-thread-composer input:focus{
  border-color:rgba(132,102,255,.72);
  box-shadow:0 0 0 2px rgba(107,75,235,.12);
}
.private-thread-gif,
.private-thread-send{
  appearance:none;
  display:grid;
  place-items:center;
  width:46px;
  height:46px;
  padding:0;
  border:1px solid rgba(137,111,255,.28);
  border-radius:15px;
  color:#fff;
  cursor:pointer;
  font-weight:900;
}
.private-thread-gif{
  background:linear-gradient(145deg,#7357ff,#5739da);
  font-size:11px;
  letter-spacing:-.02em;
}
.private-thread-send{
  background:linear-gradient(145deg,#805eff,#6743ea);
  font-size:21px;
  box-shadow:0 8px 22px rgba(85,54,214,.24);
}
.private-thread-send:disabled{opacity:.55;cursor:default}

/* Desktop/tablet remains a large focused dialog. Body mounting removes the
   old mini-strip containing-block problem even outside mobile. */
body.vw-private-messages-open .private-messages-surface{
  z-index:2147482600!important;
}

@media(max-width:720px){
  html:has(body.vw-private-messages-open),
  body.vw-private-messages-open{
    overflow:hidden!important;
    overscroll-behavior:none!important;
  }

  /* TRUE full viewport. visualViewport vars follow the keyboard, so this is
     the visible phone screen rather than the room card's rectangle. */
  body.vw-private-messages-open .private-messages-surface,
  body.vw-private-thread-open .private-messages-surface,
  body.vw-private-messages-list .private-messages-surface{
    box-sizing:border-box!important;
    position:fixed!important;
    z-index:2147482600!important;
    left:0!important;
    right:auto!important;
    top:var(--vw-private-vv-top,0px)!important;
    bottom:auto!important;
    width:100vw!important;
    height:var(--vw-private-vv-height,100dvh)!important;
    min-height:0!important;
    max-height:none!important;
    margin:0!important;
    padding:0!important;
    border:0!important;
    border-radius:0!important;
    overflow:hidden!important;
    background:linear-gradient(180deg,#0b1119 0%,#070b11 100%)!important;
    box-shadow:none!important;
  }

  body.vw-private-thread-open .private-messages-surface,
  body.vw-private-messages-list .private-messages-surface{
    display:flex!important;
    flex-direction:column!important;
  }

  /* Full-screen PM itself is opaque, so room content can never visually mix
     with private bubbles. */
  body.vw-private-thread-open .private-messages-backdrop,
  body.vw-private-messages-list .private-messages-backdrop{
    background:#070b11!important;
    backdrop-filter:none!important;
    -webkit-backdrop-filter:none!important;
  }

  body.vw-private-messages-open .private-surface-head,
  body.vw-private-thread-open .private-thread-head{
    box-sizing:border-box!important;
    flex:0 0 auto!important;
    min-height:70px!important;
    margin:0!important;
    padding:calc(8px + env(safe-area-inset-top,0px)) 10px 9px!important;
    border-bottom:1px solid rgba(255,255,255,.07)!important;
    background:rgba(10,15,23,.985)!important;
    box-shadow:0 7px 24px rgba(0,0,0,.18)!important;
  }
  body.vw-private-thread-open .private-thread-head{
    grid-template-columns:42px 44px minmax(0,1fr) auto!important;
    gap:9px!important;
  }
  body.vw-private-thread-open .private-surface-back{
    width:42px!important;
    height:42px!important;
    border-radius:14px!important;
    font-size:22px!important;
  }
  body.vw-private-thread-open .private-thread-avatar{
    display:grid!important;
    width:44px!important;
    height:44px!important;
    border-radius:15px!important;
    font-size:16px!important;
  }
  body.vw-private-thread-open .private-thread-title>b{
    display:block!important;
    max-width:100%!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
    color:#f3f5f9!important;
    font-size:16px!important;
    line-height:1.16!important;
  }
  body.vw-private-thread-open .private-thread-title>small{
    margin-top:5px!important;
    gap:6px!important;
    color:#909bad!important;
    font-size:10.5px!important;
  }
  body.vw-private-thread-open .private-thread-private-label{
    min-height:18px!important;
    padding:0 7px!important;
    border-radius:999px!important;
    color:#cfc6ff!important;
    background:rgba(116,83,240,.17)!important;
    font-size:7.5px!important;
    font-weight:900!important;
    letter-spacing:.06em!important;
    text-transform:uppercase!important;
  }
  body.vw-private-thread-open .private-thread-close{
    min-width:50px!important;
    height:38px!important;
    padding:0 9px!important;
    border-radius:12px!important;
    font-size:9.5px!important;
  }

  body.vw-private-thread-open .private-thread-messages{
    box-sizing:border-box!important;
    flex:1 1 auto!important;
    min-height:0!important;
    max-height:none!important;
    margin:0!important;
    padding:14px 12px 18px!important;
    gap:9px!important;
    overflow-y:auto!important;
    overscroll-behavior:contain!important;
    scroll-padding-bottom:18px!important;
    background:
      radial-gradient(circle at 100% 0%,rgba(92,63,216,.055),transparent 35%),
      #070c12!important;
  }
  body.vw-private-thread-open .private-message-bubble{
    max-width:min(84%,360px)!important;
    padding:10px 12px 8px!important;
    border-radius:18px!important;
  }
  body.vw-private-thread-open .private-message-bubble.mine{
    align-self:flex-end!important;
    border-bottom-right-radius:6px!important;
    background:linear-gradient(135deg,#5038a5,#342a72)!important;
  }
  body.vw-private-thread-open .private-message-bubble.theirs{
    align-self:flex-start!important;
    border-bottom-left-radius:6px!important;
    background:#121a24!important;
  }
  body.vw-private-thread-open .private-message-bubble p{
    margin:0!important;
    color:#f5f6fa!important;
    font-size:15px!important;
    line-height:1.46!important;
  }
  body.vw-private-thread-open .private-message-meta{
    margin-top:6px!important;
    gap:7px!important;
  }
  body.vw-private-thread-open .private-message-bubble time,
  body.vw-private-thread-open .private-message-status{font-size:9.5px!important}
  body.vw-private-thread-open .private-day-divider{min-height:34px!important;font-size:10px!important}
  body.vw-private-thread-open .private-thread-empty{
    flex:1 1 auto!important;
    min-height:280px!important;
    justify-content:center!important;
    padding:34px 24px!important;
  }
  body.vw-private-thread-open .private-thread-empty b{font-size:15px!important}
  body.vw-private-thread-open .private-thread-empty small{font-size:11px!important;line-height:1.5!important}

  /* Dedicated full-screen composer is the ONLY visible composer in a PM. */
  body.vw-private-thread-open .private-thread-composer{
    flex:0 0 auto!important;
    grid-template-columns:46px minmax(0,1fr) 46px!important;
    padding:8px max(10px,env(safe-area-inset-right,0px)) calc(8px + env(safe-area-inset-bottom,0px)) max(10px,env(safe-area-inset-left,0px))!important;
  }

  body.vw-private-messages-list .private-conversation-list{
    box-sizing:border-box!important;
    flex:1 1 auto!important;
    min-height:0!important;
    overflow-y:auto!important;
    padding:12px 10px calc(16px + env(safe-area-inset-bottom,0px))!important;
  }

  /* Action sheet may be opened from Participants OR directly from room chat. */
  .private-member-message-menu{
    z-index:2147483200!important;
  }
  .private-member-message-menu-copy small{
    max-width:290px;
  }

  /* Public-message PM entry stays clear but compact. */
  .msg-other .msg-head{align-items:center!important}
  .private-room-message-btn{
    min-height:23px;
    padding:0 7px;
    margin-left:5px;
    font-size:8.5px;
  }
}

@media(max-width:380px){
  body.vw-private-thread-open .private-thread-head{
    grid-template-columns:38px 40px minmax(0,1fr) 46px!important;
    gap:7px!important;
    padding-left:7px!important;
    padding-right:7px!important;
  }
  body.vw-private-thread-open .private-surface-back{width:38px!important;height:38px!important}
  body.vw-private-thread-open .private-thread-avatar{width:40px!important;height:40px!important;border-radius:13px!important;font-size:14px!important}
  body.vw-private-thread-open .private-thread-title>b{font-size:15px!important}
  body.vw-private-thread-open .private-thread-title>small{font-size:9px!important;gap:4px!important}
  body.vw-private-thread-open .private-thread-close{min-width:46px!important;padding:0 7px!important;font-size:8.5px!important}
  body.vw-private-thread-open .private-thread-messages{padding:12px 8px 14px!important}
  body.vw-private-thread-open .private-message-bubble{max-width:88%!important}
  .private-thread-composer{grid-template-columns:43px minmax(0,1fr) 43px!important;gap:6px!important}
  .private-thread-composer input,.private-thread-gif,.private-thread-send{height:43px!important}
  .private-thread-gif,.private-thread-send{width:43px!important;border-radius:13px!important}
  .private-thread-composer input{font-size:14px!important;border-radius:13px!important}
  .private-room-message-btn b{display:none}
  .private-room-message-btn{width:24px;padding:0;justify-content:center}
}

/* Shared GIF tray temporarily owns the top interaction layer. The full-screen
   PM remains underneath and is revealed at the same scroll position on close. */
body.vw-private-thread-open.vw-gif-tray-open .private-messages-backdrop{display:none!important}

/* R6 exact Android keyboard override: higher specificity than legacy shell PM
   styling, while leaving the shell's video geometry and canonical composer
   parent completely untouched. */
@media(max-width:720px){
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-messages-surface{
    left:0!important;
    right:auto!important;
    top:var(--vw-private-vv-top,0px)!important;
    bottom:auto!important;
    width:100vw!important;
    height:var(--vw-private-vv-height,100dvh)!important;
    max-height:none!important;
    padding:0!important;
    border:0!important;
    border-radius:0!important;
  }
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-head{
    display:grid!important;
    grid-template-columns:38px 40px minmax(0,1fr) 46px!important;
    min-height:56px!important;
    padding:calc(5px + env(safe-area-inset-top,0px)) 7px 6px!important;
  }
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-avatar{
    display:grid!important;
    width:40px!important;
    height:40px!important;
  }
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-title>b{font-size:14px!important}
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-title>small{font-size:8.5px!important;margin-top:2px!important}
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-messages{
    flex:1 1 auto!important;
    min-height:0!important;
    max-height:none!important;
    padding:8px 8px 10px!important;
  }
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-composer{
    display:grid!important;
    flex:0 0 auto!important;
    padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px))!important;
  }
}

/* ================================================================
   V3.13R1 — PRIVATE MESSAGE PARITY WITH ROOM CHAT
   Canonical #chatForm/#chatInput owns keyboard geometry, just like room chat.
   Private reply/reactions intentionally mirror room-chat interaction language.
   ================================================================ */

body.vw-private-thread-open .private-thread-composer{display:none!important}
body.vw-private-thread-open #chatForm,
body.vw-android-room-shell.vw-private-thread-open #chatForm{
  display:grid!important;
  z-index:2147483250!important;
  grid-template-columns:40px 44px minmax(0,1fr) 44px!important;
}
body.vw-private-thread-open:not(.vw-android-keyboard-open) #chatForm{
  box-sizing:border-box!important;
  position:fixed!important;
  left:8px!important;
  right:8px!important;
  bottom:calc(8px + env(safe-area-inset-bottom,0px))!important;
  top:auto!important;
  width:auto!important;
  min-height:58px!important;
  height:58px!important;
  max-height:58px!important;
  margin:0!important;
  padding:7px!important;
  gap:6px!important;
  border:1px solid rgba(137,111,255,.18)!important;
  border-radius:18px!important;
  background:rgba(8,12,18,.995)!important;
  box-shadow:0 -12px 34px rgba(0,0,0,.44)!important;
}
body.vw-private-thread-open #chatInput{
  min-width:0!important;
  color:#f3f5f8!important;
  background:#0d141d!important;
  border-color:rgba(139,119,255,.25)!important;
}
body.vw-private-thread-open #chatInput::placeholder{color:#808b9c!important}
body.vw-private-thread-open .private-thread-messages{
  padding-bottom:86px!important;
}
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open #chatForm{
  z-index:2147483250!important;
}
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-messages{
  padding-bottom:12px!important;
}

/* Private bubbles use the same long-press contract as room-chat messages. */
.private-message-bubble[data-private-message-id],
.private-message-bubble[data-private-message-id] *{
  -webkit-user-select:none!important;
  user-select:none!important;
  -webkit-touch-callout:none!important;
}
.private-message-bubble[data-private-message-id]{touch-action:pan-y}

.private-reply-quote{
  box-sizing:border-box;
  display:grid;
  grid-template-columns:3px minmax(0,1fr) auto;
  align-items:center;
  gap:7px;
  width:100%;
  min-width:0;
  margin:1px 0 8px;
  padding:6px 7px 6px 0;
  overflow:hidden;
  border:1px solid rgba(155,135,230,.14);
  border-radius:10px;
  background:rgba(118,91,205,.09);
}
.private-reply-quote-accent{
  align-self:stretch;
  width:3px;
  min-height:30px;
  border-radius:0 3px 3px 0;
  background:rgba(157,126,255,.88);
}
.private-reply-quote-copy{display:flex;flex-direction:column;justify-content:center;gap:2px;min-width:0}
.private-reply-quote-copy>b{
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:#cbbfff;font-size:10px;font-weight:850;line-height:1.15;
}
.private-reply-quote-copy>small{
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:#a7b0be;font-size:10.5px;line-height:1.2;
}
.private-reply-quote-thumb{display:block;width:36px;height:36px;border-radius:8px;object-fit:cover;background:#05070a}

.private-reaction-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px;width:100%;margin:7px 0 0;padding:0}
.private-reaction-chip{
  display:inline-flex;align-items:center;justify-content:center;gap:3px;
  min-width:32px;height:25px;margin:0;padding:0 7px;
  border:1px solid rgba(255,255,255,.09);border-radius:999px;
  background:rgba(255,255,255,.05);color:#cbd2dd;
  font:700 9px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  cursor:pointer;-webkit-tap-highlight-color:transparent;
}
.private-reaction-chip.is-own{border-color:rgba(142,111,255,.55);background:rgba(125,88,255,.18);color:#e9e2ff}
.private-reaction-chip>span{font-size:13px;line-height:1}
.private-reaction-chip>b{min-width:7px;text-align:center;font:800 9px/1 inherit}

.private-interaction-popover[hidden]{display:none!important}
.private-interaction-popover{
  box-sizing:border-box;position:fixed;z-index:2147483640;
  display:flex;align-items:center;gap:3px;max-width:calc(100vw - 14px);
  min-height:44px;padding:4px;border:1px solid rgba(255,255,255,.1);
  border-radius:15px;background:rgba(11,15,22,.99);box-shadow:0 12px 34px rgba(0,0,0,.46);
  opacity:0;transform:translateY(3px) scale(.985);transition:opacity .1s ease,transform .1s ease;
  -webkit-tap-highlight-color:transparent;
}
.private-interaction-popover.open{opacity:1;transform:translateY(0) scale(1)}
.private-interaction-emoji-list{display:flex;align-items:center;gap:1px}
.private-interaction-emoji,.private-interaction-reply,.private-interaction-copy{
  display:inline-flex;align-items:center;justify-content:center;height:35px;margin:0;border:0;border-radius:10px;
  background:transparent;color:#e9edf4;cursor:pointer;-webkit-tap-highlight-color:transparent;
}
.private-interaction-emoji{width:33px;min-width:33px;padding:0;font-size:19px;line-height:1}
.private-interaction-reply,.private-interaction-copy{gap:4px;padding:0 8px;border-left:1px solid rgba(255,255,255,.075);border-radius:0 10px 10px 0;color:#cbd2ef}
.private-interaction-reply>span,.private-interaction-copy>span{font-size:15px;line-height:1}
.private-interaction-reply>b,.private-interaction-copy>b{font:800 10px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.private-interaction-emoji:active,.private-interaction-reply:active,.private-interaction-copy:active{background:rgba(255,255,255,.075)}

.private-pending-reply[hidden]{display:none!important}
.private-pending-reply{
  box-sizing:border-box;position:fixed;z-index:2147483290;
  display:grid;grid-template-columns:3px minmax(0,1fr) auto 30px;align-items:center;gap:7px;
  min-height:50px;max-height:60px;padding:5px 5px 5px 0;overflow:hidden;
  border:1px solid rgba(143,113,255,.25);border-radius:12px;background:rgba(8,12,18,.99);
  box-shadow:0 -9px 26px rgba(0,0,0,.32);opacity:.98;
}
.private-pending-reply-accent{align-self:stretch;width:3px;border-radius:0 3px 3px 0;background:rgba(154,121,255,.92)}
.private-pending-reply-body{display:flex;flex-direction:column;justify-content:center;gap:3px;min-width:0}
.private-pending-reply-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#cbbdff;font-size:10px;font-weight:850;line-height:1.1}
.private-pending-reply-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#a7b0be;font-size:10.5px;line-height:1.2}
.private-pending-reply-thumb{width:36px;height:36px;border-radius:8px;object-fit:cover;background:#05070a}
.private-pending-reply-thumb[hidden]{display:none!important}
.private-pending-reply-close{display:grid;place-items:center;width:28px;min-width:28px;height:28px;margin:0;padding:0;border:0;border-radius:50%;background:rgba(255,255,255,.06);color:#9ba5b4;font-size:19px;line-height:1;cursor:pointer}

@media(max-width:380px){
  body.vw-private-thread-open:not(.vw-android-keyboard-open) #chatForm{left:6px!important;right:6px!important}
  .private-interaction-popover{gap:2px;padding:3px}
  .private-interaction-emoji{width:30px;min-width:30px;height:33px;font-size:18px}
  .private-interaction-reply,.private-interaction-copy{padding:0 6px}
  .private-pending-reply{grid-template-columns:3px minmax(0,1fr) auto 28px}
}


/* ========================================================================
   V3.13R3 — TRUE ROOM-KEYBOARD PARITY FOR PRIVATE MESSAGES
   Audit proof (1000478230.mp4): room #chatInput rises with Gboard; R2's
   #privateThreadInput disappears because android-room-shell.js detects/floats
   only #chatInput. PM therefore uses the exact same focused #chatInput.
   ======================================================================== */

/* One input, one IME owner. The R2 dedicated PM composer is permanently inert. */
body.vw-private-thread-open .private-thread-composer,
body.vw-private-thread-open .private-thread-composer.private-thread-composer-v313r2{
  display:none!important;
  visibility:hidden!important;
  opacity:0!important;
  pointer-events:none!important;
}

/* Undo R2's invisible canonical shadow. The DOM parent is never changed,
   preserving android-room-shell.js's stable-parent invariant. */
body.vw-private-thread-open #chatForm.private-thread-canonical-shadow,
body.vw-android-room-shell.vw-private-thread-open #chatForm.private-thread-canonical-shadow,
body.vw-private-thread-open #chatForm{
  display:grid!important;
  visibility:visible!important;
  opacity:1!important;
  filter:none!important;
  pointer-events:auto!important;
  z-index:2147483500!important;
}
body.vw-private-thread-open #chatInput{
  visibility:visible!important;
  opacity:1!important;
  pointer-events:auto!important;
}

/* Private overlay is body-mounted while canonical #chatForm stays in the room
   card. Remove only clipping boundaries during PM mode; geometry stays unchanged. */
@media(max-width:980px){
  body.vw-android-room-shell.vw-private-thread-open .shell,
  body.vw-android-room-shell.vw-private-thread-open #roomView,
  body.vw-android-room-shell.vw-private-thread-open .room-grid,
  body.vw-android-room-shell.vw-private-thread-open .sidebar,
  body.vw-android-room-shell.vw-private-thread-open .side-card.chat{
    overflow:visible!important;
    clip:auto!important;
    clip-path:none!important;
    contain:none!important;
  }
}

/* Closed keyboard: canonical room composer is the visible PM footer. */
@media(max-width:720px){
  body.vw-private-thread-open:not(.vw-android-keyboard-open):not(.vw-android-ime-session) #chatForm{
    box-sizing:border-box!important;
    position:fixed!important;
    left:8px!important;
    right:8px!important;
    top:auto!important;
    bottom:calc(8px + env(safe-area-inset-bottom,0px))!important;
    width:auto!important;
    min-height:58px!important;
    height:58px!important;
    max-height:58px!important;
    margin:0!important;
    padding:7px!important;
    gap:6px!important;
    border:1px solid rgba(137,111,255,.18)!important;
    border-radius:18px!important;
    background:rgba(8,12,18,.995)!important;
    box-shadow:0 -12px 34px rgba(0,0,0,.44)!important;
    transform:none!important;
  }
  body.vw-private-thread-open:not(.vw-android-keyboard-open):not(.vw-android-ime-session) .private-messages-surface{
    bottom:calc(76px + env(safe-area-inset-bottom,0px))!important;
  }
}

/* IME opening + keyboard-open geometry belongs 100% to android-room-shell.css.
   We only keep PM content above its proven floating composer variables. */
@media(max-width:720px){
  body.vw-android-room-shell.vw-android-ime-session.vw-private-thread-open #chatForm,
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open #chatForm{
    visibility:visible!important;
    opacity:1!important;
    filter:none!important;
    pointer-events:auto!important;
    z-index:2147483500!important;
  }
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-messages-surface{
    bottom:calc(var(--vw-android-live-composer-bottom,var(--vw-android-floating-composer-bottom,5px)) + var(--vw-android-floating-composer-height,44px) + 10px)!important;
  }
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-messages{
    padding-bottom:10px!important;
    scroll-padding-bottom:12px!important;
  }
}

@media(max-width:380px){
  body.vw-private-thread-open:not(.vw-android-keyboard-open):not(.vw-android-ime-session) #chatForm{left:6px!important;right:6px!important}
}

/* Surface already stops above the canonical footer, so R2's dedicated-composer
   reserve is no longer needed. */
body.vw-private-thread-open .private-thread-messages{
  padding-bottom:14px!important;
  scroll-padding-bottom:14px!important;
}

/* ========================================================================
   V3.13R4R1 — ROOT STACKING CONTEXT FIX
   A3 forensic proof:
   - #chatForm is the correct Android IME owner.
   - room states: chatInput is topmost at composer point.
   - private states: privateMessagesSurface is topmost.
   - sole stacking ancestor trapping #chatForm: .shell { position:relative; z-index:1 }.
   Remove only that stacking-context boundary while a private thread is open.
   ======================================================================== */
@media(max-width:980px){
  body.vw-private-thread-open .shell,
  body.vw-android-room-shell.vw-private-thread-open .shell{
    z-index:auto!important;
  }
}
body.vw-private-thread-open .private-messages-surface{
  z-index:2147482600!important;
}
body.vw-private-thread-open #chatForm,
body.vw-android-room-shell.vw-private-thread-open #chatForm{
  z-index:2147483500!important;
}
:root{--vw-private-root-stack-fix-v3-13r4r1:1}

/* ========================================================================
   V3.13R5 — SMOOTH MOBILE PRIVATE CHAT POLISH
   ======================================================================== */
body.vw-private-thread-open .private-messages-surface{
  background:#080d14!important;
  border-color:rgba(255,255,255,.055)!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
}
body.vw-private-thread-open .private-thread-messages{
  overscroll-behavior-y:contain!important;
  -webkit-overflow-scrolling:touch!important;
  scrollbar-width:none!important;
}
body.vw-private-thread-open .private-thread-messages::-webkit-scrollbar{display:none!important}

/* Inside a DM the envelope launcher is redundant; keep it only in room chat. */
body.vw-private-thread-open #chatForm>.private-messages-btn{display:none!important}
body.vw-private-thread-open #chatForm,
body.vw-android-room-shell.vw-private-thread-open #chatForm{
  grid-template-columns:46px minmax(0,1fr) 48px!important;
  column-gap:7px!important;
  transition:none!important;
  will-change:auto!important;
}

body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-messages-surface,
body.vw-android-room-shell.vw-android-ime-session.vw-private-thread-open .private-messages-surface,
body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open #chatForm,
body.vw-android-room-shell.vw-android-ime-session.vw-private-thread-open #chatForm{
  transition:none!important;
  animation:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
}

body.vw-private-thread-open #chatInput{
  min-width:0!important;
  height:46px!important;
  min-height:46px!important;
  max-height:46px!important;
  padding:0 14px!important;
  border:1px solid rgba(132,109,255,.28)!important;
  border-radius:15px!important;
  background:#0d141d!important;
  color:#f4f6f9!important;
  font-size:16px!important;
  line-height:1.2!important;
  box-shadow:none!important;
}
body.vw-private-thread-open #chatInput:focus{
  border-color:rgba(139,111,255,.72)!important;
  box-shadow:0 0 0 2px rgba(120,88,255,.11)!important;
}
body.vw-private-thread-open #chatInput::placeholder{color:#7f8999!important}

body.vw-private-thread-open #chatForm>.gif-picker-btn,
body.vw-private-thread-open #chatForm>button[type="submit"]{
  width:46px!important;min-width:46px!important;max-width:46px!important;
  height:46px!important;min-height:46px!important;max-height:46px!important;
  border-radius:15px!important;
}
body.vw-private-thread-open #chatForm>.gif-picker-btn{
  border-color:rgba(132,109,255,.22)!important;
  background:rgba(119,86,255,.12)!important;
}
body.vw-private-thread-open #chatForm>button[type="submit"]{
  width:48px!important;min-width:48px!important;max-width:48px!important;
  background:linear-gradient(145deg,#795cff,#6b50ef)!important;
  box-shadow:0 5px 15px rgba(99,70,224,.20)!important;
}

body.vw-private-thread-open .private-message-bubble{
  max-width:80%!important;
  padding:10px 12px 8px!important;
  border-radius:18px!important;
  box-shadow:0 2px 8px rgba(0,0,0,.11)!important;
}
body.vw-private-thread-open .private-message-bubble.mine{
  border-color:rgba(139,111,255,.26)!important;
  background:linear-gradient(145deg,rgba(104,75,225,.78),rgba(76,59,174,.72))!important;
}
body.vw-private-thread-open .private-message-bubble.theirs{
  border-color:rgba(255,255,255,.065)!important;
  background:#111923!important;
}
body.vw-private-thread-open .private-message-bubble p{
  margin:0!important;font-size:15.5px!important;line-height:1.44!important;
}
body.vw-private-thread-open .private-message-meta{
  margin-top:6px!important;gap:6px!important;opacity:.86!important;
}
body.vw-private-thread-open .private-message-bubble time,
body.vw-private-thread-open .private-message-status{
  font-size:10px!important;line-height:1!important;
}

body.vw-private-thread-open .private-gif-actions button{
  min-height:40px!important;padding:0 12px!important;font-size:10.5px!important;border-radius:999px!important;
}
body.vw-private-thread-open .private-reaction-chip{
  min-width:36px!important;min-height:34px!important;height:34px!important;
  padding:0 9px!important;font-size:10.5px!important;
}
body.vw-private-thread-open .private-reaction-chip>span{font-size:15px!important}
body.vw-private-thread-open .private-reaction-chip>b{font-size:10px!important}

.private-pending-reply{
  min-height:54px!important;max-height:66px!important;border-radius:14px!important;
  box-shadow:0 -4px 16px rgba(0,0,0,.18)!important;
}
.private-pending-reply-close{width:40px!important;min-width:40px!important;height:40px!important}
.private-interaction-popover{
  min-height:48px!important;padding:4px!important;border-radius:16px!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  box-shadow:0 8px 22px rgba(0,0,0,.28)!important;
}
.private-interaction-emoji,.private-interaction-reply,.private-interaction-copy{
  min-height:40px!important;height:40px!important;
}
.private-interaction-emoji{width:34px!important;min-width:34px!important;font-size:19px!important}

@media(max-width:720px){
  body.vw-private-thread-open .private-messages-surface{
    left:0!important;right:0!important;top:0!important;width:100vw!important;
    border-left:0!important;border-right:0!important;border-top:0!important;
    border-radius:0!important;padding:0!important;
  }
  body.vw-private-thread-open:not(.vw-android-keyboard-open):not(.vw-android-ime-session) .private-messages-surface{
    bottom:calc(74px + env(safe-area-inset-bottom,0px))!important;
  }
  body.vw-private-thread-open .private-thread-head{
    box-sizing:border-box!important;
    min-height:62px!important;padding:8px 10px!important;
    grid-template-columns:44px 42px minmax(0,1fr) auto!important;
    gap:9px!important;
    border-bottom:1px solid rgba(255,255,255,.055)!important;
    background:#0a111a!important;
  }
  body.vw-private-thread-open .private-surface-back{
    width:44px!important;min-width:44px!important;height:44px!important;border-radius:14px!important;
  }
  body.vw-private-thread-open .private-thread-avatar{
    width:42px!important;min-width:42px!important;height:42px!important;border-radius:14px!important;
  }
  body.vw-private-thread-open .private-thread-title>b{font-size:16px!important;line-height:1.15!important}
  body.vw-private-thread-open .private-thread-title>small{
    margin-top:4px!important;gap:5px!important;font-size:10px!important;line-height:1.15!important;
  }
  body.vw-private-thread-open .private-thread-private-label{
    min-height:17px!important;padding:0 6px!important;font-size:7px!important;
  }
  body.vw-private-thread-open .private-thread-close{
    min-width:48px!important;height:40px!important;padding:0 10px!important;border-radius:13px!important;
  }
  body.vw-private-thread-open .private-thread-messages{
    padding:10px 12px 16px!important;gap:8px!important;scroll-padding-bottom:18px!important;
  }
  body.vw-private-thread-open:not(.vw-android-keyboard-open):not(.vw-android-ime-session) #chatForm{
    left:8px!important;right:8px!important;bottom:calc(7px + env(safe-area-inset-bottom,0px))!important;
    width:auto!important;min-height:60px!important;height:60px!important;max-height:60px!important;
    padding:7px!important;border:1px solid rgba(132,109,255,.20)!important;
    border-radius:20px!important;background:#090f17!important;
    box-shadow:0 -4px 18px rgba(0,0,0,.22)!important;
  }
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open #chatForm,
  body.vw-android-room-shell.vw-android-ime-session.vw-private-thread-open #chatForm{
    grid-template-columns:46px minmax(0,1fr) 48px!important;
    gap:7px!important;border-radius:18px!important;background:#090f17!important;
    box-shadow:0 -3px 14px rgba(0,0,0,.17)!important;
  }
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-head{
    min-height:52px!important;padding:5px 8px!important;
    grid-template-columns:40px minmax(0,1fr) 40px!important;gap:7px!important;
  }
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-surface-back,
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-close{
    width:40px!important;min-width:40px!important;height:40px!important;border-radius:12px!important;
  }
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-title>b{font-size:14px!important}
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-title>small{
    font-size:8.5px!important;margin-top:2px!important;
  }
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-thread-messages{
    padding:8px 10px 12px!important;gap:7px!important;
  }
}
@media(max-width:380px){
  body.vw-private-thread-open #chatForm,
  body.vw-android-room-shell.vw-private-thread-open #chatForm{
    grid-template-columns:44px minmax(0,1fr) 46px!important;gap:6px!important;
  }
  body.vw-private-thread-open .private-thread-head{
    grid-template-columns:42px 38px minmax(0,1fr) 44px!important;
    gap:7px!important;padding-left:7px!important;padding-right:7px!important;
  }
  body.vw-private-thread-open .private-thread-avatar{
    width:38px!important;min-width:38px!important;height:38px!important;
  }
  body.vw-private-thread-open .private-thread-messages{
    padding-left:9px!important;padding-right:9px!important;
  }
  body.vw-private-thread-open .private-message-bubble{max-width:86%!important}
}
:root{--vw-private-smooth-ui-v3-13r5:1}



/* ========================================================================
   V3.13R6 — LAST PRIVATE MESSAGE TAIL-SAFE GEOMETRY
   A6 evidence: legacy keyboard rules simultaneously left the PM surface with
   an explicit visual-viewport height and later tried to reserve the floating
   composer with bottom:. top + height wins the vertical size, so the later
   bottom reserve cannot reliably shrink the surface. The scroll box can then
   extend behind #chatForm and scrollTop=scrollHeight puts the newest bubble
   underneath the input. R6 derives the PM surface height from the ACTUAL
   canonical #chatForm rect instead. No Android shell or server mutation.
   ======================================================================== */
@media(max-width:720px){
  body.vw-private-thread-open .private-messages-surface,
  body.vw-android-room-shell.vw-private-thread-open .private-messages-surface,
  body.vw-android-room-shell.vw-android-ime-session.vw-private-thread-open .private-messages-surface,
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open .private-messages-surface{
    box-sizing:border-box!important;
    top:var(--vw-private-vv-top,0px)!important;
    bottom:auto!important;
    height:var(--vw-private-surface-height,calc(var(--vw-private-vv-height,100dvh) - 74px))!important;
    max-height:none!important;
  }
  body.vw-private-thread-open .private-thread-view{
    display:flex!important;
    flex:1 1 auto!important;
    flex-direction:column!important;
    min-height:0!important;
    height:100%!important;
    max-height:100%!important;
    overflow:hidden!important;
  }
  body.vw-private-thread-open .private-thread-messages{
    min-height:0!important;
    overflow-y:auto!important;
    overscroll-behavior-y:contain!important;
    padding-bottom:16px!important;
    scroll-padding-bottom:16px!important;
  }
}
:root{--vw-private-last-message-tail-safe-v3-13r6:1}

/* ========================================================================
   V3.13R7 — PRIVATE THREAD COMPOSER: ONE CANONICAL LAYOUT
   A7/A8 runtime proof:
   - private-thread intended tracks: GIF | INPUT | SEND (3 controls)
   - legacy Android keyboard rule re-showed .private-messages-btn in-thread
   - 4 visible children entered a 3-track grid, collapsing #chatInput to 48px
     and wrapping Send to a second row.
   R7 scope:
   - the PM launcher is never a child of the active private-thread composer
   - explicit grid placement makes DOM insertion order irrelevant
   - keyboard-open uses shell-sized 44px controls and one flexible input track
   - R6 tail-safe viewport/surface geometry is intentionally untouched.
   ======================================================================== */
@media(max-width:720px){
  body.vw-private-thread-open #chatForm > .private-messages-btn,
  body.vw-android-room-shell.vw-private-thread-open #chatForm > .private-messages-btn,
  body.vw-android-room-shell.vw-android-ime-session.vw-private-thread-open #chatForm > .private-messages-btn,
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open #chatForm > .private-messages-btn,
  body.vw-android-room-shell.vw-android-keyboard-open.vw-android-keyboard-tight.vw-private-thread-open #chatForm > .private-messages-btn{
    display:none!important;
    width:0!important;min-width:0!important;max-width:0!important;
    height:0!important;min-height:0!important;max-height:0!important;
    flex:0 0 0!important;
    margin:0!important;padding:0!important;border:0!important;
    overflow:hidden!important;pointer-events:none!important;
  }

  body.vw-private-thread-open #chatForm,
  body.vw-android-room-shell.vw-private-thread-open #chatForm,
  body.vw-android-room-shell.vw-android-ime-session.vw-private-thread-open #chatForm{
    display:grid!important;
    grid-template-columns:46px minmax(0,1fr) 48px!important;
    grid-template-rows:minmax(0,1fr)!important;
    grid-auto-flow:row!important;
    column-gap:7px!important;
    row-gap:0!important;
    min-width:0!important;
  }

  body.vw-private-thread-open #chatForm > .gif-picker-btn,
  body.vw-android-room-shell.vw-private-thread-open #chatForm > .gif-picker-btn{
    grid-column:1!important;
    grid-row:1!important;
  }
  body.vw-private-thread-open #chatInput,
  body.vw-android-room-shell.vw-private-thread-open #chatInput{
    grid-column:2!important;
    grid-row:1!important;
    min-width:0!important;
    max-width:none!important;
  }
  body.vw-private-thread-open #chatForm > button[type="submit"],
  body.vw-android-room-shell.vw-private-thread-open #chatForm > button[type="submit"]{
    grid-column:3!important;
    grid-row:1!important;
  }

  /* Once Gboard is actually open, match the Android shell's physical 44px
     controls exactly. This avoids the old 46/48 track vs 44px control mismatch. */
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open #chatForm,
  body.vw-android-room-shell.vw-android-keyboard-open.vw-android-keyboard-tight.vw-private-thread-open #chatForm{
    display:grid!important;
    grid-template-columns:44px minmax(0,1fr) 44px!important;
    grid-template-rows:44px!important;
    column-gap:6px!important;
    row-gap:0!important;
    min-width:0!important;
    overflow:visible!important;
  }
  body.vw-android-room-shell.vw-android-keyboard-open.vw-private-thread-open #chatInput{
    width:100%!important;
    height:44px!important;min-height:44px!important;max-height:44px!important;
  }
}
:root{--vw-private-composer-canonical-v3-13r7:1}



/* VW_PM_OPTIMISTIC_DELIVERY_UI_V3_15R7 */
.private-message-bubble.mine[data-private-delivery="sending"] .private-message-status{
  opacity:.62;
}
.private-message-bubble.mine[data-private-delivery="failed"]{
  opacity:.88;
}
.private-message-bubble.mine[data-private-delivery="failed"] .private-message-status{
  opacity:1;
  font-weight:800;
  cursor:pointer;
  text-decoration:underline;
  text-underline-offset:2px;
}

/* V3.15R8R9D1 */
.private-interaction-popover .private-interaction-delete{border:0;background:transparent;font:inherit;font-weight:700;padding:8px 10px;cursor:pointer}.private-interaction-popover .private-interaction-delete[hidden]{display:none!important}
