.sb-composer--chat{--cp-body:var(--pink-02)} + .cp-tab--chat.on{color:var(--pink-01);border-color:var(--pink-01)}, exactly parallel to the other six. Pink is the one accent pair with no assigned meaning, so it costs no existing semantic. The mark is fa-comments (two overlapping bubbles): fa-comment-alt-dots is taken by comm.text (SMS) and fa-comment-dots is the Text-Sent activity icon, so either single-bubble form reads as SMS — the plural reads as a live two-party conversation, which is the distinction a rep needs at a glance. Chat sits directly after Text, beside its messaging siblings rather than appended after Call. The tab strip stays neutral grey — only the body region tints — and there is still ONE universal blue send; no chat-specific send button. Seven-tab observation: at the narrow breakpoints with the widest DAISI pill (Assist + countdown) showing, the staged collapse still holds — labels shed to icon-only at the existing stage and the strip does not wrap, because the container query sheds the whole label set at once rather than per-tab. Nothing was retuned.
The Chat body reuses the Log channel's .cp-logrow / .lg-cell row — no new atom. First cell is the sub-channel (pink, chevron): Website / Facebook / Instagram. It is not a free chooser — it defaults to the channel of the customer's last inbound chat message and only offers channels where an open thread exists. The second cell carries the live insight, channel-honest: for Website we host the widget, so we genuinely know presence — green dot "On the page now", or "Left the page · 2:14 PM". For Facebook/Instagram Meta's API is webhook/event based with no presence signal, so the presence cell is hidden entirely — not greyed, not faked with a stamp. The channel cell renders alone.
full, internal and disabled. Assistant can be paused for a set duration and the badge shows a live countdown. An in-progress run shows an indicator whose tooltip explains DAISI is working in the background; clicking it cancels the run. Switching from Agent to Assistant or Off cancels the autoresponder and any active agent run — the anti-double-talk rule, and the reason this control exists. When an Assistant pause expires the autoresponder wakes again. The whole surface respects the DAISI and background-agent feature flags.
.is-disabled treatment (permanent-for-now: nothing the rep does opens it; the customer must message first). Visitor gone (website) is different — a missing destination, not an opt-out: the tab stays live and the body carries a notice, distinguished by icon (fa-comment-slash) and copy, because a website chat has nowhere to deliver once the tab is closed but the rep can still reach the customer another way or leave a Note.
Engineer reference. Every instance above is a live locked atom forced into its state via the existing modifier/state classes — no new atoms, tokens byte-identical. Channels: the active .cp-tab--{ch}.on + root .sb-composer--{ch} carry the channel color (Text blue · Email purple · Note orange · Log indigo · DAISI yellow · Call green); tab strip stays gray-07, body tints to the channel -02. Mobile collapse uses .sb-composer--compact with the Insert toolbar gated on :focus-within (forced here via .st-collapsed/.st-focused so both ends of the flow are visible at once). DAISI mode: --off/--assist/--agent set the pill color; the left dot goes red & pulsing (.dp-dot.is-running) while a run is processing. Log-type color is the inline status hue (green "Call"), not a separate atom — so there is no distinct "log types" variant group. Call (channel #6, green): one labeled green .cp-callbtn — no fields, no toolbar, no send; the composer never changes after the tap — the live call runs in the floating call card (.sb-callcard, comp-phone-call-states.html). Opt-out and no phone: the Call tab stays selectable and the body shows .cp-na. Log is the manual backup for off-system calls.