/* Single production message visual system. */
:root{--msg-chat-bg:var(--background-primary,var(--bg));--msg-in:var(--incoming-bubble,var(--surface-primary,var(--panel)));--msg-out:var(--outgoing-bubble,var(--accent));--msg-text:var(--label-primary,var(--text));--msg-secondary:var(--label-secondary,var(--muted));--msg-accent:var(--accent,#0a84ff);--msg-media-status-bg:rgba(18,18,20,.58);--msg-media-status-text:#fff;--msg-reaction-bg:color-mix(in srgb,var(--surface-primary,var(--panel)) 88%,transparent);--msg-reaction-selected:color-mix(in srgb,var(--msg-accent) 19%,var(--surface-primary,var(--panel)))}
#msgs{gap:0!important}#msgs .mrow{display:flex;align-items:flex-end;width:100%;box-sizing:border-box;margin:1px 0!important;padding-inline:8px!important}#msgs .mrow.own{justify-content:flex-end}#msgs .mrow.their{justify-content:flex-start}#msgs .mrow:not(.grouped){margin-top:5px!important}#msgs .bwrap{display:flex;flex-direction:column;align-items:stretch;max-width:min(80%,560px)!important;min-width:0}#msgs .mrow.own .bwrap{align-items:flex-end}#msgs .mrow.their .bwrap{align-items:flex-start}
.msg-node{position:relative;box-sizing:border-box;max-width:100%;min-width:0;color:var(--msg-text);font:inherit;overflow:visible}.msg-node.msg-bubble{padding:7px 10px 6px;border-radius:17px;background:var(--msg-in);box-shadow:0 .5px 1.5px rgba(0,0,0,.10)}.msg-node.msg-own.msg-bubble{background:var(--msg-out);color:#fff}.msg-node.msg-group-mid.msg-bubble,.msg-node.msg-grouped.msg-bubble{border-radius:16px}.msg-node.msg-their.msg-grouped:not(.msg-group-end).msg-bubble{border-top-left-radius:8px;border-bottom-left-radius:8px}.msg-node.msg-own.msg-grouped:not(.msg-group-end).msg-bubble{border-top-right-radius:8px;border-bottom-right-radius:8px}.msg-node.msg-their.msg-group-end.msg-bubble{border-bottom-left-radius:5px}.msg-node.msg-own.msg-group-end.msg-bubble{border-bottom-right-radius:5px}.msg-node.msg-group-end.msg-bubble::after{content:"";position:absolute;bottom:0;width:8px;height:11px;background:inherit;pointer-events:none}.msg-node.msg-their.msg-group-end.msg-bubble::after{left:-4px;clip-path:polygon(100% 0,100% 100%,0 100%,55% 62%)}.msg-node.msg-own.msg-group-end.msg-bubble::after{right:-4px;clip-path:polygon(0 0,0 100%,100% 100%,45% 62%)}.msg-node.msg-visual{padding:0;background:transparent!important;box-shadow:none!important;border:0!important}.msg-content{min-width:0}.msg-content::after{content:"";display:block;clear:both}
.msg-text{font-size:16px;line-height:1.3;white-space:pre-wrap;overflow-wrap:anywhere}.msg-text a{color:inherit;text-decoration:underline;text-underline-offset:2px}.msg-node.msg-their .msg-text a{color:var(--msg-accent)}.msg-sender{font-size:12px;font-weight:700;margin:0 0 2px;color:var(--msg-accent)}.msg-forward{display:flex;gap:4px;align-items:baseline;font-size:12px;line-height:15px;margin:0 0 4px;color:color-mix(in srgb,currentColor 78%,transparent)}.msg-forward b{font-weight:650;color:var(--msg-accent)}.msg-own .msg-forward b{color:inherit}.msg-reply{display:grid;grid-template-columns:3px minmax(0,1fr);gap:7px;width:100%;border:0;background:transparent;color:inherit;padding:1px 0 5px;text-align:left;font:inherit;cursor:pointer}.msg-reply>i{display:block;width:3px;height:31px;border-radius:2px;background:var(--msg-accent)}.msg-reply>span{min-width:0;display:grid;gap:1px}.msg-reply b{font-size:12px;line-height:14px;color:var(--msg-accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.msg-own .msg-reply b{color:inherit}.msg-reply span span{font-size:12px;line-height:14px;opacity:.72;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.msg-status{display:inline-flex;align-items:center;gap:3px;margin-left:7px;float:right;transform:translateY(3px);font-size:11px;line-height:13px;white-space:nowrap;color:color-mix(in srgb,currentColor 62%,transparent);font-variant-numeric:tabular-nums}.msg-checks{width:16px;height:11px;display:block;color:currentColor}.msg-checks.read{color:var(--msg-accent)}.msg-own .msg-checks.read{color:color-mix(in srgb,#fff 92%,var(--msg-accent))}.msg-pending{width:10px;height:10px;border:1.5px solid currentColor;border-top-color:transparent;border-radius:50%;animation:msg-spin .8s linear infinite}.msg-failed{width:16px;height:16px;border:0;border-radius:50%;background:#ff453a;color:#fff;font-size:11px;font-weight:800;padding:0;display:grid;place-items:center}@keyframes msg-spin{to{transform:rotate(360deg)}}.msg-status-overlay{position:absolute;right:5px;bottom:5px;z-index:4;float:none;transform:none;margin:0;padding:3px 5px;border-radius:8px;background:var(--msg-media-status-bg);color:var(--msg-media-status-text);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 1px 4px rgba(0,0,0,.18)}.msg-status-overlay .msg-checks.read{color:#fff}
.msg-media{position:relative;overflow:hidden;border-radius:15px;background:var(--background-secondary,var(--panel-2));max-width:min(74vw,390px)}.msg-media img,.msg-media>video{display:block;width:auto;height:auto;max-width:100%;max-height:min(58vh,520px);object-fit:contain;background:transparent}.msg-media-photo img{min-width:150px}.msg-kind-photo.msg-has-caption,.msg-kind-video.msg-has-caption,.msg-kind-gif.msg-has-caption,.msg-kind-album.msg-has-caption{overflow:hidden;padding:0 0 6px!important}.msg-kind-photo.msg-has-caption .msg-media,.msg-kind-video.msg-has-caption .msg-media,.msg-kind-gif.msg-has-caption .msg-media,.msg-kind-album.msg-has-caption .msg-media{border-radius:16px 16px 5px 5px;max-width:100%}.msg-caption{padding:7px 10px 0;font-size:16px;line-height:1.3;white-space:pre-wrap;overflow-wrap:anywhere}.msg-kind-photo.msg-has-caption .msg-status,.msg-kind-video.msg-has-caption .msg-status,.msg-kind-gif.msg-has-caption .msg-status,.msg-kind-album.msg-has-caption .msg-status{margin-right:9px}.msg-video-play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:rgba(0,0,0,.42);color:#fff;backdrop-filter:blur(8px);pointer-events:none}.msg-media-duration{position:absolute;left:6px;bottom:6px;padding:3px 5px;border-radius:7px;background:var(--msg-media-status-bg);color:#fff;font-size:11px}.msg-album{display:grid;gap:2px;width:min(74vw,390px);max-height:520px;overflow:hidden;border-radius:15px}.msg-album[data-count="2"]{grid-template-columns:1fr 1fr}.msg-album[data-count="3"]{grid-template-columns:1.35fr 1fr;grid-template-rows:1fr 1fr}.msg-album[data-count="3"]>*:first-child{grid-row:1/3}.msg-album[data-count="4"]{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}.msg-album img,.msg-album video{width:100%;height:100%;min-height:120px;object-fit:cover}
.msg-kind-sticker{width:min(190px,49vw);min-height:60px}.msg-kind-sticker .sticker-message-host{width:min(190px,49vw)!important;height:auto!important;aspect-ratio:1;display:grid;place-items:center}.msg-kind-sticker .sticker-message-host>*{max-width:100%;max-height:100%}.msg-kind-sticker .msg-status-overlay{bottom:0;right:0}.msg-kind-vnote{width:min(232px,61vw);height:min(232px,61vw);border-radius:50%}.msg-kind-vnote .vnote{width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;margin:0!important;border-radius:50%!important}.msg-kind-vnote .msg-status-overlay{right:8px;bottom:8px}
.msg-kind-voice.msg-bubble{min-width:min(300px,72vw)}.msg-voice{display:grid;grid-template-columns:42px minmax(120px,1fr);grid-template-rows:29px 16px;column-gap:8px;align-items:center}.msg-voice .vplay{grid-row:1/3;width:42px;height:42px;border-radius:50%;border:0;background:var(--msg-accent);color:#fff;display:grid;place-items:center}.msg-own .msg-voice .vplay{background:rgba(255,255,255,.92);color:var(--msg-out)}.msg-voice .vtrack{height:28px;min-width:130px;position:relative;touch-action:none}.msg-voice .vdur{align-self:start;justify-self:start;border:0;background:transparent;color:inherit;opacity:.7;font-size:11px;padding:0;margin:0}.msg-kind-voice .msg-status{margin-left:5px;transform:translateY(1px)}
.msg-kind-file.msg-bubble{min-width:min(300px,72vw)}.msg-file-card{display:grid;grid-template-columns:44px minmax(0,1fr);gap:9px;align-items:center;color:inherit;text-decoration:none}.msg-file-icon{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--msg-accent) 14%,transparent);color:var(--msg-accent)}.msg-file-copy{min-width:0;display:grid;gap:3px}.msg-file-copy b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.msg-file-copy span{font-size:11px;opacity:.68}
.msg-reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px;max-width:100%}.msg-reaction{min-height:28px;padding:2px 8px;border:1px solid color-mix(in srgb,var(--separator,var(--line)) 70%,transparent);border-radius:999px;background:var(--msg-reaction-bg);color:var(--msg-text);display:inline-flex;align-items:center;gap:4px;font-size:13px;backdrop-filter:blur(10px)}.msg-reaction.selected{background:var(--msg-reaction-selected);border-color:color-mix(in srgb,var(--msg-accent) 45%,transparent);color:var(--msg-accent)}.msg-reaction b{font-size:11px;font-weight:600}.mrow.own .msg-reactions{justify-content:flex-end;align-self:flex-end}.msg-node.flash{animation:msg-flash 1.1s ease}.msg-node.hit{outline:2px solid var(--msg-accent);outline-offset:2px}.msg-node.cur{box-shadow:0 0 0 2px var(--msg-accent)}.msg-node.selection-selected{outline:3px solid color-mix(in srgb,var(--msg-accent) 60%,transparent);outline-offset:3px;transform:scale(1.012)}@keyframes msg-flash{0%,100%{filter:none}28%{filter:brightness(1.22)}}
.day{align-self:center!important;margin:8px auto 5px!important}.day span{display:inline-flex!important;min-height:25px!important;align-items:center!important;padding:3px 9px!important;border-radius:999px!important;background:color-mix(in srgb,var(--surface-primary,var(--panel)) 76%,transparent)!important;backdrop-filter:blur(10px)!important;font-size:12px!important;font-weight:600!important;box-shadow:0 1px 5px rgba(0,0,0,.10)!important}.unread-line{display:flex!important;align-items:center!important;gap:8px!important;margin:7px 0!important;color:var(--msg-accent)!important;font-size:12px!important;font-weight:600!important}.unread-line::before,.unread-line::after{content:"";height:.5px;flex:1;background:color-mix(in srgb,var(--msg-accent) 42%,transparent)}.unread-line span{background:transparent!important;padding:0!important}.sysmsg{align-self:center!important;max-width:80%!important;margin:5px auto!important;text-align:center!important}.sysmsg span{display:inline-block!important;padding:4px 9px!important;border-radius:999px!important;background:color-mix(in srgb,var(--surface-primary,var(--panel)) 72%,transparent)!important;color:var(--msg-secondary)!important;font-size:12px!important;line-height:16px!important;backdrop-filter:blur(10px)!important}
@media(min-width:900px){#msgs .bwrap{max-width:min(68%,680px)!important}.msg-text,.msg-caption{font-size:14.5px;line-height:1.34}.msg-kind-sticker{width:min(200px,28vw)}.msg-kind-vnote{width:220px;height:220px}}@media(max-width:520px){#msgs .bwrap{max-width:80%!important}.msg-text,.msg-caption{font-size:16.5px;line-height:1.28}.msg-kind-voice.msg-bubble{min-width:min(290px,78vw)}.msg-media{max-width:min(78vw,360px)}.msg-kind-sticker{width:min(188px,50vw)}.msg-kind-vnote{width:min(228px,62vw);height:min(228px,62vw)}}@media(prefers-reduced-motion:reduce){.msg-node{transition:none!important}.msg-pending{animation:none!important}.msg-node.flash{animation:none!important}}
.msg-voice .vtrack i,.msg-voice .vfill{position:absolute;bottom:4px;border-radius:2px;background:color-mix(in srgb,currentColor 34%,transparent);opacity:.72}.msg-voice .vtrack i.on,.msg-voice .vfill.on{background:var(--msg-accent);opacity:1}.msg-own .msg-voice .vtrack i.on,.msg-own .msg-voice .vfill.on{background:#fff}.msg-voice .vfill{left:0;bottom:1px;height:2px;pointer-events:none}.msg-voice .vtrack{cursor:pointer}
.msg-voice .vtrack i,.msg-voice .vfill{position:absolute;bottom:4px;border-radius:2px;background:color-mix(in srgb,currentColor 34%,transparent);opacity:.72}.msg-voice .vtrack i.on,.msg-voice .vfill.on{background:var(--msg-accent);opacity:1}.msg-own .msg-voice .vtrack i.on,.msg-own .msg-voice .vfill.on{background:#fff}.msg-voice .vfill{left:0;bottom:1px;height:2px;pointer-events:none}.msg-voice .vtrack{cursor:pointer}
.msg-has-caption .msg-reply,.msg-has-caption .msg-forward,.msg-has-caption .msg-sender{margin-left:10px;margin-right:10px}.msg-has-caption .msg-reply:first-child,.msg-has-caption .msg-forward:first-child,.msg-has-caption .msg-sender:first-child{margin-top:7px}
.tgios-context-message-host .msg-node{pointer-events:none;box-shadow:0 10px 30px rgba(0,0,0,.18)}
.msg-music{display:grid;grid-template-columns:44px minmax(150px,1fr);grid-template-rows:auto 17px 16px;column-gap:9px;min-width:min(320px,72vw);align-items:center}.msg-music .vplay{grid-row:1/4;width:44px;height:44px;border-radius:50%;border:0;background:var(--msg-accent);color:#fff}.msg-music-copy{min-width:0;display:grid}.msg-music-copy b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.msg-music-copy span{font-size:11px;opacity:.68;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.msg-music .vtrack{height:17px;position:relative}.msg-music .vdur{justify-self:start;border:0;background:transparent;color:inherit;opacity:.68;font-size:11px;padding:0}
.msg-contact{display:grid;grid-template-columns:44px minmax(0,1fr);gap:9px;align-items:center;min-width:min(280px,70vw)}.msg-contact-avatar{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--msg-accent) 18%,transparent);color:var(--msg-accent);font-weight:700}.msg-contact-copy{display:grid;min-width:0}.msg-contact-copy b{font-size:14px}.msg-contact-copy span{font-size:12px;opacity:.68;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.msg-location{overflow:hidden;border-radius:13px;min-width:min(290px,72vw)}.msg-location-map{height:130px;background:linear-gradient(135deg,color-mix(in srgb,var(--msg-accent) 22%,var(--background-secondary)),var(--background-secondary));display:grid;place-items:center;font-size:36px;color:var(--msg-accent)}.msg-location-copy{display:grid;padding:7px 2px 0}.msg-location-copy b{font-size:14px}.msg-location-copy span{font-size:11px;opacity:.68}

/* GIF / animation messages: poster-first surface with a small retry control. */
.msg-animation{min-width:120px;min-height:90px;display:grid;place-items:center;background:transparent}
.msg-animation>img,.msg-animation>video{grid-area:1/1;max-width:min(74vw,390px);max-height:min(58vh,520px);border-radius:inherit}
.msg-animation-retry{grid-area:1/1;align-self:center;justify-self:center;z-index:3;border:0!important;min-height:34px!important;padding:7px 12px;border-radius:999px!important;background:rgba(18,18,20,.62);color:#fff;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.msg-animation-retry[hidden]{display:none!important}

.msg-animation.is-loading::before{content:"";grid-area:1/1;width:42px;height:42px;border-radius:50%;background:color-mix(in srgb,var(--msg-secondary) 10%,transparent);animation:msg-animation-loading 1.2s ease-in-out infinite;pointer-events:none}
.msg-animation.is-loading>img[src],.msg-animation.is-loading>video[poster]{position:relative;z-index:1}
.msg-animation.is-error::before{display:none}
@keyframes msg-animation-loading{0%,100%{transform:scale(.84);opacity:.3}50%{transform:scale(1);opacity:.7}}
@media(prefers-reduced-motion:reduce){.msg-animation.is-loading::before{animation:none;opacity:.45}}

/* Safe rich-text entities emitted by the composer/AI assistant. */
.rich-bold{font-weight:700}.rich-italic{font-style:italic}.rich-underline{text-decoration:underline;text-underline-offset:2px}.rich-strikethrough{text-decoration:line-through}.rich-monospace,.rich-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:color-mix(in srgb,currentColor 9%,transparent);border-radius:4px;padding:0 .18em}.rich-quote{display:inline;border-left:3px solid currentColor;padding-left:6px;opacity:.9}.rich-spoiler{background:currentColor;color:transparent;border-radius:4px}.rich-spoiler:hover,.rich-spoiler:focus{color:inherit;background:color-mix(in srgb,currentColor 10%,transparent)}
