/* One compact menu, anchored to a rendered message part. */
#messageActionMenu.message-action-menu{
  box-sizing:border-box;width:260px;max-width:calc(100vw - 16px);padding:5px;
  border:1px solid color-mix(in srgb,var(--chat-border) 88%,transparent);
  border-radius:15px;background:color-mix(in srgb,var(--chat-surface) 97%,var(--chat-bg));
  color:var(--chat-text);box-shadow:0 10px 30px color-mix(in srgb,var(--chat-text) 13%,transparent);
  overflow:visible;
}
#messageActionMenu.message-action-menu::after{
  content:"";position:absolute;left:var(--message-menu-arrow-x,50%);bottom:-6px;
  width:10px;height:10px;border-right:1px solid var(--chat-border);border-bottom:1px solid var(--chat-border);
  background:var(--chat-surface);transform:translateX(-50%) rotate(45deg);
}
#messageActionMenu.message-action-menu.below-anchor-v1::after{
  top:-6px;bottom:auto;border:0;border-top:1px solid var(--chat-border);border-left:1px solid var(--chat-border);
}
#messageActionGrid.message-action-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px;max-height:min(220px,40dvh);overflow-y:auto}
#messageActionGrid.message-action-grid button{
  display:grid;place-items:center;min-width:0;min-height:45px;padding:0;
  border:0;border-radius:10px;background:transparent;color:var(--chat-text);cursor:pointer;
}
#messageActionGrid.message-action-grid button:hover{background:var(--accent-pale)}
#messageActionGrid.message-action-grid button:active{background:color-mix(in srgb,var(--chat-accent) 19%,var(--chat-surface));transform:scale(.96)}
#messageActionGrid.message-action-grid button:focus-visible{outline:2px solid var(--chat-accent);outline-offset:-2px}
#messageActionGrid.message-action-grid button:disabled{opacity:.42;cursor:not-allowed}
#messageActionGrid.message-action-grid button.danger{color:color-mix(in srgb,#b34a55 72%,var(--chat-text))}
#messageActionGrid.message-action-grid .message-action-icon-v1{display:grid;place-items:center;width:21px;height:21px}
#messageActionGrid.message-action-grid svg{display:block;width:21px;height:21px}
html[data-appearance="dark"] #messageActionMenu.message-action-menu{box-shadow:0 12px 34px rgba(0,0,0,.38)}
html[data-appearance="dark"] #messageActionGrid.message-action-grid button.danger{color:#e4a2aa}
html[data-appearance="dark"] #messageActionGrid.message-action-grid button:hover{background:color-mix(in srgb,var(--chat-accent) 20%,var(--chat-surface))}

/* Duration controls both sides' voice width; flex children retain their space. */
.message-group .bubble-stack:has(> .chat-voice-message-v117){width:min(calc(100% - var(--chat-avatar-size,34px) - 18px),560px)!important;max-width:min(calc(100% - var(--chat-avatar-size,34px) - 18px),560px)!important}
.message-group .chat-voice-message-v117{width:min(var(--voice-target-width-v1,188px),100%)}
.message-group .chat-voice-message-v117 .message-bubble-row{width:100%}
.message-group.user .bubble-stack:has(> .chat-voice-message-v117) > .chat-voice-message-v117{margin-left:auto}
.message-group .chat-voice-message-v117 .chat-voice-bubble-v117{
  width:100%!important;
  min-width:0!important;max-width:100%!important;
}
.message-group .chat-voice-message-v117 .chat-voice-wave-v117{min-width:35px;overflow:hidden}
.message-group .chat-voice-message-v117 .chat-voice-duration-v117{white-space:nowrap}

