/* ══════════════════════════════════════════════════════════════════
   CHAT — all chat-page styles in ONE cascade (2026-08-29, phase 4)
   Merged in the exact original load order:
     chat-v3.css -> rwd-fixes.css -> streaming-polish.css ->
     conv-rail-toggle.css -> model-tier.css
   so the cascade is byte-equivalent by construction. Two dead rules
   dropped (documented inline). The old files are deleted in git.
   ══════════════════════════════════════════════════════════════════ */

/* ════════════════════ chat-v3.css (foundation: layout, bubbles, composer, stream UI) ════════════════════ */

/* ═══ Phase 1 — Chat foundation (layout, bubbles, composer, stream UI) ═══ */

/* A1: full-height chat page flex chain */
.content.chat-page{padding:0;overflow:hidden;display:flex;flex-direction:column;flex:1;min-height:0}
.chat-wrap{display:flex;flex:1;min-height:0;width:100%;overflow:hidden}
.chat-wrap .chat-c{max-width:none;margin:0;flex:1;min-height:0;padding:0 16px 0 0}
.chat-c{display:flex;flex-direction:column;flex:1;min-height:0;max-width:900px;margin:0 auto;padding:0 20px;overflow:hidden;width:100%}
.chat-m{flex:1;min-height:0;overflow-y:auto;padding:16px 0}

