.cp-tab in every .sb-composer is live on load: click moves .on within that composer's tabbar, swaps the root .sb-composer--<channel> class (the channel derives from the tab's cp-tab--<channel> modifier; data-channel overrides), and the body wash + mode-extras follow via CSS — extras rows carry .cx cx-<channel> and only the row matching the root class shows (Email → Subject; Log → type/date/time; Call → the call row, and the universal send square hides per ruling 61; Chat → the channel row; DAISI → the yellow wash). State modifiers (--compact) survive the swap. Tabs carrying .is-disabled never switch — the opt-out and no-open-chat-thread states are respected. Progressive enhancement: with JS off, the authored root class + .on tab + matching .cx row render the authored state exactly — static specimens need no script. Everything below tab level stays inert: this is state browsing, not a prototype.
Refinements. (1) Tabs share a static gray-07 background — the active channel is shown by its colored 1px border + colored icon + label only (no fill). (2) The body region below the tab strip (fields + message area + log row + toolbar) is white for external comms (Text, Email) and tinted the channel's -02 for internal ones (Note orange · Log indigo · DAISI yellow); the tab strip stays gray-07 and the active tab still carries its channel color on the border/icon/label. (3) Compact mode pill is a padded rounded rect so the dot + icon breathe. (4) Tabs never wrap, clip, or overlap: thresholds are sized against the widest pill ('Assist 5m 36s') — Stage B (≤740px) collapses the pill to icon first, Stage C (≤700px) then collapses the tabs to icon-only, so with the Customer Details panel open (conversation column ~440-560px) the composer is fully compact and labels never truncate; full labeled tabs return only when details is closed and the column is wide (~800px+). There is no divider between the body and the bottom toolbar — they read as one container. (5) Log type/date/time is one full-width row, cells vertically centered + left-justified with gray-06 vertical separators and a full-width hairline under the row (type stays green "Call"). (6) Email subject is a label-less underlined row (placeholder "Subject").