/* Match every plus-tray icon well, including the sticker entry. */
.transfer-add-grid-v41 [data-add-sticker] > i{
  box-sizing:border-box;width:57px;height:57px;border-radius:15px!important;
  padding:0;background:var(--chat-surface);color:var(--chat-accent);box-shadow:var(--shadow-xs);
  font-size:0!important;
}
.transfer-add-grid-v41 [data-add-sticker] > i svg{width:27px;height:27px}
.transfer-add-grid-v41 [data-add-sticker]:focus-visible > i{outline:2px solid var(--chat-accent);outline-offset:2px}

/* Preview chrome follows Whisper's theme; the authored iframe keeps its own. */
.html-preview-v139 > header{
  display:grid;grid-template-columns:44px minmax(0,1fr) 44px;gap:8px;
  min-height:calc(55px + env(safe-area-inset-top));
  padding:env(safe-area-inset-top) max(12px,env(safe-area-inset-right)) 0 max(12px,env(safe-area-inset-left));
}
.html-preview-v139 > header strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}
.html-preview-v139 > header button{
  display:grid;place-items:center;width:44px;height:44px;min-height:44px;padding:0;
  border:0;border-radius:11px;background:transparent;color:var(--chat-accent);
}
.html-preview-v139 > header button svg{display:block;width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.html-preview-v139 > header button:hover{background:var(--accent-pale)}
.html-preview-v139 > header button:active{background:color-mix(in srgb,var(--chat-accent) 20%,var(--chat-surface))}
.html-preview-v139 > header button:focus-visible,.html-download-hint-v139 button:focus-visible{outline:2px solid var(--chat-accent);outline-offset:2px}
.html-download-hint-v139{
  display:flex;align-items:center;justify-content:center;gap:8px;min-height:34px;
  padding:4px max(10px,env(safe-area-inset-right)) 4px max(10px,env(safe-area-inset-left));
  box-sizing:border-box;background:var(--accent-pale);color:var(--chat-muted);text-align:left;
}
.html-download-hint-v139[hidden]{display:none!important}
.html-download-hint-v139 span{flex:1;max-width:620px;text-align:center}
.html-download-hint-v139 button{display:grid;place-items:center;flex:none;width:28px;height:28px;padding:0;border:0;border-radius:8px;background:transparent;color:var(--chat-muted);cursor:pointer}
.html-download-hint-v139 button:hover{background:color-mix(in srgb,var(--chat-accent) 12%,var(--chat-surface));color:var(--chat-text)}
.html-download-hint-v139 button:active{transform:scale(.94)}
.html-download-hint-v139 button svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
html[data-appearance="dark"] .html-download-hint-v139{background:color-mix(in srgb,var(--chat-surface) 74%,var(--chat-accent));color:var(--chat-muted)}
@media(max-width:430px){.html-preview-v139 > header{gap:4px}.html-download-hint-v139 span{font-size:10px;line-height:1.4}}

/* Temporary assistant state follows the same avatar/stack/row geometry as a
   stored Rei message, but remains outside every message action target. */
.pending-assistant-v1 .pending-message-item-v1{pointer-events:none;user-select:none;-webkit-user-select:none}
.pending-assistant-v1 .bubble-stack{gap:0}
.pending-assistant-v1 .pending-message-item-v1 .message-bubble-row{width:fit-content;max-width:100%}
.pending-assistant-v1 .pending-bubble-v1{white-space:nowrap}
.pending-status-label-v1{display:inline-block}
.pending-status-dots-v1{display:inline-flex;align-items:baseline;min-width:1.05em}
.pending-status-dots-v1 i{display:inline-block;width:.35em;font:inherit;font-style:normal;text-align:center;animation:pending-dot-wave-v1 1.65s ease-in-out infinite}
.pending-status-dots-v1 i:nth-child(2){animation-delay:.14s}
.pending-status-dots-v1 i:nth-child(3){animation-delay:.28s}
@keyframes pending-dot-wave-v1{0%,60%,100%{transform:translateY(0);opacity:.5}28%{transform:translateY(-2px);opacity:1}}
@media(prefers-reduced-motion:reduce){.pending-status-dots-v1 i{animation:none;transform:none;opacity:.8}}
