/* A single stack owns all rail placement. Session panels never own playback. */
#tm-communication-rail{position:fixed;left:max(5px,calc((var(--nav-width,80px) - 48px)/2));bottom:max(12px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px;z-index:99989}
#tm-communication-rail:empty{display:none}
#tm-communication-rail>button,#tm-communication-rail>#tm-view-shelf-trigger{position:static!important;inset:auto!important;display:flex;align-items:center;justify-content:center;flex-direction:column;min-width:48px;width:48px;min-height:48px;height:48px;margin:0;padding:4px;border:1px solid var(--border-2,#608074);border-radius:14px;background:var(--surface-2,#24352e);color:var(--text-1,#fff);font:700 22px system-ui;cursor:pointer;box-shadow:0 5px 18px #0006}
#tm-communication-rail>[data-rail-slot=media]{order:1}#tm-communication-rail>[data-rail-slot=voice]{order:2}#tm-communication-rail>[data-rail-slot=shelf]{order:3}
#tm-communication-rail>button[hidden],.tm-communication-panel[hidden]{display:none!important}
#tm-communication-rail>[data-muted=true]{border-color:var(--red,#ef6464)}#tm-communication-rail>[data-camera=true]{box-shadow:inset 0 -4px var(--green,#5ee098)}
#nav-sidebar,body.tm-tablet-workspace-controls-active #app.tm-tablet #nav-sidebar{padding-bottom:var(--tm-control-stack-height,76px)!important}
.tm-communication-panel{position:fixed;left:calc(var(--nav-width,80px) + 8px);bottom:84px;z-index:99990;box-sizing:border-box;width:min(350px,calc(100vw - var(--nav-width,80px) - 24px));max-height:calc(100dvh - 110px);overflow:auto;display:flex;flex-direction:column;gap:12px;padding:14px;border:1px solid var(--border-2,#608074);border-radius:14px;background:var(--surface-1,#15231f);color:var(--text-1,#fff);box-shadow:0 18px 46px #0009;font:14px system-ui}
.tm-communication-panel header{display:flex;align-items:center;justify-content:space-between;gap:12px}.tm-communication-panel button{min-height:40px;padding:8px;border:1px solid var(--border-2,#608074);border-radius:8px;color:inherit;background:var(--surface-2,#24352e);cursor:pointer}.tm-communication-panel button:disabled{opacity:.45;cursor:default}.tm-communication-panel label{display:flex;align-items:center;gap:8px}.tm-communication-panel input{min-width:0;flex:1}.tm-communication-buttons{display:flex;gap:6px;flex-wrap:wrap}.tm-media-metadata{display:grid;gap:5px}.tm-media-metadata img{object-fit:cover;border-radius:8px}.tm-communication-status:empty{display:none}
#tm-communication-rail button:focus-visible,.tm-communication-panel :focus-visible{outline:2px solid var(--accent,#6ee7b7);outline-offset:2px}
@media(max-width:640px){#tm-communication-rail{left:auto;right:8px;bottom:calc(72px + env(safe-area-inset-bottom));flex-direction:row;gap:6px}#tm-communication-rail>button{width:44px;min-width:44px;min-height:44px;height:44px}.tm-communication-panel,#tm-view-shelf{left:8px!important;right:8px;bottom:calc(128px + env(safe-area-inset-bottom))!important;width:calc(100vw - 16px)!important;max-height:calc(100dvh - 164px);border-radius:18px;padding-bottom:calc(14px + env(safe-area-inset-bottom))}#tm-view-shelf-toolbar-toggle{display:none!important}.tm-communication-panel button{min-height:44px}}
/* Legacy shelf CSS hid its standalone phone trigger. The shared stack owns it now. */
#tm-communication-rail>#tm-view-shelf-trigger:not([hidden]){display:flex!important}
#tm-communication-rail>#tm-view-shelf-trigger[hidden]{display:none!important}


/* Voice Control Panel UX v1.1 — compact call dashboard, scoped to native voice. */
#tm-voice-panel{gap:11px;width:min(390px,calc(100vw - var(--nav-width,80px) - 24px));}
#tm-voice-panel>header{margin-bottom:0;font-size:12px;color:var(--text-muted);}
#tm-voice-panel>.tm-voice-heading{display:flex;align-items:center;gap:11px;min-width:0;}
.tm-voice-heading-icon{width:40px;height:40px;display:grid;place-items:center;flex:0 0 40px;border-radius:12px;background:var(--surface-2);}
.tm-voice-heading-names{display:flex;flex-direction:column;gap:3px;min-width:0;overflow:hidden;}
.tm-voice-channel{font-size:17px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tm-voice-server{font-size:12px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tm-voice-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;color:var(--text-muted);font-size:12px;}
.tm-voice-state{display:flex;align-items:center;gap:7px;min-width:0;}
.tm-voice-state:before{content:'';flex:0 0 7px;height:7px;background:var(--yellow,#e6b450);border-radius:50%;}
.tm-voice-state[data-connected=true]:before{background:var(--green,#5ee098);}
.tm-voice-duration{font-variant-numeric:tabular-nums;white-space:nowrap;}
.tm-voice-roster-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--border-1);padding-top:12px;}
.tm-voice-count{color:var(--text-muted);font-size:12px;}
.tm-voice-roster{display:flex;flex-direction:column;gap:3px;min-height:0;max-height:min(38dvh,330px);overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable;}
.tm-voice-person{display:flex;align-items:center;gap:10px;min-height:51px;padding:5px 7px;border:1px solid transparent;border-radius:12px;min-width:0;}
.tm-voice-person[data-speaking=true]{background:var(--surface-2);border-color:color-mix(in srgb,var(--green,#5ee098) 34%,transparent);}
.tm-voice-avatar-ring{position:relative;flex:0 0 40px;width:40px;height:40px;border:2px solid transparent;border-radius:50%;box-sizing:border-box;overflow:hidden;background:var(--surface-2);display:grid;place-items:center;}
.tm-voice-person[data-speaking=true] .tm-voice-avatar-ring{border-color:var(--green,#5ee098);}
.tm-voice-avatar{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:50%;}
.tm-voice-avatar[hidden]{display:none!important;}
.tm-voice-avatar-fallback{font-weight:700;font-size:16px;color:var(--text-1);text-transform:uppercase;}
.tm-voice-avatar-fallback[hidden]{display:none!important;}
.tm-voice-person-details{display:flex;flex:1;min-width:0;flex-direction:column;gap:2px;}
.tm-voice-person-name{font-size:13px;font-weight:700;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}
.tm-voice-person-state{font-size:11px;color:var(--text-muted);}
.tm-voice-person[data-speaking=true] .tm-voice-person-state{color:var(--green,#5ee098);}
.tm-voice-speaking{width:22px;height:22px;display:grid;place-items:center;color:var(--green,#5ee098);}
.tm-voice-speaking[hidden]{display:none!important;}
.tm-voice-speaking svg{width:19px;height:19px;}
.tm-voice-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;border-top:1px solid var(--border-1);padding-top:12px;}
#tm-voice-panel .tm-voice-action{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-width:0;min-height:68px;padding:8px 3px;border-radius:12px;}
.tm-voice-action-icon{height:23px;display:grid;place-items:center;}
.tm-voice-action-label{font-size:11px;text-align:center;overflow-wrap:break-word;}
#tm-voice-panel [data-call-action=hang]{color:#fff;background:var(--red,#c63e49);border-color:transparent;}
#tm-voice-panel [data-call-action=mic][data-off=true]{border-color:var(--red,#c63e49);color:var(--red,#ef6464);}
#tm-voice-panel [data-call-action=camera][data-on=true]{border-color:var(--green,#5ee098);}
#tm-voice-panel .tm-voice-return{display:flex;align-items:center;justify-content:center;gap:9px;border-radius:11px;min-height:42px;font-weight:600;}
#tm-voice-panel .tm-voice-audio-warning[hidden]{display:none!important;}
#tm-voice-panel .tm-voice-audio-warning{display:flex;border:1px solid var(--yellow,#e6b450);border-radius:10px;padding:6px;}
#tm-voice-panel .tm-voice-resume{flex:1;}
@media(max-width:640px){
 #tm-voice-panel{width:calc(100vw - 16px);max-height:calc(100dvh - 164px);display:flex;}
 #tm-voice-panel .tm-voice-roster{max-height:min(38dvh,300px);overflow-y:auto;}
 #tm-voice-panel .tm-voice-actions{flex:0 0 auto;}
 #tm-voice-panel .tm-voice-return{min-height:44px;}
}
@media(prefers-reduced-motion:reduce){.tm-voice-person,.tm-voice-avatar-ring{animation:none!important;transition:none!important}}
