/* Generated by tools/uniform-ui/generate.py; original source retained. */
/* 212: edge communication rail. Faces stay small; touch targets stay at least 44 physical px. */
.comm-root{--comm-scale:1;--comm-hit:max(3.2cqw,34px);--comm-font:max(1.04cqw,12px);--comm-tiny:max(.86cqw,10px);--comm-top:8.3cqw;--comm-right:1.6cqw;position:absolute;inset:0;pointer-events:none;container-type:inline-size;z-index:12;color:#fff3d9;font:500 var(--comm-font)/1.45 "PingFang SC","Microsoft YaHei",sans-serif}
.comm-root:not(.game){--comm-scale:var(--ui-scale,1);--comm-hit:max(3.2cqw,calc(34px / var(--comm-scale)));--comm-font:max(10px,calc(12px / var(--comm-scale)));--comm-tiny:max(.86cqw,calc(10px / var(--comm-scale)))}
.life-playing .comm-root.game{--comm-top:2.45cqw;--comm-right:13cqw}
.comm-root [hidden]{display:none!important}
.comm-root button,.comm-root input,.comm-root select,.comm-root a,.comm-root summary{font:inherit;touch-action:manipulation}
.comm-root button{min-height:0;cursor:pointer;transition:background .12s;transform:none;letter-spacing:normal}
.comm-root :is(button,input,select,a,summary):focus-visible{outline:2px solid #e7ba67;outline-offset:2px}
.comm-dock{position:absolute;top:var(--comm-top);right:var(--comm-right);display:flex;gap:.25cqw;align-items:center;pointer-events:auto;z-index:2}
.comm-round{position:relative;display:grid;place-items:center;width:var(--comm-hit);height:var(--comm-hit);padding:0!important;border:0!important;border-radius:0;background:none!important;box-shadow:none!important;color:#ffefd3}
.comm-face{position:relative;display:grid;place-items:center;width:76%;height:76%;border:1px solid #eee2bf8c;border-radius:7px 3px 7px 3px;background:#344b47e8;box-shadow:inset 0 1px #ffffff26,0 2px 0 #172e3440}
.comm-round:hover .comm-face{background:#50685c}
.comm-round svg,.comm-round img{width:68%;height:68%;display:block;object-fit:contain;pointer-events:none}
.comm-round i{position:absolute;width:74%;height:2px;background:#e7a18a;transform:rotate(-45deg);box-shadow:0 0 0 1px #344b47}
.comm-round.on i{display:none}
.comm-round.on .comm-face{border-color:#e3c47e;background:#4f7060}
.comm-round.talking .comm-face{border-color:#daf1ba;background:#5f805d;box-shadow:inset 0 0 0 1px #d5e8a3}
.comm-round:not(.on)[data-listen] img{filter:grayscale(.65);opacity:.85}
.comm-round b{position:absolute;right:0;top:0;min-width:1.25em;height:1.25em;display:grid;place-items:center;border-radius:4px;background:#ac5746;color:#fff8de;font-size:var(--comm-tiny);font-weight:600;padding:0 .15em}
.comm-channel{position:absolute;right:0;top:100%;font-size:var(--comm-tiny);white-space:nowrap;color:#fff3d7;text-shadow:0 1px 3px #172f29,0 0 5px #172f29;pointer-events:none}
.comm-channel:before{content:'';display:inline-block;width:.45em;height:.45em;background:#d9c092;margin-right:.4em;vertical-align:.12em;border-radius:1px}
.comm-root[data-connected=true] .comm-channel:before{background:#bfd498}
.comm-hold{position:absolute;right:0;top:calc(100% + 1.8em);display:flex;gap:.4em;align-items:center;justify-content:center;white-space:nowrap;min-height:calc(32px / var(--comm-scale))!important;padding:.35em .8em!important;border:1px solid #c7bb96;border-radius:6px 2px;background:#304b43ed!important;color:#f7e9bf;box-shadow:0 2px #152e3040!important;font-size:var(--comm-tiny)!important;user-select:none;touch-action:none!important}
.comm-hold kbd{font:600 inherit;padding:0 .25em;background:#e3d4ad26;border-radius:2px}
.comm-hold.talking{background:#5b7558!important;border-color:#dae7af}
.comm-speakers{position:absolute;right:calc(100% + .6cqw);top:.5em;display:flex;flex-direction:column;align-items:flex-end;gap:.25em;max-width:15cqw;pointer-events:none}
.comm-speakers span{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:.15em .55em;border-left:2px solid #b9d398;border-radius:2px;background:#2b473ec9;color:#f3f2d7;font-size:var(--comm-tiny)}
.comm-scrim{position:absolute;inset:0;border:0!important;border-radius:0;background:transparent!important;box-shadow:none!important;pointer-events:auto;z-index:1}
.comm-window{position:absolute;right:1.6cqw;top:7.3cqw;width:33cqw;max-height:34cqw;display:flex;flex-direction:column;background:#fcf5e4;color:#3e5349;border:1px solid #afa98c;border-radius:10px 3px 10px 3px;box-shadow:inset 0 1px #fffdf3,0 3px #4a61597a,0 10px 25px #1c353d38;pointer-events:auto;overflow:hidden;z-index:3}
.life-playing .comm-root.game .comm-window{top:7.3cqw}
.comm-window header{display:flex;align-items:center;gap:1em;padding:.5em .85em;background:#ece8d4;border-bottom:1px solid #d3cfb7;flex-shrink:0}
.comm-window header>div{flex:1;min-width:0}
.comm-window header small{display:block;font-size:var(--comm-tiny);color:#7c826c;letter-spacing:.12em}
.comm-window header strong{font-size:1.1em;font-weight:650}
.comm-window [data-close]{display:grid;place-items:center;width:var(--comm-hit);height:var(--comm-hit);padding:0;border:0;background:none;box-shadow:none;font-size:1.8em;color:#7b8069}
.comm-tabs{display:flex;align-items:center;gap:1em;margin:0 .9em;padding:0;border-bottom:1px solid #d8d7be;flex-shrink:0}
.comm-tabs button{min-height:calc(34px / var(--comm-scale));padding:.4em .15em;border:0;border-bottom:2px solid transparent;border-radius:0;box-shadow:none;background:none;color:#82846e}
.comm-tabs button[aria-pressed=true]{color:#3b5a4b;border-bottom-color:#c7a660;font-weight:650}
.comm-chat{display:flex;flex-direction:column;min-height:0;padding:0 .9em .85em;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}
.comm-rule{margin:.6em 0;font-size:var(--comm-tiny);color:#7b816d;line-height:1.5}
.comm-history{height:12.8cqw;min-height:4em;flex-shrink:1;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;padding-right:.3em}
.comm-history:empty:before{content:'和附近的伙伴打个招呼吧';display:block;margin:3em 0;text-align:center;color:#92957d;font-size:.92em}
.comm-history p{margin:.8em 0;overflow-wrap:anywhere}
.comm-history b{display:block;font-size:var(--comm-tiny);font-weight:500;color:#899078}
.comm-history span{display:block;margin-top:.18em;line-height:1.6}
.comm-quick{flex-shrink:0;border-top:1px solid #e0dcc7;margin-top:.5em}
.comm-quick summary{cursor:pointer;color:#8a7954;font-size:var(--comm-tiny);min-height:calc(32px / var(--comm-scale));display:flex;align-items:center;gap:.5em;list-style:none}
.comm-quick summary:before{content:'+';font-size:1.3em;font-weight:600}
.comm-quick[open] summary:before{content:'−'}
.comm-quick>div{display:grid;grid-template-columns:1fr 1fr;gap:.4em;margin-bottom:.6em}
.comm-quick button{background:#e9ebd9;border:1px solid #c9ceb6;border-radius:5px 2px;box-shadow:none;padding:.5em;min-height:calc(34px / var(--comm-scale));font-size:.9em;color:#63745c}
.comm-chat form{display:flex;gap:.5em;flex-shrink:0;margin:0}
.comm-chat input{display:block;width:100%;min-width:0;height:auto;min-height:calc(36px / var(--comm-scale));margin:0;padding:.55em .7em;border:1px solid #c7c9ae;border-radius:4px;background:#fffdf4;color:#3d554a;box-shadow:inset 0 1px #eeeadb}
.comm-chat form button{padding:.45em .9em;white-space:nowrap;border:1px solid #bea36d;border-radius:5px 2px;box-shadow:inset 0 1px #f9e9b6;background:#e8cd88;color:#625438}
.comm-settings{min-height:0;padding:.3em 1em .9em;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}
.comm-settings h3{font-size:var(--comm-tiny);color:#9b875c;letter-spacing:.09em;border-bottom:1px solid #ddd9c2;padding-bottom:.35em;margin:1em 0 .5em;font-weight:600}
.comm-settings label,.comm-keyrow,.comm-peer-list>div{display:flex;justify-content:space-between;align-items:center;gap:1em;margin:.65em 0;font:inherit}
.comm-settings select{display:block;width:auto;max-width:55%;height:auto;margin:0;background:#fffaf0;border:1px solid #c2c7ad;border-radius:4px;padding:.45em;min-height:calc(34px / var(--comm-scale));color:#546751}
.comm-settings input[type=range]{width:48%;height:calc(28px / var(--comm-scale));margin:0;padding:0;accent-color:#6f8965;box-shadow:none}
.comm-settings button{min-height:calc(32px / var(--comm-scale));border:1px solid #c2c7ad;border-radius:4px;background:#ecebd8;padding:.35em .7em;color:#607053;box-shadow:none}
.comm-keyrow button{min-width:4.8em}
.comm-settings p{font-size:var(--comm-tiny);line-height:1.6;color:#888a73;margin:.6em 0}
.comm-settings a{font-size:var(--comm-tiny);color:#8b754a;display:inline-block;padding:.5em 0}
.comm-meter{display:flex;align-items:center;justify-content:space-between;gap:.8em;font-size:var(--comm-tiny);color:#828b71}
.comm-meter meter{width:48%;height:1em;accent-color:#719262}
.comm-peer-list:empty:before{content:'暂无可单独屏蔽的伙伴';font-size:var(--comm-tiny);color:#93957d}
.comm-peer-list span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.comm-peer-list button{flex-shrink:0;font-size:var(--comm-tiny)}
.comm-error{margin:0;padding:.55em .9em;background:#f0dfc6;color:#9a5f4a;flex-shrink:0;font-size:var(--comm-tiny);max-height:4em;overflow:auto}
.comm-toast{position:absolute;right:var(--comm-right);top:calc(var(--comm-top) + var(--comm-hit) + 2.2em);max-width:23cqw;padding:.55em .8em;border:1px solid #cfc5a754;border-left:3px solid #c7ad72;border-radius:5px 2px;background:#314a42ed;color:#fff2d7;box-shadow:0 2px #172e3240;font-size:var(--comm-tiny);overflow-wrap:anywhere;pointer-events:auto;z-index:2}
.comm-toast[data-kind=message]{cursor:pointer}
.comm-root[data-holding=true] .comm-toast{top:calc(var(--comm-top) + var(--comm-hit) + 6em)}
.comm-root .comm-toast-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.life-playing.communication-open :is(.life-actions,#life-utility,#joystick,#hud-toolbar,.locator,#hud-task-stack){pointer-events:none}
.life-playing:has(.comm-root) #notice{max-width:34cqw}
@media(max-width:0px){
 .comm-root,.comm-root:not(.game){--comm-hit:max(5cqw,calc(44px / var(--comm-scale)));--comm-font:calc(13px / var(--comm-scale));--comm-tiny:calc(10px / var(--comm-scale))}
 .life-playing .comm-root.game{--comm-top:1.65cqw;--comm-right:17cqw}
 .comm-face{width:70%;height:70%}
 .comm-speakers{top:calc(100% + 2em);right:0;max-width:22cqw}
 .comm-root[data-holding=true] .comm-speakers{top:calc(100% + 7.2em)}
 .comm-hold{min-height:calc(44px / var(--comm-scale))!important;font-size:var(--comm-font)!important}
 .comm-window{top:8.8cqw;max-height:calc(56.25cqw - 10cqw);width:max(43cqw,calc(300px / var(--comm-scale)));max-width:80cqw}
 .life-playing .comm-root.game .comm-window{top:8.8cqw;max-height:calc(56.25cqw - 10cqw)}
 .comm-window header{padding:.25em .75em}
 .comm-window header small{display:none}
 .comm-window header strong{font-size:1em}
 .comm-tabs{gap:1.2em}
 .comm-root :is(.comm-tabs button,.comm-quick summary,.comm-quick button,.comm-settings button,.comm-settings select,.comm-settings input[type=range],.comm-settings a,.comm-chat input,.comm-chat form button){min-height:calc(44px / var(--comm-scale))}
 .comm-history{height:11cqw;min-height:2.6em}
 .comm-rule{margin:.5em 0}
 .comm-chat{padding-bottom:.6em}
 .comm-toast{max-width:32cqw}
 .comm-root:has(.comm-speakers span) .comm-toast{top:calc(var(--comm-top) + var(--comm-hit) + 5.8em)}
 .comm-root[data-holding=true]:has(.comm-speakers span) .comm-toast{top:calc(var(--comm-top) + var(--comm-hit) + 10.2em)}
 .comm-settings h3{margin-top:.7em}
}
@media(prefers-reduced-motion:reduce){.comm-root button{transition:none}}

/* Keep utility actions distinct from the large skill cluster without changing hit targets. */
.life-playing.communication-ui-212 #hud-toolbar>button{position:relative;isolation:isolate;border-color:transparent;background:none;box-shadow:none;color:#f9efd7;gap:0}
.life-playing.communication-ui-212 #hud-toolbar>button:before{content:'';position:absolute;inset:6%;z-index:-1;border:1px solid #e8dfbd8c;background:#344b47e8;border-radius:7px 3px;box-shadow:inset 0 1px #ffffff26,0 2px #172e3440}
.life-playing.communication-ui-212 #hud-toolbar>button svg{width:2.15cqw;height:2.15cqw}
@media(max-width:0px){.life-playing.communication-ui-212 #hud-toolbar>button svg{width:2.7cqw;height:2.7cqw}}
/* Permission assistance appears only after a failed user-initiated request. */
.comm-permission{margin:.6em 0;padding:.8em;background:#e7e9d5;border-left:3px solid #9a8053;color:#435448;line-height:1.6}
.comm-permission[hidden]{display:none}
.comm-permission ol{padding-left:1.5em;margin:.5em 0}
.comm-permission p{margin:.5em 0}
.comm-permission>div{display:flex;flex-wrap:wrap;gap:.5em}
.comm-round[aria-busy="true"] .comm-face{opacity:.65}
