/* Same information placement for every message; indentation distinguishes owner cards. */
.message.own .message-head{grid-template-columns:minmax(0,1fr) auto;flex-direction:row}
.message.own .message-identity{grid-column:1;grid-row:1;text-align:left}
.message.own .message-name-line{flex-direction:row;justify-content:flex-start!important}
.message.own .message-identity .time,.message.own .message-text{text-align:left}
.message.own .message-reference-block{grid-column:2;grid-row:1;align-items:flex-end;text-align:right;justify-self:end}
.message.own .conversation-open{grid-column:2;grid-row:1;text-align:right;justify-self:end}
.message.own .message-foot>span:first-child{text-align:right}
.message.own .attachment-image,.message.own .message-image-link .attachment-image,.message.own .image-full,.message.own .apple-card{margin-left:0;margin-right:auto}
.message.own{margin-left:.5in;margin-right:0;min-width:0}
.message .source[tabindex]:focus-visible{outline:2px solid #697178;outline-offset:2px}
@media screen and (max-width:800px){.message.own{margin-left:.25in}}
@media print{
 .message.own{margin-left:.5in!important;margin-right:0!important}
 .message.own .message-head{grid-template-columns:minmax(0,1fr) auto;flex-direction:row}
 .message.own .message-text{text-align:left}
 .message .message-flag-badges button.message-flag,.message .reaction-emoji{display:inline-flex!important;print-color-adjust:exact;-webkit-print-color-adjust:exact}
 .message .message-flag-badges button.message-flag{background:#eee!important;color:#333!important}
}

/* Portal label badges use uppercase text consistently. */
.message-flag-badges,.source{text-transform:uppercase}

.message .attachment-action{display:inline-flex;margin:4px 8px 0 0;padding:3px 5px;border-radius:4px;background:#eee;color:#333;font-size:10px;font-weight:600;letter-spacing:1px;text-decoration:none}.message .attachment-action:focus-visible{outline:2px solid currentColor;outline-offset:2px}

/* Compact, keyboard-accessible contextual help beside nonsequential references. */
.message-number-gap-open{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:17px;height:16px;min-width:0;min-height:0;margin:0 0 0 4px;padding:1px 3px;border:0;border-radius:4px;background:#eee;color:#333;font-family:inherit;font-size:14px;font-weight:650;line-height:14px;letter-spacing:0;vertical-align:middle;cursor:pointer}
.message-number-gap-open:focus-visible{outline:2px solid #697178;outline-offset:3px}
#message-number-gap-help{width:min(360px,calc(100vw - 32px));max-height:80vh;padding:16px;background:#fff;color:#233a39}
#message-number-gap-help h2{font-size:16px;margin:0 0 8px}#message-number-gap-help p{font-size:13px;margin:0 0 12px}#message-number-gap-help button{font-size:12px;padding:4px 8px;min-height:28px}
@media print{.message-number-gap-open{display:none!important}}

/* Immediate conversation-open acknowledgement; no network or database work. */
.conversation-opening{position:fixed;inset:0;z-index:120;display:grid;place-items:center;pointer-events:none;background:rgba(245,247,244,.18)}
.conversation-opening[hidden]{display:none}
.conversation-opening-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 22px;border:1px solid #d1d9d5;border-radius:8px;background:#fff;color:#164d45;box-shadow:0 4px 18px #0002;font-size:14px;font-weight:600}
.conversation-opening-mark{position:relative;display:grid;place-items:center;width:68px;height:68px;font:bold 46px Georgia,serif;line-height:1}
.conversation-opening-orbit{position:absolute;inset:0;animation:conversation-opening-orbit 1.3s linear infinite}
.conversation-opening-dot{position:absolute;top:50%;left:50%;width:6px;height:6px;margin:-3px;border-radius:50%;background:currentColor;transform:rotate(var(--orbit-angle)) translateY(-30px)}
.conversation-opening-dot:nth-child(2){opacity:.65}.conversation-opening-dot:nth-child(3){opacity:.35}
@keyframes conversation-opening-orbit{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.conversation-opening-orbit{animation:none}}

/* Interactive cancellation inside the shared nonblocking busy indicator. */
.conversation-opening-card{pointer-events:auto}
#portal-busy-cancel{margin:2px 0 0;padding:5px 16px;font-size:14px}
#portal-busy-cancel:focus-visible{outline:2px solid #164d45;outline-offset:2px}