/* Base message layout (A13 prep — bubble polish below) */
.chat-msg{display:flex;gap:10px;margin-bottom:20px;max-width:85%}
.chat-msg.user{margin-left:auto;flex-direction:row-reverse}
.chat-msg .av{width:28px;height:28px;border-radius:8px;background:var(--sf2);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:12px}
.chat-msg .bbl{padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.6;word-break:break-word}
.chat-msg.user .bbl{color:var(--btn-p-tx,#fff);border-bottom-right-radius:4px}
.chat-msg.agent .bbl{color:var(--tx);border-bottom-left-radius:4px}
.chat-bbl-err{border:2px solid var(--red)!important;background:rgba(248,113,113,.08)!important}

/* Header + conv panel (shared with inline v4 rules) */
.chat-hdr{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 16px;border-bottom:1px solid var(--bd);margin-bottom:12px;flex-wrap:wrap;gap:8px;flex-shrink:0}
.chat-hdr .ch-left{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.chat-hdr .ch-title{font-weight:600;font-size:15px}
.chat-hdr .ch-actions{display:flex;align-items:center;gap:6px;position:relative;flex-shrink:0;flex-wrap:wrap}

/* Phase 3 — ops/degradation banner */
.chat-ops-banner{display:none;margin:0 16px 10px;padding:8px 12px;border-radius:8px;font-size:11px;border:1px solid var(--bd);background:var(--sf2);flex-shrink:0}
.chat-ops-banner.ops-info{border-color:rgba(59,130,246,.35);background:rgba(59,130,246,.06)}
.chat-ops-banner.ops-warn{border-color:rgba(251,191,36,.45);background:rgba(251,191,36,.08)}
.chat-ops-banner.ops-critical{border-color:rgba(248,113,113,.5);background:rgba(248,113,113,.1)}
.chat-ops-banner .ops-inner{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.chat-ops-banner .ops-chip{padding:2px 8px;border-radius:999px;background:var(--sf);border:1px solid var(--bd);color:var(--tx2);white-space:nowrap}
.chat-ops-banner .ops-deg{color:var(--red);border-color:rgba(248,113,113,.4)}
.chat-ops-banner .ops-token{color:#fbbf24;border-color:rgba(251,191,36,.4)}
.chat-ops-banner .ops-refresh{margin-left:auto;background:none;border:none;color:var(--tx3);cursor:pointer;font-size:14px;padding:2px 6px;border-radius:4px}
.chat-ops-banner .ops-refresh:hover{color:var(--tx);background:var(--sf)}

/* C1/C13: composer shell + focus ring */
.chat-in{padding:12px 0;border-top:1px solid var(--bd);display:flex;gap:8px;align-items:flex-end;position:relative;flex-shrink:0;flex-wrap:wrap}
.chat-in textarea{flex:1;min-width:160px;min-height:40px;max-height:200px;resize:none;background:var(--bg);border:1px solid var(--bd);padding:10px 12px;color:var(--tx);font-size:13px;font-family:inherit;line-height:1.5}
.chat-in .ch-btn:not(.ch-btn-lbl),.chat-in .btn.btn-p:not(.ch-btn-lbl){width:40px;height:40px;justify-content:center;flex-shrink:0;padding:0}
.chat-in .ch-btn.ch-btn-lbl{width:auto;height:40px;min-width:40px;padding:5px 10px;display:inline-flex;align-items:center;gap:5px;flex-shrink:0;font-size:11px;white-space:nowrap}
.chat-in .ch-btn.ch-btn-lbl span{line-height:1}
.ch-btn-lbl{font-size:11px;gap:5px;padding:5px 8px;display:inline-flex;align-items:center}
.ch-btn-lbl span{line-height:1}
.char-counter{display:block;font-size:10px;color:var(--tx3);align-self:flex-end;padding-bottom:6px;min-width:28px;text-align:right;font-family:'DM Mono',monospace}
.draft-indicator{position:absolute;top:-14px;right:4px;font-size:10px;color:var(--tx3);opacity:0;transition:opacity .2s;pointer-events:none}
.draft-indicator.visible{opacity:1}

/* Custom scrollbars (chat area) */
.chat-m::-webkit-scrollbar,.rail-list::-webkit-scrollbar{width:6px}
.chat-m::-webkit-scrollbar-track,.rail-list::-webkit-scrollbar-track{background:transparent}
.chat-m::-webkit-scrollbar-thumb,.rail-list::-webkit-scrollbar-thumb{background:var(--bd2);border-radius:3px}

/* Slash commands dropdown */
.slash-dd{position:absolute;bottom:100%;left:0;margin-bottom:4px;background:var(--sf);border:1px solid var(--bd);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.3);z-index:20;min-width:240px;max-height:280px;overflow-y:auto}
.slash-dd-item{padding:8px 12px;cursor:pointer;font-size:12px;display:flex;align-items:center;gap:8px;transition:background .1s}
.slash-dd-item:hover,.slash-dd-item.sel{background:var(--sf2)}
.slash-dd-item .scmd{font-weight:600;color:var(--blue);font-family:'DM Mono',monospace;min-width:80px}
.slash-dd-item .sdesc{color:var(--tx3);flex:1}
.slash-dd-foot{padding:8px 12px;border-top:1px solid var(--bd);font-size:10px;color:var(--tx3);background:var(--sf2)}
.slash-dd-foot a{color:var(--blue);text-decoration:none}
.slash-dd-foot a:hover{text-decoration:underline}
.slash-help-panel{display:flex;flex-direction:column;gap:14px;max-height:60vh;overflow-y:auto}
.slash-help-group{display:flex;flex-direction:column;gap:4px}
.slash-help-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--tx3);margin-bottom:2px}
.slash-help-row{display:flex;gap:10px;font-size:13px;align-items:baseline;padding:2px 0}
.slash-help-row code{font-family:'DM Mono',monospace;color:var(--blue);font-weight:600;min-width:96px;flex-shrink:0;font-size:12px}
.slash-help-row span{color:var(--tx2);flex:1}
.slash-help-kbd{font-size:11px;color:var(--tx3);padding:10px 12px;background:var(--sf2);border:1px solid var(--bd);border-radius:8px;line-height:1.5}
.slash-help-kbd strong{color:var(--tx2)}

/* Image upload previews (C9/C10) */
.img-prevs-wrap{margin-bottom:8px;padding:8px 10px;background:var(--sf2);border:1px solid var(--bd);border-radius:10px}
.img-prevs-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:11px;color:var(--tx3)}
.img-prevs-title{font-weight:600;color:var(--tx2);text-transform:uppercase;letter-spacing:.04em;font-size:10px}
.img-prevs-count{font-family:'DM Mono',monospace;font-size:10px}
.img-prevs{display:flex;gap:8px;flex-wrap:wrap}
.img-prev{position:relative;width:72px;flex-shrink:0;border-radius:8px;overflow:hidden;border:1px solid var(--bd);background:var(--sf);transition:border-color .15s,transform .15s}
.img-prev:hover{border-color:var(--bd2);transform:translateY(-1px)}
.img-prev img{width:100%;height:72px;object-fit:cover;display:block;cursor:zoom-in}
.img-prev-name{display:block;font-size:9px;color:var(--tx3);padding:3px 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:var(--sf)}
.img-prev .img-rm{position:absolute;top:4px;right:4px;background:rgba(0,0,0,.65);color:#fff;border:none;border-radius:50%;width:18px;height:18px;font-size:11px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s}
.img-prev:hover .img-rm{opacity:1}
.drop-overlay{position:absolute;inset:0;background:rgba(59,130,246,.12);border:2px dashed var(--blue);border-radius:12px;display:flex;align-items:center;justify-content:center;z-index:20;pointer-events:none;font-size:13px;font-weight:500;color:var(--blue)}

/* Chat input hints (C5) */.chat-in-wrap{display:flex;flex-direction:column;gap:2px;flex-shrink:0;position:sticky;bottom:0;z-index:25;background:var(--bg);padding-bottom:env(safe-area-inset-bottom,0)}.chat-in-hints{display:flex;flex-wrap:wrap;gap:6px 12px;padding:0 2px 8px;font-size:10px;color:var(--tx3)}.chat-in-hints span{white-space:nowrap}.chat-in-hints .chat-hint-task{color:var(--blue);font-weight:500}.chat-in-hints .chat-hint-warn{color:var(--org);font-weight:600}
.chat-mode-status{font-size:11px;color:var(--tx2);padding:0 2px 6px;line-height:1.4;min-height:16px}
.voice-lang-chip{display:none;align-self:flex-start;align-items:center;gap:4px;margin:0 2px 4px;padding:3px 10px;border-radius:999px;font-size:10px;font-weight:500;color:var(--blue);background:rgba(59,130,246,.1);border:1px solid rgba(59,130,246,.25)}
.voice-lang-chip::before{content:'🎤';font-size:11px}
.composer-voice-wrap{display:flex;align-items:center;gap:4px;flex-shrink:0;position:relative}
.composer-voice-toggle{display:none;flex-shrink:0}
/* Tool call section */.toolcall-sec{background:var(--sf2);border:1px solid var(--bd);border-radius:8px;margin-top:6px;overflow:hidden}.toolcall-hdr{padding:6px 10px;font-size:11px;cursor:pointer;display:flex;align-items:center;gap:6px;color:var(--tx3);border-bottom:1px solid var(--bd)}.toolcall-hdr:hover{background:var(--sf)}.toolcall-body{padding:8px 10px;font-size:11px;font-family:'DM Mono',monospace;color:var(--tx2);white-space:pre-wrap;max-height:200px;overflow-y:auto}
/* Cron badge in chat */.chat-cron-badge{font-size:11px;color:var(--tx3);display:flex;align-items:center;gap:4px}
/* Message action buttons (renderCM) */.msg-edit-btn,.msg-copy-btn,.msg-pin-btn,.msg-fb-btn,.regen-btn{font-size:11px;color:var(--tx3);background:none;border:none;cursor:pointer;padding:2px 6px;border-radius:4px;transition:all .15s;display:inline-flex;align-items:center;gap:3px}.msg-edit-btn:hover,.msg-copy-btn:hover,.msg-pin-btn:hover{color:var(--tx);background:rgba(255,255,255,.06)}.msg-fb-btn.active{opacity:1}.msg-copy-btn.copied{color:var(--grn)}.msg-fb-btn{font-size:14px;padding:2px 4px}.msg-feedback{display:flex;gap:2px;align-items:center;margin-top:4px}.regen-btn{font-size:11px;color:var(--tx3);background:none;border:none;cursor:pointer;padding:2px 6px;border-radius:4px;transition:color .15s}.regen-btn:hover{color:var(--tx)}.edit-input-area{display:none;margin-top:8px}.edit-input-area.active{display:block}.edit-input-area textarea{width:100%;padding:8px;background:var(--bg);border:1px solid var(--bd);border-radius:8px;color:var(--tx);font-size:13px;min-height:60px;font-family:inherit;resize:vertical}.edit-actions{display:flex;gap:6px;margin-top:6px}.edit-save{background:var(--blue);color:#fff;border:none;padding:4px 10px;border-radius:6px;font-size:12px;cursor:pointer}.pin-indicator{font-size:11px;color:var(--tx3)}.edited-badge{font-size:10px;color:var(--tx3);margin-left:4px}.token-display,.cost-display{font-size:11px;color:var(--tx3);margin-top:4px}.quick-replies{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.quick-reply-chip{font-size:12px;color:var(--blue);background:rgba(59,130,246,.1);border:1px solid rgba(59,130,246,.2);border-radius:20px;padding:4px 12px;cursor:pointer;transition:all .15s}.quick-reply-chip:hover{background:rgba(59,130,246,.2);border-color:var(--blue)}
.chat-msg:hover .regen-btn{opacity:1}
/* ??? Stream v2 chat styles (host main.css 2026-06-10, merged 2026-06-11) ??? */

/* ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
   SUPERVISOR CHAT v2 ??? Enhanced Stream & Message Styles
   ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? */

/* ?????? Stream Container ?????? */
.chat-msg#chatStreaming{max-width:90%;animation:fadeInMsg .2s ease-out}
@keyframes fadeInMsg{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.stream-col{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.stream-header{display:flex;align-items:center;gap:8px;margin-bottom:2px}
.stream-agent-name{font-size:11px;font-weight:600;color:var(--tx2)}
.stream-elapsed{font-size:10px;color:var(--tx3);font-family:'DM Mono',monospace;margin-left:auto}
.stream-header .stream-agent-name{flex:1;min-width:0}
.stream-header .stream-perf-badge,.stream-header .stream-elapsed{flex-shrink:0;margin-left:0}
.stream-perf-badge{display:none;align-items:center;font-size:10px;font-family:'DM Mono',monospace;padding:1px 7px;border-radius:999px;border:1px solid var(--bd);color:var(--tx3);background:var(--sf)}
.stream-perf-badge.good{color:var(--grn);border-color:rgba(74,222,128,.35);background:rgba(74,222,128,.1)}
.stream-perf-badge.ok{color:var(--blue);border-color:rgba(59,130,246,.3);background:rgba(59,130,246,.08)}
.stream-perf-badge.warn{color:var(--org);border-color:rgba(251,146,60,.35);background:rgba(251,146,60,.1)}
.stream-header.perf-flash .stream-perf-badge{animation:perfPulse .65s ease}
@keyframes perfPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06);box-shadow:0 0 0 3px rgba(74,222,128,.18)}}
.stream-status .ss-wait{font-family:'DM Mono',monospace;font-size:10px;color:var(--tx3);opacity:.85}

/* Chat perf panel (#9 dev) */
.chat-perf-panel{margin:6px 0 10px;padding:8px 10px;border:1px dashed var(--bd);border-radius:10px;background:var(--sf2);font-size:11px;color:var(--tx2)}
.chat-perf-hdr{display:flex;align-items:center;gap:8px;font-weight:600;font-size:11px;margin-bottom:4px}
.chat-perf-target{margin-left:auto;font-size:10px;color:var(--tx3);font-weight:500;font-family:'DM Mono',monospace}
.chat-perf-close{background:none;border:none;color:var(--tx3);cursor:pointer;font-size:16px;line-height:1;padding:0 2px}
.chat-perf-close:hover{color:var(--tx)}
.chat-perf-last{font-family:'DM Mono',monospace;font-size:10px;color:var(--tx3);margin-bottom:4px}
.chat-perf-last.perf-good{color:var(--grn)}
.chat-perf-last.perf-warn{color:var(--org)}
.chat-perf-stats{font-size:10px;color:var(--tx3);font-family:'DM Mono',monospace}

/* Offline / degraded chat banner (#11) */
.chat-degraded-banner{display:none;align-items:center;gap:10px;padding:10px 12px;margin:8px 0 10px;border-radius:10px;font-size:12px;line-height:1.45}
.chat-degraded-banner.is-offline{background:rgba(248,113,113,.1);border:1px solid rgba(248,113,113,.35);color:var(--tx)}
.chat-degraded-banner.is-degraded{background:rgba(250,204,21,.08);border:1px solid rgba(250,204,21,.35);color:var(--tx)}
.chat-degraded-banner.is-queue{background:rgba(59,130,246,.08);border:1px solid rgba(59,130,246,.25);color:var(--tx2)}
.chat-degraded-banner.is-restarting{background:rgba(251,146,60,.08);border:1px solid rgba(251,146,60,.35);color:var(--tx)}
.chat-degraded-banner .cdb-icon{flex-shrink:0;font-size:16px}
.chat-degraded-banner .cdb-text{flex:1;min-width:0}
.chat-degraded-banner .cdb-btn{flex-shrink:0;padding:4px 10px;border-radius:6px;border:1px solid var(--bd);background:var(--sf);color:var(--tx2);font-size:11px;cursor:pointer}
.chat-degraded-banner .cdb-btn:hover{border-color:var(--blue);color:var(--blue)}
.chat-degraded-banner .cdb-btn-ghost{background:transparent;margin-left:4px}
body[data-backend-health="down"] .chat-in textarea{opacity:.95}

/* ?????? Enhanced Status Bar ?????? */
.stream-status{display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--sf2);border:1px solid var(--bd);border-radius:10px;font-size:11px;color:var(--tx3);transition:all .2s}
.stream-status.active{animation:statusGlow 2.5s ease-in-out infinite}
.stream-status .ss-icon{font-size:14px}
.stream-status .ss-text{flex:1;font-size:12px;color:var(--tx2)}
.stream-status .ss-phase{font-size:9px;padding:2px 8px;border-radius:10px;text-transform:uppercase;letter-spacing:.06em;font-weight:600}
.stream-status .ss-phase.phase-thinking{background:rgba(168,85,247,.12);color:#a855f7}
.stream-status .ss-phase.phase-planning{background:rgba(59,130,246,.12);color:var(--blue)}
.stream-status .ss-phase.phase-reply{background:rgba(74,222,128,.12);color:var(--grn)}
.stream-status .ss-phase.phase-tools{background:rgba(251,146,60,.12);color:var(--org)}
.stream-status .ss-phase.phase-working{background:rgba(100,116,139,.12);color:#94a3b8}
.stream-status .ss-phase.phase-responding{background:rgba(74,222,128,.12);color:var(--grn)}
.stream-status .ss-phase.phase-vision{background:rgba(236,72,153,.12);color:#ec4899}
@keyframes statusGlow{0%,100%{box-shadow:0 0 0 0 transparent}50%{box-shadow:0 0 12px 2px rgba(59,130,246,.15)}}

/* ?????? Thinking/Reasoning Block ?????? */
.thinking-block{border:1px solid var(--bd);border-radius:10px;overflow:hidden;background:var(--sf);margin-bottom:4px;transition:max-height .3s ease-out}
.thinking-block.collapsed .thinking-body{max-height:0}
.thinking-toggle{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;font-size:12px;color:var(--tx3);border-bottom:1px solid var(--bd)}
.thinking-toggle:hover{background:var(--sf2)}
.thinking-label{font-weight:500}
.thinking-chevron{transition:transform .2s;margin-left:auto;font-size:10px}
.thinking-block:not(.collapsed) .thinking-chevron{transform:rotate(90deg)}
.thinking-body{max-height:200px;overflow-y:auto;transition:max-height .3s ease-out}
.thinking-content{padding:8px 12px;font-size:11px;color:var(--tx3);line-height:1.6;font-family:'DM Mono',monospace;white-space:pre-wrap}
.thinking-block.collapsed{max-height:36px}

/* ?????? Enhanced Tool Cards ?????? */
.stc{border:1px solid var(--bd);border-radius:10px;margin:4px 0;overflow:hidden;background:var(--sf2);font-size:11px;animation:fadeInMsg .2s ease-out}
.stc-hdr{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;border-bottom:1px solid transparent;transition:background .15s}
.stc-hdr:hover{background:var(--sf)}
.stc-icon{font-size:13px}
.stc-name{font-weight:600;color:var(--tx2);font-family:'DM Mono',monospace;font-size:11px}
.stc-status{margin-left:auto;display:flex;align-items:center;gap:4px;font-size:10px;font-weight:500}
.stc-status.running{color:var(--org)}
.stc-status.ok{color:var(--grn)}
.stc-status.fail{color:var(--red)}
.stc-dur{color:var(--tx3);font-size:9px;font-family:'DM Mono',monospace}
.stc-spinner{width:12px;height:12px;border:2px solid var(--bd);border-top-color:var(--org);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}
.stc-body{padding:8px 12px;max-height:0;overflow:hidden;transition:max-height .25s ease-out}
.stc-body.open{max-height:400px;overflow-y:auto}
.stc-body pre{margin:0;font-family:'DM Mono',monospace;font-size:10px;color:var(--tx2);white-space:pre-wrap;word-break:break-all;line-height:1.5;padding:0}
.stc-body pre.stc-waiting{color:var(--tx3);font-style:italic}
.stc-body pre.stc-error{color:var(--red)}
.stc-label{font-size:9px;color:var(--tx3);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px;font-weight:600}
.stc-args{margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid var(--bd)}
.legacy-tool-line{color:var(--tx3);font-size:11px;padding:2px 0;opacity:.7}

/* ?????? Enhanced Content Area ?????? */
.stream-content{font-size:13px;line-height:1.65;color:var(--tx)}
.stream-content .chat-cursor{display:inline-block;width:2px;height:15px;background:var(--blue);margin-left:2px;animation:blink 1s infinite;vertical-align:text-bottom}
.stream-error{display:flex;flex-wrap:wrap;align-items:center;gap:8px;justify-content:space-between;color:var(--red);font-size:13px;padding:8px 12px;background:rgba(248,113,113,.08);border-radius:8px;border:1px solid rgba(248,113,113,.2)}
.stream-error-text{flex:1;min-width:180px}
.stream-retry-btn{flex-shrink:0;background:var(--sf2);border:1px solid var(--bd);border-radius:6px;padding:4px 10px;color:var(--tx);font-size:12px;cursor:pointer;transition:all .15s;font-family:inherit}
.stream-retry-btn:hover{color:var(--blue);border-color:var(--blue);background:rgba(59,130,246,.08)}

/* Chat stream FSM ? body[data-chat-stream] set by chat-stream-state.js / ChatClient */
body[data-chat-stream="connecting"] #chatSendBtn,
body[data-chat-stream="streaming"] #chatSendBtn,
body[data-chat-stream="stopping"] #chatSendBtn,
body[data-chat-stream="finalizing"] #chatSendBtn{opacity:.5;cursor:wait}
body[data-chat-stream="error"] #chatSendBtn{opacity:1;cursor:pointer}

/* Token / tool transparency (#6) */
.chat-conv-title{font-size:12px;color:var(--tx2);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
.chat-msg-agent{margin-bottom:4px}
.chat-agent-badge{display:inline-block;font-size:10px;font-weight:600;padding:2px 8px;border-radius:999px;background:rgba(59,130,246,.15);border:1px solid rgba(147,197,253,.35);color:#bfdbfe;text-transform:capitalize}
.chat-agent-general,.chat-agent-auto{border-color:var(--tx3);color:var(--tx2)}
.chat-agent-finance{border-color:var(--grn);color:var(--grn)}
.chat-agent-devops{border-color:var(--blue);color:var(--blue)}
.chat-agent-security,.chat-agent-security-auditor,.chat-agent-pen-tester{border-color:var(--org);color:var(--org)}
.chat-agent-coder,.chat-agent-qa-testing{border-color:var(--pur);color:var(--pur)}
.chat-agent-research,.chat-agent-doc-intel{border-color:var(--yel);color:var(--yel)}
.chat-agent-seo-content{border-color:var(--cyan);color:var(--cyan)}
.chat-agent-ui-designer,.chat-agent-app-enhancer{border-color:var(--pnk);color:var(--pnk)}
.chat-agent-comms{border-color:#38bdf8;color:#38bdf8}
.chat-agent-odia-writer{border-color:#f472b6;color:#f472b6}
.chat-ops-banner .ops-action{margin-left:4px;padding:2px 8px;font-size:10px}
.reply-meta-tools{font-size:10px;color:var(--tx2)}
.stream-header .chat-agent-badge{font-size:10px}
.reply-meta-bar,.stream-token-meta.reply-meta-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:10px;color:var(--tx3);font-family:DM Mono,monospace;margin-top:6px;padding-top:6px;border-top:1px solid var(--bd)}
.reply-meta-cost{margin-left:auto;color:var(--tx2);font-size:10px}
.tools-used-panel{margin:8px 0;border:1px solid var(--bd);border-radius:10px;background:var(--sf2);overflow:hidden}
.tools-used-panel summary{display:flex;align-items:center;gap:8px;padding:8px 10px;cursor:pointer;list-style:none;font-size:12px;color:var(--tx2)}
.tools-used-panel summary::-webkit-details-marker{display:none}
.tools-used-panel summary:hover{background:var(--sf)}
.tup-label{font-weight:600;color:var(--tx)}
.tup-count{font-size:10px;background:var(--sf);border:1px solid var(--bd);border-radius:999px;padding:1px 6px;color:var(--tx3)}
.tup-summary{flex:1;min-width:0;font-family:DM Mono,monospace;font-size:10px;color:var(--tx3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tup-list{list-style:none;margin:0;padding:6px 10px 10px;border-top:1px solid var(--bd)}
.tup-item{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;padding:4px 0;font-size:11px;color:var(--tx2)}
.tup-item.ok .tup-icon{color:var(--grn,#4ade80)}
.tup-item.fail .tup-icon{color:var(--red,#f87171)}
.tup-name{font-family:DM Mono,monospace;font-weight:500}
.tup-dur{font-size:10px;color:var(--tx3)}
.tup-preview{width:100%;font-size:10px;color:var(--tx3);font-family:DM Mono,monospace;white-space:pre-wrap;word-break:break-word;margin-top:2px;padding-left:18px}
.toolcall-body{display:none;max-height:240px;overflow-y:auto}
.toolcall-body.open{display:block}

/* ?????? Enhanced Code Blocks ?????? */
.code-block-wrap{margin:8px 0;border:1px solid var(--bd);border-radius:8px;overflow:hidden;background:#0d1117}
.code-block-hdr{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:rgba(255,255,255,.05);border-bottom:1px solid var(--bd);font-size:11px;color:var(--tx3)}
.code-block-hdr span{font-family:'DM Mono',monospace;font-size:10px;text-transform:uppercase}
.code-copy-btn{background:none;border:1px solid var(--bd);border-radius:4px;padding:2px 8px;color:var(--tx3);cursor:pointer;font-size:10px;font-family:'DM Mono',monospace;transition:all .15s}
.code-copy-btn:hover{color:var(--blue);border-color:var(--blue)}
.code-block-wrap pre{margin:0;padding:12px;font-size:11px;line-height:1.6;overflow-x:auto}
.code-block-wrap code{font-family:'DM Mono',monospace}
.inline-code{background:rgba(255,255,255,.06);padding:1px 6px;border-radius:4px;font-family:'DM Mono',monospace;font-size:0.9em;color:#e2e8f0;border:1px solid rgba(255,255,255,.08)}

/* ?????? Stop Button ?????? */
.stream-stop-btn{background:rgba(248,113,113,.1);border:1px solid rgba(248,113,113,.3);border-radius:8px;padding:5px 14px;color:var(--red);font-size:12px;font-weight:500;cursor:pointer;transition:all .15s;animation:stopPulse 2s ease-in-out infinite}
.stream-stop-btn:hover{background:rgba(248,113,113,.2);border-color:var(--red)}
@keyframes stopPulse{0%,100%{opacity:1}50%{opacity:.7}}

/* ?????? Scroll to Bottom Button ?????? */
.scroll-bottom-btn{position:sticky;bottom:12px;background:var(--sf2);border:1px solid var(--bd);border-radius:50%;width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--tx2);font-size:16px;z-index:50;transition:.15s;margin:0 auto;opacity:0;pointer-events:none}
.scroll-bottom-btn.visible{opacity:1;pointer-events:auto}
.scroll-bottom-btn:hover{background:var(--blue);color:#fff;border-color:var(--blue)}

/* ?????? Prompt Suggestions ?????? */
.prompt-suggestions{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;padding:20px}
.prompt-chip{padding:8px 16px;background:var(--sf2);border:1px solid var(--bd);border-radius:20px;font-size:12px;color:var(--tx2);cursor:pointer;transition:all .15s}
.prompt-chip:hover{border-color:var(--blue);color:var(--blue);background:rgba(59,130,246,.08)}

/* ?????? Responsive ?????? */
@media(max-width:640px){
  .chat-msg#chatStreaming{max-width:95%}
  .stream-status{padding:6px 10px;font-size:10px}
  .stc-hdr{padding:6px 10px}
  .thinking-toggle{padding:6px 10px}
  .code-block-wrap pre{font-size:10px;padding:8px}
}


/* --- Live Logs page (pageRenderers.logs in addons.js) ? added 2026-06-11 --- */
.log-stream{border:1px solid var(--bd);border-radius:10px;background:var(--sf);overflow:hidden;display:flex;flex-direction:column;height:calc(100vh - 220px);min-height:300px}
.log-stream-header{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--bd);background:var(--sf2)}
.log-stream-body{flex:1;overflow-y:auto;padding:6px 10px;font-family:'DM Mono',monospace;font-size:11px;line-height:1.7}
.log-stream-footer{display:flex;align-items:center;gap:8px;padding:6px 12px;border-top:1px solid var(--bd);font-size:10px;color:var(--tx3)}
.log-entry{display:flex;gap:8px;align-items:baseline;padding:1px 0;border-bottom:1px solid rgba(255,255,255,.03)}
.log-entry .log-ts{color:var(--tx3);flex-shrink:0}
.log-entry .log-lvl{flex-shrink:0;font-weight:600;text-transform:uppercase;font-size:9px;padding:1px 6px;border-radius:8px}
.log-entry .log-lvl.info{background:rgba(59,130,246,.12);color:var(--blue)}
.log-entry .log-lvl.warn{background:rgba(250,204,21,.12);color:var(--yel)}
.log-entry .log-lvl.error{background:rgba(248,113,113,.12);color:var(--red)}
.log-entry .log-lvl.debug{background:rgba(107,114,128,.12);color:var(--tx3)}
.log-entry .log-msg{color:var(--tx2);word-break:break-word;min-width:0}
/* ???????????????????????????????????????????????????????????????
   CHAT V3 ENHANCEMENTS ? 2026-06-11 (OpenClaw-inspired polish)
   date dividers, message grouping, conv search, queue bar,
   welcome state, composer focus ring, new-replies pill
   ??????????????????????????????????????????????????????????????? */

/* Message bubbles: subtle border + depth, tighter grouping */
.chat-msg .bbl{border:1px solid var(--bd);box-shadow:0 1px 2px rgba(0,0,0,.12)}
.chat-msg.user .bbl{border-color:transparent;background:linear-gradient(135deg,var(--blue) 0%,#2563eb 100%)}
.chat-msg.agent .bbl{background:var(--sf2)}
.chat-msg{animation:fadeInMsg .18s ease-out}
.chat-msg.grouped{margin-top:-12px}
.chat-msg.grouped .av{visibility:hidden}

/* Date dividers */
.chat-divider{display:flex;align-items:center;gap:12px;margin:20px 0 16px;font-size:11px;color:var(--tx3);user-select:none}
.chat-divider::before,.chat-divider::after{content:'';flex:1;height:1px;background:var(--bd)}
.chat-divider span{padding:2px 10px;border:1px solid var(--bd);border-radius:12px;background:var(--sf);font-weight:500;letter-spacing:.04em}

/* Welcome / empty state */
.chat-welcome{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;gap:10px;text-align:center;padding:20px}
.chat-welcome .cw-icon{font-size:42px;filter:saturate(.9)}
.chat-welcome .cw-title{font-size:19px;font-weight:700;color:var(--tx)}
.chat-welcome .cw-sub{font-size:13px;color:var(--tx3);max-width:440px;line-height:1.6}
.chat-welcome .cw-sub code{background:var(--sf2);border:1px solid var(--bd);border-radius:4px;padding:1px 5px;font-family:'DM Mono',monospace;font-size:11px}
.chat-welcome .cw-sub kbd{background:var(--sf2);border:1px solid var(--bd2);border-bottom-width:2px;border-radius:4px;padding:0 5px;font-size:11px;font-family:inherit}

/* Composer: focus ring + cleaner footprint */
.chat-in textarea{transition:border-color .15s,box-shadow .15s;border-radius:12px}
.chat-in textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(59,130,246,.14);outline:none}

/* Conversation panel search */
.conv-search{display:none;width:100%;box-sizing:border-box;margin:6px 0 4px;padding:7px 11px;font-size:12px;background:var(--sf2);border:1px solid var(--bd);border-radius:8px;color:var(--tx)}
.conv-search:focus{border-color:var(--blue);outline:none}
/* dropped: .chat-conv-hdr.open~.conv-search (dead selector — markup uses .chat-conv-search) */

/* Queue-while-streaming bar */
.queue-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:6px 0 2px;font-size:11px}
.queue-bar .queue-label{color:var(--tx3);font-weight:600}
.queue-item{display:inline-flex;align-items:center;gap:5px;background:var(--sf2);border:1px solid var(--bd);border-radius:12px;padding:3px 9px;color:var(--tx2);max-width:280px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.queue-item button{background:none;border:none;color:var(--tx3);cursor:pointer;font-size:13px;line-height:1;padding:0}
.queue-item button:hover{color:var(--red)}

/* Scroll-to-bottom pill while streaming */
.scroll-bottom-btn.has-new{width:auto;border-radius:18px;padding:0 14px;font-size:12px;font-weight:600;color:var(--blue);border-color:var(--blue);background:var(--sf)}
.scroll-bottom-btn.has-new:hover{background:var(--blue);color:#fff}

/* Tool cards + thinking block micro-polish */
.stc .stc-hdr{cursor:pointer}
.stc:hover{border-color:var(--bd2)}
.thinking-block .thinking-toggle{cursor:pointer;user-select:none}

/* Markdown tables + task lists (Chat v3 wave A) */
.md-table{border-collapse:collapse;margin:8px 0;font-size:12px;max-width:100%;display:block;overflow-x:auto}
.md-table th,.md-table td{border:1px solid var(--bd);padding:5px 10px;text-align:left;color:var(--tx2)}
.md-table th{background:var(--sf2);color:var(--tx);font-weight:600;white-space:nowrap}
.md-table tr:nth-child(even) td{background:rgba(255,255,255,.02)}
li.md-task{list-style:none;margin-left:-16px}
li.md-task input[type=checkbox]{accent-color:var(--blue);margin-right:4px;vertical-align:-2px}

/* Chat v3 wave B: session rail + lazy-load + steer */
.chat-wrap{display:flex;flex:1;min-height:0;width:100%;overflow:hidden}
.chat-rail{width:252px;min-width:252px;border-right:1px solid var(--bd);display:flex;flex-direction:column;padding:14px 10px 10px;gap:8px;overflow:hidden;background:var(--sf)}
.rail-hdr{display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:700;color:var(--tx2);padding:0 4px;text-transform:uppercase;letter-spacing:.05em}
.rail-search{display:block;margin:0}
.rail-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:2px;min-height:0}
.rail-list::-webkit-scrollbar{width:6px}
.rail-list::-webkit-scrollbar-thumb{background:var(--bd2);border-radius:3px}
.rail-item{display:flex;align-items:center;gap:6px;padding:8px 9px;border-radius:8px;cursor:pointer;border:1px solid transparent;transition:background .12s}
.rail-item:hover{background:var(--sf2)}
.rail-item.active{background:var(--sf2);border-color:var(--bd2)}
.rail-item .cc-title{font-size:12px;font-weight:500;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rail-item .cc-meta{font-size:10px;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rail-item .cc-pin,.rail-item .cc-rename,.rail-item .cc-del{display:none;background:none;border:none;cursor:pointer;color:var(--tx3);font-size:11px;padding:2px;flex-shrink:0}
.rail-item:hover .cc-pin,.rail-item:hover .cc-rename,.rail-item:hover .cc-del{display:inline-flex}
.rail-item .cc-pin.on{display:inline-flex;opacity:1}
.rail-item .cc-pin{opacity:.45}
.rail-item .cc-del:hover{color:var(--red)}
.rail-more{text-align:center;padding-top:4px}
.chat-conv-item .cc-pin{background:none;border:none;cursor:pointer;color:var(--tx3);font-size:11px;padding:2px;opacity:.45}
.chat-conv-item .cc-pin.on{opacity:1}
.chat-conv-item{display:flex;align-items:flex-start;gap:6px;padding:10px 12px;border-bottom:1px solid var(--bd);cursor:pointer;transition:background .12s}
.chat-conv-item:hover{background:var(--sf2)}
.chat-conv-item.active{background:var(--sf2)}
.chat-conv-item .chat-conv-body{flex:1;min-width:0}
.chat-conv-item .cc-pin,.chat-conv-item .cc-del{flex-shrink:0;background:none;border:none;cursor:pointer;color:var(--tx3);font-size:11px;padding:2px 4px;opacity:0;transition:opacity .15s}
.chat-conv-item:hover .cc-pin,.chat-conv-item:hover .cc-del{opacity:1}
.chat-conv-item .cc-pin.on{opacity:1}
.chat-conv-item .cc-del:hover{color:var(--red)}
.chat-msg .av .av-img{width:28px;height:28px;border-radius:8px;object-fit:cover;display:block}
.chat-restore-skel{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:240px;gap:8px;color:var(--tx3);font-size:13px}
.chat-rail-toggle{display:inline-flex} /* was display:none; chat-enhancements.js shows it always */
@media(max-width:1100px){
  .chat-rail-toggle{display:inline-flex}
  .chat-rail{display:none;position:absolute;left:0;top:0;bottom:0;z-index:40;box-shadow:8px 0 24px rgba(0,0,0,.35)}
  .chat-rail.rail-open{display:flex}
  .chat-wrap{position:relative}
}
@media(min-width:1101px){.chat-conv-panel{display:none}}
.load-earlier{text-align:center;font-size:12px;color:var(--blue);cursor:pointer;padding:9px;border:1px dashed var(--bd);border-radius:10px;margin:4px 0 14px;user-select:none}
.load-earlier:hover{background:var(--sf2);border-color:var(--blue)}
.queue-item .queue-steer{color:var(--yel)}
.queue-item .queue-steer:hover{color:var(--org)}

/* Chat v3 wave C: voice input */
.ch-btn.rec{color:var(--red);border-color:var(--red);animation:pulse 1.1s infinite}

/* ?? UI fix (2026-06-18): tighten gauge cards so they don't stretch to the taller System Info card ?? */
.card:has(.gwrap){align-self:start}

/* Todo plan panel (SSE) */
.todo-panel{margin:8px 0;padding:10px 12px;border:1px solid var(--border,#333);border-radius:8px;background:var(--card,#1a1a2e)}
.todo-panel-hdr{font-size:12px;font-weight:600;margin-bottom:6px;color:var(--tx2,#aaa)}
.todo-list{list-style:none;margin:0;padding:0}
.todo-item{display:flex;align-items:center;gap:8px;font-size:12px;padding:3px 0;color:var(--tx,#eee)}
.todo-item.done .todo-title{text-decoration:line-through;opacity:.6}
.todo-item.doing .todo-icon{color:#fbbf24}
.todo-item.done .todo-icon{color:#4ade80}
.todo-item.blocked .todo-icon{color:#f87171}
.todo-item.todo .todo-icon{color:var(--tx3,#888)}
.todo-progress{font-weight:400;color:var(--tx3,#888);margin-left:6px;font-size:11px}

/* Long-task banner (stream + sticky chat bar) */
.long-task-banner,.chat-long-task-bar{display:none;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;margin:8px 0;border-radius:10px;border:1px solid rgba(59,130,246,.35);background:linear-gradient(135deg,rgba(30,58,95,.95),rgba(15,23,42,.92));color:#bfdbfe;font-size:12px;box-shadow:0 4px 16px rgba(0,0,0,.18)}
.chat-long-task-bar{position:sticky;top:0;z-index:20;margin:0 0 10px;backdrop-filter:blur(8px)}
.long-task-banner .ltb-body,.chat-long-task-bar .ltb-body{display:flex;align-items:flex-start;gap:10px;flex:1;min-width:0}
.ltb-pulse{width:10px;height:10px;margin-top:4px;border-radius:50%;background:#60a5fa;flex-shrink:0;animation:ltbPulse 1.4s ease-in-out infinite}
.ltb-copy{min-width:0;flex:1}
.ltb-title{font-weight:600;color:#e0f2fe;margin-bottom:2px}
.ltb-sub{font-size:11px;color:#93c5fd;line-height:1.4;word-break:break-word}
.ltb-cancel,.chat-long-task-bar .ltb-cancel{flex-shrink:0;background:rgba(248,113,113,.12);border:1px solid rgba(248,113,113,.45);border-radius:8px;padding:6px 12px;color:#fecaca;font-size:12px;font-weight:500;cursor:pointer;transition:all .15s;font-family:inherit}
.ltb-cancel:hover{background:rgba(248,113,113,.22);border-color:#f87171;color:#fff}
@keyframes ltbPulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.85)}}

/* F10: reasoning step cards (live stream) */
.reasoning-stream{display:flex;flex-direction:column;gap:6px;margin:6px 0 8px;padding:0;font-family:'DM Mono',monospace}
.reasoning-card{background:var(--sf);border:1px solid var(--bd);border-left:3px solid var(--tx3);border-radius:8px;overflow:hidden;font-size:11px;color:var(--tx2);transition:border-color .2s;animation:fadeInMsg .2s ease-out}
.reasoning-card.phase-planning{border-left-color:#a855f7}
.reasoning-card.phase-tool_start,.reasoning-card.phase-tool{border-left-color:var(--org)}
.reasoning-card.phase-tool_end{border-left-color:var(--grn)}
.reasoning-card.phase-tool_end.is-fail,.reasoning-card.phase-tool_end[data-fail="1"]{border-left-color:#ef4444}
.reasoning-card.phase-recovery{border-left-color:#f59e0b}
.reasoning-card .rc-hdr{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--sf2);cursor:pointer;user-select:none;font-weight:500;flex-wrap:wrap}
.reasoning-card .rc-hdr:hover{background:var(--sf2);filter:brightness(1.08)}
.reasoning-card .rc-icon{font-size:13px}
.reasoning-card .rc-phase{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--tx3);font-weight:600}
.reasoning-card .rc-steps,.reasoning-card .rc-tool,.reasoning-card .rc-dur,.reasoning-card .rc-ok,.reasoning-card .rc-fail{font-size:10px;padding:1px 6px;border-radius:8px;background:rgba(255,255,255,.04);color:var(--tx3)}
.reasoning-card .rc-tool{background:rgba(251,146,60,.12);color:var(--org)}
.reasoning-card .rc-ok{background:rgba(74,222,128,.12);color:var(--grn)}
.reasoning-card .rc-fail{background:rgba(239,68,68,.15);color:#ef4444}
.reasoning-card .rc-body{padding:0 10px;max-height:0;overflow:hidden;transition:max-height .2s ease,padding .2s}
.reasoning-card .rc-body.open{max-height:600px;overflow-y:auto;padding:8px 10px}
.reasoning-card .rc-row{display:flex;gap:8px;margin-bottom:4px;align-items:flex-start}
.reasoning-card .rc-k{font-weight:600;color:var(--tx3);min-width:72px;font-size:10px;text-transform:uppercase}
.reasoning-card .rc-v{flex:1;color:var(--tx);word-break:break-word}
.reasoning-card .rc-steps-list{display:flex;flex-direction:column;gap:3px;margin-top:2px}
.reasoning-card .rc-step{padding:2px 0 2px 8px;border-left:1px solid var(--bd);color:var(--tx2)}
.reasoning-card .rc-step-tool,.reasoning-card .rc-step-exp{font-size:10px;color:var(--tx3);background:var(--sf2);padding:0 4px;border-radius:4px;margin-left:4px}
.reasoning-card .rc-content{margin:0;background:var(--sf2);padding:6px 8px;border-radius:6px;font-family:'DM Mono',monospace;font-size:10.5px;color:var(--tx2);white-space:pre-wrap;word-break:break-word;max-height:240px;overflow-y:auto}
.reasoning-card .rc-content.rc-args{color:var(--blue)}

/* A14: tablet + mobile chat responsive */
@media(min-width:768px) and (max-width:1023px){
  .chat-hdr{padding:0 0 10px}
  .chat-conv-panel{margin-bottom:8px}
  .chat-m{padding:10px 0}
  .chat-in{padding:10px 0}
  .chat-wrap .chat-c{padding:0 12px 0 0}
}
@media(max-width:767px){
  .chat-hdr{flex-wrap:wrap;gap:6px}
  .chat-hdr .ch-left{min-width:0;flex-shrink:1;overflow:hidden}
  .chat-hdr .ch-left .chat-cron-badge,.chat-hdr .ch-left .ch-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .chat-hdr #chatTalkHdrBtn{display:none}
  .chat-conv-panel{display:none}
  .chat-msg{max-width:95%}
  .chat-wrap .chat-c{padding:0 8px}
  .chat-in-hints{font-size:9px;gap:4px 8px}
  .prompt-suggestions{padding:12px}
  .prompt-chip{padding:6px 12px;font-size:11px}
  .chat-in .ch-btn,.chat-in .btn.btn-p{min-width:44px;min-height:44px;width:44px;height:44px}
  .chat-in .ch-btn.ch-btn-lbl.ch-voice-btn{min-width:44px;padding:8px 12px}
  .composer-voice-wrap .ch-voice-btn{display:none}
  .composer-voice-toggle{display:inline-flex}
  .composer-voice-wrap.open{display:flex;flex-direction:column;align-items:stretch;position:absolute;bottom:calc(100% + 6px);right:0;background:var(--sf);border:1px solid var(--bd);border-radius:10px;padding:6px;box-shadow:0 8px 24px rgba(0,0,0,.35);z-index:30;gap:4px}
  .composer-voice-wrap.open .ch-voice-btn{display:inline-flex;width:auto;min-width:44px;min-height:44px;height:44px}
}
@media(max-width:640px){
  .ch-actions{gap:2px}
  .chat-hdr .ch-left{min-width:0;flex:1;overflow:hidden}
  .chat-cron-badge{font-size:10px;white-space:nowrap}
  .chat-msg#chatStreaming{max-width:95%}
  .stream-status{padding:6px 10px;font-size:10px}
  .stc-hdr{padding:6px 10px}
  .thinking-toggle{padding:6px 10px}
  .code-block-wrap pre{font-size:10px;padding:8px}
}

/* ═══ Phase 3 — Markdown blocks, lightbox, message action hover ═══ */
.md-code-block{margin:6px 0;border-radius:8px;overflow:hidden;border:1px solid var(--bd);background:var(--bg)}
.md-code-hdr{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 10px;background:var(--sf2);border-bottom:1px solid var(--bd);font-size:10px;color:var(--tx3)}
.md-code-lang{font-family:'DM Mono',monospace;text-transform:lowercase;color:var(--tx2);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.md-code-live{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--org);background:rgba(251,146,60,.12);border:1px solid rgba(251,146,60,.25);border-radius:999px;padding:1px 6px;flex-shrink:0}
.md-code-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}
.md-code-copy,.md-code-expand{background:none;border:1px solid var(--bd);border-radius:4px;padding:1px 8px;color:var(--tx3);font-size:10px;cursor:pointer;transition:all .15s;font-family:inherit}
.md-code-copy:hover,.md-code-expand:hover{color:var(--tx);border-color:var(--bd2);background:var(--sf)}
.md-code-copy.copied{color:var(--grn);border-color:var(--grn)}
.md-code-block.md-code-streaming{border-color:rgba(251,146,60,.35);box-shadow:0 0 0 1px rgba(251,146,60,.08)}
.md-code-block.md-code-collapsed pre{max-height:220px;overflow:hidden;position:relative}
.md-code-block.md-code-collapsed pre::after{content:'';position:absolute;left:0;right:0;bottom:0;height:48px;background:linear-gradient(transparent,var(--bg));pointer-events:none}
.md-code-block pre{margin:0;padding:10px;overflow-x:auto;font-size:11px;line-height:1.5}
.md-code-block code{font-family:'DM Mono',monospace}
.md-inline-code{background:var(--sf2);border:1px solid var(--bd);border-radius:4px;padding:1px 5px;font-family:'DM Mono',monospace;font-size:11px;color:var(--cyan)}
.collapsible-pre{position:relative;margin:4px 0}
.collapsible-pre-body{margin:0;padding:8px 10px;font-family:'DM Mono',monospace;font-size:10px;line-height:1.5;color:var(--tx2);white-space:pre-wrap;word-break:break-word;overflow-x:auto}
.collapsible-pre.is-collapsed .collapsible-pre-body{max-height:160px;overflow:hidden}
.collapsible-pre.is-collapsed .collapsible-pre-body::after{content:'';position:absolute;left:0;right:0;bottom:28px;height:40px;background:linear-gradient(transparent,var(--sf2));pointer-events:none}
.collapsible-pre-toggle{display:block;width:100%;margin-top:4px;padding:4px 8px;border:1px dashed var(--bd);border-radius:6px;background:var(--sf);color:var(--tx3);font-size:10px;cursor:pointer;transition:all .15s}
.collapsible-pre-toggle:hover{color:var(--blue);border-color:var(--blue)}
.chat-msg .bbl h2,.chat-msg .bbl h3,.chat-msg .bbl h4{margin:10px 0 4px;line-height:1.35}
.chat-msg .bbl ul,.chat-msg .bbl ol{margin:6px 0 6px 18px;padding:0}
.chat-msg .bbl blockquote{margin:6px 0;padding:4px 10px;border-left:3px solid var(--blue);color:var(--tx3);font-size:12px}
.chat-msg .bbl hr{border:none;border-top:1px solid var(--bd);margin:8px 0}
.chat-msg .bbl a{color:var(--blue);text-decoration:underline;text-underline-offset:2px}
.lb-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.9);z-index:999;display:flex;align-items:center;justify-content:center;cursor:zoom-out;opacity:0;pointer-events:none;transition:.2s}
.lb-overlay.show{opacity:1;pointer-events:auto}
.lb-overlay img{max-width:90vw;max-height:90vh;border-radius:8px}
.chat-msg .bbl-wrap{position:relative}
.chat-msg .bbl-wrap .msg-edit-btn,.chat-msg .bbl-wrap .msg-copy-btn,.chat-msg .bbl-wrap .msg-pin-btn,.chat-msg .bbl-wrap .msg-fix-btn{opacity:0;transition:opacity .15s}
.chat-msg .bbl-wrap:hover .msg-edit-btn,.chat-msg .bbl-wrap:hover .msg-copy-btn,.chat-msg .bbl-wrap:hover .msg-pin-btn,.chat-msg .bbl-wrap:hover .msg-fix-btn{opacity:1}
.chat-msg .bbl-wrap .msg-pin-btn.pinned{opacity:1}
.chat-msg-img{cursor:zoom-in;border:none;padding:0;background:none;border-radius:8px;overflow:hidden}
.chat-msg-img img{display:block;max-width:240px;max-height:180px;object-fit:cover;border-radius:8px;border:1px solid var(--bd)}
.chat-msg-img-hint{position:absolute;bottom:4px;right:4px;font-size:10px;opacity:.7;pointer-events:none}

/* ═══ Phase 7 — Canvas embeds, collapse badge, corrections, header overflow ═══ */
.chat-canvas-embed{margin:8px 0;border:1px solid var(--bd);border-radius:10px;overflow:hidden;background:var(--sf)}
.chat-canvas-embed .ce-hdr{display:flex;align-items:center;gap:6px;padding:6px 10px;border-bottom:1px solid var(--bd);font-size:11px;color:var(--tx3);cursor:pointer;user-select:none}
.chat-canvas-embed .ce-hdr:hover{color:var(--tx2);background:var(--sf2)}
.chat-canvas-embed iframe{width:100%;border:none;min-height:200px;max-height:400px;background:var(--bg)}
.chat-canvas-embed.expanded iframe{min-height:500px;max-height:800px}
.collapse-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;margin-left:6px;background:var(--sf2);border:1px solid var(--bd);border-radius:10px;font-size:10px;color:var(--tx3);font-weight:600;vertical-align:middle}
.collapse-badge:hover{color:var(--tx);border-color:var(--bd2)}
/* Compact icon "Correct" button (fix #15-v2, 2026-07-14) — sits in the
   bbl-wrap row alongside Copy/Pin/Delete/TTS, fades in on hover, shows
   transient saved/failed states. Replaces the old large text .corr-btn. */
.chat-msg.agent .corr-btn.msg-fix-btn{margin:0;padding:2px 4px;font-size:11px;color:var(--tx3);background:none;border:none;cursor:pointer;border-radius:4px;display:inline-flex;align-items:center;gap:3px;transition:color .15s,background .15s,opacity .15s}
.chat-msg.agent .corr-btn.msg-fix-btn:hover{color:var(--tx);background:rgba(255,255,255,.06)}
.chat-msg.agent .corr-btn.msg-fix-btn.saving{color:var(--tx2);opacity:.7;cursor:default}
.chat-msg.agent .corr-btn.msg-fix-btn.saved{color:var(--grn);opacity:1}
.chat-msg.agent .corr-btn.msg-fix-btn.failed{color:var(--red);opacity:1}
/* Legacy full-text correction button (v23 installed by roadmap_v27) hidden —
   replaced by the inline icon overlay in index.html. */
.chat-msg.agent .corr-btn:not(.msg-fix-btn){display:none}
.ch-actions-group{display:flex;align-items:center;gap:4px}
.ch-actions-group+.ch-actions-group::before{content:'';width:1px;height:16px;background:var(--bd);margin:0 2px;flex-shrink:0}
.ch-overflow{position:relative;display:flex;gap:4px;align-items:center}
.ch-more-btn{display:none}
.chat-more-wrap{position:relative}
@media(max-width:767px){
  .ch-actions-group+.ch-actions-group::before{display:none}
  .ch-overflow{display:none}
  .ch-overflow.open{display:flex;position:absolute;top:100%;right:0;background:var(--sf);border:1px solid var(--bd);border-radius:8px;padding:4px;box-shadow:0 8px 24px rgba(0,0,0,.4);z-index:10;flex-direction:column;gap:2px;margin-top:4px}
  .ch-overflow.open .ch-btn{padding:6px 10px;width:auto;gap:8px;font-size:12px;white-space:nowrap;border-radius:6px}
  .ch-overflow.open .ch-btn:hover{background:var(--sf2)}
  .ch-more-btn{display:flex!important}
}
@media(min-width:768px) and (max-width:1023px){
  .ch-actions{gap:4px}
  .ch-actions-group+.ch-actions-group::before{display:none}
}

/* Fix #43 — subagent tool trail in chat */
.chat-tool-card.subagent-tool{border-color:rgba(168,85,247,.45)}
.chat-tool-card.subagent-tool .chat-tool-name{color:var(--pur)}
.subagent-trail{font-size:11px;color:var(--tx2);margin:6px 0 4px}
.subagent-trail strong{color:var(--pur)}

/* Tier-0 (2026-07-06) — in-product model picker.
   Sits above the textarea as a small "Model: <select>" strip; the select
   itself is the dropdown populated by chat-model-picker.js. */
.composer-topbar{display:flex;align-items:center;gap:6px;width:100%;
  padding:2px 2px 6px;font-size:10px;color:var(--tx3);flex-wrap:wrap}
.composer-topbar-label{text-transform:uppercase;letter-spacing:.04em;
  font-weight:600;font-family:'DM Mono',monospace}
.model-picker-wrap{display:inline-flex;align-items:center}
.model-picker-wrap select{font:inherit;font-size:11px;color:var(--tx2);
  background:var(--bg2,var(--bg));border:1px solid var(--bd);border-radius:6px;
  padding:3px 6px;max-width:280px;cursor:pointer}
.model-picker-wrap select:disabled{opacity:.55;cursor:wait}
.model-picker-wrap select:focus{outline:2px solid var(--blue);outline-offset:1px}
@media(max-width:640px){.model-picker-wrap select{max-width:170px}}

/* ════════════════════ rwd-fixes.css (responsive band fixes) ════════════════════ */

/* ══════════════════════════════════════════════════════════════════
   RWD fix pass (2026-08-21) — mobile/tablet alignment fixes
   Audited at 1920/1366/1024/768/430/390/375/360/320.
   Issues fixed here:
   1. Channels `.grid.g2` cards: grid item min-width:auto → long webhook
      URL forced 607px track on 353px container (cards clipped, no scroll).
   2. Security severity chips: raw `.grid` (auto cols) → 5 chips never wrap.
   3. Reviewers: long unbreakable code strings overflow cards.
   4. Sites/Memory `.tabs`: 5+ tabs don't fit → clipped (no scroll).
   5. Topbar: Quiet-Hours + model chip overflows on ≤640px.
   6. Tables: ensure every table sits in a scrollable wrapper.
   ══════════════════════════════════════════════════════════════════ */

/* 1. Grid items must be allowed to shrink below their content size */
.grid > *, .g2 > *, .g3 > *, .g4 > *, .g6 > * { min-width: 0; }

/* 2. Security severity chips — wrap instead of overflow.
      Raw .grid rows of small chips collapse to 2 cols on phones. */
@media (max-width: 640px) {
  .grid:not(.g2):not(.g3):not(.g4):not(.g6) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* 3. Long tokens (test names, URLs, hashes) must break inside cards */
.card, .card-sm { min-width: 0; }
.card code, .card-sm code, .card span, .card-sm span { overflow-wrap: anywhere; }
.card code { white-space: pre-wrap; word-break: break-all; }

/* 4. Tab strips scroll horizontally on narrow screens */
.tabs {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  scrollbar-gutter: stable;
}
.tabs .tab { flex-shrink: 0; white-space: nowrap; }

/* 5. Topbar — wrap instead of overflow on phones */
@media (max-width: 640px) {
  .topbar { flex-wrap: wrap; row-gap: 6px; }
  .topbar > * { flex-shrink: 1; min-width: 0; }
  /* icon-only Quiet Hours / scheduler pills keep working, label hidden */
  .topbar #schedulerIndicator { padding: 3px 8px; }
  .topbar .quiet-btn, .topbar #schedulerIndicator { white-space: nowrap; }
}

/* 6. Tables never blow out cards */
.tbl-wrap { max-width: 100%; }
.tbl-wrap table { min-width: 480px; }
@media (max-width: 640px) {
  .tbl-wrap { margin-inline: -2px; }
}

/* Safety net: nothing may paint past the main column */
@media (max-width: 640px) {
  .content { max-width: 100vw; overflow-x: clip; }
}

/* ── Chat page: composer header cluster (≤400px phones) ──
   .ch-actions is flex-wrap:wrap but contains a width:100% .composer-topbar
   (from Tier-0 model picker) whose 100% resolves cyclically → forces
   the row to ~390px, clipping Send/more buttons on 320-375px viewports.
   chat-enhancements.js re-styles the header copy inline-flex; the mobile
   override below lives AFTER it via file order (loaded later). */
@media (max-width: 420px) {
  .chat-hdr .ch-actions {
    width: 100%;
    max-width: 100%;
    flex-shrink: 1;
    min-width: 0;
    justify-content: flex-end;
  }
  .chat-hdr .composer-topbar {
    flex: 0 1 auto;
    width: auto;
    max-width: 100%;
    min-width: 0;
  }
  .chat-hdr .composer-topbar .model-picker-wrap { min-width: 0; }
  .chat-hdr .composer-topbar #modelPickerSelect { max-width: 110px; }
  .chat-hdr .ch-actions-group { flex-shrink: 0; }
}

/* 7. Bare tables (no .tbl-wrap ancestor — e.g. Evaluators "Recent runs")
   scroll horizontally on phones instead of being clipped. */
@media (max-width: 640px) {
  main table {
    display: block;
    overflow-x: auto;
    max-width: 100%;
    -webkit-overflow-scrolling: touch;
  }
  main table td, main table th { white-space: nowrap; }
}

/* 7b. The Evaluators page table is NOT under <main> (router renders it in a
   sibling container) — drop the main-scoped selector. */
@media (max-width: 640px) {
  .page table, main table, .content table {
    display: block;
    overflow-x: auto;
    max-width: 100%;
    -webkit-overflow-scrolling: touch;
  }
  .page table td, .page table th, main table td, main table th, .content table td, .content table th { white-space: nowrap; }
}

/* ════════════════════ streaming-polish.css (2026-08-28 alignment + streaming UX) ════════════════════ */

/* ══════════════════════════════════════════════════════════════════
   STREAMING POLISH (2026-08-28) — alignment + streaming UX pass
   Fixes:
   1. Bubble width jump: streaming bubble was 90% (95% mobile) while settled
      messages are 85% — the bubble visibly shifted on completion. Unify.
   2. Typing cursor lived OUTSIDE the bubble (below it); move visual to the
      text tip inside the bubble (ZCode-style inline caret).
   3. New-content fade: last block fades in softly instead of popping.
   4. Mobile: all bubbles 95% (was only the streaming one) — cleaner edges.
   5. Scroll-to-bottom button: unread-count pill + auto-hide at bottom.
   ══════════════════════════════════════════════════════════════════ */

/* 1. Unify bubble widths — no jump when a stream settles */
.chat-msg, .chat-msg#chatStreaming { max-width: 85%; }
@media (max-width: 640px) {
  .chat-msg, .chat-msg#chatStreaming { max-width: 95%; }
}

/* 2. Inline caret at the text tip (moved inside .bbl by chat-stream-ui patch) */
.bbl .chat-cursor {
  display: inline-block;
  width: 2px;
  height: 1em;
  background: var(--blue);
  margin-left: 2px;
  vertical-align: text-bottom;
  animation: caretBlink 0.9s steps(1) infinite;
  border-radius: 1px;
}
@keyframes caretBlink { 0%,100%{opacity:1} 50%{opacity:0} }
/* hide the old outside-bubble caret location when present */
.chat-msg#chatStreaming > .chat-cursor { display: none; }

/* 3. Soft fade for freshly streamed content */
.chat-msg#chatStreaming .bbl > *:last-child { animation: streamIn .18s ease-out; }
@keyframes streamIn { from{opacity:.55} to{opacity:1} }

/* 4. Streaming bubble: keep the same skin as settled agent bubbles so the
      handoff on completion is pixel-identical */
.chat-msg#chatStreaming .bbl {
  border: 1px solid var(--bd);
  background: var(--sf2);
  box-shadow: 0 1px 2px rgba(0,0,0,.12);
  border-bottom-left-radius: 4px;
}

/* 5. Scroll-to-bottom: unread pill */
.scroll-bottom-btn { position: relative; }
.scroll-bottom-btn .sbb-unread {
  position: absolute;
  top: -6px; right: -6px;
  min-width: 16px; height: 16px;
  padding: 0 4px;
  border-radius: 8px;
  background: var(--blue);
  color: #fff;
  font-size: 9px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  border: 2px solid var(--bg);
}
.scroll-bottom-btn .sbb-unread:empty { display: none; }

/* 6. Long unbroken tokens inside bubbles never overflow (harness-tested) */
.chat-msg .bbl { overflow-wrap: anywhere; }
.chat-msg .bbl pre, .chat-msg .bbl code { max-width: 100%; }

/* 7. User bubbles: keep readable contrast on gradient */
.chat-msg.user .bbl { -webkit-hyphens: auto; hyphens: auto; }

/* 8. Status row alignment: phase chip + elapsed right-aligned on one line */
.stream-header {
  display: flex; align-items: center; gap: 8px;
  font-size: 11px; color: var(--tx3);
}
.stream-header .stream-elapsed {
  margin-left: auto;
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  font-variant-numeric: tabular-nums;
}

/* ═══ FIX 9 (bughunt 2026-08-29): sidebar footer "Sign out" wrapped to two lines
   in the collapsed-width footer — force nowrap + shrink the 24px inline icon. */
#logoutBtn{white-space:nowrap;flex-shrink:0;width:auto}
#logoutBtn svg{width:14px;height:14px;flex-shrink:0}

/* ═══ FIX 10-11 (bughunt 2026-08-29, mobile ≤480px) ═══
   FIX 10: header right cluster ("provider" + status chip) clipped at the
           viewport edge — allow shrink + ellipsis instead of spilling.
   FIX 11: reply meta bar ("first token …ms · tokens · agent · duration")
           ran off-screen with no wrap — clamp with ellipsis. */
@media (max-width: 480px) {
  .chat-hdr .ch-actions{max-width:100%;overflow:hidden}
  .chat-hdr .ch-actions button,
  .chat-hdr .ch-actions .model-picker-wrap{max-width:132px;min-width:0}
  .chat-hdr .ch-actions button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .reply-meta-bar{max-width:100%;flex-wrap:wrap;row-gap:2px}
  .reply-meta-text,.reply-meta-tools,.reply-meta-cost{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:bottom}
}

/* ═══ FIX 12-13 (2026-08-29): align chat across ALL screen sizes ═══
   FIX 12 (768-1280px): the labeled voice trio (Listen/Talk/Converse, ~240px)
   stayed expanded and squeezed the composer input to ~330px on tablets and
   small laptops. Reuse the tested <=767px collapse: voice buttons move into
   the compact toggle + popup, freeing the space for the input. */
@media (min-width: 768px) and (max-width: 1280px) {
  .composer-voice-wrap .ch-voice-btn{display:none}
  .composer-voice-toggle{display:inline-flex}
  .composer-voice-wrap.open{display:flex;flex-direction:column;align-items:stretch;position:absolute;bottom:calc(100% + 6px);right:0;background:var(--sf);border:1px solid var(--bd);border-radius:10px;padding:6px;box-shadow:0 8px 24px rgba(0,0,0,.35);z-index:30;gap:4px}
  .composer-voice-wrap.open .ch-voice-btn{display:inline-flex;width:auto;min-height:36px;height:36px}
}
/* FIX 13 (>=1440px): the chat page unsets the chat column's max-width
   (.chat-wrap .chat-c{max-width:none}), so reading lines stretched to
   1392px at 1920 — too wide to read. Cap at 1100px, centered; bubbles
   keep their 85% relative width. */
@media (min-width: 1440px) {
  .chat-wrap .chat-c{max-width:1100px;margin:0 auto}
}

/* FIX 12b (2026-08-29): chat-enhancements.js injects styles AFTER all <link>
   sheets — its `.chat-in .ch-btn` (same specificity, later order) kept the
   voice trio visible inside 768-1280px, negating FIX 12. !important + higher
   specificity wins regardless of injection order. */
@media (min-width: 768px) and (max-width: 1280px) {
  .chat-in .composer-voice-wrap .ch-voice-btn{display:none!important}
  .chat-in .composer-voice-toggle{display:inline-flex!important}
}

/* ════════════════════ conv-rail-toggle.css (2026-08-29 conversations minimize toggle) ════════════════════ */

/* ══════════════════════════════════════════════════════════════════
   CONVERSATIONS RAIL MINIMIZE TOGGLE (2026-08-29)
   The conversations section on the chat page gets a chevron toggle in
   its own header. Clicking it minimizes the section to a slim icon
   strip (still holding the new-chat + expand buttons); clicking again
   restores the full list. State persists via chatRailHidden (applied
   after every chat render by chat-enhancements.js applyRailState).
   ══════════════════════════════════════════════════════════════════ */

/* header: title left, [+] and [«] packed to the right */
.rail-hdr{gap:4px}
.rail-hdr .rail-hdr-title{margin-right:auto}

/* smooth minimize/expand */
.chat-rail{transition:width .18s ease,min-width .18s ease,padding .18s ease}
.rail-min-btn svg{transition:transform .18s ease}

/* ---- desktop (>=1101px): minimized = slim 46px icon strip --------------- */
@media(min-width:1101px){
  .chat-wrap.rail-min .chat-rail{width:46px;min-width:46px;padding:12px 5px;align-items:center}
  .chat-wrap.rail-min .rail-hdr{flex-direction:column;gap:10px;padding:0;justify-content:flex-start}
  .chat-wrap.rail-min .rail-hdr .rail-hdr-title{display:none}
  .chat-wrap.rail-min .rail-search,
  .chat-wrap.rail-min .rail-list,
  .chat-wrap.rail-min .rail-more{display:none}
  /* chevron-left (minimize) flips to chevron-right (expand) when minimized */
  .chat-wrap.rail-min .rail-min-btn svg{transform:rotate(180deg)}
}

/* ---- mobile/tablet (<=1100px): rail is an overlay; the same button
        closes (minimizes) the overlay — chevron-left reads as collapse ---- */
@media(max-width:1100px){
  .rail-min-btn svg{transform:none}
}

/* WCAG 2.3.3 — reduced motion: no slide, instant state change */
@media(prefers-reduced-motion:reduce){
  .chat-rail{transition:none}
  .rail-min-btn svg{transition:none;transform:var(--rm-cv,none)}
}

/* ════════════════════ model-tier.css (2026-08-29 LOCAL/CLOUD badge) ════════════════════ */

/* ══════════════════════════════════════════════════════════════════
   MODEL TIER BADGE (2026-08-29, phase 3) — see js/model-tier-badge.js
   ══════════════════════════════════════════════════════════════════ */
.model-tier-badge{
  display:inline-flex;align-items:center;
  font-size:9px;font-weight:700;letter-spacing:.06em;
  padding:2px 6px;border-radius:999px;
  border:1px solid var(--bd);color:var(--tx3);
  background:var(--sf2);
  margin-left:6px;vertical-align:middle;
  user-select:none;flex-shrink:0;
}
.model-tier-badge[data-tier="LOCAL"]{color:var(--grn,#22c55e);border-color:var(--grn,#22c55e);background:rgba(34,197,94,.08)}
.model-tier-badge[data-tier="CLOUD"]{color:var(--blue,#3b82f6);border-color:var(--blue,#3b82f6);background:rgba(59,130,246,.08)}
/* header relocation (chat-enhancements moves #composerTopbar into .chat-hdr) */
.chat-hdr .model-tier-badge{font-size:9px}
