/* TangPlay shared voice chat — buttons + seat indicators. Put .tv-micon / .tv-speaking on your seat/avatar element. */
.tv-bar{display:flex;gap:6px;align-items:center}
.tv-btn{height:30px;border-radius:999px;padding:0 10px;font:800 12.5px -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#fff;background:rgba(0,0,0,.38);border:1.5px solid rgba(255,255,255,.28);display:inline-flex;align-items:center;gap:3px;white-space:nowrap;cursor:pointer}
.tv-btn.tv-spk{width:30px;padding:0;justify-content:center}
.tv-btn.tv-mic.on{background:linear-gradient(180deg,#5cf2a6,#1fb978);color:#05351f;border-color:#fff;box-shadow:0 0 12px rgba(92,242,166,.6)}
.tv-btn.tv-spk:not(.on){opacity:.7}
.tv-micon{position:relative}
.tv-micon::before{content:"🎙️";position:absolute;right:-4px;bottom:-2px;font-size:12px;width:18px;height:18px;line-height:18px;text-align:center;border-radius:50%;background:#1fb978;box-shadow:0 0 0 2px #fff;z-index:6}
.tv-speaking::after{content:"";position:absolute;inset:-5px;border-radius:50%;border:3px solid #5cf2a6;animation:tvwave 1s ease-out infinite;pointer-events:none;z-index:5}
@keyframes tvwave{0%{transform:scale(.95);opacity:1}100%{transform:scale(1.35);opacity:0}}
/* "can't use the mic here" sheet (in-app browsers): message + one-tap copy of the room link */
.tv-note{position:fixed;left:50%;top:38%;transform:translate(-50%,-50%);width:min(340px,90vw);background:#fff;color:#1b1033;border-radius:18px;padding:16px 16px 12px;box-shadow:0 14px 40px rgba(0,0,0,.45);z-index:90;font:600 14.5px/1.45 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;text-align:center;animation:tvnote .22s ease-out}
.tv-note p{margin:0 0 8px}.tv-note .tv-note-s{font-size:12.5px;color:#5b4f75;font-weight:600}
.tv-note-b{display:flex;gap:8px;justify-content:center;margin-top:10px}
.tv-note-b button{border:0;border-radius:999px;height:38px;padding:0 16px;font:800 14px inherit;font-family:inherit;cursor:pointer}
.tv-note-copy{background:linear-gradient(180deg,#ffd76a,#ffb020);color:#3a2300}.tv-note-x{background:#eee9f6;color:#3b2f57}
@keyframes tvnote{from{opacity:0;transform:translate(-50%,-44%)}to{opacity:1;transform:translate(-50%,-50%)}}
/* optional video (TangVoice.create({video:true})): camera button, live tiles placed into the game's slot (e.g. the seat avatar), enlarge overlay.
   The slot needs position:relative. Tile shape: round by default; set --tv-vid-radius (e.g. 12px) on the slot for a rounded square, --tv-vid-inset to resize. */
.tv-btn.tv-cam.on{background:linear-gradient(180deg,#7cc8ff,#2f8cff);color:#04254d;border-color:#fff;box-shadow:0 0 12px rgba(80,170,255,.6)}
.tv-btn.tv-cam:not(.on){opacity:.85}
.tv-vid{position:absolute;inset:var(--tv-vid-inset,4px);border-radius:var(--tv-vid-radius,50%);overflow:hidden;z-index:4;background:#111;opacity:0;pointer-events:none;transition:opacity .25s;cursor:zoom-in;-webkit-tap-highlight-color:transparent}
.tv-vid.tv-live{opacity:1;pointer-events:auto}
.tv-vid.tv-live.tv-stall{opacity:0;pointer-events:none}
.tv-vid video{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
.tv-self video{transform:scaleX(-1)}
.tv-big{position:fixed;inset:0;z-index:95;background:rgba(8,4,20,.9);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;cursor:zoom-out;animation:tvbig .2s ease-out;-webkit-tap-highlight-color:transparent}
.tv-big video{max-width:94vw;max-height:76vh;width:94vw;aspect-ratio:4/3;object-fit:contain;border-radius:18px;background:#000;box-shadow:0 14px 40px rgba(0,0,0,.5);pointer-events:none}
.tv-big p{margin:0;color:#fff;opacity:.75;font:700 13px -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}
@keyframes tvbig{from{opacity:0}to{opacity:1}}
/* reveal highlight clip (clip.js): "save this moment" sheet */
.tv-clip{position:fixed;inset:0;z-index:96;background:rgba(8,4,20,.82);display:flex;align-items:center;justify-content:center;animation:tvbig .2s ease-out}
.tv-clip-card{width:min(340px,92vw);background:#fff;border-radius:20px;padding:14px 14px 10px;text-align:center;box-shadow:0 14px 40px rgba(0,0,0,.5);font:600 14px/1.4 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#1b1033}
.tv-clip-t{margin:0 0 8px;font-weight:900;font-size:16px}
.tv-clip-v{display:block;width:100%;max-height:58vh;aspect-ratio:9/16;object-fit:contain;background:#000;border-radius:14px}
.tv-clip-b{display:flex;gap:8px;justify-content:center;margin-top:10px}
.tv-clip-b button{border:0;border-radius:999px;height:42px;padding:0 18px;font:900 15px inherit;font-family:inherit;cursor:pointer}
.tv-clip-save{background:linear-gradient(180deg,#ff8ab4,#ff4f8b);color:#fff;box-shadow:0 4px 14px rgba(255,79,139,.45)}.tv-clip-x{background:#eee9f6;color:#3b2f57}
.tv-clip-h{margin:8px 0 0;font-size:11.5px;color:#6b5f85;font-weight:600}
