.cmp{max-width:1120px;margin:22px auto 0;text-align:left}
/* 轮次切换胶囊 */
.rsw{display:flex;justify-content:center;gap:8px;margin-bottom:16px}
.rsw button{font-size:var(--fs-5);font-weight:600;color:var(--t50);background:rgba(255,255,255,.04);
  border:1px solid var(--line);border-radius:999px;padding:7px 18px;cursor:pointer;transition:.25s;font-family:inherit}
.rsw button:hover{color:#fff;border-color:rgba(255,255,255,.3)}
.rsw button.on{color:#fff;background:rgba(110,140,255,.16);border-color:rgba(140,180,255,.5)}
.cmp-cols{display:grid;grid-template-columns:1fr 1fr;gap:20px;position:relative}
.cmp-col{border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.02);
  padding:15px 16px 13px;display:flex;flex-direction:column;gap:11px;min-width:0}
.cmp-col.hi{border-color:rgba(255,255,255,.26);background:rgba(255,255,255,.045);
  box-shadow:0 18px 50px -26px rgba(110,140,255,.6)}
.cmp-k{font-size:var(--fs-4);font-weight:700;color:var(--t50)}
.cmp-col.hi .cmp-k{color:#fff}
/* 卡身：左通话屏 + 右决策模块 */
.cmp-body{display:grid;grid-template-columns:minmax(170px,198px) 1fr;gap:14px;align-items:stretch}
/* 竖屏通话：主画面（倾听/回复双层交叠淡切） + 右上对方 PiP */
.call{position:relative;aspect-ratio:9/16;border-radius:16px;overflow:hidden;border:1px solid var(--line);
  background:radial-gradient(120% 92% at 50% 14%,rgba(110,140,255,.13),transparent 62%),#08080B}
.cmp-col.hi .call{border-color:rgba(170,200,255,.45)}
.call video.vm{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .35s}
.call video.vm.on{opacity:1}
.cmp-col:not(.hi) .call video.vm{filter:saturate(.4) brightness(.78)}
.call .pip{position:absolute;bottom:9px;right:9px;width:32%;aspect-ratio:1/1;border-radius:10px;overflow:hidden;
  border:1px solid rgba(255,255,255,.25);z-index:3;box-shadow:0 6px 18px rgba(0,0,0,.5);transition:border-color .3s,box-shadow .3s}
.call .pip video{width:100%;height:100%;object-fit:cover;object-position:50% 22%;display:block}
.call.p-user .pip{border-color:#6EA8FF;box-shadow:0 0 0 1px rgba(110,168,255,.4),0 6px 18px rgba(0,0,0,.5)}
.call .cname{position:absolute;left:9px;top:9px;z-index:2;font-size:10px;letter-spacing:.08em;color:rgba(255,255,255,.85);
  background:rgba(6,6,10,.45);border:1px solid rgba(255,255,255,.14);border-radius:999px;padding:2px 8px;backdrop-filter:blur(8px);
  display:flex;align-items:center;gap:5px}
.call .cname i{width:5px;height:5px;border-radius:50%;background:#ff5f57;animation:pl 1.6s infinite}
.call .cveil{position:absolute;left:0;right:0;bottom:0;height:26%;z-index:1;
  background:linear-gradient(0deg,rgba(4,4,6,.72),transparent)}
/* 关声小按钮：半透明圆钮 + 抽象线条喇叭（非写实），关闭态波纹换成小叉 */
.vmute{position:absolute;left:9px;bottom:9px;z-index:4;width:28px;height:28px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  background:rgba(6,6,10,.38);border:1px solid rgba(255,255,255,.16);
  backdrop-filter:blur(8px);opacity:.72;transition:.2s;color:#fff;padding:0}
.vmute svg{width:14px;height:14px;display:block}
.vmute:hover{opacity:1;border-color:rgba(255,255,255,.4)}
.vmute .x{display:none}
.vmute.off{color:var(--t50)}
.vmute.off .w1,.vmute.off .w2{display:none}
.vmute.off .x{display:block}
/* 决策模块 */
.dm{display:flex;flex-direction:column;gap:8px;min-width:0;font-size:var(--fs-6)}
.dm .blk{border:1px solid rgba(255,255,255,.08);border-radius:11px;padding:8px 11px;
  display:flex;flex-direction:column;gap:6px;transition:border-color .3s,background .3s}
.dm .blk.live{border-color:rgba(140,180,255,.38);background:rgba(110,140,255,.05)}
.dm .hd{color:var(--t30);letter-spacing:.12em;font-size:10px}
.dm .row{display:grid;grid-template-columns:32px 1fr;gap:8px;align-items:baseline;
  opacity:.22;transform:translateX(-4px);transition:opacity .4s,transform .4s}
.dm .row.on{opacity:1;transform:none}
.dm .row .k{color:var(--t35);white-space:nowrap}
.dm .row .v{color:var(--t70);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dm .row .v .dot{display:inline-block;width:5px;height:5px;border-radius:2px;margin-right:6px;vertical-align:1px;background:var(--c,rgba(255,255,255,.35))}
.dm .row.dead .v{color:var(--t30)}
/* 推理快闪条：对方说完 → 决策推导 → 开口 */
.dm .think{height:3px;border-radius:2px;background:rgba(255,255,255,.06);overflow:hidden;position:relative;opacity:0;transition:opacity .2s}
.dm .think.on{opacity:1}
.dm .think i{position:absolute;inset:0;width:0;background:linear-gradient(90deg,#6EA8FF,#8E6BFF,#5CE1E6)}
.dm .think.on i{width:100%;transition:width .85s cubic-bezier(.2,.8,.2,1)}
/* 输出：逐字打出，与主画面开口同步 */
.dm .blk.outb{flex:1}
/* 输出规格标签：声线（蓝）与表情（青）—— 场控裁决的不只是"说什么"，还有"怎么说、什么表情" */
.otags{display:flex;flex-wrap:wrap;gap:5px}
.ot{font-size:10px;line-height:1;padding:3px 9px;border-radius:999px;white-space:nowrap;
  opacity:0;transform:translateY(3px);transition:opacity .35s,transform .35s}
.ot.on{opacity:1;transform:none}
.ot.v{color:#9CC0FF;border:1px solid rgba(110,168,255,.38);background:rgba(110,168,255,.08)}
.ot.f{color:#8FE9ED;border:1px solid rgba(92,225,230,.35);background:rgba(92,225,230,.07)}
.cmp-col:not(.hi) .ot{color:var(--t35);border-color:rgba(255,255,255,.12);background:rgba(255,255,255,.03)}
.dm .out-txt{color:var(--t50);line-height:1.7;font-size:var(--fs-5);min-height:3.4em}
.cmp-col.hi .dm .out-txt{color:#fff}
.dm .cur{display:inline-block;width:2px;height:1em;background:currentColor;vertical-align:-2px;margin-left:1px;animation:cblink 1s steps(1) infinite}
@keyframes cblink{50%{opacity:0}}
.cmp-out{margin-top:auto;font-size:var(--fs-5);color:var(--t30);padding-top:9px;
  border-top:1px dashed rgba(255,255,255,.08)}
.cmp-out.hi{color:#fff}
@media(max-width:900px){
  .cmp-cols{grid-template-columns:1fr;gap:14px}
  .cmp-body{grid-template-columns:minmax(150px,172px) 1fr}
}
.s-claim .under b{color:var(--t70);font-weight:600}
